commit 7e60195cb73ec55ede606fb60a534d24304c8b88 Author: Arnike Date: Fri Sep 8 19:05:37 2023 +0300 Initial Commit diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..65d3a10 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,13 @@ +{ + "recommendations": [ + "ms-python.flake8", + "ms-python.vscode-pylance", + "ms-python.python", + "donjayamanne.python-environment-manager", + "kevinrose.vsc-python-indent", + "ms-azuretools.vscode-docker", + "vue.volar", + "vue.vscode-typescript-vue-plugin", + "ms-azuretools.vscode-docker" + ] +} \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..137069b --- /dev/null +++ b/LICENSE @@ -0,0 +1,73 @@ +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + + (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. + + You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + +To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/README.md b/README.md new file mode 100644 index 0000000..e892e82 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# vtb_dashboard_api + diff --git a/api/.dockerignore b/api/.dockerignore new file mode 100644 index 0000000..32f41a5 --- /dev/null +++ b/api/.dockerignore @@ -0,0 +1,165 @@ +# ---> Python +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintainted in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ + +# Database +*.db +dashboard_database.db + +# Ignore files +.dockerignore +.gitignore + +# Docker +Dockerfile +docker-compose.yml \ No newline at end of file diff --git a/api/.gitignore b/api/.gitignore new file mode 100644 index 0000000..4d07faa --- /dev/null +++ b/api/.gitignore @@ -0,0 +1,157 @@ +# ---> Python +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintainted in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ + +# Database +*.db +dashboard_database.db \ No newline at end of file diff --git a/api/Dockerfile b/api/Dockerfile new file mode 100644 index 0000000..5bb2c8b --- /dev/null +++ b/api/Dockerfile @@ -0,0 +1,31 @@ +# syntax = docker/dockerfile:1 + +FROM python:3.11.5-slim as builder + +RUN apt-get update && \ + apt-get install -y libpq-dev gcc + +RUN python -m venv /opt/venv + +ENV PATH="/opt/venv/bin:$PATH" + +COPY requirements.txt . +RUN pip3 install -r requirements.txt + +FROM python:3.11.5-slim + +# Set working dir +COPY --from=builder /opt/venv /opt/venv + +ENV PYTHONDONTWRITEBYTECODE 1 +ENV PYTHONUNBUFFERED 1 + +ENV PATH="/opt/venv/bin:$PATH" + +COPY . /usr/src/virt.dashboard + +WORKDIR /usr/src/virt.dashboard/app + +EXPOSE 5000 + +CMD [ "waitress-serve", "--port=5000", "wsgi:app" ] \ No newline at end of file diff --git a/api/app/__init__.py b/api/app/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/app/custom_swagger.json b/api/app/custom_swagger.json new file mode 100644 index 0000000..678c0b6 --- /dev/null +++ b/api/app/custom_swagger.json @@ -0,0 +1,9 @@ +{ + "swagger": "2.0", + "info": { + "title": "Virt.Dashboard API", + "description": "Backend API for Virt.Dashboard", + "termsOfService": "", + "version": "1.1.2" + } +} \ No newline at end of file diff --git a/api/app/favicon.ico b/api/app/favicon.ico new file mode 100644 index 0000000..dc7cd15 Binary files /dev/null and b/api/app/favicon.ico differ diff --git a/api/app/helpers/__init__.py b/api/app/helpers/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/app/helpers/authentication.py b/api/app/helpers/authentication.py new file mode 100644 index 0000000..8be926c --- /dev/null +++ b/api/app/helpers/authentication.py @@ -0,0 +1,23 @@ +from flask_httpauth import HTTPBasicAuth + +auth = HTTPBasicAuth() + + +@auth.verify_password +def verify_password(username_or_token, password): + + if username_or_token == "user" and password == "passwd": + return True + + return False + + +def post_login_required(func): + def post_decorator(*args, **kwargs): + print("post_decorator ", func, *args, **kwargs) + return auth.login_required(func)(*args, **kwargs) + + if func.__name__ in ("post", "patch", "delete"): + return post_decorator + + return func diff --git a/api/app/helpers/database.py b/api/app/helpers/database.py new file mode 100644 index 0000000..f0b13d6 --- /dev/null +++ b/api/app/helpers/database.py @@ -0,0 +1,3 @@ +from flask_sqlalchemy import SQLAlchemy + +db = SQLAlchemy() diff --git a/api/app/helpers/math.py b/api/app/helpers/math.py new file mode 100644 index 0000000..263a52c --- /dev/null +++ b/api/app/helpers/math.py @@ -0,0 +1,2 @@ +def safe_division(n: int, d: int, r: int = 2): + return round((n / d), r) if d else 0 diff --git a/api/app/main.py b/api/app/main.py new file mode 100644 index 0000000..94160cd --- /dev/null +++ b/api/app/main.py @@ -0,0 +1,35 @@ +#!/bin/python +import logging + +from flask import Flask +from flask_cors import CORS + +from helpers.database import db +from swagger import create_api +from settings import config + +logging.basicConfig( + level=logging.DEBUG, + format="%(asctime)s %(name)-12s %(levelname)-8s %(message)s", + datefmt="%m-%d %H:%M", + handlers=[logging.FileHandler(config.DASHBOARD_LOG), logging.StreamHandler()], # noqa +) + +app = Flask(__name__) +cors = CORS(app, resources={r"/api/*": {"origins": "*"}}) # noqa + +app.config.update( + SQLALCHEMY_DATABASE_URI=config.SQLALCHEMY_DATABASE_URI, + DEBUG=config.DEBUG +) +db.init_app(app) + +with app.app_context(): + db.create_all() + create_api( + app=app, + port="5000", + host="localhost", + api_prefix=config.API_PREFIX_STRING, + custom_swagger=config.CUSTOM_SWAGGER + ) diff --git a/api/app/models/common/__init__.py b/api/app/models/common/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/app/models/common/base.py b/api/app/models/common/base.py new file mode 100644 index 0000000..9047e06 --- /dev/null +++ b/api/app/models/common/base.py @@ -0,0 +1,9 @@ +from helpers.database import db + +from safrs import SAFRSBase +from safrs.api_methods import search + + +class BaseModel(SAFRSBase, db.Model): + __abstract__ = True + SAFRSBase.search = search diff --git a/api/app/models/common/core/__init__.py b/api/app/models/common/core/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/app/models/common/core/contour.py b/api/app/models/common/core/contour.py new file mode 100644 index 0000000..78a2bef --- /dev/null +++ b/api/app/models/common/core/contour.py @@ -0,0 +1,21 @@ +from sqlalchemy import Column, String, Integer +from sqlalchemy.orm import relationship + +from models.common.base import BaseModel + + +class contour(BaseModel): + """ + description: Technological infrastructure contours. + """ + __tablename__ = "tcc_contours" + _s_collection_name = "contours" + _s_class_name = "contours" + exclude_rels = ["vcenter", "pcentral"] + + id = Column(Integer, primary_key=True, autoincrement=True, index=True) + name = Column(String(64), unique=True, index=True, nullable=False) + description = Column(String(255)) + + vcenter = relationship("vcenter", back_populates="contour") + pcentral = relationship("pcentral", back_populates="contour") diff --git a/api/app/models/common/core/environment.py b/api/app/models/common/core/environment.py new file mode 100644 index 0000000..1d42130 --- /dev/null +++ b/api/app/models/common/core/environment.py @@ -0,0 +1,27 @@ +from sqlalchemy import Column, String, Integer +from sqlalchemy.orm import relationship + +from models.common.base import BaseModel + + +class environment(BaseModel): + """ + description: Technological infrastructure environments. + """ + __tablename__ = "tcc_environments" + _s_collection_name = "environments" + _s_class_name = "environment" + + id = Column(Integer, primary_key=True, autoincrement=True, index=True) + name = Column(String(32), unique=True, index=True, nullable=False) + color = Column(String(7), index=False, nullable=True) + + cluster = relationship("cluster", back_populates="environment") + pelement = relationship("pelement", back_populates="environment") + + def to_dict(self): + result = BaseModel.to_dict(self) + + result['name'] = result['name'].upper() + + return result diff --git a/api/app/models/common/core/timestamps.py b/api/app/models/common/core/timestamps.py new file mode 100644 index 0000000..3e0a129 --- /dev/null +++ b/api/app/models/common/core/timestamps.py @@ -0,0 +1,21 @@ +from datetime import datetime +from sqlalchemy import Column, String, Integer, DateTime + +from models.common.base import BaseModel + + +class timestamp(BaseModel): + """ + description: Timestamps. + """ + __tablename__ = "tcc_timestamps" + _s_collection_name = "timestamps" + _s_class_name = "timestamps" + + id = Column(Integer, primary_key=True, autoincrement=True, index=True) + name = Column(String(64), unique=True, nullable=False) + timestamp = Column( + DateTime, + default=datetime.utcnow, + onupdate=datetime.utcnow + ) diff --git a/api/app/models/nutanix/__init__.py b/api/app/models/nutanix/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/app/models/nutanix/core/__init__.py b/api/app/models/nutanix/core/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/app/models/nutanix/core/pcentral.py b/api/app/models/nutanix/core/pcentral.py new file mode 100644 index 0000000..b33bbcf --- /dev/null +++ b/api/app/models/nutanix/core/pcentral.py @@ -0,0 +1,40 @@ +from sqlalchemy import ( + Column, + String, + Integer, + ForeignKey +) +from sqlalchemy.orm import relationship + +from models.common.base import BaseModel + + +class pcentral(BaseModel): + """ + description: Nutanix prism central model + """ + __tablename__ = "tnc_pcentrals" + _s_collection_name = "pcentrals" + _s_class_name = "pcentral" + + id = Column(Integer, primary_key=True, autoincrement=True, index=True) + name = Column(String(32), unique=True, index=True, nullable=False) + hostname = Column(String(64), unique=True, index=True, nullable=True) + ncc_version = Column(String(16), index=True, nullable=False) + aos_version = Column(String(16), index=True, nullable=False) + + contour_id = Column(Integer, ForeignKey("tcc_contours.id")) + contour = relationship("contour", back_populates="pcentral") + + npcreport = relationship( + "npcreport", + backref="pcentral", + cascade="save-update, delete", + lazy="dynamic" + ) + pelement = relationship( + "pelement", + backref="pcentral", + cascade="save-update, delete", + lazy="dynamic" + ) diff --git a/api/app/models/nutanix/core/pelement.py b/api/app/models/nutanix/core/pelement.py new file mode 100644 index 0000000..857caf3 --- /dev/null +++ b/api/app/models/nutanix/core/pelement.py @@ -0,0 +1,52 @@ +from sqlalchemy import ( + Column, + String, + Integer, + ForeignKey +) +from sqlalchemy.orm import relationship + +from models.common.base import BaseModel + + +class pelement(BaseModel): + """ + description: Nutanix prism element model + """ + __tablename__ = "tnc_pelement" + _s_collection_name = "pelements" + _s_class_name = "pelement" + + id = Column(Integer, primary_key=True, autoincrement=True, index=True) + ip = Column(String(15), unique=True, nullable=False) + name = Column(String(32), unique=True, nullable=False) + hostname = Column(String(64), unique=True, nullable=True) + description = Column(String(64), unique=False, nullable=False) + ncc_version = Column(String(16), index=True, nullable=False) + aos_version = Column(String(16), index=True, nullable=False) + cpu_decomiss = Column(Integer, nullable=True) + + pcentral_id = Column(Integer, ForeignKey("tnc_pcentrals.id")) + environment_id = Column(Integer, ForeignKey("tcc_environments.id")) + + environment = relationship("environment", back_populates="pelement") + pelement = relationship( + "npereport", + backref="pelement", + cascade="save-update, delete", + lazy="dynamic" + ) + maintenance = relationship( + "nmreport", + backref="pelement", + cascade="save-update, delete", + lazy="dynamic" + ) + + def to_dict(self): + result = BaseModel.to_dict(self) + + if (result['hostname'] is None): + result['hostname'] = result['hostname'] + + return result diff --git a/api/app/models/nutanix/reports/__init__.py b/api/app/models/nutanix/reports/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/app/models/nutanix/reports/mmhosts/__init__.py b/api/app/models/nutanix/reports/mmhosts/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/app/models/nutanix/reports/mmhosts/report.py b/api/app/models/nutanix/reports/mmhosts/report.py new file mode 100644 index 0000000..1f0a02c --- /dev/null +++ b/api/app/models/nutanix/reports/mmhosts/report.py @@ -0,0 +1,37 @@ +from datetime import datetime + +from sqlalchemy import ( + Column, + String, + Integer, + DateTime, + ForeignKey +) + +from models.common.base import BaseModel + + +class nmreport(BaseModel): + """ + description: Nutanix hosts in maintenance mode report + """ + __tablename__ = "tnrm_report" + _s_collection_name = "nmreport" + _s_class_name = "nmreport" + + id = Column(Integer, primary_key=True, autoincrement=True, index=True) + ip = Column(String(15), unique=True, nullable=False) + ipmi = Column(String(15), unique=True, nullable=False) + hypervisor_name = Column(String(64), unique=True, nullable=False) + hypervisor_type = Column(String(32), index=True) + hypervisor_state = Column(String(64), index=True) + serial = Column(String(32), unique=True, nullable=False) + reason = Column(String(255), nullable=True) + date = Column(DateTime, default=datetime.utcnow) + + pelement_id = Column( + Integer, + ForeignKey("tnc_pelement.id"), + nullable=False, + index=True + ) diff --git a/api/app/models/nutanix/reports/prismCentral/__init__.py b/api/app/models/nutanix/reports/prismCentral/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/app/models/nutanix/reports/prismCentral/report.py b/api/app/models/nutanix/reports/prismCentral/report.py new file mode 100644 index 0000000..700e764 --- /dev/null +++ b/api/app/models/nutanix/reports/prismCentral/report.py @@ -0,0 +1,34 @@ +from sqlalchemy import ( + Column, + Integer, + ForeignKey +) + +from models.common.base import BaseModel + + +class npcreport(BaseModel): + """ + description: Nutanix prism central report model + """ + __tablename__ = "tnrpc_report" + _s_collection_name = "npcreport" + _s_class_name = "prismCentral" + + id = Column(Integer, primary_key=True, autoincrement=True, index=True) + vms_total = Column(Integer, nullable=False) + cert_status = Column(Integer, nullable=False) + aos_status = Column(Integer, nullable=False) + projects_total = Column(Integer, nullable=False) + + alerts_crit_ack = Column(Integer, nullable=False) + alerts_crit_nack = Column(Integer, nullable=False) + alerts_warn_ack = Column(Integer, nullable=False) + alerts_warn_nack = Column(Integer, nullable=False) + + pcentral_id = Column( + Integer, + ForeignKey("tnc_pcentrals.id"), + nullable=False, + index=True + ) diff --git a/api/app/models/nutanix/reports/prismElement/__init__.py b/api/app/models/nutanix/reports/prismElement/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/app/models/nutanix/reports/prismElement/report.py b/api/app/models/nutanix/reports/prismElement/report.py new file mode 100644 index 0000000..681b071 --- /dev/null +++ b/api/app/models/nutanix/reports/prismElement/report.py @@ -0,0 +1,49 @@ +from sqlalchemy import ( + Column, + String, + Integer, + ForeignKey +) +from sqlalchemy.orm import relationship + +from models.common.base import BaseModel + + +class npereport(BaseModel): + """ + description: Nutanix prism element report model + """ + __tablename__ = "tnrpe_report" + _s_collection_name = "npereport" + _s_class_name = "prismElement" + + id = Column(Integer, primary_key=True, autoincrement=True, index=True) + vms_total = Column(Integer, nullable=False) + cert_status = Column(Integer, nullable=False) + aos_status = Column(Integer, nullable=False) + storage_dedup = Column(Integer, nullable=False) + hosts_total = Column(Integer, nullable=False) + hosts_in_maintenance = Column(Integer, nullable=False) + storage_usage = Column(Integer, nullable=False) + cpu_usage = Column(Integer, nullable=False) + mem_usage = Column(Integer, nullable=False) + hypervisor = Column(String(32), nullable=True) + hypervisor_version = Column(String(32), nullable=True) + alerts_crit_ack = Column(Integer, nullable=False) + alerts_crit_nack = Column(Integer, nullable=False) + alerts_warn_ack = Column(Integer, nullable=False) + alerts_warn_nack = Column(Integer, nullable=False) + redundancy_factor = Column(Integer, nullable=False) + + pelement_id = Column( + Integer, + ForeignKey("tnc_pelement.id"), + nullable=False, + index=True + ) + decomission = relationship( + "nureport", + backref="npereport", + cascade="save-update, delete", + lazy="dynamic" + ) diff --git a/api/app/models/nutanix/reports/utilization/__init__.py b/api/app/models/nutanix/reports/utilization/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/app/models/nutanix/reports/utilization/report.py b/api/app/models/nutanix/reports/utilization/report.py new file mode 100644 index 0000000..50d1d81 --- /dev/null +++ b/api/app/models/nutanix/reports/utilization/report.py @@ -0,0 +1,31 @@ +from sqlalchemy import ( + Column, + Integer, + Float, + ForeignKey +) + +from models.common.base import BaseModel + + +class nureport(BaseModel): + """ + description: Nutanix utilization report + """ + __tablename__ = "tnru_report" + _s_collection_name = "nureport" + _s_class_name = "utilization" + + id = Column(Integer, primary_key=True, autoincrement=True, index=True) + cpu_avg = Column(Float, nullable=False) + cpu_peak = Column(Float, nullable=False) + mem_avg = Column(Float, nullable=False) + mem_peak = Column(Float, nullable=False) + storage = Column(Float, nullable=False) + + pelement_id = Column( + Integer, + ForeignKey("tnrpe_report.id"), + nullable=False, + index=True + ) diff --git a/api/app/models/vmware/__init__.py b/api/app/models/vmware/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/app/models/vmware/core/__init__.py b/api/app/models/vmware/core/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/app/models/vmware/core/cluster.py b/api/app/models/vmware/core/cluster.py new file mode 100644 index 0000000..9515793 --- /dev/null +++ b/api/app/models/vmware/core/cluster.py @@ -0,0 +1,54 @@ +from sqlalchemy import ( + Column, + String, + Integer, + ForeignKey +) +from sqlalchemy.orm import relationship + +from models.common.base import BaseModel + + +class cluster(BaseModel): + """ + description: VMware cluster model + """ + __tablename__ = "tvc_clusters" + _s_collection_name = "clusters" + exclude_rels = ["capacity", "datastores", "sharedNetwork"] + + id = Column(Integer, primary_key=True, autoincrement=True, index=True) + name = Column(String(64), unique=True, index=True, nullable=False) + vcenter_id = Column(Integer, ForeignKey("tvc_vcenters.id"), nullable=False) + environment_id = Column( + Integer, + ForeignKey("tcc_environments.id"), + nullable=True + ) + + vcenter = relationship("vcenter", back_populates="cluster") + environment = relationship("environment", back_populates="cluster") + capacity = relationship( + "capacity", + backref="cluster", + cascade="save-update, delete", + lazy="dynamic" + ) + maintenance = relationship( + "maintenance", + backref="cluster", + cascade="save-update, delete", + lazy="dynamic" + ) + datastores = relationship( + "datastore", + backref="cluster", + cascade="save-update, delete", + lazy="dynamic" + ) + sharedNetwork = relationship( + "sharedNetwork", + backref="cluster", + cascade="save-update, delete", + lazy="dynamic" + ) diff --git a/api/app/models/vmware/core/vcenter.py b/api/app/models/vmware/core/vcenter.py new file mode 100644 index 0000000..5bc7f67 --- /dev/null +++ b/api/app/models/vmware/core/vcenter.py @@ -0,0 +1,36 @@ +from sqlalchemy import ( + Column, + String, + Integer, + ForeignKey +) +from sqlalchemy.orm import relationship + +from models.common.base import BaseModel + + +class vcenter(BaseModel): + """ + description: VMware vcenter model + """ + __tablename__ = "tvc_vcenters" + _s_collection_name = "vcenters" + + exclude_rels = ["rvm_vcenter"] + + id = Column(Integer, primary_key=True, autoincrement=True, index=True) + hostname = Column(String(64), unique=True, index=True, nullable=False) + contour_id = Column(Integer, ForeignKey("tcc_contours.id")) + + cluster = relationship( + "cluster", + back_populates="vcenter", + cascade="save-update, delete" + ) + contour = relationship("contour", back_populates="vcenter") + + vcenter = relationship( + "maintenance", + backref="vcenter", + cascade="save-update, delete" + ) diff --git a/api/app/models/vmware/reports/__init__.py b/api/app/models/vmware/reports/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/app/models/vmware/reports/capacity/__init__.py b/api/app/models/vmware/reports/capacity/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/app/models/vmware/reports/capacity/frame.py b/api/app/models/vmware/reports/capacity/frame.py new file mode 100644 index 0000000..e118eef --- /dev/null +++ b/api/app/models/vmware/reports/capacity/frame.py @@ -0,0 +1,25 @@ +from datetime import datetime + +from sqlalchemy import Column, Integer, DateTime +from sqlalchemy.orm import relationship + +from models.common.base import BaseModel + + +class frame(BaseModel): + __tablename__ = "tvrc_frames" + _s_collection_name = "frames" + http_methods = {"get", "post", "delete"} + + id = Column(Integer, primary_key=True, autoincrement=True, index=True) + timestamp = Column( + DateTime, + default=datetime.utcnow, + onupdate=datetime.utcnow + ) + + capacity = relationship( + "capacity", + backref="frame", + cascade="save-update, delete" + ) diff --git a/api/app/models/vmware/reports/capacity/report.py b/api/app/models/vmware/reports/capacity/report.py new file mode 100644 index 0000000..a838d37 --- /dev/null +++ b/api/app/models/vmware/reports/capacity/report.py @@ -0,0 +1,131 @@ +from safrs import jsonapi_rpc, SAFRSFormattedResponse +from sqlalchemy import ( + Column, + Integer, + Float, + ForeignKey +) + +from helpers.database import db +from helpers.math import safe_division +from models.common.base import BaseModel +from models.vmware.reports.capacity.frame import frame + + +class capacity(BaseModel): + """ + description: Capacity report model + """ + __tablename__ = "tvrc_report" + _s_collection_name = "capacity" + + http_methods = {"get", "post"} + + id = Column(Integer, primary_key=True, autoincrement=True, index=True) + hosts_on_duty = Column(Integer, nullable=False) + hosts_in_maintenance = Column(Integer, nullable=False) + hosts_reserved = Column(Integer, nullable=False) + hosts_staged_dcm = Column(Integer, nullable=False) + vms_total = Column(Integer, nullable=False) + sockets_total = Column(Integer, nullable=False) + pcpu_total = Column(Integer, nullable=False) + pcpu_host_max = Column(Integer, nullable=False) + vcpu_provisioned = Column(Integer, nullable=False) + pmemory_total = Column(Float, nullable=False) + vmemory_provisioned = Column(Float, nullable=False) + pstorage_total = Column(Float, nullable=False) + vstorage_used = Column(Float, nullable=False) + vstorage_provisioned = Column(Float, nullable=False) + rdm_total = Column(Float, nullable=False) + pcpu_ovp_target = Column(Float, nullable=False) + pmemory_ovp_target = Column(Float, nullable=False) + pstorage_ovp_target = Column(Float, nullable=False) + pcpu_retire_target = Column(Float, nullable=False) + + frame_id = Column( + Integer, ForeignKey("tvrc_frames.id"), + nullable=False, + index=True + ) + cluster_id = Column( + Integer, + ForeignKey("tvc_clusters.id"), + nullable=False, + index=True + ) + + @classmethod + @jsonapi_rpc(http_methods=["GET"]) + def get_last(self, *args, **kwargs): + """ + description : Get capacity report by last frameid + summary : Get last capacity report + tags: + - capacity + produces: + - application/xml + - application/json + """ + + frame_obj = db.session.query(frame).order_by(frame.id.desc()).first() + + reports = db.session.query(capacity).\ + filter(capacity.frame_id == frame_obj.id).all() + + data = [reports] + response = SAFRSFormattedResponse( + data, + self._s_meta(), + {}, + {}, + len(reports) + ) + return response + + def __init__(self, *args, **kwargs): + pcpu_ovp_current = kwargs.pop("pcpu_ovp_current", None) # noqa + pmemory_ovp_current = kwargs.pop("pmemory_ovp_current", None) # noqa + pstorage_ovp_current = kwargs.pop("pstorage_ovp_current", None) # noqa + + cpu_cap_used = kwargs.pop("cpu_cap_used", None) # noqa + mem_cap_used = kwargs.pop("mem_cap_used", None) # noqa + str_cap_used = kwargs.pop("str_cap_used", None) # noqa + + hosts_total = kwargs.pop("hosts_total", None) # noqa + + BaseModel.__init__(self, **kwargs) + + def to_dict(self): + result = BaseModel.to_dict(self) + + result['pcpu_ovp_current'] = safe_division( + result['vcpu_provisioned'], + result['pcpu_total'] + ) + result['pmemory_ovp_current'] = safe_division( + result['vmemory_provisioned'], + result['pmemory_total'] + ) + result['pstorage_ovp_current'] = safe_division( + result['vstorage_provisioned'], + result['pstorage_total'] + ) + + result['cpu_cap_used'] = round(safe_division( + result['pcpu_ovp_current'], + result['pcpu_ovp_target'] + )*100) + result['mem_cap_used'] = round(safe_division( + result['pmemory_ovp_current'], + result['pmemory_ovp_target'] + )*100) + result['str_cap_used'] = round(safe_division( + result['pstorage_ovp_current'], + result['pstorage_ovp_target'] + )*100) + + result['hosts_total'] = result['hosts_on_duty'] +\ + result['hosts_reserved'] +\ + result['hosts_in_maintenance'] + + return result diff --git a/api/app/models/vmware/reports/datastores/__init__.py b/api/app/models/vmware/reports/datastores/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/app/models/vmware/reports/datastores/report.py b/api/app/models/vmware/reports/datastores/report.py new file mode 100644 index 0000000..beb0734 --- /dev/null +++ b/api/app/models/vmware/reports/datastores/report.py @@ -0,0 +1,56 @@ +from sqlalchemy import ( + Column, + String, + Integer, + ForeignKey +) + +from helpers.math import safe_division +from models.common.base import BaseModel + + +class datastore(BaseModel): + """ + description: Datastores report model + """ + __tablename__ = "tvrd_report" + _s_collection_name = "datastores" + + id = Column(Integer, primary_key=True, autoincrement=True, index=True) + name = Column(String(64), index=True, nullable=False) + space_used = Column(Integer, nullable=False) + space_total = Column(Integer, nullable=False) + space_provisioned = Column(Integer, nullable=False) + + cluster_id = Column( + Integer, + ForeignKey("tvc_clusters.id"), + nullable=False, + index=True + ) + + def __init__(self, *args, **kwargs): + ovp_current = kwargs.pop("ovp_current", None) # noqa + space_free_percent = kwargs.pop("space_free_percent", None) # noqa + cap_used = kwargs.pop("cap_used", None) # noqa + + BaseModel.__init__(self, **kwargs) + + def to_dict(self): + result = BaseModel.to_dict(self) + + result["ovp_current"] = safe_division( + result["space_provisioned"], + result["space_total"] + ) + result["space_free_percent"] = round((1 - safe_division( + result["space_used"], + result["space_total"] + ))*100, 0) + + result['cap_used'] = round(safe_division( + result['ovp_current'], + 2 + )*100) + + return result diff --git a/api/app/models/vmware/reports/mmhosts/__init__.py b/api/app/models/vmware/reports/mmhosts/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/app/models/vmware/reports/mmhosts/report.py b/api/app/models/vmware/reports/mmhosts/report.py new file mode 100644 index 0000000..d5f5e4e --- /dev/null +++ b/api/app/models/vmware/reports/mmhosts/report.py @@ -0,0 +1,38 @@ +from sqlalchemy import ( + Column, + String, + Integer, + DateTime, + ForeignKey +) + +from models.common.base import BaseModel + + +class maintenance(BaseModel): + __tablename__ = "tvrm_report" + _s_collection_name = "maintenance" + + http_methods = {"get", "post", "delete"} + + id = Column(Integer, primary_key=True, autoincrement=True, index=True) + folder = Column(String(255), nullable=False) + hostname = Column(String(64), unique=True, nullable=False) + state = Column(String(64), index=True) + reason = Column(String(255)) + placedby = Column(String(64)) + placedbyFN = Column(String(64)) + date = Column(DateTime) + + vcenter_id = Column( + Integer, + ForeignKey("tvc_vcenters.id"), + nullable=False, + index=True + ) + cluster_id = Column( + Integer, + ForeignKey("tvc_clusters.id"), + nullable=True, + index=True + ) diff --git a/api/app/models/vmware/reports/sharedNetworks/__init__.py b/api/app/models/vmware/reports/sharedNetworks/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/app/models/vmware/reports/sharedNetworks/report.py b/api/app/models/vmware/reports/sharedNetworks/report.py new file mode 100644 index 0000000..569c39d --- /dev/null +++ b/api/app/models/vmware/reports/sharedNetworks/report.py @@ -0,0 +1,49 @@ +from sqlalchemy import ( + Column, + String, + Integer, + Float, + ForeignKey +) + +from models.common.base import BaseModel + + +class sharedNetwork(BaseModel): + """ + description: Shared Networks report model + """ + __tablename__ = "tvrsn_report" + _s_collection_name = "sharedNetworks" + + id = Column(Integer, primary_key=True, autoincrement=True, index=True) + vrf = Column(String(64), nullable=False) + vrfId = Column(Integer, nullable=False, index=True) + subnet = Column(String(15), nullable=False) + subnetId = Column(Integer, nullable=False, unique=True, index=True) + subnetMask = Column(Integer, nullable=False) + requestsID = Column(String(32)) + bussinessLine = Column(String(32)) + subnetManager = Column(String(32), index=True) + virtSubnetName = Column(String(32)) + virtSubnetUUID = Column(String(32)) + freeIPPercent = Column(Float, nullable=False) + + cluster_id = Column( + Integer, + ForeignKey("tvc_clusters.id"), + nullable=True, + index=True + ) + + def __init__(self, *args, **kwargs): + platform = kwargs.pop("platform", None) # noqa + + BaseModel.__init__(self, **kwargs) + + def to_dict(self): + result = BaseModel.to_dict(self) + + result["platform"] = "vmware" + + return result diff --git a/api/app/settings.py b/api/app/settings.py new file mode 100644 index 0000000..abc3b43 --- /dev/null +++ b/api/app/settings.py @@ -0,0 +1,46 @@ +import json +from functools import lru_cache + +from dotenv import load_dotenv +from pydantic_settings import BaseSettings, SettingsConfigDict + + +class Settings(BaseSettings): + ENVIRONMENT: str = "dev" + + SWAGGER_HOST: str = "localhost:5000" + + API_PREFIX_STRING: str = "/api" + API_DESCRIPTION: str = "vtb_dashboard_api" + + DASHBOARD_LOG: str = "vtb_dashboard_api.log" + + POSTGRES_SERVER: str = "localhost" + POSTGRES_PORT: int = 5432 + POSTGRES_USER: str + POSTGRES_PASSWORD: str + POSTGRES_DB: str = "virt.dashboard" + + DEBUG: bool = False + + @property + def SQLALCHEMY_DATABASE_URI(self): + return f"postgresql://{self.POSTGRES_USER}:{self.POSTGRES_PASSWORD}@{self.POSTGRES_SERVER}:{self.POSTGRES_PORT}/{self.POSTGRES_DB}" # noqa + + @property + def CUSTOM_SWAGGER(self): + with open("custom_swagger.json") as j_fp: + custom_swagger = json.load(j_fp) + custom_swagger["host"] = self.SWAGGER_HOST + return custom_swagger + + model_config = SettingsConfigDict(extra='allow', env_file=".env") + + +@lru_cache +def get_config(): + load_dotenv() + return Settings() + + +config = get_config() diff --git a/api/app/swagger.py b/api/app/swagger.py new file mode 100644 index 0000000..45ad631 --- /dev/null +++ b/api/app/swagger.py @@ -0,0 +1,59 @@ +import logging + +from flask import Flask +from safrs import SAFRSAPI + +from models.common.core.contour import contour as mcc_Contour +from models.common.core.environment import environment as mcc_Environment +from models.common.core.timestamps import timestamp as mcc_Timestamp + +from models.vmware.core.vcenter import vcenter as mvc_vCenter +from models.vmware.core.cluster import cluster as mvc_Cluster +from models.vmware.reports.capacity.frame import frame as mvrc_Frame +from models.vmware.reports.capacity.report import capacity as mvrc_Report +from models.vmware.reports.mmhosts.report import maintenance as mvrm_Report +from models.vmware.reports.datastores.report import datastore as mvrd_Report # noqa +from models.vmware.reports.sharedNetworks.report import sharedNetwork as mvrsn_Report # noqa + +from models.nutanix.core.pelement import pelement as mnc_Cluster +from models.nutanix.core.pcentral import pcentral as mnc_Central +from models.nutanix.reports.prismElement.report import npereport as mnrpe_Report # noqa +from models.nutanix.reports.prismCentral.report import npcreport as mnrpc_Report # noqa +from models.nutanix.reports.mmhosts.report import nmreport as mnrm_Report +from models.nutanix.reports.utilization.report import nureport as mnru_Report # noqa + +logger = logging.getLogger(__name__) + + +def create_api( + app: Flask, + host: str, + port: str, + api_prefix: str, + custom_swagger: dict = {} +) -> None: + api = SAFRSAPI( + app, + host=host, + schemes=["http", "https"], + port=port, + prefix=api_prefix, + custom_swagger=custom_swagger + ) + + for model in [mcc_Contour, mcc_Environment, mcc_Timestamp]: + api.expose_object(model, url_prefix="/common") + + for model in [mvc_vCenter, mvc_Cluster]: + api.expose_object(model, url_prefix="/vmware") + + for model in [mvrc_Report, mvrm_Report, mvrd_Report, mvrsn_Report]: + api.expose_object(model, url_prefix="/vmware/report") + + api.expose_object(mvrc_Frame, url_prefix="/vmware/report/capacity") + + for model in [mnc_Cluster, mnc_Central]: + api.expose_object(model, url_prefix="/nutanix") + + for model in [mnrpe_Report, mnrpc_Report, mnrm_Report, mnru_Report]: + api.expose_object(model, url_prefix="/nutanix/report") diff --git a/api/app/wsgi.py b/api/app/wsgi.py new file mode 100644 index 0000000..52a3850 --- /dev/null +++ b/api/app/wsgi.py @@ -0,0 +1,5 @@ +from main import app +from settings import config + +if __name__ == "__main__": + app.run(debug=config.DEBUG, host="0.0.0.0", port=5000) diff --git a/api/requirements.txt b/api/requirements.txt new file mode 100644 index 0000000..4d17034 --- /dev/null +++ b/api/requirements.txt @@ -0,0 +1,31 @@ +aniso8601>=9.0.1 +build>=0.10.0 +click>=8.1.3 +Flask>=2.2.5 +Flask-Cors>=3.0.10 +Flask-RESTful>=0.3.9 +flask-restful-swagger-2>=0.35 +Flask-SQLAlchemy>=3.0.3 +flask-swagger-ui>=4.11.1 +Flask-HTTPAuth>=4.8.0 +greenlet>=2.0.2 +importlib-metadata>=6.0.0 +itsdangerous>=2.1.2 +Jinja2>=3.1.2 +MarkupSafe>=2.1.2 +packaging>=23.0 +pyproject-hooks>=1.0.0 +pytz>=2022.7.1 +PyYAML>=6.0 +six>=1.16.0 +SQLAlchemy>=2.0.3 +tomli>=2.0.1 +typing-extensions>=4.4.0 +Werkzeug>=2.2.2 +zipp>=3.13.0 +safrs>=3.0.4 +psycopg2-binary>=2.9.7 +pydantic>=2.3.0 +pydantic-settings>=2.0.3 +python-dotenv>=1.0.0 +waitress>=2.1.2 \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..24b3ef0 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,34 @@ +version: "3.9" +services: + db: + image: postgres:15.3 + environment: + POSTGRES_DB: "virt_dashboard" + POSTGRES_USER: "virt_dashboard_user" + POSTGRES_PASSWORD: "EKnqZLVDZqjN" + volumes: + - pgdata:/var/lib/postgresql/data + ports: + - "5432:5432" + healthcheck: + test: ["CMD-SHELL", "pg_isready -U virt_dashboard_user -d virt_dashboard"] + interval: 10s + timeout: 5s + retries: 5 + start_period: 10s + restart: unless-stopped + backend: + build: ./api/ + environment: + POSTGRES_SERVER: "db" + POSTGRES_USER: "virt_dashboard_user" + POSTGRES_PASSWORD: "EKnqZLVDZqjN" + POSTGRES_DB: "virt_dashboard" + ports: + - "5000:5000" + frontend: + build: ./frontend/ + ports: + - "3000:3000" +volumes: + pgdata: \ No newline at end of file diff --git a/frontend/.dockerignore b/frontend/.dockerignore new file mode 100644 index 0000000..365c16b --- /dev/null +++ b/frontend/.dockerignore @@ -0,0 +1,8 @@ +node_modules/ +dist/ +.vscode/ + +Dockerfile +.dockerignore + +.gitignore \ No newline at end of file diff --git a/frontend/.env.development b/frontend/.env.development new file mode 100644 index 0000000..e4e1899 --- /dev/null +++ b/frontend/.env.development @@ -0,0 +1,2 @@ +VITE_IPAM_URL=https://ipamuts.region.vtb.ru +VITE_BACKEND_URL=http://localhost:5000/api \ No newline at end of file diff --git a/frontend/.env.production b/frontend/.env.production new file mode 100644 index 0000000..17aee7a --- /dev/null +++ b/frontend/.env.production @@ -0,0 +1,2 @@ +VITE_IPAM_URL=https://ipamuts.region.vtb.ru +VITE_BACKEND_URL=https://p0vmsv-ap5003xv.region.vtb.ru/api \ No newline at end of file diff --git a/frontend/.eslintrc.cjs b/frontend/.eslintrc.cjs new file mode 100644 index 0000000..8291baa --- /dev/null +++ b/frontend/.eslintrc.cjs @@ -0,0 +1,12 @@ +/* eslint-env node */ +require("@rushstack/eslint-patch/modern-module-resolution"); + +module.exports = { + "root": true, + "extends": [ + "plugin:vue/vue3-essential", + "eslint:recommended", + "@vue/eslint-config-typescript/recommended", + "@vue/eslint-config-prettier" + ] +} diff --git a/frontend/.gitignore b/frontend/.gitignore new file mode 100644 index 0000000..3fefbd3 --- /dev/null +++ b/frontend/.gitignore @@ -0,0 +1,40 @@ +# ---> Vue +# gitignore template for Vue.js projects +# +# Recommended template: Node.gitignore + +# TODO: where does this rule come from? +docs/_book + +# TODO: where does this rule come from? +test/ + +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +dist-ssr +coverage +*.zip +*.local + +/cypress/videos/ +/cypress/screenshots/ + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/frontend/Dockerfile b/frontend/Dockerfile new file mode 100644 index 0000000..0ed9c54 --- /dev/null +++ b/frontend/Dockerfile @@ -0,0 +1,18 @@ +# build stage +FROM node:lts-alpine as build-stage +WORKDIR /app +COPY package*.json ./ +RUN npm install +COPY . . +RUN npm run build + +# production stage +FROM nginx:stable-alpine as production-stage + +COPY ./nginx/nginx.conf /etc/nginx/conf.d/default.conf + +COPY --from=build-stage /app/dist /usr/share/nginx/html + +EXPOSE 3000 + +CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file diff --git a/frontend/env.d.ts b/frontend/env.d.ts new file mode 100644 index 0000000..9b30f47 --- /dev/null +++ b/frontend/env.d.ts @@ -0,0 +1,12 @@ +/// + +interface ImportMetaEnv { + readonly VITE_APP_TITLE: string + readonly VITE_IPAM_URL: string + readonly VITE_BACKEND_URL: string +// more env variables... +} + +interface ImportMeta { + readonly env: ImportMetaEnv +} \ No newline at end of file diff --git a/frontend/index.html b/frontend/index.html new file mode 100644 index 0000000..d11b067 --- /dev/null +++ b/frontend/index.html @@ -0,0 +1,13 @@ + + + + + + + VTB.Dashboard + + +
+ + + diff --git a/frontend/nginx/nginx.conf b/frontend/nginx/nginx.conf new file mode 100644 index 0000000..ab94710 --- /dev/null +++ b/frontend/nginx/nginx.conf @@ -0,0 +1,8 @@ +server { + listen 3000; + server_name _; + + root /usr/share/nginx/html; + index index.html; + try_files $uri $uri/ /index.html; +} \ No newline at end of file diff --git a/frontend/package-lock.json b/frontend/package-lock.json new file mode 100644 index 0000000..b9d7c86 --- /dev/null +++ b/frontend/package-lock.json @@ -0,0 +1,8818 @@ +{ + "name": "dashboard_frontend", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "dashboard_frontend", + "version": "1.0.0", + "dependencies": { + "@fontsource/source-sans-pro": "^4.5.10", + "@fortawesome/fontawesome-svg-core": "^6.4.0", + "@fortawesome/free-solid-svg-icons": "^6.4.0", + "@fortawesome/vue-fontawesome": "^3.0.3", + "@vuestic/ag-grid-theme": "^1.0.3", + "axios": "^0.27.2", + "chart.js": "^4.3.0", + "common-js": "^0.3.8", + "core-js": "^3.23.3", + "file-saver": "^2.0.5", + "font-awesome": "^4.7.0", + "fortawesome": "^0.0.1-security", + "http-server": "^14.1.1", + "ionicons": "^4.6.3", + "lodash.pick": "^4.4.0", + "material-icons": "^1.11.4", + "vue": "^3.2.37", + "vue-apexcharts": "^1.6.2", + "vue-chartjs": "^5.2.0", + "vue-fontawesome": "^0.0.2", + "vue-i18n": "^9.1.10", + "vue-router": "^4.0.16", + "vue3-apexcharts": "^1.4.1", + "vuestic-ui": "^1.4.6", + "vuex": "^4.0.2" + }, + "devDependencies": { + "@rushstack/eslint-patch": "^1.1.0", + "@types/file-saver": "^2.0.5", + "@types/jest": "^28.1.4", + "@types/node": "^16.11.47", + "@vitejs/plugin-vue": "^2.3.3", + "@vue/eslint-config-prettier": "^7.0.0", + "@vue/eslint-config-typescript": "^11.0.0", + "@vue/tsconfig": "^0.1.3", + "eslint": "^8.5.0", + "eslint-plugin-vue": "^9.0.0", + "npm-run-all": "^4.1.5", + "prettier": "^2.5.1", + "sass": "^1.53.0", + "sass-loader": "^13.0.2", + "typescript": "~4.7.4", + "vite": "^2.9.14", + "vue-tsc": "^0.38.8" + } + }, + "node_modules/@ag-grid-community/client-side-row-model": { + "version": "26.2.0", + "resolved": "https://registry.npmjs.org/@ag-grid-community/client-side-row-model/-/client-side-row-model-26.2.0.tgz", + "integrity": "sha512-kW5lMsK5WEXaqZMfHbLRj+EvxLhPW6qtDv61PyDcv+/91lwm2p5dT/iUBppavSwJDiNul+wntpyIlTulZgokwA==", + "dependencies": { + "@ag-grid-community/core": "~26.2.0" + } + }, + "node_modules/@ag-grid-community/core": { + "version": "26.2.1", + "resolved": "https://registry.npmjs.org/@ag-grid-community/core/-/core-26.2.1.tgz", + "integrity": "sha512-E2e3rZoZ90QtgO320kmlrm7kFbzFkCyrvCWYUQshJJU/UzCqr6DffVAXTaeehPNLzHBybANxWbSbFab9LQLIwQ==" + }, + "node_modules/@ag-grid-community/vue3": { + "version": "26.2.0", + "resolved": "https://registry.npmjs.org/@ag-grid-community/vue3/-/vue3-26.2.0.tgz", + "integrity": "sha512-c+yJGfZ5FYaSpryRcDjjFWr1zqRIC8mU39Ke6ZvRiEN4/ggjfZaKNI+rEK0s/WfNXF4pxyLWpCRaUC8i3SCaig==", + "peerDependencies": { + "@ag-grid-community/core": "~26.2.0", + "vue": "^3.0.0", + "vue-class-component": ">= ^8.0.0-beta.3" + } + }, + "node_modules/@babel/parser": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.8.tgz", + "integrity": "sha512-RSKRfYX20dyH+elbJK2uqAkVyucL+xXzhqlMD5/ZXx+dAAwpyB7HsvnHe/ZUGOF+xLr5Wx9/JoXVTj6BQE2/oA==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.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/@fontsource/source-sans-pro": { + "version": "4.5.10", + "resolved": "https://registry.npmjs.org/@fontsource/source-sans-pro/-/source-sans-pro-4.5.10.tgz", + "integrity": "sha512-8+MeEY0I3cBRmnzWBG3y4QsStbugPY3YGi20m71ElR7LUfSJt5UZNiCC6MI7V2wdsVGhiYORNW9J3aVo4LwFsw==" + }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.4.0.tgz", + "integrity": "sha512-HNii132xfomg5QVZw0HwXXpN22s7VBHQBv9CeOu9tfJnhsWQNd2lmTNi8CSrnw5B+5YOmzu1UoPAyxaXsJ6RgQ==", + "hasInstallScript": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-svg-core": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.4.0.tgz", + "integrity": "sha512-Bertv8xOiVELz5raB2FlXDPKt+m94MQ3JgDfsVbrqNpLU9+UE2E18GKjLKw+d3XbeYPqg1pzyQKGsrzbw+pPaw==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.4.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-solid-svg-icons": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.4.0.tgz", + "integrity": "sha512-kutPeRGWm8V5dltFP1zGjQOEAzaLZj4StdQhWVZnfGFCvAPVvHh8qk5bRrU4KXnRRRNni5tKQI9PBAdI6MP8nQ==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.4.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/vue-fontawesome": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.3.tgz", + "integrity": "sha512-KCPHi9QemVXGMrfuwf3nNnNo129resAIQWut9QTAMXmXqL2ErABC6ohd2yY5Ipq0CLWNbKHk8TMdTXL/Zf3ZhA==", + "peerDependencies": { + "@fortawesome/fontawesome-svg-core": "~1 || ~6", + "vue": ">= 3.0.0 < 4" + } + }, + "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/@intlify/core-base": { + "version": "9.1.10", + "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.1.10.tgz", + "integrity": "sha512-So9CNUavB/IsZ+zBmk2Cv6McQp6vc2wbGi1S0XQmJ8Vz+UFcNn9MFXAe9gY67PreIHrbLsLxDD0cwo1qsxM1Nw==", + "dependencies": { + "@intlify/devtools-if": "9.1.10", + "@intlify/message-compiler": "9.1.10", + "@intlify/message-resolver": "9.1.10", + "@intlify/runtime": "9.1.10", + "@intlify/shared": "9.1.10", + "@intlify/vue-devtools": "9.1.10" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@intlify/devtools-if": { + "version": "9.1.10", + "resolved": "https://registry.npmjs.org/@intlify/devtools-if/-/devtools-if-9.1.10.tgz", + "integrity": "sha512-SHaKoYu6sog3+Q8js1y3oXLywuogbH1sKuc7NSYkN3GElvXSBaMoCzW+we0ZSFqj/6c7vTNLg9nQ6rxhKqYwnQ==", + "dependencies": { + "@intlify/shared": "9.1.10" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@intlify/message-compiler": { + "version": "9.1.10", + "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.1.10.tgz", + "integrity": "sha512-+JiJpXff/XTb0EadYwdxOyRTB0hXNd4n1HaJ/a4yuV960uRmPXaklJsedW0LNdcptd/hYUZtCkI7Lc9J5C1gxg==", + "dependencies": { + "@intlify/message-resolver": "9.1.10", + "@intlify/shared": "9.1.10", + "source-map": "0.6.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@intlify/message-resolver": { + "version": "9.1.10", + "resolved": "https://registry.npmjs.org/@intlify/message-resolver/-/message-resolver-9.1.10.tgz", + "integrity": "sha512-5YixMG/M05m0cn9+gOzd4EZQTFRUu8RGhzxJbR1DWN21x/Z3bJ8QpDYj6hC4FwBj5uKsRfKpJQ3Xqg98KWoA+w==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/@intlify/runtime": { + "version": "9.1.10", + "resolved": "https://registry.npmjs.org/@intlify/runtime/-/runtime-9.1.10.tgz", + "integrity": "sha512-7QsuByNzpe3Gfmhwq6hzgXcMPpxz8Zxb/XFI6s9lQdPLPe5Lgw4U1ovRPZTOs6Y2hwitR3j/HD8BJNGWpJnOFA==", + "dependencies": { + "@intlify/message-compiler": "9.1.10", + "@intlify/message-resolver": "9.1.10", + "@intlify/shared": "9.1.10" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@intlify/shared": { + "version": "9.1.10", + "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.1.10.tgz", + "integrity": "sha512-Om54xJeo1Vw+K1+wHYyXngE8cAbrxZHpWjYzMR9wCkqbhGtRV5VLhVc214Ze2YatPrWlS2WSMOWXR8JktX/IgA==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/@intlify/vue-devtools": { + "version": "9.1.10", + "resolved": "https://registry.npmjs.org/@intlify/vue-devtools/-/vue-devtools-9.1.10.tgz", + "integrity": "sha512-5l3qYARVbkWAkagLu1XbDUWRJSL8br1Dj60wgMaKB0+HswVsrR6LloYZTg7ozyvM621V6+zsmwzbQxbVQyrytQ==", + "dependencies": { + "@intlify/message-resolver": "9.1.10", + "@intlify/runtime": "9.1.10", + "@intlify/shared": "9.1.10" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@jest/schemas": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.0.2.tgz", + "integrity": "sha512-YVDJZjd4izeTDkij00vHHAymNXQ6WWsdChFRK86qck6Jpr3DCL5W3Is3vslviRlP+bLuMYRLbdp98amMvqudhA==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.23.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "peer": 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, + "peer": 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, + "peer": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", + "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", + "dev": true, + "peer": 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, + "peer": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dev": true, + "peer": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@kurkle/color": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz", + "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.1.4.tgz", + "integrity": "sha512-LwzQKA4vzIct1zNZzBmRKI9QuNpLgTQMEjsQLf3BXuGYb3QPTP4Yjf6mkdX+X1mYttZ808QpOwAzZjv28kq7DA==", + "dev": true + }, + "node_modules/@sinclair/typebox": { + "version": "0.23.5", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.23.5.tgz", + "integrity": "sha512-AFBVi/iT4g20DHoujvMH1aEDn8fGJh4xsRGCP6d8RpLPMqsNPvW01Jcn0QysXTsg++/xj25NmJsGyH9xug/wKg==", + "dev": true + }, + "node_modules/@types/eslint": { + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz", + "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==", + "dev": true, + "peer": 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, + "peer": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", + "dev": true, + "peer": true + }, + "node_modules/@types/file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-zv9kNf3keYegP5oThGLaPk8E081DFDuwfqjtiTzm6PoxChdJ1raSuADf2YGCVIyrSynLrgc8JWv296s7Q7pQSQ==", + "dev": true + }, + "node_modules/@types/jest": { + "version": "28.1.4", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-28.1.4.tgz", + "integrity": "sha512-telv6G5N7zRJiLcI3Rs3o+ipZ28EnE+7EvF0pSrt2pZOMnAVI/f+6/LucDxOvcBcTeTL3JMF744BbVQAVBUQRA==", + "dev": true, + "dependencies": { + "jest-matcher-utils": "^28.0.0", + "pretty-format": "^28.0.0" + } + }, + "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/node": { + "version": "16.11.47", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.47.tgz", + "integrity": "sha512-fpP+jk2zJ4VW66+wAMFoBJlx1bxmBKx4DUFf68UHgdGCOuyUTDlLWqsaNPJh7xhNDykyJ9eIzAygilP/4WoN8g==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.30.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.30.5.tgz", + "integrity": "sha512-lftkqRoBvc28VFXEoRgyZuztyVUQ04JvUnATSPtIRFAccbXTWL6DEtXGYMcbg998kXw1NLUJm7rTQ9eUt+q6Ig==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.30.5", + "@typescript-eslint/type-utils": "5.30.5", + "@typescript-eslint/utils": "5.30.5", + "debug": "^4.3.4", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.2.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.30.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.30.5.tgz", + "integrity": "sha512-zj251pcPXI8GO9NDKWWmygP6+UjwWmrdf9qMW/L/uQJBM/0XbU2inxe5io/234y/RCvwpKEYjZ6c1YrXERkK4Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.30.5", + "@typescript-eslint/types": "5.30.5", + "@typescript-eslint/typescript-estree": "5.30.5", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.30.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.30.5.tgz", + "integrity": "sha512-NJ6F+YHHFT/30isRe2UTmIGGAiXKckCyMnIV58cE3JkHmaD6e5zyEYm5hBDv0Wbin+IC0T1FWJpD3YqHUG/Ydg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.30.5", + "@typescript-eslint/visitor-keys": "5.30.5" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.30.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.30.5.tgz", + "integrity": "sha512-k9+ejlv1GgwN1nN7XjVtyCgE0BTzhzT1YsQF0rv4Vfj2U9xnslBgMYYvcEYAFVdvhuEscELJsB7lDkN7WusErw==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "5.30.5", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.30.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.30.5.tgz", + "integrity": "sha512-kZ80w/M2AvsbRvOr3PjaNh6qEW1LFqs2pLdo2s5R38B2HYXG8Z0PP48/4+j1QHJFL3ssHIbJ4odPRS8PlHrFfw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.30.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.5.tgz", + "integrity": "sha512-qGTc7QZC801kbYjAr4AgdOfnokpwStqyhSbiQvqGBLixniAKyH+ib2qXIVo4P9NgGzwyfD9I0nlJN7D91E1VpQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.30.5", + "@typescript-eslint/visitor-keys": "5.30.5", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.30.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.30.5.tgz", + "integrity": "sha512-o4SSUH9IkuA7AYIfAvatldovurqTAHrfzPApOZvdUq01hHojZojCFXx06D/aFpKCgWbMPRdJBWAC3sWp3itwTA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.30.5", + "@typescript-eslint/types": "5.30.5", + "@typescript-eslint/typescript-estree": "5.30.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.30.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.5.tgz", + "integrity": "sha512-D+xtGo9HUMELzWIUqcQc0p2PO4NyvTrgIOK/VnSH083+8sq0tiLozNRKuLarwHYGRuA6TVBQSuuLwJUDWd3aaA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.30.5", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@vitejs/plugin-vue": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-2.3.3.tgz", + "integrity": "sha512-SmQLDyhz+6lGJhPELsBdzXGc+AcaT8stgkbiTFGpXPe8Tl1tJaBw1A6pxDqDuRsVkD8uscrkx3hA7QDOoKYtyw==", + "dev": true, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "vite": "^2.5.10", + "vue": "^3.2.25" + } + }, + "node_modules/@volar/code-gen": { + "version": "0.38.8", + "resolved": "https://registry.npmjs.org/@volar/code-gen/-/code-gen-0.38.8.tgz", + "integrity": "sha512-e37jd+JwNjBpWiBblsdmYMbJ9bELiuj2yZrsXv1IVKpYNSfvS92ZiYjJqVXHUwpzNeZjFG0RCd5nTpbiebwANw==", + "dev": true, + "dependencies": { + "@volar/source-map": "0.38.8" + } + }, + "node_modules/@volar/source-map": { + "version": "0.38.8", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-0.38.8.tgz", + "integrity": "sha512-JZvpjW/z2U3wq5wvwcTounPrRAZuSl4hlVKr3y7y72bKr++6W05OnX7fl/ddw39G/wLHdI2ag5+4JWsSd/EYhg==", + "dev": true + }, + "node_modules/@volar/vue-code-gen": { + "version": "0.38.8", + "resolved": "https://registry.npmjs.org/@volar/vue-code-gen/-/vue-code-gen-0.38.8.tgz", + "integrity": "sha512-iQVNmIu1TqnqTko+l9yeylmZipZ8zNH20XZAK9+48hkv2fEQnnJn5AI2W9Zb2M5DkGMpbYiJk9Fq1vm51YY1+g==", + "dev": true, + "dependencies": { + "@volar/code-gen": "0.38.8", + "@volar/source-map": "0.38.8", + "@vue/compiler-core": "^3.2.37", + "@vue/compiler-dom": "^3.2.37", + "@vue/shared": "^3.2.37" + } + }, + "node_modules/@volar/vue-typescript": { + "version": "0.38.8", + "resolved": "https://registry.npmjs.org/@volar/vue-typescript/-/vue-typescript-0.38.8.tgz", + "integrity": "sha512-7WeFt5piz9I6FKw2cQQCWm+75MxS6xCOGm300iu+hJORlroN2dwWbwj97pQnDGbjQbftCRplUYf0GqmhcOsanQ==", + "dev": true, + "dependencies": { + "@volar/code-gen": "0.38.8", + "@volar/source-map": "0.38.8", + "@volar/vue-code-gen": "0.38.8", + "@vue/compiler-sfc": "^3.2.37", + "@vue/reactivity": "^3.2.37" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.37.tgz", + "integrity": "sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg==", + "dependencies": { + "@babel/parser": "^7.16.4", + "@vue/shared": "3.2.37", + "estree-walker": "^2.0.2", + "source-map": "^0.6.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.37.tgz", + "integrity": "sha512-yxJLH167fucHKxaqXpYk7x8z7mMEnXOw3G2q62FTkmsvNxu4FQSu5+3UMb+L7fjKa26DEzhrmCxAgFLLIzVfqQ==", + "dependencies": { + "@vue/compiler-core": "3.2.37", + "@vue/shared": "3.2.37" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.37.tgz", + "integrity": "sha512-+7i/2+9LYlpqDv+KTtWhOZH+pa8/HnX/905MdVmAcI/mPQOBwkHHIzrsEsucyOIZQYMkXUiTkmZq5am/NyXKkg==", + "dependencies": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.37", + "@vue/compiler-dom": "3.2.37", + "@vue/compiler-ssr": "3.2.37", + "@vue/reactivity-transform": "3.2.37", + "@vue/shared": "3.2.37", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7", + "postcss": "^8.1.10", + "source-map": "^0.6.1" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.37.tgz", + "integrity": "sha512-7mQJD7HdXxQjktmsWp/J67lThEIcxLemz1Vb5I6rYJHR5vI+lON3nPGOH3ubmbvYGt8xEUaAr1j7/tIFWiEOqw==", + "dependencies": { + "@vue/compiler-dom": "3.2.37", + "@vue/shared": "3.2.37" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.2.0.tgz", + "integrity": "sha512-pF1G4wky+hkifDiZSWn8xfuLOJI1ZXtuambpBEYaf7Xaf6zC/pM29rvAGpd3qaGXnr4BAXU1Pxz/VfvBGwexGA==" + }, + "node_modules/@vue/eslint-config-prettier": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-prettier/-/eslint-config-prettier-7.0.0.tgz", + "integrity": "sha512-/CTc6ML3Wta1tCe1gUeO0EYnVXfo3nJXsIhZ8WJr3sov+cGASr6yuiibJTL6lmIBm7GobopToOuB3B6AWyV0Iw==", + "dev": true, + "dependencies": { + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-prettier": "^4.0.0" + }, + "peerDependencies": { + "eslint": ">= 7.28.0", + "prettier": ">= 2.0.0" + } + }, + "node_modules/@vue/eslint-config-typescript": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-11.0.0.tgz", + "integrity": "sha512-txuRzxnQVmtUvvy9UyWUy9sHWXNeRPGmSPqP53hRtaiUeCTAondI9Ho9GQYI/8/eWljYOST7iA4Aa8sANBkWaA==", + "dev": true, + "dependencies": { + "@typescript-eslint/eslint-plugin": "^5.0.0", + "@typescript-eslint/parser": "^5.0.0", + "vue-eslint-parser": "^9.0.0" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0", + "eslint-plugin-vue": "^9.0.0", + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/reactivity": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.37.tgz", + "integrity": "sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==", + "dependencies": { + "@vue/shared": "3.2.37" + } + }, + "node_modules/@vue/reactivity-transform": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.37.tgz", + "integrity": "sha512-IWopkKEb+8qpu/1eMKVeXrK0NLw9HicGviJzhJDEyfxTR9e1WtpnnbYkJWurX6WwoFP0sz10xQg8yL8lgskAZg==", + "dependencies": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.37", + "@vue/shared": "3.2.37", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.37.tgz", + "integrity": "sha512-JPcd9kFyEdXLl/i0ClS7lwgcs0QpUAWj+SKX2ZC3ANKi1U4DOtiEr6cRqFXsPwY5u1L9fAjkinIdB8Rz3FoYNQ==", + "dependencies": { + "@vue/reactivity": "3.2.37", + "@vue/shared": "3.2.37" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.37.tgz", + "integrity": "sha512-HimKdh9BepShW6YozwRKAYjYQWg9mQn63RGEiSswMbW+ssIht1MILYlVGkAGGQbkhSh31PCdoUcfiu4apXJoPw==", + "dependencies": { + "@vue/runtime-core": "3.2.37", + "@vue/shared": "3.2.37", + "csstype": "^2.6.8" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.37.tgz", + "integrity": "sha512-kLITEJvaYgZQ2h47hIzPh2K3jG8c1zCVbp/o/bzQOyvzaKiCquKS7AaioPI28GNxIsE/zSx+EwWYsNxDCX95MA==", + "dependencies": { + "@vue/compiler-ssr": "3.2.37", + "@vue/shared": "3.2.37" + }, + "peerDependencies": { + "vue": "3.2.37" + } + }, + "node_modules/@vue/shared": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.37.tgz", + "integrity": "sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw==" + }, + "node_modules/@vue/tsconfig": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.1.3.tgz", + "integrity": "sha512-kQVsh8yyWPvHpb8gIc9l/HIDiiVUy1amynLNpCy8p+FoCiZXCo6fQos5/097MmnNZc9AtseDsCrfkhqCrJ8Olg==", + "dev": true, + "peerDependencies": { + "@types/node": "*" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@vuestic/ag-grid-theme": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@vuestic/ag-grid-theme/-/ag-grid-theme-1.0.3.tgz", + "integrity": "sha512-SPvrui4+NdkST8rm2vErpFa3xBRApdhtOrYcJYLgeTPOhwwX9/HQsMyCq+ds1zdoo7/EZk8Gfb3pJzxXA60UzA==", + "dependencies": { + "@ag-grid-community/client-side-row-model": "^26.1.0", + "@ag-grid-community/core": "^26.1.0", + "@ag-grid-community/vue3": "^26.1.0", + "vue-class-component": "^8.0.0-rc.1" + }, + "peerDependencies": { + "vuestic-ui": "^1.2.8" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.5.tgz", + "integrity": "sha512-LHY/GSAZZRpsNQH+/oHqhRQ5FT7eoULcBqgfyTB5nQHogFnK3/7QoN7dLnwSE/JkUAF0SrRuclT7ODqMFtWxxQ==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.5", + "@webassemblyjs/helper-wasm-bytecode": "1.11.5" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.5.tgz", + "integrity": "sha512-1j1zTIC5EZOtCplMBG/IEwLtUojtwFVwdyVMbL/hwWqbzlQoJsWCOavrdnLkemwNoC/EOwtUFch3fuo+cbcXYQ==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.5.tgz", + "integrity": "sha512-L65bDPmfpY0+yFrsgz8b6LhXmbbs38OnwDCf6NpnMUYqa+ENfE5Dq9E42ny0qz/PdR0LJyq/T5YijPnU8AXEpA==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.5.tgz", + "integrity": "sha512-fDKo1gstwFFSfacIeH5KfwzjykIE6ldh1iH9Y/8YkAZrhmu4TctqYjSh7t0K2VyDSXOZJ1MLhht/k9IvYGcIxg==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.5.tgz", + "integrity": "sha512-DhykHXM0ZABqfIGYNv93A5KKDw/+ywBFnuWybZZWcuzWHfbp21wUfRkbtz7dMGwGgT4iXjWuhRMA2Mzod6W4WA==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.5", + "@webassemblyjs/helper-api-error": "1.11.5", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.5.tgz", + "integrity": "sha512-oC4Qa0bNcqnjAowFn7MPCETQgDYytpsfvz4ujZz63Zu/a/v71HeCAAmZsgZ3YVKec3zSPYytG3/PrRCqbtcAvA==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.5.tgz", + "integrity": "sha512-uEoThA1LN2NA+K3B9wDo3yKlBfVtC6rh0i4/6hvbz071E8gTNZD/pT0MsBf7MeD6KbApMSkaAK0XeKyOZC7CIA==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/helper-buffer": "1.11.5", + "@webassemblyjs/helper-wasm-bytecode": "1.11.5", + "@webassemblyjs/wasm-gen": "1.11.5" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.5.tgz", + "integrity": "sha512-37aGq6qVL8A8oPbPrSGMBcp38YZFXcHfiROflJn9jxSdSMMM5dS5P/9e2/TpaJuhE+wFrbukN2WI6Hw9MH5acg==", + "dev": true, + "peer": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.5.tgz", + "integrity": "sha512-ajqrRSXaTJoPW+xmkfYN6l8VIeNnR4vBOTQO9HzR7IygoCcKWkICbKFbVTNMjMgMREqXEr0+2M6zukzM47ZUfQ==", + "dev": true, + "peer": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.5.tgz", + "integrity": "sha512-WiOhulHKTZU5UPlRl53gHR8OxdGsSOxqfpqWeA2FmcwBMaoEdz6b2x2si3IwC9/fSPLfe8pBMRTHVMk5nlwnFQ==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.5.tgz", + "integrity": "sha512-C0p9D2fAu3Twwqvygvf42iGCQ4av8MFBLiTb+08SZ4cEdwzWx9QeAHDo1E2k+9s/0w1DM40oflJOpkZ8jW4HCQ==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/helper-buffer": "1.11.5", + "@webassemblyjs/helper-wasm-bytecode": "1.11.5", + "@webassemblyjs/helper-wasm-section": "1.11.5", + "@webassemblyjs/wasm-gen": "1.11.5", + "@webassemblyjs/wasm-opt": "1.11.5", + "@webassemblyjs/wasm-parser": "1.11.5", + "@webassemblyjs/wast-printer": "1.11.5" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.5.tgz", + "integrity": "sha512-14vteRlRjxLK9eSyYFvw1K8Vv+iPdZU0Aebk3j6oB8TQiQYuO6hj9s4d7qf6f2HJr2khzvNldAFG13CgdkAIfA==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/helper-wasm-bytecode": "1.11.5", + "@webassemblyjs/ieee754": "1.11.5", + "@webassemblyjs/leb128": "1.11.5", + "@webassemblyjs/utf8": "1.11.5" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.5.tgz", + "integrity": "sha512-tcKwlIXstBQgbKy1MlbDMlXaxpucn42eb17H29rawYLxm5+MsEmgPzeCP8B1Cl69hCice8LeKgZpRUAPtqYPgw==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/helper-buffer": "1.11.5", + "@webassemblyjs/wasm-gen": "1.11.5", + "@webassemblyjs/wasm-parser": "1.11.5" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.5.tgz", + "integrity": "sha512-SVXUIwsLQlc8srSD7jejsfTU83g7pIGr2YYNb9oHdtldSxaOhvA5xwvIiWIfcX8PlSakgqMXsLpLfbbJ4cBYew==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/helper-api-error": "1.11.5", + "@webassemblyjs/helper-wasm-bytecode": "1.11.5", + "@webassemblyjs/ieee754": "1.11.5", + "@webassemblyjs/leb128": "1.11.5", + "@webassemblyjs/utf8": "1.11.5" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.5.tgz", + "integrity": "sha512-f7Pq3wvg3GSPUPzR0F6bmI89Hdb+u9WXrSKc4v+N0aV0q6r42WoF92Jp2jEorBEBRoRNXgjp53nBniDXcqZYPA==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.5", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, + "peer": 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, + "peer": 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, + "peer": 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-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, + "peer": 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==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/apexcharts": { + "version": "3.40.0", + "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-3.40.0.tgz", + "integrity": "sha512-dSi3BUfCJkFd67uFp+xffrJVd3lDT7AAUUyRp0qPYiglJ76CeZLddVhM3FAk1P9GCzf8VewqGYUPCYQvXm+b9A==", + "peer": true, + "dependencies": { + "svg.draggable.js": "^2.2.2", + "svg.easing.js": "^2.0.0", + "svg.filter.js": "^2.0.2", + "svg.pathmorphing.js": "^0.1.3", + "svg.resize.js": "^1.4.3", + "svg.select.js": "^3.0.1" + } + }, + "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-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "dependencies": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/basic-auth/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/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.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.2.tgz", + "integrity": "sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "peer": true, + "dependencies": { + "caniuse-lite": "^1.0.30001366", + "electron-to-chromium": "^1.4.188", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.4" + }, + "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, + "peer": true + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "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-lite": { + "version": "1.0.30001370", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001370.tgz", + "integrity": "sha512-3PDmaP56wz/qz7G508xzjx8C+MC2qEm4SYhSEzC9IBROo+dGXFWRuaXkWti0A9tuI00g+toiriVqxtWMgl350g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ], + "peer": true + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chart.js": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.3.0.tgz", + "integrity": "sha512-ynG0E79xGfMaV2xAHdbhwiPLczxnNNnasrmPEXriXsPJGjmhOBYzFVEsB65w2qMDz+CaBJJuJD0inE/ab/h36g==", + "dependencies": { + "@kurkle/color": "^0.3.0" + }, + "engines": { + "pnpm": ">=7" + } + }, + "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, + "peer": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/cleave.js": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/cleave.js/-/cleave.js-1.6.0.tgz", + "integrity": "sha512-ivqesy3j5hQVG3gywPfwKPbi/7ZSftY/UNp5uphnqjr25yI2CP8FS2ODQPzuLXXnNLi29e2+PgPkkiKUXLs/Nw==" + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/colortranslator": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/colortranslator/-/colortranslator-1.9.2.tgz", + "integrity": "sha512-Hr1qCLwL/5gbGhcRwfhl1+JbvHmybTGbecpbhyzn3IyizgYFxMpLpX8OGhAcvSPB0+K2bwrAcFIbeF60wqOJLg==" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "peer": true + }, + "node_modules/common-js": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/common-js/-/common-js-0.3.8.tgz", + "integrity": "sha512-83poCK3wlRnYqWdolJiYrMYvaBFzlDO1RwQVti2ZDBR2K5ifBGksu2cw3ZKFioEqB8FVLUmuu3OXxFUlSBk5UQ==" + }, + "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/core-js": { + "version": "3.23.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.23.3.tgz", + "integrity": "sha512-oAKwkj9xcWNBAvGbT//WiCdOMpb9XQG92/Fe3ABFM/R16BsHgePG00mFOgKf7IsCtfj8tA1kHtf/VwErhriz5Q==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/corser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", + "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==", + "engines": { + "node": ">= 0.4.0" + } + }, + "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/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/csstype": { + "version": "2.6.20", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz", + "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==" + }, + "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/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/diff-sequences": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", + "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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/electron-to-chromium": { + "version": "1.4.200", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.200.tgz", + "integrity": "sha512-nPyI7oHc8T64oSqRXrAt99gNMpk0SAgPHw/o+hkNKyb5+bcdnFtZcSO9FUJES5cVkVZvo8u4qiZ1gQILl8UXsA==", + "dev": true, + "peer": true + }, + "node_modules/enhanced-resolve": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.13.0.tgz", + "integrity": "sha512-eyV8f0y1+bzyfh8xAwW/WTSZpLbjhqc4ne9eGSH4Zo2ejdyiNG9pU6mf9DG8a7+Auk6MFTlNOT4Y2y/9k8GKVg==", + "dev": true, + "peer": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "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": "1.2.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", + "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==", + "dev": true, + "peer": true + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "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/esbuild": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.49.tgz", + "integrity": "sha512-/TlVHhOaq7Yz8N1OJrjqM3Auzo5wjvHFLk+T8pIue+fhnhIMpfAzsG6PLVMbFveVxqD2WOp3QHei+52IMUNmCw==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "esbuild-android-64": "0.14.49", + "esbuild-android-arm64": "0.14.49", + "esbuild-darwin-64": "0.14.49", + "esbuild-darwin-arm64": "0.14.49", + "esbuild-freebsd-64": "0.14.49", + "esbuild-freebsd-arm64": "0.14.49", + "esbuild-linux-32": "0.14.49", + "esbuild-linux-64": "0.14.49", + "esbuild-linux-arm": "0.14.49", + "esbuild-linux-arm64": "0.14.49", + "esbuild-linux-mips64le": "0.14.49", + "esbuild-linux-ppc64le": "0.14.49", + "esbuild-linux-riscv64": "0.14.49", + "esbuild-linux-s390x": "0.14.49", + "esbuild-netbsd-64": "0.14.49", + "esbuild-openbsd-64": "0.14.49", + "esbuild-sunos-64": "0.14.49", + "esbuild-windows-32": "0.14.49", + "esbuild-windows-64": "0.14.49", + "esbuild-windows-arm64": "0.14.49" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.49.tgz", + "integrity": "sha512-vYsdOTD+yi+kquhBiFWl3tyxnj2qZJsl4tAqwhT90ktUdnyTizgle7TjNx6Ar1bN7wcwWqZ9QInfdk2WVagSww==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.49.tgz", + "integrity": "sha512-g2HGr/hjOXCgSsvQZ1nK4nW/ei8JUx04Li74qub9qWrStlysaVmadRyTVuW32FGIpLQyc5sUjjZopj49eGGM2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.49.tgz", + "integrity": "sha512-3rvqnBCtX9ywso5fCHixt2GBCUsogNp9DjGmvbBohh31Ces34BVzFltMSxJpacNki96+WIcX5s/vum+ckXiLYg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.49.tgz", + "integrity": "sha512-XMaqDxO846srnGlUSJnwbijV29MTKUATmOLyQSfswbK/2X5Uv28M9tTLUJcKKxzoo9lnkYPsx2o8EJcTYwCs/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.49.tgz", + "integrity": "sha512-NJ5Q6AjV879mOHFri+5lZLTp5XsO2hQ+KSJYLbfY9DgCu8s6/Zl2prWXVANYTeCDLlrIlNNYw8y34xqyLDKOmQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.49.tgz", + "integrity": "sha512-lFLtgXnAc3eXYqj5koPlBZvEbBSOSUbWO3gyY/0+4lBdRqELyz4bAuamHvmvHW5swJYL7kngzIZw6kdu25KGOA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.49.tgz", + "integrity": "sha512-zTTH4gr2Kb8u4QcOpTDVn7Z8q7QEIvFl/+vHrI3cF6XOJS7iEI1FWslTo3uofB2+mn6sIJEQD9PrNZKoAAMDiA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.49.tgz", + "integrity": "sha512-hYmzRIDzFfLrB5c1SknkxzM8LdEUOusp6M2TnuQZJLRtxTgyPnZZVtyMeCLki0wKgYPXkFsAVhi8vzo2mBNeTg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.49.tgz", + "integrity": "sha512-iE3e+ZVv1Qz1Sy0gifIsarJMQ89Rpm9mtLSRtG3AH0FPgAzQ5Z5oU6vYzhc/3gSPi2UxdCOfRhw2onXuFw/0lg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.49.tgz", + "integrity": "sha512-KLQ+WpeuY+7bxukxLz5VgkAAVQxUv67Ft4DmHIPIW+2w3ObBPQhqNoeQUHxopoW/aiOn3m99NSmSV+bs4BSsdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.49.tgz", + "integrity": "sha512-n+rGODfm8RSum5pFIqFQVQpYBw+AztL8s6o9kfx7tjfK0yIGF6tm5HlG6aRjodiiKkH2xAiIM+U4xtQVZYU4rA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.49.tgz", + "integrity": "sha512-WP9zR4HX6iCBmMFH+XHHng2LmdoIeUmBpL4aL2TR8ruzXyT4dWrJ5BSbT8iNo6THN8lod6GOmYDLq/dgZLalGw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.49.tgz", + "integrity": "sha512-h66ORBz+Dg+1KgLvzTVQEA1LX4XBd1SK0Fgbhhw4akpG/YkN8pS6OzYI/7SGENiN6ao5hETRDSkVcvU9NRtkMQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.49.tgz", + "integrity": "sha512-DhrUoFVWD+XmKO1y7e4kNCqQHPs6twz6VV6Uezl/XHYGzM60rBewBF5jlZjG0nCk5W/Xy6y1xWeopkrhFFM0sQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.49.tgz", + "integrity": "sha512-BXaUwFOfCy2T+hABtiPUIpWjAeWK9P8O41gR4Pg73hpzoygVGnj0nI3YK4SJhe52ELgtdgWP/ckIkbn2XaTxjQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.49.tgz", + "integrity": "sha512-lP06UQeLDGmVPw9Rg437Btu6J9/BmyhdoefnQ4gDEJTtJvKtQaUcOQrhjTq455ouZN4EHFH1h28WOJVANK41kA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.49.tgz", + "integrity": "sha512-4c8Zowp+V3zIWje329BeLbGh6XI9c/rqARNaj5yPHdC61pHI9UNdDxT3rePPJeWcEZVKjkiAS6AP6kiITp7FSw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.49.tgz", + "integrity": "sha512-q7Rb+J9yHTeKr9QTPDYkqfkEj8/kcKz9lOabDuvEXpXuIcosWCJgo5Z7h/L4r7rbtTH4a8U2FGKb6s1eeOHmJA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.49.tgz", + "integrity": "sha512-+Cme7Ongv0UIUTniPqfTX6mJ8Deo7VXw9xN0yJEN1lQMHDppTNmKwAM3oGbD/Vqff+07K2gN0WfNkMohmG+dVw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.49.tgz", + "integrity": "sha512-v+HYNAXzuANrCbbLFJ5nmO3m5y2PGZWLe3uloAkLt87aXiO2mZr3BTmacZdjwNkNEHuH3bNtN8cak+mzVjVPfA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "peer": 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.19.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.19.0.tgz", + "integrity": "sha512-SXOPj3x9VKvPe81TjjUJCYlV4oJjQw68Uek+AM0X4p+33dj2HY5bpTZOgnQHcG2eAm1mtCU9uNMnJi7exU/kYw==", + "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-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "eslint": ">=7.28.0", + "prettier": ">=2.0.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-vue": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.2.0.tgz", + "integrity": "sha512-W2hc+NUXoce8sZtWgZ45miQTy6jNyuSdub5aZ1IBune4JDeAyzucYX0TzkrQ1jMO52sNUDYlCIHDoaNePe0p5g==", + "dev": true, + "dependencies": { + "eslint-utils": "^3.0.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.0.1", + "postcss-selector-parser": "^6.0.9", + "semver": "^7.3.5", + "vue-eslint-parser": "^9.0.1", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-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/eslint/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/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/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/esquery/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/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/esrecurse/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/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/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "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/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "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, + "peer": 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-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "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/file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", + "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/font-awesome": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", + "integrity": "sha512-U6kGnykA/6bFmg1M/oT9EkFeIYv7JlX3bozwQJWiiLz6L0w3F5vBVPxHlwyX/vtNq1ckcpRKOB9f2Qal/VtFpg==", + "engines": { + "node": ">=0.10.3" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fortawesome": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/fortawesome/-/fortawesome-0.0.1-security.tgz", + "integrity": "sha512-o/pwn9ZSnveFLYP0d5IejSwz0rpGMDQsBaYVvR8WXSvnxILIwh7IUJK0P90QMF4cnIyouVF2BGrz0LEVSyzimA==" + }, + "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==" + }, + "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==", + "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, + "peer": 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/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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==", + "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==", + "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==", + "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/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "bin": { + "he": "bin/he" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-server": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", + "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", + "dependencies": { + "basic-auth": "^2.0.1", + "chalk": "^4.1.2", + "corser": "^2.0.1", + "he": "^1.2.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy": "^1.18.1", + "mime": "^1.6.0", + "minimist": "^1.2.6", + "opener": "^1.5.1", + "portfinder": "^1.0.28", + "secure-compare": "3.0.1", + "union": "~0.5.0", + "url-join": "^4.0.1" + }, + "bin": { + "http-server": "bin/http-server" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/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/ionicons": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-4.6.3.tgz", + "integrity": "sha512-cgP+VIr2cTJpMfFyVHTerq6n2jeoiGboVoe3GlaAo5zoSBDAEXORwUZhv6m+lCyxlsHCS3nqPUE+MKyZU71t8Q==" + }, + "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-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/jest-diff": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.1.tgz", + "integrity": "sha512-/MUUxeR2fHbqHoMMiffe/Afm+U8U4olFRJ0hiVG2lZatPJcnGxx292ustVu7bULhjV65IYMxRdploAKLbcrsyg==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^28.1.1", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", + "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.1.tgz", + "integrity": "sha512-NPJPRWrbmR2nAJ+1nmnfcKKzSwgfaciCCrYZzVnNoxVoyusYWIjkBMNvu0RHJe7dNj4hH3uZOPZsQA+xAYWqsw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^28.1.1", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.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, + "peer": 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, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "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-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "peer": 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/klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "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/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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, + "peer": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.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.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==" + }, + "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/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/material-icons": { + "version": "1.11.4", + "resolved": "https://registry.npmjs.org/material-icons/-/material-icons-1.11.4.tgz", + "integrity": "sha512-si/VqvWo6LNINE0aemZlWulV5E7NJKmWOOD8rMoDyFTTF3bUzs6bkRZJAKWa5j/VnGMhdoNB1kyMm537lh4SYA==" + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "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, + "peer": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "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/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "dev": true, + "peer": true + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/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.css": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz", + "integrity": "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==" + }, + "node_modules/npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm-run-all/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/npm-run-all/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/npm-run-all/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/npm-run-all/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/npm-run-all/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/npm-run-all/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/npm-run-all/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/npm-run-all/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/npm-run-all/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all/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/npm-run-all/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/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==", + "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/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/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "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/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": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "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==" + }, + "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/pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/portfinder": { + "version": "1.0.32", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", + "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", + "dependencies": { + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/postcss": { + "version": "8.4.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", + "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "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-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/pretty-format": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.1.tgz", + "integrity": "sha512-wwJbVTGFHeucr5Jw2bQ9P+VYHyLdAqedFLEkdQUVaBF/eiidDwH5OpilINq4mEfhbCjLnirt6HTTDhv1HaTIQw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.0.2", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/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/qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "peer": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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/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/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "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-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/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "2.77.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.77.0.tgz", + "integrity": "sha512-vL8xjY4yOQEw79DvyXLijhnhh+R/O9zpF/LEgkCebZFtb6ELeN9H3/2T0r8+mp+fFTBHZ5qGpOpW2ela2zRt3g==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "peer": true + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sass": { + "version": "1.53.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.53.0.tgz", + "integrity": "sha512-zb/oMirbKhUgRQ0/GFz8TSAwRq2IlR29vOUJZOx0l8sV+CkHUfHa4u5nqrG+1VceZp7Jfj59SVW9ogdhTvJDcQ==", + "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.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.0.2.tgz", + "integrity": "sha512-BbiqbVmbfJaWVeOOAu2o7DhYWtcNmTfvroVgFXa6k2hHheMxNAeDHLNoDy/Q5aoaVlz0LH+MbMktKwm9vN/j8Q==", + "dev": true, + "dependencies": { + "klona": "^2.0.4", + "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", + "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.2", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", + "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==", + "dev": true, + "peer": 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/secure-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", + "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==" + }, + "node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dev": true, + "peer": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", + "dev": true + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-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, + "peer": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "dev": true + }, + "node_modules/string.prototype.padend": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz", + "integrity": "sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg==", + "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/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/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg.draggable.js": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/svg.draggable.js/-/svg.draggable.js-2.2.2.tgz", + "integrity": "sha512-JzNHBc2fLQMzYCZ90KZHN2ohXL0BQJGQimK1kGk6AvSeibuKcIdDX9Kr0dT9+UJ5O8nYA0RB839Lhvk4CY4MZw==", + "peer": true, + "dependencies": { + "svg.js": "^2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.easing.js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/svg.easing.js/-/svg.easing.js-2.0.0.tgz", + "integrity": "sha512-//ctPdJMGy22YoYGV+3HEfHbm6/69LJUTAqI2/5qBvaNHZ9uUFVC82B0Pl299HzgH13rKrBgi4+XyXXyVWWthA==", + "peer": true, + "dependencies": { + "svg.js": ">=2.3.x" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.filter.js": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/svg.filter.js/-/svg.filter.js-2.0.2.tgz", + "integrity": "sha512-xkGBwU+dKBzqg5PtilaTb0EYPqPfJ9Q6saVldX+5vCRy31P6TlRCP3U9NxH3HEufkKkpNgdTLBJnmhDHeTqAkw==", + "peer": true, + "dependencies": { + "svg.js": "^2.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.js": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/svg.js/-/svg.js-2.7.1.tgz", + "integrity": "sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA==", + "peer": true + }, + "node_modules/svg.pathmorphing.js": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/svg.pathmorphing.js/-/svg.pathmorphing.js-0.1.3.tgz", + "integrity": "sha512-49HWI9X4XQR/JG1qXkSDV8xViuTLIWm/B/7YuQELV5KMOPtXjiwH4XPJvr/ghEDibmLQ9Oc22dpWpG0vUDDNww==", + "peer": true, + "dependencies": { + "svg.js": "^2.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.resize.js": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/svg.resize.js/-/svg.resize.js-1.4.3.tgz", + "integrity": "sha512-9k5sXJuPKp+mVzXNvxz7U0uC9oVMQrrf7cFsETznzUDDm0x8+77dtZkWdMfRlmbkEEYvUn9btKuZ3n41oNA+uw==", + "peer": true, + "dependencies": { + "svg.js": "^2.6.5", + "svg.select.js": "^2.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.resize.js/node_modules/svg.select.js": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-2.1.2.tgz", + "integrity": "sha512-tH6ABEyJsAOVAhwcCjF8mw4crjXSI1aa7j2VQR8ZuJ37H2MBUbyeqYr5nEO7sSN3cy9AR9DUwNg0t/962HlDbQ==", + "peer": true, + "dependencies": { + "svg.js": "^2.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.select.js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-3.0.1.tgz", + "integrity": "sha512-h5IS/hKkuVCbKSieR9uQCj9w+zLHoPh+ce19bBYyqF53g6mnPB8sAtIbe1s9dh2S2fCmYX2xel1Ln3PJBbK4kw==", + "peer": true, + "dependencies": { + "svg.js": "^2.6.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.1.tgz", + "integrity": "sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw==", + "dev": true, + "peer": 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.7", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz", + "integrity": "sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==", + "dev": true, + "peer": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.5" + }, + "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/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/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/typescript": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", + "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "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/union": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", + "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", + "dependencies": { + "qs": "^6.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", + "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "peer": true, + "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/url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==" + }, + "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/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vite": { + "version": "2.9.14", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.14.tgz", + "integrity": "sha512-P/UCjSpSMcE54r4mPak55hWAZPlyfS369svib/gpmz8/01L822lMPOJ/RYW6tLCe1RPvMvOsJ17erf55bKp4Hw==", + "dev": true, + "dependencies": { + "esbuild": "^0.14.27", + "postcss": "^8.4.13", + "resolve": "^1.22.0", + "rollup": "^2.59.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": ">=12.2.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "less": "*", + "sass": "*", + "stylus": "*" + }, + "peerDependenciesMeta": { + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + } + } + }, + "node_modules/vue": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.37.tgz", + "integrity": "sha512-bOKEZxrm8Eh+fveCqS1/NkG/n6aMidsI6hahas7pa0w/l7jkbssJVsRhVDs07IdDq7h9KHswZOgItnwJAgtVtQ==", + "dependencies": { + "@vue/compiler-dom": "3.2.37", + "@vue/compiler-sfc": "3.2.37", + "@vue/runtime-dom": "3.2.37", + "@vue/server-renderer": "3.2.37", + "@vue/shared": "3.2.37" + } + }, + "node_modules/vue-apexcharts": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/vue-apexcharts/-/vue-apexcharts-1.6.2.tgz", + "integrity": "sha512-9HS3scJwWgKjmkcWIf+ndNDR0WytUJD8Ju0V2ZYcjYtlTLwJAf2SKUlBZaQTkDmwje/zMgulvZRi+MXmi+WkKw==", + "peerDependencies": { + "apexcharts": "^3.26.0" + } + }, + "node_modules/vue-chartjs": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/vue-chartjs/-/vue-chartjs-5.2.0.tgz", + "integrity": "sha512-d3zpKmGZr2OWHQ1xmxBcAn5ShTG917+/UCLaSpaCDDqT0U7DBsvFzTs69ZnHCgKoXT55GZDW8YEj9Av+dlONLA==", + "peerDependencies": { + "chart.js": "^4.1.1", + "vue": "^3.0.0-0 || ^2.7.0" + } + }, + "node_modules/vue-class-component": { + "version": "8.0.0-rc.1", + "resolved": "https://registry.npmjs.org/vue-class-component/-/vue-class-component-8.0.0-rc.1.tgz", + "integrity": "sha512-w1nMzsT/UdbDAXKqhwTmSoyuJzUXKrxLE77PCFVuC6syr8acdFDAq116xgvZh9UCuV0h+rlCtxXolr3Hi3HyPQ==", + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/vue-eslint-parser": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.0.3.tgz", + "integrity": "sha512-yL+ZDb+9T0ELG4VIFo/2anAOz8SvBdlqEnQnvJ3M7Scq56DvtjY0VY88bByRZB0D4J0u8olBcfrXTVONXsh4og==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.6" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/vue-eslint-parser/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/vue-eslint-parser/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/vue-fontawesome": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/vue-fontawesome/-/vue-fontawesome-0.0.2.tgz", + "integrity": "sha512-uI3RzoPuoD5OGEBRPovi+tMN++3raHmpxCgeT8XexCnecbS4myb0YMSmP4ifser6n+abwwGZftuf40cP3GTDrw==", + "dependencies": { + "font-awesome": "^4.7.0", + "vue": "^2.1.8" + } + }, + "node_modules/vue-fontawesome/node_modules/@vue/compiler-sfc": { + "version": "2.7.14", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz", + "integrity": "sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==", + "dependencies": { + "@babel/parser": "^7.18.4", + "postcss": "^8.4.14", + "source-map": "^0.6.1" + } + }, + "node_modules/vue-fontawesome/node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "node_modules/vue-fontawesome/node_modules/vue": { + "version": "2.7.14", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.14.tgz", + "integrity": "sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ==", + "dependencies": { + "@vue/compiler-sfc": "2.7.14", + "csstype": "^3.1.0" + } + }, + "node_modules/vue-i18n": { + "version": "9.1.10", + "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.1.10.tgz", + "integrity": "sha512-jpr7gV5KPk4n+sSPdpZT8Qx3XzTcNDWffRlHV/cT2NUyEf+sEgTTmLvnBAibjOFJ0zsUyZlVTAWH5DDnYep+1g==", + "dependencies": { + "@intlify/core-base": "9.1.10", + "@intlify/shared": "9.1.10", + "@intlify/vue-devtools": "9.1.10", + "@vue/devtools-api": "^6.0.0-beta.7" + }, + "engines": { + "node": ">= 10" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/vue-router": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.1.1.tgz", + "integrity": "sha512-Wp1mEf2xCwT0ez7o9JvgpfBp9JGnVb+dPERzXDbugTatzJAJ60VWOhJKifQty85k+jOreoFHER4r5fu062PhPw==", + "dependencies": { + "@vue/devtools-api": "^6.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue-tsc": { + "version": "0.38.8", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-0.38.8.tgz", + "integrity": "sha512-hhyc5SODiekcYNXG08aNg17LogR19o3i14avVejo+Fm45Dqk9Ke6rb0M19HoTKdQGfZBgqg2VUboYxmtAukWeg==", + "dev": true, + "dependencies": { + "@volar/vue-typescript": "0.38.8" + }, + "bin": { + "vue-tsc": "bin/vue-tsc.js" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/vue3-apexcharts": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/vue3-apexcharts/-/vue3-apexcharts-1.4.1.tgz", + "integrity": "sha512-96qP8JDqB9vwU7bkG5nVU+E0UGQn7yYQVqUUCLQMYWDuQyu2vE77H/UFZ1yI+hwzlSTBKT9BqnNG8JsFegB3eg==", + "peerDependencies": { + "apexcharts": "> 3.0.0", + "vue": "> 3.0.0" + } + }, + "node_modules/vuestic-ui": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/vuestic-ui/-/vuestic-ui-1.4.6.tgz", + "integrity": "sha512-dWl+bKHh8jl2jhljUyNrP0wan4lm8Pj9LS6CAO3A30HHEb58pLbyd3I3SUIBtCXB2584WODn9yAEwkAEFOnY0Q==", + "dependencies": { + "cleave.js": "^1.6.0", + "colortranslator": "^1.9.2", + "lodash": "^4.17.21", + "normalize.css": "^8.0.1" + }, + "peerDependencies": { + "vue": "^3.0.4" + } + }, + "node_modules/vuex": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-4.0.2.tgz", + "integrity": "sha512-M6r8uxELjZIK8kTKDGgZTYX/ahzblnzC4isU1tpmEuOIIKmV+TRdc+H4s8ds2NuZ7wpUTdGRzJRtoj+lI+pc0Q==", + "dependencies": { + "@vue/devtools-api": "^6.0.0-beta.11" + }, + "peerDependencies": { + "vue": "^3.0.2" + } + }, + "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, + "peer": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack": { + "version": "5.81.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.81.0.tgz", + "integrity": "sha512-AAjaJ9S4hYCVODKLQTgG5p5e11hiMawBwV2v8MYLE0C/6UAGLuAF4n1qa9GOwdxnicaP+5k6M5HrLmD4+gIB8Q==", + "dev": true, + "peer": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.13.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.2", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-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, + "peer": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "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 + } + }, + "dependencies": { + "@ag-grid-community/client-side-row-model": { + "version": "26.2.0", + "resolved": "https://registry.npmjs.org/@ag-grid-community/client-side-row-model/-/client-side-row-model-26.2.0.tgz", + "integrity": "sha512-kW5lMsK5WEXaqZMfHbLRj+EvxLhPW6qtDv61PyDcv+/91lwm2p5dT/iUBppavSwJDiNul+wntpyIlTulZgokwA==", + "requires": { + "@ag-grid-community/core": "~26.2.0" + } + }, + "@ag-grid-community/core": { + "version": "26.2.1", + "resolved": "https://registry.npmjs.org/@ag-grid-community/core/-/core-26.2.1.tgz", + "integrity": "sha512-E2e3rZoZ90QtgO320kmlrm7kFbzFkCyrvCWYUQshJJU/UzCqr6DffVAXTaeehPNLzHBybANxWbSbFab9LQLIwQ==" + }, + "@ag-grid-community/vue3": { + "version": "26.2.0", + "resolved": "https://registry.npmjs.org/@ag-grid-community/vue3/-/vue3-26.2.0.tgz", + "integrity": "sha512-c+yJGfZ5FYaSpryRcDjjFWr1zqRIC8mU39Ke6ZvRiEN4/ggjfZaKNI+rEK0s/WfNXF4pxyLWpCRaUC8i3SCaig==", + "requires": {} + }, + "@babel/parser": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.8.tgz", + "integrity": "sha512-RSKRfYX20dyH+elbJK2uqAkVyucL+xXzhqlMD5/ZXx+dAAwpyB7HsvnHe/ZUGOF+xLr5Wx9/JoXVTj6BQE2/oA==" + }, + "@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" + } + }, + "@fontsource/source-sans-pro": { + "version": "4.5.10", + "resolved": "https://registry.npmjs.org/@fontsource/source-sans-pro/-/source-sans-pro-4.5.10.tgz", + "integrity": "sha512-8+MeEY0I3cBRmnzWBG3y4QsStbugPY3YGi20m71ElR7LUfSJt5UZNiCC6MI7V2wdsVGhiYORNW9J3aVo4LwFsw==" + }, + "@fortawesome/fontawesome-common-types": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.4.0.tgz", + "integrity": "sha512-HNii132xfomg5QVZw0HwXXpN22s7VBHQBv9CeOu9tfJnhsWQNd2lmTNi8CSrnw5B+5YOmzu1UoPAyxaXsJ6RgQ==" + }, + "@fortawesome/fontawesome-svg-core": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.4.0.tgz", + "integrity": "sha512-Bertv8xOiVELz5raB2FlXDPKt+m94MQ3JgDfsVbrqNpLU9+UE2E18GKjLKw+d3XbeYPqg1pzyQKGsrzbw+pPaw==", + "requires": { + "@fortawesome/fontawesome-common-types": "6.4.0" + } + }, + "@fortawesome/free-solid-svg-icons": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.4.0.tgz", + "integrity": "sha512-kutPeRGWm8V5dltFP1zGjQOEAzaLZj4StdQhWVZnfGFCvAPVvHh8qk5bRrU4KXnRRRNni5tKQI9PBAdI6MP8nQ==", + "requires": { + "@fortawesome/fontawesome-common-types": "6.4.0" + } + }, + "@fortawesome/vue-fontawesome": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.3.tgz", + "integrity": "sha512-KCPHi9QemVXGMrfuwf3nNnNo129resAIQWut9QTAMXmXqL2ErABC6ohd2yY5Ipq0CLWNbKHk8TMdTXL/Zf3ZhA==", + "requires": {} + }, + "@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 + }, + "@intlify/core-base": { + "version": "9.1.10", + "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.1.10.tgz", + "integrity": "sha512-So9CNUavB/IsZ+zBmk2Cv6McQp6vc2wbGi1S0XQmJ8Vz+UFcNn9MFXAe9gY67PreIHrbLsLxDD0cwo1qsxM1Nw==", + "requires": { + "@intlify/devtools-if": "9.1.10", + "@intlify/message-compiler": "9.1.10", + "@intlify/message-resolver": "9.1.10", + "@intlify/runtime": "9.1.10", + "@intlify/shared": "9.1.10", + "@intlify/vue-devtools": "9.1.10" + } + }, + "@intlify/devtools-if": { + "version": "9.1.10", + "resolved": "https://registry.npmjs.org/@intlify/devtools-if/-/devtools-if-9.1.10.tgz", + "integrity": "sha512-SHaKoYu6sog3+Q8js1y3oXLywuogbH1sKuc7NSYkN3GElvXSBaMoCzW+we0ZSFqj/6c7vTNLg9nQ6rxhKqYwnQ==", + "requires": { + "@intlify/shared": "9.1.10" + } + }, + "@intlify/message-compiler": { + "version": "9.1.10", + "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.1.10.tgz", + "integrity": "sha512-+JiJpXff/XTb0EadYwdxOyRTB0hXNd4n1HaJ/a4yuV960uRmPXaklJsedW0LNdcptd/hYUZtCkI7Lc9J5C1gxg==", + "requires": { + "@intlify/message-resolver": "9.1.10", + "@intlify/shared": "9.1.10", + "source-map": "0.6.1" + } + }, + "@intlify/message-resolver": { + "version": "9.1.10", + "resolved": "https://registry.npmjs.org/@intlify/message-resolver/-/message-resolver-9.1.10.tgz", + "integrity": "sha512-5YixMG/M05m0cn9+gOzd4EZQTFRUu8RGhzxJbR1DWN21x/Z3bJ8QpDYj6hC4FwBj5uKsRfKpJQ3Xqg98KWoA+w==" + }, + "@intlify/runtime": { + "version": "9.1.10", + "resolved": "https://registry.npmjs.org/@intlify/runtime/-/runtime-9.1.10.tgz", + "integrity": "sha512-7QsuByNzpe3Gfmhwq6hzgXcMPpxz8Zxb/XFI6s9lQdPLPe5Lgw4U1ovRPZTOs6Y2hwitR3j/HD8BJNGWpJnOFA==", + "requires": { + "@intlify/message-compiler": "9.1.10", + "@intlify/message-resolver": "9.1.10", + "@intlify/shared": "9.1.10" + } + }, + "@intlify/shared": { + "version": "9.1.10", + "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.1.10.tgz", + "integrity": "sha512-Om54xJeo1Vw+K1+wHYyXngE8cAbrxZHpWjYzMR9wCkqbhGtRV5VLhVc214Ze2YatPrWlS2WSMOWXR8JktX/IgA==" + }, + "@intlify/vue-devtools": { + "version": "9.1.10", + "resolved": "https://registry.npmjs.org/@intlify/vue-devtools/-/vue-devtools-9.1.10.tgz", + "integrity": "sha512-5l3qYARVbkWAkagLu1XbDUWRJSL8br1Dj60wgMaKB0+HswVsrR6LloYZTg7ozyvM621V6+zsmwzbQxbVQyrytQ==", + "requires": { + "@intlify/message-resolver": "9.1.10", + "@intlify/runtime": "9.1.10", + "@intlify/shared": "9.1.10" + } + }, + "@jest/schemas": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.0.2.tgz", + "integrity": "sha512-YVDJZjd4izeTDkij00vHHAymNXQ6WWsdChFRK86qck6Jpr3DCL5W3Is3vslviRlP+bLuMYRLbdp98amMvqudhA==", + "dev": true, + "requires": { + "@sinclair/typebox": "^0.23.3" + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "peer": 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, + "peer": 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, + "peer": true + }, + "@jridgewell/source-map": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", + "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", + "dev": true, + "peer": 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, + "peer": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dev": true, + "peer": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "@kurkle/color": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz", + "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==" + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@rushstack/eslint-patch": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.1.4.tgz", + "integrity": "sha512-LwzQKA4vzIct1zNZzBmRKI9QuNpLgTQMEjsQLf3BXuGYb3QPTP4Yjf6mkdX+X1mYttZ808QpOwAzZjv28kq7DA==", + "dev": true + }, + "@sinclair/typebox": { + "version": "0.23.5", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.23.5.tgz", + "integrity": "sha512-AFBVi/iT4g20DHoujvMH1aEDn8fGJh4xsRGCP6d8RpLPMqsNPvW01Jcn0QysXTsg++/xj25NmJsGyH9xug/wKg==", + "dev": true + }, + "@types/eslint": { + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz", + "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==", + "dev": true, + "peer": 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, + "peer": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", + "dev": true, + "peer": true + }, + "@types/file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-zv9kNf3keYegP5oThGLaPk8E081DFDuwfqjtiTzm6PoxChdJ1raSuADf2YGCVIyrSynLrgc8JWv296s7Q7pQSQ==", + "dev": true + }, + "@types/jest": { + "version": "28.1.4", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-28.1.4.tgz", + "integrity": "sha512-telv6G5N7zRJiLcI3Rs3o+ipZ28EnE+7EvF0pSrt2pZOMnAVI/f+6/LucDxOvcBcTeTL3JMF744BbVQAVBUQRA==", + "dev": true, + "requires": { + "jest-matcher-utils": "^28.0.0", + "pretty-format": "^28.0.0" + } + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/node": { + "version": "16.11.47", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.47.tgz", + "integrity": "sha512-fpP+jk2zJ4VW66+wAMFoBJlx1bxmBKx4DUFf68UHgdGCOuyUTDlLWqsaNPJh7xhNDykyJ9eIzAygilP/4WoN8g==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.30.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.30.5.tgz", + "integrity": "sha512-lftkqRoBvc28VFXEoRgyZuztyVUQ04JvUnATSPtIRFAccbXTWL6DEtXGYMcbg998kXw1NLUJm7rTQ9eUt+q6Ig==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.30.5", + "@typescript-eslint/type-utils": "5.30.5", + "@typescript-eslint/utils": "5.30.5", + "debug": "^4.3.4", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.2.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/parser": { + "version": "5.30.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.30.5.tgz", + "integrity": "sha512-zj251pcPXI8GO9NDKWWmygP6+UjwWmrdf9qMW/L/uQJBM/0XbU2inxe5io/234y/RCvwpKEYjZ6c1YrXERkK4Q==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.30.5", + "@typescript-eslint/types": "5.30.5", + "@typescript-eslint/typescript-estree": "5.30.5", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.30.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.30.5.tgz", + "integrity": "sha512-NJ6F+YHHFT/30isRe2UTmIGGAiXKckCyMnIV58cE3JkHmaD6e5zyEYm5hBDv0Wbin+IC0T1FWJpD3YqHUG/Ydg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.30.5", + "@typescript-eslint/visitor-keys": "5.30.5" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.30.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.30.5.tgz", + "integrity": "sha512-k9+ejlv1GgwN1nN7XjVtyCgE0BTzhzT1YsQF0rv4Vfj2U9xnslBgMYYvcEYAFVdvhuEscELJsB7lDkN7WusErw==", + "dev": true, + "requires": { + "@typescript-eslint/utils": "5.30.5", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/types": { + "version": "5.30.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.30.5.tgz", + "integrity": "sha512-kZ80w/M2AvsbRvOr3PjaNh6qEW1LFqs2pLdo2s5R38B2HYXG8Z0PP48/4+j1QHJFL3ssHIbJ4odPRS8PlHrFfw==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.30.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.5.tgz", + "integrity": "sha512-qGTc7QZC801kbYjAr4AgdOfnokpwStqyhSbiQvqGBLixniAKyH+ib2qXIVo4P9NgGzwyfD9I0nlJN7D91E1VpQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.30.5", + "@typescript-eslint/visitor-keys": "5.30.5", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/utils": { + "version": "5.30.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.30.5.tgz", + "integrity": "sha512-o4SSUH9IkuA7AYIfAvatldovurqTAHrfzPApOZvdUq01hHojZojCFXx06D/aFpKCgWbMPRdJBWAC3sWp3itwTA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.30.5", + "@typescript-eslint/types": "5.30.5", + "@typescript-eslint/typescript-estree": "5.30.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.30.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.5.tgz", + "integrity": "sha512-D+xtGo9HUMELzWIUqcQc0p2PO4NyvTrgIOK/VnSH083+8sq0tiLozNRKuLarwHYGRuA6TVBQSuuLwJUDWd3aaA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.30.5", + "eslint-visitor-keys": "^3.3.0" + } + }, + "@vitejs/plugin-vue": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-2.3.3.tgz", + "integrity": "sha512-SmQLDyhz+6lGJhPELsBdzXGc+AcaT8stgkbiTFGpXPe8Tl1tJaBw1A6pxDqDuRsVkD8uscrkx3hA7QDOoKYtyw==", + "dev": true, + "requires": {} + }, + "@volar/code-gen": { + "version": "0.38.8", + "resolved": "https://registry.npmjs.org/@volar/code-gen/-/code-gen-0.38.8.tgz", + "integrity": "sha512-e37jd+JwNjBpWiBblsdmYMbJ9bELiuj2yZrsXv1IVKpYNSfvS92ZiYjJqVXHUwpzNeZjFG0RCd5nTpbiebwANw==", + "dev": true, + "requires": { + "@volar/source-map": "0.38.8" + } + }, + "@volar/source-map": { + "version": "0.38.8", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-0.38.8.tgz", + "integrity": "sha512-JZvpjW/z2U3wq5wvwcTounPrRAZuSl4hlVKr3y7y72bKr++6W05OnX7fl/ddw39G/wLHdI2ag5+4JWsSd/EYhg==", + "dev": true + }, + "@volar/vue-code-gen": { + "version": "0.38.8", + "resolved": "https://registry.npmjs.org/@volar/vue-code-gen/-/vue-code-gen-0.38.8.tgz", + "integrity": "sha512-iQVNmIu1TqnqTko+l9yeylmZipZ8zNH20XZAK9+48hkv2fEQnnJn5AI2W9Zb2M5DkGMpbYiJk9Fq1vm51YY1+g==", + "dev": true, + "requires": { + "@volar/code-gen": "0.38.8", + "@volar/source-map": "0.38.8", + "@vue/compiler-core": "^3.2.37", + "@vue/compiler-dom": "^3.2.37", + "@vue/shared": "^3.2.37" + } + }, + "@volar/vue-typescript": { + "version": "0.38.8", + "resolved": "https://registry.npmjs.org/@volar/vue-typescript/-/vue-typescript-0.38.8.tgz", + "integrity": "sha512-7WeFt5piz9I6FKw2cQQCWm+75MxS6xCOGm300iu+hJORlroN2dwWbwj97pQnDGbjQbftCRplUYf0GqmhcOsanQ==", + "dev": true, + "requires": { + "@volar/code-gen": "0.38.8", + "@volar/source-map": "0.38.8", + "@volar/vue-code-gen": "0.38.8", + "@vue/compiler-sfc": "^3.2.37", + "@vue/reactivity": "^3.2.37" + } + }, + "@vue/compiler-core": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.37.tgz", + "integrity": "sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg==", + "requires": { + "@babel/parser": "^7.16.4", + "@vue/shared": "3.2.37", + "estree-walker": "^2.0.2", + "source-map": "^0.6.1" + } + }, + "@vue/compiler-dom": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.37.tgz", + "integrity": "sha512-yxJLH167fucHKxaqXpYk7x8z7mMEnXOw3G2q62FTkmsvNxu4FQSu5+3UMb+L7fjKa26DEzhrmCxAgFLLIzVfqQ==", + "requires": { + "@vue/compiler-core": "3.2.37", + "@vue/shared": "3.2.37" + } + }, + "@vue/compiler-sfc": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.37.tgz", + "integrity": "sha512-+7i/2+9LYlpqDv+KTtWhOZH+pa8/HnX/905MdVmAcI/mPQOBwkHHIzrsEsucyOIZQYMkXUiTkmZq5am/NyXKkg==", + "requires": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.37", + "@vue/compiler-dom": "3.2.37", + "@vue/compiler-ssr": "3.2.37", + "@vue/reactivity-transform": "3.2.37", + "@vue/shared": "3.2.37", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7", + "postcss": "^8.1.10", + "source-map": "^0.6.1" + } + }, + "@vue/compiler-ssr": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.37.tgz", + "integrity": "sha512-7mQJD7HdXxQjktmsWp/J67lThEIcxLemz1Vb5I6rYJHR5vI+lON3nPGOH3ubmbvYGt8xEUaAr1j7/tIFWiEOqw==", + "requires": { + "@vue/compiler-dom": "3.2.37", + "@vue/shared": "3.2.37" + } + }, + "@vue/devtools-api": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.2.0.tgz", + "integrity": "sha512-pF1G4wky+hkifDiZSWn8xfuLOJI1ZXtuambpBEYaf7Xaf6zC/pM29rvAGpd3qaGXnr4BAXU1Pxz/VfvBGwexGA==" + }, + "@vue/eslint-config-prettier": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-prettier/-/eslint-config-prettier-7.0.0.tgz", + "integrity": "sha512-/CTc6ML3Wta1tCe1gUeO0EYnVXfo3nJXsIhZ8WJr3sov+cGASr6yuiibJTL6lmIBm7GobopToOuB3B6AWyV0Iw==", + "dev": true, + "requires": { + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-prettier": "^4.0.0" + } + }, + "@vue/eslint-config-typescript": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-11.0.0.tgz", + "integrity": "sha512-txuRzxnQVmtUvvy9UyWUy9sHWXNeRPGmSPqP53hRtaiUeCTAondI9Ho9GQYI/8/eWljYOST7iA4Aa8sANBkWaA==", + "dev": true, + "requires": { + "@typescript-eslint/eslint-plugin": "^5.0.0", + "@typescript-eslint/parser": "^5.0.0", + "vue-eslint-parser": "^9.0.0" + } + }, + "@vue/reactivity": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.37.tgz", + "integrity": "sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==", + "requires": { + "@vue/shared": "3.2.37" + } + }, + "@vue/reactivity-transform": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.37.tgz", + "integrity": "sha512-IWopkKEb+8qpu/1eMKVeXrK0NLw9HicGviJzhJDEyfxTR9e1WtpnnbYkJWurX6WwoFP0sz10xQg8yL8lgskAZg==", + "requires": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.37", + "@vue/shared": "3.2.37", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7" + } + }, + "@vue/runtime-core": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.37.tgz", + "integrity": "sha512-JPcd9kFyEdXLl/i0ClS7lwgcs0QpUAWj+SKX2ZC3ANKi1U4DOtiEr6cRqFXsPwY5u1L9fAjkinIdB8Rz3FoYNQ==", + "requires": { + "@vue/reactivity": "3.2.37", + "@vue/shared": "3.2.37" + } + }, + "@vue/runtime-dom": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.37.tgz", + "integrity": "sha512-HimKdh9BepShW6YozwRKAYjYQWg9mQn63RGEiSswMbW+ssIht1MILYlVGkAGGQbkhSh31PCdoUcfiu4apXJoPw==", + "requires": { + "@vue/runtime-core": "3.2.37", + "@vue/shared": "3.2.37", + "csstype": "^2.6.8" + } + }, + "@vue/server-renderer": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.37.tgz", + "integrity": "sha512-kLITEJvaYgZQ2h47hIzPh2K3jG8c1zCVbp/o/bzQOyvzaKiCquKS7AaioPI28GNxIsE/zSx+EwWYsNxDCX95MA==", + "requires": { + "@vue/compiler-ssr": "3.2.37", + "@vue/shared": "3.2.37" + } + }, + "@vue/shared": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.37.tgz", + "integrity": "sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw==" + }, + "@vue/tsconfig": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.1.3.tgz", + "integrity": "sha512-kQVsh8yyWPvHpb8gIc9l/HIDiiVUy1amynLNpCy8p+FoCiZXCo6fQos5/097MmnNZc9AtseDsCrfkhqCrJ8Olg==", + "dev": true, + "requires": {} + }, + "@vuestic/ag-grid-theme": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@vuestic/ag-grid-theme/-/ag-grid-theme-1.0.3.tgz", + "integrity": "sha512-SPvrui4+NdkST8rm2vErpFa3xBRApdhtOrYcJYLgeTPOhwwX9/HQsMyCq+ds1zdoo7/EZk8Gfb3pJzxXA60UzA==", + "requires": { + "@ag-grid-community/client-side-row-model": "^26.1.0", + "@ag-grid-community/core": "^26.1.0", + "@ag-grid-community/vue3": "^26.1.0", + "vue-class-component": "^8.0.0-rc.1" + } + }, + "@webassemblyjs/ast": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.5.tgz", + "integrity": "sha512-LHY/GSAZZRpsNQH+/oHqhRQ5FT7eoULcBqgfyTB5nQHogFnK3/7QoN7dLnwSE/JkUAF0SrRuclT7ODqMFtWxxQ==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.11.5", + "@webassemblyjs/helper-wasm-bytecode": "1.11.5" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.5.tgz", + "integrity": "sha512-1j1zTIC5EZOtCplMBG/IEwLtUojtwFVwdyVMbL/hwWqbzlQoJsWCOavrdnLkemwNoC/EOwtUFch3fuo+cbcXYQ==", + "dev": true, + "peer": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.5.tgz", + "integrity": "sha512-L65bDPmfpY0+yFrsgz8b6LhXmbbs38OnwDCf6NpnMUYqa+ENfE5Dq9E42ny0qz/PdR0LJyq/T5YijPnU8AXEpA==", + "dev": true, + "peer": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.5.tgz", + "integrity": "sha512-fDKo1gstwFFSfacIeH5KfwzjykIE6ldh1iH9Y/8YkAZrhmu4TctqYjSh7t0K2VyDSXOZJ1MLhht/k9IvYGcIxg==", + "dev": true, + "peer": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.5.tgz", + "integrity": "sha512-DhykHXM0ZABqfIGYNv93A5KKDw/+ywBFnuWybZZWcuzWHfbp21wUfRkbtz7dMGwGgT4iXjWuhRMA2Mzod6W4WA==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.5", + "@webassemblyjs/helper-api-error": "1.11.5", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.5.tgz", + "integrity": "sha512-oC4Qa0bNcqnjAowFn7MPCETQgDYytpsfvz4ujZz63Zu/a/v71HeCAAmZsgZ3YVKec3zSPYytG3/PrRCqbtcAvA==", + "dev": true, + "peer": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.5.tgz", + "integrity": "sha512-uEoThA1LN2NA+K3B9wDo3yKlBfVtC6rh0i4/6hvbz071E8gTNZD/pT0MsBf7MeD6KbApMSkaAK0XeKyOZC7CIA==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/helper-buffer": "1.11.5", + "@webassemblyjs/helper-wasm-bytecode": "1.11.5", + "@webassemblyjs/wasm-gen": "1.11.5" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.5.tgz", + "integrity": "sha512-37aGq6qVL8A8oPbPrSGMBcp38YZFXcHfiROflJn9jxSdSMMM5dS5P/9e2/TpaJuhE+wFrbukN2WI6Hw9MH5acg==", + "dev": true, + "peer": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.5.tgz", + "integrity": "sha512-ajqrRSXaTJoPW+xmkfYN6l8VIeNnR4vBOTQO9HzR7IygoCcKWkICbKFbVTNMjMgMREqXEr0+2M6zukzM47ZUfQ==", + "dev": true, + "peer": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.5.tgz", + "integrity": "sha512-WiOhulHKTZU5UPlRl53gHR8OxdGsSOxqfpqWeA2FmcwBMaoEdz6b2x2si3IwC9/fSPLfe8pBMRTHVMk5nlwnFQ==", + "dev": true, + "peer": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.5.tgz", + "integrity": "sha512-C0p9D2fAu3Twwqvygvf42iGCQ4av8MFBLiTb+08SZ4cEdwzWx9QeAHDo1E2k+9s/0w1DM40oflJOpkZ8jW4HCQ==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/helper-buffer": "1.11.5", + "@webassemblyjs/helper-wasm-bytecode": "1.11.5", + "@webassemblyjs/helper-wasm-section": "1.11.5", + "@webassemblyjs/wasm-gen": "1.11.5", + "@webassemblyjs/wasm-opt": "1.11.5", + "@webassemblyjs/wasm-parser": "1.11.5", + "@webassemblyjs/wast-printer": "1.11.5" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.5.tgz", + "integrity": "sha512-14vteRlRjxLK9eSyYFvw1K8Vv+iPdZU0Aebk3j6oB8TQiQYuO6hj9s4d7qf6f2HJr2khzvNldAFG13CgdkAIfA==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/helper-wasm-bytecode": "1.11.5", + "@webassemblyjs/ieee754": "1.11.5", + "@webassemblyjs/leb128": "1.11.5", + "@webassemblyjs/utf8": "1.11.5" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.5.tgz", + "integrity": "sha512-tcKwlIXstBQgbKy1MlbDMlXaxpucn42eb17H29rawYLxm5+MsEmgPzeCP8B1Cl69hCice8LeKgZpRUAPtqYPgw==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/helper-buffer": "1.11.5", + "@webassemblyjs/wasm-gen": "1.11.5", + "@webassemblyjs/wasm-parser": "1.11.5" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.5.tgz", + "integrity": "sha512-SVXUIwsLQlc8srSD7jejsfTU83g7pIGr2YYNb9oHdtldSxaOhvA5xwvIiWIfcX8PlSakgqMXsLpLfbbJ4cBYew==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/helper-api-error": "1.11.5", + "@webassemblyjs/helper-wasm-bytecode": "1.11.5", + "@webassemblyjs/ieee754": "1.11.5", + "@webassemblyjs/leb128": "1.11.5", + "@webassemblyjs/utf8": "1.11.5" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.5.tgz", + "integrity": "sha512-f7Pq3wvg3GSPUPzR0F6bmI89Hdb+u9WXrSKc4v+N0aV0q6r42WoF92Jp2jEorBEBRoRNXgjp53nBniDXcqZYPA==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.11.5", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, + "peer": 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, + "peer": 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, + "peer": 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-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, + "peer": 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==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "apexcharts": { + "version": "3.40.0", + "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-3.40.0.tgz", + "integrity": "sha512-dSi3BUfCJkFd67uFp+xffrJVd3lDT7AAUUyRp0qPYiglJ76CeZLddVhM3FAk1P9GCzf8VewqGYUPCYQvXm+b9A==", + "peer": true, + "requires": { + "svg.draggable.js": "^2.2.2", + "svg.easing.js": "^2.0.0", + "svg.filter.js": "^2.0.2", + "svg.pathmorphing.js": "^0.1.3", + "svg.resize.js": "^1.4.3", + "svg.select.js": "^3.0.1" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "requires": { + "lodash": "^4.17.14" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "requires": { + "follow-redirects": "^1.14.9", + "form-data": "^4.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 + }, + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "requires": { + "safe-buffer": "5.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.2.tgz", + "integrity": "sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA==", + "dev": true, + "peer": true, + "requires": { + "caniuse-lite": "^1.0.30001366", + "electron-to-chromium": "^1.4.188", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.4" + } + }, + "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, + "peer": true + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "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-lite": { + "version": "1.0.30001370", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001370.tgz", + "integrity": "sha512-3PDmaP56wz/qz7G508xzjx8C+MC2qEm4SYhSEzC9IBROo+dGXFWRuaXkWti0A9tuI00g+toiriVqxtWMgl350g==", + "dev": true, + "peer": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chart.js": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.3.0.tgz", + "integrity": "sha512-ynG0E79xGfMaV2xAHdbhwiPLczxnNNnasrmPEXriXsPJGjmhOBYzFVEsB65w2qMDz+CaBJJuJD0inE/ab/h36g==", + "requires": { + "@kurkle/color": "^0.3.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, + "peer": true + }, + "cleave.js": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/cleave.js/-/cleave.js-1.6.0.tgz", + "integrity": "sha512-ivqesy3j5hQVG3gywPfwKPbi/7ZSftY/UNp5uphnqjr25yI2CP8FS2ODQPzuLXXnNLi29e2+PgPkkiKUXLs/Nw==" + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "colortranslator": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/colortranslator/-/colortranslator-1.9.2.tgz", + "integrity": "sha512-Hr1qCLwL/5gbGhcRwfhl1+JbvHmybTGbecpbhyzn3IyizgYFxMpLpX8OGhAcvSPB0+K2bwrAcFIbeF60wqOJLg==" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "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, + "peer": true + }, + "common-js": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/common-js/-/common-js-0.3.8.tgz", + "integrity": "sha512-83poCK3wlRnYqWdolJiYrMYvaBFzlDO1RwQVti2ZDBR2K5ifBGksu2cw3ZKFioEqB8FVLUmuu3OXxFUlSBk5UQ==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "core-js": { + "version": "3.23.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.23.3.tgz", + "integrity": "sha512-oAKwkj9xcWNBAvGbT//WiCdOMpb9XQG92/Fe3ABFM/R16BsHgePG00mFOgKf7IsCtfj8tA1kHtf/VwErhriz5Q==" + }, + "corser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", + "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==" + }, + "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" + } + }, + "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 + }, + "csstype": { + "version": "2.6.20", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz", + "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==" + }, + "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" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "diff-sequences": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", + "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "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" + } + }, + "electron-to-chromium": { + "version": "1.4.200", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.200.tgz", + "integrity": "sha512-nPyI7oHc8T64oSqRXrAt99gNMpk0SAgPHw/o+hkNKyb5+bcdnFtZcSO9FUJES5cVkVZvo8u4qiZ1gQILl8UXsA==", + "dev": true, + "peer": true + }, + "enhanced-resolve": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.13.0.tgz", + "integrity": "sha512-eyV8f0y1+bzyfh8xAwW/WTSZpLbjhqc4ne9eGSH4Zo2ejdyiNG9pU6mf9DG8a7+Auk6MFTlNOT4Y2y/9k8GKVg==", + "dev": true, + "peer": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "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": "1.2.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", + "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==", + "dev": true, + "peer": true + }, + "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" + } + }, + "esbuild": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.49.tgz", + "integrity": "sha512-/TlVHhOaq7Yz8N1OJrjqM3Auzo5wjvHFLk+T8pIue+fhnhIMpfAzsG6PLVMbFveVxqD2WOp3QHei+52IMUNmCw==", + "dev": true, + "requires": { + "esbuild-android-64": "0.14.49", + "esbuild-android-arm64": "0.14.49", + "esbuild-darwin-64": "0.14.49", + "esbuild-darwin-arm64": "0.14.49", + "esbuild-freebsd-64": "0.14.49", + "esbuild-freebsd-arm64": "0.14.49", + "esbuild-linux-32": "0.14.49", + "esbuild-linux-64": "0.14.49", + "esbuild-linux-arm": "0.14.49", + "esbuild-linux-arm64": "0.14.49", + "esbuild-linux-mips64le": "0.14.49", + "esbuild-linux-ppc64le": "0.14.49", + "esbuild-linux-riscv64": "0.14.49", + "esbuild-linux-s390x": "0.14.49", + "esbuild-netbsd-64": "0.14.49", + "esbuild-openbsd-64": "0.14.49", + "esbuild-sunos-64": "0.14.49", + "esbuild-windows-32": "0.14.49", + "esbuild-windows-64": "0.14.49", + "esbuild-windows-arm64": "0.14.49" + } + }, + "esbuild-android-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.49.tgz", + "integrity": "sha512-vYsdOTD+yi+kquhBiFWl3tyxnj2qZJsl4tAqwhT90ktUdnyTizgle7TjNx6Ar1bN7wcwWqZ9QInfdk2WVagSww==", + "dev": true, + "optional": true + }, + "esbuild-android-arm64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.49.tgz", + "integrity": "sha512-g2HGr/hjOXCgSsvQZ1nK4nW/ei8JUx04Li74qub9qWrStlysaVmadRyTVuW32FGIpLQyc5sUjjZopj49eGGM2g==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.49.tgz", + "integrity": "sha512-3rvqnBCtX9ywso5fCHixt2GBCUsogNp9DjGmvbBohh31Ces34BVzFltMSxJpacNki96+WIcX5s/vum+ckXiLYg==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.49.tgz", + "integrity": "sha512-XMaqDxO846srnGlUSJnwbijV29MTKUATmOLyQSfswbK/2X5Uv28M9tTLUJcKKxzoo9lnkYPsx2o8EJcTYwCs/A==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.49.tgz", + "integrity": "sha512-NJ5Q6AjV879mOHFri+5lZLTp5XsO2hQ+KSJYLbfY9DgCu8s6/Zl2prWXVANYTeCDLlrIlNNYw8y34xqyLDKOmQ==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.49.tgz", + "integrity": "sha512-lFLtgXnAc3eXYqj5koPlBZvEbBSOSUbWO3gyY/0+4lBdRqELyz4bAuamHvmvHW5swJYL7kngzIZw6kdu25KGOA==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.49.tgz", + "integrity": "sha512-zTTH4gr2Kb8u4QcOpTDVn7Z8q7QEIvFl/+vHrI3cF6XOJS7iEI1FWslTo3uofB2+mn6sIJEQD9PrNZKoAAMDiA==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.49.tgz", + "integrity": "sha512-hYmzRIDzFfLrB5c1SknkxzM8LdEUOusp6M2TnuQZJLRtxTgyPnZZVtyMeCLki0wKgYPXkFsAVhi8vzo2mBNeTg==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.49.tgz", + "integrity": "sha512-iE3e+ZVv1Qz1Sy0gifIsarJMQ89Rpm9mtLSRtG3AH0FPgAzQ5Z5oU6vYzhc/3gSPi2UxdCOfRhw2onXuFw/0lg==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.49.tgz", + "integrity": "sha512-KLQ+WpeuY+7bxukxLz5VgkAAVQxUv67Ft4DmHIPIW+2w3ObBPQhqNoeQUHxopoW/aiOn3m99NSmSV+bs4BSsdA==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.49.tgz", + "integrity": "sha512-n+rGODfm8RSum5pFIqFQVQpYBw+AztL8s6o9kfx7tjfK0yIGF6tm5HlG6aRjodiiKkH2xAiIM+U4xtQVZYU4rA==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.49.tgz", + "integrity": "sha512-WP9zR4HX6iCBmMFH+XHHng2LmdoIeUmBpL4aL2TR8ruzXyT4dWrJ5BSbT8iNo6THN8lod6GOmYDLq/dgZLalGw==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.49.tgz", + "integrity": "sha512-h66ORBz+Dg+1KgLvzTVQEA1LX4XBd1SK0Fgbhhw4akpG/YkN8pS6OzYI/7SGENiN6ao5hETRDSkVcvU9NRtkMQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.49.tgz", + "integrity": "sha512-DhrUoFVWD+XmKO1y7e4kNCqQHPs6twz6VV6Uezl/XHYGzM60rBewBF5jlZjG0nCk5W/Xy6y1xWeopkrhFFM0sQ==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.49.tgz", + "integrity": "sha512-BXaUwFOfCy2T+hABtiPUIpWjAeWK9P8O41gR4Pg73hpzoygVGnj0nI3YK4SJhe52ELgtdgWP/ckIkbn2XaTxjQ==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.49.tgz", + "integrity": "sha512-lP06UQeLDGmVPw9Rg437Btu6J9/BmyhdoefnQ4gDEJTtJvKtQaUcOQrhjTq455ouZN4EHFH1h28WOJVANK41kA==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.49.tgz", + "integrity": "sha512-4c8Zowp+V3zIWje329BeLbGh6XI9c/rqARNaj5yPHdC61pHI9UNdDxT3rePPJeWcEZVKjkiAS6AP6kiITp7FSw==", + "dev": true, + "optional": true + }, + "esbuild-windows-32": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.49.tgz", + "integrity": "sha512-q7Rb+J9yHTeKr9QTPDYkqfkEj8/kcKz9lOabDuvEXpXuIcosWCJgo5Z7h/L4r7rbtTH4a8U2FGKb6s1eeOHmJA==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.49.tgz", + "integrity": "sha512-+Cme7Ongv0UIUTniPqfTX6mJ8Deo7VXw9xN0yJEN1lQMHDppTNmKwAM3oGbD/Vqff+07K2gN0WfNkMohmG+dVw==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.49.tgz", + "integrity": "sha512-v+HYNAXzuANrCbbLFJ5nmO3m5y2PGZWLe3uloAkLt87aXiO2mZr3BTmacZdjwNkNEHuH3bNtN8cak+mzVjVPfA==", + "dev": true, + "optional": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "peer": 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.19.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.19.0.tgz", + "integrity": "sha512-SXOPj3x9VKvPe81TjjUJCYlV4oJjQw68Uek+AM0X4p+33dj2HY5bpTZOgnQHcG2eAm1mtCU9uNMnJi7exU/kYw==", + "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" + }, + "dependencies": { + "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" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "requires": {} + }, + "eslint-plugin-prettier": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, + "eslint-plugin-vue": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.2.0.tgz", + "integrity": "sha512-W2hc+NUXoce8sZtWgZ45miQTy6jNyuSdub5aZ1IBune4JDeAyzucYX0TzkrQ1jMO52sNUDYlCIHDoaNePe0p5g==", + "dev": true, + "requires": { + "eslint-utils": "^3.0.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.0.1", + "postcss-selector-parser": "^6.0.9", + "semver": "^7.3.5", + "vue-eslint-parser": "^9.0.1", + "xml-name-validator": "^4.0.0" + } + }, + "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" + } + }, + "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" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "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" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "peer": 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-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "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 + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "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" + } + }, + "file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", + "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", + "dev": true + }, + "follow-redirects": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==" + }, + "font-awesome": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", + "integrity": "sha512-U6kGnykA/6bFmg1M/oT9EkFeIYv7JlX3bozwQJWiiLz6L0w3F5vBVPxHlwyX/vtNq1ckcpRKOB9f2Qal/VtFpg==" + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "fortawesome": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/fortawesome/-/fortawesome-0.0.1-security.tgz", + "integrity": "sha512-o/pwn9ZSnveFLYP0d5IejSwz0rpGMDQsBaYVvR8WXSvnxILIwh7IUJK0P90QMF4cnIyouVF2BGrz0LEVSyzimA==" + }, + "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==" + }, + "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==", + "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, + "peer": 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" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "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==", + "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==" + }, + "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==" + }, + "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" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "requires": { + "whatwg-encoding": "^2.0.0" + } + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-server": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", + "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", + "requires": { + "basic-auth": "^2.0.1", + "chalk": "^4.1.2", + "corser": "^2.0.1", + "he": "^1.2.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy": "^1.18.1", + "mime": "^1.6.0", + "minimist": "^1.2.6", + "opener": "^1.5.1", + "portfinder": "^1.0.28", + "secure-compare": "3.0.1", + "union": "~0.5.0", + "url-join": "^4.0.1" + } + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "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.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "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" + } + }, + "ionicons": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-4.6.3.tgz", + "integrity": "sha512-cgP+VIr2cTJpMfFyVHTerq6n2jeoiGboVoe3GlaAo5zoSBDAEXORwUZhv6m+lCyxlsHCS3nqPUE+MKyZU71t8Q==" + }, + "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-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 + }, + "jest-diff": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.1.tgz", + "integrity": "sha512-/MUUxeR2fHbqHoMMiffe/Afm+U8U4olFRJ0hiVG2lZatPJcnGxx292ustVu7bULhjV65IYMxRdploAKLbcrsyg==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^28.1.1", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.1" + } + }, + "jest-get-type": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", + "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", + "dev": true + }, + "jest-matcher-utils": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.1.tgz", + "integrity": "sha512-NPJPRWrbmR2nAJ+1nmnfcKKzSwgfaciCCrYZzVnNoxVoyusYWIjkBMNvu0RHJe7dNj4hH3uZOPZsQA+xAYWqsw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^28.1.1", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.1" + } + }, + "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, + "peer": 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, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "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-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "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, + "peer": 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 + }, + "klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "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" + } + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "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, + "peer": true + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "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.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==" + }, + "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" + } + }, + "magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "material-icons": { + "version": "1.11.4", + "resolved": "https://registry.npmjs.org/material-icons/-/material-icons-1.11.4.tgz", + "integrity": "sha512-si/VqvWo6LNINE0aemZlWulV5E7NJKmWOOD8rMoDyFTTF3bUzs6bkRZJAKWa5j/VnGMhdoNB1kyMm537lh4SYA==" + }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "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, + "peer": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "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==", + "requires": { + "mime-db": "1.52.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.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "requires": { + "minimist": "^1.2.6" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" + }, + "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 + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-releases": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "dev": true, + "peer": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "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.css": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz", + "integrity": "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==" + }, + "npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.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 + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "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 + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "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" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "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==" + }, + "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" + } + }, + "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" + } + }, + "opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==" + }, + "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" + } + }, + "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": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "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==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + }, + "portfinder": { + "version": "1.0.32", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", + "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", + "requires": { + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "postcss": { + "version": "8.4.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", + "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "requires": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "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 + }, + "prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "dev": true + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, + "pretty-format": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.1.tgz", + "integrity": "sha512-wwJbVTGFHeucr5Jw2bQ9P+VYHyLdAqedFLEkdQUVaBF/eiidDwH5OpilINq4mEfhbCjLnirt6HTTDhv1HaTIQw==", + "dev": true, + "requires": { + "@jest/schemas": "^28.0.2", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "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 + }, + "qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "peer": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "dependencies": { + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.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" + } + }, + "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 + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, + "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-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 + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "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" + } + }, + "rollup": { + "version": "2.77.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.77.0.tgz", + "integrity": "sha512-vL8xjY4yOQEw79DvyXLijhnhh+R/O9zpF/LEgkCebZFtb6ELeN9H3/2T0r8+mp+fFTBHZ5qGpOpW2ela2zRt3g==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "peer": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sass": { + "version": "1.53.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.53.0.tgz", + "integrity": "sha512-zb/oMirbKhUgRQ0/GFz8TSAwRq2IlR29vOUJZOx0l8sV+CkHUfHa4u5nqrG+1VceZp7Jfj59SVW9ogdhTvJDcQ==", + "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.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.0.2.tgz", + "integrity": "sha512-BbiqbVmbfJaWVeOOAu2o7DhYWtcNmTfvroVgFXa6k2hHheMxNAeDHLNoDy/Q5aoaVlz0LH+MbMktKwm9vN/j8Q==", + "dev": true, + "requires": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + } + }, + "schema-utils": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", + "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==", + "dev": true, + "peer": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "secure-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", + "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==" + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dev": true, + "peer": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "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 + }, + "shell-quote": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", + "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==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + }, + "source-map-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, + "peer": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "dev": true + }, + "string.prototype.padend": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz", + "integrity": "sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "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 + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "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 + }, + "svg.draggable.js": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/svg.draggable.js/-/svg.draggable.js-2.2.2.tgz", + "integrity": "sha512-JzNHBc2fLQMzYCZ90KZHN2ohXL0BQJGQimK1kGk6AvSeibuKcIdDX9Kr0dT9+UJ5O8nYA0RB839Lhvk4CY4MZw==", + "peer": true, + "requires": { + "svg.js": "^2.0.1" + } + }, + "svg.easing.js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/svg.easing.js/-/svg.easing.js-2.0.0.tgz", + "integrity": "sha512-//ctPdJMGy22YoYGV+3HEfHbm6/69LJUTAqI2/5qBvaNHZ9uUFVC82B0Pl299HzgH13rKrBgi4+XyXXyVWWthA==", + "peer": true, + "requires": { + "svg.js": ">=2.3.x" + } + }, + "svg.filter.js": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/svg.filter.js/-/svg.filter.js-2.0.2.tgz", + "integrity": "sha512-xkGBwU+dKBzqg5PtilaTb0EYPqPfJ9Q6saVldX+5vCRy31P6TlRCP3U9NxH3HEufkKkpNgdTLBJnmhDHeTqAkw==", + "peer": true, + "requires": { + "svg.js": "^2.2.5" + } + }, + "svg.js": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/svg.js/-/svg.js-2.7.1.tgz", + "integrity": "sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA==", + "peer": true + }, + "svg.pathmorphing.js": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/svg.pathmorphing.js/-/svg.pathmorphing.js-0.1.3.tgz", + "integrity": "sha512-49HWI9X4XQR/JG1qXkSDV8xViuTLIWm/B/7YuQELV5KMOPtXjiwH4XPJvr/ghEDibmLQ9Oc22dpWpG0vUDDNww==", + "peer": true, + "requires": { + "svg.js": "^2.4.0" + } + }, + "svg.resize.js": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/svg.resize.js/-/svg.resize.js-1.4.3.tgz", + "integrity": "sha512-9k5sXJuPKp+mVzXNvxz7U0uC9oVMQrrf7cFsETznzUDDm0x8+77dtZkWdMfRlmbkEEYvUn9btKuZ3n41oNA+uw==", + "peer": true, + "requires": { + "svg.js": "^2.6.5", + "svg.select.js": "^2.1.2" + }, + "dependencies": { + "svg.select.js": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-2.1.2.tgz", + "integrity": "sha512-tH6ABEyJsAOVAhwcCjF8mw4crjXSI1aa7j2VQR8ZuJ37H2MBUbyeqYr5nEO7sSN3cy9AR9DUwNg0t/962HlDbQ==", + "peer": true, + "requires": { + "svg.js": "^2.2.5" + } + } + } + }, + "svg.select.js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-3.0.1.tgz", + "integrity": "sha512-h5IS/hKkuVCbKSieR9uQCj9w+zLHoPh+ce19bBYyqF53g6mnPB8sAtIbe1s9dh2S2fCmYX2xel1Ln3PJBbK4kw==", + "peer": true, + "requires": { + "svg.js": "^2.6.5" + } + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "peer": true + }, + "terser": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.1.tgz", + "integrity": "sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw==", + "dev": true, + "peer": 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.7", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz", + "integrity": "sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==", + "dev": true, + "peer": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.5" + } + }, + "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" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "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 + }, + "typescript": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", + "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", + "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" + } + }, + "union": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", + "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", + "requires": { + "qs": "^6.4.0" + } + }, + "update-browserslist-db": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", + "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", + "dev": true, + "peer": 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" + } + }, + "url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==" + }, + "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 + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vite": { + "version": "2.9.14", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.14.tgz", + "integrity": "sha512-P/UCjSpSMcE54r4mPak55hWAZPlyfS369svib/gpmz8/01L822lMPOJ/RYW6tLCe1RPvMvOsJ17erf55bKp4Hw==", + "dev": true, + "requires": { + "esbuild": "^0.14.27", + "fsevents": "~2.3.2", + "postcss": "^8.4.13", + "resolve": "^1.22.0", + "rollup": "^2.59.0" + } + }, + "vue": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.37.tgz", + "integrity": "sha512-bOKEZxrm8Eh+fveCqS1/NkG/n6aMidsI6hahas7pa0w/l7jkbssJVsRhVDs07IdDq7h9KHswZOgItnwJAgtVtQ==", + "requires": { + "@vue/compiler-dom": "3.2.37", + "@vue/compiler-sfc": "3.2.37", + "@vue/runtime-dom": "3.2.37", + "@vue/server-renderer": "3.2.37", + "@vue/shared": "3.2.37" + } + }, + "vue-apexcharts": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/vue-apexcharts/-/vue-apexcharts-1.6.2.tgz", + "integrity": "sha512-9HS3scJwWgKjmkcWIf+ndNDR0WytUJD8Ju0V2ZYcjYtlTLwJAf2SKUlBZaQTkDmwje/zMgulvZRi+MXmi+WkKw==", + "requires": {} + }, + "vue-chartjs": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/vue-chartjs/-/vue-chartjs-5.2.0.tgz", + "integrity": "sha512-d3zpKmGZr2OWHQ1xmxBcAn5ShTG917+/UCLaSpaCDDqT0U7DBsvFzTs69ZnHCgKoXT55GZDW8YEj9Av+dlONLA==", + "requires": {} + }, + "vue-class-component": { + "version": "8.0.0-rc.1", + "resolved": "https://registry.npmjs.org/vue-class-component/-/vue-class-component-8.0.0-rc.1.tgz", + "integrity": "sha512-w1nMzsT/UdbDAXKqhwTmSoyuJzUXKrxLE77PCFVuC6syr8acdFDAq116xgvZh9UCuV0h+rlCtxXolr3Hi3HyPQ==", + "requires": {} + }, + "vue-eslint-parser": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.0.3.tgz", + "integrity": "sha512-yL+ZDb+9T0ELG4VIFo/2anAOz8SvBdlqEnQnvJ3M7Scq56DvtjY0VY88bByRZB0D4J0u8olBcfrXTVONXsh4og==", + "dev": true, + "requires": { + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.6" + }, + "dependencies": { + "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" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "vue-fontawesome": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/vue-fontawesome/-/vue-fontawesome-0.0.2.tgz", + "integrity": "sha512-uI3RzoPuoD5OGEBRPovi+tMN++3raHmpxCgeT8XexCnecbS4myb0YMSmP4ifser6n+abwwGZftuf40cP3GTDrw==", + "requires": { + "font-awesome": "^4.7.0", + "vue": "^2.1.8" + }, + "dependencies": { + "@vue/compiler-sfc": { + "version": "2.7.14", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz", + "integrity": "sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==", + "requires": { + "@babel/parser": "^7.18.4", + "postcss": "^8.4.14", + "source-map": "^0.6.1" + } + }, + "csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "vue": { + "version": "2.7.14", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.14.tgz", + "integrity": "sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ==", + "requires": { + "@vue/compiler-sfc": "2.7.14", + "csstype": "^3.1.0" + } + } + } + }, + "vue-i18n": { + "version": "9.1.10", + "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.1.10.tgz", + "integrity": "sha512-jpr7gV5KPk4n+sSPdpZT8Qx3XzTcNDWffRlHV/cT2NUyEf+sEgTTmLvnBAibjOFJ0zsUyZlVTAWH5DDnYep+1g==", + "requires": { + "@intlify/core-base": "9.1.10", + "@intlify/shared": "9.1.10", + "@intlify/vue-devtools": "9.1.10", + "@vue/devtools-api": "^6.0.0-beta.7" + } + }, + "vue-router": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.1.1.tgz", + "integrity": "sha512-Wp1mEf2xCwT0ez7o9JvgpfBp9JGnVb+dPERzXDbugTatzJAJ60VWOhJKifQty85k+jOreoFHER4r5fu062PhPw==", + "requires": { + "@vue/devtools-api": "^6.1.4" + } + }, + "vue-tsc": { + "version": "0.38.8", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-0.38.8.tgz", + "integrity": "sha512-hhyc5SODiekcYNXG08aNg17LogR19o3i14avVejo+Fm45Dqk9Ke6rb0M19HoTKdQGfZBgqg2VUboYxmtAukWeg==", + "dev": true, + "requires": { + "@volar/vue-typescript": "0.38.8" + } + }, + "vue3-apexcharts": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/vue3-apexcharts/-/vue3-apexcharts-1.4.1.tgz", + "integrity": "sha512-96qP8JDqB9vwU7bkG5nVU+E0UGQn7yYQVqUUCLQMYWDuQyu2vE77H/UFZ1yI+hwzlSTBKT9BqnNG8JsFegB3eg==", + "requires": {} + }, + "vuestic-ui": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/vuestic-ui/-/vuestic-ui-1.4.6.tgz", + "integrity": "sha512-dWl+bKHh8jl2jhljUyNrP0wan4lm8Pj9LS6CAO3A30HHEb58pLbyd3I3SUIBtCXB2584WODn9yAEwkAEFOnY0Q==", + "requires": { + "cleave.js": "^1.6.0", + "colortranslator": "^1.9.2", + "lodash": "^4.17.21", + "normalize.css": "^8.0.1" + } + }, + "vuex": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-4.0.2.tgz", + "integrity": "sha512-M6r8uxELjZIK8kTKDGgZTYX/ahzblnzC4isU1tpmEuOIIKmV+TRdc+H4s8ds2NuZ7wpUTdGRzJRtoj+lI+pc0Q==", + "requires": { + "@vue/devtools-api": "^6.0.0-beta.11" + } + }, + "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, + "peer": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "webpack": { + "version": "5.81.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.81.0.tgz", + "integrity": "sha512-AAjaJ9S4hYCVODKLQTgG5p5e11hiMawBwV2v8MYLE0C/6UAGLuAF4n1qa9GOwdxnicaP+5k6M5HrLmD4+gIB8Q==", + "dev": true, + "peer": true, + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.13.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.2", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + } + }, + "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, + "peer": true + }, + "whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "requires": { + "iconv-lite": "0.6.3" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } +} diff --git a/frontend/package.json b/frontend/package.json new file mode 100644 index 0000000..c862ba5 --- /dev/null +++ b/frontend/package.json @@ -0,0 +1,58 @@ +{ + "name": "dashboard_frontend", + "version": "1.0.0", + "scripts": { + "dev": "vite", + "build": "run-p type-check build-only", + "preview": "vite preview --port 4173", + "build-only": "vite build", + "type-check": "vue-tsc --noEmit", + "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore" + }, + "dependencies": { + "@fontsource/source-sans-pro": "^4.5.10", + "@fortawesome/fontawesome-svg-core": "^6.4.0", + "@fortawesome/free-solid-svg-icons": "^6.4.0", + "@fortawesome/vue-fontawesome": "^3.0.3", + "@vuestic/ag-grid-theme": "^1.0.3", + "axios": "^0.27.2", + "chart.js": "^4.3.0", + "common-js": "^0.3.8", + "core-js": "^3.23.3", + "file-saver": "^2.0.5", + "font-awesome": "^4.7.0", + "fortawesome": "^0.0.1-security", + "http-server": "^14.1.1", + "ionicons": "^4.6.3", + "lodash.pick": "^4.4.0", + "material-icons": "^1.11.4", + "vue": "^3.2.37", + "vue-apexcharts": "^1.6.2", + "vue-chartjs": "^5.2.0", + "vue-fontawesome": "^0.0.2", + "vue-i18n": "^9.1.10", + "vue-router": "^4.0.16", + "vue3-apexcharts": "^1.4.1", + "vuestic-ui": "^1.4.6", + "vuex": "^4.0.2" + }, + "devDependencies": { + "@rushstack/eslint-patch": "^1.1.0", + "@types/file-saver": "^2.0.5", + "@types/jest": "^28.1.4", + "@types/node": "^16.11.47", + "@vitejs/plugin-vue": "^2.3.3", + "@vue/eslint-config-prettier": "^7.0.0", + "@vue/eslint-config-typescript": "^11.0.0", + "@vue/tsconfig": "^0.1.3", + "eslint": "^8.5.0", + "eslint-plugin-vue": "^9.0.0", + "npm-run-all": "^4.1.5", + "prettier": "^2.5.1", + "sass": "^1.53.0", + "sass-loader": "^13.0.2", + "typescript": "~4.7.4", + "vite": "^2.9.14", + "vue-tsc": "^0.38.8" + } +} diff --git a/frontend/public/favicon.ico b/frontend/public/favicon.ico new file mode 100644 index 0000000..df36fcf Binary files /dev/null and b/frontend/public/favicon.ico differ diff --git a/frontend/src/App.vue b/frontend/src/App.vue new file mode 100644 index 0000000..dfb4e48 --- /dev/null +++ b/frontend/src/App.vue @@ -0,0 +1,18 @@ + + + diff --git a/frontend/src/api/http-common.ts b/frontend/src/api/http-common.ts new file mode 100644 index 0000000..b8762c2 --- /dev/null +++ b/frontend/src/api/http-common.ts @@ -0,0 +1,9 @@ +import axios from "axios"; + +export default axios.create({ + baseURL: import.meta.env.VITE_BACKEND_URL, + headers: { + 'Access-Control-Allow-Origin': '*', + 'Content-type': 'application/json', +} +}); \ No newline at end of file diff --git a/frontend/src/api/report-service.ts b/frontend/src/api/report-service.ts new file mode 100644 index 0000000..f15ef97 --- /dev/null +++ b/frontend/src/api/report-service.ts @@ -0,0 +1,56 @@ +import axios from "axios"; +import http from "./http-common"; +class ReportsService { + async getLastFrame() { + const response = await http.get("/vmware/report/capacity/frames/?sort=id&page[limit]=200000") + return response?.data.data[response?.data.data.length - 1] + } + async getFrames(range:{start:Date, end:Date}) { + const response = await http.get("/vmware/report/capacity/frames/?page[limit]=200000") + response.data.data.forEach((element:any) => { + element.attributes.timestamp = new Date(element.attributes.timestamp) + }); + response.data.data = response.data.data.filter( + (item: any) => item.attributes.timestamp <= range.end && item.attributes.timestamp >= range.start + ); + return response?.data.data + } + async getTimestamp(name:string) { + const response = await http.get(`/common/timestamps/?filter[name]=${name}`) + return response?.data.data[0] + } + getLastVmWareCapacityReport(id:number) { + return http.get(`/vmware/report/capacity/?include=cluster,cluster.environment,cluster.maintenance,cluster.vcenter,cluster.vcenter.contour&filter[frame_id]=${id}`); + } + getMultipleVmWareCapacityReport(list:number[]) { + const urls = list.map((id: any) => `/vmware/report/capacity/?include=cluster,cluster.environment,cluster.maintenance,cluster.vcenter,cluster.vcenter.contour,frame&filter[frame_id]=${id}`) + const requests = urls.map((url: string) => http.get(url)); + + return axios.all(requests) + } + getVmWareCapacityReport() { + return http.get("/vmware/report/capacity/?include=cluster,cluster.environment,cluster.maintenance,cluster.vcenter,cluster.vcenter.contour&filter[frame_id]=1"); + } + getVmWareMaintenanceReport() { + return http.get("/vmware/report/maintenance/?include=vcenter,vcenter.contour&page[limit]=2000"); + } + getVmWareDatastoresReport() { + return http.get("/vmware/report/datastores/?include=cluster,cluster.environment,cluster.vcenter,cluster.vcenter.contour&page[limit]=200000"); + } + getVmWareSharedNetworksReport() { + return http.get("/vmware/report/sharedNetworks/?include=cluster,cluster.environment,cluster.vcenter,cluster.vcenter.contour&page[limit]=2000"); + } + getNutanixPrismCentralReport() { + return http.get("/nutanix/report/npcreport/?include=pcentral,pcentral.pelement,pcentral.contour&page[limit]=2000"); + } + getNutanixPrismElementReport() { + return http.get("/nutanix/report/npereport/?include=pelement,pelement.environment,pelement.maintenance,pelement.pcentral,pelement.pcentral.contour&page[limit]=2000"); + } + getNutanixMaintenanceReport() { + return http.get("/nutanix/report/nmreport/?include=pelement,pelement.environment,pelement.pcentral,pelement.pcentral.contour&page[limit]=2000"); + } + getNutanixDecomissionReport() { + return http.get("/nutanix/report/nureport/?include=npereport,npereport.pelement,npereport.pelement,npereport.pelement.environment,npereport.pelement.pcentral,npereport.pelement.pcentral.contour,npereport.pelement.maintenance&page[limit]=2000"); + } +} +export default new ReportsService(); \ No newline at end of file diff --git a/frontend/src/assets/base.css b/frontend/src/assets/base.css new file mode 100644 index 0000000..71dc55a --- /dev/null +++ b/frontend/src/assets/base.css @@ -0,0 +1,74 @@ +/* color palette from */ +:root { + --vt-c-white: #ffffff; + --vt-c-white-soft: #f8f8f8; + --vt-c-white-mute: #f2f2f2; + + --vt-c-black: #181818; + --vt-c-black-soft: #222222; + --vt-c-black-mute: #282828; + + --vt-c-indigo: #2c3e50; + + --vt-c-divider-light-1: rgba(60, 60, 60, 0.29); + --vt-c-divider-light-2: rgba(60, 60, 60, 0.12); + --vt-c-divider-dark-1: rgba(84, 84, 84, 0.65); + --vt-c-divider-dark-2: rgba(84, 84, 84, 0.48); + + --vt-c-text-light-1: var(--vt-c-indigo); + --vt-c-text-light-2: rgba(60, 60, 60, 0.66); + --vt-c-text-dark-1: var(--vt-c-white); + --vt-c-text-dark-2: rgba(235, 235, 235, 0.64); +} + +/* semantic color variables for this project */ +:root { + --color-background: var(--vt-c-white); + --color-background-soft: var(--vt-c-white-soft); + --color-background-mute: var(--vt-c-white-mute); + + --color-border: var(--vt-c-divider-light-2); + --color-border-hover: var(--vt-c-divider-light-1); + + --color-heading: var(--vt-c-text-light-1); + --color-text: var(--vt-c-text-light-1); + + --section-gap: 160px; +} + +@media (prefers-color-scheme: dark) { + :root { + --color-background: var(--vt-c-black); + --color-background-soft: var(--vt-c-black-soft); + --color-background-mute: var(--vt-c-black-mute); + + --color-border: var(--vt-c-divider-dark-2); + --color-border-hover: var(--vt-c-divider-dark-1); + + --color-heading: var(--vt-c-text-dark-1); + --color-text: var(--vt-c-text-dark-2); + } +} + +*, +*::before, +*::after { + box-sizing: border-box; + margin: 0; + position: relative; + font-weight: normal; +} + +body { + min-height: 100vh; + color: var(--color-text); + background: var(--color-background); + transition: color 0.5s, background-color 0.5s; + line-height: 1.6; + font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, + Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; + font-size: 15px; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} diff --git a/frontend/src/assets/logo.png b/frontend/src/assets/logo.png new file mode 100644 index 0000000..14f1c74 Binary files /dev/null and b/frontend/src/assets/logo.png differ diff --git a/frontend/src/assets/logo.svg b/frontend/src/assets/logo.svg new file mode 100644 index 0000000..a000ad1 --- /dev/null +++ b/frontend/src/assets/logo.svg @@ -0,0 +1 @@ +VTB Bank logo \ No newline at end of file diff --git a/frontend/src/components/expandingBlock/expandingBlock.vue b/frontend/src/components/expandingBlock/expandingBlock.vue new file mode 100644 index 0000000..01a053a --- /dev/null +++ b/frontend/src/components/expandingBlock/expandingBlock.vue @@ -0,0 +1,113 @@ + + + + + diff --git a/frontend/src/components/icons/VaIconMenu.vue b/frontend/src/components/icons/VaIconMenu.vue new file mode 100644 index 0000000..d3ace55 --- /dev/null +++ b/frontend/src/components/icons/VaIconMenu.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/frontend/src/components/icons/VaIconMenuCollapsed.vue b/frontend/src/components/icons/VaIconMenuCollapsed.vue new file mode 100644 index 0000000..c70efdb --- /dev/null +++ b/frontend/src/components/icons/VaIconMenuCollapsed.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/frontend/src/components/navbar/Navbar.vue b/frontend/src/components/navbar/Navbar.vue new file mode 100644 index 0000000..7473e21 --- /dev/null +++ b/frontend/src/components/navbar/Navbar.vue @@ -0,0 +1,100 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/components/reports/CommonSharedNetworksDatatable.vue b/frontend/src/components/reports/CommonSharedNetworksDatatable.vue new file mode 100644 index 0000000..bdcb1d9 --- /dev/null +++ b/frontend/src/components/reports/CommonSharedNetworksDatatable.vue @@ -0,0 +1,363 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/components/reports/NutanixDecomissionDatatable.vue b/frontend/src/components/reports/NutanixDecomissionDatatable.vue new file mode 100644 index 0000000..c8ee1b9 --- /dev/null +++ b/frontend/src/components/reports/NutanixDecomissionDatatable.vue @@ -0,0 +1,421 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/components/reports/NutanixMaintenanceDatatable.vue b/frontend/src/components/reports/NutanixMaintenanceDatatable.vue new file mode 100644 index 0000000..31e6c99 --- /dev/null +++ b/frontend/src/components/reports/NutanixMaintenanceDatatable.vue @@ -0,0 +1,369 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/components/reports/NutanixPrismCentralDatatable.vue b/frontend/src/components/reports/NutanixPrismCentralDatatable.vue new file mode 100644 index 0000000..fb21cdf --- /dev/null +++ b/frontend/src/components/reports/NutanixPrismCentralDatatable.vue @@ -0,0 +1,400 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/components/reports/NutanixPrismElementDatatable.vue b/frontend/src/components/reports/NutanixPrismElementDatatable.vue new file mode 100644 index 0000000..174f54d --- /dev/null +++ b/frontend/src/components/reports/NutanixPrismElementDatatable.vue @@ -0,0 +1,586 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/components/reports/VmwareCapacityDatatable.vue b/frontend/src/components/reports/VmwareCapacityDatatable.vue new file mode 100644 index 0000000..ccd85bb --- /dev/null +++ b/frontend/src/components/reports/VmwareCapacityDatatable.vue @@ -0,0 +1,587 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/components/reports/VmwareDatastoresDatatable.vue b/frontend/src/components/reports/VmwareDatastoresDatatable.vue new file mode 100644 index 0000000..965a7ba --- /dev/null +++ b/frontend/src/components/reports/VmwareDatastoresDatatable.vue @@ -0,0 +1,369 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/components/reports/VmwareDecomissionDatatable.vue b/frontend/src/components/reports/VmwareDecomissionDatatable.vue new file mode 100644 index 0000000..6e205e9 --- /dev/null +++ b/frontend/src/components/reports/VmwareDecomissionDatatable.vue @@ -0,0 +1,442 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/components/reports/VmwareMaintenanceDatatable.vue b/frontend/src/components/reports/VmwareMaintenanceDatatable.vue new file mode 100644 index 0000000..8e5a435 --- /dev/null +++ b/frontend/src/components/reports/VmwareMaintenanceDatatable.vue @@ -0,0 +1,329 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/components/sidebar/NavigationRoutes.js b/frontend/src/components/sidebar/NavigationRoutes.js new file mode 100644 index 0000000..4d57bf5 --- /dev/null +++ b/frontend/src/components/sidebar/NavigationRoutes.js @@ -0,0 +1,75 @@ +export default { + root: { + name: '/', + displayName: 'navigationRoutes.home', + }, + routes: [ + { + name: 'dashboard', + displayName: 'Dashboard', + meta: { + icon: 'vuestic-iconset-dashboard', + }, + }, + { + name: 'reports', + displayName: 'Reports', + meta: { + icon: 'vuestic-iconset-tables', + }, + disabled: true, + children: [ + { + name: 'vmware-capacity', + displayName: 'Capacity', + label: 'vmware', + color: 'primary', + }, + { + name: 'vmware-mmhosts', + displayName: 'Maintenance' + }, + { + name: 'vmware-datastores', + displayName: 'Datastores' + }, + { + name: 'vmware-decomission', + displayName: 'Decomission' + }, + { + name: 'nutanix-prismCentral', + displayName: 'Prism Central', + label: 'Nutanix', + color: 'success', + }, + { + name: 'nutanix-prismElement', + displayName: 'Prism Element', + }, + { + name: 'nutanix-Maintenance', + displayName: 'Maintenance', + }, + { + name: 'nutanix-Decomission', + displayName: 'Decomission', + }, + { + name: 'common-sharedNetworks', + displayName: 'Shared Networks', + label: 'common', + color: 'info', + }, + ], + }, + { + name: 'settings', + displayName: 'Settings', + meta: { + icon: 'vuestic-iconset-settings', + }, + disabled: true, + }, + ], +} diff --git a/frontend/src/components/sidebar/Sidebar.vue b/frontend/src/components/sidebar/Sidebar.vue new file mode 100644 index 0000000..cb26622 --- /dev/null +++ b/frontend/src/components/sidebar/Sidebar.vue @@ -0,0 +1,90 @@ + + + + + + + diff --git a/frontend/src/components/sidebar/menu/MenuAccordion.vue b/frontend/src/components/sidebar/menu/MenuAccordion.vue new file mode 100644 index 0000000..2a9b4c9 --- /dev/null +++ b/frontend/src/components/sidebar/menu/MenuAccordion.vue @@ -0,0 +1,79 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/components/sidebar/menu/MenuMinimized.vue b/frontend/src/components/sidebar/menu/MenuMinimized.vue new file mode 100644 index 0000000..5048d8d --- /dev/null +++ b/frontend/src/components/sidebar/menu/MenuMinimized.vue @@ -0,0 +1,113 @@ + + + + + diff --git a/frontend/src/components/vuestic-logo.vue b/frontend/src/components/vuestic-logo.vue new file mode 100644 index 0000000..f348046 --- /dev/null +++ b/frontend/src/components/vuestic-logo.vue @@ -0,0 +1,24 @@ + + diff --git a/frontend/src/components/widgets/VmwareDecomissionWidget.vue b/frontend/src/components/widgets/VmwareDecomissionWidget.vue new file mode 100644 index 0000000..ebc4474 --- /dev/null +++ b/frontend/src/components/widgets/VmwareDecomissionWidget.vue @@ -0,0 +1,209 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json new file mode 100644 index 0000000..2d9a307 --- /dev/null +++ b/frontend/src/i18n/en.json @@ -0,0 +1,588 @@ +{ + "auth": { + "agree": "I agree to", + "createAccount": "Create account", + "createNewAccount": "Create New Account", + "email": "Email", + "login": "Login", + "password": "Password", + "recover_password": "Recover password", + "sign_up": "Sign Up", + "keep_logged_in": "Keep me logged in", + "termsOfUse": "Terms of Use.", + "reset_password": "Reset password" + }, + "404": { + "title": "This page’s gone fishing.", + "text": "If you feel that it’s not right, please send us a message at ", + "back_button": "Back to dashboard" + }, + "rating": { + "singleIcon": "Single Icon", + "twoIcons": "Two Icons", + "large": "Large", + "numbers": "Numbers", + "halves": "Halves", + "small": "Small" + }, + "typography": { + "primary": "Primary text styles", + "secondary": "Secondary text styles" + }, + "colorPickers": { + "simple": "Simple", + "slider": "Slider", + "advanced": "Advanced" + }, + "buttons": { + "advanced": "Buttons With Icons", + "size": "Button Sizes", + "tags": "Button Tags", + "button": "Button", + "buttonGroups": "Button Groups", + "buttonsDropdown": "Buttons with dropdown", + "split": "Split", + "splitTo": "Split to", + "customIcon": "Custom icon", + "content": "Content", + "buttonToggles": "Button Toggles", + "pagination": "Pagination", + "a-link": "Open EpicSpinners", + "router-link": "Move to Charts", + "colors": "Button Colors", + "disabled": "Disabled", + "dropdown": "DROPDOWN", + "hover": "HOVER", + "types": "Button Types", + "pressed": "PRESSED", + "default": "Default", + "outline": "Outline", + "flat": "Flat", + "large": "Large", + "small": "Small", + "normal": "Normal", + "success": "Success", + "info": "Info", + "danger": "Danger", + "warning": "Warning", + "gray": "Gray", + "dark": "Dark" + }, + "charts": { + "horizontalBarChart": "Horizontal Bar Chart", + "verticalBarChart": "Vertical Bar Chart", + "lineChart": "Line Chart", + "pieChart": "Pie Chart", + "donutChart": "Donut Chart", + "bubbleChart": "Bubble Chart" + }, + "collapse": { + "basic": "Basic Collapse", + "collapseWithBackground": "Collapse with background", + "collapseWithCustomHeader": "Collapse with custom header", + "firstHeader": "Expand This Block", + "secondHeader": "Another Block", + "content": { + "title": "Great Things", + "text": "There is something about parenthood that gives us a sense of history and a deeply rooted desire to send on into the next generation the great things we have discovered about life." + } + }, + "sliders": { + "slider": "Sliders", + "range": "Ranges", + "simple": "simple", + "value": "Value", + "label": "Label", + "labelPlusIcon": "label + icon", + "pins": "Pins", + "pinsAndValue": "pins & value" + }, + "popovers": { + "popover": "Popover", + "popoverStyle": "Popover Style", + "popoverPlacement": "Popover Placement", + "minimalTooltip": "Minimal Tooltip", + "anotherOneTooltip": "Another One Tooltip" + }, + "datepickers": { + "dateOfBirth": "Date of birth", + "daysOfTheWeek": "Days of the week", + "setupMeeting": "Setup meeting", + "upcomingVacation": "Upcoming vacation", + "multipleAndDisabledDates": "Multiple & disabled dates", + "inline": "Inline" + }, + "dashboard": { + "versions": "Versions", + "setupRemoteConnections": "Setup Remote Connections", + "currentVisitors": "Current Visitors", + "charts": { + "trendyTrends": "Trendy Trends", + "showInMoreDetail": "Show in more detail", + "loadingSpeed": "Loading speed", + "topContributors": "Top contributors", + "showNextFive": "Show next five", + "commits": "Commits" + }, + "info": { + "componentRichTheme": "component-rich theme", + "completedPullRequests": "completed pull requests", + "users": "users", + "points": "points", + "units": "units", + "exploreGallery": "Explore gallery", + "viewLibrary": "View Library", + "commits": "commits", + "components": "components", + "teamMembers": "team members" + }, + "table": { + "title": "Awesome table", + "brief": "Brief", + "detailed": "Detailed", + "resolve": "Resolve", + "resolved": "Resolved" + }, + "tabs": { + "overview": { + "title": "Overview", + "built": "Built with Vue.js framework", + "free": "Absolutely free for everyone", + "fresh": "Fresh and crisp design", + "mobile": "Responsive and optimized for mobile", + "components": "Tons of useful components", + "nojQuery": "Completely jQuery free" + }, + "billingAddress": { + "title": "Billing Address", + "personalInfo": "Personal Info", + "firstName": "First name & Last Name", + "email": "Email", + "address": "Address", + "companyInfo": "Company Info", + "city": "City", + "country": "Country", + "infiniteConnections": "Infinite connections", + "addConnection": "Add Connection" + }, + "bankDetails": { + "title": "Bank Details", + "detailsFields": "Details Fields", + "bankName": "Bank Name", + "accountName": "Account Name", + "sortCode": "Sort Code", + "accountNumber": "Account Number", + "notes": "Notes", + "sendDetails": "Send Details" + } + }, + "navigationLayout": "navigation layout", + "topBarButton": "Top Bar", + "sideBarButton": "Side Bar" + }, + "notificationsPage": { + "notifications": { + "title": "Notifications", + "gray": "Processing", + "dark": "New Label", + "success": "Paid", + "successMessage": "You successfully read this important alert message.", + "info": "Info", + "infoMessage": "This alert needs your attention, but it's not super important.", + "warning": "On Hold", + "warningMessage": "Better check yourself, you're not looking too good.", + "danger": "Danger", + "dangerMessage": "Change a few things up and try submitting again." + }, + "popovers": { + "title": "Tooltips & Popovers", + "popoverTitleLabel": "Popover Title", + "popoverTextLabel": "Popover Text", + "popoverIconLabel": "Popover Icon (fontawesome)", + "showPopover": "Show Popover", + "topTooltip": "top", + "rightTooltip": "rightside", + "leftTooltip": "left", + "bottomTooltip": "below" + }, + "toasts": { + "title": "Toasts", + "textLabel": "Text", + "durationLabel": "Duration (milliseconds)", + "iconLabel": "Icon (fontawesome)", + "fullWidthLabel": "Fullwidth", + "launchToast": "Launch toast" + } + }, + "forms": { + "controls": { + "title": "Checkboxes, Radios, Switches, Toggles", + "radioDisabled": "Disabled Radio", + "radio": "Radio", + "subscribe": "Subscribe to newsletter", + "unselected": "Unselected checkbox", + "selected": "Selected checkbox", + "readonly": "Readonly checkbox", + "disabled": "Disabled checkbox", + "error": "Checkbox with error", + "errorMessage": "Checkbox with error messages" + }, + "dateTimePicker": { + "title": "Date time pickers", + "basic": "Basic", + "time": "Time", + "range": "Range", + "multiple": "Multiple", + "disabled": "Disabled", + "customFirstDay": "Custom first day", + "customDateFormat": "Custom date format" + }, + "inputs": { + "emailValidatedSuccess": "Email (validated with success)", + "emailValidated": "Email (validated)", + "inputWithIcon": "Input With Icon", + "inputWithButton": "Input With Button", + "inputWithClearButton": "Input With Clear Button", + "inputWithRoundButton": "Input With Round Button", + "textInput": "Text Input", + "textInputWithDescription": "Text Input (with description)", + "textArea": "Text Area", + "title": "Inputs", + "upload": "UPLOAD" + }, + "mediumEditor": { + "title": "Medium Editor" + }, + "selects": { + "country": "Country Select", + "countryMulti": "Country Multi Select", + "multi": "Multi Select", + "simple": "Simple Select", + "searchable": "Select with search", + "searchableMulti": "Multi Select with search", + "title": "Selects" + } + }, + "grid": { + "desktop": "Desktop Grid", + "fixed": "Fixed Grid", + "offsets": "Offsets", + "responsive": "Responsive Grid" + }, + "icons": { + "back": "Back to all icons", + "none": "No icons found", + "search": "Icon search", + "title": "Icons" + }, + "spinners": { + "title": "Spinners", + "poweredBy": "Powered by" + }, + "language": { + "brazilian_portuguese": "Português", + "english": "English", + "spanish": "Spanish", + "simplified_chinese": "Simplified Chinese", + "persian": "Persian" + }, + "menu": { + "auth": "Auth", + "rating": "Rating", + "buttons": "Buttons", + "charts": "Charts", + "colorPickers": "Color Pickers", + "collapses": "Collapses", + "timelines": "Timelines", + "dashboard": "Dashboard", + "formElements": "Form Elements", + "forms": "Forms", + "mediumEditor": "Medium Editor", + "grid": "Grid", + "icons": "Icons", + "cards": "Cards", + "spinners": "Spinners", + "login": "Login", + "maps": "Maps", + "pages": "Pages", + "modals": "Modals", + "notifications": "Notifications", + "progressBars": "Progress Bars", + "signUp": "Sign up", + "statistics": "Statistics", + "lists": "Lists", + "tables": "Tables", + "markupTables": "Markup Tables", + "dataTables": "Data Tables", + "chips": "Chips", + "tabs": "Tabs", + "typography": "Typography", + "uiElements": "UI Elements", + "treeView": "Tree view", + "dateTimePickers": "Date time pickers", + "fileUpload": "File Upload", + "colors": "Colors", + "spacing": "Spacing", + "sliders": "Sliders", + "popovers": "Popovers", + "chat": "Chat", + "google-maps": "Google Maps", + "yandex-maps": "Yandex Maps", + "leaflet-maps": "Leaflet Maps", + "bubble-maps": "Bubble Maps", + "line-maps": "Line Maps", + "login-singup": "Login/Signup", + "404-pages": "404 Pages", + "faq": "Faq", + "reports": "Reports", + "vmware-capacity": "Capacity", + "vmware-mmhosts": "Hosts in maintenance", + "vmware-sharedNetworks": "Shared networks", + "nutanix-prismCentral": "Prism Central" + }, + "labels": { + "vmware": "vmware", + "nutanix": "Nutanix" + }, + "messages": { + "all": "See all messages", + "new": "New messages from {name}", + "mark_as_read": "Mark As Read" + }, + "modal": { + "cancel": "Cancel", + "close": "Close", + "confirm": "Confirm", + "large": "Large", + "largeTitle": "Large Modal", + "medium": "Medium", + "mediumTitle": "Medium Modal", + "small": "Small", + "smallTitle": "Small Modal", + "static": "Static", + "staticMessage": "This is a static modal, backdrop or escape click will not close it.", + "staticTitle": "Static Modal", + "title": "Modals", + "titlePosition": "Modal Position", + "top": "Top", + "right": "Right", + "bottom": "Bottom", + "left": "Left", + "message": "There are three species of zebras: the plains zebra, the mountain zebra and the Grévy's zebra. The plains zebra and the mountain zebra belong to the subgenus Hippotigris, but Grévy's\n zebra is the sole species of subgenus\n Dolichohippus. The latter resembles an ass, to which it is closely\n related, while the former two are more\n horse-like. All three belong to the genus Equus, along with other living\n equids." + }, + "dropdown": { + "default": "Default", + "withArrow": "With arrow", + "note": "Note", + "noteText": "Dropdown will open in the specified direction if there is enough space on the screen, otherwise the direction will automatically change", + "top": "TOP", + "right": "RIGHT", + "bottom": "BOTTOM", + "left": "LEFT" + }, + "fileUpload": { + "advancedMediaGallery": "Advanced, Media Gallery", + "advancedUploadList": "Advanced, Upload List", + "mediaGallery": "Media Gallery", + "uploadList": "Upload List", + "single": "Single", + "dragNdropFiles": "Drag’n’drop files or", + "uploadedOn": "Uploaded on", + "fileDeleted": "File was successfully deleted", + "undo": "Undo", + "preview": "Preview", + "delete": "Delete", + "deleteFile": "Delete file", + "uploadFile": "Upload file", + "uploadMedia": "Upload media", + "addAttachment": "Add attachment", + "modalTitle": "File validation", + "modalText": "File type is incorrect!" + }, + "chips": { + "chips": { + "title": "Chips", + "primary": "Primary chip", + "secondary": "Secondary chip", + "success": "Success chip", + "info": "Info chip", + "danger": "Danger chip", + "warning": "Warning chip", + "gray": "Gray chip", + "dark": "Dark chip" + }, + "badges": { + "title": "Badges", + "primary": "Primary badge", + "secondary": "Secondary badge", + "success": "Success badge", + "info": "Info badge", + "danger": "Danger badge", + "warning": "Warning badge", + "gray": "Gray badge", + "dark": "Dark badge" + } + }, + "navbar": { + "messageUs": "Web development inquiries:", + "repository": "GitHub Repo" + }, + "notifications": { + "all": "See all notifications", + "mark_as_read": "Mark as read", + "sentMessage": "sent you a message", + "uploadedZip": "uploaded a new Zip file with {type}", + "startedTopic": "started a new topic" + }, + "timelines": { + "horizontalSimple": "Horizontal Simple", + "horizontalCards": "Horizontal Cards", + "verticalSimple": "Vertical Simple", + "verticalLabel": "Vertical With Label", + "verticalCentered": "Vertical Centered", + "horizontalActionFirst": "Complete drafts", + "horizontalActionSecond": "Push site live", + "horizontalActionThird": "Start ICO", + "titleFirst": "Make design", + "titleSecond": "Develop an app", + "titleThird": "Submit an app", + "titleDateFirst": "", + "titleDateSecond": "May 22 10:00", + "titleDateThird": "July 19 17:45", + "firstDate": "February 2018", + "secondDate": "March 2018", + "thirdDate": "April 2018", + "contentFirst": "The unique stripes of zebras make them one of the animals most familiar to people. They occur in a variety of habitats, such as grasslands, savannas, woodlands, thorny scrublands.", + "contentSecond": "They occur in a variety of habitats, such as grasslands, savannas, woodlands, thorny scrublands.", + "contentThird": "However, various anthropogenic factors have had a severe impact on zebra populations" + }, + "progressBars": { + "circle": "Circle", + "horizontal": "Horizontal", + "colors": "Colors" + }, + "lists": { + "customers": "Customers", + "recentMessages": "Recent Messages", + "archieved": "Archieved", + "starterKit": "Starter Kit", + "notifications": "Notifications", + "routerSupport": "Router Support" + }, + "tables": { + "basic": "Basic Table", + "stripedHoverable": "Striped, Hoverable", + "labelsActions": "Labels, Actions as Buttons", + "sortingPaginationActionsAsIcons": "Sorting, Pagination, Actions as Icons", + "star": "Star", + "unstar": "Unstar", + "edit": "Edit", + "delete": "Delete", + "searchByName": "Search by name", + "searchTrendsBadges": "Search, Trends, Badges", + "perPage": "Per Page", + "report": "Report", + "infiniteScroll": "Infinite Scroll", + "selectable": "Selectable", + "selected": "Selected", + "serverSidePagination": "Server-Side Pagination", + "emptyTable": "Empty Table", + "noDataAvailable": "No Data Available.", + "noReport": "There is no data to display. Report will be available on November 3, 2018.", + "loading": "Loading", + "headings": { + "email": "Email", + "name": "Name", + "firstName": "First Name", + "lastName": "Last Name", + "status": "Status", + "country": "Country", + "location": "Location" + } + }, + "user": { + "language": "Change Language", + "logout": "Logout", + "profile": "My Profile" + }, + "treeView": { + "basic": "Basic", + "icons": "Icons", + "selectable": "Selectable", + "editable": "Editable", + "advanced": "Advanced" + }, + "chat": { + "title": "Chat", + "sendButton": "Send" + }, + "spacingPlayground": { + "value": "Value", + "margin": "Margin", + "padding": "Padding" + }, + "spacing": { + "title": "Spacing" + }, + "cards": { + "cards": "Cards", + "fixed": "Fixed", + "floating": "Floating", + "contentText": "The unique stripes of zebras make them one of the animals most familiar to people.", + "contentTextLong": "The unique stripes of zebras make them one of the animals most familiar to people. They occur in a variety of habitats, such as grasslands, savannas, woodlands, thorny scrublands, mountains, and coastal hills. Various anthropogenic factors have had a severe impact on zebra populations, in particular hunting for skins and habitat destruction. Grévy's zebra and the mountain zebra are endangered. While plains zebras are much more plentiful, one subspecies, the quagga.", + "rowHeight": "Row height", + "title": { + "default": "Default", + "withControls": "With controls", + "customHeader": "Custom header", + "withoutHeader": "Without header", + "withImage": "With Image", + "withTitleOnImage": "With title on image", + "withCustomTitleOnImage": "With custom title on image", + "withStripe": "With stripe", + "withBackground": "With background" + }, + "button": { + "main": "Main", + "cancel": "Cancel", + "showMore": "Show More", + "readMore": "Show More" + }, + "link": { + "edit": "Edit", + "setAsDefault": "Set as default", + "delete": "Delete", + "traveling": "Traveling", + "france": "France", + "review": "Review", + "feedback": "Leave feedback", + "readFull": "Read full article", + "secondaryAction": "Secondary action", + "action1": "Action 1", + "action2": "Action 2" + } + }, + "colors": { + "themeColors": "Theme Colors", + "extraColors": "Extra Colors", + "gradients": { + "basic": { + "title": "Button Gradients" + }, + "hovered": { + "title": "Hovered Button Gradients", + "text": "Lighten 15% applied to an original style (gradient or flat color) for hover state." + }, + "pressed": { + "title": "Hovered Button Gradients", + "text": "Darken 15% applied to an original style (gradient or flat color) for pressed state." + } + } + }, + "tabs": { + "alignment": "Tabs Alignment", + "overflow": "Tabs Overflow", + "hidden": "Tabs with Hidden slider", + "grow": "Tabs Grow" + } +} diff --git a/frontend/src/layout/app-layout.vue b/frontend/src/layout/app-layout.vue new file mode 100644 index 0000000..fdb2d42 --- /dev/null +++ b/frontend/src/layout/app-layout.vue @@ -0,0 +1,150 @@ + + + + + diff --git a/frontend/src/main.ts b/frontend/src/main.ts new file mode 100644 index 0000000..2b54c4e --- /dev/null +++ b/frontend/src/main.ts @@ -0,0 +1,20 @@ +import { createApp } from 'vue' +import { createVuestic } from 'vuestic-ui' +import { VuesticPlugin } from 'vuestic-ui'; + +import App from './App.vue' +import store from './store' +import router from './router' +import vuesticGlobalConfig from './services/vuestic-ui/global-config' + +import 'vuestic-ui/dist/vuestic-ui.css' +import './sass/overrides.scss' + +const app = createApp(App) +app.use(router) +app.use(store) +app.use(createVuestic({ config: vuesticGlobalConfig })) + +//app.use(VuesticPlugin, vuesticGlobalConfig) + +app.mount('#app') \ No newline at end of file diff --git a/frontend/src/pages/404/VaPageNotFound.vue b/frontend/src/pages/404/VaPageNotFound.vue new file mode 100644 index 0000000..6c12b4e --- /dev/null +++ b/frontend/src/pages/404/VaPageNotFound.vue @@ -0,0 +1,104 @@ + + + + + diff --git a/frontend/src/pages/404/VaPageNotFoundLargeText.vue b/frontend/src/pages/404/VaPageNotFoundLargeText.vue new file mode 100644 index 0000000..2a01569 --- /dev/null +++ b/frontend/src/pages/404/VaPageNotFoundLargeText.vue @@ -0,0 +1,33 @@ + + + + + diff --git a/frontend/src/pages/404/Wallpaper.vue b/frontend/src/pages/404/Wallpaper.vue new file mode 100644 index 0000000..54332a9 --- /dev/null +++ b/frontend/src/pages/404/Wallpaper.vue @@ -0,0 +1,21 @@ + + + + + diff --git a/frontend/src/router/index.ts b/frontend/src/router/index.ts new file mode 100644 index 0000000..ad88909 --- /dev/null +++ b/frontend/src/router/index.ts @@ -0,0 +1,93 @@ +import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router' +import AppLayout from '@/layout/app-layout.vue' + +import RouteViewComponent from './route-view.vue' + +const routes: Array = [ + { + name: 'root', + path: '/', + redirect: { name: 'dashboard' }, + component: AppLayout, + children: [ + { + name: 'dashboard', + path: 'dashboard', + component: () => import('@/views/dashboardView.vue'), + }, + { + name: 'reports', + path: 'reports', + component: RouteViewComponent, + children: [ + { + name: 'vmware-capacity', + path: 'vmware-capacity', + component: () => import('@/views/vmwareCapacityView.vue'), + }, + { + name: 'vmware-mmhosts', + path: 'vmware-mmhosts', + component: () => import('@/views/vmwareMaintenanceView.vue'), + }, + { + name: 'vmware-datastores', + path: 'vmware-datastores', + component: () => import('@/views/vmwareDatastoresView.vue'), + }, + { + name: 'vmware-decomission', + path: 'vmware-decomission', + component: () => import('@/views/vmwareDecomissionView.vue'), + }, + { + name: 'common-sharedNetworks', + path: 'common-sharedNetworks', + component: () => import('@/views/commonSharedNetworksView.vue'), + }, + { + name: 'nutanix-prismCentral', + path: 'nutanix-prismCentral', + component: () => import('@/views/nutanixPrismCentralView.vue'), + }, + { + name: 'nutanix-prismElement', + path: 'nutanix-prismElement', + component: () => import('@/views/nutanixPrismElementView.vue'), + }, + { + name: 'nutanix-Maintenance', + path: 'nutanix-Maintenance', + component: () => import('@/views/nutanixMaintenanceView.vue'), + }, + { + name: 'nutanix-Decomission', + path: 'nutanix-Decomission', + component: () => import('@/views/nutanixDecomissionView.vue'), + }, + ], + }, + { + name: 'settings', + path: 'settings', + component: RouteViewComponent, + }, + ] + }, + { + name: 'not-found', + path: '/pages/not-found-404', + component: () => import('@/pages/404/VaPageNotFoundLargeText.vue'), + }, + { + path: '/:pathMatch(.*)*', + redirect: { name: 'not-found' }, + } +] + +const router = createRouter({ + history: createWebHistory(import.meta.env.BASE_URL), + routes +}) + +export default router diff --git a/frontend/src/router/route-view.vue b/frontend/src/router/route-view.vue new file mode 100644 index 0000000..62a5efb --- /dev/null +++ b/frontend/src/router/route-view.vue @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/frontend/src/sass/custom.scss b/frontend/src/sass/custom.scss new file mode 100644 index 0000000..2b203ec --- /dev/null +++ b/frontend/src/sass/custom.scss @@ -0,0 +1,144 @@ +.tableReport { + max-height: calc(100vh - 280px); + .va-data-table__table-tr { + position: relative; + z-index: 0; + &:nth-child(2n) { + &:not(.selected) { + background-color: #DDDFE0; + } + } + } + &--Decomission { + max-height: calc(100vh - 280px - 280px); + } +} + +.reportView { + .va-card { + margin-bottom: 0 !important; + &__title { + display: flex; + justify-content: space-between; + } + } +} +.reportFooter { + margin: 0 !important; + .reportDate { + position: relative; + top: 5px; + } +} + +.vcsa-link:link { + color: white; +} +.vcsa-link:visited { + color: white; +} +.vcsa-link:hover { + color: white; +} +.linkSM { + color:white; +} +.badge-upperCase { + text-transform: uppercase; +} +.fixedWidth2ch { + width: 2ch; +} +.moveRight5ch { + position: absolute; + left: 5ch; + a, a:link, a:visited, a:hover { + color: white; + } +} +.whiteLink { + a, a:link, a:visited, a:hover { + color: white; + } +} +.rowCritical { + background-color: var(--va-danger) !important; + color: white; +} +.cellWarning { + background-color: var(--va-focus); +} +.cellCritical { + background-color: var(--va-danger); + font-weight: bold; + color: white; +} +.cellGreen { + background-color: #40e583; + font-weight: bold; +} +.cellReason { + max-width: 36ch; +} +.update_btn.update_btn { + .va-button { + &__content { + padding-left: 0; + padding-right: 0; + } + } +} +.filterTag.filterTag { + padding-right: 0; + border-right: 0; + white-space: nowrap; + .va-chip { + &__content { + padding-right: 0; + } + } +} +.transparentBadge.transparentBadge { + span { + background-color: transparent !important; + border: 0; + } +} +.infoBadge { + span { + color: var(--va-primary); + } +} +.dangerBadge { + span { + color: var(--va-danger); + span { + i { + font-size: 14px !important; + width: 14px; + animation: pulse 2s infinite; + } + } + } +} +.darkBadge { + span { + color: var(--va-dark); + } +} +@-webkit-keyframes pulse { + 0% { -webkit-transform: scale(1); } + 50% { -webkit-transform: scale(1.1); } + 100% { -webkit-transform: scale(1); } +} + +@keyframes pulse { + 0% { transform: scale(1); } + 50% { transform: scale(1.1); } + 100% { transform: scale(1); } +} + +.fieldInputCell.fieldInputCell { + padding-top: 0px !important; + padding-bottom: 0px !important; +} \ No newline at end of file diff --git a/frontend/src/sass/icon-fonts/brandico/brandico.eot b/frontend/src/sass/icon-fonts/brandico/brandico.eot new file mode 100644 index 0000000..10d8ba1 Binary files /dev/null and b/frontend/src/sass/icon-fonts/brandico/brandico.eot differ diff --git a/frontend/src/sass/icon-fonts/brandico/brandico.scss b/frontend/src/sass/icon-fonts/brandico/brandico.scss new file mode 100644 index 0000000..eb98dee --- /dev/null +++ b/frontend/src/sass/icon-fonts/brandico/brandico.scss @@ -0,0 +1,144 @@ +@font-face { + font-family: 'brandico'; + font-style: normal; + font-weight: normal; + src: url('./sass/icon-fonts/brandico/brandico.eot'); + src: + url('./sass/icon-fonts/brandico/brandico.eot#iefix') format('eot'), + url('./sass/icon-fonts/brandico/brandico.woff') format('woff'), + url('./sass/icon-fonts/brandico/brandico.ttf') format('truetype'), + url('./sass/icon-fonts/brandico/brandico.svg#brandico') format('svg'); +} + +[class*="brandico-"]::before { + font-family: 'brandico', sans-serif; + font-style: normal; +} + +.brandico-facebook::before { + content: "\f300"; +} + +.brandico-facebook-rect::before { + content: "\f301"; +} + +.brandico-twitter::before { + content: "\f302"; +} + +.brandico-twitter-bird::before { + content: "\f303"; +} + +.brandico-vimeo::before { + content: "\f30f"; +} + +.brandico-vimeo-rect::before { + content: "\f30e"; +} + +.brandico-tumblr::before { + content: "\f311"; +} + +.brandico-tumblr-rect::before { + content: "\f310"; +} + +.brandico-googleplus-rect::before { + content: "\f309"; +} + +.brandico-github-text::before { + content: "\f307"; +} + +.brandico-github::before { + content: "\f308"; +} + +.brandico-skype::before { + content: "\f30b"; +} + +.brandico-icq::before { + content: "\f304"; +} + +.brandico-yandex::before { + content: "\f305"; +} + +.brandico-yandex-rect::before { + content: "\f306"; +} + +.brandico-vkontakte-rect::before { + content: "\f30a"; +} + +.brandico-odnoklassniki::before { + content: "\f30c"; +} + +.brandico-odnoklassniki-rect::before { + content: "\f30d"; +} + +.brandico-friendfeed::before { + content: "\f312"; +} + +.brandico-friendfeed-rect::before { + content: "\f313"; +} + +.brandico-blogger::before { + content: "\f314"; +} + +.brandico-blogger-rect::before { + content: "\f315"; +} + +.brandico-deviantart::before { + content: "\f316"; +} + +.brandico-jabber::before { + content: "\f317"; +} + +.brandico-lastfm::before { + content: "\f318"; +} + +.brandico-lastfm-rect::before { + content: "\f319"; +} + +.brandico-linkedin::before { + content: "\f31a"; +} + +.brandico-linkedin-rect::before { + content: "\f31b"; +} + +.brandico-picasa::before { + content: "\f31c"; +} + +.brandico-wordpress::before { + content: "\f31d"; +} + +.brandico-instagram::before { + content: "\f31e"; +} + +.brandico-instagram-filled::before { + content: "\f31f"; +} diff --git a/frontend/src/sass/icon-fonts/brandico/brandico.svg b/frontend/src/sass/icon-fonts/brandico/brandico.svg new file mode 100644 index 0000000..3c79d93 --- /dev/null +++ b/frontend/src/sass/icon-fonts/brandico/brandico.svg @@ -0,0 +1,155 @@ + + + + + Created by FontForge 20110222 at Sat Nov 10 00:13:48 2012 + By Vitaly,,, + (C) 2012 by Vitaly Puzrin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/src/sass/icon-fonts/brandico/brandico.ttf b/frontend/src/sass/icon-fonts/brandico/brandico.ttf new file mode 100644 index 0000000..0682fd7 Binary files /dev/null and b/frontend/src/sass/icon-fonts/brandico/brandico.ttf differ diff --git a/frontend/src/sass/icon-fonts/brandico/brandico.woff b/frontend/src/sass/icon-fonts/brandico/brandico.woff new file mode 100644 index 0000000..5748bec Binary files /dev/null and b/frontend/src/sass/icon-fonts/brandico/brandico.woff differ diff --git a/frontend/src/sass/icon-fonts/entypo/entypo.eot b/frontend/src/sass/icon-fonts/entypo/entypo.eot new file mode 100644 index 0000000..41f223e Binary files /dev/null and b/frontend/src/sass/icon-fonts/entypo/entypo.eot differ diff --git a/frontend/src/sass/icon-fonts/entypo/entypo.scss b/frontend/src/sass/icon-fonts/entypo/entypo.scss new file mode 100644 index 0000000..da0c8b1 --- /dev/null +++ b/frontend/src/sass/icon-fonts/entypo/entypo.scss @@ -0,0 +1,1152 @@ +@font-face { + font-family: 'entypo'; + font-style: normal; + font-weight: normal; + src: url('./sass/icon-fonts/entypo/entypo.eot'); + src: + url('./sass/icon-fonts/entypo/entypo.eot?#iefix') format('eot'), + url('./sass/icon-fonts/entypo/entypo.woff') format('woff'), + url('./sass/icon-fonts/entypo/entypo.ttf') format('truetype'), + url('./sass/icon-fonts/entypo/entypo.svg#entypo') format('svg'); +} + +[class*="entypo-"]::before { + font-family: 'entypo', sans-serif; + font-style: normal; +} + +.entypo-note::before { + content: "\266a"; +} + +.entypo-note-beamed::before { + content: "\266b"; +} + +.entypo-music::before { + content: "\1f3b5"; +} + +.entypo-search::before { + content: "\1f50d"; +} + +.entypo-flashlight::before { + content: "\1f526"; +} + +.entypo-mail::before { + content: "\2709"; +} + +.entypo-heart::before { + content: "\2665"; +} + +.entypo-heart-empty::before { + content: "\2661"; +} + +.entypo-star::before { + content: "\2605"; +} + +.entypo-star-empty::before { + content: "\2606"; +} + +.entypo-user::before { + content: "\1f464"; +} + +.entypo-users::before { + content: "\1f465"; +} + +.entypo-user-add::before { + content: "\e700"; +} + +.entypo-video::before { + content: "\1f3ac"; +} + +.entypo-picture::before { + content: "\1f304"; +} + +.entypo-camera::before { + content: "\1f4f7"; +} + +.entypo-layout::before { + content: "\268f"; +} + +.entypo-menu::before { + content: "\2630"; +} + +.entypo-check::before { + content: "\2713"; +} + +.entypo-cancel::before { + content: "\2715"; +} + +.entypo-cancel-circled::before { + content: "\2716"; +} + +.entypo-cancel-squared::before { + content: "\274e"; +} + +.entypo-plus::before { + content: "\2b"; +} + +.entypo-plus-circled::before { + content: "\2795"; +} + +.entypo-plus-squared::before { + content: "\229e"; +} + +.entypo-minus::before { + content: "\2d"; +} + +.entypo-minus-circled::before { + content: "\2796"; +} + +.entypo-minus-squared::before { + content: "\229f"; +} + +.entypo-help::before { + content: "\2753"; +} + +.entypo-help-circled::before { + content: "\e704"; +} + +.entypo-info::before { + content: "\2139"; +} + +.entypo-info-circled::before { + content: "\e705"; +} + +.entypo-back::before { + content: "\1f519"; +} + +.entypo-home::before { + content: "\2302"; +} + +.entypo-link::before { + content: "\1f517"; +} + +.entypo-attach::before { + content: "\1f4ce"; +} + +.entypo-lock::before { + content: "\1f512"; +} + +.entypo-lock-open::before { + content: "\1f513"; +} + +.entypo-eye::before { + content: "\e70a"; +} + +.entypo-tag::before { + content: "\e70c"; +} + +.entypo-bookmark::before { + content: "\1f516"; +} + +.entypo-bookmarks::before { + content: "\1f4d1"; +} + +.entypo-flag::before { + content: "\2691"; +} + +.entypo-thumbs-up::before { + content: "\1f44d"; +} + +.entypo-thumbs-down::before { + content: "\1f44e"; +} + +.entypo-download::before { + content: "\1f4e5"; +} + +.entypo-upload::before { + content: "\1f4e4"; +} + +.entypo-upload-cloud::before { + content: "\e711"; +} + +.entypo-reply::before { + content: "\e712"; +} + +.entypo-reply-all::before { + content: "\e713"; +} + +.entypo-forward::before { + content: "\27a6"; +} + +.entypo-quote::before { + content: "\275e"; +} + +.entypo-code::before { + content: "\e714"; +} + +.entypo-export::before { + content: "\e715"; +} + +.entypo-pencil::before { + content: "\270e"; +} + +.entypo-feather::before { + content: "\2712"; +} + +.entypo-print::before { + content: "\e716"; +} + +.entypo-retweet::before { + content: "\e717"; +} + +.entypo-keyboard::before { + content: "\2328"; +} + +.entypo-comment::before { + content: "\e718"; +} + +.entypo-chat::before { + content: "\e720"; +} + +.entypo-bell::before { + content: "\1f514"; +} + +.entypo-attention::before { + content: "\26a0"; +} + +.entypo-alert::before { + content: "\1f4a5'"; +} + +.entypo-vcard::before { + content: "\e722"; +} + +.entypo-address::before { + content: "\e723"; +} + +.entypo-location::before { + content: "\e724"; +} + +.entypo-map::before { + content: "\e727"; +} + +.entypo-direction::before { + content: "\27a2"; +} + +.entypo-compass::before { + content: "\e728"; +} + +.entypo-cup::before { + content: "\2615"; +} + +.entypo-trash::before { + content: "\e729"; +} + +.entypo-doc::before { + content: "\e730"; +} + +.entypo-docs::before { + content: "\e736"; +} + +.entypo-doc-landscape::before { + content: "\e737"; +} + +.entypo-doc-text::before { + content: "\1f4c4"; +} + +.entypo-doc-text-inv::before { + content: "\e731"; +} + +.entypo-newspaper::before { + content: "\1f4f0"; +} + +.entypo-book-open::before { + content: "\1f4d6"; +} + +.entypo-book::before { + content: "\1f4d5"; +} + +.entypo-folder::before { + content: "\1f4c1"; +} + +.entypo-archive::before { + content: "\e738"; +} + +.entypo-box::before { + content: "\1f4e6"; +} + +.entypo-rss::before { + content: "\e73a"; +} + +.entypo-phone::before { + content: "\1f4dE"; +} + +.entypo-cog::before { + content: "\2699"; +} + +.entypo-tools::before { + content: "\2692"; +} + +.entypo-share::before { + content: "\e73c"; +} + +.entypo-shareable::before { + content: "\e73e"; +} + +.entypo-basket::before { + content: "\e73d"; +} + +.entypo-bag::before { + content: "\1f45c'"; +} + +.entypo-calendar::before { + content: "\1f4c5"; +} + +.entypo-login::before { + content: "\e740"; +} + +.entypo-logout::before { + content: "\e741"; +} + +.entypo-mic::before { + content: "\1f3a4"; +} + +.entypo-mute::before { + content: "\1f507"; +} + +.entypo-sound::before { + content: "\1f50a"; +} + +.entypo-volume::before { + content: "\e742"; +} + +.entypo-clock::before { + content: "\1f554"; +} + +.entypo-hourglass::before { + content: "\23f3"; +} + +.entypo-lamp::before { + content: "\1f4a1"; +} + +.entypo-light-down::before { + content: "\1f505"; +} + +.entypo-light-up::before { + content: "\1f506"; +} + +.entypo-adjust::before { + content: "\25d1"; +} + +.entypo-block::before { + content: "\1f6ab"; +} + +.entypo-resize-full::before { + content: "\e744"; +} + +.entypo-resize-small::before { + content: "\e746"; +} + +.entypo-popup::before { + content: "\e74c"; +} + +.entypo-publish::before { + content: "\e74d"; +} + +.entypo-window::before { + content: "\e74e"; +} + +.entypo-arrow-combo::before { + content: "\e74f"; +} + +.entypo-down-circled::before { + content: "\e758"; +} + +.entypo-left-circled::before { + content: "\e759"; +} + +.entypo-right-circled::before { + content: "\e75a"; +} + +.entypo-up-circled::before { + content: "\e75b"; +} + +.entypo-down-open::before { + content: "\e75c"; +} + +.entypo-left-open::before { + content: "\e75d"; +} + +.entypo-right-open::before { + content: "\e75e"; +} + +.entypo-up-open::before { + content: "\e75f"; +} + +.entypo-down-open-mini::before { + content: "\e760"; +} + +.entypo-left-open-mini::before { + content: "\e761"; +} + +.entypo-right-open-mini::before { + content: "\e762"; +} + +.entypo-up-open-mini::before { + content: "\e763"; +} + +.entypo-down-open-big::before { + content: "\e764"; +} + +.entypo-left-open-big::before { + content: "\e765"; +} + +.entypo-right-open-big::before { + content: "\e766"; +} + +.entypo-up-open-big::before { + content: "\e767"; +} + +.entypo-down::before { + content: "\2b07"; +} + +.entypo-left::before { + content: "\2b05"; +} + +.entypo-right::before { + content: "\27a1"; +} + +.entypo-up::before { + content: "\2b06"; +} + +.entypo-down-dir::before { + content: "\25be"; +} + +.entypo-left-dir::before { + content: "\25c2"; +} + +.entypo-right-dir::before { + content: "\25b8"; +} + +.entypo-up-dir::before { + content: "\25b4"; +} + +.entypo-down-bold::before { + content: "\e4b0"; +} + +.entypo-left-bold::before { + content: "\e4ad"; +} + +.entypo-right-bold::before { + content: "\e4ae"; +} + +.entypo-up-bold::before { + content: "\e4af"; +} + +.entypo-down-thin::before { + content: "\2193"; +} + +.entypo-left-thin::before { + content: "\2190"; +} + +.entypo-right-thin::before { + content: "\2192"; +} + +.entypo-up-thin::before { + content: "\2191"; +} + +.entypo-ccw::before { + content: "\27f2"; +} + +.entypo-cw::before { + content: "\27f3"; +} + +.entypo-arrows-ccw::before { + content: "\1f504"; +} + +.entypo-level-down::before { + content: "\21b3"; +} + +.entypo-level-up::before { + content: "\21b0"; +} + +.entypo-shuffle::before { + content: "\1f500"; +} + +.entypo-loop::before { + content: "\1f501"; +} + +.entypo-switch::before { + content: "\21c6"; +} + +.entypo-play::before { + content: "\25b6"; +} + +.entypo-stop::before { + content: "\25a0"; +} + +.entypo-pause::before { + content: "\2389"; +} + +.entypo-record::before { + content: "\26ab"; +} + +.entypo-to-end::before { + content: "\23ed"; +} + +.entypo-to-start::before { + content: "\23ee"; +} + +.entypo-fast-forward::before { + content: "\23e9"; +} + +.entypo-fast-backward::before { + content: "\23ea"; +} + +.entypo-progress-0::before { + content: "\e768"; +} + +.entypo-progress-1::before { + content: "\e769"; +} + +.entypo-progress-2::before { + content: "\e76a"; +} + +.entypo-progress-3::before { + content: "\e76b"; +} + +.entypo-target::before { + content: "\1f3af"; +} + +.entypo-palette::before { + content: "\1f3a8"; +} + +.entypo-list::before { + content: "\e005"; +} + +.entypo-list-add::before { + content: "\e003"; +} + +.entypo-signal::before { + content: "\1f4f6"; +} + +.entypo-trophy::before { + content: "\1f3c6"; +} + +.entypo-battery::before { + content: "\1f50b"; +} + +.entypo-back-in-time::before { + content: "\e771"; +} + +.entypo-monitor::before { + content: "\1f4bb"; +} + +.entypo-mobile::before { + content: "\1f4f1"; +} + +.entypo-network::before { + content: "\e776"; +} + +.entypo-cd::before { + content: "\1f4bf"; +} + +.entypo-inbox::before { + content: "\e777"; +} + +.entypo-install::before { + content: "\e778"; +} + +.entypo-globe::before { + content: "\1f30e"; +} + +.entypo-cloud::before { + content: "\2601"; +} + +.entypo-cloud-thunder::before { + content: "\26c8"; +} + +.entypo-flash::before { + content: "\26a1"; +} + +.entypo-moon::before { + content: "\263d"; +} + +.entypo-flight::before { + content: "\2708"; +} + +.entypo-paper-plane::before { + content: "\e79b"; +} + +.entypo-leaf::before { + content: "\1f342"; +} + +.entypo-lifebuoy::before { + content: "\e788"; +} + +.entypo-mouse::before { + content: "\e789"; +} + +.entypo-briefcase::before { + content: "\1f4bc"; +} + +.entypo-suitcase::before { + content: "\e78e"; +} + +.entypo-dot::before { + content: "\e78b"; +} + +.entypo-dot-2::before { + content: "\e78c"; +} + +.entypo-dot-3::before { + content: "\e78d"; +} + +.entypo-brush::before { + content: "\e79a"; +} + +.entypo-magnet::before { + content: "\e7a1"; +} + +.entypo-infinity::before { + content: "\221e"; +} + +.entypo-erase::before { + content: "\232b"; +} + +.entypo-chart-pie::before { + content: "\e751"; +} + +.entypo-chart-line::before { + content: "\1f4c8"; +} + +.entypo-chart-bar::before { + content: "\1f4ca"; +} + +.entypo-chart-area::before { + content: "\1f53e"; +} + +.entypo-tape::before { + content: "\2707"; +} + +.entypo-graduation-cap::before { + content: "\1f393"; +} + +.entypo-language::before { + content: "\e752"; +} + +.entypo-ticket::before { + content: "\1f3ab"; +} + +.entypo-water::before { + content: "\1f4a6"; +} + +.entypo-droplet::before { + content: "\1f4a7"; +} + +.entypo-air::before { + content: "\e753"; +} + +.entypo-credit-card::before { + content: "\1f4b3"; +} + +.entypo-floppy::before { + content: "\1f4be"; +} + +.entypo-clipboard::before { + content: "\1f4cb"; +} + +.entypo-megaphone::before { + content: "\1f4e3"; +} + +.entypo-database::before { + content: "\e754"; +} + +.entypo-drive::before { + content: "\e755"; +} + +.entypo-bucket::before { + content: "\e756"; +} + +.entypo-thermometer::before { + content: "\e757"; +} + +.entypo-key::before { + content: "\1f511"; +} + +.entypo-flow-cascade::before { + content: "\e790"; +} + +.entypo-flow-branch::before { + content: "\e791"; +} + +.entypo-flow-tree::before { + content: "\e792"; +} + +.entypo-flow-line::before { + content: "\e793"; +} + +.entypo-flow-parallel::before { + content: "\e794"; +} + +.entypo-rocket::before { + content: "\1f680"; +} + +.entypo-gauge::before { + content: "\e7a2"; +} + +.entypo-traffic-cone::before { + content: "\e7a3"; +} + +.entypo-cc::before { + content: "\e7a5"; +} + +.entypo-cc-by::before { + content: "\e7a6"; +} + +.entypo-cc-nc::before { + content: "\e7a7"; +} + +.entypo-cc-nc-eu::before { + content: "\e7a8"; +} + +.entypo-cc-nc-jp::before { + content: "\e7a9"; +} + +.entypo-cc-sa::before { + content: "\e7aa"; +} + +.entypo-cc-nd::before { + content: "\e7ab"; +} + +.entypo-cc-pd::before { + content: "\e7ac"; +} + +.entypo-cc-zero::before { + content: "\e7ad"; +} + +.entypo-cc-share::before { + content: "\e7ae"; +} + +.entypo-cc-remix::before { + content: "\e7af"; +} + +.entypo-github::before { + content: "\f300"; +} + +.entypo-github-circled::before { + content: "\f301"; +} + +.entypo-flickr::before { + content: "\f303"; +} + +.entypo-flickr-circled::before { + content: "\f304"; +} + +.entypo-vimeo::before { + content: "\f306"; +} + +.entypo-vimeo-circled::before { + content: "\f307"; +} + +.entypo-twitter::before { + content: "\f309"; +} + +.entypo-twitter-circled::before { + content: "\f30a"; +} + +.entypo-facebook::before { + content: "\f30c"; +} + +.entypo-facebook-circled::before { + content: "\f30d"; +} + +.entypo-facebook-squared::before { + content: "\f30e"; +} + +.entypo-gplus::before { + content: "\f30f"; +} + +.entypo-gplus-circled::before { + content: "\f310"; +} + +.entypo-pinterest::before { + content: "\f312"; +} + +.entypo-pinterest-circled::before { + content: "\f313"; +} + +.entypo-tumblr::before { + content: "\f315"; +} + +.entypo-tumblr-circled::before { + content: "\f316"; +} + +.entypo-linkedin::before { + content: "\f318"; +} + +.entypo-linkedin-circled::before { + content: "\f319"; +} + +.entypo-dribbble::before { + content: "\f31b"; +} + +.entypo-dribbble-circled::before { + content: "\f31c"; +} + +.entypo-stumbleupon::before { + content: "\f31e"; +} + +.entypo-stumbleupon-circled::before { + content: "\f31f"; +} + +.entypo-lastfm::before { + content: "\f321"; +} + +.entypo-lastfm-circled::before { + content: "\f322"; +} + +.entypo-rdio::before { + content: "\f324"; +} + +.entypo-rdio-circled::before { + content: "\f325"; +} + +.entypo-spotify::before { + content: "\f327"; +} + +.entypo-spotify-circled::before { + content: "\f328"; +} + +.entypo-qq::before { + content: "\f32a"; +} + +.entypo-instagrem::before { + content: "\f32d"; +} + +.entypo-dropbox::before { + content: "\f330"; +} + +.entypo-evernote::before { + content: "\f333"; +} + +.entypo-flattr::before { + content: "\f336"; +} + +.entypo-skype::before { + content: "\f339"; +} + +.entypo-skype-circled::before { + content: "\f33a"; +} + +.entypo-renren::before { + content: "\f33c"; +} + +.entypo-sina-weibo::before { + content: "\f33f"; +} + +.entypo-paypal::before { + content: "\f342"; +} + +.entypo-picasa::before { + content: "\f345"; +} + +.entypo-soundcloud::before { + content: "\f348"; +} + +.entypo-mixi::before { + content: "\f34b"; +} + +.entypo-behance::before { + content: "\f34e"; +} + +.entypo-google-circles::before { + content: "\f351"; +} + +.entypo-vkontakte::before { + content: "\f354"; +} + +.entypo-smashing::before { + content: "\f357"; +} + +.entypo-sweden::before { + content: "\f601"; +} + +.entypo-db-shape::before { + content: "\f600"; +} + +.entypo-logo-db::before { + content: "\f603"; +} diff --git a/frontend/src/sass/icon-fonts/entypo/entypo.svg b/frontend/src/sass/icon-fonts/entypo/entypo.svg new file mode 100644 index 0000000..9db9aad --- /dev/null +++ b/frontend/src/sass/icon-fonts/entypo/entypo.svg @@ -0,0 +1,836 @@ + + + + + Created by FontForge 20110222 at Sun Nov 11 15:34:13 2012 + By Vitaly,,, + Copyright (C) 2012 by Daniel Bruce + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/src/sass/icon-fonts/entypo/entypo.ttf b/frontend/src/sass/icon-fonts/entypo/entypo.ttf new file mode 100644 index 0000000..331ea3a Binary files /dev/null and b/frontend/src/sass/icon-fonts/entypo/entypo.ttf differ diff --git a/frontend/src/sass/icon-fonts/entypo/entypo.woff b/frontend/src/sass/icon-fonts/entypo/entypo.woff new file mode 100644 index 0000000..b0771de Binary files /dev/null and b/frontend/src/sass/icon-fonts/entypo/entypo.woff differ diff --git a/frontend/src/sass/icon-fonts/font-awesome/font-awesome.scss b/frontend/src/sass/icon-fonts/font-awesome/font-awesome.scss new file mode 100644 index 0000000..6b733cd --- /dev/null +++ b/frontend/src/sass/icon-fonts/font-awesome/font-awesome.scss @@ -0,0 +1,3 @@ +// NOTE you need to install "font-awesome": "^4.7.0" +$fa-font-path: "~font-awesome/fonts"; +@import "font-awesome/scss/font-awesome"; diff --git a/frontend/src/sass/icon-fonts/fontelico/fontelico.eot b/frontend/src/sass/icon-fonts/fontelico/fontelico.eot new file mode 100644 index 0000000..b713c69 Binary files /dev/null and b/frontend/src/sass/icon-fonts/fontelico/fontelico.eot differ diff --git a/frontend/src/sass/icon-fonts/fontelico/fontelico.scss b/frontend/src/sass/icon-fonts/fontelico/fontelico.scss new file mode 100644 index 0000000..dabc322 --- /dev/null +++ b/frontend/src/sass/icon-fonts/fontelico/fontelico.scss @@ -0,0 +1,136 @@ +@font-face { + font-family: 'fontelico'; + font-style: normal; + font-weight: normal; + src: url('./sass/icon-fonts/fontelico/fontelico.eot'); + src: + url('./sass/icon-fonts/fontelico/fontelico.eot?#iefix') format('eot'), + url('./sass/icon-fonts/fontelico/fontelico.woff') format('woff'), + url('./sass/icon-fonts/fontelico/fontelico.ttf') format('truetype'), + url('./sass/icon-fonts/fontelico/fontelico.svg#fontelico') format('svg'); +} + +[class*="fontelico-"]::before { + font-family: 'fontelico', sans-serif; + font-style: normal; +} + +.fontelico-emo-happy::before { + content: '\e800'; +} + +.fontelico-emo-wink::before { + content: '\e801'; +} + +.fontelico-emo-wink2::before { + content: '\e813'; +} + +.fontelico-emo-unhappy::before { + content: '\e802'; +} + +.fontelico-emo-sleep::before { + content: '\e803'; +} + +.fontelico-emo-thumbsup::before { + content: '\e804'; +} + +.fontelico-emo-devil::before { + content: '\e805'; +} + +.fontelico-emo-surprised::before { + content: '\e806'; +} + +.fontelico-emo-tongue::before { + content: '\e807'; +} + +.fontelico-emo-coffee::before { + content: '\e808'; +} + +.fontelico-emo-sunglasses::before { + content: '\e809'; +} + +.fontelico-emo-displeased::before { + content: '\e80a'; +} + +.fontelico-emo-beer::before { + content: '\e80b'; +} + +.fontelico-emo-grin::before { + content: '\e80c'; +} + +.fontelico-emo-angry::before { + content: '\e80d'; +} + +.fontelico-emo-saint::before { + content: '\e80e'; +} + +.fontelico-emo-cry::before { + content: '\e80f'; +} + +.fontelico-emo-shoot::before { + content: '\e810'; +} + +.fontelico-emo-squint::before { + content: '\e811'; +} + +.fontelico-emo-laugh::before { + content: '\e812'; +} + +.fontelico-spin1::before { + content: '\e830'; +} + +.fontelico-spin2::before { + content: '\e831'; +} + +.fontelico-spin3::before { + content: '\e832'; +} + +.fontelico-spin4::before { + content: '\e834'; +} + +.fontelico-spin5::before { + content: '\e838'; +} + +.fontelico-spin6::before { + content: '\e839'; +} + +.fontelico-firefox::before { + content: '\e840'; +} + +.fontelico-chrome::before { + content: '\e841'; +} + +.fontelico-opera::before { + content: '\e842'; +} + +.fontelico-ie::before { + content: '\e843'; +} diff --git a/frontend/src/sass/icon-fonts/fontelico/fontelico.svg b/frontend/src/sass/icon-fonts/fontelico/fontelico.svg new file mode 100644 index 0000000..e3458e1 --- /dev/null +++ b/frontend/src/sass/icon-fonts/fontelico/fontelico.svg @@ -0,0 +1,148 @@ + + + + + Created by FontForge 20110222 at Wed Nov 21 15:58:00 2012 + By Vitaly,,, + Copyright (C) 2012 by Fontello project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/src/sass/icon-fonts/fontelico/fontelico.ttf b/frontend/src/sass/icon-fonts/fontelico/fontelico.ttf new file mode 100644 index 0000000..57c642e Binary files /dev/null and b/frontend/src/sass/icon-fonts/fontelico/fontelico.ttf differ diff --git a/frontend/src/sass/icon-fonts/fontelico/fontelico.woff b/frontend/src/sass/icon-fonts/fontelico/fontelico.woff new file mode 100644 index 0000000..8c7a77e Binary files /dev/null and b/frontend/src/sass/icon-fonts/fontelico/fontelico.woff differ diff --git a/frontend/src/sass/icon-fonts/glyphicons/glyphicons.eot b/frontend/src/sass/icon-fonts/glyphicons/glyphicons.eot new file mode 100644 index 0000000..b93a495 Binary files /dev/null and b/frontend/src/sass/icon-fonts/glyphicons/glyphicons.eot differ diff --git a/frontend/src/sass/icon-fonts/glyphicons/glyphicons.scss b/frontend/src/sass/icon-fonts/glyphicons/glyphicons.scss new file mode 100644 index 0000000..b770630 --- /dev/null +++ b/frontend/src/sass/icon-fonts/glyphicons/glyphicons.scss @@ -0,0 +1,1610 @@ +@font-face { + font-family: 'Glyphicons Halflings'; + src: url('./sass/icon-fonts/glyphicons/glyphicons.eot'); + src: + url('./sass/icon-fonts/glyphicons/glyphicons.eot?#iefix') format('eot'), + url('./sass/icon-fonts/glyphicons/glyphicons.woff2') format('woff2'), + url('./sass/icon-fonts/glyphicons/glyphicons.woff') format('woff'), + url('./sass/icon-fonts/glyphicons/glyphicons.ttf') format('truetype'), + url('./sass/icon-fonts/glyphicons/glyphicons.svg') format('svg'); +} + + +[class*="glyphicons-"]::before { + font-family: 'Glyphicons Halflings', sans-serif; + font-style: normal; +} + +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +// Individual icons +.glyphicon-asterisk { + &::before { + content: "\002a"; + } +} + +.glyphicon-plus { + &::before { + content: "\002b"; + } +} + +.glyphicon-euro, +.glyphicon-eur { + &::before { + content: "\20ac"; + } +} + +.glyphicon-minus { + &::before { + content: "\2212"; + } +} + +.glyphicon-cloud { + &::before { + content: "\2601"; + } +} + +.glyphicon-envelope { + &::before { + content: "\2709"; + } +} + +.glyphicon-pencil { + &::before { + content: "\270f"; + } +} + +.glyphicon-glass { + &::before { + content: "\e001"; + } +} + +.glyphicon-music { + &::before { + content: "\e002"; + } +} + +.glyphicon-search { + &::before { + content: "\e003"; + } +} + +.glyphicon-heart { + &::before { + content: "\e005"; + } +} + +.glyphicon-star { + &::before { + content: "\e006"; + } +} + +.glyphicon-star-empty { + &::before { + content: "\e007"; + } +} + +.glyphicon-user { + &::before { + content: "\e008"; + } +} + +.glyphicon-film { + &::before { + content: "\e009"; + } +} + +.glyphicon-th-large { + &::before { + content: "\e010"; + } +} + +.glyphicon-th { + &::before { + content: "\e011"; + } +} + +.glyphicon-th-list { + &::before { + content: "\e012"; + } +} + +.glyphicon-ok { + &::before { + content: "\e013"; + } +} + +.glyphicon-remove { + &::before { + content: "\e014"; + } +} + +.glyphicon-zoom-in { + &::before { + content: "\e015"; + } +} + +.glyphicon-zoom-out { + &::before { + content: "\e016"; + } +} + +.glyphicon-off { + &::before { + content: "\e017"; + } +} + +.glyphicon-signal { + &::before { + content: "\e018"; + } +} + +.glyphicon-cog { + &::before { + content: "\e019"; + } +} + +.glyphicon-trash { + &::before { + content: "\e020"; + } +} + +.glyphicon-home { + &::before { + content: "\e021"; + } +} + +.glyphicon-file { + &::before { + content: "\e022"; + } +} + +.glyphicon-time { + &::before { + content: "\e023"; + } +} + +.glyphicon-road { + &::before { + content: "\e024"; + } +} + +.glyphicon-download-alt { + &::before { + content: "\e025"; + } +} + +.glyphicon-download { + &::before { + content: "\e026"; + } +} + +.glyphicon-upload { + &::before { + content: "\e027"; + } +} + +.glyphicon-inbox { + &::before { + content: "\e028"; + } +} + +.glyphicon-play-circle { + &::before { + content: "\e029"; + } +} + +.glyphicon-repeat { + &::before { + content: "\e030"; + } +} + +.glyphicon-refresh { + &::before { + content: "\e031"; + } +} + +.glyphicon-list-alt { + &::before { + content: "\e032"; + } +} + +.glyphicon-lock { + &::before { + content: "\e033"; + } +} + +.glyphicon-flag { + &::before { + content: "\e034"; + } +} + +.glyphicon-headphones { + &::before { + content: "\e035"; + } +} + +.glyphicon-volume-off { + &::before { + content: "\e036"; + } +} + +.glyphicon-volume-down { + &::before { + content: "\e037"; + } +} + +.glyphicon-volume-up { + &::before { + content: "\e038"; + } +} + +.glyphicon-qrcode { + &::before { + content: "\e039"; + } +} + +.glyphicon-barcode { + &::before { + content: "\e040"; + } +} + +.glyphicon-tag { + &::before { + content: "\e041"; + } +} + +.glyphicon-tags { + &::before { + content: "\e042"; + } +} + +.glyphicon-book { + &::before { + content: "\e043"; + } +} + +.glyphicon-bookmark { + &::before { + content: "\e044"; + } +} + +.glyphicon-print { + &::before { + content: "\e045"; + } +} + +.glyphicon-camera { + &::before { + content: "\e046"; + } +} + +.glyphicon-font { + &::before { + content: "\e047"; + } +} + +.glyphicon-bold { + &::before { + content: "\e048"; + } +} + +.glyphicon-italic { + &::before { + content: "\e049"; + } +} + +.glyphicon-text-height { + &::before { + content: "\e050"; + } +} + +.glyphicon-text-width { + &::before { + content: "\e051"; + } +} + +.glyphicon-align-left { + &::before { + content: "\e052"; + } +} + +.glyphicon-align-center { + &::before { + content: "\e053"; + } +} + +.glyphicon-align-right { + &::before { + content: "\e054"; + } +} + +.glyphicon-align-justify { + &::before { + content: "\e055"; + } +} + +.glyphicon-list { + &::before { + content: "\e056"; + } +} + +.glyphicon-indent-left { + &::before { + content: "\e057"; + } +} + +.glyphicon-indent-right { + &::before { + content: "\e058"; + } +} + +.glyphicon-facetime-video { + &::before { + content: "\e059"; + } +} + +.glyphicon-picture { + &::before { + content: "\e060"; + } +} + +.glyphicon-map-marker { + &::before { + content: "\e062"; + } +} + +.glyphicon-adjust { + &::before { + content: "\e063"; + } +} + +.glyphicon-tint { + &::before { + content: "\e064"; + } +} + +.glyphicon-edit { + &::before { + content: "\e065"; + } +} + +.glyphicon-share { + &::before { + content: "\e066"; + } +} + +.glyphicon-check { + &::before { + content: "\e067"; + } +} + +.glyphicon-move { + &::before { + content: "\e068"; + } +} + +.glyphicon-step-backward { + &::before { + content: "\e069"; + } +} + +.glyphicon-fast-backward { + &::before { + content: "\e070"; + } +} + +.glyphicon-backward { + &::before { + content: "\e071"; + } +} + +.glyphicon-play { + &::before { + content: "\e072"; + } +} + +.glyphicon-pause { + &::before { + content: "\e073"; + } +} + +.glyphicon-stop { + &::before { + content: "\e074"; + } +} + +.glyphicon-forward { + &::before { + content: "\e075"; + } +} + +.glyphicon-fast-forward { + &::before { + content: "\e076"; + } +} + +.glyphicon-step-forward { + &::before { + content: "\e077"; + } +} + +.glyphicon-eject { + &::before { + content: "\e078"; + } +} + +.glyphicon-chevron-left { + &::before { + content: "\e079"; + } +} + +.glyphicon-chevron-right { + &::before { + content: "\e080"; + } +} + +.glyphicon-plus-sign { + &::before { + content: "\e081"; + } +} + +.glyphicon-minus-sign { + &::before { + content: "\e082"; + } +} + +.glyphicon-remove-sign { + &::before { + content: "\e083"; + } +} + +.glyphicon-ok-sign { + &::before { + content: "\e084"; + } +} + +.glyphicon-question-sign { + &::before { + content: "\e085"; + } +} + +.glyphicon-info-sign { + &::before { + content: "\e086"; + } +} + +.glyphicon-screenshot { + &::before { + content: "\e087"; + } +} + +.glyphicon-remove-circle { + &::before { + content: "\e088"; + } +} + +.glyphicon-ok-circle { + &::before { + content: "\e089"; + } +} + +.glyphicon-ban-circle { + &::before { + content: "\e090"; + } +} + +.glyphicon-arrow-left { + &::before { + content: "\e091"; + } +} + +.glyphicon-arrow-right { + &::before { + content: "\e092"; + } +} + +.glyphicon-arrow-up { + &::before { + content: "\e093"; + } +} + +.glyphicon-arrow-down { + &::before { + content: "\e094"; + } +} + +.glyphicon-share-alt { + &::before { + content: "\e095"; + } +} + +.glyphicon-resize-full { + &::before { + content: "\e096"; + } +} + +.glyphicon-resize-small { + &::before { + content: "\e097"; + } +} + +.glyphicon-exclamation-sign { + &::before { + content: "\e101"; + } +} + +.glyphicon-gift { + &::before { + content: "\e102"; + } +} + +.glyphicon-leaf { + &::before { + content: "\e103"; + } +} + +.glyphicon-fire { + &::before { + content: "\e104"; + } +} + +.glyphicon-eye-open { + &::before { + content: "\e105"; + } +} + +.glyphicon-eye-close { + &::before { + content: "\e106"; + } +} + +.glyphicon-warning-sign { + &::before { + content: "\e107"; + } +} + +.glyphicon-plane { + &::before { + content: "\e108"; + } +} + +.glyphicon-calendar { + &::before { + content: "\e109"; + } +} + +.glyphicon-random { + &::before { + content: "\e110"; + } +} + +.glyphicon-comment { + &::before { + content: "\e111"; + } +} + +.glyphicon-magnet { + &::before { + content: "\e112"; + } +} + +.glyphicon-chevron-up { + &::before { + content: "\e113"; + } +} + +.glyphicon-chevron-down { + &::before { + content: "\e114"; + } +} + +.glyphicon-retweet { + &::before { + content: "\e115"; + } +} + +.glyphicon-shopping-cart { + &::before { + content: "\e116"; + } +} + +.glyphicon-folder-close { + &::before { + content: "\e117"; + } +} + +.glyphicon-folder-open { + &::before { + content: "\e118"; + } +} + +.glyphicon-resize-vertical { + &::before { + content: "\e119"; + } +} + +.glyphicon-resize-horizontal { + &::before { + content: "\e120"; + } +} + +.glyphicon-hdd { + &::before { + content: "\e121"; + } +} + +.glyphicon-bullhorn { + &::before { + content: "\e122"; + } +} + +.glyphicon-bell { + &::before { + content: "\e123"; + } +} + +.glyphicon-certificate { + &::before { + content: "\e124"; + } +} + +.glyphicon-thumbs-up { + &::before { + content: "\e125"; + } +} + +.glyphicon-thumbs-down { + &::before { + content: "\e126"; + } +} + +.glyphicon-hand-right { + &::before { + content: "\e127"; + } +} + +.glyphicon-hand-left { + &::before { + content: "\e128"; + } +} + +.glyphicon-hand-up { + &::before { + content: "\e129"; + } +} + +.glyphicon-hand-down { + &::before { + content: "\e130"; + } +} + +.glyphicon-circle-arrow-right { + &::before { + content: "\e131"; + } +} + +.glyphicon-circle-arrow-left { + &::before { + content: "\e132"; + } +} + +.glyphicon-circle-arrow-up { + &::before { + content: "\e133"; + } +} + +.glyphicon-circle-arrow-down { + &::before { + content: "\e134"; + } +} + +.glyphicon-globe { + &::before { + content: "\e135"; + } +} + +.glyphicon-wrench { + &::before { + content: "\e136"; + } +} + +.glyphicon-tasks { + &::before { + content: "\e137"; + } +} + +.glyphicon-filter { + &::before { + content: "\e138"; + } +} + +.glyphicon-briefcase { + &::before { + content: "\e139"; + } +} + +.glyphicon-fullscreen { + &::before { + content: "\e140"; + } +} + +.glyphicon-dashboard { + &::before { + content: "\e141"; + } +} + +.glyphicon-paperclip { + &::before { + content: "\e142"; + } +} + +.glyphicon-heart-empty { + &::before { + content: "\e143"; + } +} + +.glyphicon-link { + &::before { + content: "\e144"; + } +} + +.glyphicon-phone { + &::before { + content: "\e145"; + } +} + +.glyphicon-pushpin { + &::before { + content: "\e146"; + } +} + +.glyphicon-usd { + &::before { + content: "\e148"; + } +} + +.glyphicon-gbp { + &::before { + content: "\e149"; + } +} + +.glyphicon-sort { + &::before { + content: "\e150"; + } +} + +.glyphicon-sort-by-alphabet { + &::before { + content: "\e151"; + } +} + +.glyphicon-sort-by-alphabet-alt { + &::before { + content: "\e152"; + } +} + +.glyphicon-sort-by-order { + &::before { + content: "\e153"; + } +} + +.glyphicon-sort-by-order-alt { + &::before { + content: "\e154"; + } +} + +.glyphicon-sort-by-attributes { + &::before { + content: "\e155"; + } +} + +.glyphicon-sort-by-attributes-alt { + &::before { + content: "\e156"; + } +} + +.glyphicon-unchecked { + &::before { + content: "\e157"; + } +} + +.glyphicon-expand { + &::before { + content: "\e158"; + } +} + +.glyphicon-collapse-down { + &::before { + content: "\e159"; + } +} + +.glyphicon-collapse-up { + &::before { + content: "\e160"; + } +} + +.glyphicon-log-in { + &::before { + content: "\e161"; + } +} + +.glyphicon-flash { + &::before { + content: "\e162"; + } +} + +.glyphicon-log-out { + &::before { + content: "\e163"; + } +} + +.glyphicon-new-window { + &::before { + content: "\e164"; + } +} + +.glyphicon-record { + &::before { + content: "\e165"; + } +} + +.glyphicon-save { + &::before { + content: "\e166"; + } +} + +.glyphicon-open { + &::before { + content: "\e167"; + } +} + +.glyphicon-saved { + &::before { + content: "\e168"; + } +} + +.glyphicon-import { + &::before { + content: "\e169"; + } +} + +.glyphicon-export { + &::before { + content: "\e170"; + } +} + +.glyphicon-send { + &::before { + content: "\e171"; + } +} + +.glyphicon-floppy-disk { + &::before { + content: "\e172"; + } +} + +.glyphicon-floppy-saved { + &::before { + content: "\e173"; + } +} + +.glyphicon-floppy-remove { + &::before { + content: "\e174"; + } +} + +.glyphicon-floppy-save { + &::before { + content: "\e175"; + } +} + +.glyphicon-floppy-open { + &::before { + content: "\e176"; + } +} + +.glyphicon-credit-card { + &::before { + content: "\e177"; + } +} + +.glyphicon-transfer { + &::before { + content: "\e178"; + } +} + +.glyphicon-cutlery { + &::before { + content: "\e179"; + } +} + +.glyphicon-header { + &::before { + content: "\e180"; + } +} + +.glyphicon-compressed { + &::before { + content: "\e181"; + } +} + +.glyphicon-earphone { + &::before { + content: "\e182"; + } +} + +.glyphicon-phone-alt { + &::before { + content: "\e183"; + } +} + +.glyphicon-tower { + &::before { + content: "\e184"; + } +} + +.glyphicon-stats { + &::before { + content: "\e185"; + } +} + +.glyphicon-sd-video { + &::before { + content: "\e186"; + } +} + +.glyphicon-hd-video { + &::before { + content: "\e187"; + } +} + +.glyphicon-subtitles { + &::before { + content: "\e188"; + } +} + +.glyphicon-sound-stereo { + &::before { + content: "\e189"; + } +} + +.glyphicon-sound-dolby { + &::before { + content: "\e190"; + } +} + +.glyphicon-sound-5-1 { + &::before { + content: "\e191"; + } +} + +.glyphicon-sound-6-1 { + &::before { + content: "\e192"; + } +} + +.glyphicon-sound-7-1 { + &::before { + content: "\e193"; + } +} + +.glyphicon-copyright-mark { + &::before { + content: "\e194"; + } +} + +.glyphicon-registration-mark { + &::before { + content: "\e195"; + } +} + +.glyphicon-cloud-download { + &::before { + content: "\e197"; + } +} + +.glyphicon-cloud-upload { + &::before { + content: "\e198"; + } +} + +.glyphicon-tree-conifer { + &::before { + content: "\e199"; + } +} + +.glyphicon-tree-deciduous { + &::before { + content: "\e200"; + } +} + +.glyphicon-cd { + &::before { + content: "\e201"; + } +} + +.glyphicon-save-file { + &::before { + content: "\e202"; + } +} + +.glyphicon-open-file { + &::before { + content: "\e203"; + } +} + +.glyphicon-level-up { + &::before { + content: "\e204"; + } +} + +.glyphicon-copy { + &::before { + content: "\e205"; + } +} + +.glyphicon-paste { + &::before { + content: "\e206"; + } +} + +// The following 2 Glyphicons are omitted for the time being because +// they currently use Unicode codepoints that are outside the +// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle +// non-BMP codepoints in CSS string escapes, and thus can't display these two icons. +// Notably, the bug affects some older versions of the Android Browser. +// More info: https://github.com/twbs/bootstrap/issues/10106 +// .glyphicon-door { &:before { content: "\1f6aa"; } } +// .glyphicon-key { &:before { content: "\1f511"; } } +.glyphicon-alert { + &::before { + content: "\e209"; + } +} + +.glyphicon-equalizer { + &::before { + content: "\e210"; + } +} + +.glyphicon-king { + &::before { + content: "\e211"; + } +} + +.glyphicon-queen { + &::before { + content: "\e212"; + } +} + +.glyphicon-pawn { + &::before { + content: "\e213"; + } +} + +.glyphicon-bishop { + &::before { + content: "\e214"; + } +} + +.glyphicon-knight { + &::before { + content: "\e215"; + } +} + +.glyphicon-baby-formula { + &::before { + content: "\e216"; + } +} + +.glyphicon-tent { + &::before { + content: "\26fa"; + } +} + +.glyphicon-blackboard { + &::before { + content: "\e218"; + } +} + +.glyphicon-bed { + &::before { + content: "\e219"; + } +} + +.glyphicon-apple { + &::before { + content: "\f8ff"; + } +} + +.glyphicon-erase { + &::before { + content: "\e221"; + } +} + +.glyphicon-hourglass { + &::before { + content: "\231b"; + } +} + +.glyphicon-lamp { + &::before { + content: "\e223"; + } +} + +.glyphicon-duplicate { + &::before { + content: "\e224"; + } +} + +.glyphicon-piggy-bank { + &::before { + content: "\e225"; + } +} + +.glyphicon-scissors { + &::before { + content: "\e226"; + } +} + +.glyphicon-bitcoin { + &::before { + content: "\e227"; + } +} + +.glyphicon-btc { + &::before { + content: "\e227"; + } +} + +.glyphicon-xbt { + &::before { + content: "\e227"; + } +} + +.glyphicon-yen { + &::before { + content: "\00a5"; + } +} + +.glyphicon-jpy { + &::before { + content: "\00a5"; + } +} + +.glyphicon-ruble { + &::before { + content: "\20bd"; + } +} + +.glyphicon-rub { + &::before { + content: "\20bd"; + } +} + +.glyphicon-scale { + &::before { + content: "\e230"; + } +} + +.glyphicon-ice-lolly { + &::before { + content: "\e231"; + } +} + +.glyphicon-ice-lolly-tasted { + &::before { + content: "\e232"; + } +} + +.glyphicon-education { + &::before { + content: "\e233"; + } +} + +.glyphicon-option-horizontal { + &::before { + content: "\e234"; + } +} + +.glyphicon-option-vertical { + &::before { + content: "\e235"; + } +} + +.glyphicon-menu-hamburger { + &::before { + content: "\e236"; + } +} + +.glyphicon-modal-window { + &::before { + content: "\e237"; + } +} + +.glyphicon-oil { + &::before { + content: "\e238"; + } +} + +.glyphicon-grain { + &::before { + content: "\e239"; + } +} + +.glyphicon-sunglasses { + &::before { + content: "\e240"; + } +} + +.glyphicon-text-size { + &::before { + content: "\e241"; + } +} + +.glyphicon-text-color { + &::before { + content: "\e242"; + } +} + +.glyphicon-text-background { + &::before { + content: "\e243"; + } +} + +.glyphicon-object-align-top { + &::before { + content: "\e244"; + } +} + +.glyphicon-object-align-bottom { + &::before { + content: "\e245"; + } +} + +.glyphicon-object-align-horizontal { + &::before { + content: "\e246"; + } +} + +.glyphicon-object-align-left { + &::before { + content: "\e247"; + } +} + +.glyphicon-object-align-vertical { + &::before { + content: "\e248"; + } +} + +.glyphicon-object-align-right { + &::before { + content: "\e249"; + } +} + +.glyphicon-triangle-right { + &::before { + content: "\e250"; + } +} + +.glyphicon-triangle-left { + &::before { + content: "\e251"; + } +} + +.glyphicon-triangle-bottom { + &::before { + content: "\e252"; + } +} + +.glyphicon-triangle-top { + &::before { + content: "\e253"; + } +} + +.glyphicon-console { + &::before { + content: "\e254"; + } +} + +.glyphicon-superscript { + &::before { + content: "\e255"; + } +} + +.glyphicon-subscript { + &::before { + content: "\e256"; + } +} + +.glyphicon-menu-left { + &::before { + content: "\e257"; + } +} + +.glyphicon-menu-right { + &::before { + content: "\e258"; + } +} + +.glyphicon-menu-down { + &::before { + content: "\e259"; + } +} + +.glyphicon-menu-up { + &::before { + content: "\e260"; + } +} diff --git a/frontend/src/sass/icon-fonts/glyphicons/glyphicons.svg b/frontend/src/sass/icon-fonts/glyphicons/glyphicons.svg new file mode 100644 index 0000000..61bf7fe --- /dev/null +++ b/frontend/src/sass/icon-fonts/glyphicons/glyphicons.svg @@ -0,0 +1,550 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/src/sass/icon-fonts/glyphicons/glyphicons.ttf b/frontend/src/sass/icon-fonts/glyphicons/glyphicons.ttf new file mode 100644 index 0000000..1413fc6 Binary files /dev/null and b/frontend/src/sass/icon-fonts/glyphicons/glyphicons.ttf differ diff --git a/frontend/src/sass/icon-fonts/glyphicons/glyphicons.woff b/frontend/src/sass/icon-fonts/glyphicons/glyphicons.woff new file mode 100644 index 0000000..9e61285 Binary files /dev/null and b/frontend/src/sass/icon-fonts/glyphicons/glyphicons.woff differ diff --git a/frontend/src/sass/icon-fonts/glyphicons/glyphicons.woff2 b/frontend/src/sass/icon-fonts/glyphicons/glyphicons.woff2 new file mode 100644 index 0000000..64539b5 Binary files /dev/null and b/frontend/src/sass/icon-fonts/glyphicons/glyphicons.woff2 differ diff --git a/frontend/src/sass/icon-fonts/iconicfill/iconicfill.eot b/frontend/src/sass/icon-fonts/iconicfill/iconicfill.eot new file mode 100644 index 0000000..4dd865f Binary files /dev/null and b/frontend/src/sass/icon-fonts/iconicfill/iconicfill.eot differ diff --git a/frontend/src/sass/icon-fonts/iconicfill/iconicfill.scss b/frontend/src/sass/icon-fonts/iconicfill/iconicfill.scss new file mode 100644 index 0000000..6f87dbb --- /dev/null +++ b/frontend/src/sass/icon-fonts/iconicfill/iconicfill.scss @@ -0,0 +1,620 @@ +@font-face { + font-family: 'IconicFill'; + font-style: normal; + font-weight: normal; + src: url('./sass/icon-fonts/iconicfill/iconicfill.eot'); + src: + url('./sass/icon-fonts/iconicfill/iconicfill.eot?#iefix') format('eot'), + url('./sass/icon-fonts/iconicfill/iconicfill.woff') format('woff'), + url('./sass/icon-fonts/iconicfill/iconicfill.ttf') format('truetype'), + url('./sass/icon-fonts/iconicfill/iconicfill.svg#IconicFill') format('svg'); +} + +[class*="iconicfill-"]::before { + font-family: 'IconicFill', sans-serif; + font-style: normal; +} + +.iconicfill-lightbulb::before { + content: '\e063'; +} + +.iconicfill-equalizer::before { + content: '\e052'; +} + +.iconicfill-brush-alt::before { + content: '\e01c'; +} + +.iconicfill-move::before { + content: '\e03e'; +} + +.iconicfill-tag-fill::before { + content: '\e02b'; +} + +.iconicfill-book-alt2::before { + content: '\e06a'; +} + +.iconicfill-layers::before { + content: '\e01f'; +} + +.iconicfill-chat-alt-fill::before { + content: '\e007'; +} + +.iconicfill-layers-alt::before { + content: '\e020'; +} + +.iconicfill-cloud-upload::before { + content: '\e045'; +} + +.iconicfill-chart-alt::before { + content: '\e029'; +} + +.iconicfill-fullscreen-exit-alt::before { + content: '\e051'; +} + +.iconicfill-cloud-download::before { + content: '\e044'; +} + +.iconicfill-paperclip::before { + content: '\e08a'; +} + +.iconicfill-heart-fill::before { + content: '\2764'; +} + +.iconicfill-mail::before { + content: '\2709'; +} + +.iconicfill-pen-alt-fill::before { + content: '\e005'; +} + +.iconicfill-check-alt::before { + content: '\2714'; +} + +.iconicfill-battery-charging::before { + content: '\e05d'; +} + +.iconicfill-lock-fill::before { + content: '\e075'; +} + +.iconicfill-stop::before { + content: '\e04a'; +} + +.iconicfill-arrow-up::before { + content: '\2191'; +} + +.iconicfill-move-horizontal::before { + content: '\e038'; +} + +.iconicfill-compass::before { + content: '\e021'; +} + +.iconicfill-minus-alt::before { + content: '\e009'; +} + +.iconicfill-battery-empty::before { + content: '\e05c'; +} + +.iconicfill-comment-fill::before { + content: '\e06d'; +} + +.iconicfill-map-pin-alt::before { + content: '\e002'; +} + +.iconicfill-question-mark::before { + content: '\003f'; +} + +.iconicfill-list::before { + content: '\e055'; +} + +.iconicfill-upload::before { + content: '\e043'; +} + +.iconicfill-reload::before { + content: '\e030'; +} + +.iconicfill-loop-alt4::before { + content: '\e035'; +} + +.iconicfill-loop-alt3::before { + content: '\e034'; +} + +.iconicfill-loop-alt2::before { + content: '\e033'; +} + +.iconicfill-loop-alt1::before { + content: '\e032'; +} + +.iconicfill-left-quote::before { + content: '\275d'; +} + +.iconicfill-x::before { + content: '\2717'; +} + +.iconicfill-last::before { + content: '\e04d'; +} + +.iconicfill-bars::before { + content: '\e06f'; +} + +.iconicfill-arrow-left::before { + content: '\2190'; +} + +.iconicfill-arrow-down::before { + content: '\2193'; +} + +.iconicfill-download::before { + content: '\e042'; +} + +.iconicfill-home::before { + content: '\2302'; +} + +.iconicfill-calendar::before { + content: '\e001'; +} + +.iconicfill-right-quote-alt::before { + content: '\e012'; +} + +.iconicfill-unlock-fill::before { + content: '\e076'; +} + +.iconicfill-fullscreen::before { + content: '\e04e'; +} + +.iconicfill-dial::before { + content: '\e058'; +} + +.iconicfill-plus-alt::before { + content: '\e008'; +} + +.iconicfill-clock::before { + content: '\e079'; +} + +.iconicfill-movie::before { + content: '\e060'; +} + +.iconicfill-steering-wheel::before { + content: '\e024'; +} + +.iconicfill-pen::before { + content: '\270e'; +} + +.iconicfill-pin::before { + content: '\e067'; +} + +.iconicfill-denied::before { + content: '\26d4'; +} + +.iconicfill-left-quote-alt::before { + content: '\e011'; +} + +.iconicfill-volume-mute::before { + content: '\e071'; +} + +.iconicfill-umbrella::before { + content: '\2602'; +} + +.iconicfill-list-nested::before { + content: '\e056'; +} + +.iconicfill-arrow-up-alt1::before { + content: '\e014'; +} + +.iconicfill-undo::before { + content: '\e02f'; +} + +.iconicfill-pause::before { + content: '\e049'; +} + +.iconicfill-bolt::before { + content: '\26a1'; +} + +.iconicfill-article::before { + content: '\e053'; +} + +.iconicfill-read-more::before { + content: '\e054'; +} + +.iconicfill-beaker::before { + content: '\e023'; +} + +.iconicfill-beaker-alt::before { + content: '\e010'; +} + +.iconicfill-battery-full::before { + content: '\e073'; +} + +.iconicfill-arrow-right::before { + content: '\2192'; +} + +.iconicfill-iphone::before { + content: '\e06e'; +} + +.iconicfill-arrow-up-alt2::before { + content: '\e018'; +} + +.iconicfill-cog::before { + content: '\2699'; +} + +.iconicfill-award-fill::before { + content: '\e022'; +} + +.iconicfill-first::before { + content: '\e04c'; +} + +.iconicfill-trash-fill::before { + content: '\e05a'; +} + +.iconicfill-image::before { + content: '\e027'; +} + +.iconicfill-comment-alt1-fill::before { + content: '\e003'; +} + +.iconicfill-cd::before { + content: '\e064'; +} + +.iconicfill-right-quote::before { + content: '\275e'; +} + +.iconicfill-brush::before { + content: '\e01b'; +} + +.iconicfill-cloud::before { + content: '\2601'; +} + +.iconicfill-eye::before { + content: '\e025'; +} + +.iconicfill-play-alt::before { + content: '\e048'; +} + +.iconicfill-transfer::before { + content: '\e041'; +} + +.iconicfill-pen-alt2::before { + content: '\e006'; +} + +.iconicfill-camera::before { + content: '\e070'; +} + +.iconicfill-move-horizontal-alt2::before { + content: '\e03a'; +} + +.iconicfill-curved-arrow::before { + content: '\2935'; +} + +.iconicfill-move-horizontal-alt1::before { + content: '\e039'; +} + +.iconicfill-aperture::before { + content: '\e026'; +} + +.iconicfill-reload-alt::before { + content: '\e031'; +} + +.iconicfill-magnifying-glass::before { + content: '\e074'; +} + +.iconicfill-calendar-alt-fill::before { + content: '\e06c'; +} + +.iconicfill-fork::before { + content: '\e046'; +} + +.iconicfill-box::before { + content: '\e06b'; +} + +.iconicfill-map-pin-fill::before { + content: '\e068'; +} + +.iconicfill-bars-alt::before { + content: '\e00a'; +} + +.iconicfill-volume::before { + content: '\e072'; +} + +.iconicfill-x-alt::before { + content: '\2718'; +} + +.iconicfill-link::before { + content: '\e077'; +} + +.iconicfill-move-vertical::before { + content: '\e03b'; +} + +.iconicfill-eyedropper::before { + content: '\e01e'; +} + +.iconicfill-spin::before { + content: '\e036'; +} + +.iconicfill-rss::before { + content: '\e02c'; +} + +.iconicfill-info::before { + content: '\2139'; +} + +.iconicfill-target::before { + content: '\e02a'; +} + +.iconicfill-cursor::before { + content: '\e057'; +} + +.iconicfill-key-fill::before { + content: '\26bf'; +} + +.iconicfill-minus::before { + content: '\2796'; +} + +.iconicfill-book-alt::before { + content: '\e00b'; +} + +.iconicfill-headphones::before { + content: '\e061'; +} + +.iconicfill-hash::before { + content: '\0023'; +} + +.iconicfill-arrow-left-alt1::before { + content: '\e013'; +} + +.iconicfill-arrow-left-alt2::before { + content: '\e017'; +} + +.iconicfill-fullscreen-exit::before { + content: '\e050'; +} + +.iconicfill-share::before { + content: '\e02e'; +} + +.iconicfill-fullscreen-alt::before { + content: '\e04f'; +} + +.iconicfill-comment-alt2-fill::before { + content: '\e004'; +} + +.iconicfill-moon-fill::before { + content: '\263e'; +} + +.iconicfill-at::before { + content: '\0040'; +} + +.iconicfill-chat::before { + content: '\e05e'; +} + +.iconicfill-move-vertical-alt2::before { + content: '\e03d'; +} + +.iconicfill-move-vertical-alt1::before { + content: '\e03c'; +} + +.iconicfill-check::before { + content: '\2713'; +} + +.iconicfill-mic::before { + content: '\e05f'; +} + +.iconicfill-book::before { + content: '\e069'; +} + +.iconicfill-move-alt1::before { + content: '\e03f'; +} + +.iconicfill-move-alt2::before { + content: '\e040'; +} + +.iconicfill-document-fill::before { + content: '\e066'; +} + +.iconicfill-plus::before { + content: '\2795'; +} + +.iconicfill-wrench::before { + content: '\e078'; +} + +.iconicfill-play::before { + content: '\e047'; +} + +.iconicfill-star::before { + content: '\2605'; +} + +.iconicfill-document-alt-fill::before { + content: '\e000'; +} + +.iconicfill-chart::before { + content: '\e028'; +} + +.iconicfill-rain::before { + content: '\26c6'; +} + +.iconicfill-folder-fill::before { + content: '\e065'; +} + +.iconicfill-new-window::before { + content: '\e059'; +} + +.iconicfill-user::before { + content: '\e062'; +} + +.iconicfill-battery-half::before { + content: '\e05b'; +} + +.iconicfill-aperture-alt::before { + content: '\e00c'; +} + +.iconicfill-eject::before { + content: '\e04b'; +} + +.iconicfill-arrow-down-alt1::before { + content: '\e016'; +} + +.iconicfill-pilcrow::before { + content: '\00b6'; +} + +.iconicfill-arrow-down-alt2::before { + content: '\e01a'; +} + +.iconicfill-arrow-right-alt1::before { + content: '\e015'; +} + +.iconicfill-arrow-right-alt2::before { + content: '\e019'; +} + +.iconicfill-rss-alt::before { + content: '\e02d'; +} + +.iconicfill-spin-alt::before { + content: '\e037'; +} + +.iconicfill-sun-fill::before { + content: '\2600'; +} diff --git a/frontend/src/sass/icon-fonts/iconicfill/iconicfill.svg b/frontend/src/sass/icon-fonts/iconicfill/iconicfill.svg new file mode 100644 index 0000000..5ffdb2b --- /dev/null +++ b/frontend/src/sass/icon-fonts/iconicfill/iconicfill.svg @@ -0,0 +1,541 @@ + + + + + Created by FontForge 20110222 at Tue Sep 18 01:22:17 2012 + By PJ Onori,,, + Icons by PJ Onori, font creation script by Yann + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/src/sass/icon-fonts/iconicfill/iconicfill.ttf b/frontend/src/sass/icon-fonts/iconicfill/iconicfill.ttf new file mode 100644 index 0000000..aa98a0f Binary files /dev/null and b/frontend/src/sass/icon-fonts/iconicfill/iconicfill.ttf differ diff --git a/frontend/src/sass/icon-fonts/iconicfill/iconicfill.woff b/frontend/src/sass/icon-fonts/iconicfill/iconicfill.woff new file mode 100644 index 0000000..c0cdb56 Binary files /dev/null and b/frontend/src/sass/icon-fonts/iconicfill/iconicfill.woff differ diff --git a/frontend/src/sass/icon-fonts/iconicstroke/iconicstroke.eot b/frontend/src/sass/icon-fonts/iconicstroke/iconicstroke.eot new file mode 100644 index 0000000..3a0ad69 Binary files /dev/null and b/frontend/src/sass/icon-fonts/iconicstroke/iconicstroke.eot differ diff --git a/frontend/src/sass/icon-fonts/iconicstroke/iconicstroke.scss b/frontend/src/sass/icon-fonts/iconicstroke/iconicstroke.scss new file mode 100644 index 0000000..c17a40b --- /dev/null +++ b/frontend/src/sass/icon-fonts/iconicstroke/iconicstroke.scss @@ -0,0 +1,620 @@ +@font-face { + font-family: 'IconicStroke'; + font-style: normal; + font-weight: normal; + src: url('./sass/icon-fonts/iconicstroke/iconicstroke.eot'); + src: + url('./sass/icon-fonts/iconicstroke/iconicstroke.eot?#iefix') format('eot'), + url('./sass/icon-fonts/iconicstroke/iconicstroke.woff') format('woff'), + url('./sass/icon-fonts/iconicstroke/iconicstroke.ttf') format('truetype'), + url('./sass/icon-fonts/iconicstroke/iconicstroke.svg#IconicStroke') format('svg'); +} + +[class*="iconicstroke-"]::before { + font-family: 'IconicStroke', sans-serif; + font-style: normal; +} + +.iconicstroke-lightbulb::before { + content: '\e063'; +} + +.iconicstroke-equalizer::before { + content: '\e052'; +} + +.iconicstroke-map-pin-stroke::before { + content: '\e068'; +} + +.iconicstroke-brush-alt::before { + content: '\e01c'; +} + +.iconicstroke-move::before { + content: '\e03e'; +} + +.iconicstroke-paperclip::before { + content: '\e08a'; +} + +.iconicstroke-pen-alt-stroke::before { + content: '\e005'; +} + +.iconicstroke-move-vertical::before { + content: '\e03b'; +} + +.iconicstroke-book-alt2::before { + content: '\e06a'; +} + +.iconicstroke-layers::before { + content: '\e01f'; +} + +.iconicstroke-pause::before { + content: '\e049'; +} + +.iconicstroke-layers-alt::before { + content: '\e020'; +} + +.iconicstroke-cloud-upload::before { + content: '\e045'; +} + +.iconicstroke-chart-alt::before { + content: '\e029'; +} + +.iconicstroke-fullscreen-exit-alt::before { + content: '\e051'; +} + +.iconicstroke-cloud-download::before { + content: '\e044'; +} + +.iconicstroke-comment-alt2-stroke::before { + content: '\e004'; +} + +.iconicstroke-mail::before { + content: '\2709'; +} + +.iconicstroke-check-alt::before { + content: '\2718'; +} + +.iconicstroke-document-stroke::before { + content: '\e066'; +} + +.iconicstroke-battery-charging::before { + content: '\e05d'; +} + +.iconicstroke-stop::before { + content: '\e04a'; +} + +.iconicstroke-arrow-up::before { + content: '\2191'; +} + +.iconicstroke-move-horizontal::before { + content: '\e038'; +} + +.iconicstroke-compass::before { + content: '\e021'; +} + +.iconicstroke-minus-alt::before { + content: '\e009'; +} + +.iconicstroke-battery-empty::before { + content: '\e05c'; +} + +.iconicstroke-map-pin-alt::before { + content: '\e002'; +} + +.iconicstroke-unlock-stroke::before { + content: '\e076'; +} + +.iconicstroke-lock-stroke::before { + content: '\e075'; +} + +.iconicstroke-question-mark::before { + content: '\003f'; +} + +.iconicstroke-list::before { + content: '\e055'; +} + +.iconicstroke-upload::before { + content: '\e043'; +} + +.iconicstroke-reload::before { + content: '\e030'; +} + +.iconicstroke-loop-alt4::before { + content: '\e035'; +} + +.iconicstroke-loop-alt3::before { + content: '\e034'; +} + +.iconicstroke-loop-alt2::before { + content: '\e033'; +} + +.iconicstroke-loop-alt1::before { + content: '\e032'; +} + +.iconicstroke-left-quote::before { + content: '\275d'; +} + +.iconicstroke-x::before { + content: '\2713'; +} + +.iconicstroke-last::before { + content: '\e04d'; +} + +.iconicstroke-document-alt-stroke::before { + content: '\e000'; +} + +.iconicstroke-bars::before { + content: '\e06f'; +} + +.iconicstroke-arrow-left::before { + content: '\2190'; +} + +.iconicstroke-arrow-down::before { + content: '\2193'; +} + +.iconicstroke-download::before { + content: '\e042'; +} + +.iconicstroke-home::before { + content: '\2302'; +} + +.iconicstroke-calendar::before { + content: '\e001'; +} + +.iconicstroke-right-quote-alt::before { + content: '\e012'; +} + +.iconicstroke-fullscreen::before { + content: '\e04e'; +} + +.iconicstroke-dial::before { + content: '\e058'; +} + +.iconicstroke-plus-alt::before { + content: '\e008'; +} + +.iconicstroke-clock::before { + content: '\e079'; +} + +.iconicstroke-movie::before { + content: '\e060'; +} + +.iconicstroke-steering-wheel::before { + content: '\e024'; +} + +.iconicstroke-pen::before { + content: '\270e'; +} + +.iconicstroke-tag-stroke::before { + content: '\e02b'; +} + +.iconicstroke-pin::before { + content: '\e067'; +} + +.iconicstroke-denied::before { + content: '\26d4'; +} + +.iconicstroke-left-quote-alt::before { + content: '\e011'; +} + +.iconicstroke-volume-mute::before { + content: '\e071'; +} + +.iconicstroke-arrow-up-alt2::before { + content: '\e018'; +} + +.iconicstroke-list-nested::before { + content: '\e056'; +} + +.iconicstroke-arrow-up-alt1::before { + content: '\e014'; +} + +.iconicstroke-comment-stroke::before { + content: '\e06d'; +} + +.iconicstroke-undo::before { + content: '\e02f'; +} + +.iconicstroke-umbrella::before { + content: '\2602'; +} + +.iconicstroke-bolt::before { + content: '\26a1'; +} + +.iconicstroke-article::before { + content: '\e053'; +} + +.iconicstroke-read-more::before { + content: '\e054'; +} + +.iconicstroke-beaker::before { + content: '\e023'; +} + +.iconicstroke-beaker-alt::before { + content: '\e010'; +} + +.iconicstroke-battery-full::before { + content: '\e073'; +} + +.iconicstroke-arrow-right::before { + content: '\2192'; +} + +.iconicstroke-new-window::before { + content: '\e059'; +} + +.iconicstroke-plus::before { + content: '\2795'; +} + +.iconicstroke-cog::before { + content: '\2699'; +} + +.iconicstroke-key-stroke::before { + content: '\26bf'; +} + +.iconicstroke-first::before { + content: '\e04c'; +} + +.iconicstroke-comment-alt1-stroke::before { + content: '\e003'; +} + +.iconicstroke-trash-stroke::before { + content: '\e05a'; +} + +.iconicstroke-image::before { + content: '\e027'; +} + +.iconicstroke-chat-alt-stroke::before { + content: '\e007'; +} + +.iconicstroke-cd::before { + content: '\e064'; +} + +.iconicstroke-right-quote::before { + content: '\275e'; +} + +.iconicstroke-brush::before { + content: '\e01b'; +} + +.iconicstroke-cloud::before { + content: '\2601'; +} + +.iconicstroke-eye::before { + content: '\e025'; +} + +.iconicstroke-play-alt::before { + content: '\e048'; +} + +.iconicstroke-transfer::before { + content: '\e041'; +} + +.iconicstroke-pen-alt2::before { + content: '\e006'; +} + +.iconicstroke-camera::before { + content: '\e070'; +} + +.iconicstroke-move-horizontal-alt2::before { + content: '\e03a'; +} + +.iconicstroke-curved-arrow::before { + content: '\2935'; +} + +.iconicstroke-move-horizontal-alt1::before { + content: '\e039'; +} + +.iconicstroke-aperture::before { + content: '\e026'; +} + +.iconicstroke-reload-alt::before { + content: '\e031'; +} + +.iconicstroke-magnifying-glass::before { + content: '\e074'; +} + +.iconicstroke-iphone::before { + content: '\e06e'; +} + +.iconicstroke-fork::before { + content: '\e046'; +} + +.iconicstroke-box::before { + content: '\e06b'; +} + +.iconicstroke-bars-alt::before { + content: '\e00a'; +} + +.iconicstroke-heart-stroke::before { + content: '\2764'; +} + +.iconicstroke-volume::before { + content: '\e072'; +} + +.iconicstroke-x-alt::before { + content: '\2714'; +} + +.iconicstroke-link::before { + content: '\e077'; +} + +.iconicstroke-moon-stroke::before { + content: '\263e'; +} + +.iconicstroke-eyedropper::before { + content: '\e01e'; +} + +.iconicstroke-spin::before { + content: '\e036'; +} + +.iconicstroke-rss::before { + content: '\e02c'; +} + +.iconicstroke-info::before { + content: '\2139'; +} + +.iconicstroke-target::before { + content: '\e02a'; +} + +.iconicstroke-cursor::before { + content: '\e057'; +} + +.iconicstroke-minus::before { + content: '\2796'; +} + +.iconicstroke-book-alt::before { + content: '\e00b'; +} + +.iconicstroke-headphones::before { + content: '\e061'; +} + +.iconicstroke-hash::before { + content: '\0023'; +} + +.iconicstroke-arrow-left-alt1::before { + content: '\e013'; +} + +.iconicstroke-arrow-left-alt2::before { + content: '\e017'; +} + +.iconicstroke-fullscreen-exit::before { + content: '\e050'; +} + +.iconicstroke-share::before { + content: '\e02e'; +} + +.iconicstroke-fullscreen-alt::before { + content: '\e04f'; +} + +.iconicstroke-at::before { + content: '\0040'; +} + +.iconicstroke-chat::before { + content: '\e05e'; +} + +.iconicstroke-move-vertical-alt2::before { + content: '\e03d'; +} + +.iconicstroke-move-vertical-alt1::before { + content: '\e03c'; +} + +.iconicstroke-check::before { + content: '\2717'; +} + +.iconicstroke-mic::before { + content: '\e05f'; +} + +.iconicstroke-calendar-alt-stroke::before { + content: '\e06c'; +} + +.iconicstroke-book::before { + content: '\e069'; +} + +.iconicstroke-move-alt1::before { + content: '\e03f'; +} + +.iconicstroke-move-alt2::before { + content: '\e040'; +} + +.iconicstroke-award-stroke::before { + content: '\e022'; +} + +.iconicstroke-wrench::before { + content: '\e078'; +} + +.iconicstroke-play::before { + content: '\e047'; +} + +.iconicstroke-star::before { + content: '\2605'; +} + +.iconicstroke-chart::before { + content: '\e028'; +} + +.iconicstroke-rain::before { + content: '\26c6'; +} + +.iconicstroke-folder-stroke::before { + content: '\e065'; +} + +.iconicstroke-sun-stroke::before { + content: '\2600'; +} + +.iconicstroke-user::before { + content: '\e062'; +} + +.iconicstroke-battery-half::before { + content: '\e05b'; +} + +.iconicstroke-aperture-alt::before { + content: '\e00c'; +} + +.iconicstroke-eject::before { + content: '\e04b'; +} + +.iconicstroke-arrow-down-alt1::before { + content: '\e016'; +} + +.iconicstroke-pilcrow::before { + content: '\00b6'; +} + +.iconicstroke-arrow-down-alt2::before { + content: '\e01a'; +} + +.iconicstroke-arrow-right-alt1::before { + content: '\e015'; +} + +.iconicstroke-arrow-right-alt2::before { + content: '\e019'; +} + +.iconicstroke-rss-alt::before { + content: '\e02d'; +} + +.iconicstroke-spin-alt::before { + content: '\e037'; +} diff --git a/frontend/src/sass/icon-fonts/iconicstroke/iconicstroke.svg b/frontend/src/sass/icon-fonts/iconicstroke/iconicstroke.svg new file mode 100644 index 0000000..6b6a59f --- /dev/null +++ b/frontend/src/sass/icon-fonts/iconicstroke/iconicstroke.svg @@ -0,0 +1,555 @@ + + + + + Created by FontForge 20110222 at Tue Sep 18 01:22:26 2012 + By PJ Onori,,, + Icons by PJ Onori, font creation script by Yann + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/src/sass/icon-fonts/iconicstroke/iconicstroke.ttf b/frontend/src/sass/icon-fonts/iconicstroke/iconicstroke.ttf new file mode 100644 index 0000000..e8c6623 Binary files /dev/null and b/frontend/src/sass/icon-fonts/iconicstroke/iconicstroke.ttf differ diff --git a/frontend/src/sass/icon-fonts/iconicstroke/iconicstroke.woff b/frontend/src/sass/icon-fonts/iconicstroke/iconicstroke.woff new file mode 100644 index 0000000..7b39362 Binary files /dev/null and b/frontend/src/sass/icon-fonts/iconicstroke/iconicstroke.woff differ diff --git a/frontend/src/sass/icon-fonts/index.scss b/frontend/src/sass/icon-fonts/index.scss new file mode 100644 index 0000000..80519e9 --- /dev/null +++ b/frontend/src/sass/icon-fonts/index.scss @@ -0,0 +1,13 @@ +// These fonts were originally provided by http://weloveiconfonts.com. +// We decided to add these into package after https ceased to work due to lack of support on their side. +@import "brandico/brandico"; +@import "entypo/entypo"; +@import "fontelico/fontelico"; +@import "iconicstroke/iconicstroke"; +@import "maki/maki"; +@import "openwebicons/openwebicons"; +@import "zocial/zocial"; +@import "vuestic-icons/vuestic-icons"; +@import "glyphicons/glyphicons"; +@import "font-awesome/font-awesome"; +@import "ionicons/ionicons"; diff --git a/frontend/src/sass/icon-fonts/ionicons/ionicons.scss b/frontend/src/sass/icon-fonts/ionicons/ionicons.scss new file mode 100644 index 0000000..934526d --- /dev/null +++ b/frontend/src/sass/icon-fonts/ionicons/ionicons.scss @@ -0,0 +1,3 @@ +// NOTE you need to install ionicons@^4.0.0 +$ionicons-font-path: "~ionicons/dist/fonts"; +@import "ionicons/dist/scss/ionicons"; \ No newline at end of file diff --git a/frontend/src/sass/icon-fonts/maki/maki.eot b/frontend/src/sass/icon-fonts/maki/maki.eot new file mode 100644 index 0000000..387b10b Binary files /dev/null and b/frontend/src/sass/icon-fonts/maki/maki.eot differ diff --git a/frontend/src/sass/icon-fonts/maki/maki.scss b/frontend/src/sass/icon-fonts/maki/maki.scss new file mode 100644 index 0000000..c45501d --- /dev/null +++ b/frontend/src/sass/icon-fonts/maki/maki.scss @@ -0,0 +1,268 @@ +@font-face { + font-family: 'maki'; + font-style: normal; + font-weight: normal; + src: url('./sass/icon-fonts/maki/maki.eot'); + src: + url('./sass/icon-fonts/maki/maki.eot?#iefix') format('eot'), + url('./sass/icon-fonts/maki/maki.woff') format('woff'), + url('./sass/icon-fonts/maki/maki.ttf') format('truetype'), + url('./sass/icon-fonts/maki/maki.svg#maki') format('svg'); +} + +[class*="maki-"]::before { + font-family: 'maki', sans-serif; + font-style: normal; +} + +.maki-aboveground-rail::before { + content: '\e800'; +} + +.maki-airfield::before { + content: '\e801'; +} + +.maki-airport::before { + content: '\e802'; +} + +.maki-art-gallery::before { + content: '\e803'; +} + +.maki-bar::before { + content: '\e804'; +} + +.maki-baseball::before { + content: '\e806'; +} + +.maki-basketball::before { + content: '\e807'; +} + +.maki-beer::before { + content: '\e808'; +} + +.maki-belowground-rail::before { + content: '\e809'; +} + +.maki-bicycle::before { + content: '\e80a'; +} + +.maki-bus::before { + content: '\e80b'; +} + +.maki-cafe::before { + content: '\e80c'; +} + +.maki-campsite::before { + content: '\e80d'; +} + +.maki-cemetery::before { + content: '\e80e'; +} + +.maki-cinema::before { + content: '\e80f'; +} + +.maki-college::before { + content: '\e810'; +} + +.maki-commerical-building::before { + content: '\e811'; +} + +.maki-credit-card::before { + content: '\e812'; +} + +.maki-cricket::before { + content: '\e813'; +} + +.maki-embassy::before { + content: '\e814'; +} + +.maki-fast-food::before { + content: '\e815'; +} + +.maki-ferry::before { + content: '\e816'; +} + +.maki-fire-station::before { + content: '\e817'; +} + +.maki-football::before { + content: '\e818'; +} + +.maki-fuel::before { + content: '\e819'; +} + +.maki-garden::before { + content: '\e81a'; +} + +.maki-giraffe::before { + content: '\e81b'; +} + +.maki-golf::before { + content: '\e81c'; +} + +.maki-grocery-store::before { + content: '\e81e'; +} + +.maki-harbor::before { + content: '\e81f'; +} + +.maki-heliport::before { + content: '\e820'; +} + +.maki-hospital::before { + content: '\e821'; +} + +.maki-industrial-building::before { + content: '\e822'; +} + +.maki-library::before { + content: '\e823'; +} + +.maki-lodging::before { + content: '\e824'; +} + +.maki-london-underground::before { + content: '\e825'; +} + +.maki-minefield::before { + content: '\e826'; +} + +.maki-monument::before { + content: '\e827'; +} + +.maki-museum::before { + content: '\e828'; +} + +.maki-pharmacy::before { + content: '\e829'; +} + +.maki-pitch::before { + content: '\e82a'; +} + +.maki-police::before { + content: '\e82b'; +} + +.maki-post::before { + content: '\e82c'; +} + +.maki-prison::before { + content: '\e82d'; +} + +.maki-rail::before { + content: '\e82e'; +} + +.maki-religious-christian::before { + content: '\e82f'; +} + +.maki-religious-islam::before { + content: '\e830'; +} + +.maki-religious-jewish::before { + content: '\e831'; +} + +.maki-restaurant::before { + content: '\e832'; +} + +.maki-roadblock::before { + content: '\e833'; +} + +.maki-school::before { + content: '\e834'; +} + +.maki-shop::before { + content: '\e835'; +} + +.maki-skiing::before { + content: '\e836'; +} + +.maki-soccer::before { + content: '\e837'; +} + +.maki-swimming::before { + content: '\e838'; +} + +.maki-tennis::before { + content: '\e839'; +} + +.maki-theatre::before { + content: '\e83a'; +} + +.maki-toilet::before { + content: '\e83b'; +} + +.maki-town-hall::before { + content: '\e83c'; +} + +.maki-trash::before { + content: '\e83d'; +} + +.maki-tree-1::before { + content: '\e83e'; +} + +.maki-tree-2::before { + content: '\e83f'; +} + +.maki-warehouse::before { + content: '\e840'; +} diff --git a/frontend/src/sass/icon-fonts/maki/maki.svg b/frontend/src/sass/icon-fonts/maki/maki.svg new file mode 100644 index 0000000..5caa35e --- /dev/null +++ b/frontend/src/sass/icon-fonts/maki/maki.svg @@ -0,0 +1,211 @@ + + + + + Created by FontForge 20110222 at Wed Nov 14 20:24:17 2012 + By Vitaly,,, + Copyright (C) Mapbox, LCC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/src/sass/icon-fonts/maki/maki.ttf b/frontend/src/sass/icon-fonts/maki/maki.ttf new file mode 100644 index 0000000..645ee7e Binary files /dev/null and b/frontend/src/sass/icon-fonts/maki/maki.ttf differ diff --git a/frontend/src/sass/icon-fonts/maki/maki.woff b/frontend/src/sass/icon-fonts/maki/maki.woff new file mode 100644 index 0000000..fa26d6f Binary files /dev/null and b/frontend/src/sass/icon-fonts/maki/maki.woff differ diff --git a/frontend/src/sass/icon-fonts/openwebicons/openwebicons.eot b/frontend/src/sass/icon-fonts/openwebicons/openwebicons.eot new file mode 100644 index 0000000..6d2b5d5 Binary files /dev/null and b/frontend/src/sass/icon-fonts/openwebicons/openwebicons.eot differ diff --git a/frontend/src/sass/icon-fonts/openwebicons/openwebicons.scss b/frontend/src/sass/icon-fonts/openwebicons/openwebicons.scss new file mode 100644 index 0000000..38c4ff3 --- /dev/null +++ b/frontend/src/sass/icon-fonts/openwebicons/openwebicons.scss @@ -0,0 +1,208 @@ +@font-face { + font-family: 'OpenWeb Icons'; + font-style: normal; + font-weight: normal; + src: url('./sass/icon-fonts/openwebicons/openwebicons.eot'); + src: + url('./sass/icon-fonts/openwebicons/openwebicons.eot?#iefix') format('eot'), + url('./sass/icon-fonts/openwebicons/openwebicons.woff') format('woff'), + url('./sass/icon-fonts/openwebicons/openwebicons.ttf') format('truetype'), + url('./sass/icon-fonts/openwebicons/openwebicons.svg#openweb_iconsregular') format('svg'); +} + +[class*="openwebicons-"]::before { + font-family: 'OpenWeb Icons', sans-serif; + font-style: normal; +} + +.openwebicons-apml::before { + content: "\f001"; +} + +.openwebicons-open-share::before { + content: "\f00E"; +} + +.openwebicons-open-share-simple::before { + content: "\f00F"; +} + +.openwebicons-share::before { + content: "\f006"; +} + +.openwebicons-share-simple::before { + content: "\f007"; +} + +.openwebicons-feed::before { + content: "\f009"; +} + +.openwebicons-feed-simple::before { + content: "\f00A"; +} + +.openwebicons-ostatus::before { + content: "\f004"; +} + +.openwebicons-ostatus-simple::before { + content: "\f005"; +} + +.openwebicons-opml::before { + content: "\f003"; +} + +.openwebicons-activity::before { + content: "\f010"; +} + +.openwebicons-microformats::before { + content: "\f00C"; +} + +.openwebicons-geo::before { + content: "\f00B"; +} + +.openwebicons-opensearch::before { + content: "\f002"; +} + +.openwebicons-oauth::before { + content: "\f008"; +} + +.openwebicons-openid::before { + content: "\f00D"; +} + +.openwebicons-rdf::before { + content: "\f000"; +} + +.openwebicons-dataportability::before { + content: "\f013"; +} + +.openwebicons-federated::before { + content: "\f011"; +} + +.openwebicons-web-intents::before { + content: "\f014"; +} + +.openwebicons-open-web::before { + content: "\f012"; +} + +.openwebicons-xmpp::before { + content: "\f015"; +} + +.openwebicons-html5::before { + content: "\f016"; +} + +.openwebicons-css3::before { + content: "\f017"; +} + +.openwebicons-connectivity::before { + content: "\f018"; +} + +.openwebicons-semantics::before { + content: "\f019"; +} + +.openwebicons-opengraph::before { + content: "\f020"; +} + +.openwebicons-epub::before { + content: "\f021"; +} + +.openwebicons-qr::before { + content: "\f022"; +} + +.openwebicons-foaf::before { + content: "\f023"; +} + +.openwebicons-info-card::before { + content: "\f024"; +} + +.openwebicons-browserid::before { + content: "\f025"; +} + +.openwebicons-remote-storage::before { + content: "\f026"; +} + +.openwebicons-persona::before { + content: "\f027"; +} + +.openwebicons-odata::before { + content: "\f028"; +} + +.openwebicons-markdown::before { + content: "\f029"; +} + +.openwebicons-tosdr::before { + content: "\f030"; +} + +.openwebicons-cc::before { + content: "\f080"; +} + +.openwebicons-cc-by::before { + content: "\f081"; +} + +.openwebicons-cc-nc::before { + content: "\f082"; +} + +.openwebicons-cc-nc-eu::before { + content: "\f083"; +} + +.openwebicons-cc-nc-jp::before { + content: "\f084"; +} + +.openwebicons-cc-sa::before { + content: "\f085"; +} + +.openwebicons-cc-nd::before { + content: "\f086"; +} + +.openwebicons-cc-public::before { + content: "\f087"; +} + +.openwebicons-cc-zero::before { + content: "\f088"; +} + +.openwebicons-cc-share::before { + content: "\f089"; +} + +.openwebicons-cc-remix::before { + content: "\f08a"; +} diff --git a/frontend/src/sass/icon-fonts/openwebicons/openwebicons.svg b/frontend/src/sass/icon-fonts/openwebicons/openwebicons.svg new file mode 100644 index 0000000..936db83 --- /dev/null +++ b/frontend/src/sass/icon-fonts/openwebicons/openwebicons.svg @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/src/sass/icon-fonts/openwebicons/openwebicons.ttf b/frontend/src/sass/icon-fonts/openwebicons/openwebicons.ttf new file mode 100644 index 0000000..6035858 Binary files /dev/null and b/frontend/src/sass/icon-fonts/openwebicons/openwebicons.ttf differ diff --git a/frontend/src/sass/icon-fonts/openwebicons/openwebicons.woff b/frontend/src/sass/icon-fonts/openwebicons/openwebicons.woff new file mode 100644 index 0000000..c248af4 Binary files /dev/null and b/frontend/src/sass/icon-fonts/openwebicons/openwebicons.woff differ diff --git a/frontend/src/sass/icon-fonts/typicons/typicons-regular-webfont.eot b/frontend/src/sass/icon-fonts/typicons/typicons-regular-webfont.eot new file mode 100644 index 0000000..a252ac8 Binary files /dev/null and b/frontend/src/sass/icon-fonts/typicons/typicons-regular-webfont.eot differ diff --git a/frontend/src/sass/icon-fonts/typicons/typicons-regular-webfont.svg b/frontend/src/sass/icon-fonts/typicons/typicons-regular-webfont.svg new file mode 100644 index 0000000..c9164ac --- /dev/null +++ b/frontend/src/sass/icon-fonts/typicons/typicons-regular-webfont.svg @@ -0,0 +1,288 @@ + + + + + This is a custom SVG webfont generated by Font Squirrel. + Copyright : Stephen Hutchings 2012 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/src/sass/icon-fonts/typicons/typicons-regular-webfont.ttf b/frontend/src/sass/icon-fonts/typicons/typicons-regular-webfont.ttf new file mode 100644 index 0000000..5094d91 Binary files /dev/null and b/frontend/src/sass/icon-fonts/typicons/typicons-regular-webfont.ttf differ diff --git a/frontend/src/sass/icon-fonts/typicons/typicons-regular-webfont.woff b/frontend/src/sass/icon-fonts/typicons/typicons-regular-webfont.woff new file mode 100644 index 0000000..d47d926 Binary files /dev/null and b/frontend/src/sass/icon-fonts/typicons/typicons-regular-webfont.woff differ diff --git a/frontend/src/sass/icon-fonts/typicons/typicons.scss b/frontend/src/sass/icon-fonts/typicons/typicons.scss new file mode 100644 index 0000000..6e55474 --- /dev/null +++ b/frontend/src/sass/icon-fonts/typicons/typicons.scss @@ -0,0 +1,364 @@ +@font-face { + font-family: 'Typicons'; + font-style: normal; + font-weight: normal; + src: url('./sass/icon-fonts/typicons/typicons-regular-webfont.eot'); + src: + url('./sass/icon-fonts/typicons/typicons-regular-webfont.eot?#iefix') format('eot'), + url('./sass/icon-fonts/typicons/typicons-regular-webfont.woff') format('woff'), + url('./sass/icon-fonts/typicons/typicons-regular-webfont.ttf') format('truetype'), + url('./sass/icon-fonts/typicons/typicons-regular-webfont.svg#TypiconsRegular') format('svg'); +} + +[class*="typicons-"]::before { + font-family: 'Typicons', sans-serif; + font-style: normal; +} + +.typicons-location::before { + content: "A"; +} + +.typicons-phone::before { + content: "B"; +} + +.typicons-home::before { + content: "C"; +} + +.typicons-camera::before { + content: "D"; +} + +.typicons-left::before { + content: "E"; +} + +.typicons-right::before { + content: "F"; +} + +.typicons-up::before { + content: "G"; +} + +.typicons-down::before { + content: "H"; +} + +.typicons-refresh::before { + content: "I"; +} + +.typicons-sync::before { + content: "J"; +} + +.typicons-loop::before { + content: "K"; +} + +.typicons-repeat::before { + content: "L"; +} + +.typicons-shuffle::before { + content: "M"; +} + +.typicons-rss::before { + content: "N"; +} + +.typicons-cog::before { + content: "O"; +} + +.typicons-spanner::before { + content: "P"; +} + +.typicons-barChart::before { + content: "Q"; +} + +.typicons-pieChart::before { + content: "R"; +} + +.typicons-lineChart::before { + content: "S"; +} + +.typicons-views::before { + content: "T"; +} + +.typicons-zoomIn::before { + content: "V"; +} + +.typicons-zoomOut::before { + content: "U"; +} + +.typicons-export::before { + content: "W"; +} + +.typicons-user::before { + content: "X"; +} + +.typicons-group::before { + content: "Y"; +} + +.typicons-microphone::before { + content: "Z"; +} + +.typicons-globe::before { + content: "a"; +} + +.typicons-thumbsUp::before { + content: "b"; +} + +.typicons-thumbsDown::before { + content: "c"; +} + +.typicons-tag::before { + content: "d"; +} + +.typicons-tab::before { + content: "e"; +} + +.typicons-warning::before { + content: "f"; +} + +.typicons-tick::before { + content: "g"; +} + +.typicons-beta::before { + content: "h"; +} + +.typicons-unlock::before { + content: "i"; +} + +.typicons-lock::before { + content: "j"; +} + +.typicons-eject::before { + content: "k"; +} + +.typicons-move::before { + content: "l"; +} + +.typicons-expand::before { + content: "m"; +} + +.typicons-cancel::before { + content: "n"; +} + +.typicons-power::before { + content: "o"; +} + +.typicons-compass::before { + content: "p"; +} + +.typicons-radar::before { + content: "q"; +} + +.typicons-directions::before { + content: "r"; +} + +.typicons-pin::before { + content: "s"; +} + +.typicons-mute::before { + content: "t"; +} + +.typicons-volume::before { + content: "u"; +} + +.typicons-world::before { + content: "v"; +} + +.typicons-write::before { + content: "w"; +} + +.typicons-minus::before { + content: "x"; +} + +.typicons-equals::before { + content: "y"; +} + +.typicons-feed::before { + content: "z"; +} + +.typicons-batteryNone::before { + content: "0"; +} + +.typicons-batteryLow::before { + content: "1"; +} + +.typicons-batteryMid::before { + content: "2"; +} + +.typicons-batteryHigh::before { + content: "3"; +} + +.typicons-batteryPower::before { + content: "4"; +} + +.typicons-plus::before { + content: "5"; +} + +.typicons-times::before { + content: "6"; +} + +.typicons-next::before { + content: "7"; +} + +.typicons-previous::before { + content: "8"; +} + +.typicons-edit::before { + content: "9"; +} + +.typicons-cut::before { + content: "'"; +} + +.typicons-anchor::before { + content: "("; +} + +.typicons-bookmark::before { + content: ")"; +} + +.typicons-music::before { + content: "*"; +} + +.typicons-puzzle::before { + content: "+"; +} + +.typicons-archive::before { + content: ","; +} + +.typicons-mobile::before { + content: "-"; +} + +.typicons-brightness::before { + content: "/"; +} + +.typicons-flag::before { + content: "{"; +} + +.typicons-info::before { + content: "|"; +} + +.typicons-unknown::before { + content: "}"; +} + +.typicons-chat::before { + content: "~"; +} + +.typicons-mail::before { + content: "["; +} + +.typicons-message::before { + content: "\005C"; +} + +.typicons-delete::before { + content: "]"; +} + +.typicons-backspace::before { + content: "^"; +} + +.typicons-infinity::before { + content: "_"; +} + +.typicons-key::before { + content: "$"; +} + +.typicons-time::before { + content: "%"; +} + +.typicons-grid::before { + content: "\0022"; +} + +.typicons-list::before { + content: "\0023"; +} + +.typicons-heart::before { + content: ";"; +} + +.typicons-star::before { + content: "="; +} + +.typicons-back::before { + content: "?"; +} + +.typicons-forward::before { + content: "@"; +} diff --git a/frontend/src/sass/icon-fonts/vuestic-icons/vuestic-icons.eot b/frontend/src/sass/icon-fonts/vuestic-icons/vuestic-icons.eot new file mode 100644 index 0000000..9c9f36e Binary files /dev/null and b/frontend/src/sass/icon-fonts/vuestic-icons/vuestic-icons.eot differ diff --git a/frontend/src/sass/icon-fonts/vuestic-icons/vuestic-icons.scss b/frontend/src/sass/icon-fonts/vuestic-icons/vuestic-icons.scss new file mode 100644 index 0000000..a00c4ee --- /dev/null +++ b/frontend/src/sass/icon-fonts/vuestic-icons/vuestic-icons.scss @@ -0,0 +1,97 @@ +@font-face { + font-family: 'Vuestic Icons'; + font-weight: normal; + font-style: normal; + src: url('./sass/icon-fonts/vuestic-icons/vuestic-icons.eot'); + src: + url('./sass/icon-fonts/vuestic-icons/vuestic-icons.eot?#iefix') format('eot'), + url('./sass/icon-fonts/vuestic-icons/vuestic-icons.woff') format('woff'), + url('./sass/icon-fonts/vuestic-icons/vuestic-icons.ttf') format('truetype'), + url('./sass/icon-fonts/vuestic-icons/vuestic-icons.svg#vuestic-icons') format('svg'); +} + +.vuestic-iconset { + line-height: 1; +} + +.vuestic-iconset::before { + display: inline-block; + font-family: 'Vuestic Icons'; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.vuestic-iconset-comments::before { + content: '\0041'; +} + +.vuestic-iconset-components::before { + content: '\0042'; +} + +.vuestic-iconset-dashboard::before { + content: '\0043'; +} + +.vuestic-iconset-extras::before { + content: '\0044'; +} + +.vuestic-iconset-files::before { + content: '\0045'; +} + +.vuestic-iconset-forms::before { + content: '\0046'; +} + +.vuestic-iconset-graph::before { + content: '\0047'; +} + +.vuestic-iconset-auth::before { + content: '\0048'; +} + +.vuestic-iconset-image::before { + content: '\0049'; +} + +.vuestic-iconset-maps::before { + content: '\004a'; +} + +.vuestic-iconset-music::before { + content: '\004b'; +} + +.vuestic-iconset-settings::before { + content: '\004c'; +} + +.vuestic-iconset-statistics::before { + content: '\004d'; +} + +.vuestic-iconset-tables::before { + content: '\004e'; +} + +.vuestic-iconset-time::before { + content: '\004f'; +} + +.vuestic-iconset-ui-elements::before { + content: '\0050'; +} + +.vuestic-iconset-user::before { + content: '\0051'; +} + +.vuestic-iconset-video::before { + content: '\0052'; +} diff --git a/frontend/src/sass/icon-fonts/vuestic-icons/vuestic-icons.svg b/frontend/src/sass/icon-fonts/vuestic-icons/vuestic-icons.svg new file mode 100644 index 0000000..198d75b --- /dev/null +++ b/frontend/src/sass/icon-fonts/vuestic-icons/vuestic-icons.svg @@ -0,0 +1,66 @@ + + + Generated by Glyphter + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/src/sass/icon-fonts/vuestic-icons/vuestic-icons.ttf b/frontend/src/sass/icon-fonts/vuestic-icons/vuestic-icons.ttf new file mode 100644 index 0000000..9d68d8a Binary files /dev/null and b/frontend/src/sass/icon-fonts/vuestic-icons/vuestic-icons.ttf differ diff --git a/frontend/src/sass/icon-fonts/vuestic-icons/vuestic-icons.woff b/frontend/src/sass/icon-fonts/vuestic-icons/vuestic-icons.woff new file mode 100644 index 0000000..397ba40 Binary files /dev/null and b/frontend/src/sass/icon-fonts/vuestic-icons/vuestic-icons.woff differ diff --git a/frontend/src/sass/icon-fonts/zocial/zocial-regular-webfont.eot b/frontend/src/sass/icon-fonts/zocial/zocial-regular-webfont.eot new file mode 100644 index 0000000..96b54ed Binary files /dev/null and b/frontend/src/sass/icon-fonts/zocial/zocial-regular-webfont.eot differ diff --git a/frontend/src/sass/icon-fonts/zocial/zocial-regular-webfont.svg b/frontend/src/sass/icon-fonts/zocial/zocial-regular-webfont.svg new file mode 100644 index 0000000..7fc27f8 --- /dev/null +++ b/frontend/src/sass/icon-fonts/zocial/zocial-regular-webfont.svg @@ -0,0 +1,261 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/src/sass/icon-fonts/zocial/zocial-regular-webfont.ttf b/frontend/src/sass/icon-fonts/zocial/zocial-regular-webfont.ttf new file mode 100644 index 0000000..48beab1 Binary files /dev/null and b/frontend/src/sass/icon-fonts/zocial/zocial-regular-webfont.ttf differ diff --git a/frontend/src/sass/icon-fonts/zocial/zocial-regular-webfont.woff b/frontend/src/sass/icon-fonts/zocial/zocial-regular-webfont.woff new file mode 100644 index 0000000..8a0d869 Binary files /dev/null and b/frontend/src/sass/icon-fonts/zocial/zocial-regular-webfont.woff differ diff --git a/frontend/src/sass/icon-fonts/zocial/zocial.scss b/frontend/src/sass/icon-fonts/zocial/zocial.scss new file mode 100644 index 0000000..eac27df --- /dev/null +++ b/frontend/src/sass/icon-fonts/zocial/zocial.scss @@ -0,0 +1,392 @@ +@font-face { + font-family: 'zocial'; + font-style: normal; + font-weight: normal; + src: url('./sass/icon-fonts/zocial/zocial-regular-webfont.eot'); + src: + url('./sass/icon-fonts/zocial/zocial-regular-webfont.eot?#iefix') format('eot'), + url('./sass/icon-fonts/zocial/zocial-regular-webfont.woff') format('woff'), + url('./sass/icon-fonts/zocial/zocial-regular-webfont.ttf') format('truetype'), + url('./sass/icon-fonts/zocial/zocial-regular-webfont.svg#zocialregular') format('svg'); +} + +[class*="zocial-"]::before { + font-family: 'zocial', sans-serif; + font-style: normal; +} + +.zocial-acrobat::before { + content: "\00E3"; +} + +.zocial-amazon::before { + content: "a"; +} + +.zocial-android::before { + content: "&"; +} + +.zocial-angellist::before { + content: "\00D6"; +} + +.zocial-aol::before { + content: "\""; +} + +.zocial-appnet::before { + content: "\00E1"; +} + +.zocial-appstore::before { + content: "A"; +} + +.zocial-bitbucket::before { + content: "\00E9"; +} + +.zocial-bitcoin::before { + content: "2"; +} + +.zocial-blogger::before { + content: "B"; +} + +.zocial-buffer::before { + content: "\00E5"; +} + +.zocial-call::before { + content: "7"; +} + +.zocial-cal::before { + content: "."; +} + +.zocial-cart::before { + content: "\00C9"; +} + +.zocial-chrome::before { + content: "["; +} + +.zocial-cloudapp::before { + content: "c"; +} + +.zocial-creativecommons::before { + content: "C"; +} + +.zocial-delicious::before { + content: "#"; +} + +.zocial-digg::before { + content: ";"; +} + +.zocial-disqus::before { + content: "Q"; +} + +.zocial-dribbble::before { + content: "D"; +} + +.zocial-dropbox::before { + content: "d"; +} + +.zocial-drupal::before { + content: "\00E4"; +} + +.zocial-dwolla::before { + content: "\00E0"; +} + +.zocial-email::before { + content: "]"; +} + +.zocial-eventasaurus::before { + content: "v"; +} + +.zocial-eventbrite::before { + content: "|"; +} + +.zocial-eventful::before { + content: "'"; +} + +.zocial-evernote::before { + content: "E"; +} + +.zocial-facebook::before { + content: "f"; +} + +.zocial-fivehundredpx::before { + content: "0"; +} + +.zocial-flattr::before { + content: "%"; +} + +.zocial-flickr::before { + content: "F"; +} + +.zocial-forrst::before { + content: ":"; +} + +.zocial-foursquare::before { + content: "4"; +} + +.zocial-github::before { + content: "g"; +} + +.zocial-gmail::before { + content: "m"; +} + +.zocial-google::before { + content: "G"; +} + +.zocial-googleplay::before { + content: "h"; +} + +.zocial-googleplus::before { + content: "+"; +} + +.zocial-gowalla::before { + content: "@"; +} + +.zocial-grooveshark::before { + content: "8"; +} + +.zocial-guest::before { + content: "?"; +} + +.zocial-html5::before { + content: "5"; +} + +.zocial-ie::before { + content: "6"; +} + +.zocial-instagram::before { + content: "\00DC"; +} + +.zocial-instapaper::before { + content: "I"; +} + +.zocial-intensedebate::before { + content: "{"; +} + +.zocial-itunes::before { + content: "i"; +} + +.zocial-klout::before { + content: "K"; +} + +.zocial-lanyrd::before { + content: "-"; +} + +.zocial-lastfm::before { + content: "l"; +} + +.zocial-linkedin::before { + content: "L"; +} + +.zocial-macstore::before { + content: "^"; +} + +.zocial-meetup::before { + content: "M"; +} + +.zocial-myspace::before { + content: "_"; +} + +.zocial-ninetyninedesigns::before { + content: "9"; +} + +.zocial-openid::before { + content: "o"; +} + +.zocial-opentable::before { + content: "\00C7"; +} + +.zocial-paypal::before { + content: "$"; +} + +.zocial-pinboard::before { + content: "n"; +} + +.zocial-pinterest::before { + content: "1"; +} + +.zocial-plancast::before { + content: "P"; +} + +.zocial-plurk::before { + content: "j"; +} + +.zocial-pocket::before { + content: "\00E7"; +} + +.zocial-podcast::before { + content: "`"; +} + +.zocial-posterous::before { + content: "~"; +} + +.zocial-print::before { + content: "\00D1"; +} + +.zocial-quora::before { + content: "q"; +} + +.zocial-reddit::before { + content: ">"; +} + +.zocial-rss::before { + content: "R"; +} + +.zocial-scribd::before { + content: "}"; +} + +.zocial-skype::before { + content: "S"; +} + +.zocial-smashing::before { + content: "*"; +} + +.zocial-songkick::before { + content: "k"; +} + +.zocial-soundcloud::before { + content: "s"; +} + +.zocial-spotify::before { + content: "="; +} + +.zocial-statusnet::before { + content: "\00E2"; +} + +.zocial-steam::before { + content: "b"; +} + +.zocial-stripe::before { + content: "\00A3"; +} + +.zocial-stumbleupon::before { + content: "/"; +} + +.zocial-tumblr::before { + content: "t"; +} + +.zocial-twitter::before { + content: "T"; +} + +.zocial-viadeo::before { + content: "H"; +} + +.zocial-vimeo::before { + content: "V"; +} + +.zocial-vk::before { + content: "N"; +} + +.zocial-weibo::before { + content: "J"; +} + +.zocial-wikipedia::before { + content: ","; +} + +.zocial-windows::before { + content: "W"; +} + +.zocial-wordpress::before { + content: "w"; +} + +.zocial-xing::before { + content: "X"; +} + +.zocial-yahoo::before { + content: "Y"; +} + +.zocial-yelp::before { + content: "y"; +} + +.zocial-youtube::before { + content: "U"; +} diff --git a/frontend/src/sass/main.scss b/frontend/src/sass/main.scss new file mode 100644 index 0000000..76d53cc --- /dev/null +++ b/frontend/src/sass/main.scss @@ -0,0 +1,8 @@ +@import "./vuestic-sass"; +@import "./icon-fonts"; +@import "./custom"; + +$material-icons-font-path: '../node_modules/material-icons/iconfont/'; +@import "material-icons/iconfont/material-icons.scss"; +@import "@fontsource/source-sans-pro"; +@import "font-awesome/" \ No newline at end of file diff --git a/frontend/src/sass/overrides.scss b/frontend/src/sass/overrides.scss new file mode 100644 index 0000000..21e29b9 --- /dev/null +++ b/frontend/src/sass/overrides.scss @@ -0,0 +1,3 @@ +:root { + --va-badge-text-transform: none; +} \ No newline at end of file diff --git a/frontend/src/sass/vuestic-sass/index.scss b/frontend/src/sass/vuestic-sass/index.scss new file mode 100644 index 0000000..2e99fcd --- /dev/null +++ b/frontend/src/sass/vuestic-sass/index.scss @@ -0,0 +1 @@ +@import "../node_modules/vuestic-ui/dist/vuestic-ui.css"; diff --git a/frontend/src/scripts/exporters.ts b/frontend/src/scripts/exporters.ts new file mode 100644 index 0000000..443807d --- /dev/null +++ b/frontend/src/scripts/exporters.ts @@ -0,0 +1,42 @@ +import { saveAs } from "file-saver"; + +function clickCSV(items:any, columns:any) { + const preserve: any[] = []; + items.forEach(function (x:any) { + preserve.push(x.attributes) + }) + + var BOM = "\uFEFF"; + var csvData = BOM + [objectToCsv(preserve,columns)] + + let blob = new Blob([csvData], { + type: "text/csv;charset=utf-8" + }) + + saveAs(blob,'download.csv') +} + +function objectToCsv(data:any,columns:any) { + const headerRow: any[] = []; + const csvRows: any[] = []; + const keys: any[] = []; + + columns.forEach((item: any) => { + headerRow.push(`"${item.label}"`) + keys.push(item.key.replace('attributes.','')) + }) + + csvRows.push(headerRow.join(',')); + + for (const row of data) { + const values = keys.map(header => { + const val = row[header] + return `"${val}"`; + }); + + csvRows.push(values.join(',')); + } + return csvRows.join('\n'); +} + +export { clickCSV } \ No newline at end of file diff --git a/frontend/src/scripts/formatters.ts b/frontend/src/scripts/formatters.ts new file mode 100644 index 0000000..d52cf78 --- /dev/null +++ b/frontend/src/scripts/formatters.ts @@ -0,0 +1,89 @@ +function checkLinkSm(value:string) { + if (value) { + if (value.match(/(RF|IM)-\d+/)) { + return true + } + } + return false +} + +function checkReportDate(timestamp:string, days:number = 1) { + var date = new Date() + var collected = new Date(timestamp) + date.setDate(date.getDate() - days); + if (collected > date) { + return false + } else { + return true + } +} + +function getLinkSm(value:string) { + let match = value.match(/(RF|IM)-\d+/) + if (match) { + if (match[1] === "RF") { + return 'https://sm.vtb.ru/webtier/index.do?ctx=docEngine&file=request&query=number%3D%22' + match[0] + '%22' + } + if (match[1] === "IM") { + return 'https://sm.vtb.ru/webtier/index.do?ctx=docEngine&file=probsummary&query=number%3D%22' + match[0] + '%22' + } + } +} + +function formatBytes(bytes:number, decimals:number = 2) { + if (bytes == 0) { return '0 MB' } + + const k = 1024; + const dm = decimals < 0 ? 0 : decimals; + const sizes = ['GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; + + const i = Math.floor(Math.log(bytes) / Math.log(k)); + + return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i]; +} + + +function certificateStatus(value:number) { + switch (value) { + case 3: + return 'Valid' + case 2: + return 'Warning' + case 1: + return 'Expired' + + default: + return `Unknown:${value}` + } +} + +function pickColor(value:string) { + switch (value) { + case 'Valid': + case 'Healthy': + return 'success' + + case 'Maintenance': + case 'Warning': + return 'warning' + + case 'NotResponding': + case 'Expired': + return 'danger' + + default: + return '' + } +} + +function pickClass(value:number,green:number = -1,warn:number = 90,crit:number = 100) { + if (value >= crit) { + return ['cellCritical'] + } else if (value >= warn) { + return ['cellWarning'] + } else if (value <= green) { + return ['cellGreen'] + } +} + +export { getLinkSm, formatBytes, checkLinkSm, pickColor, pickClass, certificateStatus, checkReportDate } \ No newline at end of file diff --git a/frontend/src/scripts/sorters.ts b/frontend/src/scripts/sorters.ts new file mode 100644 index 0000000..0006374 --- /dev/null +++ b/frontend/src/scripts/sorters.ts @@ -0,0 +1,7 @@ +function sortingBase(value_1:any, value_2:any) { + if ( value_1 > value_2 ) { return 1 } + else if (value_1 < value_2) { return -1 } + return 0 +} + +export { sortingBase } \ No newline at end of file diff --git a/frontend/src/services/vuestic-ui/components/va-button.ts b/frontend/src/services/vuestic-ui/components/va-button.ts new file mode 100644 index 0000000..44a96a7 --- /dev/null +++ b/frontend/src/services/vuestic-ui/components/va-button.ts @@ -0,0 +1,3 @@ +export default { + color: 'primary' +} \ No newline at end of file diff --git a/frontend/src/services/vuestic-ui/components/va-icon.ts b/frontend/src/services/vuestic-ui/components/va-icon.ts new file mode 100644 index 0000000..da31297 --- /dev/null +++ b/frontend/src/services/vuestic-ui/components/va-icon.ts @@ -0,0 +1,307 @@ +/* eslint-disable @typescript-eslint/camelcase */ +export default { + iconsConfig: { + defaultFont: "md", + icons: { + github: { + code: "github", + font: "fa4" + }, + check: { + code: "check" + }, + first_page: { + code: "first_page", + font: "md" + }, + last_page: { + code: "last_page", + font: "md" + }, + chevron_right: { + code: "chevron_right", + font: "md" + }, + chevron_left: { + code: "chevron_left", + font: "md" + }, + search: { + code: "search", + font: "fa4" + }, + loop: { + code: "loop" + }, + calendar_today: { + code: "calendar_today" + }, + warning: { + code: "warning" + }, + highlight_off: { + code: "highlight_off" + }, + envelope: { + code: "envelope-o", + font: "fa4" + }, + circle: { + code: "circle", + font: "fa4" + }, + star: { + code: "star", + font: "fa4" + }, + star_empty: { + code: "star-o", + font: "fa4" + }, + pencil: { + code: "pencil", + font: "fa4" + }, + trash: { + code: "trash", + font: "fa4" + }, + caret_up: { + code: "fa-caret-up", + font: "fa4" + }, + caret_down: { + code: "fa-caret-down", + font: "fa4" + }, + minus: { + code: "fa-minus", + font: "fa4" + }, + arrow_drop_down: { + code: "arrow_drop_down" + }, + arrow_drop_up: { + code: "arrow_drop_up" + }, + done: { + code: "done" + }, + ion_md_close: { + code: "close", + font: "ion" + }, + ion_arrow_down: { + code: "ion-ios-arrow-down", + font: "ion" + }, + ion_arrow_forward: { + code: "ion-ios-arrow-forward", + font: "ion" + }, + ion_md_images: { + code: "ion-md-images", + font: "ion" + }, + ion_md_image: { + code: "ion-md-image", + font: "ion" + }, + ion_md_star_outline: { + code: "ion-md-star-outline", + font: "ion" + }, + ion_md_musical_notes: { + code: "ion-md-musical-notes", + font: "ion" + }, + ion_md_list: { + code: "ion-md-list", + font: "ion" + }, + ion_md_grid: { + code: "ion-md-grid", + font: "ion" + }, + ion_md_help: { + code: "ion-md-help", + font: "ion" + }, + ion_md_key: { + code: "ion-md-key", + font: "ion" + }, + maki_art_gallery: { + code: "maki-art-gallery", + font: "maki" + }, + glyphicon_envelope: { + code: "glyphicon-envelope", + font: "glyphicon" + }, + glyphicon_pencil: { + code: "glyphicon-pencil", + font: "glyphicon" + }, + ion_ios_alarm: { + code: "ion-ios-alarm", + font: "ion" + }, + entypo_user: { + code: "entypo-user", + font: "entypo" + }, + user: { + code: "user", + font: "fa4" + }, + bell_slash: { + code: "bell-slash", + font: "fa4" + }, + bell: { + code: "bell", + font: "fa4" + }, + volume_up: { + code: "fa-volume-up", + font: "fa4" + }, + volume_off: { + code: "fa-volume-off", + font: "fa4" + }, + iconicstroke_info: { + code: "iconicstroke-info", + font: "iconicstroke" + }, + expand_more: { + code: "expand_more" + }, + expand_less: { + code: "expand_less" + }, + refresh: { + code: "refresh", + font: "fa4" + }, + gear: { + code: "gear", + font: "fa4" + }, + cogs: { + code: "cogs", + font: "fa4" + }, + eye: { + code: "eye", + font: "fa4" + }, + google: { + code: "google", + font: "fa4" + }, + map: { + code: "map", + font: "fa4" + }, + map_marker: { + code: "map-marker", + font: "fa4" + }, + mars: { + code: "mars", + font: "fa4" + }, + venus: { + code: "venus", + font: "fa4" + }, + close: { + code: "close", + font: "fa4" + }, + print: { + code: "print", + font: "fa4" + }, + bug: { + code: "bug", + font: "fa4" + }, + music: { + code: "fa-music", + font: "fa4" + }, + check_circle: { + code: "fa-check-circle", + font: "fa4" + }, + 'chevron-left': { + code: "chevron-left", + font: "fa4" + }, + 'chevron-right': { + code: "chevron-right", + font: "fa4" + }, + add: { + code: "add" + }, + remove: { + code: "remove" + }, + angle_up: { + code: "angle-up", + font: "fa4" + }, + angle_down: { + code: "angle-down", + font: "fa4" + }, + // Vuestic icons config + // navbar + 'vuestic-iconset-settings': { + code: "vuestic-iconset-settings", + font: "vuestic-iconset" + }, + // sidebar & topbar + 'vuestic-iconset-dashboard': { + code: "vuestic-iconset-dashboard", + font: "vuestic-iconset" + }, + 'vuestic-iconset-statistics': { + code: "vuestic-iconset-statistics", + font: "vuestic-iconset" + }, + 'vuestic-iconset-forms': { + code: "vuestic-iconset-forms", + font: "vuestic-iconset" + }, + 'vuestic-iconset-tables': { + code: "vuestic-iconset-tables", + font: "vuestic-iconset" + }, + 'vuestic-iconset-ui-elements': { + code: "vuestic-iconset-ui-elements", + font: "vuestic-iconset" + }, + 'vuestic-iconset-maps': { + code: "vuestic-iconset-maps", + font: "vuestic-iconset" + }, + 'vuestic-iconset-files': { + code: "vuestic-iconset-files", + font: "vuestic-iconset" + } + } + }, + sizesConfig: { + defaultSize: 19, + sizes: { + small: 14, + medium: 19, + large: 26 + } + } +}; diff --git a/frontend/src/services/vuestic-ui/components/va-toast.ts b/frontend/src/services/vuestic-ui/components/va-toast.ts new file mode 100644 index 0000000..44a96a7 --- /dev/null +++ b/frontend/src/services/vuestic-ui/components/va-toast.ts @@ -0,0 +1,3 @@ +export default { + color: 'primary' +} \ No newline at end of file diff --git a/frontend/src/services/vuestic-ui/global-config.ts b/frontend/src/services/vuestic-ui/global-config.ts new file mode 100644 index 0000000..5fa4610 --- /dev/null +++ b/frontend/src/services/vuestic-ui/global-config.ts @@ -0,0 +1,16 @@ +import VaIcon from './components/va-icon' +import VaToast from './components/va-toast' +import VaButton from './components/va-button' +import iconsConfig from './icons-config/icons-config' +import { COLOR_THEMES } from './themes' + +export default { + components: { + VaIcon, + VaToast, + VaButton, + ...COLOR_THEMES[0].components + }, + colors: COLOR_THEMES[0].colors, + icons: iconsConfig +} diff --git a/frontend/src/services/vuestic-ui/icons-config/aliases.ts b/frontend/src/services/vuestic-ui/icons-config/aliases.ts new file mode 100644 index 0000000..12227bd --- /dev/null +++ b/frontend/src/services/vuestic-ui/icons-config/aliases.ts @@ -0,0 +1,294 @@ +export default [ + { + "name": "add", + "to": "add" + }, + { + "name": "arrow_drop_down", + "to": "arrow_drop_down" + }, + { + "name": "arrow_drop_up", + "to": "arrow_drop_up" + }, + { + "name": "calendar_today", + "to": "calendar_today" + }, + { + "name": "check", + "to": "check" + }, + { + "name": "chevron_left", + "to": "chevron_left" + }, + { + "name": "chevron_right", + "to": "chevron_right" + }, + { + "name": "done", + "to": "done" + }, + { + "name": "entypo_user", + "to": "entypo-entypo-user" + }, + { + "name": "expand_less", + "to": "expand_less" + }, + { + "name": "expand_more", + "to": "expand_more" + }, + { + "name": "angle_down", + "to": "fa4-angle-down" + }, + { + "name": "angle_up", + "to": "fa4-angle-up" + }, + { + "name": "bell", + "to": "fa4-bell" + }, + { + "name": "bell_slash", + "to": "fa4-bell-slash" + }, + { + "name": "bug", + "to": "fa4-bug" + }, + { + "name": "caret_down", + "to": "fa4-caret-down" + }, + { + "name": "caret_up", + "to": "fa4-caret-up" + }, + { + "name": "check_circle", + "to": "fa4-check_circle" + }, + { + "name": "chevron-left", + "to": "fa4-chevron-left" + }, + { + "name": "chevron-right", + "to": "fa4-chevron-right" + }, + { + "name": "circle", + "to": "fa4-circle" + }, + { + "name": "close", + "to": "fa4-close" + }, + { + "name": "cogs", + "to": "fa4-cogs" + }, + { + "name": "envelope", + "to": "fa4-envelope" + }, + { + "name": "eye", + "to": "fa4-eye" + }, + { + "name": "gear", + "to": "fa4-gear" + }, + { + "name": "google", + "to": "fa4-google" + }, + { + "name": "map", + "to": "fa4-map" + }, + { + "name": "map_marker", + "to": "fa4-map-marker" + }, + { + "name": "mars", + "to": "fa4-mars" + }, + { + "name": "minus", + "to": "fa4-minus" + }, + { + "name": "music", + "to": "fa4-music" + }, + { + "name": "pencil", + "to": "fa4-pencil" + }, + { + "name": "print", + "to": "fa4-print" + }, + { + "name": "refresh", + "to": "fa4-refresh" + }, + { + "name": "search", + "to": "fa4-search" + }, + { + "name": "trash", + "to": "fa4-trash" + }, + { + "name": "user", + "to": "fa4-user" + }, + { + "name": "venus", + "to": "fa4-venus" + }, + { + "name": "volume_off", + "to": "fa4-volume-off" + }, + { + "name": "volume_up", + "to": "fa4-volume-up" + }, + { + "name": "first_page", + "to": "first_page" + }, + { + "name": "github", + "to": "fa4-github" + }, + { + "name": "glyphicon_envelope", + "to": "glyphicon-glyphicon-envelope" + }, + { + "name": "glyphicon_pencil", + "to": "glyphicon-glyphicon-pencil" + }, + { + "name": "highlight_off", + "to": "highlight_off" + }, + { + "name": "iconicstroke_info", + "to": "iconicstroke-iconicstroke_info" + }, + { + "name": "ion_arrow_down", + "to": "ion-arrow-down" + }, + { + "name": "ion_arrow_forward", + "to": "ion-arrow-forward" + }, + { + "name": "ion_ios_alarm", + "to": "ion-ios-alarm" + }, + { + "name": "ion_md_close", + "to": "ion-md-close" + }, + { + "name": "ion_md_grid", + "to": "ion-md-grid" + }, + { + "name": "ion_md_help", + "to": "ion-md-help" + }, + { + "name": "ion_md_image", + "to": "ion-md-image" + }, + { + "name": "ion_md_images", + "to": "ion-md-images" + }, + { + "name": "ion_md_key", + "to": "ion-md-key" + }, + { + "name": "ion_md_list", + "to": "ion-md-list" + }, + { + "name": "ion_md_musical_notes", + "to": "ion-md-musical-notes" + }, + { + "name": "ion_md_star_outline", + "to": "ion-md-star-outline" + }, + { + "name": "last_page", + "to": "last_page" + }, + { + "name": "loop", + "to": "loop" + }, + { + "name": "maki_art_gallery", + "to": "maki-maki-art-gallery" + }, + { + "name": "remove", + "to": "remove" + }, + { + "name": "vuestic-iconset-dashboard", + "to": "vuestic-iconset-dashboard" + }, + { + "name": "vuestic-iconset-files", + "to": "vuestic-iconset-files" + }, + { + "name": "vuestic-iconset-forms", + "to": "vuestic-iconset-forms" + }, + { + "name": "vuestic-iconset-maps", + "to": "vuestic-iconset-maps" + }, + { + "name": "vuestic-iconset-settings", + "to": "vuestic-iconset-settings" + }, + { + "name": "vuestic-iconset-statistics", + "to": "vuestic-iconset-statistics" + }, + { + "name": "vuestic-iconset-tables", + "to": "vuestic-iconset-tables" + }, + { + "name": "vuestic-iconset-ui-elements", + "to": "vuestic-iconset-ui-elements" + }, + { + "name": "warning", + "to": "warning" + } +] \ No newline at end of file diff --git a/frontend/src/services/vuestic-ui/icons-config/icons-config.ts b/frontend/src/services/vuestic-ui/icons-config/icons-config.ts new file mode 100644 index 0000000..42f21cd --- /dev/null +++ b/frontend/src/services/vuestic-ui/icons-config/icons-config.ts @@ -0,0 +1,28 @@ +import { createIconsConfig } from 'vuestic-ui' +import aliases from './aliases' + +export default createIconsConfig({ + aliases, + fonts: [ + { + name: 'fa4-{code}', + resolve: ({code}) => ({ class: `fa4 fa fa-${code}` }) + }, + { + name: 'vuestic-iconset-{code}', + resolve: ({code}) => ({ class:`vuestic-iconset vuestic-iconset-${code}` }) + }, + { + name: 'flag-icon-{code} {size}', + resolve: ({code, size}) => ({ class: `flag-icon flag-icon-${code} flag-icon-${size}` }) + }, + { + name: /(brandico|entypo|fa|fontelico|glyphicon|iconicstroke|maki|openwebicons|ion)-(.*)/, + resolveFromRegex: (font, code) => ({ class: `${font} ${font}-${code}` }) + }, + { + name: 'material-icons-{code}', + resolve: ({code}) => ({ to: code }) + } + ] +}) diff --git a/frontend/src/services/vuestic-ui/themes.ts b/frontend/src/services/vuestic-ui/themes.ts new file mode 100644 index 0000000..b25f6f0 --- /dev/null +++ b/frontend/src/services/vuestic-ui/themes.ts @@ -0,0 +1,164 @@ +import { ref, computed } from "vue" +//import { mergeGlobalConfig } from 'vuestic-ui' + +export const THEME_NAMES = { + LIGHT: 'LIGHT', + ORIGINAL: 'ORIGINAL', + DARK: 'DARK', + SEMI_DARK: 'SEMI_DARK', +} + +export const COLOR_THEMES = [ + { + name: THEME_NAMES.LIGHT, + colors: { + primary: '#154ec1', + secondary: '#767c88', + background: '#f6f7f6', + success: '#3d9209', + info: '#2c82e0', + danger: '#e42222', + warning: '#ffd43a', + white: '#ffffff', + dark: '#262824', + gray: '#767c88', + }, + components: { + VaNavbar: { + color: 'white', + textColor: 'dark', + }, + VaSidebar: { + color: 'white', + textColor: 'dark', + }, + VaCard: { + color: 'white', + }, + VaCardContent: { + textColor: 'dark', + }, + VaCardTitle: { + textColor: 'dark', + } + } + }, + { + name: THEME_NAMES.DARK, + colors: { + primary: '#6F92DA', + secondary: '#A8AEBA', + background: '#2f302d', + success: '#3d9209', + info: '#2c82e0', + danger: '#e42222', + warning: '#ffd43a', + white: '#262824', + dark: '#ffffff', + gray: '#f6f7f6', + }, + components: { + VaNavbar: { + color: 'white', + textColor: 'dark', + }, + VaSidebar: { + color: 'white', + textColor: 'dark', + }, + VaCard: { + color: 'white', + }, + VaCardContent: { + textColor: 'dark', + }, + VaCardTitle: { + textColor: 'dark', + } + } + }, + { + name: THEME_NAMES.SEMI_DARK, + colors: { + primary: '#6F92DA', + secondary: '#A8AEBA', + success: '#3d9209', + info: '#2c82e0', + danger: '#e42222', + warning: '#ffd43a', + background: '#f6f7f6', + white: '#ffffff', + dark: '#262824', + gray: '#767c88', + }, + components: { + VaNavbar: { + color: 'dark', + textColor: 'white', + }, + VaSidebar: { + color: 'dark', + textColor: 'white', + }, + VaCard: { + color: 'white', + }, + VaCardContent: { + textColor: 'dark', + }, + VaCardTitle: { + textColor: 'dark', + } + } + }, + { + name: THEME_NAMES.ORIGINAL, + colors: { + primary: '#6EDC7D', + secondary: '#A8AEBA', + background: '#eeeeee', + success: '#76E18D', + info: '#2c82e0', + danger: '#e34b4a', + warning: '#ffc200', + gray: '#767c88', + white: '#ffffff', + dark: '#262824', + }, + components: { + VaNavbar: { + color: '#1E4CBD', + textColor: 'primary', + }, + VaSidebar: { + color: '#0A2E80', + textColor: 'primary', + }, + VaCard: { + color: 'widget', + }, + VaCardContent: { + textColor: 'dark', + }, + VaCardTitle: { + textColor: 'dark', + } + } + }, +] + +export const useTheme = () => { + const themeNameRef = ref(THEME_NAMES.LIGHT) + + const setTheme = (themeName: keyof typeof THEME_NAMES) => { + themeNameRef.value = themeName + const theme = COLOR_THEMES.find((theme) => theme.name === themeName) + + if (!theme) { throw new Error('Theme not found') } + + //mergeGlobalConfig({ colors: theme.colors, components: theme.components }) + } + + const theme = computed(() => COLOR_THEMES.find((theme) => theme.name === themeNameRef.value)) + return { setTheme, themeName: themeNameRef, theme } +} diff --git a/frontend/src/store/index.ts b/frontend/src/store/index.ts new file mode 100644 index 0000000..f27cb32 --- /dev/null +++ b/frontend/src/store/index.ts @@ -0,0 +1,17 @@ +import { createStore } from 'vuex' + +export default createStore({ + strict: false, // process.env.NODE_ENV !== 'production', + state: { + isSidebarMinimized: false, + capacityColumns: [], + }, + mutations: { + updateSidebarCollapsedState(state, isSidebarMinimized) { + state.isSidebarMinimized = isSidebarMinimized + }, + updateCapacityColumns(state, columns) { + state.capacityColumns = columns + } + }, +}) diff --git a/frontend/src/views/commonSharedNetworksView.vue b/frontend/src/views/commonSharedNetworksView.vue new file mode 100644 index 0000000..e66eda5 --- /dev/null +++ b/frontend/src/views/commonSharedNetworksView.vue @@ -0,0 +1,24 @@ + + + + + diff --git a/frontend/src/views/dashboardView.vue b/frontend/src/views/dashboardView.vue new file mode 100644 index 0000000..d78e80c --- /dev/null +++ b/frontend/src/views/dashboardView.vue @@ -0,0 +1,23 @@ + + + + + diff --git a/frontend/src/views/nutanixDecomissionView.vue b/frontend/src/views/nutanixDecomissionView.vue new file mode 100644 index 0000000..f85e473 --- /dev/null +++ b/frontend/src/views/nutanixDecomissionView.vue @@ -0,0 +1,25 @@ + + + + + + \ No newline at end of file diff --git a/frontend/src/views/nutanixMaintenanceView.vue b/frontend/src/views/nutanixMaintenanceView.vue new file mode 100644 index 0000000..9366b1d --- /dev/null +++ b/frontend/src/views/nutanixMaintenanceView.vue @@ -0,0 +1,24 @@ + + + + + diff --git a/frontend/src/views/nutanixPrismCentralView.vue b/frontend/src/views/nutanixPrismCentralView.vue new file mode 100644 index 0000000..dfd43f6 --- /dev/null +++ b/frontend/src/views/nutanixPrismCentralView.vue @@ -0,0 +1,24 @@ + + + + + diff --git a/frontend/src/views/nutanixPrismElementView.vue b/frontend/src/views/nutanixPrismElementView.vue new file mode 100644 index 0000000..e1db36c --- /dev/null +++ b/frontend/src/views/nutanixPrismElementView.vue @@ -0,0 +1,24 @@ + + + + + diff --git a/frontend/src/views/vmwareCapacityView.vue b/frontend/src/views/vmwareCapacityView.vue new file mode 100644 index 0000000..5fb1ae9 --- /dev/null +++ b/frontend/src/views/vmwareCapacityView.vue @@ -0,0 +1,24 @@ + + + + + diff --git a/frontend/src/views/vmwareDatastoresView.vue b/frontend/src/views/vmwareDatastoresView.vue new file mode 100644 index 0000000..e646e8f --- /dev/null +++ b/frontend/src/views/vmwareDatastoresView.vue @@ -0,0 +1,24 @@ + + + + + diff --git a/frontend/src/views/vmwareDecomissionView.vue b/frontend/src/views/vmwareDecomissionView.vue new file mode 100644 index 0000000..0229b64 --- /dev/null +++ b/frontend/src/views/vmwareDecomissionView.vue @@ -0,0 +1,33 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/views/vmwareMaintenanceView.vue b/frontend/src/views/vmwareMaintenanceView.vue new file mode 100644 index 0000000..566308b --- /dev/null +++ b/frontend/src/views/vmwareMaintenanceView.vue @@ -0,0 +1,24 @@ + + + + + \ No newline at end of file diff --git a/frontend/tsconfig.config.json b/frontend/tsconfig.config.json new file mode 100644 index 0000000..c2d3a30 --- /dev/null +++ b/frontend/tsconfig.config.json @@ -0,0 +1,8 @@ +{ + "extends": "@vue/tsconfig/tsconfig.node.json", + "include": ["vite.config.*", "vitest.config.*", "cypress.config.*"], + "compilerOptions": { + "composite": true, + "types": ["node"] + } +} diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json new file mode 100644 index 0000000..0398622 --- /dev/null +++ b/frontend/tsconfig.json @@ -0,0 +1,26 @@ +{ + "extends": "@vue/tsconfig/tsconfig.web.json", + "include": ["env.d.ts", "src/**/*", "src/**/*.vue"], + "compilerOptions": { + "module": "es2020", + "target": "es2020", + "preserveValueImports": false, + "importsNotUsedAsValues": "preserve", + "ignoreDeprecations": "5.0", + "allowJs": true, + "baseUrl": ".", + "types": [ + "node", + "jest" + ], + "paths": { + "@/*": ["./src/*"] + } + }, + + "references": [ + { + "path": "./tsconfig.config.json" + } + ] +} diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts new file mode 100644 index 0000000..f1d3fb5 --- /dev/null +++ b/frontend/vite.config.ts @@ -0,0 +1,17 @@ +import { fileURLToPath, URL } from 'url' + +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [vue()], + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)) + } + }, + server : { + host: '0.0.0.0' + } +}) diff --git a/frontend/vue.config.js b/frontend/vue.config.js new file mode 100644 index 0000000..b03eb2d --- /dev/null +++ b/frontend/vue.config.js @@ -0,0 +1,13 @@ +// Vue.config.js +module.exports = { + // ... + css: { + loaderOptions: { + sass: { + sassOptions: { + quietDeps: true + } + } + } + } + } \ No newline at end of file