diff --git a/.coveragerc b/.coveragerc index 8823128d..0c56972b 100644 --- a/.coveragerc +++ b/.coveragerc @@ -8,7 +8,6 @@ branch = True [report] omit = */confi_text.py - */smb_fix.py */flask_simpleldap.py */seed.py */tests/* diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index aa9f2c0b..00000000 --- a/.eslintignore +++ /dev/null @@ -1,8 +0,0 @@ -web/static/**/*.min.* -node_modules/* -.mypy_cache -.pytest_cache -.tox -web/static/lib/* -web/static/fonts/* -web/static/css/* diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 14c24943..00000000 --- a/.eslintrc.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - "env": { - "browser": true - }, - "extends": "eslint:recommended", - "parserOptions": { - "ecmaVersion": 12 - }, - "rules": { - // "no-undef": "off" - }, - "globals": { - "CodeMirror": "readonly", - "flatpickr": "readonly" - } -}; diff --git a/.gitignore b/.gitignore index 355ca578..157de767 100644 --- a/.gitignore +++ b/.gitignore @@ -339,3 +339,4 @@ $RECYCLE.BIN/ *.lnk # End of https://www.toptal.com/developers/gitignore/api/node,python,macos,windows,git +Install.sh diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 1f0ba906..f92bf8a9 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -21,7 +21,7 @@ exclude: > repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.4.0 + rev: v5.0.0 hooks: - id: pretty-format-json args: [--autofix] @@ -30,18 +30,18 @@ repos: - id: check-yaml - id: end-of-file-fixer - repo: https://github.com/PyCQA/isort - rev: 5.12.0 + rev: 6.0.1 hooks: - id: isort exclude: migrations* | docs* additional_dependencies: [toml] - repo: https://github.com/psf/black - rev: 23.9.1 + rev: 25.1.0 hooks: - id: black - language_version: python3.9 + language_version: python3.12 - repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks - rev: v2.10.0 + rev: v2.14.0 hooks: - id: pretty-format-toml args: [--autofix] @@ -49,7 +49,3 @@ repos: args: [--autofix] - id: pretty-format-yaml args: [--autofix, --indent, '2'] -- repo: https://github.com/Riverside-Healthcare/djLint - rev: v1.33.0 - hooks: - - id: djlint-jinja diff --git a/.prettierignore b/.prettierignore index 7083df5a..f0b5b36b 100644 --- a/.prettierignore +++ b/.prettierignore @@ -3,6 +3,7 @@ node_modules/* .mypy_cache .pytest_cache .tox +/web/templates/sections/py_dates.* /web/static/lib/* !/web/static/lib/table/ diff --git a/.prettierrc b/.prettierrc index 9bbe7fbd..30335f2b 100644 --- a/.prettierrc +++ b/.prettierrc @@ -6,5 +6,6 @@ "trailingComma": "all", "bracketSpacing": true, "arrowParens": "always", - "semi": true + "semi": true, + "plugins": ["prettier-plugin-jinja-template"] } diff --git a/.version b/.version index ccc99d02..444877d4 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -2.12.3 +3.5.3 diff --git a/Dockerfile b/Dockerfile index 4ff215e2..9cb6d69d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ # needs a DATABASE_URL and REDIS_URL to be set # setup python -FROM python:3.11-alpine3.15 as python_install +FROM python:3.12.11-alpine3.22 as python_install ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ @@ -22,7 +22,7 @@ RUN wget -O - https://install.python-poetry.org | python3 - \ && poetry install --no-root --only main # build assets -FROM python:3.11-alpine3.15 as assets +FROM python:3.12.11-alpine3.22 as assets ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ @@ -51,7 +51,7 @@ RUN cp web/model.py scheduler/ && cp web/model.py runner/ \ && flask cli reset_db && flask db upgrade && flask cli seed && flask cli seed_demo # final app -FROM python:3.11-alpine3.15 +FROM python:3.12.11-alpine3.22 ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ diff --git a/babel.config.js b/babel.config.js index 5c7c7c58..eab28de2 100644 --- a/babel.config.js +++ b/babel.config.js @@ -1,5 +1,5 @@ -module.exports = function (api) { - api.cache(true); +export default function (api) { + api.cache(false); const presets = [['@babel/preset-env']]; const plugins = []; return { diff --git a/config.py b/config.py index 017d38f7..504f8ebe 100644 --- a/config.py +++ b/config.py @@ -14,6 +14,7 @@ class Config: """All prod configuration set here. For dev there are overrides below.""" # pylint: disable=too-few-public-methods + # ruff: noqa: RUF012 ALLOWED_HOSTS = ["*", "localhost"] @@ -244,7 +245,7 @@ class Config: """ DEVOPS_URL = "https://dev.azure.com/orgname/" - DEVOPS_TOKEN = r"token" + DEVOPS_TOKEN = r"token" # noqa: S105 """ Default SQL Connection Settings @@ -260,7 +261,6 @@ class Config: SMB_USERNAME = "username" SMB_PASSWORD = "password" # noqa: S105 - SMB_SERVER_IP = "10.0.0.0" SMB_SERVER_NAME = "servername" SMB_DEFAULT_SHARE = "BackupShare" @@ -324,6 +324,8 @@ class DevConfig(Config): class DemoConfig(Config): + """Configuration for a demo.""" + DEBUG = False DEMO = True AUTH_METHOD = "DEV" @@ -348,7 +350,7 @@ class TestConfig(DevConfig): # pylint: disable=too-few-public-methods SQLALCHEMY_DATABASE_URI = os.environ.get( "DATABASE_URL", - "postgresql+psycopg2://postgres@localhost/atlas_hub_scrap_test" + "postgresql+psycopg2://postgres@localhost/atlas_hub_scrap_test", # "sqlite:///../test.sqlite", ).replace("postgres://", "postgresql://") @@ -371,9 +373,9 @@ class TestConfig(DevConfig): # docker run -p 22:22 -d emberstack/sftp --name sftp SFTP_SERVER_USER = "demo" - SFTP_SERVER_PASS = "demo" + SFTP_SERVER_PASS = "demo" # noqa: S105 # docker run -d --name ftpd_server -p 21:21 onekilo79/ftpd_test # docker run -d --name ftpd_server -p 21:21 -p 30000-30009:30000-30009 -e FTP_USER_NAME=demo -e FTP_USER_PASS=demo -e FTP_USER_HOME=/home/demo -e "PUBLICHOST=localhost" -e "ADDED_FLAGS=-d -d" stilliard/pure-ftpd FTP_SERVER_USER = "demo" - FTP_SERVER_PASS = "demo" + FTP_SERVER_PASS = "demo" # noqa: S105 diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 00000000..71dc2d0f --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,39 @@ +import globals from "globals"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; +import js from "@eslint/js"; +import { FlatCompat } from "@eslint/eslintrc"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const compat = new FlatCompat({ + baseDirectory: __dirname, + recommendedConfig: js.configs.recommended, + allConfig: js.configs.all +}); + +export default [{ + ignores: [ + "web/static/**/*.min.*", + "node_modules/*", + "**/.mypy_cache", + "**/.pytest_cache", + "**/.tox", + "web/static/lib/*", + "web/static/fonts/*", + "web/static/css/*", + ], +}, ...compat.extends("eslint:recommended"), { + languageOptions: { + globals: { + ...globals.browser, + CodeMirror: "readonly", + flatpickr: "readonly", + }, + + ecmaVersion: 12, + sourceType: "script", + }, + + rules: {}, +}]; diff --git a/gulpfile.mjs b/gulpfile.mjs index 89958507..223de783 100644 --- a/gulpfile.mjs +++ b/gulpfile.mjs @@ -1,56 +1,100 @@ -import gulp from 'gulp'; +import pkg from 'gulp'; +const { src, dest, task, parallel,series } = pkg; import autoprefexer from 'gulp-autoprefixer'; import * as dartSass from 'sass'; import gulpSass from 'gulp-sass'; const sass = gulpSass(dartSass); - +import postcss from 'gulp-postcss'; import replace from 'gulp-replace'; -import fontawesomeSubset from 'fontawesome-subset'; +import {fontawesomeSubset} from 'fontawesome-subset'; import {deleteSync} from 'del'; import purgecss from 'gulp-purgecss'; -import cssnano from 'gulp-cssnano'; +import cssnano from 'cssnano'; -gulp.task('font:inter', function() { - return gulp.src('node_modules/@fontsource/inter/**/*').pipe(replace(/\.\/files\//g, '/static/fonts/inter/files/')).pipe(gulp.dest('web/static/fonts/inter')) +task('font:inter', function() { + return src('node_modules/@fontsource-variable/inter/**/*', { removeBOM: false }) + .pipe(replace(/\.\/files\//g, '/static/fonts/inter/files/')) + .pipe(dest('web/static/fonts/inter')) }); -gulp.task('font:rasa', function() { - return gulp.src('node_modules/@fontsource/rasa/**/*').pipe(replace(/\.\/files\//g, '/static/fonts/rasa/files/')).pipe(gulp.dest('web/static/fonts/rasa')) +task('font:rasa', function() { + return src('node_modules/@fontsource-variable/rasa/**/*', { removeBOM: false }) + .pipe(replace(/\.\/files\//g, '/static/fonts/rasa/files/')) + .pipe(dest('web/static/fonts/rasa')) }); -gulp.task('fontawesome', function(done) { +task('fontawesome', function(done) { deleteSync('web/static/fonts/fontawesome/webfonts', {force:true}); - fontawesomeSubset.fontawesomeSubset({ + fontawesomeSubset({ regular:['circle-play', 'circle-question'], - solid: ['triangle-exclamation', 'angle-down', 'circle-pause', 'right-to-bracket', 'users','eye', 'eye-slash', 'arrow-up-right-from-square', 'calendar', 'circle-stop','circle-question', 'circle-notch','circle-xmark', 'circle-check', 'angle-right', 'file-arrow-down', 'circle-info', 'magnifying-glass', 'pen-to-square', 'trash', 'delete-left', 'sort', 'terminal', 'list', 'ban', 'toggle-on', 'toggle-off', 'plus', 'rotate', 'download', 'copy', 'check'] + solid: ['triangle-exclamation' + , 'angle-down' + , 'circle-pause' + , 'right-to-bracket' + , 'users' + , 'eye' + , 'eye-slash' + , 'arrow-up-right-from-square' + , 'calendar' + , 'circle-stop' + , 'circle-question' + , 'circle-notch' + , 'circle-xmark' + , 'circle-check' + , 'angle-right' + , 'file-arrow-down' + , 'circle-info' + , 'magnifying-glass' + , 'pen-to-square' + , 'trash' + , 'delete-left' + , 'sort' + , 'terminal' + , 'list' + , 'ban' + , 'toggle-on' + , 'toggle-off' + , 'plus' + , 'rotate' + , 'download' + , 'copy' + , 'check'] }, 'web/static/fonts/fontawesome/webfonts') done(); }); -gulp.task('sass', function() { - return gulp.src("web/static/assets/**/*.scss") +task('sass', function() { + const plugins = [ + cssnano({ + preset: ['default', { discardComments: false }], + }), + ]; + return src("web/static/assets/**/*.scss") .pipe(sass().on('error', sass.logError)) + .pipe(postcss(plugins)) .pipe( purgecss({ - content: ['web/static/lib/**/*.js', 'web/static/js/**/*.js', 'web/templates/**/*.html.j2', 'runner/templates/**/*.html.j2', 'scheduler/templates/**/*.html.j2'], - safelist: ['has-text-success', 'mr-3', 'has-text-warning'], - whitelist: ['has-text-success', 'mr-3', 'has-text-warning'] + content: ['web/static/lib/**/*.js' + , 'web/static/js/**/*.js' + , 'web/templates/**/*.html.j2' + , 'runner/templates/**/*.html.j2' + , 'scheduler/templates/**/*.html.j2' + , 'web/web/*.py'], + safelist: [], + whitelist: [] }) ) - .pipe(autoprefexer({ - overrideBrowserslist: ['last 2 versions'] - })) - .pipe(cssnano()) - .pipe(gulp.dest('web/static/css/')) + .pipe(autoprefexer()) + .pipe(dest('web/static/css/')) }); -gulp.task('build', gulp.parallel('font:inter','font:rasa', gulp.series('fontawesome','sass'))); +task('build', parallel('font:inter','font:rasa', series('fontawesome','sass'))); -gulp.task('watch', gulp.series('build', function (cb) { - gulp.watch('web/static/assets/**/*.scss', gulp.series('sass')); - gulp.watch('web/fonts/fontawesome/**/*.scss', gulp.series('fontawesome','sass')); - gulp.watch('web/**/*.html*', gulp.series('fontawesome', 'sass')); +task('watch', series('build', function (cb) { + watch('web/static/assets/**/*.scss', series('sass')); + watch('web/fonts/fontawesome/**/*.scss', series('fontawesome','sass')); + watch('web/**/*.html*', series('fontawesome', 'sass')); cb(); })); diff --git a/migrations/env.py b/migrations/env.py index 9411efaa..441bc582 100644 --- a/migrations/env.py +++ b/migrations/env.py @@ -24,21 +24,21 @@ def get_engine(): try: # this works with Flask-SQLAlchemy<3 and Alchemical - return current_app.extensions['migrate'].db.get_engine() + return current_app.extensions["migrate"].db.get_engine() except TypeError: # this works with Flask-SQLAlchemy>=3 - return current_app.extensions['migrate'].db.engine + return current_app.extensions["migrate"].db.engine def get_engine_url(): try: return get_engine().url.render_as_string(hide_password=False).replace( - '%', '%%') + "%", "%%") except AttributeError: - return str(get_engine().url).replace('%', '%%') + return str(get_engine().url).replace("%", "%%") -config.set_main_option('sqlalchemy.url', get_engine_url()) -target_db = current_app.extensions['migrate'].db +config.set_main_option("sqlalchemy.url", get_engine_url()) +target_db = current_app.extensions["migrate"].db # other values from the config, defined by the needs of env.py, # can be acquired: @@ -46,7 +46,7 @@ def get_engine_url(): # ... etc. def get_metadata(): - if hasattr(target_db, 'metadatas'): + if hasattr(target_db, "metadatas"): return target_db.metadatas[None] return target_db.metadata diff --git a/migrations/versions/41eb15d37c84_.py b/migrations/versions/41eb15d37c84_.py new file mode 100644 index 00000000..2f9950f4 --- /dev/null +++ b/migrations/versions/41eb15d37c84_.py @@ -0,0 +1,99 @@ +"""empty message + +Revision ID: 41eb15d37c84 +Revises: e075a9d31b1a +Create Date: 2024-02-13 20:17:23.622449 + +""" +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision = '41eb15d37c84' +down_revision = 'e075a9d31b1a' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('connection_database', schema=None) as batch_op: + batch_op.create_index(batch_op.f('ix_connection_database_connection_id'), ['connection_id'], unique=False) + + with op.batch_alter_table('project', schema=None) as batch_op: + batch_op.alter_column('cron_year', + existing_type=sa.INTEGER(), + type_=sa.String(length=120), + existing_nullable=True) + batch_op.alter_column('cron_month', + existing_type=sa.INTEGER(), + type_=sa.String(length=120), + existing_nullable=True) + batch_op.alter_column('cron_week', + existing_type=sa.INTEGER(), + type_=sa.String(length=120), + existing_nullable=True) + batch_op.alter_column('cron_day', + existing_type=sa.INTEGER(), + type_=sa.String(length=120), + existing_nullable=True) + batch_op.alter_column('cron_week_day', + existing_type=sa.INTEGER(), + type_=sa.String(length=120), + existing_nullable=True) + batch_op.alter_column('cron_hour', + existing_type=sa.INTEGER(), + type_=sa.String(length=120), + existing_nullable=True) + batch_op.alter_column('cron_min', + existing_type=sa.INTEGER(), + type_=sa.String(length=120), + existing_nullable=True) + batch_op.alter_column('cron_sec', + existing_type=sa.INTEGER(), + type_=sa.String(length=120), + existing_nullable=True) + + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('project', schema=None) as batch_op: + batch_op.alter_column('cron_sec', + existing_type=sa.String(length=120), + type_=sa.INTEGER(), + existing_nullable=True) + batch_op.alter_column('cron_min', + existing_type=sa.String(length=120), + type_=sa.INTEGER(), + existing_nullable=True) + batch_op.alter_column('cron_hour', + existing_type=sa.String(length=120), + type_=sa.INTEGER(), + existing_nullable=True) + batch_op.alter_column('cron_week_day', + existing_type=sa.String(length=120), + type_=sa.INTEGER(), + existing_nullable=True) + batch_op.alter_column('cron_day', + existing_type=sa.String(length=120), + type_=sa.INTEGER(), + existing_nullable=True) + batch_op.alter_column('cron_week', + existing_type=sa.String(length=120), + type_=sa.INTEGER(), + existing_nullable=True) + batch_op.alter_column('cron_month', + existing_type=sa.String(length=120), + type_=sa.INTEGER(), + existing_nullable=True) + batch_op.alter_column('cron_year', + existing_type=sa.String(length=120), + type_=sa.INTEGER(), + existing_nullable=True) + + with op.batch_alter_table('connection_database', schema=None) as batch_op: + batch_op.drop_index(batch_op.f('ix_connection_database_connection_id')) + + # ### end Alembic commands ### diff --git a/migrations/versions/73214b16a952_.py b/migrations/versions/73214b16a952_.py new file mode 100644 index 00000000..b1feb6f3 --- /dev/null +++ b/migrations/versions/73214b16a952_.py @@ -0,0 +1,65 @@ +"""empty message + +Revision ID: 73214b16a952 +Revises: 9ba33783b877 +Create Date: 2024-08-09 17:56:31.257536 + +""" +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision = '73214b16a952' +down_revision = '9ba33783b877' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('connection_database', schema=None) as batch_op: + batch_op.drop_index('ix_connection_database_type_id') + + with op.batch_alter_table('connection_database_type', schema=None) as batch_op: + batch_op.create_index(batch_op.f('ix_connection_database_type_id'), ['id'], unique=False) + + with op.batch_alter_table('task', schema=None) as batch_op: + batch_op.drop_index('ix_task_destination_file_type_id') + batch_op.drop_index('ix_task_processing_type_id') + batch_op.drop_index('ix_task_status_id') + + with op.batch_alter_table('task_destination_file_type', schema=None) as batch_op: + batch_op.create_index(batch_op.f('ix_task_destination_file_type_id'), ['id'], unique=False) + + with op.batch_alter_table('task_processing_type', schema=None) as batch_op: + batch_op.create_index(batch_op.f('ix_task_processing_type_id'), ['id'], unique=False) + + with op.batch_alter_table('task_status', schema=None) as batch_op: + batch_op.create_index(batch_op.f('ix_task_status_id'), ['id'], unique=False) + + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('task_status', schema=None) as batch_op: + batch_op.drop_index(batch_op.f('ix_task_status_id')) + + with op.batch_alter_table('task_processing_type', schema=None) as batch_op: + batch_op.drop_index(batch_op.f('ix_task_processing_type_id')) + + with op.batch_alter_table('task_destination_file_type', schema=None) as batch_op: + batch_op.drop_index(batch_op.f('ix_task_destination_file_type_id')) + + with op.batch_alter_table('task', schema=None) as batch_op: + batch_op.create_index('ix_task_status_id', ['status_id'], unique=False) + batch_op.create_index('ix_task_processing_type_id', ['processing_type_id'], unique=False) + batch_op.create_index('ix_task_destination_file_type_id', ['destination_file_type_id'], unique=False) + + with op.batch_alter_table('connection_database_type', schema=None) as batch_op: + batch_op.drop_index(batch_op.f('ix_connection_database_type_id')) + + with op.batch_alter_table('connection_database', schema=None) as batch_op: + batch_op.create_index('ix_connection_database_type_id', ['type_id'], unique=False) + + # ### end Alembic commands ### diff --git a/migrations/versions/9ba33783b877_.py b/migrations/versions/9ba33783b877_.py new file mode 100644 index 00000000..bfe68e2f --- /dev/null +++ b/migrations/versions/9ba33783b877_.py @@ -0,0 +1,93 @@ +"""empty message + +Revision ID: 9ba33783b877 +Revises: 41eb15d37c84 +Create Date: 2024-07-26 10:33:31.112172 + +""" +import sqlalchemy as sa +from alembic import op +from sqlalchemy.dialects import postgresql + +# revision identifiers, used by Alembic. +revision = '9ba33783b877' +down_revision = '41eb15d37c84' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + # these are auto added by postgres, but added to this file so they will not be added again. + # with op.batch_alter_table('connection_database_type', schema=None) as batch_op: + # batch_op.create_index(batch_op.f('ix_connection_database_type_id'), ['id'], unique=False) + + with op.batch_alter_table('login', schema=None) as batch_op: + batch_op.alter_column('login_date', + existing_type=postgresql.TIMESTAMP(), + nullable=False, + existing_server_default=sa.text('now()')) + + with op.batch_alter_table('project', schema=None) as batch_op: + batch_op.alter_column('created', + existing_type=postgresql.TIMESTAMP(), + nullable=False, + existing_server_default=sa.text('now()')) + + with op.batch_alter_table('task', schema=None) as batch_op: + batch_op.alter_column('created', + existing_type=postgresql.TIMESTAMP(), + nullable=False, + existing_server_default=sa.text('now()')) + batch_op.drop_index('ix_task_email_error') + + # these are auto added by postgres, but added to this file so they will not be added again. + # with op.batch_alter_table('task_destination_file_type', schema=None) as batch_op: + # batch_op.create_index(batch_op.f('ix_task_destination_file_type_id'), ['id'], unique=False) + + + # these are auto added by postgres, but added to this file so they will not be added again. + # with op.batch_alter_table('task_processing_type', schema=None) as batch_op: + # batch_op.create_index(batch_op.f('ix_task_processing_type_id'), ['id'], unique=False) + + # with op.batch_alter_table('task_status', schema=None) as batch_op: + # batch_op.create_index(batch_op.f('ix_task_status_id'), ['id'], unique=False) + + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('task_status', schema=None) as batch_op: + batch_op.drop_index(batch_op.f('ix_task_status_id')) + + with op.batch_alter_table('task_processing_type', schema=None) as batch_op: + batch_op.drop_index(batch_op.f('ix_task_processing_type_id')) + + + with op.batch_alter_table('task_destination_file_type', schema=None) as batch_op: + batch_op.drop_index(batch_op.f('ix_task_destination_file_type_id')) + + with op.batch_alter_table('task', schema=None) as batch_op: + batch_op.create_index('ix_task_email_error', ['email_error'], unique=False) + batch_op.alter_column('created', + existing_type=postgresql.TIMESTAMP(), + nullable=True, + existing_server_default=sa.text('now()')) + + with op.batch_alter_table('project', schema=None) as batch_op: + batch_op.alter_column('created', + existing_type=postgresql.TIMESTAMP(), + nullable=True, + existing_server_default=sa.text('now()')) + + with op.batch_alter_table('login', schema=None) as batch_op: + batch_op.alter_column('login_date', + existing_type=postgresql.TIMESTAMP(), + nullable=True, + existing_server_default=sa.text('now()')) + + with op.batch_alter_table('connection_database_type', schema=None) as batch_op: + batch_op.drop_index(batch_op.f('ix_connection_database_type_id')) + + # ### end Alembic commands ### diff --git a/migrations/versions/a61947d2caf8_.py b/migrations/versions/a61947d2caf8_.py new file mode 100644 index 00000000..09772f58 --- /dev/null +++ b/migrations/versions/a61947d2caf8_.py @@ -0,0 +1,41 @@ +"""empty message + +Revision ID: a61947d2caf8 +Revises: 73214b16a952 +Create Date: 2025-08-08 09:11:16.465770 + +""" +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision = 'a61947d2caf8' +down_revision = '73214b16a952' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('connection_smb', schema=None) as batch_op: + batch_op.drop_column('server_ip') + + with op.batch_alter_table('task', schema=None) as batch_op: + batch_op.add_column(sa.Column('source_smb_ignore_subfolders', sa.Integer(), nullable=True)) + batch_op.drop_column('source_smb_ignore_delimiter') + batch_op.drop_column('source_smb_delimiter') + + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('task', schema=None) as batch_op: + batch_op.add_column(sa.Column('source_smb_delimiter', sa.VARCHAR(length=10), autoincrement=False, nullable=True)) + batch_op.add_column(sa.Column('source_smb_ignore_delimiter', sa.INTEGER(), autoincrement=False, nullable=True)) + batch_op.drop_column('source_smb_ignore_subfolders') + + with op.batch_alter_table('connection_smb', schema=None) as batch_op: + batch_op.add_column(sa.Column('server_ip', sa.VARCHAR(length=500), autoincrement=False, nullable=True)) + + # ### end Alembic commands ### diff --git a/package-lock.json b/package-lock.json index d40af78f..1522adb5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,122 +1,123 @@ { "name": "atlas_automation_hub", - "version": "2.10.4", + "version": "3.5.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "atlas_automation_hub", - "version": "2.10.4", + "version": "3.5.3", "hasInstallScript": true, "license": "AGPL-3.0-or-later", "dependencies": { - "@babel/preset-env": "^7.22.20", - "@fontsource/inter": "5.0.3", - "@fontsource/rasa": "5.0.3", - "@hotwired/turbo": "^7.3.0", - "@rollup/plugin-babel": "^6.0.3", - "@rollup/plugin-commonjs": "^25.0.4", - "@rollup/plugin-json": "^6.0.0", - "@rollup/plugin-node-resolve": "^15.2.1", - "bulma": "0.9.4", - "bulma-checkradio": "2.1.3", - "bulma-switch": "2.0.4", - "bulma-tooltip": "3.0.2", - "del": "7.0.0", - "fontawesome-subset": "4.4.0", - "gulp": "4.0.2", - "gulp-autoprefixer": "8.0.0", + "@babel/preset-env": "^7.28.0", + "@fontsource-utils/scss": "0.2.1", + "@fontsource-variable/inter": "5.2.6", + "@fontsource-variable/rasa": "5.2.7", + "@hotwired/turbo": "^8.0.13", + "@rollup/plugin-babel": "^6.0.4", + "@rollup/plugin-commonjs": "^28.0.6", + "@rollup/plugin-json": "^6.1.0", + "@rollup/plugin-node-resolve": "^16.0.1", + "bulma": "^1.0.4", + "codemirror": "^6.0.2", + "del": "8.0.0", + "fontawesome-subset": "4.5.0", + "git-cz": "^4.9.0", + "gulp": "5.0.1", + "gulp-autoprefixer": "9.0.0", "gulp-replace": "1.1.4", - "gulp-sass": "5.1.0", + "gulp-sass": "6.0.1", "npm-run-all": "^4.1.5", - "rollup": "^3.29.2", - "sass": "^1.67.0", - "uglify-js": "^3.17.4" + "rollup": "^4.46.2", + "sass": "^1.90.0", + "uglify-js": "^3.19.3" }, "devDependencies": { - "@fortawesome/fontawesome-free": "6.4.0", - "@semantic-release/changelog": "6.0.3", - "@semantic-release/commit-analyzer": "^11.0.0", - "@semantic-release/exec": "6.0.3", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "^9.33.0", + "@fortawesome/fontawesome-free": "6.7.2", + "@semantic-release/changelog": "^6.0.3", + "@semantic-release/commit-analyzer": "13.0.1", + "@semantic-release/exec": "7.1.0", "@semantic-release/git": "10.0.1", - "@semantic-release/github": "^9.0.6", - "@semantic-release/npm": "^11.0.0", - "@semantic-release/release-notes-generator": "^12.0.0", - "browser-sync": "^2.29.1", + "@semantic-release/github": "^11.0.4", + "@semantic-release/npm": "^12.0.2", + "@semantic-release/release-notes-generator": "14.0.3", + "browser-sync": "^3.0.4", + "cssnano": "^7.1.0", "cz-conventional-changelog": "3.3.0", - "eslint": "^8.49.0", + "eslint": "^9.33.0", + "globals": "^16.3.0", "gulp-concat": "2.6.1", - "gulp-cssnano": "2.1.3", - "gulp-purgecss": "5.0.0", - "gulp-rename": "2.0.0", + "gulp-postcss": "10.0.0", + "gulp-purgecss": "7.0.2", + "gulp-rename": "2.1.0", "gulp-uglify": "3.0.2", - "prettier": "^3.0.3", - "semantic-release": "^22.0.0" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "prettier": "^3.6.2", + "prettier-plugin-jinja-template": "^2.1.0", + "semantic-release": "^24.2.7" } }, "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "license": "Apache-2.0", "peer": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "license": "MIT", "dependencies": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz", - "integrity": "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz", + "integrity": "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.4.tgz", - "integrity": "sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==", + "version": "7.27.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.4.tgz", + "integrity": "sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==", + "license": "MIT", "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.21.4", - "@babel/helper-compilation-targets": "^7.21.4", - "@babel/helper-module-transforms": "^7.21.2", - "@babel/helpers": "^7.21.0", - "@babel/parser": "^7.21.4", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.4", - "@babel/types": "^7.21.4", - "convert-source-map": "^1.7.0", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.27.3", + "@babel/helpers": "^7.27.4", + "@babel/parser": "^7.27.4", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.27.4", + "@babel/types": "^7.27.3", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -126,70 +127,43 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz", - "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==", - "peer": true, + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz", + "integrity": "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" + "@babel/parser": "^7.28.0", + "@babel/types": "^7.28.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/generator/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==", - "peer": true, - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz", - "integrity": "sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.27.3" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -197,40 +171,18 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", - "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.15", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz", + "integrity": "sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.27.1", "semver": "^6.3.1" }, "engines": { @@ -240,22 +192,15 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.5.tgz", - "integrity": "sha512-1VpEFOIbMRaXyDeUwUfmTIxExLwQ+zkW+Bh5zXpApA3oQedBx9v/updixWxnx/bZpKw7u8VxWjb/qWpIcmPq8A==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz", + "integrity": "sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==", + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "regexpu-core": "^5.3.1", - "semver": "^6.3.0" + "@babel/helper-annotate-as-pure": "^7.27.1", + "regexpu-core": "^6.2.0", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -264,92 +209,66 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", - "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz", + "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==", + "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "debug": "^4.4.1", "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" + "resolve": "^1.22.10" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", - "dependencies": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dependencies": { - "@babel/types": "^7.22.5" - }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.15.tgz", - "integrity": "sha512-qLNsZbgrNh0fDQBCPocSL8guki1hcPvltGDv/NxvUoABwFq7GkKSu1nRXeJkVZc+wJvne2E0RKQz+2SQrz6eAA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz", + "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.20.tgz", - "integrity": "sha512-dLT7JVWIUUxKOs1UnJUBR3S70YK+pKX6AbJgB2vMIvEkZkrfJDbYDJesnPshtKV4LhDOR3Oc5YULeDizRek+5A==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", + "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.3" }, "engines": { "node": ">=6.9.0" @@ -359,32 +278,35 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", - "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", - "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-wrap-function": "^7.22.20" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -394,13 +316,14 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", - "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", + "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.22.15", - "@babel/helper-optimise-call-expression": "^7.22.5" + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -409,107 +332,82 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", - "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", - "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.27.1.tgz", + "integrity": "sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==", + "license": "MIT", "dependencies": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.15", - "@babel/types": "^7.22.19" + "@babel/template": "^7.27.1", + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", - "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz", + "integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==", + "license": "MIT", "peer": true, "dependencies": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0" + "@babel/template": "^7.27.2", + "@babel/types": "^7.27.6" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "node_modules/@babel/parser": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz", + "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==", + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "@babel/types": "^7.28.0" }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.22.16", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.16.tgz", - "integrity": "sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==", "bin": { "parser": "bin/babel-parser.js" }, @@ -517,12 +415,14 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz", - "integrity": "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==", + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz", + "integrity": "sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -531,202 +431,88 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz", - "integrity": "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==", + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.15" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", - "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.13.0" } }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", - "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.27.1.tgz", + "integrity": "sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz", + "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -735,12 +521,13 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", + "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -753,6 +540,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -765,11 +553,12 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", - "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -779,14 +568,14 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz", - "integrity": "sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz", + "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==", + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.28.0" }, "engines": { "node": ">=6.9.0" @@ -796,13 +585,14 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", - "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz", + "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==", + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.5" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -812,11 +602,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", - "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -826,11 +617,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.15.tgz", - "integrity": "sha512-G1czpdJBZCtngoK1sJgloLiOHUnkb/bLZwqVZD8kXmq0ZnVfTTWUcs9OWtp0mBtYJ+4LQY1fllqBkOIPhXmFmw==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.0.tgz", + "integrity": "sha512-gKKnwjpdx5sER/wl0WN0efUBFzF/56YZO0RJrSYP4CljXnP31ByY7fol89AzomdlLNzI36AvOTmYHsnZTCkq8Q==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -840,12 +632,13 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", - "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", + "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -855,13 +648,13 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", - "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.27.1.tgz", + "integrity": "sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA==", + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.11", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-class-static-block": "^7.14.5" + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -871,19 +664,17 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz", - "integrity": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.0.tgz", + "integrity": "sha512-IjM1IoJNw72AZFlj33Cu8X0q2XK/6AaVC3jQu+cgQ5lThWD5ajnuUAml80dqRmOhmPkTH8uAwnpMu9Rvj0LTRA==", + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", - "@babel/helper-split-export-declaration": "^7.22.6", - "globals": "^11.1.0" + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-globals": "^7.28.0", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/traverse": "^7.28.0" }, "engines": { "node": ">=6.9.0" @@ -892,21 +683,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-classes/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", - "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz", + "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/template": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -916,11 +700,13 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.15.tgz", - "integrity": "sha512-HzG8sFl1ZVGTme74Nw+X01XsUTqERVQ6/RLHo3XjGRzm7XD6QTtfS3NJotVgCGy8BzkDqRjRBD8dAyJn5TuvSQ==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.0.tgz", + "integrity": "sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.0" }, "engines": { "node": ">=6.9.0" @@ -930,12 +716,13 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", - "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz", + "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==", + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -945,11 +732,12 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", - "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -958,13 +746,45 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", - "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz", + "integrity": "sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0" }, "engines": { "node": ">=6.9.0" @@ -974,12 +794,12 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", - "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz", + "integrity": "sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==", + "license": "MIT", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -989,12 +809,12 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", - "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1004,11 +824,13 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz", - "integrity": "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1018,13 +840,14 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", - "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", + "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1034,12 +857,12 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", - "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz", + "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-json-strings": "^7.8.3" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1049,11 +872,12 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", - "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1063,12 +887,12 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", - "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz", + "integrity": "sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1078,11 +902,12 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", - "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1092,12 +917,13 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz", - "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1107,13 +933,13 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.15.tgz", - "integrity": "sha512-jWL4eh90w0HQOTKP2MoXXUpVxilxsB2Vl4ji69rSjS3EcZ/v4sBmn+A3NpepuJzBhOaEBbR7udonlHHn5DWidg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", + "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1123,14 +949,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.11.tgz", - "integrity": "sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz", + "integrity": "sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==", + "license": "MIT", "dependencies": { - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.22.9", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1140,12 +967,13 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", - "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1155,12 +983,13 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", - "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1170,11 +999,12 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", - "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1184,12 +1014,12 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", - "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", + "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1199,12 +1029,12 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", - "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz", + "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1214,15 +1044,16 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz", - "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.0.tgz", + "integrity": "sha512-9VNGikXxzu5eCiQjdE4IZn8sb9q7Xsk5EXLDBKUYg1e/Tve8/05+KJEtcxGxAgCY5t/BpKQM+JEL/yT4tvgiUA==", + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.22.15" + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.0" }, "engines": { "node": ">=6.9.0" @@ -1232,12 +1063,13 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", - "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1247,12 +1079,12 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", - "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz", + "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1262,13 +1094,13 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.15.tgz", - "integrity": "sha512-ngQ2tBhq5vvSJw2Q2Z9i7ealNkpDMU0rGWnHPKqRZO0tzZ5tlaoz4hDvhXioOoaE0X2vfNss1djwg0DXlfu30A==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz", + "integrity": "sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1278,11 +1110,12 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz", - "integrity": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==", + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1292,12 +1125,13 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", - "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz", + "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==", + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1307,14 +1141,14 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", - "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz", + "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==", + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.11", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1324,11 +1158,12 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", - "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1338,12 +1173,12 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", - "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", + "version": "7.28.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.1.tgz", + "integrity": "sha512-P0QiV/taaa3kXpLY+sXla5zec4E+4t4Aqc9ggHlfZ7a2cp8/x/Gv08jfwEtn9gnnYIMvHx6aoOZ8XJL8eU71Dg==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "regenerator-transform": "^0.15.2" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1352,12 +1187,29 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz", + "integrity": "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", - "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1367,11 +1219,12 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", - "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1381,12 +1234,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", - "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz", + "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1396,11 +1250,12 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", - "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1410,11 +1265,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", - "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1424,11 +1280,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", - "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1438,11 +1295,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", - "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1452,12 +1310,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", - "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz", + "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==", + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1467,12 +1326,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", - "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1482,12 +1342,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", - "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz", + "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==", + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1497,89 +1358,80 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.20.tgz", - "integrity": "sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg==", - "dependencies": { - "@babel/compat-data": "^7.22.20", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.15", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.15", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.0.tgz", + "integrity": "sha512-VmaxeGOwuDqzLl5JUkIRM1X2Qu2uKGxHEQWh+cvvbl7JuJRgKGJSfsEF/bUaxFhJl/XAyxBe7q7qSuTbKFuCyg==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.0", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.27.1", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.27.1", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.22.5", - "@babel/plugin-syntax-import-attributes": "^7.22.5", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-import-assertions": "^7.27.1", + "@babel/plugin-syntax-import-attributes": "^7.27.1", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.22.5", - "@babel/plugin-transform-async-generator-functions": "^7.22.15", - "@babel/plugin-transform-async-to-generator": "^7.22.5", - "@babel/plugin-transform-block-scoped-functions": "^7.22.5", - "@babel/plugin-transform-block-scoping": "^7.22.15", - "@babel/plugin-transform-class-properties": "^7.22.5", - "@babel/plugin-transform-class-static-block": "^7.22.11", - "@babel/plugin-transform-classes": "^7.22.15", - "@babel/plugin-transform-computed-properties": "^7.22.5", - "@babel/plugin-transform-destructuring": "^7.22.15", - "@babel/plugin-transform-dotall-regex": "^7.22.5", - "@babel/plugin-transform-duplicate-keys": "^7.22.5", - "@babel/plugin-transform-dynamic-import": "^7.22.11", - "@babel/plugin-transform-exponentiation-operator": "^7.22.5", - "@babel/plugin-transform-export-namespace-from": "^7.22.11", - "@babel/plugin-transform-for-of": "^7.22.15", - "@babel/plugin-transform-function-name": "^7.22.5", - "@babel/plugin-transform-json-strings": "^7.22.11", - "@babel/plugin-transform-literals": "^7.22.5", - "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", - "@babel/plugin-transform-member-expression-literals": "^7.22.5", - "@babel/plugin-transform-modules-amd": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.22.15", - "@babel/plugin-transform-modules-systemjs": "^7.22.11", - "@babel/plugin-transform-modules-umd": "^7.22.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.22.5", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", - "@babel/plugin-transform-numeric-separator": "^7.22.11", - "@babel/plugin-transform-object-rest-spread": "^7.22.15", - "@babel/plugin-transform-object-super": "^7.22.5", - "@babel/plugin-transform-optional-catch-binding": "^7.22.11", - "@babel/plugin-transform-optional-chaining": "^7.22.15", - "@babel/plugin-transform-parameters": "^7.22.15", - "@babel/plugin-transform-private-methods": "^7.22.5", - "@babel/plugin-transform-private-property-in-object": "^7.22.11", - "@babel/plugin-transform-property-literals": "^7.22.5", - "@babel/plugin-transform-regenerator": "^7.22.10", - "@babel/plugin-transform-reserved-words": "^7.22.5", - "@babel/plugin-transform-shorthand-properties": "^7.22.5", - "@babel/plugin-transform-spread": "^7.22.5", - "@babel/plugin-transform-sticky-regex": "^7.22.5", - "@babel/plugin-transform-template-literals": "^7.22.5", - "@babel/plugin-transform-typeof-symbol": "^7.22.5", - "@babel/plugin-transform-unicode-escapes": "^7.22.10", - "@babel/plugin-transform-unicode-property-regex": "^7.22.5", - "@babel/plugin-transform-unicode-regex": "^7.22.5", - "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.28.0", + "@babel/plugin-transform-async-to-generator": "^7.27.1", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.0", + "@babel/plugin-transform-class-properties": "^7.27.1", + "@babel/plugin-transform-class-static-block": "^7.27.1", + "@babel/plugin-transform-classes": "^7.28.0", + "@babel/plugin-transform-computed-properties": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0", + "@babel/plugin-transform-dotall-regex": "^7.27.1", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-explicit-resource-management": "^7.28.0", + "@babel/plugin-transform-exponentiation-operator": "^7.27.1", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.27.1", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.27.1", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-modules-systemjs": "^7.27.1", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1", + "@babel/plugin-transform-numeric-separator": "^7.27.1", + "@babel/plugin-transform-object-rest-spread": "^7.28.0", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/plugin-transform-private-methods": "^7.27.1", + "@babel/plugin-transform-private-property-in-object": "^7.27.1", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.28.0", + "@babel/plugin-transform-regexp-modifiers": "^7.27.1", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.27.1", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.27.1", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.27.1", "@babel/preset-modules": "0.1.6-no-external-plugins", - "@babel/types": "^7.22.19", - "babel-plugin-polyfill-corejs2": "^0.4.5", - "babel-plugin-polyfill-corejs3": "^0.8.3", - "babel-plugin-polyfill-regenerator": "^0.5.2", - "core-js-compat": "^3.31.0", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "core-js-compat": "^3.43.0", "semver": "^6.3.1" }, "engines": { @@ -1589,29 +1441,11 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/preset-env/node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/preset-modules": { "version": "0.1.6-no-external-plugins", "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", @@ -1621,76 +1455,130 @@ "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" - }, - "node_modules/@babel/runtime": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz", - "integrity": "sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==", + "node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "license": "MIT", "dependencies": { - "regenerator-runtime": "^0.14.0" + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "node_modules/@babel/traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz", + "integrity": "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==", + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.0", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.0", + "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/traverse": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz", - "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==", - "peer": true, + "node_modules/@babel/types": { + "version": "7.28.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.2.tgz", + "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==", + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5", - "debug": "^4.1.0", - "globals": "^11.1.0" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "peer": true, - "engines": { - "node": ">=4" + "node_modules/@codemirror/autocomplete": { + "version": "6.18.6", + "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.18.6.tgz", + "integrity": "sha512-PHHBXFomUs5DF+9tCOM/UoW6XQ4R44lLNNhRaW9PKPTU0D7lIjRg3ElxaJnTwsl/oHiR93WSXDBrekhoUGCPtg==", + "license": "MIT", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0" } }, - "node_modules/@babel/types": { - "version": "7.22.19", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.19.tgz", - "integrity": "sha512-P7LAw/LbojPzkgp5oznjE6tQEIWbp4PkkfrZDINTro9zgBRtI324/EYsiSI7lhPbpIQ+DCeR2NNmMWANGGfZsg==", + "node_modules/@codemirror/commands": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.8.1.tgz", + "integrity": "sha512-KlGVYufHMQzxbdQONiLyGQDUW0itrLZwq3CcY7xpv9ZLRHqzkBSoteocBHtMCoY7/Ci4xhzSrToIeLg7FxHuaw==", + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.19", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.4.0", + "@codemirror/view": "^6.27.0", + "@lezer/common": "^1.1.0" + } + }, + "node_modules/@codemirror/language": { + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.11.1.tgz", + "integrity": "sha512-5kS1U7emOGV84vxC+ruBty5sUgcD0te6dyupyRVG2zaSjhTDM73LhVKUtVwiqSe6QwmEoA4SCiU8AKPFyumAWQ==", + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.23.0", + "@lezer/common": "^1.1.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0", + "style-mod": "^4.0.0" + } + }, + "node_modules/@codemirror/lint": { + "version": "6.8.5", + "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.8.5.tgz", + "integrity": "sha512-s3n3KisH7dx3vsoeGMxsbRAgKe4O1vbrnKBClm99PU0fWxmxsx5rR2PfqQgIt+2MMJBHbiJ5rfIdLYfB9NNvsA==", + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.35.0", + "crelt": "^1.0.5" + } + }, + "node_modules/@codemirror/search": { + "version": "6.5.11", + "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.5.11.tgz", + "integrity": "sha512-KmWepDE6jUdL6n8cAAqIpRmLPBZ5ZKnicE8oGU/s3QrAVID+0VhLFrzUucVKHG5035/BSykhExDL/Xm7dHthiA==", + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "crelt": "^1.0.5" + } + }, + "node_modules/@codemirror/state": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.5.2.tgz", + "integrity": "sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==", + "license": "MIT", + "dependencies": { + "@marijn/find-cluster-break": "^1.0.0" + } + }, + "node_modules/@codemirror/view": { + "version": "6.37.1", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.37.1.tgz", + "integrity": "sha512-Qy4CAUwngy/VQkEz0XzMKVRcckQuqLYWKqVpDDDghBe5FSXSqfVrJn49nw3ePZHxRUz4nRmb05Lgi+9csWo4eg==", + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.5.0", + "crelt": "^1.0.6", + "style-mod": "^4.1.0", + "w3c-keyname": "^2.2.4" } }, "node_modules/@colors/colors": { @@ -1698,454 +1586,593 @@ "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=0.1.90" } }, "node_modules/@commitlint/config-validator": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-17.0.3.tgz", - "integrity": "sha512-3tLRPQJKapksGE7Kee9axv+9z5I2GDHitDH4q63q7NmNA0wkB+DAorJ0RHz2/K00Zb1/MVdHzhCga34FJvDihQ==", + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-19.8.1.tgz", + "integrity": "sha512-0jvJ4u+eqGPBIzzSdqKNX1rvdbSU1lPNYlfQQRIFnBgLy26BtC0cFnr7c/AyuzExMxWsMOte6MkTi9I3SQ3iGQ==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { - "@commitlint/types": "^17.0.0", + "@commitlint/types": "^19.8.1", "ajv": "^8.11.0" }, "engines": { - "node": ">=v14" + "node": ">=v18" + } + }, + "node_modules/@commitlint/config-validator/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/@commitlint/config-validator/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT", + "optional": true + }, "node_modules/@commitlint/execute-rule": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-17.0.0.tgz", - "integrity": "sha512-nVjL/w/zuqjCqSJm8UfpNaw66V9WzuJtQvEnCrK4jDw6qKTmZB+1JQ8m6BQVZbNBcwfYdDNKnhIhqI0Rk7lgpQ==", + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-19.8.1.tgz", + "integrity": "sha512-YfJyIqIKWI64Mgvn/sE7FXvVMQER/Cd+s3hZke6cI1xgNT/f6ZAz5heND0QtffH+KbcqAwXDEE1/5niYayYaQA==", "dev": true, + "license": "MIT", "optional": true, "engines": { - "node": ">=v14" + "node": ">=v18" } }, "node_modules/@commitlint/load": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-17.0.3.tgz", - "integrity": "sha512-3Dhvr7GcKbKa/ey4QJ5MZH3+J7QFlARohUow6hftQyNjzoXXROm+RwpBes4dDFrXG1xDw9QPXA7uzrOShCd4bw==", + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-19.8.1.tgz", + "integrity": "sha512-9V99EKG3u7z+FEoe4ikgq7YGRCSukAcvmKQuTtUyiYPnOd9a2/H9Ak1J9nJA1HChRQp9OA/sIKPugGS+FK/k1A==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { - "@commitlint/config-validator": "^17.0.3", - "@commitlint/execute-rule": "^17.0.0", - "@commitlint/resolve-extends": "^17.0.3", - "@commitlint/types": "^17.0.0", - "@types/node": ">=12", - "chalk": "^4.1.0", - "cosmiconfig": "^7.0.0", - "cosmiconfig-typescript-loader": "^2.0.0", - "lodash": "^4.17.19", - "resolve-from": "^5.0.0", - "typescript": "^4.6.4" + "@commitlint/config-validator": "^19.8.1", + "@commitlint/execute-rule": "^19.8.1", + "@commitlint/resolve-extends": "^19.8.1", + "@commitlint/types": "^19.8.1", + "chalk": "^5.3.0", + "cosmiconfig": "^9.0.0", + "cosmiconfig-typescript-loader": "^6.1.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "lodash.uniq": "^4.5.0" }, "engines": { - "node": ">=v14" + "node": ">=v18" } }, - "node_modules/@commitlint/load/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@commitlint/load/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", "dev": true, + "license": "MIT", "optional": true, - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@commitlint/load/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@commitlint/resolve-extends": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-19.8.1.tgz", + "integrity": "sha512-GM0mAhFk49I+T/5UCYns5ayGStkTt4XFFrjjf0L4S26xoMTSkdCf9ZRO8en1kuopC4isDFuEm7ZOm/WRVeElVg==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@commitlint/config-validator": "^19.8.1", + "@commitlint/types": "^19.8.1", + "global-directory": "^4.0.1", + "import-meta-resolve": "^4.0.0", + "lodash.mergewith": "^4.6.2", + "resolve-from": "^5.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=v18" } }, - "node_modules/@commitlint/load/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@commitlint/types": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-19.8.1.tgz", + "integrity": "sha512-/yCrWGCoA1SVKOks25EGadP9Pnj0oAIHGpl2wH2M2Y46dPM2ueb8wyCVOD7O3WCTkaJ0IkKvzhl1JY7+uCT2Dw==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { - "color-name": "~1.1.4" + "@types/conventional-commits-parser": "^5.0.0", + "chalk": "^5.3.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=v18" } }, - "node_modules/@commitlint/load/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "optional": true - }, - "node_modules/@commitlint/load/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/@commitlint/types/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", "dev": true, + "license": "MIT", "optional": true, "engines": { - "node": ">=8" + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@commitlint/load/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@eslint-community/eslint-utils": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", "dev": true, - "optional": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": ">=8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@commitlint/resolve-extends": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-17.0.3.tgz", - "integrity": "sha512-H/RFMvrcBeJCMdnVC4i8I94108UDccIHrTke2tyQEg9nXQnR5/Hd6MhyNWkREvcrxh9Y+33JLb+PiPiaBxCtBA==", + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "optional": true, - "dependencies": { - "@commitlint/config-validator": "^17.0.3", - "@commitlint/types": "^17.0.0", - "import-fresh": "^3.0.0", - "lodash": "^4.17.19", - "resolve-from": "^5.0.0", - "resolve-global": "^1.0.0" + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=v14" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@commitlint/types": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-17.0.0.tgz", - "integrity": "sha512-hBAw6U+SkAT5h47zDMeOu3HSiD0SODw4Aq7rRNh1ceUmL7GyLKYhPbUvlRWqZ65XjBLPHZhFyQlRaPNz8qvUyQ==", + "node_modules/@eslint/config-array": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", + "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", "dev": true, - "optional": true, + "license": "Apache-2.0", "dependencies": { - "chalk": "^4.1.0" + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" }, "engines": { - "node": ">=v14" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@commitlint/types/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@eslint/config-helpers": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.1.tgz", + "integrity": "sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==", "dev": true, - "optional": true, - "dependencies": { - "color-convert": "^2.0.1" - }, + "license": "Apache-2.0", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@commitlint/types/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@eslint/core": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.2.tgz", + "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==", "dev": true, - "optional": true, + "license": "Apache-2.0", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@types/json-schema": "^7.0.15" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@commitlint/types/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", "dev": true, - "optional": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.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": ">=7.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@commitlint/types/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, - "optional": true + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/@commitlint/types/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/@eslint/js": { + "version": "9.33.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.33.0.tgz", + "integrity": "sha512-5K1/mKhWaMfreBGJTwval43JJmkip0RmM+3+IuqupeSKNC/Th2Kc7ucaq5ovTSra/OOKB9c58CGSz3QMVbWt0A==", "dev": true, - "optional": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" } }, - "node_modules/@commitlint/types/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", "dev": true, - "optional": true, - "dependencies": { - "has-flag": "^4.0.0" - }, + "license": "Apache-2.0", "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "node_modules/@eslint/plugin-kit": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.5.tgz", + "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==", "dev": true, - "optional": true, + "license": "Apache-2.0", "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" + "@eslint/core": "^0.15.2", + "levn": "^0.4.1" }, "engines": { - "node": ">=12" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, + "node_modules/@fontsource-utils/scss": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@fontsource-utils/scss/-/scss-0.2.1.tgz", + "integrity": "sha512-jJFzuouHw5H5/Js6qd/39hhCzbDQZGjn89JIMaGEQsJ/j7xbeC//m6dOb3/yj8SYC2jxvQ5UyVK4TBkmcYlWfQ==", + "license": "MIT" + }, + "node_modules/@fontsource-variable/inter": { + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/@fontsource-variable/inter/-/inter-5.2.6.tgz", + "integrity": "sha512-jks/bficUPQ9nn7GvXvHtlQIPudW7Wx8CrlZoY8bhxgeobNxlQan8DclUJuYF2loYRrGpfrhCIZZspXYysiVGg==", + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } + }, + "node_modules/@fontsource-variable/rasa": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@fontsource-variable/rasa/-/rasa-5.2.7.tgz", + "integrity": "sha512-uArWGihIXxZlkyY+DlvjqapksQh6yQ+7bXQnZJuJcoGpHx5li/qHjNOQfTF0qLH9yJbOU3p8ZNb+TacniAYz2Q==", + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } + }, + "node_modules/@fortawesome/fontawesome-free": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.7.2.tgz", + "integrity": "sha512-JUOtgFW6k9u4Y+xeIaEiLr3+cjoUPiAuLXoyKOJSia6Duzb7pq+A76P9ZdPDoAoxHdHzq6gE9/jKBGXlZT8FbA==", + "devOptional": true, + "license": "(CC-BY-4.0 AND OFL-1.1 AND MIT)", + "engines": { + "node": ">=6" + } + }, + "node_modules/@gulpjs/messages": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@gulpjs/messages/-/messages-1.1.0.tgz", + "integrity": "sha512-Ys9sazDatyTgZVb4xPlDufLweJ/Os2uHWOv+Caxvy2O85JcnT4M3vc73bi8pdLWlv3fdWQz3pdI9tVwo8rQQSg==", + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@gulpjs/to-absolute-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@gulpjs/to-absolute-glob/-/to-absolute-glob-4.0.0.tgz", + "integrity": "sha512-kjotm7XJrJ6v+7knhPaRgaT6q8F8K2jiafwYdNHLzmV0uGLuZY43FK6smNSHUPrhq5kX2slCUy+RGG/xGqmIKA==", + "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^3.3.0" + "is-negated-glob": "^1.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + "node": ">=10.13.0" } }, - "node_modules/@eslint-community/regexpp": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz", - "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==", + "node_modules/@hotwired/turbo": { + "version": "8.0.13", + "resolved": "https://registry.npmjs.org/@hotwired/turbo/-/turbo-8.0.13.tgz", + "integrity": "sha512-M7qXUqcGab6G5PKOiwhgbByTtrPgKPFCTMNQ52QhzUEXEqmp0/ApEguUesh/FPiUjrmFec+3lq98KsWnYY2C7g==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", "dev": true, + "license": "Apache-2.0", "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=18.18.0" } }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", - "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=18.18.0" } }, - "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", "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" + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" }, "funding": { "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/@eslint/eslintrc/node_modules/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==", + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=8" + "node": ">=12.22" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@eslint/js": { - "version": "8.49.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.49.0.tgz", - "integrity": "sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==", + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", "dev": true, + "license": "Apache-2.0", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@fontsource/inter": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@fontsource/inter/-/inter-5.0.3.tgz", - "integrity": "sha512-JJvh5xht71F6e0E5r2+Ffu8g+CYAxMvnGJm9ZMg5IIjy8UwxLp+8C99TgPJupdEyBpEJv0wuMG2Rd183z/bV8g==" - }, - "node_modules/@fontsource/rasa": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@fontsource/rasa/-/rasa-5.0.3.tgz", - "integrity": "sha512-7QYG8778nIeaJZfzSJzggntMy44ZpzpEsyR0t+Jlqo6hqpzFeVilg2ZK6M6f1IM9DBNLZormJPX38P8BCUM9ww==" - }, - "node_modules/@fortawesome/fontawesome-free": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.4.0.tgz", - "integrity": "sha512-0NyytTlPJwB/BF5LtRV8rrABDbe3TdTXqNB3PdZ+UUUZAEIrdOJdmABqKjt4AXwIoJNaRVVZEXxpNrqvE1GAYQ==", - "devOptional": true, - "hasInstallScript": true, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/@hotwired/turbo": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@hotwired/turbo/-/turbo-7.3.0.tgz", - "integrity": "sha512-Dcu+NaSvHLT7EjrDrkEmH4qET2ZJZ5IcCWmNXxNQTBwlnE5tBZfN6WxZ842n5cHV52DH/AKNirbPBtcEXDLW4g==", + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", "engines": { - "node": ">= 14" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", - "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, + "license": "MIT", "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=10.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, "engines": { - "node": ">=12.22" + "node": ">=12" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "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/@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==", - "peer": true, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=6.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "engines": { - "node": ">=6.0.0" + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", + "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "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==", - "peer": true, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "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==" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "version": "0.3.29", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", + "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@lezer/common": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.3.tgz", + "integrity": "sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==", + "license": "MIT" + }, + "node_modules/@lezer/highlight": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.1.tgz", + "integrity": "sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@lezer/lr": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.2.tgz", + "integrity": "sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==", + "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@lezer/common": "^1.0.0" } }, + "node_modules/@marijn/find-cluster-break": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz", + "integrity": "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==", + "license": "MIT" + }, "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==", + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -2158,6 +2185,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", "engines": { "node": ">= 8" } @@ -2166,6 +2194,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -2175,151 +2204,465 @@ } }, "node_modules/@octokit/auth-token": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", - "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-6.0.0.tgz", + "integrity": "sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/@octokit/core": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.0.0.tgz", - "integrity": "sha512-YbAtMWIrbZ9FCXbLwT9wWB8TyLjq9mxpKdgB3dUNxQcIVTf9hJ70gRPwAcqGZdY6WdJPZ0I7jLaaNDCiloGN2A==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-7.0.2.tgz", + "integrity": "sha512-ODsoD39Lq6vR6aBgvjTnA3nZGliknKboc9Gtxr7E4WDNqY24MxANKcuDQSF0jzapvGb3KWOEDrKfve4HoWGK+g==", "dev": true, + "license": "MIT", "dependencies": { - "@octokit/auth-token": "^4.0.0", - "@octokit/graphql": "^7.0.0", - "@octokit/request": "^8.0.2", - "@octokit/request-error": "^5.0.0", - "@octokit/types": "^11.0.0", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" + "@octokit/auth-token": "^6.0.0", + "@octokit/graphql": "^9.0.1", + "@octokit/request": "^10.0.2", + "@octokit/request-error": "^7.0.0", + "@octokit/types": "^14.0.0", + "before-after-hook": "^4.0.0", + "universal-user-agent": "^7.0.0" }, "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/@octokit/endpoint": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.0.tgz", - "integrity": "sha512-szrQhiqJ88gghWY2Htt8MqUDO6++E/EIXqJ2ZEp5ma3uGS46o7LZAzSLt49myB7rT+Hfw5Y6gO3LmOxGzHijAQ==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.0.tgz", + "integrity": "sha512-hoYicJZaqISMAI3JfaDr1qMNi48OctWuOih1m80bkYow/ayPw6Jj52tqWJ6GEoFTk1gBqfanSoI1iY99Z5+ekQ==", "dev": true, + "license": "MIT", "dependencies": { - "@octokit/types": "^11.0.0", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" + "@octokit/types": "^14.0.0", + "universal-user-agent": "^7.0.2" }, "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/@octokit/graphql": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.0.1.tgz", - "integrity": "sha512-T5S3oZ1JOE58gom6MIcrgwZXzTaxRnxBso58xhozxHpOqSTgDS6YNeEUvZ/kRvXgPrRz/KHnZhtb7jUMRi9E6w==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-9.0.1.tgz", + "integrity": "sha512-j1nQNU1ZxNFx2ZtKmL4sMrs4egy5h65OMDmSbVyuCzjOcwsHq6EaYjOTGXPQxgfiN8dJ4CriYHk6zF050WEULg==", "dev": true, + "license": "MIT", "dependencies": { - "@octokit/request": "^8.0.1", - "@octokit/types": "^11.0.0", - "universal-user-agent": "^6.0.0" + "@octokit/request": "^10.0.2", + "@octokit/types": "^14.0.0", + "universal-user-agent": "^7.0.0" }, "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/@octokit/openapi-types": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", - "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==", - "dev": true + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-25.1.0.tgz", + "integrity": "sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA==", + "dev": true, + "license": "MIT" }, "node_modules/@octokit/plugin-paginate-rest": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-8.0.0.tgz", - "integrity": "sha512-2xZ+baZWUg+qudVXnnvXz7qfrTmDeYPCzangBVq/1gXxii/OiS//4shJp9dnCCvj1x+JAm9ji1Egwm1BA47lPQ==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-13.0.1.tgz", + "integrity": "sha512-m1KvHlueScy4mQJWvFDCxFBTIdXS0K1SgFGLmqHyX90mZdCIv6gWBbKRhatxRjhGlONuTK/hztYdaqrTXcFZdQ==", "dev": true, + "license": "MIT", "dependencies": { - "@octokit/types": "^11.0.0" + "@octokit/types": "^14.1.0" }, "engines": { - "node": ">= 18" + "node": ">= 20" }, "peerDependencies": { - "@octokit/core": ">=5" + "@octokit/core": ">=6" } }, "node_modules/@octokit/plugin-retry": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-6.0.0.tgz", - "integrity": "sha512-a1/A4A+PB1QoAHQfLJxGHhLfSAT03bR1jJz3GgQJZvty2ozawFWs93MiBQXO7SL2YbO7CIq0Goj4qLOBj8JeMQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-8.0.1.tgz", + "integrity": "sha512-KUoYR77BjF5O3zcwDQHRRZsUvJwepobeqiSSdCJ8lWt27FZExzb0GgVxrhhfuyF6z2B2zpO0hN5pteni1sqWiw==", "dev": true, + "license": "MIT", "dependencies": { - "@octokit/request-error": "^5.0.0", - "@octokit/types": "^11.0.0", + "@octokit/request-error": "^7.0.0", + "@octokit/types": "^14.0.0", "bottleneck": "^2.15.3" }, "engines": { - "node": ">= 18" + "node": ">= 20" }, "peerDependencies": { - "@octokit/core": ">=5" + "@octokit/core": ">=7" } }, "node_modules/@octokit/plugin-throttling": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-7.0.0.tgz", - "integrity": "sha512-KL2k/d0uANc8XqP5S64YcNFCudR3F5AaKO39XWdUtlJIjT9Ni79ekWJ6Kj5xvAw87udkOMEPcVf9xEge2+ahew==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-11.0.1.tgz", + "integrity": "sha512-S+EVhy52D/272L7up58dr3FNSMXWuNZolkL4zMJBNIfIxyZuUcczsQAU4b5w6dewJXnKYVgSHSV5wxitMSW1kw==", "dev": true, + "license": "MIT", "dependencies": { - "@octokit/types": "^11.0.0", + "@octokit/types": "^14.0.0", "bottleneck": "^2.15.3" }, "engines": { - "node": ">= 18" + "node": ">= 20" }, "peerDependencies": { - "@octokit/core": "^5.0.0" + "@octokit/core": "^7.0.0" } }, "node_modules/@octokit/request": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.1.1.tgz", - "integrity": "sha512-8N+tdUz4aCqQmXl8FpHYfKG9GelDFd7XGVzyN8rc6WxVlYcfpHECnuRkgquzz+WzvHTK62co5di8gSXnzASZPQ==", + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-10.0.2.tgz", + "integrity": "sha512-iYj4SJG/2bbhh+iIpFmG5u49DtJ4lipQ+aPakjL9OKpsGY93wM8w06gvFbEQxcMsZcCvk5th5KkIm2m8o14aWA==", "dev": true, + "license": "MIT", "dependencies": { - "@octokit/endpoint": "^9.0.0", - "@octokit/request-error": "^5.0.0", - "@octokit/types": "^11.1.0", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" + "@octokit/endpoint": "^11.0.0", + "@octokit/request-error": "^7.0.0", + "@octokit/types": "^14.0.0", + "fast-content-type-parse": "^3.0.0", + "universal-user-agent": "^7.0.2" }, "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/@octokit/request-error": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.0.0.tgz", - "integrity": "sha512-1ue0DH0Lif5iEqT52+Rf/hf0RmGO9NWFjrzmrkArpG9trFfDM/efx00BJHdLGuro4BR/gECxCU2Twf5OKrRFsQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.0.0.tgz", + "integrity": "sha512-KRA7VTGdVyJlh0cP5Tf94hTiYVVqmt2f3I6mnimmaVz4UG3gQV/k4mDJlJv3X67iX6rmN7gSHCF8ssqeMnmhZg==", "dev": true, + "license": "MIT", "dependencies": { - "@octokit/types": "^11.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" + "@octokit/types": "^14.0.0" }, "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/@octokit/types": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-11.1.0.tgz", - "integrity": "sha512-Fz0+7GyLm/bHt8fwEqgvRBWwIV1S6wRRyq+V6exRKLVWaKGsuy6H9QFYeBVDV7rK6fO3XwHgQOPxv+cLj2zpXQ==", + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", + "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^25.1.0" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", + "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, "dependencies": { - "@octokit/openapi-types": "^18.0.0" + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.1", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-darwin-x64": "2.5.1", + "@parcel/watcher-freebsd-x64": "2.5.1", + "@parcel/watcher-linux-arm-glibc": "2.5.1", + "@parcel/watcher-linux-arm-musl": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-arm64-musl": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-musl": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-ia32": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", + "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", + "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", + "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", + "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", + "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", + "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", + "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", + "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", + "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", + "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", + "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", + "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", + "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@pnpm/config.env-replace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", + "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.22.0" } }, "node_modules/@pnpm/network.ca-file": { @@ -2327,6 +2670,7 @@ "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "4.2.10" }, @@ -2334,12 +2678,21 @@ "node": ">=12.22.0" } }, + "node_modules/@pnpm/network.ca-file/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, + "license": "ISC" + }, "node_modules/@pnpm/npm-conf": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-1.0.5.tgz", - "integrity": "sha512-hD8ml183638O3R6/Txrh0L8VzGOrFXgRtRDG4qQC4tONdZ5Z1M+tlUUDUvrjYdmK6G+JTBTeaCLMna11cXzi8A==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz", + "integrity": "sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==", "dev": true, + "license": "MIT", "dependencies": { + "@pnpm/config.env-replace": "^1.1.0", "@pnpm/network.ca-file": "^1.0.1", "config-chain": "^1.1.11" }, @@ -2348,9 +2701,10 @@ } }, "node_modules/@rollup/plugin-babel": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-6.0.3.tgz", - "integrity": "sha512-fKImZKppa1A/gX73eg4JGo+8kQr/q1HBQaCGKECZ0v4YBBv3lFqi14+7xyApECzvkLTHCifx+7ntcrvtBIRcpg==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-6.0.4.tgz", + "integrity": "sha512-YF7Y52kFdFT/xVSuVdjkV5ZdX/3YtmX0QulG+x0taQOtJdHYzVU61aSSkAgVJ7NOv6qPkIYiJSgSWWN/DM5sGw==", + "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.18.6", "@rollup/pluginutils": "^5.0.1" @@ -2361,7 +2715,7 @@ "peerDependencies": { "@babel/core": "^7.0.0", "@types/babel__core": "^7.1.9", - "rollup": "^1.20.0||^2.0.0||^3.0.0" + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "peerDependenciesMeta": { "@types/babel__core": { @@ -2373,22 +2727,24 @@ } }, "node_modules/@rollup/plugin-commonjs": { - "version": "25.0.4", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.4.tgz", - "integrity": "sha512-L92Vz9WUZXDnlQQl3EwbypJR4+DM2EbsO+/KOcEkP4Mc6Ct453EeDB2uH9lgRwj4w5yflgNpq9pHOiY8aoUXBQ==", + "version": "28.0.6", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-28.0.6.tgz", + "integrity": "sha512-XSQB1K7FUU5QP+3lOQmVCE3I0FcbbNvmNT4VJSj93iUjayaARrTQeoRdiYQoftAJBLrR9t2agwAd3ekaTgHNlw==", + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^5.0.1", "commondir": "^1.0.1", "estree-walker": "^2.0.2", - "glob": "^8.0.3", + "fdir": "^6.2.0", "is-reference": "1.2.1", - "magic-string": "^0.27.0" + "magic-string": "^0.30.3", + "picomatch": "^4.0.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0 || 14 >= 14.17" }, "peerDependencies": { - "rollup": "^2.68.0||^3.0.0" + "rollup": "^2.68.0||^3.0.0||^4.0.0" }, "peerDependenciesMeta": { "rollup": { @@ -2396,55 +2752,19 @@ } } }, - "node_modules/@rollup/plugin-commonjs/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@rollup/plugin-commonjs/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@rollup/plugin-commonjs/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@rollup/plugin-json": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.0.0.tgz", - "integrity": "sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.1.0.tgz", + "integrity": "sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==", + "license": "MIT", "dependencies": { - "@rollup/pluginutils": "^5.0.1" + "@rollup/pluginutils": "^5.1.0" }, "engines": { "node": ">=14.0.0" }, "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0" + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "peerDependenciesMeta": { "rollup": { @@ -2453,14 +2773,14 @@ } }, "node_modules/@rollup/plugin-node-resolve": { - "version": "15.2.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.1.tgz", - "integrity": "sha512-nsbUg588+GDSu8/NS8T4UAshO6xeaOfINNuXeVHcKV02LJtoRaM1SiOacClw4kws1SFiNhdLGxlbMY9ga/zs/w==", + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-16.0.1.tgz", + "integrity": "sha512-tk5YCxJWIG81umIvNkSod2qK5KyQW19qcBF/B78n1bjtOON6gzKoVeSzAE8yHCZEDmqkHKkxplExA8KzdJLJpA==", + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^5.0.1", "@types/resolve": "1.20.2", "deepmerge": "^4.2.2", - "is-builtin-module": "^3.2.1", "is-module": "^1.0.0", "resolve": "^1.22.1" }, @@ -2468,7 +2788,7 @@ "node": ">=14.0.0" }, "peerDependencies": { - "rollup": "^2.78.0||^3.0.0" + "rollup": "^2.78.0||^3.0.0||^4.0.0" }, "peerDependenciesMeta": { "rollup": { @@ -2477,19 +2797,20 @@ } }, "node_modules/@rollup/pluginutils": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", - "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz", + "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" + "picomatch": "^4.0.2" }, "engines": { "node": ">=14.0.0" }, "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0" + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "peerDependenciesMeta": { "rollup": { @@ -2497,40 +2818,310 @@ } } }, - "node_modules/@semantic-release/changelog": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.3.tgz", - "integrity": "sha512-dZuR5qByyfe3Y03TpmCvAxCyTnp7r5XwtHRf/8vD9EAn4ZWbavUX8adMtXYzE86EVh0gyLA7lm5yW4IV30XUag==", - "dev": true, - "dependencies": { - "@semantic-release/error": "^3.0.0", - "aggregate-error": "^3.0.0", - "fs-extra": "^11.0.0", - "lodash": "^4.17.4" - }, - "engines": { - "node": ">=14.17" - }, - "peerDependencies": { - "semantic-release": ">=18.0.0" + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.46.2.tgz", + "integrity": "sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.46.2.tgz", + "integrity": "sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.46.2.tgz", + "integrity": "sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.46.2.tgz", + "integrity": "sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.46.2.tgz", + "integrity": "sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.46.2.tgz", + "integrity": "sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.46.2.tgz", + "integrity": "sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.46.2.tgz", + "integrity": "sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.46.2.tgz", + "integrity": "sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.46.2.tgz", + "integrity": "sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.46.2.tgz", + "integrity": "sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.46.2.tgz", + "integrity": "sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.46.2.tgz", + "integrity": "sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.46.2.tgz", + "integrity": "sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.46.2.tgz", + "integrity": "sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.46.2.tgz", + "integrity": "sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.46.2.tgz", + "integrity": "sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.46.2.tgz", + "integrity": "sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.46.2.tgz", + "integrity": "sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.46.2.tgz", + "integrity": "sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@semantic-release/changelog": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.3.tgz", + "integrity": "sha512-dZuR5qByyfe3Y03TpmCvAxCyTnp7r5XwtHRf/8vD9EAn4ZWbavUX8adMtXYzE86EVh0gyLA7lm5yW4IV30XUag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@semantic-release/error": "^3.0.0", + "aggregate-error": "^3.0.0", + "fs-extra": "^11.0.0", + "lodash": "^4.17.4" + }, + "engines": { + "node": ">=14.17" + }, + "peerDependencies": { + "semantic-release": ">=18.0.0" } }, "node_modules/@semantic-release/commit-analyzer": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-11.0.0.tgz", - "integrity": "sha512-uEXyf4Z0AWJuxI9TbSQP5kkIYqus1/E1NcmE7pIv6d6/m/5EJcNWAGR4FOo34vrV26FhEaRVkxFfYzp/M7BKIg==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-13.0.1.tgz", + "integrity": "sha512-wdnBPHKkr9HhNhXOhZD5a2LNl91+hs8CC2vsAVYxtZH3y0dV3wKn+uZSN61rdJQZ8EGxzWB3inWocBHV9+u/CQ==", "dev": true, + "license": "MIT", "dependencies": { - "conventional-changelog-angular": "^7.0.0", - "conventional-commits-filter": "^4.0.0", - "conventional-commits-parser": "^5.0.0", + "conventional-changelog-angular": "^8.0.0", + "conventional-changelog-writer": "^8.0.0", + "conventional-commits-filter": "^5.0.0", + "conventional-commits-parser": "^6.0.0", "debug": "^4.0.0", - "import-from": "^4.0.0", + "import-from-esm": "^2.0.0", "lodash-es": "^4.17.21", "micromatch": "^4.0.2" }, "engines": { - "node": "^18.17 || >=20.6.1" + "node": ">=20.8.1" }, "peerDependencies": { "semantic-release": ">=20.1.0" @@ -2541,28 +3132,40 @@ "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-3.0.0.tgz", "integrity": "sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.17" } }, "node_modules/@semantic-release/exec": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@semantic-release/exec/-/exec-6.0.3.tgz", - "integrity": "sha512-bxAq8vLOw76aV89vxxICecEa8jfaWwYITw6X74zzlO0mc/Bgieqx9kBRz9z96pHectiTAtsCwsQcUyLYWnp3VQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@semantic-release/exec/-/exec-7.1.0.tgz", + "integrity": "sha512-4ycZ2atgEUutspPZ2hxO6z8JoQt4+y/kkHvfZ1cZxgl9WKJId1xPj+UadwInj+gMn2Gsv+fLnbrZ4s+6tK2TFQ==", "dev": true, + "license": "MIT", "dependencies": { - "@semantic-release/error": "^3.0.0", + "@semantic-release/error": "^4.0.0", "aggregate-error": "^3.0.0", "debug": "^4.0.0", - "execa": "^5.0.0", - "lodash": "^4.17.4", - "parse-json": "^5.0.0" + "execa": "^9.0.0", + "lodash-es": "^4.17.21", + "parse-json": "^8.0.0" }, "engines": { - "node": ">=14.17" + "node": ">=20.8.1" }, "peerDependencies": { - "semantic-release": ">=18.0.0" + "semantic-release": ">=24.1.0" + } + }, + "node_modules/@semantic-release/exec/node_modules/@semantic-release/error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", + "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" } }, "node_modules/@semantic-release/git": { @@ -2570,6 +3173,7 @@ "resolved": "https://registry.npmjs.org/@semantic-release/git/-/git-10.0.1.tgz", "integrity": "sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==", "dev": true, + "license": "MIT", "dependencies": { "@semantic-release/error": "^3.0.0", "aggregate-error": "^3.0.0", @@ -2587,34 +3191,125 @@ "semantic-release": ">=18.0.0" } }, + "node_modules/@semantic-release/git/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@semantic-release/git/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/git/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/@semantic-release/git/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/git/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@semantic-release/git/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@semantic-release/git/node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/@semantic-release/github": { - "version": "9.0.6", - "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-9.0.6.tgz", - "integrity": "sha512-GBGt9c3c2UdSvso4jcyQQSUpZA9hbfHqGQerZKN9WvVzCIkaBy8xkhOyiFVX08LjRHHT/H221SJNBLtuihX5iw==", + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-11.0.4.tgz", + "integrity": "sha512-fU/nLSjkp9DmB0h7FVO5imhhWJMvq2LjD4+3lz3ZAzpDLY9+KYwC+trJ+g7LbZeJv9y3L9fSFSg2DduUpiT6bw==", "dev": true, + "license": "MIT", "dependencies": { - "@octokit/core": "^5.0.0", - "@octokit/plugin-paginate-rest": "^8.0.0", - "@octokit/plugin-retry": "^6.0.0", - "@octokit/plugin-throttling": "^7.0.0", + "@octokit/core": "^7.0.0", + "@octokit/plugin-paginate-rest": "^13.0.0", + "@octokit/plugin-retry": "^8.0.0", + "@octokit/plugin-throttling": "^11.0.0", "@semantic-release/error": "^4.0.0", "aggregate-error": "^5.0.0", "debug": "^4.3.4", "dir-glob": "^3.0.1", - "globby": "^13.1.4", + "globby": "^14.0.0", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.0", - "issue-parser": "^6.0.0", + "issue-parser": "^7.0.0", "lodash-es": "^4.17.21", - "mime": "^3.0.0", - "p-filter": "^3.0.0", + "mime": "^4.0.0", + "p-filter": "^4.0.0", "url-join": "^5.0.0" }, "engines": { - "node": ">=18" + "node": ">=20.8.1" }, "peerDependencies": { - "semantic-release": ">=20.1.0" + "semantic-release": ">=24.1.0" } }, "node_modules/@semantic-release/github/node_modules/@semantic-release/error": { @@ -2622,6 +3317,7 @@ "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" } @@ -2631,6 +3327,7 @@ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", "dev": true, + "license": "MIT", "dependencies": { "clean-stack": "^5.2.0", "indent-string": "^5.0.0" @@ -2647,6 +3344,7 @@ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "5.0.0" }, @@ -2662,6 +3360,7 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -2674,6 +3373,7 @@ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -2682,27 +3382,28 @@ } }, "node_modules/@semantic-release/npm": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-11.0.0.tgz", - "integrity": "sha512-ozNCiPUp14Xp2rgeY7j96yFTEhDncLSWOJr0IAUr888+ax6fH5xgYkNVv08vpkV8C5GIXBgnGd9coRiOCD6oqQ==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-12.0.2.tgz", + "integrity": "sha512-+M9/Lb35IgnlUO6OSJ40Ie+hUsZLuph2fqXC/qrKn0fMvUU/jiCjpoL6zEm69vzcmaZJ8yNKtMBEKHWN49WBbQ==", "dev": true, + "license": "MIT", "dependencies": { "@semantic-release/error": "^4.0.0", "aggregate-error": "^5.0.0", - "execa": "^8.0.0", + "execa": "^9.0.0", "fs-extra": "^11.0.0", "lodash-es": "^4.17.21", "nerf-dart": "^1.0.0", "normalize-url": "^8.0.0", - "npm": "^10.0.0", + "npm": "^10.9.3", "rc": "^1.2.8", - "read-pkg": "^8.0.0", + "read-pkg": "^9.0.0", "registry-auth-token": "^5.0.0", "semver": "^7.1.2", "tempy": "^3.0.0" }, "engines": { - "node": "^18.17 || >=20" + "node": ">=20.8.1" }, "peerDependencies": { "semantic-release": ">=20.1.0" @@ -2713,6 +3414,7 @@ "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" } @@ -2722,6 +3424,7 @@ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", "dev": true, + "license": "MIT", "dependencies": { "clean-stack": "^5.2.0", "indent-string": "^5.0.0" @@ -2738,6 +3441,7 @@ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "5.0.0" }, @@ -2753,6 +3457,7 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -2760,55 +3465,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@semantic-release/npm/node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/@semantic-release/npm/node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", - "dev": true, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/npm/node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "dev": true, - "engines": { - "node": ">=16.17.0" - } - }, "node_modules/@semantic-release/npm/node_modules/indent-string": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -2816,218 +3478,144 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@semantic-release/npm/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "node_modules/@semantic-release/npm/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/npm/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10" } }, - "node_modules/@semantic-release/npm/node_modules/npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "node_modules/@semantic-release/release-notes-generator": { + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-14.0.3.tgz", + "integrity": "sha512-XxAZRPWGwO5JwJtS83bRdoIhCiYIx8Vhr+u231pQAsdFIAbm19rSVJLdnBN+Avvk7CKvNQE/nJ4y7uqKH6WTiw==", "dev": true, + "license": "MIT", "dependencies": { - "path-key": "^4.0.0" + "conventional-changelog-angular": "^8.0.0", + "conventional-changelog-writer": "^8.0.0", + "conventional-commits-filter": "^5.0.0", + "conventional-commits-parser": "^6.0.0", + "debug": "^4.0.0", + "get-stream": "^7.0.0", + "import-from-esm": "^2.0.0", + "into-stream": "^7.0.0", + "lodash-es": "^4.17.21", + "read-package-up": "^11.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=20.8.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "semantic-release": ">=20.1.0" } }, - "node_modules/@semantic-release/npm/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", "dev": true, - "dependencies": { - "mimic-fn": "^4.0.0" - }, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sindresorhus/is?sponsor=1" } }, - "node_modules/@semantic-release/npm/node_modules/path-key": { + "node_modules/@sindresorhus/merge-streams": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@semantic-release/npm/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@semantic-release/npm/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "node_modules/@socket.io/component-emitter": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "license": "MIT" }, - "node_modules/@semantic-release/release-notes-generator": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-12.0.0.tgz", - "integrity": "sha512-m7Ds8ComP1KJgA2Lke2xMwE1TOOU40U7AzP4lT8hJ2tUAeicziPz/1GeDFmRkTOkMFlfHvE6kuvMkvU+mIzIDQ==", + "node_modules/@types/conventional-commits-parser": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.1.tgz", + "integrity": "sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==", "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "conventional-changelog-angular": "^7.0.0", - "conventional-changelog-writer": "^7.0.0", - "conventional-commits-filter": "^4.0.0", - "conventional-commits-parser": "^5.0.0", - "debug": "^4.0.0", - "get-stream": "^7.0.0", - "import-from": "^4.0.0", - "into-stream": "^7.0.0", - "lodash-es": "^4.17.21", - "read-pkg-up": "^10.0.0" - }, - "engines": { - "node": "^18.17 || >=20.6.1" - }, - "peerDependencies": { - "semantic-release": ">=20.1.0" - } - }, - "node_modules/@semantic-release/release-notes-generator/node_modules/get-stream": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-7.0.0.tgz", - "integrity": "sha512-ql6FW5b8tgMYvI4UaoxG3EQN3VyZ6VeQpxNBGg5BZ4xD4u+HJeprzhMMA4OCBEGQgSR+m87pstWMpiVW64W8Fw==", - "dev": true, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@types/node": "*" } }, - "node_modules/@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", - "dev": true - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true, - "optional": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true, - "optional": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true, - "optional": true - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true, - "optional": true - }, - "node_modules/@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true - }, "node_modules/@types/cors": { - "version": "2.8.13", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", - "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", + "version": "2.8.19", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz", + "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/estree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" }, "node_modules/@types/expect": { "version": "1.20.4", "resolved": "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz", - "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==" + "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==", + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { - "version": "18.0.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.1.tgz", - "integrity": "sha512-CmR8+Tsy95hhwtZBKJBs0/FFq4XX7sDZHlGGf+0q+BRZfMbOTkzkj0AFAuTyXbObDIoanaBBW0+KEW+m3N16Wg==" + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } }, "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", "dev": true, - "optional": true + "license": "MIT" }, "node_modules/@types/resolve": { "version": "1.20.2", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", - "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==" + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "license": "MIT" }, "node_modules/@types/vinyl": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.6.tgz", - "integrity": "sha512-ayJ0iOCDNHnKpKTgBG6Q6JOnHTj9zFta+3j2b8Ejza0e4cvRyMn0ZoLEmbPrTHe5YYRlDYPvPWVdV4cTaRyH7g==", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.12.tgz", + "integrity": "sha512-Sr2fYMBUVGYq8kj3UthXFAu5UN6ZW+rYr4NACjZQJvHvj+c8lYv0CahmZ2P/r7iUkN44gGUBwqxZkrKXYPb7cw==", + "license": "MIT", "dependencies": { "@types/expect": "^1.20.4", "@types/node": "*" @@ -3038,6 +3626,7 @@ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, + "license": "MIT", "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -3047,10 +3636,11 @@ } }, "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -3063,28 +3653,17 @@ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", "dev": true, - "dependencies": { - "debug": "^4.3.4" - }, + "license": "MIT", "engines": { "node": ">= 14" } @@ -3094,6 +3673,7 @@ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, + "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -3103,15 +3683,15 @@ } }, "node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "optional": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" }, "funding": { @@ -3119,16 +3699,11 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==", - "dev": true - }, "node_modules/ansi-colors": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "license": "MIT", "dependencies": { "ansi-wrap": "^0.1.0" }, @@ -3137,258 +3712,108 @@ } }, "node_modules/ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==", + "license": "MIT", "dependencies": { - "ansi-wrap": "0.1.0" + "type-fest": "^0.21.3" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "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==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, "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==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" - } - }, - "node_modules/ansi-wrap": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ansi-wrap": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/ansicolors": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", - "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==", - "dev": true + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true, + "license": "MIT" }, "node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/anymatch/node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/append-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", - "integrity": "sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==", - "dependencies": { - "buffer-equal": "^1.0.0" + "node": ">=8.6" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==" - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, - "optional": true - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" }, "node_modules/argv-formatter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz", "integrity": "sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-filter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", - "integrity": "sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA==", - "dependencies": { - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", - "integrity": "sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw==", - "dependencies": { - "make-iterator": "^1.0.0" - }, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -3397,17 +3822,22 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3417,6 +3847,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -3425,80 +3856,44 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", - "dev": true - }, - "node_modules/array-initial": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", - "integrity": "sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw==", - "dependencies": { - "array-slice": "^1.0.0", - "is-number": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-initial/node_modules/is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-last": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", - "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", - "dependencies": { - "is-number": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-last/node_modules/is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "engines": { - "node": ">=0.10.0" - } + "dev": true, + "license": "MIT" }, "node_modules/array-slice": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/array-sort": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", - "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "license": "MIT", "dependencies": { - "default-compare": "^1.0.0", - "get-value": "^2.0.6", - "kind-of": "^5.0.2" + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", - "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -3508,64 +3903,70 @@ "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, + "license": "MIT", "dependencies": { "lodash": "^4.17.14" } }, "node_modules/async-done": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", - "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-2.0.0.tgz", + "integrity": "sha512-j0s3bzYq9yKIVLKGE/tWlCpa3PfFLcrDZLTSVdnnCTGagXuXBJO4SsY9Xdk/fQBirCkH4evW5xOeJXqlAQFdsw==", + "license": "MIT", "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.2", - "process-nextick-args": "^2.0.0", - "stream-exhaust": "^1.0.1" + "end-of-stream": "^1.4.4", + "once": "^1.4.0", + "stream-exhaust": "^1.0.2" }, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, - "node_modules/async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" - }, "node_modules/async-each-series": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", "integrity": "sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } }, - "node_modules/async-settle": { + "node_modules/async-function": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", - "integrity": "sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/async-settle": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-2.0.0.tgz", + "integrity": "sha512-Obu/KE8FurfQRN6ODdHN9LuXqwC+JFIM9NRyZqJJ4ZfLJmIYN9Rg0/kb+wF70VV5+fJusTMQlJ1t5rF7J/ETdg==", + "license": "MIT", "dependencies": { - "async-done": "^1.2.2" + "async-done": "^2.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "bin": { - "atob": "bin/atob.js" - }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "license": "ISC", "engines": { - "node": ">= 4.5.0" + "node": ">= 4.0.0" } }, "node_modules/autoprefixer": { - "version": "10.4.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz", - "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==", + "version": "10.4.21", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", + "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", "funding": [ { "type": "opencollective", @@ -3574,14 +3975,19 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "browserslist": "^4.20.3", - "caniuse-lite": "^1.0.30001335", - "fraction.js": "^4.2.0", + "browserslist": "^4.24.4", + "caniuse-lite": "^1.0.30001702", + "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", + "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "bin": { @@ -3595,9 +4001,13 @@ } }, "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -3605,159 +4015,104 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dev": true, - "dependencies": { - "follow-redirects": "^1.14.0" - } + "node_modules/b4a": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", + "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", + "license": "Apache-2.0" }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", - "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", + "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.2", + "@babel/compat-data": "^7.27.7", + "@babel/helper-define-polyfill-provider": "^0.6.5", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz", - "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", + "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.2", - "core-js-compat": "^3.31.0" + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", - "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz", + "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==", + "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.2" + "@babel/helper-define-polyfill-provider": "^0.6.5" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/bach": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", - "integrity": "sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bach/-/bach-2.0.1.tgz", + "integrity": "sha512-A7bvGMGiTOxGMpNupYl9HQTf0FFDNF4VCmks4PJpFyN1AX2pdKuxuwdvUz2Hu388wcgp+OvGFNsumBfFNkR7eg==", + "license": "MIT", "dependencies": { - "arr-filter": "^1.1.1", - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "array-each": "^1.0.0", - "array-initial": "^1.0.0", - "array-last": "^1.1.1", - "async-done": "^1.2.2", - "async-settle": "^1.0.0", - "now-and-later": "^2.0.0" + "async-done": "^2.0.0", + "async-settle": "^2.0.0", + "now-and-later": "^3.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">=10.13.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==" + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } + "node_modules/bare-events": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz", + "integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==", + "license": "Apache-2.0", + "optional": true }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" }, "node_modules/base64id": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", "dev": true, + "license": "MIT", "engines": { "node": "^4.5.0 || >= 5.9" } @@ -3766,26 +4121,33 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/before-after-hook": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", - "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-4.0.0.tgz", + "integrity": "sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/binaryextensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.3.0.tgz", "integrity": "sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg==", + "license": "MIT", "engines": { "node": ">=0.8" }, @@ -3793,58 +4155,78 @@ "url": "https://bevry.me/fund" } }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "optional": true, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", "dependencies": { - "file-uri-to-path": "1.0.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, + "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, + "license": "ISC" + }, "node_modules/bottleneck": { "version": "2.19.5", "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", - "dev": true + "dev": true, + "license": "MIT" }, "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==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/browser-sync": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.29.3.tgz", - "integrity": "sha512-NiM38O6XU84+MN+gzspVmXV2fTOoe+jBqIBx3IBdhZrdeURr6ZgznJr/p+hQ+KzkKEiGH/GcC4SQFSL0jV49bg==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-3.0.4.tgz", + "integrity": "sha512-mcYOIy4BW6sWSEnTSBjQwWsnbx2btZX78ajTTjdNfyC/EqQVcIe0nQR6894RNAMtvlfAnLaH9L2ka97zpvgenA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "browser-sync-client": "^2.29.3", - "browser-sync-ui": "^2.29.3", + "browser-sync-client": "^3.0.4", + "browser-sync-ui": "^3.0.4", "bs-recipes": "1.3.4", "chalk": "4.1.2", "chokidar": "^3.5.1", @@ -3852,22 +4234,21 @@ "connect-history-api-fallback": "^1", "dev-ip": "^1.0.1", "easy-extender": "^2.3.4", - "eazy-logger": "^4.0.1", + "eazy-logger": "^4.1.0", "etag": "^1.8.1", "fresh": "^0.5.2", "fs-extra": "3.0.1", "http-proxy": "^1.18.1", "immutable": "^3", - "localtunnel": "^2.0.1", - "micromatch": "^4.0.2", + "micromatch": "^4.0.8", "opn": "5.3.0", "portscanner": "2.2.0", "raw-body": "^2.3.2", "resp-modifier": "6.0.2", "rx": "4.1.0", - "send": "0.16.2", - "serve-index": "1.9.1", - "serve-static": "1.13.2", + "send": "^0.19.0", + "serve-index": "^1.9.1", + "serve-static": "^1.16.2", "server-destroy": "1.0.1", "socket.io": "^4.4.1", "ua-parser-js": "^1.0.33", @@ -3881,10 +4262,11 @@ } }, "node_modules/browser-sync-client": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.29.3.tgz", - "integrity": "sha512-4tK5JKCl7v/3aLbmCBMzpufiYLsB1+UI+7tUXCCp5qF0AllHy/jAqYu6k7hUF3hYtlClKpxExWaR+rH+ny07wQ==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-3.0.4.tgz", + "integrity": "sha512-+ew5ubXzGRKVjquBL3u6najS40TG7GxCdyBll0qSRc/n+JRV9gb/yDdRL1IAgRHqjnJTdqeBKKIQabjvjRSYRQ==", "dev": true, + "license": "ISC", "dependencies": { "etag": "1.8.1", "fresh": "0.5.2", @@ -3895,10 +4277,11 @@ } }, "node_modules/browser-sync-ui": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.29.3.tgz", - "integrity": "sha512-kBYOIQjU/D/3kYtUIJtj82e797Egk1FB2broqItkr3i4eF1qiHbFCG6srksu9gWhfmuM/TNG76jMfzAdxEPakg==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-3.0.4.tgz", + "integrity": "sha512-5Po3YARCZ/8yQHFzvrSjn8+hBUF7ZWac39SHsy8Tls+7tE62iq6pYWxpVU6aOOMAGD21RwFQhQeqmJPf70kHEQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "async-each-series": "0.1.1", "chalk": "4.1.2", @@ -3909,139 +4292,223 @@ "stream-throttle": "^0.1.3" } }, - "node_modules/browser-sync-ui/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/browser-sync/node_modules/fs-extra": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "graceful-fs": "^4.1.2", + "jsonfile": "^3.0.0", + "universalify": "^0.1.0" } }, - "node_modules/browser-sync-ui/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/browser-sync/node_modules/jsonfile": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", + "integrity": "sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/browser-sync-ui/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/browser-sync/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/browserslist": { + "version": "4.25.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz", + "integrity": "sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "caniuse-lite": "^1.0.30001726", + "electron-to-chromium": "^1.5.173", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.3" + }, + "bin": { + "browserslist": "cli.js" }, "engines": { - "node": ">=7.0.0" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/browser-sync-ui/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "node_modules/bs-recipes": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", + "integrity": "sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==", + "dev": true, + "license": "ISC" }, - "node_modules/browser-sync-ui/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, - "engines": { - "node": ">=8" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/browser-sync-ui/node_modules/immutable": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", - "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", + "node_modules/bulma": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/bulma/-/bulma-1.0.4.tgz", + "integrity": "sha512-Ffb6YGXDiZYX3cqvSbHWqQ8+LkX6tVoTcZuVB3lm93sbAVXlO0D6QlOTMnV6g18gILpAXqkG2z9hf9z4hCjz2g==", + "license": "MIT" + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.8" } }, - "node_modules/browser-sync-ui/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/cachedir": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", + "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/browser-sync/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/browser-sync/node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" }, "engines": { - "node": ">= 8" + "node": ">= 0.4" } }, - "node_modules/browser-sync/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/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/browser-sync/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=6" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" } }, - "node_modules/browser-sync/node_modules/chalk": { + "node_modules/caniuse-lite": { + "version": "1.0.30001727", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz", + "integrity": "sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -4053,17 +4520,28 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/browser-sync/node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true, + "license": "MIT" + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -4076,1607 +4554,1728 @@ "engines": { "node": ">= 8.10.0" }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, "optionalDependencies": { "fsevents": "~2.3.2" } }, - "node_modules/browser-sync/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=6" } }, - "node_modules/browser-sync/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "restore-cursor": "^3.1.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=8" } }, - "node_modules/browser-sync/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/browser-sync/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==", + "node_modules/cli-highlight": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", + "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", "dev": true, + "license": "ISC", "dependencies": { - "to-regex-range": "^5.0.1" + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + }, + "bin": { + "highlight": "bin/highlight" }, "engines": { - "node": ">=8" + "node": ">=8.0.0", + "npm": ">=5.0.0" } }, - "node_modules/browser-sync/node_modules/fs-extra": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", - "integrity": "sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==", + "node_modules/cli-highlight/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, + "license": "ISC", "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^3.0.0", - "universalify": "^0.1.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/browser-sync/node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "node_modules/cli-highlight/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=10" } }, - "node_modules/browser-sync/node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "node_modules/cli-highlight/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, + "license": "ISC", "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">=10" } }, - "node_modules/browser-sync/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==", + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, + "license": "MIT", "engines": { - "node": ">= 6" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/browser-sync/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/cli-table3": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", "dev": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.0" + }, "engines": { - "node": ">=8" + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" } }, - "node_modules/browser-sync/node_modules/immutable": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", - "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", "dev": true, + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": ">= 10" } }, - "node_modules/browser-sync/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==", + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, + "license": "ISC", "dependencies": { - "binary-extensions": "^2.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/browser-sync/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.8" } }, - "node_modules/browser-sync/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==", + "node_modules/clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.12.0" + "node": ">= 0.10" } }, - "node_modules/browser-sync/node_modules/jsonfile": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", - "integrity": "sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==", + "node_modules/clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==", "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } + "license": "MIT" }, - "node_modules/browser-sync/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "node_modules/cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", "dev": true, + "license": "MIT", "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" } }, - "node_modules/browser-sync/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, + "node_modules/codemirror": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.2.tgz", + "integrity": "sha512-VhydHotNW5w1UGK0Qj96BwSk/Zqbp9WbnyK2W/eVMv4QyF41INRGpjUhFJY7/uDNuudSc33a/PKr4iDqRduvHw==", + "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/commands": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/lint": "^6.0.0", + "@codemirror/search": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0" } }, - "node_modules/browser-sync/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "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==", + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/browser-sync/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/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==", + "license": "MIT" }, - "node_modules/browser-sync/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true, - "engines": { - "node": ">= 4.0.0" + "license": "ISC", + "bin": { + "color-support": "bin.js" } }, - "node_modules/browser-sync/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } + "license": "MIT" }, - "node_modules/browser-sync/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=18" } }, - "node_modules/browser-sync/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "node_modules/commitizen": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/commitizen/-/commitizen-4.3.1.tgz", + "integrity": "sha512-gwAPAVTy/j5YcOOebcCRIijn+mSjWJC+IYKivTu6aG8Ei/scoXgfsMRnuAk6b0GRste2J4NGxVdMN3ZpfNaVaw==", "dev": true, + "license": "MIT", "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "cachedir": "2.3.0", + "cz-conventional-changelog": "3.3.0", + "dedent": "0.7.0", + "detect-indent": "6.1.0", + "find-node-modules": "^2.1.2", + "find-root": "1.1.0", + "fs-extra": "9.1.0", + "glob": "7.2.3", + "inquirer": "8.2.5", + "is-utf8": "^0.2.1", + "lodash": "4.17.21", + "minimist": "1.2.7", + "strip-bom": "4.0.0", + "strip-json-comments": "3.1.1" + }, + "bin": { + "commitizen": "bin/commitizen", + "cz": "bin/git-cz", + "git-cz": "bin/git-cz" }, "engines": { - "node": ">=12" + "node": ">= 12" } }, - "node_modules/browserslist": { - "version": "4.21.10", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", - "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "node_modules/commitizen/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001517", - "electron-to-chromium": "^1.4.477", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.11" - }, - "bin": { - "browserslist": "cli.js" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": ">=10" } }, - "node_modules/bs-recipes": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", - "integrity": "sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==", - "dev": true + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "license": "MIT" }, - "node_modules/buffer-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", - "integrity": "sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==", - "engines": { - "node": ">=0.4.0" + "node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" }, - "node_modules/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/concat-with-sourcemaps": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", + "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", + "dev": true, + "license": "ISC", + "dependencies": { + "source-map": "^0.6.1" } }, - "node_modules/bulma": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/bulma/-/bulma-0.9.4.tgz", - "integrity": "sha512-86FlT5+1GrsgKbPLRRY7cGDg8fsJiP/jzTqXXVqiUZZ2aZT8uemEOHlU1CDU+TxklPEZ11HZNNWclRBBecP4CQ==" - }, - "node_modules/bulma-checkradio": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/bulma-checkradio/-/bulma-checkradio-2.1.3.tgz", - "integrity": "sha512-8OmZ7PURyftNLGXSTNAYNTJHIe0OkoH/8z9iWfSXGxiv3AlrKneMtiVpBKofXsvc9ZHBUI1YjefiW5WFhgFgAQ==", + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "license": "MIT", "dependencies": { - "bulma": "^0.9.3" + "ini": "^1.3.4", + "proto-list": "~1.2.1" } }, - "node_modules/bulma-switch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/bulma-switch/-/bulma-switch-2.0.4.tgz", - "integrity": "sha512-kMu4H0Pr0VjvfsnT6viRDCgptUq0Rvy7y7PX6q+IHg1xUynsjszPjhAdal5ysAlCG5HNO+5YXxeiu92qYGQolw==" - }, - "node_modules/bulma-tooltip": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/bulma-tooltip/-/bulma-tooltip-3.0.2.tgz", - "integrity": "sha512-CsT3APjhlZScskFg38n8HYL8oYNUHQtcu4sz6ERarxkUpBRbk9v0h/5KAvXeKapVSn2dp9l7bOGit5SECP8EWQ==" - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "node_modules/config-chain/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true, - "engines": { - "node": ">= 0.8" - } + "license": "ISC" }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "node_modules/connect": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", + "integrity": "sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==", + "dev": true, + "license": "MIT", "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" + "debug": "2.6.9", + "finalhandler": "1.1.0", + "parseurl": "~1.3.2", + "utils-merge": "1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10.0" } }, - "node_modules/cachedir": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.2.0.tgz", - "integrity": "sha512-VvxA0xhNqIIfg0V9AmJkDg91DaJwryutH5rVEZAhcNi4iJFj9f+QxmAjgK1LT9I8OgToX27fypX6/MeCXVbBjQ==", + "node_modules/connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=0.8" } }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "ms": "2.0.0" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, - "engines": { - "node": ">=6" - } + "license": "MIT" }, - "node_modules/caniuse-api": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", - "integrity": "sha512-SBTl70K0PkDUIebbkXrxWqZlHNs0wRgRD6QZ8guctShjbh63gEPfF+Wj0Yw+75f5Y8tSzqAI/NcisYv/cCah2Q==", + "node_modules/conventional-changelog-angular": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.0.0.tgz", + "integrity": "sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==", "dev": true, + "license": "ISC", "dependencies": { - "browserslist": "^1.3.6", - "caniuse-db": "^1.0.30000529", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=18" } }, - "node_modules/caniuse-api/node_modules/browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha512-qHJblDE2bXVRYzuDetv/wAeHOJyO97+9wxC1cdCtyzgNuSozOyRCiiLaCR1f71AN66lQdVVBipWm63V+a7bPOw==", - "deprecated": "Browserslist 2 could fail on reading Browserslist >3.0 config used in other tools.", + "node_modules/conventional-changelog-writer": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-8.1.0.tgz", + "integrity": "sha512-dpC440QnORNCO81XYuRRFOLCsjKj4W7tMkUIn3lR6F/FAaJcWLi7iCj6IcEvSQY2zw6VUgwUKd5DEHKEWrpmEQ==", "dev": true, + "license": "MIT", "dependencies": { - "caniuse-db": "^1.0.30000639", - "electron-to-chromium": "^1.2.7" + "conventional-commits-filter": "^5.0.0", + "handlebars": "^4.7.7", + "meow": "^13.0.0", + "semver": "^7.5.2" }, "bin": { - "browserslist": "cli.js" + "conventional-changelog-writer": "dist/cli/index.js" + }, + "engines": { + "node": ">=18" } }, - "node_modules/caniuse-db": { - "version": "1.0.30001363", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30001363.tgz", - "integrity": "sha512-voQLvHWF4h768zvo39WJ/17FLqlrorRsGJ5FsG3I5m6NMcDyoeR8R0w3tWazcsEGoUcQHw6VH4Y/WXipBP34sA==", - "dev": true + "node_modules/conventional-changelog-writer/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001519", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001519.tgz", - "integrity": "sha512-0QHgqR+Jv4bxHMp8kZ1Kn8CH55OikjKJ6JmKkZYP1F3D7w+lnFXF70nG5eNfsZS89jadi5Ywy5UCSKLAglIRkg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] + "node_modules/conventional-commit-types": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/conventional-commit-types/-/conventional-commit-types-3.0.0.tgz", + "integrity": "sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg==", + "dev": true, + "license": "ISC" }, - "node_modules/cardinal": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", - "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==", + "node_modules/conventional-commits-filter": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-5.0.0.tgz", + "integrity": "sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==", "dev": true, - "dependencies": { - "ansicolors": "~0.3.2", - "redeyed": "~2.1.0" - }, - "bin": { - "cdl": "bin/cdl.js" + "license": "MIT", + "engines": { + "node": ">=18" } }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/conventional-commits-parser": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.2.0.tgz", + "integrity": "sha512-uLnoLeIW4XaoFtH37qEcg/SXMJmKF4vi7V0H2rnPueg+VEtFGA/asSCNTcq4M/GQ6QmlzchAEtOoDTtKqWeHag==", + "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "meow": "^13.0.0" + }, + "bin": { + "conventional-commits-parser": "dist/cli/index.js" }, "engines": { - "node": ">=4" + "node": ">=18" } }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "node_modules/chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", - "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" + "node_modules/convert-hrtime": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-5.0.0.tgz", + "integrity": "sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" }, - "optionalDependencies": { - "fsevents": "^1.2.7" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" } }, - "node_modules/chokidar/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "node_modules/copy-props": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-4.0.0.tgz", + "integrity": "sha512-bVWtw1wQLzzKiYROtvNlbJgxgBYt2bMJpkCbKmXM3xyijvcjjWXEk5nyrrT3bgJ7ODb19ZohE2T0Y3FgNPyoTw==", + "license": "MIT", "dependencies": { - "is-extglob": "^2.1.0" + "each-props": "^3.0.0", + "is-plain-object": "^5.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 10.13.0" } }, - "node_modules/clap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", - "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", - "dev": true, + "node_modules/core-js-compat": { + "version": "3.44.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.44.0.tgz", + "integrity": "sha512-JepmAj2zfl6ogy34qfWtcE7nHKAJnKsQFRn++scjVS2bZFllwptzw61BZcZFYBPpUznLfAvh0LGhxKppk04ClA==", + "license": "MIT", "dependencies": { - "chalk": "^1.1.3" + "browserslist": "^4.25.1" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "node_modules/clap/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" }, - "node_modules/clap/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", "dev": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10" } }, - "node_modules/clap/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/clap/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/cosmiconfig-typescript-loader": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-6.1.0.tgz", + "integrity": "sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g==", "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "ansi-regex": "^2.0.0" + "jiti": "^2.4.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=v18" + }, + "peerDependencies": { + "@types/node": "*", + "cosmiconfig": ">=9", + "typescript": ">=5" } }, - "node_modules/clap/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/cosmiconfig/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "license": "MIT", "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "node_modules/crelt": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", + "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==", + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, "engines": { - "node": ">=6" + "node": ">= 8" } }, - "node_modules/cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "node_modules/crypto-random-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", "dev": true, + "license": "MIT", "dependencies": { - "restore-cursor": "^2.0.0" + "type-fest": "^1.0.1" }, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-table3": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.2.tgz", - "integrity": "sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw==", + "node_modules/crypto-random-string/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "dev": true, - "dependencies": { - "string-width": "^4.2.0" - }, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": "10.* || >= 12.*" + "node": ">=10" }, - "optionalDependencies": { - "@colors/colors": "1.5.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-table3/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/css-declaration-sorter": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz", + "integrity": "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==", "dev": true, + "license": "ISC", "engines": { - "node": ">=8" + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.0.9" } }, - "node_modules/cli-table3/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/css-select": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", - "dev": true - }, - "node_modules/cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", + "node_modules/css-tree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", + "dev": true, + "license": "MIT", "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" + "mdn-data": "2.12.2", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/css-what": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "dev": true, + "license": "BSD-2-Clause", "engines": { - "node": ">=0.10.0" + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "dependencies": { - "number-is-nan": "^1.0.0" + "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, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/cliui/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "node_modules/cssnano": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-7.1.0.tgz", + "integrity": "sha512-Pu3rlKkd0ZtlCUzBrKL1Z4YmhKppjC1H9jo7u1o4qaKqyhvixFgu5qLyNIAOjSTg9DjVPtUqdROq2EfpVMEe+w==", + "dev": true, + "license": "MIT", "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "cssnano-preset-default": "^7.0.8", + "lilconfig": "^3.1.3" }, "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/cssnano-preset-default": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-7.0.8.tgz", + "integrity": "sha512-d+3R2qwrUV3g4LEMOjnndognKirBZISylDZAF/TPeCWVjEwlXS2e4eN4ICkoobRe7pD3H6lltinKVyS1AJhdjQ==", + "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "browserslist": "^4.25.1", + "css-declaration-sorter": "^7.2.0", + "cssnano-utils": "^5.0.1", + "postcss-calc": "^10.1.1", + "postcss-colormin": "^7.0.4", + "postcss-convert-values": "^7.0.6", + "postcss-discard-comments": "^7.0.4", + "postcss-discard-duplicates": "^7.0.2", + "postcss-discard-empty": "^7.0.1", + "postcss-discard-overridden": "^7.0.1", + "postcss-merge-longhand": "^7.0.5", + "postcss-merge-rules": "^7.0.6", + "postcss-minify-font-values": "^7.0.1", + "postcss-minify-gradients": "^7.0.1", + "postcss-minify-params": "^7.0.4", + "postcss-minify-selectors": "^7.0.5", + "postcss-normalize-charset": "^7.0.1", + "postcss-normalize-display-values": "^7.0.1", + "postcss-normalize-positions": "^7.0.1", + "postcss-normalize-repeat-style": "^7.0.1", + "postcss-normalize-string": "^7.0.1", + "postcss-normalize-timing-functions": "^7.0.1", + "postcss-normalize-unicode": "^7.0.4", + "postcss-normalize-url": "^7.0.1", + "postcss-normalize-whitespace": "^7.0.1", + "postcss-ordered-values": "^7.0.2", + "postcss-reduce-initial": "^7.0.4", + "postcss-reduce-transforms": "^7.0.1", + "postcss-svgo": "^7.1.0", + "postcss-unique-selectors": "^7.0.4" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" }, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "node_modules/cssnano-utils": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-5.0.1.tgz", + "integrity": "sha512-ZIP71eQgG9JwjVZsTPSqhc6GHgEr53uJ7tK5///VfyWj6Xp2DBmixWHqJgPno+PqATzn48pL42ww9x5SSGmhZg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.8" - } - }, - "node_modules/clone-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", - "engines": { - "node": ">= 0.10" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==" - }, - "node_modules/cloneable-readable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", - "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "dev": true, + "license": "MIT", "dependencies": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" } }, - "node_modules/coa": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", - "integrity": "sha512-KAGck/eNAmCL0dcT3BiuYwLbExK6lduR8DxM3C1TyDzaXhZHyZ8ooX5I5+na2e3dPFuibfxrGdorr0/Lr7RYCQ==", + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", "dev": true, + "license": "MIT", "dependencies": { - "q": "^1.1.2" + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" }, "engines": { - "node": ">= 0.8.0" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" } }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", - "engines": { - "node": ">=0.10.0" - } + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "dev": true, + "license": "CC0-1.0" }, - "node_modules/collection-map": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", - "integrity": "sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA==", + "node_modules/cz-conventional-changelog": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-3.3.0.tgz", + "integrity": "sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==", + "dev": true, + "license": "MIT", "dependencies": { - "arr-map": "^2.0.2", - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" + "chalk": "^2.4.1", + "commitizen": "^4.0.3", + "conventional-commit-types": "^3.0.0", + "lodash.map": "^4.5.1", + "longest": "^2.0.1", + "word-wrap": "^1.0.3" }, "engines": { - "node": ">=0.10.0" + "node": ">= 10" + }, + "optionalDependencies": { + "@commitlint/load": ">6.1.1" } }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "node_modules/cz-conventional-changelog/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, + "license": "MIT", "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/color": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", - "integrity": "sha512-Ajpjd8asqZ6EdxQeqGzU5WBhhTfJ/0cA4Wlbre7e5vXfmDSmda7Ov6jeKoru+b0vHcb1CqvuroTHp5zIWzhVMA==", + "node_modules/cz-conventional-changelog/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, + "license": "MIT", "dependencies": { - "clone": "^1.0.2", - "color-convert": "^1.3.0", - "color-string": "^0.3.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/color-convert": { + "node_modules/cz-conventional-changelog/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, + "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, - "node_modules/color-name": { + "node_modules/cz-conventional-changelog/node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/color-string": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", - "integrity": "sha512-sz29j1bmSDfoAxKIEU6zwoIZXN6BrFbAMIhfYCNyiZXBDuU/aiHlN84lp/xDzL2ubyFhLDobHIlU1X70XRrMDA==", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true, - "dependencies": { - "color-name": "^1.0.0" - } - }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "bin": { - "color-support": "bin.js" - } + "license": "MIT" }, - "node_modules/colormin": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", - "integrity": "sha512-XSEQUUQUR/lXqGyddiNH3XYFUPYlYr1vXy9rTFMsSOw+J7Q6EQkdlQIrTlYn4TccpsOaUE1PYQNjBn20gwCdgQ==", + "node_modules/cz-conventional-changelog/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, - "dependencies": { - "color": "^0.11.0", - "css-color-names": "0.0.4", - "has": "^1.0.1" + "license": "MIT", + "engines": { + "node": ">=0.8.0" } }, - "node_modules/colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha512-ENwblkFQpqqia6b++zLD/KUWafYlVY/UNnAp7oz7LY7E924wmpye416wBOmvv/HMWzl8gL1kJlfvId/1Dg176w==", + "node_modules/cz-conventional-changelog/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, + "license": "MIT", "engines": { - "node": ">=0.1.90" + "node": ">=4" } }, - "node_modules/commander": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", - "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", + "node_modules/cz-conventional-changelog/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, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, "engines": { - "node": "^12.20.0 || >=14" + "node": ">=4" } }, - "node_modules/commitizen": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/commitizen/-/commitizen-4.2.4.tgz", - "integrity": "sha512-LlZChbDzg3Ir3O2S7jSo/cgWp5/QwylQVr59K4xayVq8S4/RdKzSyJkghAiZZHfhh5t4pxunUoyeg0ml1q/7aw==", - "dev": true, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "license": "MIT", "dependencies": { - "cachedir": "2.2.0", - "cz-conventional-changelog": "3.2.0", - "dedent": "0.7.0", - "detect-indent": "6.0.0", - "find-node-modules": "^2.1.2", - "find-root": "1.1.0", - "fs-extra": "8.1.0", - "glob": "7.1.4", - "inquirer": "6.5.2", - "is-utf8": "^0.2.1", - "lodash": "^4.17.20", - "minimist": "1.2.5", - "strip-bom": "4.0.0", - "strip-json-comments": "3.0.1" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" }, - "bin": { - "commitizen": "bin/commitizen", - "cz": "bin/git-cz", - "git-cz": "bin/git-cz" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" }, "engines": { - "node": ">= 10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" } }, - "node_modules/commitizen/node_modules/cz-conventional-changelog": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-3.2.0.tgz", - "integrity": "sha512-yAYxeGpVi27hqIilG1nh4A9Bnx4J3Ov+eXy4koL3drrR+IO9GaWPsKjik20ht608Asqi8TQPf0mczhEeyAtMzg==", - "dev": true, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "license": "MIT", "dependencies": { - "chalk": "^2.4.1", - "commitizen": "^4.0.3", - "conventional-commit-types": "^3.0.0", - "lodash.map": "^4.5.1", - "longest": "^2.0.1", - "word-wrap": "^1.0.3" + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" }, "engines": { - "node": ">= 10" + "node": ">= 0.4" }, - "optionalDependencies": { - "@commitlint/load": ">6.1.1" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/commitizen/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "ms": "^2.1.3" }, "engines": { - "node": ">=6 <7 || >=8" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/commitizen/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } + "license": "MIT" }, - "node_modules/commitizen/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 4.0.0" + "node": ">=4.0.0" } }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" - }, - "node_modules/compare-func": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", - "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "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, - "dependencies": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" - } - }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + "license": "MIT" }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/concat-with-sourcemaps": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", - "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, + "license": "MIT", "dependencies": { - "source-map": "^0.6.1" + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/config-chain": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "node_modules/defaults/node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true, - "dependencies": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" + "license": "MIT", + "engines": { + "node": ">=0.8" } }, - "node_modules/connect": { - "version": "3.6.6", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", - "integrity": "sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==", - "dev": true, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", "dependencies": { - "debug": "2.6.9", - "finalhandler": "1.1.0", - "parseurl": "~1.3.2", - "utils-merge": "1.0.1" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { - "node": ">= 0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", - "dev": true, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, "engines": { - "node": ">=0.8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/connect/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, + "node_modules/del": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-8.0.0.tgz", + "integrity": "sha512-R6ep6JJ+eOBZsBr9esiNN1gxFbZE4Q2cULkUSFumGYecAiS6qodDvcPx/sFuWHMNul7DWmrtoEOpYSm7o6tbSA==", + "license": "MIT", "dependencies": { - "ms": "2.0.0" + "globby": "^14.0.2", + "is-glob": "^4.0.3", + "is-path-cwd": "^3.0.0", + "is-path-inside": "^4.0.0", + "p-map": "^7.0.2", + "slash": "^5.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/connect/node_modules/ms": { + "node_modules/depd": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/conventional-changelog-angular": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", - "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, - "dependencies": { - "compare-func": "^2.0.0" - }, + "license": "MIT", "engines": { - "node": ">=16" + "node": ">= 0.8" } }, - "node_modules/conventional-changelog-writer": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-7.0.1.tgz", - "integrity": "sha512-Uo+R9neH3r/foIvQ0MKcsXkX642hdm9odUp7TqgFS7BsalTcjzRlIfWZrZR1gbxOozKucaKt5KAbjW8J8xRSmA==", + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true, - "dependencies": { - "conventional-commits-filter": "^4.0.0", - "handlebars": "^4.7.7", - "json-stringify-safe": "^5.0.1", - "meow": "^12.0.1", - "semver": "^7.5.2", - "split2": "^4.0.0" - }, - "bin": { - "conventional-changelog-writer": "cli.mjs" - }, + "license": "MIT", "engines": { - "node": ">=16" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/conventional-commit-types": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/conventional-commit-types/-/conventional-commit-types-3.0.0.tgz", - "integrity": "sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg==", - "dev": true + "node_modules/detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/conventional-commits-filter": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-4.0.0.tgz", - "integrity": "sha512-rnpnibcSOdFcdclpFwWa+pPlZJhXE7l+XK04zxhbWrhgpR96h33QLz8hITTXbcYICxVr3HZFtbtUAQ+4LdBo9A==", + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=16" + "node": ">=8" } }, - "node_modules/conventional-commits-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", - "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", - "dev": true, - "dependencies": { - "is-text-path": "^2.0.0", - "JSONStream": "^1.3.5", - "meow": "^12.0.1", - "split2": "^4.0.0" - }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "license": "Apache-2.0", + "optional": true, "bin": { - "conventional-commits-parser": "cli.mjs" + "detect-libc": "bin/detect-libc.js" }, "engines": { - "node": ">=16" - } - }, - "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dependencies": { - "safe-buffer": "~5.1.1" + "node": ">=0.10" } }, - "node_modules/convert-source-map/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/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "node_modules/dev-ip": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", + "integrity": "sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A==", "dev": true, + "bin": { + "dev-ip": "lib/dev-ip.js" + }, "engines": { - "node": ">= 0.6" - } - }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", - "engines": { - "node": ">=0.10.0" + "node": ">= 0.8.0" } }, - "node_modules/copy-props": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz", - "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==", + "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, + "license": "MIT", "dependencies": { - "each-props": "^1.3.2", - "is-plain-object": "^5.0.0" + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/core-js-compat": { - "version": "3.32.2", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.2.tgz", - "integrity": "sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ==", + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "license": "MIT", "dependencies": { - "browserslist": "^4.21.10" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "object-assign": "^4", - "vary": "^1" + "domelementtype": "^2.3.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", "dev": true, - "optional": true, + "license": "BSD-2-Clause", "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" }, - "engines": { - "node": ">=10" + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/cosmiconfig-typescript-loader": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-2.0.2.tgz", - "integrity": "sha512-KmE+bMjWMXJbkWCeY4FJX/npHuZPNr9XF9q9CIQ/bpFwi1qHfCmSiKarrCcRa0LO4fWjk93pVoeRtJAkTGcYNw==", + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dev": true, - "optional": true, + "license": "MIT", "dependencies": { - "cosmiconfig": "^7", - "ts-node": "^10.8.1" + "is-obj": "^2.0.0" }, "engines": { - "node": ">=12", - "npm": ">=6" + "node": ">=8" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" }, - "peerDependencies": { - "@types/node": "*", - "cosmiconfig": ">=7", - "typescript": ">=3" + "engines": { + "node": ">= 0.4" } }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", "dev": true, - "optional": true + "license": "BSD-3-Clause", + "dependencies": { + "readable-stream": "^2.0.2" + } }, - "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, + "node_modules/each-props": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-3.0.0.tgz", + "integrity": "sha512-IYf1hpuWrdzse/s/YJOrFmU15lyhSzxelNVAHTEG3DtP4QsLTWZUzcUL3HMXmKQxXpa4EIrBPpwRgj0aehdvAw==", + "license": "MIT", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "is-plain-object": "^5.0.0", + "object.defaults": "^1.1.0" }, "engines": { - "node": ">= 8" + "node": ">= 10.13.0" } }, - "node_modules/crypto-random-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", - "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, + "node_modules/easy-extender": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz", + "integrity": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==", "dev": true, "dependencies": { - "type-fest": "^1.0.1" + "lodash": "^4.17.10" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 4.0.0" } }, - "node_modules/crypto-random-string/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "dev": true, + "node_modules/easy-transform-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/easy-transform-stream/-/easy-transform-stream-1.0.1.tgz", + "integrity": "sha512-ktkaa6XR7COAR3oj02CF3IOgz2m1hCaY3SfzvKT4Svt2MhHw9XCt+ncJNWfe2TGz31iqzNGZ8spdKQflj+Rlog==", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==", - "dev": true, - "engines": { - "node": "*" - } - }, - "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==", + "node_modules/eazy-logger": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-4.1.0.tgz", + "integrity": "sha512-+mn7lRm+Zf1UT/YaH8WXtpU6PIV2iOjzP6jgKoiaq/VNrjYKp+OHZGe2znaLgDeFkw8cL9ffuaUm+nNnzcYyGw==", "dev": true, - "bin": { - "cssesc": "bin/cssesc" + "dependencies": { + "chalk": "4.1.2" }, "engines": { - "node": ">=4" + "node": ">= 0.8.0" } }, - "node_modules/cssnano": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", - "integrity": "sha512-0o0IMQE0Ezo4b41Yrm8U6Rp9/Ag81vNXY1gZMnT1XhO4DpjEf2utKERqWJbOoz3g1Wdc1d3QSta/cIuJ1wSTEg==", + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "dev": true, - "dependencies": { - "autoprefixer": "^6.3.1", - "decamelize": "^1.1.2", - "defined": "^1.0.0", - "has": "^1.0.1", - "object-assign": "^4.0.1", - "postcss": "^5.0.14", - "postcss-calc": "^5.2.0", - "postcss-colormin": "^2.1.8", - "postcss-convert-values": "^2.3.4", - "postcss-discard-comments": "^2.0.4", - "postcss-discard-duplicates": "^2.0.1", - "postcss-discard-empty": "^2.0.1", - "postcss-discard-overridden": "^0.1.1", - "postcss-discard-unused": "^2.2.1", - "postcss-filter-plugins": "^2.0.0", - "postcss-merge-idents": "^2.1.5", - "postcss-merge-longhand": "^2.0.1", - "postcss-merge-rules": "^2.0.3", - "postcss-minify-font-values": "^1.0.2", - "postcss-minify-gradients": "^1.0.1", - "postcss-minify-params": "^1.0.4", - "postcss-minify-selectors": "^2.0.4", - "postcss-normalize-charset": "^1.1.0", - "postcss-normalize-url": "^3.0.7", - "postcss-ordered-values": "^2.1.0", - "postcss-reduce-idents": "^2.2.2", - "postcss-reduce-initial": "^1.0.0", - "postcss-reduce-transforms": "^1.0.3", - "postcss-svgo": "^2.1.1", - "postcss-unique-selectors": "^2.0.2", - "postcss-value-parser": "^3.2.3", - "postcss-zindex": "^2.0.1" - } - }, - "node_modules/cssnano/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.191", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.191.tgz", + "integrity": "sha512-xcwe9ELcuxYLUFqZZxL19Z6HVKcvNkIwhbHUz7L3us6u12yR+7uY89dSl570f/IqNthx8dAw3tojG7i4Ni4tDA==", + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/emojilib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", + "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/cssnano/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.8" } }, - "node_modules/cssnano/node_modules/autoprefixer": { - "version": "6.7.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", - "integrity": "sha512-WKExI/eSGgGAkWAO+wMVdFObZV7hQen54UpD1kCCTN3tvlL3W1jL4+lPP/M7MwoP7Q4RHzKtO3JQ4HxYEcd+xQ==", - "dev": true, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "license": "MIT", "dependencies": { - "browserslist": "^1.7.6", - "caniuse-db": "^1.0.30000634", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^5.2.16", - "postcss-value-parser": "^3.2.3" + "once": "^1.4.0" } }, - "node_modules/cssnano/node_modules/browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha512-qHJblDE2bXVRYzuDetv/wAeHOJyO97+9wxC1cdCtyzgNuSozOyRCiiLaCR1f71AN66lQdVVBipWm63V+a7bPOw==", - "deprecated": "Browserslist 2 could fail on reading Browserslist >3.0 config used in other tools.", + "node_modules/engine.io": { + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.4.tgz", + "integrity": "sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g==", "dev": true, + "license": "MIT", "dependencies": { - "caniuse-db": "^1.0.30000639", - "electron-to-chromium": "^1.2.7" + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.7.2", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1" }, - "bin": { - "browserslist": "cli.js" + "engines": { + "node": ">=10.2.0" } }, - "node_modules/cssnano/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/engine.io-client": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.3.tgz", + "integrity": "sha512-T0iLjnyNWahNyv/lcjS2y4oE358tVS/SYQNxYXGAJ9/GLgH4VCvOQ/mhTjqU88mLZCQgiG8RIegFHYCdVC+j5w==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1", + "xmlhttprequest-ssl": "~2.1.1" } }, - "node_modules/cssnano/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/engine.io-client/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, "engines": { - "node": ">=0.8.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/cssnano/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/engine.io-parser": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=10.0.0" } }, - "node_modules/cssnano/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/engine.io/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "ms": "^2.1.3" }, "engines": { - "node": ">=0.12" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/cssnano/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/cssnano/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, + "license": "BSD-2-Clause", "engines": { - "node": ">=0.10.0" + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/cssnano/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/env-ci": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-11.1.1.tgz", + "integrity": "sha512-mT3ks8F0kwpo7SYNds6nWj0PaRh+qJxIeBVBXAKTN9hphAzZv7s0QAZQbqnB1fAv/r4pJUGE15BV9UrS31FP2w==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "execa": "^8.0.0", + "java-properties": "^1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": "^18.17 || >=20.6.1" } }, - "node_modules/cssnano/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/env-ci/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^1.0.0" + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": ">=0.8.0" + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/csso": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", - "integrity": "sha512-FmCI/hmqDeHHLaIQckMhMZneS84yzUZdrWDAvJVVxOwcKE1P1LF9FGmzr1ktIQSxOw6fl3PaQsmfg+GN+VvR3w==", + "node_modules/env-ci/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "dev": true, - "dependencies": { - "clap": "^1.0.9", - "source-map": "^0.5.3" - }, - "bin": { - "csso": "bin/csso" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/csso/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/env-ci/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=0.10.0" + "node": ">=16.17.0" } }, - "node_modules/cz-conventional-changelog": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-3.3.0.tgz", - "integrity": "sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==", + "node_modules/env-ci/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, - "dependencies": { - "chalk": "^2.4.1", - "commitizen": "^4.0.3", - "conventional-commit-types": "^3.0.0", - "lodash.map": "^4.5.1", - "longest": "^2.0.1", - "word-wrap": "^1.0.3" - }, + "license": "MIT", "engines": { - "node": ">= 10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, - "optionalDependencies": { - "@commitlint/load": ">6.1.1" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" + "node_modules/env-ci/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/env-ci/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "path-key": "^4.0.0" }, "engines": { - "node": ">=6.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "node_modules/env-ci/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", + "node_modules/env-ci/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "node_modules/env-ci/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4.0.0" - } - }, - "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": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/default-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", - "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", - "dependencies": { - "kind-of": "^5.0.2" - }, + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/default-resolution": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", - "integrity": "sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ==", - "engines": { - "node": ">= 0.10" + "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==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" } }, - "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==", + "node_modules/es-abstract": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", + "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", + "license": "MIT", "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" }, "engines": { "node": ">= 0.4" @@ -5685,1633 +6284,1788 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dependencies": { - "is-descriptor": "^0.1.0" - }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==", - "dev": true + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } }, - "node_modules/del": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-7.0.0.tgz", - "integrity": "sha512-tQbV/4u5WVB8HMJr08pgw0b6nG4RGt/tj+7Numvq+zqcvUFeMaIWWOUFltiU+6go8BSO2/ogsB4EasDaj0y68Q==", + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", "dependencies": { - "globby": "^13.1.2", - "graceful-fs": "^4.2.10", - "is-glob": "^4.0.3", - "is-path-cwd": "^3.0.0", - "is-path-inside": "^4.0.0", - "p-map": "^5.5.0", - "rimraf": "^3.0.2", - "slash": "^4.0.0" + "es-errors": "^1.3.0" }, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.4" } }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, "engines": { - "node": ">= 0.8" + "node": ">= 0.4" } }, - "node_modules/deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", - "dev": true - }, - "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==", - "dev": true - }, - "node_modules/detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/detect-indent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz", - "integrity": "sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==", - "dev": true, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/dev-ip": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", - "integrity": "sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A==", + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "dev": true, - "bin": { - "dev-ip": "lib/dev-ip.js" - }, - "engines": { - "node": ">= 0.8.0" - } + "license": "MIT" }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "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, - "optional": true, + "license": "MIT", "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dependencies": { - "path-type": "^4.0.0" + "node": ">=10" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "node_modules/eslint": { + "version": "9.33.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.33.0.tgz", + "integrity": "sha512-TS9bTNIryDzStCpJN93aC5VRSW3uTx9sClUn4B87pwiCaJh220otoI0X8mJKr+VcPtniMdN8GKjlwgWGUv5ZKA==", "dev": true, + "license": "MIT", "dependencies": { - "esutils": "^2.0.2" + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.0", + "@eslint/config-helpers": "^0.3.1", + "@eslint/core": "^0.15.2", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.33.0", + "@eslint/plugin-kit": "^0.3.5", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" }, "engines": { - "node": ">=6.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "is-obj": "^2.0.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "node_modules/duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/each-props": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", - "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", - "dependencies": { - "is-plain-object": "^2.0.1", - "object.defaults": "^1.1.0" + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/each-props/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", "dependencies": { - "isobject": "^3.0.1" + "is-glob": "^4.0.3" }, "engines": { - "node": ">=0.10.0" + "node": ">=10.13.0" } }, - "node_modules/easy-extender": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz", - "integrity": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==", + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "lodash": "^4.17.10" + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" }, "engines": { - "node": ">= 4.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/eazy-logger": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-4.0.1.tgz", - "integrity": "sha512-2GSFtnnC6U4IEKhEI7+PvdxrmjJ04mdsj3wHZTFiw0tUtG4HCWzTr13ZYTk8XOGnA1xQMaDljoBOYlk3D/MMSw==", + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "chalk": "4.1.2" + "estraverse": "^5.1.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=0.10" } }, - "node_modules/eazy-logger/node_modules/ansi-styles": { + "node_modules/esrecurse": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "color-convert": "^2.0.1" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=8" + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "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==", + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true, + "license": "MIT" + }, + "node_modules/execa": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.0.tgz", + "integrity": "sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", + "cross-spawn": "^7.0.6", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.1", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.2.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.1.1" + }, + "engines": { + "node": "^18.19.0 || >=20.5.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/eazy-logger/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/execa/node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eazy-logger/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "homedir-polyfill": "^1.0.1" }, "engines": { - "node": ">=7.0.0" + "node": ">=0.10.0" } }, - "node_modules/eazy-logger/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" }, - "node_modules/eazy-logger/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "license": "MIT", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/eazy-logger/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.4.523", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.523.tgz", - "integrity": "sha512-9AreocSUWnzNtvLcbpng6N+GkXnCcBR80IQkxRC9Dfdyg4gaWNUPBujAHUpKkiUkoSoR9UlhA4zD/IgBklmhzg==" - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "node_modules/fancy-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-2.0.0.tgz", + "integrity": "sha512-9CzxZbACXMUXW13tS0tI8XsGGmxWzO2DmYrGuBJOJ8k8q2K7hwfJA5qHjuPPe8wtsco33YR9wc+Rlr5wYFvhSA==", "dev": true, + "license": "MIT", + "dependencies": { + "color-support": "^1.1.3" + }, "engines": { - "node": ">= 0.8" + "node": ">=10.13.0" } }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } + "node_modules/fast-content-type-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-3.0.0.tgz", + "integrity": "sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" }, - "node_modules/engine.io": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.1.tgz", - "integrity": "sha512-JFYQurD/nbsA5BSPmbaOSLa3tSVj8L6o4srSwXXY3NqE+gGUNmmPTbhn8tjzcCtSqhFgIeqef81ngny8JM25hw==", + "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, + "license": "MIT" + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "license": "MIT", "dependencies": { - "@types/cookie": "^0.4.1", - "@types/cors": "^2.8.12", - "@types/node": ">=10.0.0", - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "~0.4.1", - "cors": "~2.8.5", - "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.11.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" }, "engines": { - "node": ">=10.0.0" + "node": ">=8.6.0" } }, - "node_modules/engine.io-client": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.4.0.tgz", - "integrity": "sha512-GyKPDyoEha+XZ7iEqam49vz6auPnNJ9ZBfy89f+rMMas8AuiMWOZ9PVzu8xb9ZC6rafUqiGHSCfu22ih66E+1g==", + "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, - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.11.0", - "xmlhttprequest-ssl": "~2.0.0" - } + "license": "MIT" }, - "node_modules/engine.io-parser": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.6.tgz", - "integrity": "sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw==", + "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, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause", + "optional": true + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "license": "MIT", "engines": { - "node": ">=10.0.0" + "node": ">= 4.9.1" } }, - "node_modules/env-ci": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-9.0.0.tgz", - "integrity": "sha512-Q3cjr1tX9xwigprw4G8M3o7PIOO/1LYji6TyGsbD1WfMmD23etZvhgmPXJqkP788yH4dgSSK7oaIMuaayUJIfg==", - "dev": true, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "license": "ISC", "dependencies": { - "execa": "^7.0.0", - "java-properties": "^1.0.2" + "reusify": "^1.0.4" + } + }, + "node_modules/fdir": { + "version": "6.4.5", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.5.tgz", + "integrity": "sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==", + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" }, - "engines": { - "node": "^16.14 || >=18" + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } } }, - "node_modules/env-ci/node_modules/execa": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz", - "integrity": "sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==", + "node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", "dev": true, + "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^4.3.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" + "is-unicode-supported": "^2.0.0" }, "engines": { - "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + "node": ">=18" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/env-ci/node_modules/human-signals": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", - "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, - "engines": { - "node": ">=14.18.0" - } - }, - "node_modules/env-ci/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=16.0.0" } }, - "node_modules/env-ci/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "engines": { - "node": ">=12" + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=8" } }, - "node_modules/env-ci/node_modules/npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "node_modules/finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==", "dev": true, + "license": "MIT", "dependencies": { - "path-key": "^4.0.0" + "debug": "2.6.9", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.3.1", + "unpipe": "~1.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.8" } }, - "node_modules/env-ci/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { - "mimic-fn": "^4.0.0" + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/find-node-modules": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/find-node-modules/-/find-node-modules-2.1.3.tgz", + "integrity": "sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "findup-sync": "^4.0.0", + "merge": "^2.1.1" + } + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "dev": true, + "license": "MIT" + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/env-ci/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "node_modules/find-up-simple": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.1.tgz", + "integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/env-ci/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "node_modules/find-versions": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-6.0.0.tgz", + "integrity": "sha512-2kCCtc+JvcZ86IGAz3Z2Y0A1baIz9fL31pH/0S1IqZr9Iwnjq8izfPtrCyQKO6TLMPELLsQMre7VDqeIKCsHkA==", "dev": true, + "license": "MIT", + "dependencies": { + "semver-regex": "^4.0.5", + "super-regex": "^1.0.0" + }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/findup-sync": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz", + "integrity": "sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==", + "dev": true, + "license": "MIT", "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.21.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", - "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.0", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^4.0.2", + "resolve-dir": "^1.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 8" } }, - "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "node_modules/fined": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-2.0.0.tgz", + "integrity": "sha512-OFRzsL6ZMHz5s0JrsEr+TpdGNCtrVtnuG3x1yzGNiQHT0yaDnXAj8V/lWcpJVrnoDpcwXcASxAZYbuXda2Y82A==", + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "expand-tilde": "^2.0.2", + "is-plain-object": "^5.0.0", + "object.defaults": "^1.1.0", + "object.pick": "^1.3.0", + "parse-filepath": "^1.0.2" }, "engines": { - "node": ">= 0.4" + "node": ">= 10.13.0" } }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, + "node_modules/flagged-respawn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-2.0.0.tgz", + "integrity": "sha512-Gq/a6YCi8zexmGHMuJwahTGzXlAZAOsbCVKduWXC6TlLCjjFRlExMJc4GC2NYPYZ0r/brw9P7CpRgQmlPVeOoA==", + "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 10.13.0" } }, - "node_modules/es5-ext": { - "version": "0.10.61", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.61.tgz", - "integrity": "sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA==", - "hasInstallScript": true, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" + "flatted": "^3.2.9", + "keyv": "^4.5.4" }, "engines": { - "node": ">=0.10" + "node": ">=16" } }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "node_modules/fontawesome-subset": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/fontawesome-subset/-/fontawesome-subset-4.5.0.tgz", + "integrity": "sha512-PsrfSLd8oOglic5Wv7q0cy5HYmRziEuShlxu0qWKwMNV6bym2vfQlq2fRYKZlKyCCyVc5FFU4eTIDz4R4G9vBg==", + "license": "GPL-3.0-or-later", "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" + "lodash": ">=4.17.21", + "mkdirp": "^2.1.6 || ^3.0.1", + "subset-font": "^2.0.0", + "yaml": "^2.2.1" + }, + "peerDependencies": { + "@fortawesome/fontawesome-free": ">=5.12.0", + "@fortawesome/fontawesome-pro": ">=5.12.0" + }, + "peerDependenciesMeta": { + "@fortawesome/fontawesome-free": { + "optional": true + }, + "@fortawesome/fontawesome-pro": { + "optional": true + } } }, - "node_modules/es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "node_modules/fontverter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fontverter/-/fontverter-2.0.0.tgz", + "integrity": "sha512-DFVX5hvXuhi1Jven1tbpebYTCT9XYnvx6/Z+HFUPb7ZRMCW+pj2clU9VMhoTPgWKPhAs7JJDSk3CW1jNUvKCZQ==", + "license": "BSD-3-Clause", "dependencies": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" + "wawoff2": "^2.0.0", + "woff2sfnt-sfnt2woff": "^1.0.0" } }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=0.10.0" } }, - "node_modules/eslint": { - "version": "8.49.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.49.0.tgz", - "integrity": "sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==", - "dev": true, + "node_modules/for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", + "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.49.0", - "@humanwhocodes/config-array": "^0.11.11", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" + "for-in": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=0.10.0" } }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, + "license": "ISC", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=14" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "*" }, "funding": { - "url": "https://opencollective.com/eslint" + "type": "patreon", + "url": "https://github.com/sponsors/rawify" } }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "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" + "license": "MIT", + "engines": { + "node": ">= 0.6" } }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" } }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/fs-extra": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", + "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=14.14" } }, - "node_modules/eslint/node_modules/color-convert": { + "node_modules/fs-mkdirp-stream": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-2.0.1.tgz", + "integrity": "sha512-UTOY+59K6IA94tec8Wjqm0FSh5OVudGNB0NL/P6fB3HiE3bYOY3VYBGijsnOHNkQSwC1FKkU77pmq7xp9CskLw==", + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "graceful-fs": "^4.2.8", + "streamx": "^2.12.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=10.13.0" } }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function-timeout": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/function-timeout/-/function-timeout-1.0.2.tgz", + "integrity": "sha512-939eZS4gJ3htTHAldmyyuzlrD58P03fHG49v2JfFXbV6OhvZKRC9j2yAtdHw/zrp2zXHuv05zMIy40F0ge7spA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "license": "MIT", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" + "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==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint/node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", + "peer": true, "engines": { - "node": ">=8" + "node": ">=6.9.0" } }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } }, - "node_modules/eslint/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", "dependencies": { - "p-locate": "^5.0.0" + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", "dependencies": { - "yocto-queue": "^0.1.0" + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.4" } }, - "node_modules/eslint/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "node_modules/get-stream": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-7.0.1.tgz", + "integrity": "sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ==", "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "license": "MIT", "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, + "node_modules/git-cz": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/git-cz/-/git-cz-4.9.0.tgz", + "integrity": "sha512-cSRL8IIOXU7UFLdbziCYqg8f8InwLwqHezkiRHNSph7oZqGv0togId1kMTfKil6gzK0VaSXeVBb4oDl0fQCHiw==", + "license": "Unlicense", "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" + "git-cz": "bin/git-cz.js", + "gitcz": "bin/git-cz.js" } }, - "node_modules/esquery": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", - "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", + "node_modules/git-log-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.1.tgz", + "integrity": "sha512-PI+sPDvHXNPl5WNOErAK05s3j0lgwUzMN6o8cyQrDaKfT3qd7TmNJKeXX+SknI5I0QhG5fVPAEwSY4tRGDtYoQ==", "dev": true, + "license": "MIT", "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" + "argv-formatter": "~1.0.0", + "spawn-error-forwarder": "~1.0.0", + "split2": "~1.0.0", + "stream-combiner2": "~1.1.1", + "through2": "~2.0.0", + "traverse": "0.6.8" } }, - "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==", + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { - "estraverse": "^5.2.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=4.0" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "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, + "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==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, "engines": { - "node": ">=4.0" + "node": ">= 6" } }, - "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==", + "node_modules/glob-stream": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-8.0.3.tgz", + "integrity": "sha512-fqZVj22LtFJkHODT+M4N1RJQ3TjnnQhfE9GwZI8qXscYarnhpip70poMldRnP8ipQ/w0B621kOhfc53/J9bd/A==", + "license": "MIT", + "dependencies": { + "@gulpjs/to-absolute-glob": "^4.0.0", + "anymatch": "^3.1.3", + "fastq": "^1.13.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "is-negated-glob": "^1.0.0", + "normalize-path": "^3.0.0", + "streamx": "^2.12.5" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10.13.0" } }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true, + "node_modules/glob-stream/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==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, "engines": { - "node": ">= 0.6" + "node": ">=10.13.0" } }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true + "node_modules/glob-watcher": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-6.0.0.tgz", + "integrity": "sha512-wGM28Ehmcnk2NqRORXFOTOR064L4imSw3EeOqU5bIwUf62eXGwg89WivH6VMahL8zlQHeodzvHpXplrqzrz3Nw==", + "license": "MIT", + "dependencies": { + "async-done": "^2.0.0", + "chokidar": "^3.5.3" + }, + "engines": { + "node": ">= 10.13.0" + } }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "node_modules/global-directory": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", + "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "ini": "4.1.1" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "license": "MIT", "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "license": "MIT", "dependencies": { - "homedir-polyfill": "^1.0.1" + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/ext": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", - "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", - "dependencies": { - "type": "^2.5.0" - } - }, - "node_modules/ext/node_modules/type": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.6.0.tgz", - "integrity": "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==" - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "node_modules/global-prefix/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" }, - "node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "license": "ISC", "dependencies": { - "is-extendable": "^0.1.0" + "isexe": "^2.0.0" }, - "engines": { - "node": ">=0.10.0" + "bin": { + "which": "bin/which" } }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "node_modules/globals": { + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.3.0.tgz", + "integrity": "sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ==", "dev": true, - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "license": "MIT", "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "node_modules/globby": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.1.0.tgz", + "integrity": "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==", + "license": "MIT", "dependencies": { - "is-descriptor": "^1.0.0" + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.3", + "ignore": "^7.0.3", + "path-type": "^6.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.3.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/extglob/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dependencies": { - "kind-of": "^6.0.0" + "node_modules/globby/node_modules/@sindresorhus/merge-streams": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", + "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", + "license": "MIT", + "engines": { + "node": ">=18" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 4" } }, - "node_modules/extglob/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, + "node_modules/globby/node_modules/path-type": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-6.0.0.tgz", + "integrity": "sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/extglob/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "node_modules/glogg": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-2.2.0.tgz", + "integrity": "sha512-eWv1ds/zAlz+M1ioHsyKJomfY7jbDDPpwSkv14KQj89bycx1nvK5/2Cj/T9g7kzJcX5Bc7Yv22FjfBZS/jl94A==", + "license": "MIT", "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "sparkles": "^2.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 10.13.0" } }, - "node_modules/extglob/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fancy-log": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", - "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/gulp": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-5.0.1.tgz", + "integrity": "sha512-PErok3DZSA5WGMd6XXV3IRNO0mlB+wW3OzhFJLEec1jSERg2j1bxJ6e5Fh6N6fn3FH2T9AP4UYNb/pYlADB9sA==", + "license": "MIT", "dependencies": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" + "glob-watcher": "^6.0.0", + "gulp-cli": "^3.1.0", + "undertaker": "^2.0.0", + "vinyl-fs": "^4.0.2" + }, + "bin": { + "gulp": "bin/gulp.js" }, "engines": { - "node": ">= 0.10" + "node": ">=10.13.0" } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "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==", + "node_modules/gulp-autoprefixer": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/gulp-autoprefixer/-/gulp-autoprefixer-9.0.0.tgz", + "integrity": "sha512-lVQz5fqdjm4RMB1O3xLPtaZNMbFFoGKbV+SN3NJgT9X+PIyYld7dXARpoXIKEZAqE9WC2SoDQU0mxqZahWq07A==", + "license": "MIT", "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" + "autoprefixer": "^10.4.16", + "gulp-plugin-extras": "^0.2.2", + "postcss": "^8.4.31", + "vinyl-sourcemaps-apply": "^0.2.1" }, "engines": { - "node": ">=8.6.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + }, + "peerDependencies": { + "gulp": ">=4" + }, + "peerDependenciesMeta": { + "gulp": { + "optional": true + } } }, - "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==", + "node_modules/gulp-cli": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-3.1.0.tgz", + "integrity": "sha512-zZzwlmEsTfXcxRKiCHsdyjZZnFvXWM4v1NqBJSYbuApkvVKivjcmOS2qruAJ+PkEHLFavcDKH40DPc1+t12a9Q==", + "license": "MIT", "dependencies": { - "is-glob": "^4.0.1" + "@gulpjs/messages": "^1.1.0", + "chalk": "^4.1.2", + "copy-props": "^4.0.0", + "gulplog": "^2.2.0", + "interpret": "^3.1.1", + "liftoff": "^5.0.1", + "mute-stdout": "^2.0.0", + "replace-homedir": "^2.0.0", + "semver-greatest-satisfied-range": "^2.0.0", + "string-width": "^4.2.3", + "v8flags": "^4.0.0", + "yargs": "^16.2.0" + }, + "bin": { + "gulp": "bin/gulp.js" }, "engines": { - "node": ">= 6" + "node": ">=10.13.0" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/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==", + "node_modules/gulp-cli/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "license": "ISC", "dependencies": { - "reusify": "^1.0.4" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", - "dev": true, + "node_modules/gulp-cli/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "license": "MIT", "dependencies": { - "escape-string-regexp": "^1.0.5" + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "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==", + "node_modules/gulp-cli/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/gulp-concat": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.1.tgz", + "integrity": "sha512-a2scActrQrDBpBbR3WUZGyGS1JEPLg5PZJdIa7/Bi3GuKAmPYDK6SFhy/NZq5R8KsKKFvtfR0fakbUCcKGCCjg==", "dev": true, + "license": "MIT", "dependencies": { - "flat-cache": "^3.0.4" + "concat-with-sourcemaps": "^1.0.0", + "through2": "^2.0.0", + "vinyl": "^2.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">= 0.10" } }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "optional": true - }, - "node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "node_modules/gulp-plugin-extras": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/gulp-plugin-extras/-/gulp-plugin-extras-0.2.2.tgz", + "integrity": "sha512-0gssXzTNrrOocYBWN4qOZqd03cz3bxhjxVUPZV9iJdBR0ZZbwMQO/OT8hZChYoc9GjKaA5meaqDr6CjkmKA7BA==", + "license": "MIT", "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "@types/vinyl": "^2.0.9", + "chalk": "^5.3.0", + "easy-transform-stream": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==", + "node_modules/gulp-plugin-extras/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/gulp-postcss": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/gulp-postcss/-/gulp-postcss-10.0.0.tgz", + "integrity": "sha512-z1RF2RJEX/BvFsKN11PXai8lRmihZTiHnlJf7Zu8uHaA/Q7Om4IeN8z1NtMAW5OiLwUY02H0DIFl9tHl0CNSgA==", "dev": true, + "license": "MIT", "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.3.1", - "unpipe": "~1.0.0" + "fancy-log": "^2.0.0", + "plugin-error": "^2.0.1", + "postcss-load-config": "^5.0.0", + "vinyl-sourcemaps-apply": "^0.2.1" }, "engines": { - "node": ">= 0.8" + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.0.0" } }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/gulp-purgecss": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/gulp-purgecss/-/gulp-purgecss-7.0.2.tgz", + "integrity": "sha512-jKn+LJL8cj4zksgAfjRp1EDQUsbcDAd9/GZDeY4GBOUY7sYtn89gsNSXNO00RvIgvp/p0h3J55LuLVNwJK/a2Q==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.0.0" + "glob": "^11.0.0", + "plugin-error": "^2.0.0", + "purgecss": "^7.0.2", + "through2": "^4.0.1", + "vinyl-sourcemaps-apply": "^0.2.1" } }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/find-node-modules": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/find-node-modules/-/find-node-modules-2.1.3.tgz", - "integrity": "sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg==", + "node_modules/gulp-purgecss/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { - "findup-sync": "^4.0.0", - "merge": "^2.1.1" + "balanced-match": "^1.0.0" } }, - "node_modules/find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", - "dev": true - }, - "node_modules/find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "node_modules/gulp-purgecss/node_modules/glob": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.2.tgz", + "integrity": "sha512-YT7U7Vye+t5fZ/QMkBFrTJ7ZQxInIUjwyAjVj84CYXqgBdv30MFUPGnBR6sQaVq6Is15wYJUsnzTuWaGRBhBAQ==", "dev": true, + "license": "ISC", "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^4.0.1", + "minimatch": "^10.0.0", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "20 || >=22" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-up/node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/find-versions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-5.1.0.tgz", - "integrity": "sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==", + "node_modules/gulp-purgecss/node_modules/minimatch": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", "dev": true, + "license": "ISC", "dependencies": { - "semver-regex": "^4.0.5" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=12" + "node": "20 || >=22" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/findup-sync": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz", - "integrity": "sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==", + "node_modules/gulp-purgecss/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, + "license": "MIT", "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^4.0.2", - "resolve-dir": "^1.0.1" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">= 8" + "node": ">= 6" } }, - "node_modules/fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "node_modules/gulp-purgecss/node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "license": "MIT", "dependencies": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" + "readable-stream": "3" } }, - "node_modules/fined/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, + "node_modules/gulp-rename": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-2.1.0.tgz", + "integrity": "sha512-dGuzuH8jQGqCMqC544IEPhs5+O2l+IkdoSZsgd4kY97M1CxQeI3qrmweQBIrxLBbjbe/8uEWK8HHcNBc3OCy4g==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "node_modules/gulp-replace": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/gulp-replace/-/gulp-replace-1.1.4.tgz", + "integrity": "sha512-SVSF7ikuWKhpAW4l4wapAqPPSToJoiNKsbDoUnRrSgwZHH7lH8pbPeQj1aOVYQrbZKhfSVBxVW+Py7vtulRktw==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/vinyl": "^2.0.4", + "istextorbinary": "^3.0.0", + "replacestream": "^4.0.3", + "yargs-parser": ">=5.0.0-security.0" + }, "engines": { - "node": ">= 0.10" + "node": ">=10" } }, - "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, + "node_modules/gulp-sass": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/gulp-sass/-/gulp-sass-6.0.1.tgz", + "integrity": "sha512-4wonidxB8lGPHvahelpGavUBJAuERSl+OIVxPCyQthK4lSJhZ/u3/qjFcyAtnMIXDl6fXTn34H4BXsN7gt54kQ==", + "license": "MIT", "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" + "lodash.clonedeep": "^4.5.0", + "picocolors": "^1.0.0", + "plugin-error": "^1.0.1", + "replace-ext": "^2.0.0", + "strip-ansi": "^6.0.1", + "vinyl-sourcemaps-apply": "^0.2.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=12" } }, - "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/flatten": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", - "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", - "deprecated": "flatten is deprecated in favor of utility frameworks such as lodash.", - "dev": true - }, - "node_modules/flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/fontawesome-subset": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/fontawesome-subset/-/fontawesome-subset-4.4.0.tgz", - "integrity": "sha512-kcK1ELa/Gq4R2+gKxzeFbLl0uzSJBeWsjtZPLLf5mCJEfTY9gt/lAOgW7opGaG1ZaFMa88Qu1ghuRsLUkmobYg==", + "node_modules/gulp-sass/node_modules/plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "license": "MIT", "dependencies": { - "lodash": ">=4.17.21", - "mkdirp": "^2.1.6", - "subset-font": "^2.0.0", - "yaml": "^2.2.1" - }, - "peerDependencies": { - "@fortawesome/fontawesome-free": ">=5.12.0", - "@fortawesome/fontawesome-pro": ">=5.12.0" + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", + "arr-union": "^3.1.0", + "extend-shallow": "^3.0.2" }, - "peerDependenciesMeta": { - "@fortawesome/fontawesome-free": { - "optional": true - }, - "@fortawesome/fontawesome-pro": { - "optional": true - } - } - }, - "node_modules/fontawesome-subset/node_modules/yaml": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", - "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", "engines": { - "node": ">= 14" - } - }, - "node_modules/fontverter": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fontverter/-/fontverter-2.0.0.tgz", - "integrity": "sha512-DFVX5hvXuhi1Jven1tbpebYTCT9XYnvx6/Z+HFUPb7ZRMCW+pj2clU9VMhoTPgWKPhAs7JJDSk3CW1jNUvKCZQ==", - "dependencies": { - "wawoff2": "^2.0.0", - "woff2sfnt-sfnt2woff": "^1.0.0" + "node": ">= 0.10" } }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "node_modules/gulp-uglify": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-3.0.2.tgz", + "integrity": "sha512-gk1dhB74AkV2kzqPMQBLA3jPoIAPd/nlNzP2XMDSG8XZrqnlCiDGAqC+rZOumzFvB5zOphlFh6yr3lgcAb/OOg==", + "dev": true, + "license": "MIT", "dependencies": { - "is-callable": "^1.1.3" + "array-each": "^1.0.1", + "extend-shallow": "^3.0.2", + "gulplog": "^1.0.0", + "has-gulplog": "^0.1.0", + "isobject": "^3.0.1", + "make-error-cause": "^1.1.1", + "safe-buffer": "^5.1.2", + "through2": "^2.0.0", + "uglify-js": "^3.0.5", + "vinyl-sourcemaps-apply": "^0.2.0" } }, - "node_modules/for-in": { + "node_modules/gulp-uglify/node_modules/glogg": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", + "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "sparkles": "^1.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10" } }, - "node_modules/for-own": { + "node_modules/gulp-uglify/node_modules/gulplog": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==", + "dev": true, + "license": "MIT", "dependencies": { - "for-in": "^1.0.1" + "glogg": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10" } }, - "node_modules/fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "node_modules/gulp-uglify/node_modules/sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "dev": true, + "license": "MIT", "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://www.patreon.com/infusion" + "node": ">= 0.10" } }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "node_modules/gulplog": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-2.2.0.tgz", + "integrity": "sha512-V2FaKiOhpR3DRXZuYdRLn/qiY0yI5XmqbTKrYbdemJ+xOh2d2MOweI/XFgMzd/9+1twdvMwllnZbWZNJ+BOm4A==", + "license": "MIT", "dependencies": { - "map-cache": "^0.2.2" + "glogg": "^2.2.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 10.13.0" } }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, "engines": { - "node": ">= 0.6" + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" } }, - "node_modules/from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } + "node_modules/harfbuzzjs": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/harfbuzzjs/-/harfbuzzjs-0.4.7.tgz", + "integrity": "sha512-fGrMB7gk+x1ye++cN+OgDnHLLz8wg6aW26VPb8Q14V6XeZKGC0BCALe+ZEnwASU/b+YprBnRTELMJAlwy9jrLw==", + "license": "MIT" }, - "node_modules/fs-extra": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", - "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" }, + "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==", + "license": "MIT", "engines": { - "node": ">=14.14" + "node": ">=8" } }, - "node_modules/fs-mkdirp-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", - "integrity": "sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==", + "node_modules/has-gulplog": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", + "integrity": "sha512-+F4GzLjwHNNDEAJW2DC1xXfEoPkRDmUdJ7CBYw4MpqtDwOnqdImJl7GWlpqx+Wko6//J8uKTnIe4wZSv7yCqmw==", + "dev": true, + "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.11", - "through2": "^2.0.3" + "sparkles": "^1.0.0" }, "engines": { "node": ">= 0.10" } }, - "node_modules/fs-mkdirp-stream/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "node_modules/has-gulplog/node_modules/sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1" + "es-define-property": "^1.0.0" }, - "engines": { - "node": ">= 4.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" + "dunder-proto": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -7320,727 +8074,700 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" - }, - "node_modules/get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", "has-symbols": "^1.0.3" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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==", + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "function-bind": "^1.1.2" }, "engines": { "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "node_modules/highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">=0.10.0" + "node": "*" } }, - "node_modules/git-log-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.0.tgz", - "integrity": "sha512-rnCVNfkTL8tdNryFuaY0fYiBWEBcgF748O6ZI61rslBvr2o7U65c2/6npCRqH40vuAhtgtDiqLTJjBVdrejCzA==", - "dev": true, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "license": "MIT", "dependencies": { - "argv-formatter": "~1.0.0", - "spawn-error-forwarder": "~1.0.0", - "split2": "~1.0.0", - "stream-combiner2": "~1.1.1", - "through2": "~2.0.0", - "traverse": "~0.6.6" + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/git-log-parser/node_modules/split2": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", - "integrity": "sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg==", + "node_modules/hook-std": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-3.0.0.tgz", + "integrity": "sha512-jHRQzjSDzMtFy34AGj1DN+vq54WVuhSvKgrHf0OMiFQTwDD4L/qqofVEWjLOBMTn5+lCD3fPg32W9yOfnEJTTw==", "dev": true, - "dependencies": { - "through2": "~2.0.0" + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/git-log-parser/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", "dev": true, + "license": "ISC", "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "lru-cache": "^10.0.1" }, "engines": { - "node": "*" + "node": "^16.14.0 || >=18.0.0" } }, - "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==", + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, + "license": "MIT", "dependencies": { - "is-glob": "^4.0.3" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, "engines": { - "node": ">=10.13.0" + "node": ">= 0.8" } }, - "node_modules/glob-stream": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", - "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==", - "dependencies": { - "extend": "^3.0.0", - "glob": "^7.1.1", - "glob-parent": "^3.1.0", - "is-negated-glob": "^1.0.0", - "ordered-read-streams": "^1.0.0", - "pumpify": "^1.3.5", - "readable-stream": "^2.1.5", - "remove-trailing-separator": "^1.0.1", - "to-absolute-glob": "^2.0.0", - "unique-stream": "^2.0.2" - }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">= 0.8" } }, - "node_modules/glob-stream/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "license": "MIT", "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" } }, - "node_modules/glob-stream/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "license": "MIT", "dependencies": { - "is-extglob": "^2.1.0" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">=0.10.0" + "node": ">= 14" } }, - "node_modules/glob-watcher": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", - "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", "dependencies": { - "anymatch": "^2.0.0", - "async-done": "^1.2.0", - "chokidar": "^2.0.0", - "is-negated-glob": "^1.0.0", - "just-debounce": "^1.0.0", - "normalize-path": "^3.0.0", - "object.defaults": "^1.1.0" + "agent-base": "^7.1.2", + "debug": "4" }, "engines": { - "node": ">= 0.10" + "node": ">= 14" } }, - "node_modules/global-dirs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==", + "node_modules/human-signals": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", + "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", "dev": true, - "optional": true, - "dependencies": { - "ini": "^1.3.4" - }, + "license": "Apache-2.0", "engines": { - "node": ">=4" + "node": ">=18.18.0" } }, - "node_modules/global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "license": "MIT", "dependencies": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", - "dependencies": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 4" } }, - "node_modules/global-prefix/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" + "node_modules/immutable": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", + "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/globals": { - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, + "license": "MIT", "dependencies": { - "type-fest": "^0.20.2" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dependencies": { - "define-properties": "^1.1.3" - }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4" } }, - "node_modules/globby": { - "version": "13.1.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.4.tgz", - "integrity": "sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==", + "node_modules/import-from-esm": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-from-esm/-/import-from-esm-2.0.0.tgz", + "integrity": "sha512-YVt14UZCgsX1vZQ3gKjkWVdBdHQ6eu3MPU1TBgL1H5orXe2+jWD006WCPPtOuwlQm10NuzOW5WawiF1Q9veW8g==", + "dev": true, + "license": "MIT", "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" + "debug": "^4.3.4", + "import-meta-resolve": "^4.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, + "node": ">=18.20" + } + }, + "node_modules/import-meta-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", + "dev": true, + "license": "MIT", "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/glogg": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", - "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", - "dependencies": { - "sparkles": "^1.0.0" - }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.10" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.8.19" } }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "node_modules/gulp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", - "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", - "dependencies": { - "glob-watcher": "^5.0.3", - "gulp-cli": "^2.2.0", - "undertaker": "^1.2.1", - "vinyl-fs": "^3.0.0" - }, - "bin": { - "gulp": "bin/gulp.js" - }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">=8" } }, - "node_modules/gulp-autoprefixer": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/gulp-autoprefixer/-/gulp-autoprefixer-8.0.0.tgz", - "integrity": "sha512-sVR++PIaXpa81p52dmmA/jt50bw0egmylK5mjagfgOJ8uLDGaF9tHyzvetkY9Uo0gBZUS5sVqN3kX/GlUKOyog==", - "dependencies": { - "autoprefixer": "^10.2.6", - "fancy-log": "^1.3.3", - "plugin-error": "^1.0.1", - "postcss": "^8.3.0", - "through2": "^4.0.2", - "vinyl-sourcemaps-apply": "^0.2.1" - }, + "node_modules/index-to-position": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-1.1.0.tgz", + "integrity": "sha512-XPdx9Dq4t9Qk1mTMbWONJqU7boCoumEH7fRET37HX5+khDUl3J2W6PdALxhILYlIYx2amlwYcRPp28p0tSiojg==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=12" - }, - "peerDependencies": { - "gulp": ">=4" + "node": ">=18" }, - "peerDependenciesMeta": { - "gulp": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gulp-cli": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", - "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", + "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==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", "dependencies": { - "ansi-colors": "^1.0.1", - "archy": "^1.0.0", - "array-sort": "^1.0.0", - "color-support": "^1.1.3", - "concat-stream": "^1.6.0", - "copy-props": "^2.0.1", - "fancy-log": "^1.3.2", - "gulplog": "^1.0.0", - "interpret": "^1.4.0", - "isobject": "^3.0.1", - "liftoff": "^3.1.0", - "matchdep": "^2.0.0", - "mute-stdout": "^1.0.0", - "pretty-hrtime": "^1.0.0", - "replace-homedir": "^1.0.0", - "semver-greatest-satisfied-range": "^1.1.0", - "v8flags": "^3.2.0", - "yargs": "^7.1.0" - }, - "bin": { - "gulp": "bin/gulp.js" - }, + "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==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", + "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", + "dev": true, + "license": "ISC", + "optional": true, "engines": { - "node": ">= 0.10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/gulp-concat": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.1.tgz", - "integrity": "sha512-a2scActrQrDBpBbR3WUZGyGS1JEPLg5PZJdIa7/Bi3GuKAmPYDK6SFhy/NZq5R8KsKKFvtfR0fakbUCcKGCCjg==", + "node_modules/inquirer": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.5.tgz", + "integrity": "sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==", "dev": true, + "license": "MIT", "dependencies": { - "concat-with-sourcemaps": "^1.0.0", - "through2": "^2.0.0", - "vinyl": "^2.0.0" + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">=12.0.0" } }, - "node_modules/gulp-concat/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "node_modules/inquirer/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, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "license": "MIT", + "engines": { + "node": ">=0.8.0" } }, - "node_modules/gulp-cssnano": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/gulp-cssnano/-/gulp-cssnano-2.1.3.tgz", - "integrity": "sha512-r8qdX5pTXsBb/IRm9loE8Ijz8UiPW/URMC/bKJe4FPNHRaz4aEx8Bev03L0FYHd/7BSGu/ebmfumAkpGuTdenA==", + "node_modules/inquirer/node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, + "license": "MIT", "dependencies": { - "buffer-from": "^1.0.0", - "cssnano": "^3.0.0", - "object-assign": "^4.0.1", - "plugin-error": "^1.0.1", - "vinyl-sourcemaps-apply": "^0.2.1" + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gulp-purgecss": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/gulp-purgecss/-/gulp-purgecss-5.0.0.tgz", - "integrity": "sha512-/s4bEI1JhwhCDrYu665rfJ/O9uMfAked3k6pQJlDC86JwJAUMXiMxfex6fV0WP36kRb+9ZTLVb6RC/DgfbS4/g==", - "dev": true, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "license": "MIT", "dependencies": { - "glob": "^8.0.3", - "plugin-error": "^2.0.0", - "purgecss": "^5.0.0", - "through2": "^4.0.1" + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/gulp-purgecss/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "license": "MIT", + "engines": { + "node": ">=10.13.0" } }, - "node_modules/gulp-purgecss/node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "node_modules/into-stream": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-7.0.0.tgz", + "integrity": "sha512-2dYz766i9HprMBasCMvHMuazJ7u4WzhJwo5kb3iPSiW/iRYV6uPari3zHoqZlnuaR7V1bEiNMxikhp37rdBXbw==", "dev": true, + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "from2": "^2.3.0", + "p-is-promise": "^3.0.0" }, "engines": { "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gulp-purgecss/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, + "node_modules/is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/gulp-purgecss/node_modules/plugin-error": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-2.0.0.tgz", - "integrity": "sha512-o4bwIOmuFwUg2MU6xt7plGEQY3YyENx6kvwaFZBrUpamA91FdS9w3U+pU0y4OuDoBQe+jf3RLGSfQebSRBEVsQ==", - "dev": true, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "license": "MIT", "dependencies": { - "ansi-colors": "^1.0.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { - "node": ">=10.13.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gulp-rename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-2.0.0.tgz", - "integrity": "sha512-97Vba4KBzbYmR5VBs9mWmK+HwIf5mj+/zioxfZhOKeXtx5ZjBk57KFlePf5nxq9QsTtFl0ejnHE3zTC9MHXqyQ==", - "dev": true, + "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==", + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gulp-replace": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/gulp-replace/-/gulp-replace-1.1.4.tgz", - "integrity": "sha512-SVSF7ikuWKhpAW4l4wapAqPPSToJoiNKsbDoUnRrSgwZHH7lH8pbPeQj1aOVYQrbZKhfSVBxVW+Py7vtulRktw==", + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "license": "MIT", "dependencies": { - "@types/node": "*", - "@types/vinyl": "^2.0.4", - "istextorbinary": "^3.0.0", - "replacestream": "^4.0.3", - "yargs-parser": ">=5.0.0-security.0" + "has-bigints": "^1.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gulp-sass": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/gulp-sass/-/gulp-sass-5.1.0.tgz", - "integrity": "sha512-7VT0uaF+VZCmkNBglfe1b34bxn/AfcssquLKVDYnCDJ3xNBaW7cUuI3p3BQmoKcoKFrs9jdzUxyb+u+NGfL4OQ==", + "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==", + "license": "MIT", "dependencies": { - "lodash.clonedeep": "^4.5.0", - "picocolors": "^1.0.0", - "plugin-error": "^1.0.1", - "replace-ext": "^2.0.0", - "strip-ansi": "^6.0.1", - "vinyl-sourcemaps-apply": "^0.2.1" + "binary-extensions": "^2.0.0" }, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/gulp-uglify": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-3.0.2.tgz", - "integrity": "sha512-gk1dhB74AkV2kzqPMQBLA3jPoIAPd/nlNzP2XMDSG8XZrqnlCiDGAqC+rZOumzFvB5zOphlFh6yr3lgcAb/OOg==", - "dev": true, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "license": "MIT", "dependencies": { - "array-each": "^1.0.1", - "extend-shallow": "^3.0.2", - "gulplog": "^1.0.0", - "has-gulplog": "^0.1.0", - "isobject": "^3.0.1", - "make-error-cause": "^1.1.1", - "safe-buffer": "^5.1.2", - "through2": "^2.0.0", - "uglify-js": "^3.0.5", - "vinyl-sourcemaps-apply": "^0.2.0" - } - }, - "node_modules/gulp-uglify/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gulp-uglify/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gulp-uglify/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", "dependencies": { - "isobject": "^3.0.1" + "hasown": "^2.0.2" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-uglify/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==", + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "license": "MIT", "dependencies": { - "glogg": "^1.0.0" + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" }, "engines": { - "node": ">= 0.10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/handlebars": { - "version": "4.7.8", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", - "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", - "dev": true, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "license": "MIT", "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": ">=0.4.7" + "node": ">= 0.4" }, - "optionalDependencies": { - "uglify-js": "^3.1.4" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/harfbuzzjs": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/harfbuzzjs/-/harfbuzzjs-0.3.2.tgz", - "integrity": "sha512-IGgu7///nEOWAjWT8bYyC4uPP8FEFG7EBW6IghJT5605TdpSopFGJPQpKnyWXovXh4fSNqEigEqyNpWw0QdDyg==" - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "license": "MIT", "dependencies": { - "function-bind": "^1.1.1" + "is-plain-object": "^2.0.4" }, "engines": { - "node": ">= 0.4.0" + "node": ">=0.10.0" } }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", - "dev": true, + "node_modules/is-extendable/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "isobject": "^3.0.1" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/has-ansi/node_modules/ansi-regex": { + "node_modules/is-extglob": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", "engines": { "node": ">=0.10.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==", + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-flag": { + "node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/has-gulplog": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", - "integrity": "sha512-+F4GzLjwHNNDEAJW2DC1xXfEoPkRDmUdJ7CBYw4MpqtDwOnqdImJl7GWlpqx+Wko6//J8uKTnIe4wZSv7yCqmw==", - "dev": true, + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "license": "MIT", "dependencies": { - "sparkles": "^1.0.0" + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "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==", + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.1.1" + "is-extglob": "^2.1.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "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==", + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -8048,13 +8775,26 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-tostringtag": { + "node_modules/is-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dependencies": { - "has-symbols": "^1.0.2" - }, + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "license": "MIT" + }, + "node_modules/is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -8062,58 +8802,56 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, + "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==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=0.12.0" } }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "node_modules/is-number-like": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", + "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", + "dev": true, + "license": "ISC", "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" + "lodash.isfinite": "^3.3.2" } }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dependencies": { - "parse-passwd": "^1.0.0" - }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/hook-std": { + "node_modules/is-path-cwd": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-3.0.0.tgz", - "integrity": "sha512-jHRQzjSDzMtFy34AGj1DN+vq54WVuhSvKgrHf0OMiFQTwDD4L/qqofVEWjLOBMTn5+lCD3fPg32W9yOfnEJTTw==", - "dev": true, + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-3.0.0.tgz", + "integrity": "sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA==", + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -8121,6093 +8859,1676 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/hosted-git-info": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", - "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", - "dev": true, - "dependencies": { - "lru-cache": "^10.0.1" - }, + "node_modules/is-path-inside": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", + "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", + "license": "MIT", "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", - "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", "dev": true, + "license": "MIT", "engines": { - "node": "14 || >=16.14" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/html-comment-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", - "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", - "dev": true - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "license": "MIT", "engines": { - "node": ">= 0.8" + "node": ">=0.10.0" } }, - "node_modules/http-errors/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "engines": { - "node": ">= 0.8" + "node_modules/is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "*" } }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "license": "MIT", "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { - "node": ">=8.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/http-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", - "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", - "dev": true, + "node_modules/is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "license": "MIT", "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" + "is-unc-path": "^1.0.0" }, "engines": { - "node": ">= 14" + "node": ">=0.10.0" } }, - "node_modules/https-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.0.tgz", - "integrity": "sha512-0euwPCRyAPSgGdzD1IVN9nJYHtBhJwb6XPfbpQcYbPCwrBidX6GzxmchnaF4sfF/jPb74Ojx5g4yTg3sixlyPw==", - "dev": true, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "license": "MIT", "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" + "call-bound": "^1.0.3" }, "engines": { - "node": ">= 14" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", "dev": true, + "license": "MIT", "engines": { - "node": ">=10.17.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, "engines": { - "node": ">= 4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==" - }, - "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, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "license": "MIT", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "which-typed-array": "^1.1.16" }, "engines": { - "node": ">=6" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, + "node_modules/is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "license": "MIT", + "dependencies": { + "unc-path-regex": "^0.1.2" + }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/import-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-4.0.0.tgz", - "integrity": "sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==", + "node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=12.2" + "node": ">=18" }, "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==", + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", "dev": true, + "license": "MIT" + }, + "node_modules/is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==", + "license": "MIT", "engines": { - "node": ">=0.8.19" + "node": ">=0.10.0" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==", - "dev": true - }, - "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==", + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "license": "MIT", "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/inherits": { + "node_modules/is-weakset": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "node_modules/inquirer": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", - "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", - "dev": true, + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "license": "MIT", "dependencies": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.12", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { - "node": ">=6.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/inquirer/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/inquirer/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">=0.10.0" } }, - "node_modules/into-stream": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-7.0.0.tgz", - "integrity": "sha512-2dYz766i9HprMBasCMvHMuazJ7u4WzhJwo5kb3iPSiW/iRYV6uPari3zHoqZlnuaR7V1bEiNMxikhp37rdBXbw==", + "node_modules/issue-parser": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-7.0.1.tgz", + "integrity": "sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg==", "dev": true, + "license": "MIT", "dependencies": { - "from2": "^2.3.0", - "p-is-promise": "^3.0.0" - }, - "engines": { - "node": ">=12" + "lodash.capitalize": "^4.2.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.uniqby": "^4.7.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", "engines": { - "node": ">=0.10.0" + "node": "^18.17 || >=20.6.1" } }, - "node_modules/is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "node_modules/istextorbinary": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-3.3.0.tgz", + "integrity": "sha512-Tvq1W6NAcZeJ8op+Hq7tdZ434rqnMx4CCZ7H0ff83uEloDvVbqAwaMTZcafKGJT0VHkYzuXUiCY4hlXQg6WfoQ==", + "license": "MIT", "dependencies": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" + "binaryextensions": "^2.2.0", + "textextensions": "^3.2.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://bevry.me/fund" } }, - "node_modules/is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==", + "node_modules/jackspeak": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", + "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "license": "BlueOak-1.0.0", "dependencies": { - "kind-of": "^3.0.2" + "@isaacs/cliui": "^8.0.2" }, "engines": { - "node": ">=0.10.0" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dependencies": { - "is-buffer": "^1.1.5" - }, + "node_modules/java-properties": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", + "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.6.0" } }, - "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node_modules/jiti": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", + "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", + "dev": true, + "license": "MIT", + "optional": true, + "bin": { + "jiti": "lib/jiti-cli.mjs" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "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, + "license": "MIT", "dependencies": { - "has-bigints": "^1.0.1" + "argparse": "^2.0.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", - "dependencies": { - "binary-extensions": "^1.0.0" + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "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==", + "license": "MIT" }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + "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, + "license": "MIT" }, - "node_modules/is-builtin-module": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", - "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", - "dependencies": { - "builtin-modules": "^3.3.0" + "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, + "license": "MIT" + }, + "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, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "peer": true, + "bin": { + "json5": "lib/cli.js" }, "engines": { "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "engines": { - "node": ">= 0.4" + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "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==", + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "json-buffer": "3.0.1" } }, - "node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dependencies": { - "kind-of": "^3.0.2" - }, + "node_modules/last-run": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-2.0.0.tgz", + "integrity": "sha512-j+y6WhTLN4Itnf9j5ZQos1BGPCS8DAwmgMroR3OzfxAsBxam0hMw7J8M3KqZl0pLQJ1jNnwIexg5DYpC/ctwEQ==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 10.13.0" } }, - "node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "node_modules/lead": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-4.0.0.tgz", + "integrity": "sha512-DpMa59o5uGUWWjruMp71e6knmwKU3jRBBn1kjuLWN9EeIOxNeSAwvHf03WIl8g/ZMR2oSQC9ej3yeLBwdDc/pg==", + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.8.0" } }, - "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==", + "node_modules/liftoff": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-5.0.1.tgz", + "integrity": "sha512-wwLXMbuxSF8gMvubFcFRp56lkFV69twvbU5vDPbaw+Q+/rF8j0HKjGbIdlSi+LuJm9jf7k9PB+nTxnsLMPcv2Q==", + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "extend": "^3.0.2", + "findup-sync": "^5.0.0", + "fined": "^2.0.0", + "flagged-respawn": "^2.0.0", + "is-plain-object": "^5.0.0", + "rechoir": "^0.8.0", + "resolve": "^1.20.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=10.13.0" } }, - "node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "node_modules/liftoff/node_modules/findup-sync": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz", + "integrity": "sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==", + "license": "MIT", "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "detect-file": "^1.0.0", + "is-glob": "^4.0.3", + "micromatch": "^4.0.4", + "resolve-dir": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 10.13.0" } }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==" - }, - "node_modules/is-negated-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", - "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==", - "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==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number-like": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", - "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", - "dev": true, - "dependencies": { - "lodash.isfinite": "^3.3.2" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-path-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-3.0.0.tgz", - "integrity": "sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA==", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-path-inside": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", - "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-reference": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", - "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", - "dependencies": { - "@types/estree": "*" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "dependencies": { - "is-unc-path": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-svg": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", - "integrity": "sha512-Ya1giYJUkcL/94quj0+XGcmts6cETPBW1MiFz1ReJrnDJ680F52qpAEGAEGU0nq96FRGIGPx6Yo1CyPXcOoyGw==", - "dev": true, - "dependencies": { - "html-comment-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-text-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", - "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", - "dev": true, - "dependencies": { - "text-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "dependencies": { - "unc-path-regex": "^0.1.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-unicode-supported": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", - "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==" - }, - "node_modules/is-valid-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", - "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/issue-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-6.0.0.tgz", - "integrity": "sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==", - "dev": true, - "dependencies": { - "lodash.capitalize": "^4.2.1", - "lodash.escaperegexp": "^4.1.2", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.uniqby": "^4.7.0" - }, - "engines": { - "node": ">=10.13" - } - }, - "node_modules/istextorbinary": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-3.3.0.tgz", - "integrity": "sha512-Tvq1W6NAcZeJ8op+Hq7tdZ434rqnMx4CCZ7H0ff83uEloDvVbqAwaMTZcafKGJT0VHkYzuXUiCY4hlXQg6WfoQ==", - "dependencies": { - "binaryextensions": "^2.2.0", - "textextensions": "^3.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, - "node_modules/java-properties": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", - "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/js-base64": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", - "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", - "dev": true - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "peer": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "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==" - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "optional": 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==" - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "peer": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", - "dev": true, - "engines": [ - "node >= 0.2.0" - ] - }, - "node_modules/JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dev": true, - "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/just-debounce": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.1.0.tgz", - "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==" - }, - "node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/last-run": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", - "integrity": "sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ==", - "dependencies": { - "default-resolution": "^2.0.0", - "es6-weak-map": "^2.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/lazystream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", - "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", - "dependencies": { - "readable-stream": "^2.0.5" - }, - "engines": { - "node": ">= 0.6.3" - } - }, - "node_modules/lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", - "dependencies": { - "invert-kv": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lead": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", - "integrity": "sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==", - "dependencies": { - "flush-write-stream": "^1.0.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "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/liftoff": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", - "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", - "dependencies": { - "extend": "^3.0.0", - "findup-sync": "^3.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/liftoff/node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/liftoff/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/liftoff/node_modules/findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", - "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/liftoff/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/liftoff/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/liftoff/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/liftoff/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/liftoff/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/liftoff/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/liftoff/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/limiter": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", - "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==", - "dev": true - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/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==", - "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/load-json-file/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==", - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/localtunnel": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-2.0.2.tgz", - "integrity": "sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug==", - "dev": true, - "dependencies": { - "axios": "0.21.4", - "debug": "4.3.2", - "openurl": "1.1.1", - "yargs": "17.1.1" - }, - "bin": { - "lt": "bin/lt.js" - }, - "engines": { - "node": ">=8.3.0" - } - }, - "node_modules/localtunnel/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/localtunnel/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/localtunnel/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/localtunnel/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/localtunnel/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/localtunnel/node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/localtunnel/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/localtunnel/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/localtunnel/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/localtunnel/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/localtunnel/node_modules/yargs": { - "version": "17.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz", - "integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/localtunnel/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", - "dev": true, - "dependencies": { - "p-locate": "^6.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", - "dev": true - }, - "node_modules/lodash.capitalize": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", - "integrity": "sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==", - "dev": true - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" - }, - "node_modules/lodash.escaperegexp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", - "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==", - "dev": true - }, - "node_modules/lodash.isfinite": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", - "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==", - "dev": true - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "dev": true - }, - "node_modules/lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", - "dev": true - }, - "node_modules/lodash.map": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", - "integrity": "sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==", - "dev": true - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "dev": true - }, - "node_modules/lodash.uniqby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", - "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", - "dev": true - }, - "node_modules/longest": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-2.0.1.tgz", - "integrity": "sha512-Ajzxb8CM6WAnFjgiloPsI3bF+WCxcvhdIG3KNA2KN962+tdBsHcuQ4k4qX/EcS/2CRkcc0iAkR956Nib6aXU/Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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.27.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", - "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.13" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/make-error-cause": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/make-error-cause/-/make-error-cause-1.2.2.tgz", - "integrity": "sha512-4TO2Y3HkBnis4c0dxhAgD/jprySYLACf7nwN6V0HAHDx59g12WlRpUmFy1bRHamjGUEEBrEvCq6SUpsEE2lhUg==", - "dev": true, - "dependencies": { - "make-error": "^1.2.0" - } - }, - "node_modules/make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/make-iterator/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/marked": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.2.12.tgz", - "integrity": "sha512-yr8hSKa3Fv4D3jdZmtMMPghgVt6TWbk86WQaWhDloQjRSQhMMYCAro7jP7VDJrjjdV8pxVxMssXS8B8Y5DZ5aw==", - "dev": true, - "peer": true, - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 12" - } - }, - "node_modules/marked-terminal": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-5.1.1.tgz", - "integrity": "sha512-+cKTOx9P4l7HwINYhzbrBSyzgxO2HaHKGZGuB1orZsMIgXYaJyfidT81VXRdpelW/PcHEWxywscePVgI/oUF6g==", - "dev": true, - "dependencies": { - "ansi-escapes": "^5.0.0", - "cardinal": "^2.1.1", - "chalk": "^5.0.0", - "cli-table3": "^0.6.1", - "node-emoji": "^1.11.0", - "supports-hyperlinks": "^2.2.0" - }, - "engines": { - "node": ">=14.13.1 || >=16.0.0" - }, - "peerDependencies": { - "marked": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0" - } - }, - "node_modules/marked-terminal/node_modules/ansi-escapes": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", - "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==", - "dev": true, - "dependencies": { - "type-fest": "^1.0.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/marked-terminal/node_modules/chalk": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz", - "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==", - "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/marked-terminal/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/matchdep": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", - "integrity": "sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==", - "dependencies": { - "findup-sync": "^2.0.0", - "micromatch": "^3.0.4", - "resolve": "^1.4.0", - "stack-trace": "0.0.10" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/matchdep/node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==", - "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/matchdep/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/math-expression-evaluator": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.4.0.tgz", - "integrity": "sha512-4vRUvPyxdO8cWULGTh9dZWL2tZK6LDBvj+OGHBER7poH9Qdt7kXEoj20wiz4lQUbUXQZFjPbe5mVDo9nutizCw==", - "dev": true - }, - "node_modules/memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/meow": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", - "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", - "dev": true, - "engines": { - "node": ">=16.10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/merge": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz", - "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==", - "dev": true - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "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==", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/micromatch/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/micromatch/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/micromatch/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/micromatch/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "node_modules/mitt": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", - "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", - "dev": true - }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mixin-deep/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mixin-deep/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mkdirp": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.6.tgz", - "integrity": "sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==", - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "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/mute-stdout": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", - "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", - "dev": true - }, - "node_modules/nan": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.16.0.tgz", - "integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==", - "optional": true - }, - "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/nerf-dart": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", - "integrity": "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==", - "dev": true - }, - "node_modules/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - }, - "node_modules/node-emoji": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", - "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", - "dev": true, - "dependencies": { - "lodash": "^4.17.21" - } - }, - "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" - }, - "node_modules/normalize-package-data": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", - "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", - "dev": true, - "dependencies": { - "hosted-git-info": "^7.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", - "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", - "dev": true, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/now-and-later": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", - "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", - "dependencies": { - "once": "^1.3.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/npm": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/npm/-/npm-10.1.0.tgz", - "integrity": "sha512-pZ2xybXzNGbJFZEKNbPoEXsE38Xou9VTnxxBk+B3pz0ndsGCs7iWHoUCPSsISU2hjmkWfDkJo3bYKE8RDOg4eg==", - "bundleDependencies": [ - "@isaacs/string-locale-compare", - "@npmcli/arborist", - "@npmcli/config", - "@npmcli/fs", - "@npmcli/map-workspaces", - "@npmcli/package-json", - "@npmcli/promise-spawn", - "@npmcli/run-script", - "@sigstore/tuf", - "abbrev", - "archy", - "cacache", - "chalk", - "ci-info", - "cli-columns", - "cli-table3", - "columnify", - "fastest-levenshtein", - "fs-minipass", - "glob", - "graceful-fs", - "hosted-git-info", - "ini", - "init-package-json", - "is-cidr", - "json-parse-even-better-errors", - "libnpmaccess", - "libnpmdiff", - "libnpmexec", - "libnpmfund", - "libnpmhook", - "libnpmorg", - "libnpmpack", - "libnpmpublish", - "libnpmsearch", - "libnpmteam", - "libnpmversion", - "make-fetch-happen", - "minimatch", - "minipass", - "minipass-pipeline", - "ms", - "node-gyp", - "nopt", - "npm-audit-report", - "npm-install-checks", - "npm-package-arg", - "npm-pick-manifest", - "npm-profile", - "npm-registry-fetch", - "npm-user-validate", - "npmlog", - "p-map", - "pacote", - "parse-conflict-json", - "proc-log", - "qrcode-terminal", - "read", - "semver", - "ssri", - "supports-color", - "tar", - "text-table", - "tiny-relative-date", - "treeverse", - "validate-npm-package-name", - "which", - "write-file-atomic" - ], - "dev": true, - "dependencies": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^7.1.0", - "@npmcli/config": "^7.2.0", - "@npmcli/fs": "^3.1.0", - "@npmcli/map-workspaces": "^3.0.4", - "@npmcli/package-json": "^5.0.0", - "@npmcli/promise-spawn": "^7.0.0", - "@npmcli/run-script": "^7.0.1", - "@sigstore/tuf": "^2.1.0", - "abbrev": "^2.0.0", - "archy": "~1.0.0", - "cacache": "^18.0.0", - "chalk": "^5.3.0", - "ci-info": "^3.8.0", - "cli-columns": "^4.0.0", - "cli-table3": "^0.6.3", - "columnify": "^1.6.0", - "fastest-levenshtein": "^1.0.16", - "fs-minipass": "^3.0.3", - "glob": "^10.3.3", - "graceful-fs": "^4.2.11", - "hosted-git-info": "^7.0.0", - "ini": "^4.1.1", - "init-package-json": "^6.0.0", - "is-cidr": "^4.0.2", - "json-parse-even-better-errors": "^3.0.0", - "libnpmaccess": "^8.0.0", - "libnpmdiff": "^6.0.1", - "libnpmexec": "^7.0.1", - "libnpmfund": "^4.1.1", - "libnpmhook": "^10.0.0", - "libnpmorg": "^6.0.0", - "libnpmpack": "^6.0.1", - "libnpmpublish": "^9.0.0", - "libnpmsearch": "^7.0.0", - "libnpmteam": "^6.0.0", - "libnpmversion": "^5.0.0", - "make-fetch-happen": "^13.0.0", - "minimatch": "^9.0.3", - "minipass": "^7.0.3", - "minipass-pipeline": "^1.2.4", - "ms": "^2.1.2", - "node-gyp": "^9.4.0", - "nopt": "^7.2.0", - "npm-audit-report": "^5.0.0", - "npm-install-checks": "^6.2.0", - "npm-package-arg": "^11.0.0", - "npm-pick-manifest": "^9.0.0", - "npm-profile": "^9.0.0", - "npm-registry-fetch": "^16.0.0", - "npm-user-validate": "^2.0.0", - "npmlog": "^7.0.1", - "p-map": "^4.0.0", - "pacote": "^17.0.4", - "parse-conflict-json": "^3.0.1", - "proc-log": "^3.0.0", - "qrcode-terminal": "^0.12.0", - "read": "^2.1.0", - "semver": "^7.5.4", - "ssri": "^10.0.5", - "supports-color": "^9.4.0", - "tar": "^6.1.15", - "text-table": "~0.2.0", - "tiny-relative-date": "^1.3.0", - "treeverse": "^3.0.0", - "validate-npm-package-name": "^5.0.0", - "which": "^4.0.0", - "write-file-atomic": "^5.0.1" - }, - "bin": { - "npm": "bin/npm-cli.js", - "npx": "bin/npx-cli.js" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "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==", - "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/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "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/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - }, - "node_modules/npm-run-all/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/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==", - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/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==", - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/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==", - "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - }, - "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==", - "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==", - "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==", - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/@colors/colors": { - "version": "1.5.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/npm/node_modules/@isaacs/cliui": { - "version": "8.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm/node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/npm/node_modules/@isaacs/string-locale-compare": { - "version": "1.1.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/@npmcli/agent": { - "version": "2.1.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.1", - "lru-cache": "^10.0.1", - "socks-proxy-agent": "^8.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/agent/node_modules/agent-base": { - "version": "7.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/npm/node_modules/@npmcli/agent/node_modules/http-proxy-agent": { - "version": "7.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/npm/node_modules/@npmcli/agent/node_modules/https-proxy-agent": { - "version": "7.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/npm/node_modules/@npmcli/agent/node_modules/socks-proxy-agent": { - "version": "8.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.0.1", - "debug": "^4.3.4", - "socks": "^2.7.1" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/npm/node_modules/@npmcli/arborist": { - "version": "7.1.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/fs": "^3.1.0", - "@npmcli/installed-package-contents": "^2.0.2", - "@npmcli/map-workspaces": "^3.0.2", - "@npmcli/metavuln-calculator": "^7.0.0", - "@npmcli/name-from-folder": "^2.0.0", - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/package-json": "^5.0.0", - "@npmcli/query": "^3.0.0", - "@npmcli/run-script": "^7.0.1", - "bin-links": "^4.0.1", - "cacache": "^18.0.0", - "common-ancestor-path": "^1.0.1", - "hosted-git-info": "^7.0.0", - "json-parse-even-better-errors": "^3.0.0", - "json-stringify-nice": "^1.1.4", - "minimatch": "^9.0.0", - "nopt": "^7.0.0", - "npm-install-checks": "^6.2.0", - "npm-package-arg": "^11.0.0", - "npm-pick-manifest": "^9.0.0", - "npm-registry-fetch": "^16.0.0", - "npmlog": "^7.0.1", - "pacote": "^17.0.4", - "parse-conflict-json": "^3.0.0", - "proc-log": "^3.0.0", - "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^1.0.2", - "read-package-json-fast": "^3.0.2", - "semver": "^7.3.7", - "ssri": "^10.0.5", - "treeverse": "^3.0.0", - "walk-up-path": "^3.0.1" - }, - "bin": { - "arborist": "bin/index.js" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/config": { - "version": "7.2.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/map-workspaces": "^3.0.2", - "ci-info": "^3.8.0", - "ini": "^4.1.0", - "nopt": "^7.0.0", - "proc-log": "^3.0.0", - "read-package-json-fast": "^3.0.2", - "semver": "^7.3.5", - "walk-up-path": "^3.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/disparity-colors": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "ansi-styles": "^4.3.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/fs": { - "version": "3.1.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/git": { - "version": "5.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/promise-spawn": "^7.0.0", - "lru-cache": "^10.0.1", - "npm-pick-manifest": "^9.0.0", - "proc-log": "^3.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^4.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/installed-package-contents": { - "version": "2.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-bundled": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "bin": { - "installed-package-contents": "lib/index.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/map-workspaces": { - "version": "3.0.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/name-from-folder": "^2.0.0", - "glob": "^10.2.2", - "minimatch": "^9.0.0", - "read-package-json-fast": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { - "version": "7.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "cacache": "^18.0.0", - "json-parse-even-better-errors": "^3.0.0", - "pacote": "^17.0.0", - "semver": "^7.3.5" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/name-from-folder": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/node-gyp": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/package-json": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/git": "^5.0.0", - "glob": "^10.2.2", - "hosted-git-info": "^7.0.0", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^6.0.0", - "proc-log": "^3.0.0", - "semver": "^7.5.3" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/promise-spawn": { - "version": "7.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "which": "^4.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/query": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/run-script": { - "version": "7.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/promise-spawn": "^7.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^3.0.0", - "which": "^4.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/npm/node_modules/@sigstore/bundle": { - "version": "2.1.0", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/protobuf-specs": "^0.2.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@sigstore/protobuf-specs": { - "version": "0.2.1", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@sigstore/sign": { - "version": "2.1.0", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/bundle": "^2.1.0", - "@sigstore/protobuf-specs": "^0.2.1", - "make-fetch-happen": "^13.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@sigstore/tuf": { - "version": "2.1.0", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/protobuf-specs": "^0.2.1", - "tuf-js": "^2.1.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@tootallnate/once": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/npm/node_modules/@tufjs/canonical-json": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@tufjs/models": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "@tufjs/canonical-json": "2.0.0", - "minimatch": "^9.0.3" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/abbrev": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/abort-controller": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/npm/node_modules/agent-base": { - "version": "6.0.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/npm/node_modules/agentkeepalive": { - "version": "4.5.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "humanize-ms": "^1.2.1" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/npm/node_modules/aggregate-error": { - "version": "3.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/ansi-regex": { - "version": "5.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/npm/node_modules/aproba": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/archy": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/are-we-there-yet": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^4.1.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/balanced-match": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/base64-js": { - "version": "1.5.1", - "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" - } - ], - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/bin-links": { - "version": "4.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "cmd-shim": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0", - "read-cmd-shim": "^4.0.0", - "write-file-atomic": "^5.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/binary-extensions": { - "version": "2.2.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/npm/node_modules/buffer": { - "version": "6.0.3", - "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" - } - ], - "inBundle": true, - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/npm/node_modules/builtins": { - "version": "5.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "semver": "^7.0.0" - } - }, - "node_modules/npm/node_modules/cacache": { - "version": "18.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^10.0.1", - "minipass": "^7.0.3", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/chalk": { - "version": "5.3.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/npm/node_modules/chownr": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/ci-info": { - "version": "3.8.0", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/cidr-regex": { - "version": "3.1.1", - "dev": true, - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "ip-regex": "^4.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/clean-stack": { - "version": "2.2.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/npm/node_modules/cli-columns": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/npm/node_modules/cli-table3": { - "version": "0.6.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" - } - }, - "node_modules/npm/node_modules/clone": { - "version": "1.0.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/npm/node_modules/cmd-shim": { - "version": "6.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/npm/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/color-support": { - "version": "1.1.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "bin": { - "color-support": "bin.js" - } - }, - "node_modules/npm/node_modules/columnify": { - "version": "1.6.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "strip-ansi": "^6.0.1", - "wcwidth": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/npm/node_modules/common-ancestor-path": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/concat-map": { - "version": "0.0.1", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/console-control-strings": { - "version": "1.1.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/cross-spawn": { - "version": "7.0.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/cross-spawn/node_modules/which": { - "version": "2.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/cssesc": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm/node_modules/debug": { - "version": "4.3.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/npm/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/defaults": { - "version": "1.0.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm/node_modules/delegates": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/diff": { - "version": "5.1.0", - "dev": true, - "inBundle": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/npm/node_modules/eastasianwidth": { - "version": "0.2.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/emoji-regex": { - "version": "8.0.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/encoding": { - "version": "0.1.13", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "node_modules/npm/node_modules/env-paths": { - "version": "2.2.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/npm/node_modules/err-code": { - "version": "2.0.3", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/event-target-shim": { - "version": "5.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/npm/node_modules/events": { - "version": "3.3.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/npm/node_modules/exponential-backoff": { - "version": "3.1.1", - "dev": true, - "inBundle": true, - "license": "Apache-2.0" - }, - "node_modules/npm/node_modules/fastest-levenshtein": { - "version": "1.0.16", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 4.9.1" - } - }, - "node_modules/npm/node_modules/foreground-child": { - "version": "3.1.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/fs-minipass": { - "version": "3.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/fs.realpath": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/function-bind": { - "version": "1.1.1", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/gauge": { - "version": "5.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^4.0.1", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/glob": { - "version": "10.3.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/graceful-fs": { - "version": "4.2.11", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/has": { - "version": "1.0.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/npm/node_modules/has-unicode": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/hosted-git-info": { - "version": "7.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^10.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/http-cache-semantics": { - "version": "4.1.1", - "dev": true, - "inBundle": true, - "license": "BSD-2-Clause" - }, - "node_modules/npm/node_modules/http-proxy-agent": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/npm/node_modules/https-proxy-agent": { - "version": "5.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/npm/node_modules/humanize-ms": { - "version": "1.2.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ms": "^2.0.0" - } - }, - "node_modules/npm/node_modules/iconv-lite": { - "version": "0.6.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm/node_modules/ieee754": { - "version": "1.2.1", - "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" - } - ], - "inBundle": true, - "license": "BSD-3-Clause" - }, - "node_modules/npm/node_modules/ignore-walk": { - "version": "6.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minimatch": "^9.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/imurmurhash": { - "version": "0.1.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/npm/node_modules/indent-string": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/inflight": { - "version": "1.0.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/npm/node_modules/inherits": { - "version": "2.0.4", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/ini": { - "version": "4.1.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/init-package-json": { - "version": "6.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-package-arg": "^11.0.0", - "promzard": "^1.0.0", - "read": "^2.0.0", - "read-package-json": "^7.0.0", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^5.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/ip": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/ip-regex": { - "version": "4.3.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/is-cidr": { - "version": "4.0.2", - "dev": true, - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "cidr-regex": "^3.1.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/is-core-module": { - "version": "2.12.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/npm/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/is-lambda": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/isexe": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/jackspeak": { - "version": "2.2.1", - "dev": true, - "inBundle": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/npm/node_modules/json-parse-even-better-errors": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/json-stringify-nice": { - "version": "1.1.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/jsonparse": { - "version": "1.3.1", - "dev": true, - "engines": [ - "node >= 0.2.0" - ], - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/just-diff": { - "version": "6.0.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/just-diff-apply": { - "version": "5.5.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/libnpmaccess": { - "version": "8.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-package-arg": "^11.0.0", - "npm-registry-fetch": "^16.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmdiff": { - "version": "6.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/arborist": "^7.1.0", - "@npmcli/disparity-colors": "^3.0.0", - "@npmcli/installed-package-contents": "^2.0.2", - "binary-extensions": "^2.2.0", - "diff": "^5.1.0", - "minimatch": "^9.0.0", - "npm-package-arg": "^11.0.0", - "pacote": "^17.0.4", - "tar": "^6.1.13" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmexec": { - "version": "7.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/arborist": "^7.1.0", - "@npmcli/run-script": "^7.0.1", - "ci-info": "^3.7.1", - "npm-package-arg": "^11.0.0", - "npmlog": "^7.0.1", - "pacote": "^17.0.4", - "proc-log": "^3.0.0", - "read": "^2.0.0", - "read-package-json-fast": "^3.0.2", - "semver": "^7.3.7", - "walk-up-path": "^3.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmfund": { - "version": "4.1.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/arborist": "^7.1.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmhook": { - "version": "10.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^16.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmorg": { - "version": "6.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^16.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmpack": { - "version": "6.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/arborist": "^7.1.0", - "@npmcli/run-script": "^7.0.1", - "npm-package-arg": "^11.0.0", - "pacote": "^17.0.4" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmpublish": { - "version": "9.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "ci-info": "^3.6.1", - "normalize-package-data": "^6.0.0", - "npm-package-arg": "^11.0.0", - "npm-registry-fetch": "^16.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.7", - "sigstore": "^2.1.0", - "ssri": "^10.0.5" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmsearch": { - "version": "7.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-registry-fetch": "^16.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmteam": { - "version": "6.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^16.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmversion": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/git": "^5.0.3", - "@npmcli/run-script": "^7.0.1", - "json-parse-even-better-errors": "^3.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.7" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/lru-cache": { - "version": "10.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "14 || >=16.14" - } - }, - "node_modules/npm/node_modules/make-fetch-happen": { - "version": "13.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/agent": "^2.0.0", - "cacache": "^18.0.0", - "http-cache-semantics": "^4.1.1", - "is-lambda": "^1.0.1", - "minipass": "^7.0.2", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "ssri": "^10.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/minimatch": { - "version": "9.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/minipass": { - "version": "7.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/npm/node_modules/minipass-collect": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/minipass-collect/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minipass-fetch": { - "version": "3.0.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "minipass": "^7.0.3", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "node_modules/npm/node_modules/minipass-flush": { - "version": "1.0.5", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/minipass-flush/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minipass-json-stream": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - } - }, - "node_modules/npm/node_modules/minipass-json-stream/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minipass-pipeline": { - "version": "1.2.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minipass-sized": { - "version": "1.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minipass-sized/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minizlib": { - "version": "2.1.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/mkdirp": { - "version": "1.0.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/ms": { - "version": "2.1.3", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/mute-stream": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/negotiator": { - "version": "0.6.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/npm/node_modules/node-gyp": { - "version": "9.4.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "env-paths": "^2.2.0", - "exponential-backoff": "^3.1.1", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^11.0.3", - "nopt": "^6.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": "^12.13 || ^14.13 || >=16" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/abbrev": { - "version": "1.1.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/node-gyp/node_modules/are-we-there-yet": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/brace-expansion": { - "version": "1.1.11", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/cacache": { - "version": "17.1.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^7.7.1", - "minipass": "^7.0.3", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/glob": { - "version": "10.3.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/minimatch": { - "version": "9.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/minipass": { - "version": "7.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/gauge": { - "version": "4.0.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/glob": { - "version": "7.2.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "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/npm/node_modules/node-gyp/node_modules/lru-cache": { - "version": "7.18.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/make-fetch-happen": { - "version": "11.1.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/minipass": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/nopt": { - "version": "6.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "abbrev": "^1.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/npmlog": { - "version": "6.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/readable-stream": { - "version": "3.6.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/signal-exit": { - "version": "3.0.7", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/node-gyp/node_modules/which": { - "version": "2.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/nopt": { - "version": "7.2.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "abbrev": "^2.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/normalize-package-data": { - "version": "6.0.0", - "dev": true, - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^7.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-audit-report": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-bundled": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-install-checks": { - "version": "6.2.0", - "dev": true, - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "semver": "^7.1.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-normalize-package-bin": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-package-arg": { - "version": "11.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "hosted-git-info": "^7.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-packlist": { - "version": "8.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "ignore-walk": "^6.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-pick-manifest": { - "version": "9.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-install-checks": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0", - "npm-package-arg": "^11.0.0", - "semver": "^7.3.5" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-profile": { - "version": "9.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-registry-fetch": "^16.0.0", - "proc-log": "^3.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-registry-fetch": { - "version": "16.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "make-fetch-happen": "^13.0.0", - "minipass": "^7.0.2", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^11.0.0", - "proc-log": "^3.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-user-validate": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "BSD-2-Clause", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npmlog": { - "version": "7.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "are-we-there-yet": "^4.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^5.0.0", - "set-blocking": "^2.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/once": { - "version": "1.4.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/npm/node_modules/p-map": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm/node_modules/pacote": { - "version": "17.0.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/git": "^5.0.0", - "@npmcli/installed-package-contents": "^2.0.1", - "@npmcli/promise-spawn": "^7.0.0", - "@npmcli/run-script": "^7.0.0", - "cacache": "^18.0.0", - "fs-minipass": "^3.0.0", - "minipass": "^7.0.2", - "npm-package-arg": "^11.0.0", - "npm-packlist": "^8.0.0", - "npm-pick-manifest": "^9.0.0", - "npm-registry-fetch": "^16.0.0", - "proc-log": "^3.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^7.0.0", - "read-package-json-fast": "^3.0.0", - "sigstore": "^2.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11" - }, - "bin": { - "pacote": "lib/bin.js" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/parse-conflict-json": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "json-parse-even-better-errors": "^3.0.0", - "just-diff": "^6.0.0", - "just-diff-apply": "^5.2.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/path-is-absolute": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm/node_modules/path-key": { - "version": "3.1.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/path-scurry": { - "version": "1.10.1", - "dev": true, - "inBundle": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/postcss-selector-parser": { - "version": "6.0.13", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm/node_modules/proc-log": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/process": { - "version": "0.11.10", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/npm/node_modules/promise-all-reject-late": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/promise-call-limit": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/promise-inflight": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/promise-retry": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/promzard": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "read": "^2.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/qrcode-terminal": { - "version": "0.12.0", - "dev": true, - "inBundle": true, - "bin": { - "qrcode-terminal": "bin/qrcode-terminal.js" - } - }, - "node_modules/npm/node_modules/read": { - "version": "2.1.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "mute-stream": "~1.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/read-cmd-shim": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/read-package-json": { - "version": "7.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "glob": "^10.2.2", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } + "node_modules/limiter": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", + "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==", + "dev": true }, - "node_modules/npm/node_modules/read-package-json-fast": { - "version": "3.0.2", + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true, - "inBundle": true, - "license": "ISC", + "license": "MIT" + }, + "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==", + "license": "MIT", "dependencies": { - "json-parse-even-better-errors": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=4" } }, - "node_modules/npm/node_modules/readable-stream": { - "version": "4.4.0", - "dev": true, - "inBundle": true, + "node_modules/load-json-file/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==", "license": "MIT", "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=4" } }, - "node_modules/npm/node_modules/retry": { - "version": "0.12.0", - "dev": true, - "inBundle": true, + "node_modules/load-json-file/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==", "license": "MIT", "engines": { - "node": ">= 4" + "node": ">=4" } }, - "node_modules/npm/node_modules/rimraf": { - "version": "3.0.2", + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "inBundle": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "glob": "^7.1.3" + "p-locate": "^5.0.0" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/rimraf/node_modules/brace-expansion": { - "version": "1.1.11", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" }, - "node_modules/npm/node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", "dev": true, - "inBundle": true, - "license": "ISC", - "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" - } + "license": "MIT" }, - "node_modules/npm/node_modules/rimraf/node_modules/minimatch": { - "version": "3.1.2", + "node_modules/lodash.capitalize": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", + "integrity": "sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==", "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } + "license": "MIT" }, - "node_modules/npm/node_modules/safe-buffer": { - "version": "5.2.1", + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "license": "MIT" + }, + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==", "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" - } - ], - "inBundle": true, "license": "MIT" }, - "node_modules/npm/node_modules/safer-buffer": { - "version": "2.1.2", + "node_modules/lodash.isfinite": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", + "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==", "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true + "license": "MIT" }, - "node_modules/npm/node_modules/semver": { - "version": "7.5.4", + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } + "license": "MIT" }, - "node_modules/npm/node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } + "license": "MIT" }, - "node_modules/npm/node_modules/set-blocking": { - "version": "2.0.0", + "node_modules/lodash.map": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", + "integrity": "sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==", "dev": true, - "inBundle": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/npm/node_modules/shebang-command": { - "version": "2.0.0", + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/npm/node_modules/shebang-regex": { - "version": "3.0.0", + "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, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/npm/node_modules/signal-exit": { - "version": "4.0.2", + "node_modules/lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } + "license": "MIT", + "optional": true }, - "node_modules/npm/node_modules/sigstore": { - "version": "2.1.0", + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/bundle": "^2.1.0", - "@sigstore/protobuf-specs": "^0.2.1", - "@sigstore/sign": "^2.1.0", - "@sigstore/tuf": "^2.1.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } + "license": "MIT" }, - "node_modules/npm/node_modules/smart-buffer": { - "version": "4.2.0", + "node_modules/lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } + "license": "MIT" }, - "node_modules/npm/node_modules/socks": { - "version": "2.7.1", + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, - "inBundle": true, "license": "MIT", "dependencies": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" }, "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/socks-proxy-agent": { - "version": "7.0.0", + "node_modules/log-symbols/node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, - "inBundle": true, "license": "MIT", - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, "engines": { - "node": ">= 10" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/spdx-correct": { - "version": "3.2.0", + "node_modules/longest": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-2.0.1.tgz", + "integrity": "sha512-Ajzxb8CM6WAnFjgiloPsI3bF+WCxcvhdIG3KNA2KN962+tdBsHcuQ4k4qX/EcS/2CRkcc0iAkR956Nib6aXU/Q==", "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/spdx-exceptions": { - "version": "2.3.0", - "dev": true, - "inBundle": true, - "license": "CC-BY-3.0" + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } }, - "node_modules/npm/node_modules/spdx-expression-parse": { - "version": "3.0.1", - "dev": true, - "inBundle": true, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", "license": "MIT", "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "@jridgewell/sourcemap-codec": "^1.5.0" } }, - "node_modules/npm/node_modules/spdx-license-ids": { - "version": "3.0.13", + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true, - "inBundle": true, - "license": "CC0-1.0" + "license": "ISC" }, - "node_modules/npm/node_modules/ssri": { - "version": "10.0.5", + "node_modules/make-error-cause": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/make-error-cause/-/make-error-cause-1.2.2.tgz", + "integrity": "sha512-4TO2Y3HkBnis4c0dxhAgD/jprySYLACf7nwN6V0HAHDx59g12WlRpUmFy1bRHamjGUEEBrEvCq6SUpsEE2lhUg==", "dev": true, - "inBundle": true, - "license": "ISC", + "license": "Apache-2.0", "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "make-error": "^1.2.0" } }, - "node_modules/npm/node_modules/string_decoder": { - "version": "1.3.0", - "dev": true, - "inBundle": true, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/string-width": { - "version": "4.2.3", + "node_modules/marked": { + "version": "15.0.12", + "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.12.tgz", + "integrity": "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==", "dev": true, - "inBundle": true, "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "bin": { + "marked": "bin/marked.js" }, "engines": { - "node": ">=8" + "node": ">= 18" } }, - "node_modules/npm/node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", + "node_modules/marked-terminal": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-7.3.0.tgz", + "integrity": "sha512-t4rBvPsHc57uE/2nJOLmMbZCQ4tgAccAED3ngXQqW6g+TxA488JzJ+FK3lQkzBQOI1mRV/r/Kq+1ZlJ4D0owQw==", "dev": true, - "inBundle": true, "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "ansi-escapes": "^7.0.0", + "ansi-regex": "^6.1.0", + "chalk": "^5.4.1", + "cli-highlight": "^2.1.11", + "cli-table3": "^0.6.5", + "node-emoji": "^2.2.0", + "supports-hyperlinks": "^3.1.0" }, "engines": { - "node": ">=8" + "node": ">=16.0.0" + }, + "peerDependencies": { + "marked": ">=1 <16" } }, - "node_modules/npm/node_modules/strip-ansi": { - "version": "6.0.1", + "node_modules/marked-terminal/node_modules/ansi-escapes": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", + "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", "dev": true, - "inBundle": true, "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "environment": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", + "node_modules/marked-terminal/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", "dev": true, - "inBundle": true, "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/npm/node_modules/supports-color": { - "version": "9.4.0", + "node_modules/mdn-data": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/meow": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", + "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", "dev": true, - "inBundle": true, "license": "MIT", "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/tar": { - "version": "6.1.15", + "node_modules/merge": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz", + "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==", "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } + "license": "MIT" }, - "node_modules/npm/node_modules/tar/node_modules/fs-minipass": { - "version": "2.1.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, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", "engines": { "node": ">= 8" } }, - "node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "inBundle": true, - "license": "ISC", + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=8" + "node": ">=8.6" } }, - "node_modules/npm/node_modules/tar/node_modules/minipass": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/npm/node_modules/text-table": { - "version": "0.2.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/tiny-relative-date": { - "version": "1.3.0", + "node_modules/mime": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.7.tgz", + "integrity": "sha512-2OfDPL+e03E0LrXaGYOtTFIYhiuzep94NSsuhrNULq+stylcJedcHdzHtz0atMUuGwJfFYs0YL5xeC/Ca2x0eQ==", "dev": true, - "inBundle": true, - "license": "MIT" + "funding": [ + "https://github.com/sponsors/broofa" + ], + "license": "MIT", + "bin": { + "mime": "bin/cli.js" + }, + "engines": { + "node": ">=16" + } }, - "node_modules/npm/node_modules/treeverse": { - "version": "3.0.0", + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, - "inBundle": true, - "license": "ISC", + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 0.6" } }, - "node_modules/npm/node_modules/tuf-js": { - "version": "2.1.0", + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, - "inBundle": true, "license": "MIT", "dependencies": { - "@tufjs/models": "2.0.0", - "debug": "^4.3.4", - "make-fetch-happen": "^13.0.0" + "mime-db": "1.52.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">= 0.6" } }, - "node_modules/npm/node_modules/unique-filename": { - "version": "3.0.0", + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "unique-slug": "^4.0.0" - }, + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=6" } }, - "node_modules/npm/node_modules/unique-slug": { - "version": "4.0.0", - "dev": true, - "inBundle": true, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "license": "ISC", "dependencies": { - "imurmurhash": "^0.1.4" + "brace-expansion": "^1.1.7" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "*" } }, - "node_modules/npm/node_modules/util-deprecate": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/validate-npm-package-license": { - "version": "3.0.4", + "node_modules/minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm/node_modules/validate-npm-package-name": { - "version": "5.0.0", + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, - "inBundle": true, "license": "ISC", - "dependencies": { - "builtins": "^5.0.0" - }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/npm/node_modules/walk-up-path": { - "version": "3.0.1", + "node_modules/mitt": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", + "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", "dev": true, - "inBundle": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/npm/node_modules/wcwidth": { - "version": "1.0.1", - "dev": true, - "inBundle": true, + "node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/npm/node_modules/which": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "isexe": "^3.1.1" - }, "bin": { - "node-which": "bin/which.js" + "mkdirp": "dist/cjs/src/bin.js" }, "engines": { - "node": "^16.13.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/npm/node_modules/which/node_modules/isexe": { - "version": "3.1.1", - "dev": true, - "inBundle": true, - "license": "ISC", + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/mute-stdout": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-2.0.0.tgz", + "integrity": "sha512-32GSKM3Wyc8dg/p39lWPKYu8zci9mJFzV1Np9Of0ZEpe6Fhssn/FbI7ywAMd40uX+p3ZKh3T5EeCFv81qS3HmQ==", + "license": "MIT", "engines": { - "node": ">=16" + "node": ">= 10.13.0" } }, - "node_modules/npm/node_modules/wide-align": { - "version": "1.1.5", + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } + "license": "ISC" }, - "node_modules/npm/node_modules/wrap-ansi": { - "version": "8.1.0", + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", "dev": true, - "inBundle": true, "license": "MIT", "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" } }, - "node_modules/npm/node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "dev": true, - "inBundle": true, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "bin": { + "nanoid": "bin/nanoid.cjs" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.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, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } + "license": "MIT" }, - "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, - "inBundle": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 0.6" } }, - "node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "9.2.2", + "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, - "inBundle": true, "license": "MIT" }, - "node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": { - "version": "5.1.2", + "node_modules/nerf-dart": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", + "integrity": "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==", "dev": true, - "inBundle": true, + "license": "MIT" + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "license": "MIT" + }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "optional": true }, - "node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.1.0", + "node_modules/node-emoji": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.2.0.tgz", + "integrity": "sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==", "dev": true, - "inBundle": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "@sindresorhus/is": "^4.6.0", + "char-regex": "^1.0.2", + "emojilib": "^2.4.0", + "skin-tone": "^2.0.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">=18" } }, - "node_modules/npm/node_modules/wrappy": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "ISC" + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "license": "MIT" }, - "node_modules/npm/node_modules/write-file-atomic": { - "version": "5.0.1", + "node_modules/normalize-package-data": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", + "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", "dev": true, - "inBundle": true, - "license": "ISC", + "license": "BSD-2-Clause", "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" + "hosted-git-info": "^7.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/yallist": { - "version": "4.0.0", + "node_modules/normalize-package-data/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==", - "dev": true - }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "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==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dependencies": { - "is-buffer": "^1.1.5" - }, + "node_modules/normalize-url": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.2.tgz", + "integrity": "sha512-Ee/R3SyN4BuynXcnTaekmaVdbDAEiNrHqjQIA37mHU8G9pf7aaAD4ZX3XjBLo6rsdcxA/gtkcNYZLt30ACgynw==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "node": ">=14.16" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/now-and-later": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-3.0.0.tgz", + "integrity": "sha512-pGO4pzSdaxhWTGkfSfHx3hVzJVslFPwBp2Myq9MYN/ChfJZF87ochMAXnvz6/58RJSf5ik2q9tXprBBrk2cpcg==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + }, "engines": { - "node": ">= 0.4" + "node": ">= 10.13.0" } }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "node_modules/npm": { + "version": "10.9.3", + "resolved": "https://registry.npmjs.org/npm/-/npm-10.9.3.tgz", + "integrity": "sha512-6Eh1u5Q+kIVXeA8e7l2c/HpnFFcwrkt37xDMujD5be1gloWa9p6j3Fsv3mByXXmqJHy+2cElRMML8opNT7xIJQ==", + "bundleDependencies": [ + "@isaacs/string-locale-compare", + "@npmcli/arborist", + "@npmcli/config", + "@npmcli/fs", + "@npmcli/map-workspaces", + "@npmcli/package-json", + "@npmcli/promise-spawn", + "@npmcli/redact", + "@npmcli/run-script", + "@sigstore/tuf", + "abbrev", + "archy", + "cacache", + "chalk", + "ci-info", + "cli-columns", + "fastest-levenshtein", + "fs-minipass", + "glob", + "graceful-fs", + "hosted-git-info", + "ini", + "init-package-json", + "is-cidr", + "json-parse-even-better-errors", + "libnpmaccess", + "libnpmdiff", + "libnpmexec", + "libnpmfund", + "libnpmhook", + "libnpmorg", + "libnpmpack", + "libnpmpublish", + "libnpmsearch", + "libnpmteam", + "libnpmversion", + "make-fetch-happen", + "minimatch", + "minipass", + "minipass-pipeline", + "ms", + "node-gyp", + "nopt", + "normalize-package-data", + "npm-audit-report", + "npm-install-checks", + "npm-package-arg", + "npm-pick-manifest", + "npm-profile", + "npm-registry-fetch", + "npm-user-validate", + "p-map", + "pacote", + "parse-conflict-json", + "proc-log", + "qrcode-terminal", + "read", + "semver", + "spdx-expression-parse", + "ssri", + "supports-color", + "tar", + "text-table", + "tiny-relative-date", + "treeverse", + "validate-npm-package-name", + "which", + "write-file-atomic" + ], + "dev": true, + "license": "Artistic-2.0", + "workspaces": [ + "docs", + "smoke-tests", + "mock-globals", + "mock-registry", + "workspaces/*" + ], "dependencies": { - "isobject": "^3.0.0" + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/arborist": "^8.0.1", + "@npmcli/config": "^9.0.0", + "@npmcli/fs": "^4.0.0", + "@npmcli/map-workspaces": "^4.0.2", + "@npmcli/package-json": "^6.2.0", + "@npmcli/promise-spawn": "^8.0.2", + "@npmcli/redact": "^3.2.2", + "@npmcli/run-script": "^9.1.0", + "@sigstore/tuf": "^3.1.1", + "abbrev": "^3.0.1", + "archy": "~1.0.0", + "cacache": "^19.0.1", + "chalk": "^5.4.1", + "ci-info": "^4.2.0", + "cli-columns": "^4.0.0", + "fastest-levenshtein": "^1.0.16", + "fs-minipass": "^3.0.3", + "glob": "^10.4.5", + "graceful-fs": "^4.2.11", + "hosted-git-info": "^8.1.0", + "ini": "^5.0.0", + "init-package-json": "^7.0.2", + "is-cidr": "^5.1.1", + "json-parse-even-better-errors": "^4.0.0", + "libnpmaccess": "^9.0.0", + "libnpmdiff": "^7.0.1", + "libnpmexec": "^9.0.1", + "libnpmfund": "^6.0.1", + "libnpmhook": "^11.0.0", + "libnpmorg": "^7.0.0", + "libnpmpack": "^8.0.1", + "libnpmpublish": "^10.0.1", + "libnpmsearch": "^8.0.0", + "libnpmteam": "^7.0.0", + "libnpmversion": "^7.0.0", + "make-fetch-happen": "^14.0.3", + "minimatch": "^9.0.5", + "minipass": "^7.1.1", + "minipass-pipeline": "^1.2.4", + "ms": "^2.1.2", + "node-gyp": "^11.2.0", + "nopt": "^8.1.0", + "normalize-package-data": "^7.0.0", + "npm-audit-report": "^6.0.0", + "npm-install-checks": "^7.1.1", + "npm-package-arg": "^12.0.2", + "npm-pick-manifest": "^10.0.0", + "npm-profile": "^11.0.1", + "npm-registry-fetch": "^18.0.2", + "npm-user-validate": "^3.0.0", + "p-map": "^7.0.3", + "pacote": "^19.0.1", + "parse-conflict-json": "^4.0.0", + "proc-log": "^5.0.0", + "qrcode-terminal": "^0.12.0", + "read": "^4.1.0", + "semver": "^7.7.2", + "spdx-expression-parse": "^4.0.0", + "ssri": "^12.0.0", + "supports-color": "^9.4.0", + "tar": "^6.2.1", + "text-table": "~0.2.0", + "tiny-relative-date": "^1.3.0", + "treeverse": "^3.0.0", + "validate-npm-package-name": "^6.0.1", + "which": "^5.0.0", + "write-file-atomic": "^6.0.0" + }, + "bin": { + "npm": "bin/npm-cli.js", + "npx": "bin/npx-cli.js" }, "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "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==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" + "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" }, - "engines": { - "node": ">= 0.4" + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">= 4" } }, - "node_modules/object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", + "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==", + "license": "MIT", "dependencies": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==", + "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==", + "license": "MIT", "dependencies": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "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==", + "license": "MIT", "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" + "color-name": "1.1.3" } }, - "node_modules/object.reduce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", - "integrity": "sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw==", + "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==", + "license": "MIT" + }, + "node_modules/npm-run-all/node_modules/cross-spawn": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", + "license": "MIT", "dependencies": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" + "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": ">=0.10.0" + "node": ">=4.8" } }, - "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, + "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==", + "license": "MIT", "engines": { - "node": ">= 0.8" + "node": ">=0.8.0" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" + "node_modules/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==", + "license": "MIT", + "engines": { + "node": ">=4" } }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, + "node_modules/npm-run-all/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==", + "license": "ISC" + }, + "node_modules/npm-run-all/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==", + "license": "BSD-2-Clause", "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, - "node_modules/openurl": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", - "integrity": "sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA==", - "dev": true + "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==", + "license": "MIT", + "engines": { + "node": ">=4" + } }, - "node_modules/opn": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", - "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", - "dev": true, + "node_modules/npm-run-all/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==", + "license": "MIT", "dependencies": { - "is-wsl": "^1.1.0" + "pify": "^3.0.0" }, "engines": { "node": ">=4" } }, - "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, + "node_modules/npm-run-all/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==", + "license": "MIT", "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=4" } }, - "node_modules/ordered-read-streams": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", - "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==", - "dependencies": { - "readable-stream": "^2.0.1" + "node_modules/npm-run-all/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "license": "ISC", + "bin": { + "semver": "bin/semver" } }, - "node_modules/os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", + "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==", + "license": "MIT", "dependencies": { - "lcid": "^1.0.0" + "shebang-regex": "^1.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, + "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==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/p-each-series": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-3.0.0.tgz", - "integrity": "sha512-lastgtAdoH9YaLyDa5i5z64q+kzOcQHsQ5SsZJD3q0VEyI8mq872S3geuNbRUQLVAE9siMfgKrpj7MloKFHruw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-3.0.0.tgz", - "integrity": "sha512-QtoWLjXAW++uTX67HZQz1dbTpqBfiidsB6VtQUC9iR85S120+s0T5sO6s+B5MLzFcZkrEd/DGMmCjR+f2Qpxwg==", - "dev": true, + "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==", + "license": "MIT", "dependencies": { - "p-map": "^5.1.0" + "has-flag": "^3.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/p-is-promise": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", - "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", - "dev": true, - "engines": { - "node": ">=8" + "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==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" } }, - "node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "node_modules/npm-run-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", "dev": true, + "license": "MIT", "dependencies": { - "yocto-queue": "^1.0.0" + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-limit/node_modules/yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=12.20" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "node_modules/npm/node_modules/@isaacs/cliui": { + "version": "8.0.2", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "p-limit": "^4.0.0" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/p-map": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-5.5.0.tgz", - "integrity": "sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==", - "dependencies": { - "aggregate-error": "^4.0.0" - }, + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", "engines": { "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/p-map/node_modules/aggregate-error": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz", - "integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==", + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "clean-stack": "^4.0.0", - "indent-string": "^5.0.0" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { "node": ">=12" @@ -14216,3322 +10537,3717 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-map/node_modules/clean-stack": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz", - "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==", + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "escape-string-regexp": "5.0.0" + "ansi-regex": "^6.0.1" }, "engines": { "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/p-map/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "engines": { - "node": ">=12" + "node_modules/npm/node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map/node_modules/indent-string": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=18.0.0" } }, - "node_modules/p-reduce": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", - "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", + "node_modules/npm/node_modules/@isaacs/string-locale-compare": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/agent": { + "version": "3.0.0", "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.3" + }, "engines": { - "node": ">=8" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - }, - "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==", + "node_modules/npm/node_modules/@npmcli/arborist": { + "version": "8.0.1", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "callsites": "^3.0.0" + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/fs": "^4.0.0", + "@npmcli/installed-package-contents": "^3.0.0", + "@npmcli/map-workspaces": "^4.0.1", + "@npmcli/metavuln-calculator": "^8.0.0", + "@npmcli/name-from-folder": "^3.0.0", + "@npmcli/node-gyp": "^4.0.0", + "@npmcli/package-json": "^6.0.1", + "@npmcli/query": "^4.0.0", + "@npmcli/redact": "^3.0.0", + "@npmcli/run-script": "^9.0.1", + "bin-links": "^5.0.0", + "cacache": "^19.0.1", + "common-ancestor-path": "^1.0.1", + "hosted-git-info": "^8.0.0", + "json-parse-even-better-errors": "^4.0.0", + "json-stringify-nice": "^1.1.4", + "lru-cache": "^10.2.2", + "minimatch": "^9.0.4", + "nopt": "^8.0.0", + "npm-install-checks": "^7.1.0", + "npm-package-arg": "^12.0.0", + "npm-pick-manifest": "^10.0.0", + "npm-registry-fetch": "^18.0.1", + "pacote": "^19.0.0", + "parse-conflict-json": "^4.0.0", + "proc-log": "^5.0.0", + "proggy": "^3.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^3.0.1", + "read-package-json-fast": "^4.0.0", + "semver": "^7.3.7", + "ssri": "^12.0.0", + "treeverse": "^3.0.0", + "walk-up-path": "^3.0.1" + }, + "bin": { + "arborist": "bin/index.js" }, "engines": { - "node": ">=6" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", + "node_modules/npm/node_modules/@npmcli/config": { + "version": "9.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" + "@npmcli/map-workspaces": "^4.0.1", + "@npmcli/package-json": "^6.0.1", + "ci-info": "^4.0.0", + "ini": "^5.0.0", + "nopt": "^8.0.0", + "proc-log": "^5.0.0", + "semver": "^7.3.5", + "walk-up-path": "^3.0.1" }, "engines": { - "node": ">=0.8" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "node_modules/npm/node_modules/@npmcli/fs": { + "version": "4.0.0", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" + "semver": "^7.3.5" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "node_modules/npm/node_modules/@npmcli/git": { + "version": "6.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/promise-spawn": "^8.0.0", + "ini": "^5.0.0", + "lru-cache": "^10.0.1", + "npm-pick-manifest": "^10.0.0", + "proc-log": "^5.0.0", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^5.0.0" + }, "engines": { - "node": ">= 0.10" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "node_modules/npm/node_modules/@npmcli/installed-package-contents": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-bundled": "^4.0.0", + "npm-normalize-package-bin": "^4.0.0" + }, + "bin": { + "installed-package-contents": "bin/index.js" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "node_modules/npm/node_modules/@npmcli/map-workspaces": { + "version": "4.0.2", "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/name-from-folder": "^3.0.0", + "@npmcli/package-json": "^6.0.0", + "glob": "^10.2.2", + "minimatch": "^9.0.0" + }, "engines": { - "node": ">= 0.8" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { + "version": "8.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "cacache": "^19.0.0", + "json-parse-even-better-errors": "^4.0.0", + "pacote": "^20.0.0", + "proc-log": "^5.0.0", + "semver": "^7.3.5" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==" - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node_modules/npm/node_modules/@npmcli/metavuln-calculator/node_modules/pacote": { + "version": "20.0.0", "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^6.0.0", + "@npmcli/installed-package-contents": "^3.0.0", + "@npmcli/package-json": "^6.0.0", + "@npmcli/promise-spawn": "^8.0.0", + "@npmcli/run-script": "^9.0.0", + "cacache": "^19.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^12.0.0", + "npm-packlist": "^9.0.0", + "npm-pick-manifest": "^10.0.0", + "npm-registry-fetch": "^18.0.0", + "proc-log": "^5.0.0", + "promise-retry": "^2.0.1", + "sigstore": "^3.0.0", + "ssri": "^12.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "bin/index.js" + }, "engines": { - "node": ">=8" + "node": "^18.17.0 || >=20.5.0" } }, - "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==", + "node_modules/npm/node_modules/@npmcli/name-from-folder": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.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==", + "node_modules/npm/node_modules/@npmcli/node-gyp": { + "version": "4.0.0", "dev": true, + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=8" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", + "node_modules/npm/node_modules/@npmcli/package-json": { + "version": "6.2.0", + "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "path-root-regex": "^0.1.0" + "@npmcli/git": "^6.0.0", + "glob": "^10.2.2", + "hosted-git-info": "^8.0.0", + "json-parse-even-better-errors": "^4.0.0", + "proc-log": "^5.0.0", + "semver": "^7.5.3", + "validate-npm-package-license": "^3.0.4" }, "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", + "node_modules/npm/node_modules/@npmcli/promise-spawn": { + "version": "8.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "which": "^5.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "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==", + "node_modules/npm/node_modules/@npmcli/query": { + "version": "4.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, "engines": { - "node": ">=8" + "node": "^18.17.0 || >=20.5.0" } }, - "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==", + "node_modules/npm/node_modules/@npmcli/redact": { + "version": "3.2.2", + "dev": true, + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/pidtree": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", - "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", - "bin": { - "pidtree": "bin/pidtree.js" + "node_modules/npm/node_modules/@npmcli/run-script": { + "version": "9.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/node-gyp": "^4.0.0", + "@npmcli/package-json": "^6.0.0", + "@npmcli/promise-spawn": "^8.0.0", + "node-gyp": "^11.0.0", + "proc-log": "^5.0.0", + "which": "^5.0.0" }, "engines": { - "node": ">=0.10" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "node_modules/npm/node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, "engines": { - "node": ">=4" + "node": ">=14" } }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "node_modules/npm/node_modules/@sigstore/protobuf-specs": { + "version": "0.4.3", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "node_modules/npm/node_modules/@sigstore/tuf": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", "dependencies": { - "pinkie": "^2.0.0" + "@sigstore/protobuf-specs": "^0.4.1", + "tuf-js": "^3.0.1" }, "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/pkg-conf": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", - "integrity": "sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==", + "node_modules/npm/node_modules/@tufjs/canonical-json": { + "version": "2.0.0", "dev": true, - "dependencies": { - "find-up": "^2.0.0", - "load-json-file": "^4.0.0" - }, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/pkg-conf/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "node_modules/npm/node_modules/abbrev": { + "version": "3.0.1", "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=4" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/pkg-conf/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "node_modules/npm/node_modules/agent-base": { + "version": "7.1.3", "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/npm/node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/pkg-conf/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "node_modules/npm/node_modules/ansi-styles": { + "version": "6.2.1", "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/pkg-conf/node_modules/p-locate": { + "node_modules/npm/node_modules/aproba": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } + "inBundle": true, + "license": "ISC" }, - "node_modules/pkg-conf/node_modules/p-try": { + "node_modules/npm/node_modules/archy": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "dev": true, - "engines": { - "node": ">=4" - } + "inBundle": true, + "license": "MIT" }, - "node_modules/pkg-conf/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "node_modules/npm/node_modules/balanced-match": { + "version": "1.0.2", "dev": true, - "engines": { - "node": ">=4" - } + "inBundle": true, + "license": "MIT" }, - "node_modules/plugin-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", - "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "node_modules/npm/node_modules/bin-links": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "ansi-colors": "^1.0.1", - "arr-diff": "^4.0.0", - "arr-union": "^3.1.0", - "extend-shallow": "^3.0.2" + "cmd-shim": "^7.0.0", + "npm-normalize-package-bin": "^4.0.0", + "proc-log": "^5.0.0", + "read-cmd-shim": "^5.0.0", + "write-file-atomic": "^6.0.0" }, "engines": { - "node": ">= 0.10" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/plugin-error/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, + "node_modules/npm/node_modules/binary-extensions": { + "version": "2.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/plugin-error/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" + "node": ">=8" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/plugin-error/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/npm/node_modules/brace-expansion": { + "version": "2.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" + "balanced-match": "^1.0.0" } }, - "node_modules/portscanner": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", - "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", + "node_modules/npm/node_modules/cacache": { + "version": "19.0.1", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "async": "^2.6.0", - "is-number-like": "^1.0.3" + "@npmcli/fs": "^4.0.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^7.0.2", + "ssri": "^12.0.0", + "tar": "^7.4.3", + "unique-filename": "^4.0.0" }, "engines": { - "node": ">=0.4", - "npm": ">=1.0.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "node_modules/npm/node_modules/cacache/node_modules/chownr": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0", "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/postcss": { - "version": "8.4.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", - "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", - "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" + "node_modules/npm/node_modules/cacache/node_modules/mkdirp": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" }, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/postcss-calc": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", - "integrity": "sha512-iBcptYFq+QUh9gzP7ta2btw50o40s4uLI4UDVgd5yRAZtUDWc5APdl5yQDd2h/TyiZNbJrv0HiYhT102CMgN7Q==", + "node_modules/npm/node_modules/cacache/node_modules/tar": { + "version": "7.4.3", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "postcss": "^5.0.2", - "postcss-message-helpers": "^2.0.0", - "reduce-css-calc": "^1.2.6" - } - }, - "node_modules/postcss-calc/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/postcss-calc/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/npm/node_modules/cacache/node_modules/yallist": { + "version": "5.0.0", "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0", "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/postcss-calc/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/npm/node_modules/chalk": { + "version": "5.4.1", "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/postcss-calc/node_modules/chalk/node_modules/supports-color": { + "node_modules/npm/node_modules/chownr": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", "dev": true, + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=0.8.0" + "node": ">=10" } }, - "node_modules/postcss-calc/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/npm/node_modules/ci-info": { + "version": "4.2.0", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-calc/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/npm/node_modules/cidr-regex": { + "version": "4.1.3", "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "ip-regex": "^5.0.0" }, "engines": { - "node": ">=0.12" + "node": ">=14" } }, - "node_modules/postcss-calc/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/npm/node_modules/cli-columns": { + "version": "4.0.0", "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 10" } }, - "node_modules/postcss-calc/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/npm/node_modules/cmd-shim": { + "version": "7.0.0", "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-calc/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/npm/node_modules/color-convert": { + "version": "2.0.1", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "has-flag": "^1.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.8.0" + "node": ">=7.0.0" } }, - "node_modules/postcss-colormin": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", - "integrity": "sha512-XXitQe+jNNPf+vxvQXIQ1+pvdQKWKgkx8zlJNltcMEmLma1ypDRDQwlLt+6cP26fBreihNhZxohh1rcgCH2W5w==", + "node_modules/npm/node_modules/color-name": { + "version": "1.1.4", "dev": true, - "dependencies": { - "colormin": "^1.0.5", - "postcss": "^5.0.13", - "postcss-value-parser": "^3.2.3" - } + "inBundle": true, + "license": "MIT" }, - "node_modules/postcss-colormin/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/npm/node_modules/common-ancestor-path": { + "version": "1.0.1", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "inBundle": true, + "license": "ISC" }, - "node_modules/postcss-colormin/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/npm/node_modules/cross-spawn": { + "version": "7.0.6", "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/postcss-colormin/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/npm/node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/postcss-colormin/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/npm/node_modules/cssesc": { + "version": "3.0.0", "dev": true, + "inBundle": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, "engines": { - "node": ">=0.8.0" + "node": ">=4" } }, - "node_modules/postcss-colormin/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/npm/node_modules/debug": { + "version": "4.4.1", "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/postcss-colormin/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/npm/node_modules/diff": { + "version": "5.2.0", "dev": true, - "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - }, + "inBundle": true, + "license": "BSD-3-Clause", "engines": { - "node": ">=0.12" + "node": ">=0.3.1" } }, - "node_modules/postcss-colormin/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true + "node_modules/npm/node_modules/eastasianwidth": { + "version": "0.2.0", + "dev": true, + "inBundle": true, + "license": "MIT" }, - "node_modules/postcss-colormin/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/npm/node_modules/emoji-regex": { + "version": "8.0.0", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "inBundle": true, + "license": "MIT" }, - "node_modules/postcss-colormin/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/npm/node_modules/encoding": { + "version": "0.1.13", "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" + "iconv-lite": "^0.6.2" } }, - "node_modules/postcss-colormin/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/npm/node_modules/env-paths": { + "version": "2.2.1", "dev": true, - "dependencies": { - "has-flag": "^1.0.0" - }, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=6" } }, - "node_modules/postcss-convert-values": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", - "integrity": "sha512-SE7mf25D3ORUEXpu3WUqQqy0nCbMuM5BEny+ULE/FXdS/0UMA58OdzwvzuHJRpIFlk1uojt16JhaEogtP6W2oA==", + "node_modules/npm/node_modules/err-code": { + "version": "2.0.3", "dev": true, - "dependencies": { - "postcss": "^5.0.11", - "postcss-value-parser": "^3.1.2" - } + "inBundle": true, + "license": "MIT" }, - "node_modules/postcss-convert-values/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/npm/node_modules/exponential-backoff": { + "version": "3.1.2", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "inBundle": true, + "license": "Apache-2.0" }, - "node_modules/postcss-convert-values/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/npm/node_modules/fastest-levenshtein": { + "version": "1.0.16", "dev": true, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 4.9.1" } }, - "node_modules/postcss-convert-values/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/npm/node_modules/foreground-child": { + "version": "3.3.1", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-convert-values/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true, - "engines": { - "node": ">=0.8.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/postcss-convert-values/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/npm/node_modules/fs-minipass": { + "version": "3.0.3", "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/postcss-convert-values/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/npm/node_modules/glob": { + "version": "10.4.5", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": ">=0.12" + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/postcss-convert-values/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-convert-values/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/npm/node_modules/graceful-fs": { + "version": "4.2.11", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "inBundle": true, + "license": "ISC" }, - "node_modules/postcss-convert-values/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/npm/node_modules/hosted-git-info": { + "version": "8.1.0", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "ansi-regex": "^2.0.0" + "lru-cache": "^10.0.1" }, "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-convert-values/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/npm/node_modules/http-cache-semantics": { + "version": "4.2.0", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause" + }, + "node_modules/npm/node_modules/http-proxy-agent": { + "version": "7.0.2", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "has-flag": "^1.0.0" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">=0.8.0" + "node": ">= 14" } }, - "node_modules/postcss-discard-comments": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", - "integrity": "sha512-yGbyBDo5FxsImE90LD8C87vgnNlweQkODMkUZlDVM/CBgLr9C5RasLGJxxh9GjVOBeG8NcCMatoqI1pXg8JNXg==", + "node_modules/npm/node_modules/https-proxy-agent": { + "version": "7.0.6", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "postcss": "^5.0.14" - } - }, - "node_modules/postcss-discard-comments/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, + "agent-base": "^7.1.2", + "debug": "4" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 14" } }, - "node_modules/postcss-discard-comments/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/npm/node_modules/iconv-lite": { + "version": "0.6.3", "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/postcss-discard-comments/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/npm/node_modules/ignore-walk": { + "version": "7.0.0", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "minimatch": "^9.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-discard-comments/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/npm/node_modules/imurmurhash": { + "version": "0.1.4", "dev": true, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=0.8.19" } }, - "node_modules/postcss-discard-comments/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/npm/node_modules/ini": { + "version": "5.0.0", "dev": true, + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-discard-comments/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/npm/node_modules/init-package-json": { + "version": "7.0.2", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "@npmcli/package-json": "^6.0.0", + "npm-package-arg": "^12.0.0", + "promzard": "^2.0.0", + "read": "^4.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^6.0.0" }, "engines": { - "node": ">=0.12" - } - }, - "node_modules/postcss-discard-comments/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-discard-comments/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/npm/node_modules/ip-address": { + "version": "9.0.5", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" }, "engines": { - "node": ">=0.10.0" + "node": ">= 12" } }, - "node_modules/postcss-discard-comments/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/npm/node_modules/ip-regex": { + "version": "5.0.0", "dev": true, - "dependencies": { - "has-flag": "^1.0.0" - }, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-discard-duplicates": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", - "integrity": "sha512-+lk5W1uqO8qIUTET+UETgj9GWykLC3LOldr7EehmymV0Wu36kyoHimC4cILrAAYpHQ+fr4ypKcWcVNaGzm0reA==", + "node_modules/npm/node_modules/is-cidr": { + "version": "5.1.1", "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", "dependencies": { - "postcss": "^5.0.4" + "cidr-regex": "^4.1.1" + }, + "engines": { + "node": ">=14" } }, - "node_modules/postcss-discard-duplicates/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/npm/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", "dev": true, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-discard-duplicates/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/npm/node_modules/isexe": { + "version": "2.0.0", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "inBundle": true, + "license": "ISC" }, - "node_modules/postcss-discard-duplicates/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/npm/node_modules/jackspeak": { + "version": "3.4.3", "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "@isaacs/cliui": "^8.0.2" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/postcss-discard-duplicates/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/npm/node_modules/jsbn": { + "version": "1.1.0", "dev": true, - "engines": { - "node": ">=0.8.0" - } + "inBundle": true, + "license": "MIT" }, - "node_modules/postcss-discard-duplicates/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/npm/node_modules/json-parse-even-better-errors": { + "version": "4.0.0", "dev": true, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-discard-duplicates/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/npm/node_modules/json-stringify-nice": { + "version": "1.1.4", "dev": true, - "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - }, - "engines": { - "node": ">=0.12" + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/postcss-discard-duplicates/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/npm/node_modules/jsonparse": { + "version": "1.3.1", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "engines": [ + "node >= 0.2.0" + ], + "inBundle": true, + "license": "MIT" }, - "node_modules/postcss-discard-duplicates/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/npm/node_modules/just-diff": { + "version": "6.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/just-diff-apply": { + "version": "5.5.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/libnpmaccess": { + "version": "9.0.0", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "ansi-regex": "^2.0.0" + "npm-package-arg": "^12.0.0", + "npm-registry-fetch": "^18.0.1" }, "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-discard-duplicates/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/npm/node_modules/libnpmdiff": { + "version": "7.0.1", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "has-flag": "^1.0.0" + "@npmcli/arborist": "^8.0.1", + "@npmcli/installed-package-contents": "^3.0.0", + "binary-extensions": "^2.3.0", + "diff": "^5.1.0", + "minimatch": "^9.0.4", + "npm-package-arg": "^12.0.0", + "pacote": "^19.0.0", + "tar": "^6.2.1" }, "engines": { - "node": ">=0.8.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-discard-empty": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", - "integrity": "sha512-IBFoyrwk52dhF+5z/ZAbzq5Jy7Wq0aLUsOn69JNS+7YeuyHaNzJwBIYE0QlUH/p5d3L+OON72Fsexyb7OK/3og==", + "node_modules/npm/node_modules/libnpmexec": { + "version": "9.0.1", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "postcss": "^5.0.14" - } - }, - "node_modules/postcss-discard-empty/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, + "@npmcli/arborist": "^8.0.1", + "@npmcli/run-script": "^9.0.1", + "ci-info": "^4.0.0", + "npm-package-arg": "^12.0.0", + "pacote": "^19.0.0", + "proc-log": "^5.0.0", + "read": "^4.0.0", + "read-package-json-fast": "^4.0.0", + "semver": "^7.3.7", + "walk-up-path": "^3.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-discard-empty/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/npm/node_modules/libnpmfund": { + "version": "6.0.1", "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^8.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-discard-empty/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/npm/node_modules/libnpmhook": { + "version": "11.0.0", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "aproba": "^2.0.0", + "npm-registry-fetch": "^18.0.1" }, "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-discard-empty/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/npm/node_modules/libnpmorg": { + "version": "7.0.0", "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^18.0.1" + }, "engines": { - "node": ">=0.8.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-discard-empty/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/npm/node_modules/libnpmpack": { + "version": "8.0.1", "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^8.0.1", + "@npmcli/run-script": "^9.0.1", + "npm-package-arg": "^12.0.0", + "pacote": "^19.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-discard-empty/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/npm/node_modules/libnpmpublish": { + "version": "10.0.1", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "ci-info": "^4.0.0", + "normalize-package-data": "^7.0.0", + "npm-package-arg": "^12.0.0", + "npm-registry-fetch": "^18.0.1", + "proc-log": "^5.0.0", + "semver": "^7.3.7", + "sigstore": "^3.0.0", + "ssri": "^12.0.0" }, "engines": { - "node": ">=0.12" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-discard-empty/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/npm/node_modules/libnpmsearch": { + "version": "8.0.0", "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^18.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-discard-empty/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/npm/node_modules/libnpmteam": { + "version": "7.0.0", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "ansi-regex": "^2.0.0" + "aproba": "^2.0.0", + "npm-registry-fetch": "^18.0.1" }, "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-discard-empty/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/npm/node_modules/libnpmversion": { + "version": "7.0.0", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "has-flag": "^1.0.0" + "@npmcli/git": "^6.0.1", + "@npmcli/run-script": "^9.0.1", + "json-parse-even-better-errors": "^4.0.0", + "proc-log": "^5.0.0", + "semver": "^7.3.7" }, "engines": { - "node": ">=0.8.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-discard-overridden": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", - "integrity": "sha512-IyKoDL8QNObOiUc6eBw8kMxBHCfxUaERYTUe2QF8k7j/xiirayDzzkmlR6lMQjrAM1p1DDRTvWrS7Aa8lp6/uA==", + "node_modules/npm/node_modules/lru-cache": { + "version": "10.4.3", "dev": true, - "dependencies": { - "postcss": "^5.0.16" - } + "inBundle": true, + "license": "ISC" }, - "node_modules/postcss-discard-overridden/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/npm/node_modules/make-fetch-happen": { + "version": "14.0.3", "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/agent": "^3.0.0", + "cacache": "^19.0.1", + "http-cache-semantics": "^4.1.1", + "minipass": "^7.0.2", + "minipass-fetch": "^4.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^1.0.0", + "proc-log": "^5.0.0", + "promise-retry": "^2.0.1", + "ssri": "^12.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-discard-overridden/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/npm/node_modules/make-fetch-happen/node_modules/negotiator": { + "version": "1.0.0", "dev": true, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "node_modules/postcss-discard-overridden/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/npm/node_modules/minimatch": { + "version": "9.0.5", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/postcss-discard-overridden/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/npm/node_modules/minipass": { + "version": "7.1.2", "dev": true, + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=0.8.0" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/postcss-discard-overridden/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/npm/node_modules/minipass-collect": { + "version": "2.0.1", "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, "engines": { - "node": ">=0.10.0" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/postcss-discard-overridden/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/npm/node_modules/minipass-fetch": { + "version": "4.0.1", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^3.0.1" }, "engines": { - "node": ">=0.12" + "node": "^18.17.0 || >=20.5.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" } }, - "node_modules/postcss-discard-overridden/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/npm/node_modules/minipass-flush": { + "version": "1.0.5", "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/postcss-discard-overridden/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/npm/node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "ansi-regex": "^2.0.0" + "yallist": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-discard-overridden/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/npm/node_modules/minipass-pipeline": { + "version": "1.2.4", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "has-flag": "^1.0.0" + "minipass": "^3.0.0" }, "engines": { - "node": ">=0.8.0" + "node": ">=8" } }, - "node_modules/postcss-discard-unused": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", - "integrity": "sha512-nCbFNfqYAbKCw9J6PSJubpN9asnrwVLkRDFc4KCwyUEdOtM5XDE/eTW3OpqHrYY1L4fZxgan7LLRAAYYBzwzrg==", + "node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "postcss": "^5.0.14", - "uniqs": "^2.0.0" + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/postcss-discard-unused/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/npm/node_modules/minipass-sized": { + "version": "1.0.3", "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-discard-unused/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/npm/node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-discard-unused/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/npm/node_modules/minizlib": { + "version": "3.0.2", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "minipass": "^7.1.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 18" } }, - "node_modules/postcss-discard-unused/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/npm/node_modules/mkdirp": { + "version": "1.0.4", "dev": true, + "inBundle": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, "engines": { - "node": ">=0.8.0" + "node": ">=10" } }, - "node_modules/postcss-discard-unused/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/npm/node_modules/ms": { + "version": "2.1.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/mute-stream": { + "version": "2.0.0", "dev": true, + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-discard-unused/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/npm/node_modules/node-gyp": { + "version": "11.2.0", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^14.0.3", + "nopt": "^8.0.0", + "proc-log": "^5.0.0", + "semver": "^7.3.5", + "tar": "^7.4.3", + "tinyglobby": "^0.2.12", + "which": "^5.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" }, "engines": { - "node": ">=0.12" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-discard-unused/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/npm/node_modules/node-gyp/node_modules/chownr": { + "version": "3.0.0", "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0", "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/postcss-discard-unused/node_modules/strip-ansi": { + "node_modules/npm/node_modules/node-gyp/node_modules/mkdirp": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" + "inBundle": true, + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/postcss-discard-unused/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/npm/node_modules/node-gyp/node_modules/tar": { + "version": "7.4.3", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "has-flag": "^1.0.0" + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" }, "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/postcss-filter-plugins": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz", - "integrity": "sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ==", - "dev": true, - "dependencies": { - "postcss": "^5.0.4" + "node": ">=18" } }, - "node_modules/postcss-filter-plugins/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/npm/node_modules/node-gyp/node_modules/yallist": { + "version": "5.0.0", "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0", "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/postcss-filter-plugins/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/npm/node_modules/nopt": { + "version": "8.1.0", "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "abbrev": "^3.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-filter-plugins/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/npm/node_modules/normalize-package-data": { + "version": "7.0.0", "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "hosted-git-info": "^8.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" }, "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-filter-plugins/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/npm/node_modules/npm-audit-report": { + "version": "6.0.0", "dev": true, + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=0.8.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-filter-plugins/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/npm/node_modules/npm-bundled": { + "version": "4.0.0", "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-normalize-package-bin": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-filter-plugins/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/npm/node_modules/npm-install-checks": { + "version": "7.1.1", "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "semver": "^7.1.1" }, "engines": { - "node": ">=0.12" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-filter-plugins/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/npm/node_modules/npm-normalize-package-bin": { + "version": "4.0.0", "dev": true, + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-filter-plugins/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/npm/node_modules/npm-package-arg": { + "version": "12.0.2", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "ansi-regex": "^2.0.0" + "hosted-git-info": "^8.0.0", + "proc-log": "^5.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^6.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-filter-plugins/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/npm/node_modules/npm-packlist": { + "version": "9.0.0", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "has-flag": "^1.0.0" + "ignore-walk": "^7.0.0" }, "engines": { - "node": ">=0.8.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-merge-idents": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", - "integrity": "sha512-9DHmfCZ7/hNHhIKnNkz4CU0ejtGen5BbTRJc13Z2uHfCedeCUsK2WEQoAJRBL+phs68iWK6Qf8Jze71anuysWA==", + "node_modules/npm/node_modules/npm-pick-manifest": { + "version": "10.0.0", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "has": "^1.0.1", - "postcss": "^5.0.10", - "postcss-value-parser": "^3.1.1" - } - }, - "node_modules/postcss-merge-idents/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, + "npm-install-checks": "^7.1.0", + "npm-normalize-package-bin": "^4.0.0", + "npm-package-arg": "^12.0.0", + "semver": "^7.3.5" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-merge-idents/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/npm/node_modules/npm-profile": { + "version": "11.0.1", "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^18.0.0", + "proc-log": "^5.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-merge-idents/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/npm/node_modules/npm-registry-fetch": { + "version": "18.0.2", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "@npmcli/redact": "^3.0.0", + "jsonparse": "^1.3.1", + "make-fetch-happen": "^14.0.0", + "minipass": "^7.0.2", + "minipass-fetch": "^4.0.0", + "minizlib": "^3.0.1", + "npm-package-arg": "^12.0.0", + "proc-log": "^5.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-merge-idents/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/npm/node_modules/npm-user-validate": { + "version": "3.0.0", "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", "engines": { - "node": ">=0.8.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-merge-idents/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/npm/node_modules/p-map": { + "version": "7.0.3", "dev": true, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-merge-idents/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/npm/node_modules/package-json-from-dist": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/npm/node_modules/pacote": { + "version": "19.0.1", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "@npmcli/git": "^6.0.0", + "@npmcli/installed-package-contents": "^3.0.0", + "@npmcli/package-json": "^6.0.0", + "@npmcli/promise-spawn": "^8.0.0", + "@npmcli/run-script": "^9.0.0", + "cacache": "^19.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^12.0.0", + "npm-packlist": "^9.0.0", + "npm-pick-manifest": "^10.0.0", + "npm-registry-fetch": "^18.0.0", + "proc-log": "^5.0.0", + "promise-retry": "^2.0.1", + "sigstore": "^3.0.0", + "ssri": "^12.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "bin/index.js" }, "engines": { - "node": ">=0.12" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-merge-idents/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true + "node_modules/npm/node_modules/parse-conflict-json": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^4.0.0", + "just-diff": "^6.0.0", + "just-diff-apply": "^5.2.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } }, - "node_modules/postcss-merge-idents/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/npm/node_modules/path-key": { + "version": "3.1.1", "dev": true, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-merge-idents/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/npm/node_modules/path-scurry": { + "version": "1.11.1", "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0", "dependencies": { - "ansi-regex": "^2.0.0" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/postcss-merge-idents/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/npm/node_modules/postcss-selector-parser": { + "version": "7.1.0", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "has-flag": "^1.0.0" + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" }, "engines": { - "node": ">=0.8.0" + "node": ">=4" } }, - "node_modules/postcss-merge-longhand": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", - "integrity": "sha512-ma7YvxjdLQdifnc1HFsW/AW6fVfubGyR+X4bE3FOSdBVMY9bZjKVdklHT+odknKBB7FSCfKIHC3yHK7RUAqRPg==", + "node_modules/npm/node_modules/proc-log": { + "version": "5.0.0", "dev": true, - "dependencies": { - "postcss": "^5.0.4" + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-merge-longhand/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/npm/node_modules/proggy": { + "version": "3.0.0", "dev": true, + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-merge-longhand/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/npm/node_modules/promise-all-reject-late": { + "version": "1.0.1", "dev": true, - "engines": { - "node": ">=0.10.0" + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/postcss-merge-longhand/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/npm/node_modules/promise-call-limit": { + "version": "3.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-retry": { + "version": "2.0.1", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "err-code": "^2.0.2", + "retry": "^0.12.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/postcss-merge-longhand/node_modules/chalk/node_modules/supports-color": { + "node_modules/npm/node_modules/promzard": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "read": "^4.0.0" + }, "engines": { - "node": ">=0.8.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-merge-longhand/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/npm/node_modules/qrcode-terminal": { + "version": "0.12.0", "dev": true, - "engines": { - "node": ">=0.10.0" + "inBundle": true, + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" } }, - "node_modules/postcss-merge-longhand/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/npm/node_modules/read": { + "version": "4.1.0", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "mute-stream": "^2.0.0" }, "engines": { - "node": ">=0.12" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-merge-longhand/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/npm/node_modules/read-cmd-shim": { + "version": "5.0.0", "dev": true, + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-merge-longhand/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/npm/node_modules/read-package-json-fast": { + "version": "4.0.0", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "ansi-regex": "^2.0.0" + "json-parse-even-better-errors": "^4.0.0", + "npm-normalize-package-bin": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-merge-longhand/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/npm/node_modules/retry": { + "version": "0.12.0", "dev": true, - "dependencies": { - "has-flag": "^1.0.0" - }, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">= 4" } }, - "node_modules/postcss-merge-rules": { + "node_modules/npm/node_modules/safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", - "integrity": "sha512-Wgg2FS6W3AYBl+5L9poL6ZUISi5YzL+sDCJfM7zNw/Q1qsyVQXXZ2cbVui6mu2cYJpt1hOKCGj1xA4mq/obz/Q==", "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/npm/node_modules/semver": { + "version": "7.7.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/shebang-command": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "browserslist": "^1.5.2", - "caniuse-api": "^1.5.2", - "postcss": "^5.0.4", - "postcss-selector-parser": "^2.2.2", - "vendors": "^1.0.0" + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/postcss-merge-rules/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/npm/node_modules/shebang-regex": { + "version": "3.0.0", "dev": true, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-merge-rules/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/npm/node_modules/signal-exit": { + "version": "4.1.0", "dev": true, + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/postcss-merge-rules/node_modules/browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha512-qHJblDE2bXVRYzuDetv/wAeHOJyO97+9wxC1cdCtyzgNuSozOyRCiiLaCR1f71AN66lQdVVBipWm63V+a7bPOw==", - "deprecated": "Browserslist 2 could fail on reading Browserslist >3.0 config used in other tools.", + "node_modules/npm/node_modules/sigstore": { + "version": "3.1.0", "dev": true, + "inBundle": true, + "license": "Apache-2.0", "dependencies": { - "caniuse-db": "^1.0.30000639", - "electron-to-chromium": "^1.2.7" + "@sigstore/bundle": "^3.1.0", + "@sigstore/core": "^2.0.0", + "@sigstore/protobuf-specs": "^0.4.0", + "@sigstore/sign": "^3.1.0", + "@sigstore/tuf": "^3.1.0", + "@sigstore/verify": "^2.1.0" }, - "bin": { - "browserslist": "cli.js" + "engines": { + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-merge-rules/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/npm/node_modules/sigstore/node_modules/@sigstore/bundle": { + "version": "3.1.0", "dev": true, + "inBundle": true, + "license": "Apache-2.0", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "@sigstore/protobuf-specs": "^0.4.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-merge-rules/node_modules/chalk/node_modules/supports-color": { + "node_modules/npm/node_modules/sigstore/node_modules/@sigstore/core": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", "dev": true, + "inBundle": true, + "license": "Apache-2.0", "engines": { - "node": ">=0.8.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-merge-rules/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/npm/node_modules/sigstore/node_modules/@sigstore/sign": { + "version": "3.1.0", "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^3.1.0", + "@sigstore/core": "^2.0.0", + "@sigstore/protobuf-specs": "^0.4.0", + "make-fetch-happen": "^14.0.2", + "proc-log": "^5.0.0", + "promise-retry": "^2.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-merge-rules/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/npm/node_modules/sigstore/node_modules/@sigstore/verify": { + "version": "2.1.1", "dev": true, + "inBundle": true, + "license": "Apache-2.0", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "@sigstore/bundle": "^3.1.0", + "@sigstore/core": "^2.0.0", + "@sigstore/protobuf-specs": "^0.4.1" }, "engines": { - "node": ">=0.12" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-merge-rules/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/npm/node_modules/smart-buffer": { + "version": "4.2.0", "dev": true, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 6.0.0", + "npm": ">= 3.0.0" } }, - "node_modules/postcss-merge-rules/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/npm/node_modules/socks": { + "version": "2.8.5", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 10.0.0", + "npm": ">= 3.0.0" } }, - "node_modules/postcss-merge-rules/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/npm/node_modules/socks-proxy-agent": { + "version": "8.0.5", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "has-flag": "^1.0.0" + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "socks": "^2.8.3" }, "engines": { - "node": ">=0.8.0" + "node": ">= 14" } }, - "node_modules/postcss-message-helpers": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", - "integrity": "sha512-tPLZzVAiIJp46TBbpXtrUAKqedXSyW5xDEo1sikrfEfnTs+49SBZR/xDdqCiJvSSbtr615xDsaMF3RrxS2jZlA==", - "dev": true - }, - "node_modules/postcss-minify-font-values": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", - "integrity": "sha512-vFSPzrJhNe6/8McOLU13XIsERohBJiIFFuC1PolgajOZdRWqRgKITP/A4Z/n4GQhEmtbxmO9NDw3QLaFfE1dFQ==", + "node_modules/npm/node_modules/spdx-correct": { + "version": "3.2.0", "dev": true, + "inBundle": true, + "license": "Apache-2.0", "dependencies": { - "object-assign": "^4.0.1", - "postcss": "^5.0.4", - "postcss-value-parser": "^3.0.2" + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/postcss-minify-font-values/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse": { + "version": "3.0.1", "dev": true, - "engines": { - "node": ">=0.10.0" + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/postcss-minify-font-values/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/npm/node_modules/spdx-exceptions": { + "version": "2.5.0", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "inBundle": true, + "license": "CC-BY-3.0" }, - "node_modules/postcss-minify-font-values/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/npm/node_modules/spdx-expression-parse": { + "version": "4.0.0", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/postcss-minify-font-values/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/npm/node_modules/spdx-license-ids": { + "version": "3.0.21", + "dev": true, + "inBundle": true, + "license": "CC0-1.0" + }, + "node_modules/npm/node_modules/sprintf-js": { + "version": "1.1.3", "dev": true, - "engines": { - "node": ">=0.8.0" - } + "inBundle": true, + "license": "BSD-3-Clause" }, - "node_modules/postcss-minify-font-values/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/npm/node_modules/ssri": { + "version": "12.0.0", "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-minify-font-values/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/npm/node_modules/string-width": { + "version": "4.2.3", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=0.12" + "node": ">=8" } }, - "node_modules/postcss-minify-font-values/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-minify-font-values/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/npm/node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-minify-font-values/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/npm/node_modules/strip-ansi": { + "version": "6.0.1", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-minify-font-values/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/npm/node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "has-flag": "^1.0.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=0.8.0" + "node": ">=8" } }, - "node_modules/postcss-minify-gradients": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", - "integrity": "sha512-DZhT0OE+RbVqVyGsTIKx84rU/5cury1jmwPa19bViqYPQu499ZU831yMzzsyC8EhiZVd73+h5Z9xb/DdaBpw7Q==", + "node_modules/npm/node_modules/supports-color": { + "version": "9.4.0", "dev": true, - "dependencies": { - "postcss": "^5.0.12", - "postcss-value-parser": "^3.3.0" + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/postcss-minify-gradients/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/npm/node_modules/tar": { + "version": "6.2.1", "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/postcss-minify-gradients/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/npm/node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/postcss-minify-gradients/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "yallist": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-minify-gradients/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/npm/node_modules/tar/node_modules/minipass": { + "version": "5.0.0", "dev": true, + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=0.8.0" + "node": ">=8" } }, - "node_modules/postcss-minify-gradients/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/npm/node_modules/tar/node_modules/minizlib": { + "version": "2.1.2", "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/postcss-minify-gradients/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/npm/node_modules/tar/node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "yallist": "^4.0.0" }, "engines": { - "node": ">=0.12" + "node": ">=8" } }, - "node_modules/postcss-minify-gradients/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-minify-gradients/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/npm/node_modules/text-table": { + "version": "0.2.0", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "inBundle": true, + "license": "MIT" }, - "node_modules/postcss-minify-gradients/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/npm/node_modules/tiny-relative-date": { + "version": "1.3.0", "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } + "inBundle": true, + "license": "MIT" }, - "node_modules/postcss-minify-gradients/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/npm/node_modules/tinyglobby": { + "version": "0.2.14", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "has-flag": "^1.0.0" + "fdir": "^6.4.4", + "picomatch": "^4.0.2" }, "engines": { - "node": ">=0.8.0" + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" } }, - "node_modules/postcss-minify-params": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", - "integrity": "sha512-hhJdMVgP8vasrHbkKAk+ab28vEmPYgyuDzRl31V3BEB3QOR3L5TTIVEWLDNnZZ3+fiTi9d6Ker8GM8S1h8p2Ow==", + "node_modules/npm/node_modules/tinyglobby/node_modules/fdir": { + "version": "6.4.6", "dev": true, - "dependencies": { - "alphanum-sort": "^1.0.1", - "postcss": "^5.0.2", - "postcss-value-parser": "^3.0.2", - "uniqs": "^2.0.0" + "inBundle": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } } }, - "node_modules/postcss-minify-params/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/npm/node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.2", "dev": true, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/postcss-minify-params/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/npm/node_modules/treeverse": { + "version": "3.0.0", "dev": true, + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/postcss-minify-params/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/npm/node_modules/tuf-js": { + "version": "3.0.1", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "@tufjs/models": "3.0.1", + "debug": "^4.3.6", + "make-fetch-happen": "^14.0.1" }, "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-minify-params/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/npm/node_modules/tuf-js/node_modules/@tufjs/models": { + "version": "3.0.1", "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@tufjs/canonical-json": "2.0.0", + "minimatch": "^9.0.5" + }, "engines": { - "node": ">=0.8.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-minify-params/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/npm/node_modules/unique-filename": { + "version": "4.0.0", "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^5.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-minify-params/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/npm/node_modules/unique-slug": { + "version": "5.0.0", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "imurmurhash": "^0.1.4" }, "engines": { - "node": ">=0.12" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-minify-params/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true + "node_modules/npm/node_modules/util-deprecate": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" }, - "node_modules/postcss-minify-params/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/npm/node_modules/validate-npm-package-license": { + "version": "3.0.4", "dev": true, - "engines": { - "node": ">=0.10.0" + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, - "node_modules/postcss-minify-params/node_modules/strip-ansi": { + "node_modules/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/postcss-minify-params/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/npm/node_modules/validate-npm-package-name": { + "version": "6.0.1", "dev": true, - "dependencies": { - "has-flag": "^1.0.0" - }, + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=0.8.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-minify-selectors": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", - "integrity": "sha512-e13vxPBSo3ZaPne43KVgM+UETkx3Bs4/Qvm6yXI9HQpQp4nyb7HZ0gKpkF+Wn2x+/dbQ+swNpCdZSbMOT7+TIA==", + "node_modules/npm/node_modules/walk-up-path": { + "version": "3.0.1", "dev": true, - "dependencies": { - "alphanum-sort": "^1.0.2", - "has": "^1.0.1", - "postcss": "^5.0.14", - "postcss-selector-parser": "^2.0.0" - } + "inBundle": true, + "license": "ISC" }, - "node_modules/postcss-minify-selectors/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/npm/node_modules/which": { + "version": "5.0.0", "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-minify-selectors/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/npm/node_modules/which/node_modules/isexe": { + "version": "3.1.1", "dev": true, + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": ">=16" } }, - "node_modules/postcss-minify-selectors/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/npm/node_modules/wrap-ansi": { + "version": "8.1.0", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-minify-selectors/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true, - "engines": { - "node": ">=0.8.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/postcss-minify-selectors/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/npm/node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/postcss-minify-selectors/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.12" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/postcss-minify-selectors/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.1.0", "dev": true, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/postcss-minify-selectors/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "9.2.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-minify-selectors/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "has-flag": "^1.0.0" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=0.8.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/postcss-normalize-charset": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", - "integrity": "sha512-RKgjEks83l8w4yEhztOwNZ+nLSrJ+NvPNhpS+mVDzoaiRHZQVoG7NF2TP5qjwnaN9YswUhj6m1E0S0Z+WDCgEQ==", + "node_modules/npm/node_modules/write-file-atomic": { + "version": "6.0.0", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "postcss": "^5.0.5" - } - }, - "node_modules/postcss-normalize-charset/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-normalize-charset/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/npm/node_modules/yallist": { + "version": "4.0.0", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "inBundle": true, + "license": "ISC" }, - "node_modules/postcss-normalize-charset/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "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, + "license": "BSD-2-Clause", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "boolbase": "^1.0.0" }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/postcss-normalize-charset/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-normalize-charset/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", - "dev": true, + "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==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/postcss-normalize-charset/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "license": "MIT", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" }, "engines": { - "node": ">=0.12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-normalize-charset/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, + "node_modules/object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", + "license": "MIT", + "dependencies": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/postcss-normalize-charset/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "isobject": "^3.0.1" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/postcss-normalize-charset/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^1.0.0" + "ee-first": "1.1.1" }, "engines": { - "node": ">=0.8.0" + "node": ">= 0.8" } }, - "node_modules/postcss-normalize-url": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", - "integrity": "sha512-WqtWG6GV2nELsQEFES0RzfL2ebVwmGl/M8VmMbshKto/UClBo+mznX8Zi4/hkThdqx7ijwv+O8HWPdpK7nH/Ig==", - "dev": true, + "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==", + "license": "ISC", "dependencies": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^1.4.0", - "postcss": "^5.0.14", - "postcss-value-parser": "^3.2.3" - } - }, - "node_modules/postcss-normalize-url/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-normalize-url/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "wrappy": "1" } }, - "node_modules/postcss-normalize-url/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "mimic-fn": "^2.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-normalize-url/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/opn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", + "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", "dev": true, + "license": "MIT", + "dependencies": { + "is-wsl": "^1.1.0" + }, "engines": { - "node": ">=0.8.0" + "node": ">=4" } }, - "node_modules/postcss-normalize-url/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, + "license": "MIT", + "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.5" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.8.0" } }, - "node_modules/postcss-normalize-url/node_modules/normalize-url": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", - "integrity": "sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ==", + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", "dev": true, + "license": "MIT", "dependencies": { - "object-assign": "^4.0.1", - "prepend-http": "^1.0.0", - "query-string": "^4.1.0", - "sort-keys": "^1.0.0" + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-normalize-url/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/ora/node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, - "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - }, + "license": "MIT", "engines": { - "node": ">=0.12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-normalize-url/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-normalize-url/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/postcss-normalize-url/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-normalize-url/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/p-each-series": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-3.0.0.tgz", + "integrity": "sha512-lastgtAdoH9YaLyDa5i5z64q+kzOcQHsQ5SsZJD3q0VEyI8mq872S3geuNbRUQLVAE9siMfgKrpj7MloKFHruw==", "dev": true, - "dependencies": { - "has-flag": "^1.0.0" - }, + "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-ordered-values": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", - "integrity": "sha512-5RB1IUZhkxDCfa5fx/ogp/A82mtq+r7USqS+7zt0e428HJ7+BHCxyeY39ClmkkUtxdOd3mk8gD6d9bjH2BECMg==", + "node_modules/p-filter": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-4.1.0.tgz", + "integrity": "sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==", "dev": true, + "license": "MIT", "dependencies": { - "postcss": "^5.0.4", - "postcss-value-parser": "^3.0.1" + "p-map": "^7.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-ordered-values/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/p-is-promise": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", + "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-ordered-values/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-ordered-values/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "p-limit": "^3.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-ordered-values/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true, + "node_modules/p-map": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz", + "integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==", + "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-ordered-values/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/p-reduce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", + "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-ordered-values/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "dev": true, - "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - }, + "license": "MIT", "engines": { - "node": ">=0.12" + "node": ">=4" } }, - "node_modules/postcss-ordered-values/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-ordered-values/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "BlueOak-1.0.0" }, - "node_modules/postcss-ordered-values/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "license": "(MIT AND Zlib)" + }, + "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, + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "callsites": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/postcss-ordered-values/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", - "dev": true, + "node_modules/parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", + "license": "MIT", "dependencies": { - "has-flag": "^1.0.0" + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" }, "engines": { - "node": ">=0.8.0" + "node": ">=0.8" } }, - "node_modules/postcss-reduce-idents": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", - "integrity": "sha512-0+Ow9e8JLtffjumJJFPqvN4qAvokVbdQPnijUDSOX8tfTwrILLP4ETvrZcXZxAtpFLh/U0c+q8oRMJLr1Kiu4w==", + "node_modules/parse-json": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz", + "integrity": "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==", "dev": true, + "license": "MIT", "dependencies": { - "postcss": "^5.0.4", - "postcss-value-parser": "^3.0.2" - } - }, - "node_modules/postcss-reduce-idents/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, + "@babel/code-frame": "^7.26.2", + "index-to-position": "^1.1.0", + "type-fest": "^4.39.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-reduce-idents/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/parse-json/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-reduce-idents/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "node": ">=16" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-reduce-idents/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/parse-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-reduce-idents/node_modules/has-flag": { + "node_modules/parse-passwd": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", - "dev": true, + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/postcss-reduce-idents/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "dev": true, + "license": "MIT" + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - }, - "engines": { - "node": ">=0.12" + "parse5": "^6.0.1" } }, - "node_modules/postcss-reduce-idents/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true, + "license": "MIT" }, - "node_modules/postcss-reduce-idents/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.8" } }, - "node_modules/postcss-reduce-idents/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-reduce-idents/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "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, - "dependencies": { - "has-flag": "^1.0.0" - }, + "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=0.10.0" } }, - "node_modules/postcss-reduce-initial": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", - "integrity": "sha512-jJFrV1vWOPCQsIVitawGesRgMgunbclERQ/IRGW7r93uHrVzNQQmHQ7znsOIjJPZ4yWMzs5A8NFhp3AkPHPbDA==", + "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, - "dependencies": { - "postcss": "^5.0.4" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/postcss-reduce-initial/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, + "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==", + "license": "MIT" + }, + "node_modules/path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", + "license": "MIT", + "dependencies": { + "path-root-regex": "^0.1.0" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/postcss-reduce-initial/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true, + "node_modules/path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/postcss-reduce-initial/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/path-scurry": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" }, "engines": { - "node": ">=0.10.0" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/postcss-reduce-initial/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz", + "integrity": "sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==", "dev": true, + "license": "ISC", "engines": { - "node": ">=0.8.0" + "node": "20 || >=22" } }, - "node_modules/postcss-reduce-initial/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "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, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-reduce-initial/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "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==", + "license": "MIT", + "bin": { + "pidtree": "bin/pidtree.js" }, "engines": { - "node": ">=0.12" + "node": ">=0.10" } }, - "node_modules/postcss-reduce-initial/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/postcss-reduce-initial/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/pkg-conf": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", + "integrity": "sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "find-up": "^2.0.0", + "load-json-file": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/postcss-reduce-initial/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/pkg-conf/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^1.0.0" + "locate-path": "^2.0.0" }, "engines": { - "node": ">=0.8.0" + "node": ">=4" } }, - "node_modules/postcss-reduce-transforms": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", - "integrity": "sha512-lGgRqnSuAR5i5uUg1TA33r9UngfTadWxOyL2qx1KuPoCQzfmtaHjp9PuwX7yVyRxG3BWBzeFUaS5uV9eVgnEgQ==", + "node_modules/pkg-conf/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", "dev": true, + "license": "MIT", "dependencies": { - "has": "^1.0.1", - "postcss": "^5.0.8", - "postcss-value-parser": "^3.0.1" - } - }, - "node_modules/postcss-reduce-transforms/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/postcss-reduce-transforms/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/pkg-conf/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^1.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/postcss-reduce-transforms/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/pkg-conf/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "p-limit": "^1.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/postcss-reduce-transforms/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/pkg-conf/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=4" } }, - "node_modules/postcss-reduce-transforms/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/plugin-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-2.0.1.tgz", + "integrity": "sha512-zMakqvIDyY40xHOvzXka0kUvf40nYIuwRE8dWhti2WtjQZ31xAgBZBhxsK7vK3QbRXS1Xms/LO7B5cuAsfB2Gg==", "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^1.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10.13.0" } }, - "node_modules/postcss-reduce-transforms/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/portscanner": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", + "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "async": "^2.6.0", + "is-number-like": "^1.0.3" }, "engines": { - "node": ">=0.12" + "node": ">=0.4", + "npm": ">=1.0.0" } }, - "node_modules/postcss-reduce-transforms/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-reduce-transforms/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/postcss-reduce-transforms/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, + "node_modules/postcss": { + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.4.tgz", + "integrity": "sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { - "node": ">=0.10.0" + "node": "^10 || ^12 || >=14" } }, - "node_modules/postcss-reduce-transforms/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/postcss-calc": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-10.1.1.tgz", + "integrity": "sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^1.0.0" + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=0.8.0" + "node": "^18.12 || ^20.9 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.38" } }, - "node_modules/postcss-selector-parser": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", - "integrity": "sha512-3pqyakeGhrO0BQ5+/tGTfvi5IAUAhHRayGK8WFSu06aEv2BmHoXw/Mhb+w7VY5HERIuC+QoUI7wgrCcq2hqCVA==", + "node_modules/postcss-colormin": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-7.0.4.tgz", + "integrity": "sha512-ziQuVzQZBROpKpfeDwmrG+Vvlr0YWmY/ZAk99XD+mGEBuEojoFekL41NCsdhyNUtZI7DPOoIWIR7vQQK9xwluw==", "dev": true, + "license": "MIT", "dependencies": { - "flatten": "^1.0.2", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "browserslist": "^4.25.1", + "caniuse-api": "^3.0.0", + "colord": "^2.9.3", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/postcss-svgo": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", - "integrity": "sha512-y5AdQdgBoF4rbpdbeWAJuxE953g/ylRfVNp6mvAi61VCN/Y25Tu9p5mh3CyI42WbTRIiwR9a1GdFtmDnNPeskQ==", + "node_modules/postcss-convert-values": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-7.0.6.tgz", + "integrity": "sha512-MD/eb39Mr60hvgrqpXsgbiqluawYg/8K4nKsqRsuDX9f+xN1j6awZCUv/5tLH8ak3vYp/EMXwdcnXvfZYiejCQ==", "dev": true, + "license": "MIT", "dependencies": { - "is-svg": "^2.0.0", - "postcss": "^5.0.14", - "postcss-value-parser": "^3.2.3", - "svgo": "^0.7.0" + "browserslist": "^4.25.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/postcss-svgo/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/postcss-discard-comments": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-7.0.4.tgz", + "integrity": "sha512-6tCUoql/ipWwKtVP/xYiFf1U9QgJ0PUvxN7pTcsQ8Ns3Fnwq1pU5D5s1MhT/XySeLq6GXNvn37U46Ded0TckWg==", "dev": true, + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^7.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/postcss-svgo/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/postcss-discard-duplicates": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-7.0.2.tgz", + "integrity": "sha512-eTonaQvPZ/3i1ASDHOKkYwAybiM45zFIc7KXils4mQmHLqIswXD9XNOKEVxtTFnsmwYzF66u4LMgSr0abDlh5w==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/postcss-svgo/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/postcss-discard-empty": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-7.0.1.tgz", + "integrity": "sha512-cFrJKZvcg/uxB6Ijr4l6qmn3pXQBna9zyrPC+sK0zjbkDUZew+6xDltSF7OeB7rAtzaaMVYSdbod+sZOCWnMOg==", "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/postcss-svgo/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/postcss-discard-overridden": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-7.0.1.tgz", + "integrity": "sha512-7c3MMjjSZ/qYrx3uc1940GSOzN1Iqjtlqe8uoSg+qdVPYyRb0TILSqqmtlSFuE4mTDECwsm397Ya7iXGzfF7lg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/postcss-svgo/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/postcss-load-config": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-5.1.0.tgz", + "integrity": "sha512-G5AJ+IX0aD0dygOE0yFZQ/huFFMSNneyfp0e3/bT05a8OfPC5FUoZRPfGijUdGOJNMewJiwzcHJXFafFzeKFVA==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.1.1", + "yaml": "^2.4.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 18" + }, + "peerDependencies": { + "jiti": ">=1.21.0", + "postcss": ">=8.0.9", + "tsx": "^4.8.1" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tsx": { + "optional": true + } } }, - "node_modules/postcss-svgo/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/postcss-merge-longhand": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-7.0.5.tgz", + "integrity": "sha512-Kpu5v4Ys6QI59FxmxtNB/iHUVDn9Y9sYw66D6+SZoIk4QTz1prC4aYkhIESu+ieG1iylod1f8MILMs1Em3mmIw==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "postcss-value-parser": "^4.2.0", + "stylehacks": "^7.0.5" }, "engines": { - "node": ">=0.12" - } - }, - "node_modules/postcss-svgo/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-svgo/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/postcss-svgo/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/postcss-merge-rules": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-7.0.6.tgz", + "integrity": "sha512-2jIPT4Tzs8K87tvgCpSukRQ2jjd+hH6Bb8rEEOUDmmhOeTcqDg5fEFK8uKIu+Pvc3//sm3Uu6FRqfyv7YF7+BQ==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "browserslist": "^4.25.1", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^5.0.1", + "postcss-selector-parser": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/postcss-svgo/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/postcss-minify-font-values": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-7.0.1.tgz", + "integrity": "sha512-2m1uiuJeTplll+tq4ENOQSzB8LRnSUChBv7oSyFLsJRtUgAAJGP6LLz0/8lkinTgxrmJSPOEhgY1bMXOQ4ZXhQ==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^1.0.0" + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=0.8.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/postcss-unique-selectors": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", - "integrity": "sha512-WZX8r1M0+IyljoJOJleg3kYm10hxNYF9scqAT7v/xeSX1IdehutOM85SNO0gP9K+bgs86XERr7Ud5u3ch4+D8g==", + "node_modules/postcss-minify-gradients": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-7.0.1.tgz", + "integrity": "sha512-X9JjaysZJwlqNkJbUDgOclyG3jZEpAMOfof6PUZjPnPrePnPG62pS17CjdM32uT1Uq1jFvNSff9l7kNbmMSL2A==", "dev": true, + "license": "MIT", "dependencies": { - "alphanum-sort": "^1.0.1", - "postcss": "^5.0.4", - "uniqs": "^2.0.0" - } - }, - "node_modules/postcss-unique-selectors/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, + "colord": "^2.9.3", + "cssnano-utils": "^5.0.1", + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/postcss-unique-selectors/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/postcss-minify-params": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-7.0.4.tgz", + "integrity": "sha512-3OqqUddfH8c2e7M35W6zIwv7jssM/3miF9cbCSb1iJiWvtguQjlxZGIHK9JRmc8XAKmE2PFGtHSM7g/VcW97sw==", "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.25.1", + "cssnano-utils": "^5.0.1", + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/postcss-unique-selectors/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/postcss-minify-selectors": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-7.0.5.tgz", + "integrity": "sha512-x2/IvofHcdIrAm9Q+p06ZD1h6FPcQ32WtCRVodJLDR+WMn8EVHI1kvLxZuGKz/9EY5nAmI6lIQIrpo4tBy5+ug==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "cssesc": "^3.0.0", + "postcss-selector-parser": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/postcss-unique-selectors/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/postcss-normalize-charset": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-7.0.1.tgz", + "integrity": "sha512-sn413ofhSQHlZFae//m9FTOfkmiZ+YQXsbosqOWRiVQncU2BA3daX3n0VF3cG6rGLSFVc5Di/yns0dFfh8NFgQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/postcss-unique-selectors/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/postcss-normalize-display-values": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-7.0.1.tgz", + "integrity": "sha512-E5nnB26XjSYz/mGITm6JgiDpAbVuAkzXwLzRZtts19jHDUBFxZ0BkXAehy0uimrOjYJbocby4FVswA/5noOxrQ==", "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/postcss-unique-selectors/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/postcss-normalize-positions": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-7.0.1.tgz", + "integrity": "sha512-pB/SzrIP2l50ZIYu+yQZyMNmnAcwyYb9R1fVWPRxm4zcUFCY2ign7rcntGFuMXDdd9L2pPNUgoODDk91PzRZuQ==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=0.12" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/postcss-unique-selectors/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/postcss-normalize-repeat-style": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-7.0.1.tgz", + "integrity": "sha512-NsSQJ8zj8TIDiF0ig44Byo3Jk9e4gNt9x2VIlJudnQQ5DhWAHJPF4Tr1ITwyHio2BUi/I6Iv0HRO7beHYOloYQ==", "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/postcss-unique-selectors/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/postcss-normalize-string": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-7.0.1.tgz", + "integrity": "sha512-QByrI7hAhsoze992kpbMlJSbZ8FuCEc1OT9EFbZ6HldXNpsdpZr+YXC5di3UEv0+jeZlHbZcoCADgb7a+lPmmQ==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/postcss-unique-selectors/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/postcss-normalize-timing-functions": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-7.0.1.tgz", + "integrity": "sha512-bHifyuuSNdKKsnNJ0s8fmfLMlvsQwYVxIoUBnowIVl2ZAdrkYQNGVB4RxjfpvkMjipqvbz0u7feBZybkl/6NJg==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^1.0.0" + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=0.8.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" - }, - "node_modules/postcss-zindex": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", - "integrity": "sha512-uhRZ2hRgj0lorxm9cr62B01YzpUe63h0RXMXQ4gWW3oa2rpJh+FJAiEAytaFCPU/VgaBS+uW2SJ1XKyDNz1h4w==", + "node_modules/postcss-normalize-unicode": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.4.tgz", + "integrity": "sha512-LvIURTi1sQoZqj8mEIE8R15yvM+OhbR1avynMtI9bUzj5gGKR/gfZFd8O7VMj0QgJaIFzxDwxGl/ASMYAkqO8g==", "dev": true, + "license": "MIT", "dependencies": { - "has": "^1.0.1", - "postcss": "^5.0.4", - "uniqs": "^2.0.0" - } - }, - "node_modules/postcss-zindex/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, + "browserslist": "^4.25.1", + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/postcss-zindex/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/postcss-normalize-url": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-7.0.1.tgz", + "integrity": "sha512-sUcD2cWtyK1AOL/82Fwy1aIVm/wwj5SdZkgZ3QiUzSzQQofrbq15jWJ3BA7Z+yVRwamCjJgZJN0I9IS7c6tgeQ==", "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/postcss-zindex/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/postcss-normalize-whitespace": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-7.0.1.tgz", + "integrity": "sha512-vsbgFHMFQrJBJKrUFJNZ2pgBeBkC2IvvoHjz1to0/0Xk7sII24T0qFOiJzG6Fu3zJoq/0yI4rKWi7WhApW+EFA==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/postcss-zindex/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/postcss-ordered-values": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-7.0.2.tgz", + "integrity": "sha512-AMJjt1ECBffF7CEON/Y0rekRLS6KsePU6PRP08UqYW4UGFRnTXNrByUzYK1h8AC7UWTZdQ9O3Oq9kFIhm0SFEw==", "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-utils": "^5.0.1", + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": ">=0.8.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/postcss-zindex/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/postcss-reduce-initial": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-7.0.4.tgz", + "integrity": "sha512-rdIC9IlMBn7zJo6puim58Xd++0HdbvHeHaPgXsimMfG1ijC5A9ULvNLSE0rUKVJOvNMcwewW4Ga21ngyJjY/+Q==", "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.25.1", + "caniuse-api": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/postcss-zindex/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/postcss-reduce-transforms": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-7.0.1.tgz", + "integrity": "sha512-MhyEbfrm+Mlp/36hvZ9mT9DaO7dbncU0CvWI8V93LRkY6IYlu38OPg3FObnuKTUxJ4qA8HpurdQOo5CyqqO76g==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=0.12" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/postcss-zindex/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/postcss-zindex/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/postcss-svgo": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-7.1.0.tgz", + "integrity": "sha512-KnAlfmhtoLz6IuU3Sij2ycusNs4jPW+QoFE5kuuUOK8awR6tMxZQrs5Ey3BUz7nFCzT3eqyFgqkyrHiaU2xx3w==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "postcss-value-parser": "^4.2.0", + "svgo": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >= 18" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/postcss-zindex/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/postcss-unique-selectors": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-7.0.4.tgz", + "integrity": "sha512-pmlZjsmEAG7cHd7uK3ZiNSW6otSZ13RHuZ/4cDN/bVglS5EpF2r2oxY99SuOHa8m7AWoBCelTS3JPpzsIs8skQ==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^1.0.0" + "postcss-selector-parser": "^7.1.0" }, "engines": { - "node": ">=0.8.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" + }, "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, + "license": "MIT", "engines": { "node": ">= 0.8.0" } }, - "node_modules/prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/prettier": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", - "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", + "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, @@ -17542,63 +14258,66 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", + "node_modules/prettier-plugin-jinja-template": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-jinja-template/-/prettier-plugin-jinja-template-2.1.0.tgz", + "integrity": "sha512-mzoCp2Oy9BDSug80fw3B3J4n4KQj1hRvoQOL1akqcDKBb5nvYxrik9zUEDs4AEJ6nK7QDTGoH0y9rx7AlnQ78Q==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "prettier": "^3.0.0" + } + }, + "node_modules/pretty-ms": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.2.0.tgz", + "integrity": "sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse-ms": "^4.0.0" + }, "engines": { - "node": ">= 0.8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" }, "node_modules/proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", - "dev": true - }, - "node_modules/pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dependencies": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } + "dev": true, + "license": "ISC" }, "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==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/purgecss": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-5.0.0.tgz", - "integrity": "sha512-RAnuxrGuVyLLTr8uMbKaxDRGWMgK5CCYDfRyUNNcaz5P3kGgD2b7ymQGYEyo2ST7Tl/ScwFgf5l3slKMxHSbrw==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-7.0.2.tgz", + "integrity": "sha512-4Ku8KoxNhOWi9X1XJ73XY5fv+I+hhTRedKpGs/2gaBKU8ijUiIKF/uyyIyh7Wo713bELSICF5/NswjcuOqYouQ==", "dev": true, + "license": "MIT", "dependencies": { - "commander": "^9.0.0", - "glob": "^8.0.3", - "postcss": "^8.4.4", - "postcss-selector-parser": "^6.0.7" + "commander": "^12.1.0", + "glob": "^11.0.0", + "postcss": "^8.4.47", + "postcss-selector-parser": "^6.1.2" }, "bin": { "purgecss": "bin/purgecss.js" @@ -17609,46 +14328,57 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/purgecss/node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.2.tgz", + "integrity": "sha512-YT7U7Vye+t5fZ/QMkBFrTJ7ZQxInIUjwyAjVj84CYXqgBdv30MFUPGnBR6sQaVq6Is15wYJUsnzTuWaGRBhBAQ==", "dev": true, + "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "foreground-child": "^3.1.0", + "jackspeak": "^4.0.1", + "minimatch": "^10.0.0", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">=12" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/purgecss/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=10" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/purgecss/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==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dev": true, + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -17657,29 +14387,6 @@ "node": ">=4" } }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", - "dev": true, - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==", - "dev": true, - "dependencies": { - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -17697,13 +14404,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -17713,6 +14422,7 @@ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, + "license": "MIT", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -17728,6 +14438,7 @@ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -17738,55 +14449,47 @@ "rc": "cli.js" } }, + "node_modules/rc/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC" + }, "node_modules/rc/node_modules/strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/read-pkg": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", - "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", - "dev": true, - "dependencies": { - "@types/normalize-package-data": "^2.4.1", - "normalize-package-data": "^6.0.0", - "parse-json": "^7.0.0", - "type-fest": "^4.2.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-10.1.0.tgz", - "integrity": "sha512-aNtBq4jR8NawpKJQldrQcSW9y/d+KWH4v24HWkHljOZ7H0av+YTGANBzRh9A5pw7v/bLVsLVPpOhJ7gHNVy8lA==", + "node_modules/read-package-up": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/read-package-up/-/read-package-up-11.0.0.tgz", + "integrity": "sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==", "dev": true, + "license": "MIT", "dependencies": { - "find-up": "^6.3.0", - "read-pkg": "^8.1.0", - "type-fest": "^4.2.0" + "find-up-simple": "^1.0.0", + "read-pkg": "^9.0.0", + "type-fest": "^4.6.0" }, "engines": { - "node": ">=16" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.3.1.tgz", - "integrity": "sha512-pphNW/msgOUSkJbH58x8sqpq8uQj6b0ZKGxEsLKMUnGorRcDjrUaLS+39+/ub41JNTwrrMyJcUB8+YZs3mbwqw==", + "node_modules/read-package-up/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=16" }, @@ -17794,71 +14497,57 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg/node_modules/json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/read-pkg/node_modules/lines-and-columns": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", - "integrity": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/read-pkg/node_modules/parse-json": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.0.tgz", - "integrity": "sha512-ihtdrgbqdONYD156Ap6qTcaGcGdkdAxodO1wLqQ/j7HP1u2sFYppINiq4jyC8F+Nm+4fVufylCV00QmkTHkSUg==", + "node_modules/read-pkg": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz", + "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.21.4", - "error-ex": "^1.3.2", - "json-parse-even-better-errors": "^3.0.0", - "lines-and-columns": "^2.0.3", - "type-fest": "^3.8.0" + "@types/normalize-package-data": "^2.4.3", + "normalize-package-data": "^6.0.0", + "parse-json": "^8.0.0", + "type-fest": "^4.6.0", + "unicorn-magic": "^0.1.0" }, "engines": { - "node": ">=16" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg/node_modules/parse-json/node_modules/type-fest": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", - "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "node_modules/read-pkg/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=14.16" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg/node_modules/type-fest": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.3.1.tgz", - "integrity": "sha512-pphNW/msgOUSkJbH58x8sqpq8uQj6b0ZKGxEsLKMUnGorRcDjrUaLS+39+/ub41JNTwrrMyJcUB8+YZs3mbwqw==", + "node_modules/read-pkg/node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=16" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -17872,188 +14561,78 @@ "node_modules/readable-stream/node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" }, "node_modules/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/readdirp/node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", "dependencies": { - "kind-of": "^6.0.0" + "picomatch": "^2.2.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.10.0" } }, - "node_modules/readdirp/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, + "node_modules/readdirp/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" + "node": ">=8.6" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/readdirp/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "license": "MIT", "dependencies": { - "isobject": "^3.0.1" + "resolve": "^1.20.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" + "node": ">= 10.13.0" } }, - "node_modules/readdirp/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "license": "MIT", "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dependencies": { - "resolve": "^1.1.6" + "node": ">= 0.4" }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/redeyed": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", - "integrity": "sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==", - "dev": true, - "dependencies": { - "esprima": "~4.0.0" - } - }, - "node_modules/reduce-css-calc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", - "integrity": "sha512-0dVfwYVOlf/LBA2ec4OwQ6p3X9mYxn/wOl2xTcLwjnPYrkgEfPx3VI4eGCH3rQLlPISG5v9I9bkZosKsNRTRKA==", - "dev": true, - "dependencies": { - "balanced-match": "^0.4.2", - "math-expression-evaluator": "^1.2.14", - "reduce-function-call": "^1.0.1" - } - }, - "node_modules/reduce-css-calc/node_modules/balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha512-STw03mQKnGUYtoNjmowo4F2cRmIIxYEGiMsjjwla/u5P1lxadj/05WkNaFjNiKTgJkj8KiXbgAiRTmcQRwQNtg==", - "dev": true - }, - "node_modules/reduce-function-call": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.3.tgz", - "integrity": "sha512-Hl/tuV2VDgWgCSEeWMLwxLZqX7OK59eU1guxXsRKTAyeYimivsKdtcV4fu3r710tpG5GmDKDhQ0HSZLExnNmyQ==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "license": "MIT" }, "node_modules/regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", + "license": "MIT", "dependencies": { "regenerate": "^1.4.2" }, @@ -18061,73 +14640,18 @@ "node": ">=4" } }, - "node_modules/regenerator-runtime": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" - }, - "node_modules/regenerator-transform": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", - "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regex-not/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regex-not/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regex-not/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.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==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -18137,14 +14661,15 @@ } }, "node_modules/regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", + "license": "MIT", "dependencies": { - "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", + "regenerate-unicode-properties": "^10.2.0", + "regjsgen": "^0.8.0", + "regjsparser": "^0.12.0", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" }, @@ -18153,126 +14678,97 @@ } }, "node_modules/registry-auth-token": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.1.tgz", - "integrity": "sha512-UfxVOj8seK1yaIOiieV4FIP01vfBDLsY0H9sQzi9EbbUdJiuuBjJgLa1DpImXMNPnVkBD4eVxTEXcrZA6kfpJA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.1.0.tgz", + "integrity": "sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw==", "dev": true, + "license": "MIT", "dependencies": { - "@pnpm/npm-conf": "^1.0.4" + "@pnpm/npm-conf": "^2.1.0" }, "engines": { "node": ">=14" } }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "license": "MIT" + }, "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", + "license": "BSD-2-Clause", "dependencies": { - "jsesc": "~0.5.0" + "jsesc": "~3.0.2" }, "bin": { "regjsparser": "bin/parser" } }, "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/remove-bom-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", - "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", - "dependencies": { - "is-buffer": "^1.1.5", - "is-utf8": "^0.2.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/remove-bom-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", - "integrity": "sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==", - "dependencies": { - "remove-bom-buffer": "^3.0.0", - "safe-buffer": "^5.1.0", - "through2": "^2.0.3" + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" }, "engines": { - "node": ">= 0.10" - } - }, - "node_modules/remove-bom-stream/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "node": ">=6" } }, "node_modules/remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==" - }, - "node_modules/repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "engines": { - "node": ">=0.10" - } + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "license": "ISC" }, "node_modules/replace-ext": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz", "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==", + "license": "MIT", "engines": { "node": ">= 10" } }, "node_modules/replace-homedir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", - "integrity": "sha512-CHPV/GAglbIB1tnQgaiysb8H2yCy8WQ7lcEwQ/eT+kLj0QHV8LnJW0zpqpE7RSkrMSRoa+EBoag86clf7WAgSg==", - "dependencies": { - "homedir-polyfill": "^1.0.1", - "is-absolute": "^1.0.0", - "remove-trailing-separator": "^1.1.0" - }, + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-2.0.0.tgz", + "integrity": "sha512-bgEuQQ/BHW0XkkJtawzrfzHFSN70f/3cNOiHa2QsYxqrjaC30X1k74FJ6xswVBP0sr0SpGIdVFuPwfrYziVeyw==", + "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/replacestream": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/replacestream/-/replacestream-4.0.3.tgz", "integrity": "sha512-AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA==", + "license": "BSD-3-Clause", "dependencies": { "escape-string-regexp": "^1.0.3", "object-assign": "^4.0.1", "readable-stream": "^2.0.2" } }, + "node_modules/replacestream/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==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -18282,34 +14778,35 @@ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==" - }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "license": "MIT", "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -18318,6 +14815,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "license": "MIT", "dependencies": { "expand-tilde": "^2.0.0", "global-modules": "^1.0.0" @@ -18331,40 +14829,23 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-global": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz", - "integrity": "sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==", - "dev": true, - "optional": true, - "dependencies": { - "global-dirs": "^0.1.1" - }, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/resolve-options": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", - "integrity": "sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-2.0.0.tgz", + "integrity": "sha512-/FopbmmFOQCfsCx77BRFdKOniglTiHumLgwvd6IDPihy1GKkadZbgQJBcTb2lMzSR1pndzd96b1nZrreZ7+9/A==", + "license": "MIT", "dependencies": { - "value-or-function": "^3.0.0" + "value-or-function": "^4.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", - "deprecated": "https://github.com/lydell/resolve-url#deprecated" - }, "node_modules/resp-modifier": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", @@ -18383,6 +14864,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -18391,106 +14873,85 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, + "license": "MIT", "dependencies": { - "onetime": "^2.0.0", + "onetime": "^5.1.0", "signal-exit": "^3.0.2" }, "engines": { - "node": ">=4" - } - }, - "node_modules/restore-cursor/node_modules/mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true, - "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/restore-cursor/node_modules/onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, - "dependencies": { - "mimic-fn": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "engines": { - "node": ">=0.12" - } + "license": "ISC" }, "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "license": "MIT", "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==", + "node_modules/rollup": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.46.2.tgz", + "integrity": "sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==", + "license": "MIT", "dependencies": { - "glob": "^7.1.3" + "@types/estree": "1.0.8" }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "3.29.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.2.tgz", - "integrity": "sha512-CJouHoZ27v6siztc21eEQGo0kIcE5D1gVPA571ez0mMYb25LGYGKnVNXpEj5MGlepmDWGXNjDB5q7uNiPHC11A==", "bin": { "rollup": "dist/bin/rollup" }, "engines": { - "node": ">=14.18.0", + "node": ">=18.0.0", "npm": ">=8.0.0" }, "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.46.2", + "@rollup/rollup-android-arm64": "4.46.2", + "@rollup/rollup-darwin-arm64": "4.46.2", + "@rollup/rollup-darwin-x64": "4.46.2", + "@rollup/rollup-freebsd-arm64": "4.46.2", + "@rollup/rollup-freebsd-x64": "4.46.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.46.2", + "@rollup/rollup-linux-arm-musleabihf": "4.46.2", + "@rollup/rollup-linux-arm64-gnu": "4.46.2", + "@rollup/rollup-linux-arm64-musl": "4.46.2", + "@rollup/rollup-linux-loongarch64-gnu": "4.46.2", + "@rollup/rollup-linux-ppc64-gnu": "4.46.2", + "@rollup/rollup-linux-riscv64-gnu": "4.46.2", + "@rollup/rollup-linux-riscv64-musl": "4.46.2", + "@rollup/rollup-linux-s390x-gnu": "4.46.2", + "@rollup/rollup-linux-x64-gnu": "4.46.2", + "@rollup/rollup-linux-x64-musl": "4.46.2", + "@rollup/rollup-win32-arm64-msvc": "4.46.2", + "@rollup/rollup-win32-ia32-msvc": "4.46.2", + "@rollup/rollup-win32-x64-msvc": "4.46.2", "fsevents": "~2.3.2" } }, - "node_modules/rollup/node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -18513,6 +14974,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } @@ -18521,24 +14983,49 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", "integrity": "sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "license": "MIT", "dependencies": { - "tslib": "^1.9.0" + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" }, "engines": { - "npm": ">=2.0.0" + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, "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", @@ -18552,24 +15039,43 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "license": "MIT", "dependencies": { - "ret": "~0.1.10" + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safe-push-apply/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -18579,15 +15085,16 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "license": "MIT" }, "node_modules/sass": { - "version": "1.67.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.67.0.tgz", - "integrity": "sha512-SVrO9ZeX/QQyEGtuZYCVxoeAL5vGlYjJ9p4i4HFuekWl8y/LtJ7tJc10Z+ck1c8xOuoBm2MYzcLfTAffD0pl/A==", + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.90.0.tgz", + "integrity": "sha512-9GUyuksjw70uNpb1MTYWsH9MQHOHY6kwfnkafC24+7aOMZn9+rVMBxRbLvw756mrBFbIsFg6Xw9IkR2Fnn3k+Q==", + "license": "MIT", "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", + "chokidar": "^4.0.0", + "immutable": "^5.0.2", "source-map-js": ">=0.6.2 <2.0.0" }, "bin": { @@ -18595,176 +15102,83 @@ }, "engines": { "node": ">=14.0.0" - } - }, - "node_modules/sass/node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/sass/node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/sass/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/sass/node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "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/sass/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/sass/node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "@parcel/watcher": "^2.4.1" } - }, - "node_modules/sass/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/sass/node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/sass/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/sass/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + }, + "node_modules/sass/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "license": "MIT", "dependencies": { - "picomatch": "^2.2.1" + "readdirp": "^4.0.1" }, "engines": { - "node": ">=8.10.0" + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/sass/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, + "node_modules/sass/node_modules/immutable": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.2.tgz", + "integrity": "sha512-qHKXW1q6liAk1Oys6umoaZbDRqjcjgSrbnrifHsfsttza7zcvRAsL7mMV6xWcyhwQy7Xj5v4hhbr6b+iDYwlmQ==", + "license": "MIT" + }, + "node_modules/sass/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "license": "MIT", "engines": { - "node": ">=8.0" + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "dev": true, + "license": "ISC" }, "node_modules/semantic-release": { - "version": "22.0.0", - "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-22.0.0.tgz", - "integrity": "sha512-WTD8zPxh+pyc/DrTALRHJ47p1XbKqi2AJljn5WkXgLFFIMSax4uu15u4ZEZaa7ftBo8cSajh16VeafgUu9DX8g==", + "version": "24.2.7", + "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-24.2.7.tgz", + "integrity": "sha512-g7RssbTAbir1k/S7uSwSVZFfFXwpomUB9Oas0+xi9KStSCmeDXcA7rNhiskjLqvUe/Evhx8fVCT16OSa34eM5g==", "dev": true, + "license": "MIT", "dependencies": { - "@semantic-release/commit-analyzer": "^11.0.0-beta.3", + "@semantic-release/commit-analyzer": "^13.0.0-beta.1", "@semantic-release/error": "^4.0.0", - "@semantic-release/github": "^9.0.0", - "@semantic-release/npm": "^11.0.0", - "@semantic-release/release-notes-generator": "^12.0.0-beta.2", + "@semantic-release/github": "^11.0.0", + "@semantic-release/npm": "^12.0.2", + "@semantic-release/release-notes-generator": "^14.0.0-beta.1", "aggregate-error": "^5.0.0", - "cosmiconfig": "^8.0.0", + "cosmiconfig": "^9.0.0", "debug": "^4.0.0", - "env-ci": "^9.0.0", - "execa": "^8.0.0", - "figures": "^5.0.0", - "find-versions": "^5.1.0", + "env-ci": "^11.0.0", + "execa": "^9.0.0", + "figures": "^6.0.0", + "find-versions": "^6.0.0", "get-stream": "^6.0.0", "git-log-parser": "^1.2.0", "hook-std": "^3.0.0", - "hosted-git-info": "^7.0.0", + "hosted-git-info": "^8.0.0", + "import-from-esm": "^2.0.0", "lodash-es": "^4.17.21", - "marked": "^5.0.0", - "marked-terminal": "^5.1.1", + "marked": "^15.0.0", + "marked-terminal": "^7.3.0", "micromatch": "^4.0.2", "p-each-series": "^3.0.0", "p-reduce": "^3.0.0", - "read-pkg-up": "^10.0.0", + "read-package-up": "^11.0.0", "resolve-from": "^5.0.0", "semver": "^7.3.2", "semver-diff": "^4.0.0", @@ -18775,7 +15189,7 @@ "semantic-release": "bin/semantic-release.js" }, "engines": { - "node": "^18.17 || >=20.6.1" + "node": ">=20.8.1" } }, "node_modules/semantic-release/node_modules/@semantic-release/error": { @@ -18783,6 +15197,7 @@ "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" } @@ -18792,6 +15207,7 @@ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", "dev": true, + "license": "MIT", "dependencies": { "clean-stack": "^5.2.0", "indent-string": "^5.0.0" @@ -18803,26 +15219,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/semantic-release/node_modules/clean-stack": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "5.0.0" }, @@ -18833,61 +15235,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/semantic-release/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/semantic-release/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/semantic-release/node_modules/cosmiconfig": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", - "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", - "dev": true, - "dependencies": { - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - } - }, "node_modules/semantic-release/node_modules/escape-string-regexp": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -18895,217 +15248,38 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release/node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/semantic-release/node_modules/execa/node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", - "dev": true, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/figures": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", - "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^5.0.0", - "is-unicode-supported": "^1.2.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/semantic-release/node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "dev": true, - "engines": { - "node": ">=16.17.0" - } - }, - "node_modules/semantic-release/node_modules/indent-string": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/semantic-release/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/marked": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-5.1.0.tgz", - "integrity": "sha512-z3/nBe7aTI8JDszlYLk7dDVNpngjw0o1ZJtrA9kIfkkHcIF+xH7mO23aISl4WxP83elU+MFROgahqdpd05lMEQ==", - "dev": true, - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/semantic-release/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", - "dev": true, - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/p-reduce": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-3.0.0.tgz", - "integrity": "sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "node_modules/semantic-release/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=14" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/semantic-release/node_modules/hosted-git-info": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.1.0.tgz", + "integrity": "sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==", "dev": true, + "license": "ISC", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "lru-cache": "^10.0.1" }, "engines": { - "node": ">=8" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/semantic-release/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "node_modules/semantic-release/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -19113,63 +15287,46 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "node_modules/semantic-release/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } + "license": "ISC" }, - "node_modules/semantic-release/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "node_modules/semantic-release/node_modules/p-reduce": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-3.0.0.tgz", + "integrity": "sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==", "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "node_modules/semantic-release/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=12" + "node": ">=10" } }, "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" } }, "node_modules/semver-diff": { @@ -19177,6 +15334,7 @@ "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^7.3.5" }, @@ -19187,15 +15345,29 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/semver-diff/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/semver-greatest-satisfied-range": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", - "integrity": "sha512-Ny/iyOzSSa8M5ML46IAx3iXc6tfOsYU2R4AXi2UpHk60Zrgyq6eqPj/xiOfS0rRl/iiQ/rdJkVjw/5cdUyCntQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-2.0.0.tgz", + "integrity": "sha512-lH3f6kMbwyANB7HuOWRMlLCa2itaCrZJ+SAqqkSZrZKO/cAsk2EOyaKHUtNkVLFyFW9pct22SFesFp3Z7zpA0g==", + "license": "MIT", "dependencies": { - "sver-compat": "^1.5.0" + "sver": "^1.8.3" }, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/semver-regex": { @@ -19203,6 +15375,7 @@ "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-4.0.5.tgz", "integrity": "sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -19211,24 +15384,25 @@ } }, "node_modules/send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.1.tgz", + "integrity": "sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" }, "engines": { "node": ">= 0.8.0" @@ -19239,68 +15413,62 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } }, - "node_modules/send/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, - "engines": { - "node": ">= 0.6" - } + "license": "MIT" }, - "node_modules/send/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "node_modules/send/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, + "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, - "node_modules/send/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, "node_modules/send/node_modules/mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, + "license": "MIT", "bin": { "mime": "cli.js" + }, + "engines": { + "node": ">=4" } }, - "node_modules/send/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/send/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true + "node_modules/send/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } }, "node_modules/send/node_modules/statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/serve-index": { @@ -19308,6 +15476,7 @@ "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.4", "batch": "0.6.1", @@ -19326,6 +15495,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -19335,6 +15505,7 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -19344,6 +15515,7 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, + "license": "MIT", "dependencies": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -19358,91 +15530,213 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/serve-index/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/serve-index/node_modules/setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/serve-index/node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-static/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-static/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/serve-static/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/serve-static/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static/node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dev": true, + "license": "MIT", "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" }, "engines": { "node": ">= 0.8.0" } }, + "node_modules/serve-static/node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/server-destroy": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", - "dev": true + "dev": true, + "license": "ISC" }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "license": "MIT", "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/set-value/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "license": "MIT", "dependencies": { - "isobject": "^3.0.1" + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true + "dev": true, + "license": "ISC" }, "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, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -19455,236 +15749,327 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/shell-quote": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.0.tgz", - "integrity": "sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==", + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/signale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz", - "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==", - "dev": true, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", "dependencies": { - "chalk": "^2.3.2", - "figures": "^2.0.0", - "pkg-conf": "^2.1.0" + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" }, "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, "engines": { - "node": ">=12" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "node_modules/signale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz", + "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==", + "dev": true, + "license": "MIT", "dependencies": { - "is-descriptor": "^1.0.0" + "chalk": "^2.3.2", + "figures": "^2.0.0", + "pkg-conf": "^2.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "node_modules/signale/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, + "license": "MIT", "dependencies": { - "kind-of": "^6.0.0" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/snapdragon-node/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "node_modules/signale/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, + "license": "MIT", "dependencies": { - "kind-of": "^6.0.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/snapdragon-node/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "node_modules/signale/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, + "license": "MIT", "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" + "color-name": "1.1.3" } }, - "node_modules/snapdragon-node/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "node_modules/signale/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, + "license": "MIT" + }, + "node_modules/signale/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, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=0.8.0" } }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "node_modules/signale/node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "license": "MIT", "dependencies": { - "kind-of": "^3.2.0" + "escape-string-regexp": "^1.0.5" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dependencies": { - "is-buffer": "^1.1.5" - }, + "node_modules/signale/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, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/snapdragon/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/signale/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, + "license": "MIT", "dependencies": { - "ms": "2.0.0" + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/snapdragon/node_modules/ms": { + "node_modules/skin-tone": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz", + "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "unicode-emoji-modifier-base": "^1.0.0" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/snapdragon/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/socket.io": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.1.tgz", - "integrity": "sha512-KMcaAi4l/8+xEjkRICl6ak8ySoxsYG+gG6/XfRCPJPQ/haCRIJBTL4wIl8YCsmtaBovcAXGLOShyVWQ/FG8GZA==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.1.tgz", + "integrity": "sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", + "cors": "~2.8.5", "debug": "~4.3.2", - "engine.io": "~6.4.1", + "engine.io": "~6.6.0", "socket.io-adapter": "~2.5.2", - "socket.io-parser": "~4.2.1" + "socket.io-parser": "~4.2.4" }, "engines": { - "node": ">=10.0.0" + "node": ">=10.2.0" } }, "node_modules/socket.io-adapter": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", - "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", + "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", "dev": true, + "license": "MIT", + "dependencies": { + "debug": "~4.3.4", + "ws": "~8.17.1" + } + }, + "node_modules/socket.io-adapter/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", "dependencies": { - "ws": "~8.11.0" + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/socket.io-client": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.6.1.tgz", - "integrity": "sha512-5UswCV6hpaRsNg5kkEHVcbBIXEYoVbMQaHJBXJCyEQ+CiFPV1NIOY0XOFWG4XR4GZcB8Kn6AsRs/9cy9TbqVMQ==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.1.tgz", + "integrity": "sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==", "dev": true, + "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", - "engine.io-client": "~6.4.0", - "socket.io-parser": "~4.2.1" + "engine.io-client": "~6.6.1", + "socket.io-parser": "~4.2.4" }, "engines": { "node": ">=10.0.0" } }, + "node_modules/socket.io-client/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/socket.io-parser": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.2.tgz", - "integrity": "sha512-DJtziuKypFkMMHCm2uIshOYC7QaylbtzQwiMYDuCKy3OPkjLzu4B2vAhTlqipRHHzrI0NJeBAizTK7X+6m1jVw==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", "dev": true, + "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" @@ -19693,16 +16078,40 @@ "node": ">=10.0.0" } }, - "node_modules/sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", + "node_modules/socket.io-parser/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, + "license": "MIT", "dependencies": { - "is-plain-obj": "^1.0.0" + "ms": "^2.1.3" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/source-map": { @@ -19710,157 +16119,76 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "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==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "node_modules/source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "deprecated": "See https://github.com/lydell/source-map-url#deprecated" - }, "node_modules/sparkles": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", - "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-2.1.0.tgz", + "integrity": "sha512-r7iW1bDw8R/cFifrD3JnQJX0K1jqT0kprL48BiBpLZLJPmAm34zsVBsK5lc7HirZYZqMW65dOXZgbAGt/I6frg==", + "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/spawn-error-forwarder": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz", "integrity": "sha512-gRjMgK5uFjbCvdibeGJuy3I5OYz6VLoVdsOJdA6wV0WlfQVLFueoqMxwwYD9RODdgb6oUIvlRlsyFSiQkMKu0g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "license": "Apache-2.0", "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==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "license": "CC-BY-3.0" }, "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==", + "license": "MIT", "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==" - }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/split-string/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/split-string/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/split-string/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } + "version": "3.0.21", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz", + "integrity": "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==", + "license": "CC0-1.0" }, "node_modules/split2": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", - "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", + "integrity": "sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg==", "dev": true, - "engines": { - "node": ">= 10.x" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", - "engines": { - "node": "*" - } - }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "license": "ISC", "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" + "through2": "~2.0.0" } }, "node_modules/statuses": { @@ -19868,35 +16196,56 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", "integrity": "sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/stream-combiner2": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", "dev": true, + "license": "MIT", "dependencies": { "duplexer2": "~0.1.0", "readable-stream": "^2.0.2" } }, + "node_modules/stream-composer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-composer/-/stream-composer-1.0.2.tgz", + "integrity": "sha512-bnBselmwfX5K10AH6L4c8+S5lgZMWI7ZYrz2rvYjCPB2DIMC4Ig8OpxGpNJSxRZ58oti7y1IcNvjBAz9vW5m4w==", + "license": "MIT", + "dependencies": { + "streamx": "^2.13.2" + } + }, "node_modules/stream-exhaust": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", - "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==" - }, - "node_modules/stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", + "license": "MIT" }, "node_modules/stream-throttle": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", "integrity": "sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "commander": "^2.2.0", "limiter": "^1.0.5" @@ -19912,21 +16261,27 @@ "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", "dev": true, - "engines": { - "node": ">=0.10.0" + "license": "MIT" + }, + "node_modules/streamx": { + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.1.tgz", + "integrity": "sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==", + "license": "MIT", + "dependencies": { + "fast-fifo": "^1.3.2", + "text-decoder": "^1.1.0" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" } }, "node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } @@ -19934,212 +16289,50 @@ "node_modules/string_decoder/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==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" }, "node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/string.prototype.padend": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz", - "integrity": "sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", - "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-json-comments": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", - "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/subset-font": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/subset-font/-/subset-font-2.1.0.tgz", - "integrity": "sha512-4xV42NsGGBftUj2bR6cYrUkwtTWZRRg5ISUquTBztWfntyZhod24KI0IH4YBFD3U8luLXFv87uo+1U18kAlVzg==", - "dependencies": { - "fontverter": "^2.0.0", - "harfbuzzjs": "^0.3.2", - "lodash": "^4.17.21", - "p-limit": "^3.1.0" - } - }, - "node_modules/subset-font/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, "engines": { "node": ">=8" } }, - "node_modules/supports-hyperlinks/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "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==", + "node_modules/string.prototype.padend": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.6.tgz", + "integrity": "sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -20147,146 +16340,136 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/sver-compat": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", - "integrity": "sha512-aFTHfmjwizMNlNE6dsGmoAM4lHjL0CyiobWaFiXWSlD7cIxshW422Nb8KbXCmR6z+0ZEPY+daXJrDyh/vuwTyg==", + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "license": "MIT", "dependencies": { - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/svgo": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", - "integrity": "sha512-jT/g9FFMoe9lu2IT6HtAxTA7RR2XOrmcrmCtGnyB/+GQnV6ZjNn+KOHZbZ35yL81+1F/aB6OeEsJztzBQ2EEwA==", - "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", - "dev": true, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "license": "MIT", "dependencies": { - "coa": "~1.0.1", - "colors": "~1.1.2", - "csso": "~2.3.1", - "js-yaml": "~3.7.0", - "mkdirp": "~0.5.1", - "sax": "~1.2.1", - "whet.extend": "~0.9.9" - }, - "bin": { - "svgo": "bin/svgo" + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/svgo/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "license": "MIT", "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/svgo/node_modules/esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/svgo/node_modules/js-yaml": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", - "integrity": "sha512-eIlkGty7HGmntbV6P/ZlAsoncFLGsNoM27lkTzS+oneY/EiNhj+geqD9ezg/ip+SW6Var0BJU2JtV0vEUZpWVQ==", - "dev": true, + "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==", + "license": "MIT", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^2.6.0" + "ansi-regex": "^5.0.1" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=8" } }, - "node_modules/svgo/node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "node_modules/svgo/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==", + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { - "minimist": "^1.2.6" + "ansi-regex": "^5.0.1" }, - "bin": { - "mkdirp": "bin/cmd.js" + "engines": { + "node": ">=8" } }, - "node_modules/temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "node_modules/strip-ansi-cjs/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, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/tempy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.0.0.tgz", - "integrity": "sha512-B2I9X7+o2wOaW4r/CWMkpOO9mdiTRCxXNgob6iGvPmfPWgH/KyUD6Uy5crtWBxIBe3YrNZKR2lSzv1JJKWD4vA==", - "dev": true, - "dependencies": { - "is-stream": "^3.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^2.12.2", - "unique-string": "^3.0.0" - }, + "node_modules/strip-ansi/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==", + "license": "MIT", "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/tempy/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, + "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/tempy/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "node_modules/strip-final-newline": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=12.20" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/text-extensions": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz", - "integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==", + "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, + "license": "MIT", "engines": { "node": ">=8" }, @@ -20294,263 +16477,321 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "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/style-mod": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.2.tgz", + "integrity": "sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==", + "license": "MIT" }, - "node_modules/textextensions": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-3.3.0.tgz", - "integrity": "sha512-mk82dS8eRABNbeVJrEiN5/UMSCliINAuz8mkUwH4SwslkNP//gbEzlWNS5au0z5Dpx40SQxzqZevZkn+WYJ9Dw==", + "node_modules/stylehacks": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-7.0.6.tgz", + "integrity": "sha512-iitguKivmsueOmTO0wmxURXBP8uqOO+zikLGZ7Mm9e/94R4w5T999Js2taS/KBOnQ/wdC3jN3vNSrkGDrlnqQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.25.1", + "postcss-selector-parser": "^7.1.0" + }, "engines": { - "node": ">=8" + "node": "^18.12.0 || ^20.9.0 || >=22.0" }, - "funding": { - "url": "https://bevry.me/fund" + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "node_modules/subset-font": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/subset-font/-/subset-font-2.4.0.tgz", + "integrity": "sha512-DA/45nIj4NiseVdfHxVdVGL7hvNo3Ol6HjEm3KSYtPyDcsr6jh8Q37vSgz+A722wMfUd6nL8kgsi7uGv9DExXQ==", + "license": "BSD-3-Clause", "dependencies": { - "readable-stream": "3" + "fontverter": "^2.0.0", + "harfbuzzjs": "^0.4.0", + "lodash": "^4.17.21", + "p-limit": "^3.1.0" } }, - "node_modules/through2-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", - "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "node_modules/super-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/super-regex/-/super-regex-1.0.0.tgz", + "integrity": "sha512-CY8u7DtbvucKuquCmOFEKhr9Besln7n9uN8eFbwcoGYWXOMW07u2o8njWaiXt11ylS3qoGF55pILjRmPlbodyg==", + "dev": true, + "license": "MIT", "dependencies": { - "through2": "~2.0.0", - "xtend": "~4.0.0" + "function-timeout": "^1.0.1", + "time-span": "^5.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/through2-filter/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "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==", + "license": "MIT", "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/through2/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "node_modules/supports-hyperlinks": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz", + "integrity": "sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==", + "dev": true, + "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" }, "engines": { - "node": ">= 6" + "node": ">=14.18" + }, + "funding": { + "url": "https://github.com/chalk/supports-hyperlinks?sponsor=1" } }, - "node_modules/time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==", + "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==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "node_modules/sver": { + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/sver/-/sver-1.8.4.tgz", + "integrity": "sha512-71o1zfzyawLfIWBOmw8brleKyvnbn73oVHNCsu51uPMz/HWiKkkXsI31JjHW5zqXEqnPYkIiHd8ZmL7FCimLEA==", + "license": "MIT", + "optionalDependencies": { + "semver": "^6.3.0" + } + }, + "node_modules/svgo": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-4.0.0.tgz", + "integrity": "sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw==", "dev": true, + "license": "MIT", "dependencies": { - "os-tmpdir": "~1.0.2" + "commander": "^11.1.0", + "css-select": "^5.1.0", + "css-tree": "^3.0.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.1.1", + "sax": "^1.4.1" + }, + "bin": { + "svgo": "bin/svgo.js" }, "engines": { - "node": ">=0.6.0" + "node": ">=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" } }, - "node_modules/to-absolute-glob": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", - "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==", - "dependencies": { - "is-absolute": "^1.0.0", - "is-negated-glob": "^1.0.0" - }, + "node_modules/svgo/node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=16" } }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "engines": { - "node": ">=4" + "node_modules/teex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz", + "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==", + "license": "MIT", + "dependencies": { + "streamx": "^2.12.5" } }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", - "dependencies": { - "kind-of": "^3.0.2" - }, + "node_modules/temp-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", + "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=14.16" } }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "node_modules/tempy": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz", + "integrity": "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==", + "dev": true, + "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "is-stream": "^3.0.0", + "temp-dir": "^3.0.0", + "type-fest": "^2.12.2", + "unique-string": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, + "node_modules/tempy/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, + "node_modules/tempy/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=0.10.0" + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/to-regex/node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "node_modules/text-decoder": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", + "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", + "license": "Apache-2.0", "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" + "b4a": "^1.6.4" } }, - "node_modules/to-regex/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, + "node_modules/textextensions": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-3.3.0.tgz", + "integrity": "sha512-mk82dS8eRABNbeVJrEiN5/UMSCliINAuz8mkUwH4SwslkNP//gbEzlWNS5au0z5Dpx40SQxzqZevZkn+WYJ9Dw==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://bevry.me/fund" } }, - "node_modules/to-regex/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "license": "MIT", "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" + "any-promise": "^1.0.0" } }, - "node_modules/to-regex/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "license": "MIT", "dependencies": { - "kind-of": "^6.0.0" + "thenify": ">= 3.1.0 < 4" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.8" } }, - "node_modules/to-regex/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "license": "MIT", "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" } }, - "node_modules/to-regex/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "node_modules/time-span": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/time-span/-/time-span-5.1.0.tgz", + "integrity": "sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==", + "dev": true, + "license": "MIT", "dependencies": { - "is-plain-object": "^2.0.4" + "convert-hrtime": "^5.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/to-regex/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "license": "MIT", "dependencies": { - "isobject": "^3.0.1" + "os-tmpdir": "~1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.6.0" } }, - "node_modules/to-regex/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "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==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8.0" } }, "node_modules/to-through": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", - "integrity": "sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-3.0.0.tgz", + "integrity": "sha512-y8MN937s/HVhEoBU1SxfHC+wxCHkV1a9gW8eAdTadYh/bGyesZIVcbjI+mSpFbSVwQici/XjBjuUyri1dnXwBw==", + "license": "MIT", "dependencies": { - "through2": "^2.0.3" + "streamx": "^2.12.5" }, "engines": { - "node": ">= 0.10" - } - }, - "node_modules/to-through/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "node": ">=10.13.0" } }, "node_modules/toidentifier": { @@ -20558,76 +16799,37 @@ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.6" } }, "node_modules/traverse": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", - "integrity": "sha512-kdf4JKs8lbARxWdp7RKdNzoJBhGUcIalSYibuGyHJbmk40pOysQ0+QPvlkCOICOivDWU2IJo2rkrxyTK2AH4fw==", - "dev": true - }, - "node_modules/ts-node": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.8.2.tgz", - "integrity": "sha512-LYdGnoGddf1D6v8REPtIH+5iq/gTDuZqv2/UJUU7tKjuEU8xVZorBM+buCGNjj+pGEud+sOoM4CX3/YzINpENA==", + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.8.tgz", + "integrity": "sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==", "dev": true, - "optional": true, - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" + "license": "MIT", + "engines": { + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" }, "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, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -20636,10 +16838,11 @@ } }, "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==", + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -20647,42 +16850,84 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.8", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", - "dev": true, - "optional": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" }, "engines": { - "node": ">=4.2.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/ua-parser-js": { - "version": "1.0.35", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.35.tgz", - "integrity": "sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA==", + "version": "1.0.40", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.40.tgz", + "integrity": "sha512-z6PJ8Lml+v3ichVojCiB8toQJBuwR42ySM4ezjXIqXK3M0HczmKQ3LF4rhU55PfD99KEEXQG6yb7iOMyvYuHew==", "dev": true, "funding": [ { @@ -20692,16 +16937,25 @@ { "type": "paypal", "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" } ], + "license": "MIT", + "bin": { + "ua-parser-js": "script/cli.js" + }, "engines": { "node": "*" } }, "node_modules/uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "license": "BSD-2-Clause", "bin": { "uglifyjs": "bin/uglifyjs" }, @@ -20710,14 +16964,18 @@ } }, "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==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", + "call-bound": "^1.0.3", "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -20727,47 +16985,65 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/undertaker": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", - "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-2.0.0.tgz", + "integrity": "sha512-tO/bf30wBbTsJ7go80j0RzA2rcwX6o7XPBpeFcb+jzoeb4pfMM2zUeSDIkY1AWqeZabWxaQZ/h8N9t35QKDLPQ==", + "license": "MIT", "dependencies": { - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "bach": "^1.0.0", - "collection-map": "^1.0.0", - "es6-weak-map": "^2.0.1", - "fast-levenshtein": "^1.0.0", - "last-run": "^1.1.0", - "object.defaults": "^1.0.0", - "object.reduce": "^1.0.0", - "undertaker-registry": "^1.0.0" + "bach": "^2.0.1", + "fast-levenshtein": "^3.0.0", + "last-run": "^2.0.0", + "undertaker-registry": "^2.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">=10.13.0" } }, "node_modules/undertaker-registry": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", - "integrity": "sha512-UR1khWeAjugW3548EfQmL9Z7pGMlBgXteQpr1IZeZBtnkCJQJIJ1Scj0mb9wQaPvUZ9Q17XqW6TIaPchJkyfqw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-2.0.0.tgz", + "integrity": "sha512-+hhVICbnp+rlzZMgxXenpvTxpuvA67Bfgtt+O9WOE5jo7w/dyiF1VmoZVIHvP2EkUjsyKyTwYKlLhA+j47m1Ew==", + "license": "MIT", + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/undertaker/node_modules/fast-levenshtein": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz", + "integrity": "sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==", + "license": "MIT", + "dependencies": { + "fastest-levenshtein": "^1.0.7" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "license": "MIT" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">=4" } }, - "node_modules/undertaker/node_modules/fast-levenshtein": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", - "integrity": "sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw==" - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "node_modules/unicode-emoji-modifier-base": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", + "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==", + "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -20776,6 +17052,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "license": "MIT", "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -20785,9 +17062,10 @@ } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", + "license": "MIT", "engines": { "node": ">=4" } @@ -20796,43 +17074,21 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, + "node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "license": "MIT", "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==", - "dev": true - }, - "node_modules/uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==", - "dev": true - }, - "node_modules/unique-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", - "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", - "dependencies": { - "json-stable-stringify-without-jsonify": "^1.0.1", - "through2-filter": "^3.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/unique-string": { @@ -20840,6 +17096,7 @@ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", "dev": true, + "license": "MIT", "dependencies": { "crypto-random-string": "^4.0.0" }, @@ -20851,16 +17108,18 @@ } }, "node_modules/universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", - "dev": true + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.3.tgz", + "integrity": "sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==", + "dev": true, + "license": "ISC" }, "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10.0.0" } @@ -20870,67 +17129,15 @@ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "engines": { - "node": ">=4", - "yarn": "*" - } - }, "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "funding": [ { "type": "opencollective", @@ -20945,9 +17152,10 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.2.0", + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -20961,80 +17169,63 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", - "deprecated": "Please see https://github.com/lydell/urix#deprecated" - }, "node_modules/url-join": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz", "integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4.0" } }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true, - "optional": true - }, "node_modules/v8flags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", - "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-4.0.1.tgz", + "integrity": "sha512-fcRLaS4H/hrZk9hYwbdRM35D0U8IYMfEClhXxCivOojl+yTRAZH3Zy2sSy6qVCiGbV9YAtPssP6jaChqC9vPCg==", + "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" } }, "node_modules/value-or-function": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", - "integrity": "sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-4.0.0.tgz", + "integrity": "sha512-aeVK81SIuT6aMJfNo9Vte8Dw0/FZINGBV8BfCraGtqVxIeLAEhJyoWs8SmvRVmXfGss2PmmOwZCuBPbZR+IYWg==", + "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/vary": { @@ -21042,24 +17233,17 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, - "node_modules/vendors": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", - "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/vinyl": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "dev": true, + "license": "MIT", "dependencies": { "clone": "^2.1.1", "clone-buffer": "^1.0.0", @@ -21072,74 +17256,172 @@ "node": ">= 0.10" } }, + "node_modules/vinyl-contents": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vinyl-contents/-/vinyl-contents-2.0.0.tgz", + "integrity": "sha512-cHq6NnGyi2pZ7xwdHSW1v4Jfnho4TEGtxZHw01cmnc8+i7jgR6bRnED/LbrKan/Q7CvVLbnvA5OepnhbpjBZ5Q==", + "license": "MIT", + "dependencies": { + "bl": "^5.0.0", + "vinyl": "^3.0.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/vinyl-contents/node_modules/bl": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", + "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", + "license": "MIT", + "dependencies": { + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/vinyl-contents/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/vinyl-contents/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/vinyl-contents/node_modules/vinyl": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.1.tgz", + "integrity": "sha512-0QwqXteBNXgnLCdWdvPQBX6FXRHtIH3VhJPTd5Lwn28tJXc34YqSCWUmkOvtJHBmB3gGoPtrOKk3Ts8/kEZ9aA==", + "license": "MIT", + "dependencies": { + "clone": "^2.1.2", + "remove-trailing-separator": "^1.1.0", + "replace-ext": "^2.0.0", + "teex": "^1.0.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/vinyl-fs": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", - "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-4.0.2.tgz", + "integrity": "sha512-XRFwBLLTl8lRAOYiBqxY279wY46tVxLaRhSwo3GzKEuLz1giffsOquWWboD/haGf5lx+JyTigCFfe7DWHoARIA==", + "license": "MIT", "dependencies": { - "fs-mkdirp-stream": "^1.0.0", - "glob-stream": "^6.1.0", - "graceful-fs": "^4.0.0", + "fs-mkdirp-stream": "^2.0.1", + "glob-stream": "^8.0.3", + "graceful-fs": "^4.2.11", + "iconv-lite": "^0.6.3", "is-valid-glob": "^1.0.0", - "lazystream": "^1.0.0", - "lead": "^1.0.0", - "object.assign": "^4.0.4", - "pumpify": "^1.3.5", - "readable-stream": "^2.3.3", - "remove-bom-buffer": "^3.0.0", - "remove-bom-stream": "^1.2.0", - "resolve-options": "^1.1.0", - "through2": "^2.0.0", - "to-through": "^2.0.0", - "value-or-function": "^3.0.0", - "vinyl": "^2.0.0", - "vinyl-sourcemap": "^1.1.0" + "lead": "^4.0.0", + "normalize-path": "3.0.0", + "resolve-options": "^2.0.0", + "stream-composer": "^1.0.2", + "streamx": "^2.14.0", + "to-through": "^3.0.0", + "value-or-function": "^4.0.0", + "vinyl": "^3.0.1", + "vinyl-sourcemap": "^2.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">=10.13.0" } }, - "node_modules/vinyl-fs/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "node_modules/vinyl-fs/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==", + "license": "MIT", "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/vinyl-fs/node_modules/vinyl": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.1.tgz", + "integrity": "sha512-0QwqXteBNXgnLCdWdvPQBX6FXRHtIH3VhJPTd5Lwn28tJXc34YqSCWUmkOvtJHBmB3gGoPtrOKk3Ts8/kEZ9aA==", + "license": "MIT", + "dependencies": { + "clone": "^2.1.2", + "remove-trailing-separator": "^1.1.0", + "replace-ext": "^2.0.0", + "teex": "^1.0.1" + }, + "engines": { + "node": ">=10.13.0" } }, "node_modules/vinyl-sourcemap": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", - "integrity": "sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==", - "dependencies": { - "append-buffer": "^1.0.2", - "convert-source-map": "^1.5.0", - "graceful-fs": "^4.1.6", - "normalize-path": "^2.1.1", - "now-and-later": "^2.0.0", - "remove-bom-buffer": "^3.0.0", - "vinyl": "^2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-2.0.0.tgz", + "integrity": "sha512-BAEvWxbBUXvlNoFQVFVHpybBbjW1r03WhohJzJDSfgrrK5xVYIDTan6xN14DlyImShgDRv2gl9qhM6irVMsV0Q==", + "license": "MIT", + "dependencies": { + "convert-source-map": "^2.0.0", + "graceful-fs": "^4.2.10", + "now-and-later": "^3.0.0", + "streamx": "^2.12.5", + "vinyl": "^3.0.0", + "vinyl-contents": "^2.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">=10.13.0" } }, - "node_modules/vinyl-sourcemap/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "node_modules/vinyl-sourcemap/node_modules/vinyl": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.1.tgz", + "integrity": "sha512-0QwqXteBNXgnLCdWdvPQBX6FXRHtIH3VhJPTd5Lwn28tJXc34YqSCWUmkOvtJHBmB3gGoPtrOKk3Ts8/kEZ9aA==", + "license": "MIT", "dependencies": { - "remove-trailing-separator": "^1.0.1" + "clone": "^2.1.2", + "remove-trailing-separator": "^1.1.0", + "replace-ext": "^2.0.0", + "teex": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=10.13.0" } }, "node_modules/vinyl-sourcemaps-apply": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", "integrity": "sha512-+oDh3KYZBoZC8hfocrbrxbLUeaYtQK7J5WU5Br9VqWqmCll3tFJqKp97GC9GmMsVIL0qnx2DgEDVxdo5EZ5sSw==", + "license": "ISC", "dependencies": { "source-map": "^0.5.1" } @@ -21148,30 +17430,32 @@ "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/vinyl/node_modules/clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", - "engines": { - "node": ">=0.8" - } - }, "node_modules/vinyl/node_modules/replace-ext": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } }, + "node_modules/w3c-keyname": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", + "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==", + "license": "MIT" + }, "node_modules/wawoff2": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/wawoff2/-/wawoff2-2.0.1.tgz", "integrity": "sha512-r0CEmvpH63r4T15ebFqeOjGqU4+EgTx4I510NtK35EMciSdcTxCw3Byy3JnBonz7iyIFZ0AbVo0bbFpEVuhCYA==", + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -21180,13 +17464,14 @@ "woff2_decompress.js": "bin/woff2_decompress.js" } }, - "node_modules/whet.extend": { - "version": "0.9.9", - "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", - "integrity": "sha512-mmIPAft2vTgEILgPeZFqE/wWh24SEsR/k+N9fJ3Jxrz44iDFy9aemCxdksfURSHYFCLmvs/d/7Iso5XjPpNfrA==", + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, - "engines": { - "node": ">=0.6.0" + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" } }, "node_modules/which": { @@ -21194,47 +17479,100 @@ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "license": "MIT", "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" }, "engines": { - "node": ">= 8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which-boxed-primitive": { + "node_modules/which-builtin-type/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, + "node_modules/which-collection": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "license": "MIT", "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" + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==" - }, "node_modules/which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "license": "MIT", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -21247,15 +17585,17 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/woff2sfnt-sfnt2woff/-/woff2sfnt-sfnt2woff-1.0.0.tgz", "integrity": "sha512-edK4COc1c1EpRfMqCZO1xJOvdUtM5dbVb9iz97rScvnTevqEB3GllnLWCmMVp1MfQBdF1DFg/11I0rSyAdS4qQ==", + "license": "MIT", "dependencies": { "pako": "^1.0.7" } }, "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==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -21264,79 +17604,63 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "dependencies": { - "number-is-nan": "^1.0.0" + "node": ">=10" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dependencies": { - "ansi-regex": "^2.0.0" + "node": ">=10" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" }, "node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -21348,9 +17672,9 @@ } }, "node_modules/xmlhttprequest-ssl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", - "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.2.tgz", + "integrity": "sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==", "dev": true, "engines": { "node": ">=0.4.0" @@ -21360,269 +17684,101 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "license": "MIT", "engines": { "node": ">=0.4" } }, "node_modules/y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==" - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "optional": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/yargs": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", - "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", - "dependencies": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.1" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yargs/node_modules/camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yargs/node_modules/find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", - "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yargs/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - }, - "node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yargs/node_modules/load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yargs/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/yargs/node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", - "dependencies": { - "error-ex": "^1.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yargs/node_modules/path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", - "dependencies": { - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yargs/node_modules/path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", - "dependencies": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yargs/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yargs/node_modules/read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", - "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/yargs/node_modules/read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", - "dependencies": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" }, - "node_modules/yargs/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "node_modules/yaml": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", + "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "license": "ISC", "bin": { - "semver": "bin/semver" - } - }, - "node_modules/yargs/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "yaml": "bin.mjs" }, "engines": { - "node": ">=0.10.0" + "node": ">= 14.6" } }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/yargs/node_modules/strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", - "dependencies": { - "is-utf8": "^0.2.0" - }, + "node_modules/yargs-parser": { + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", + "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": "^20.19.0 || ^22.12.0 || >=23" } }, "node_modules/yargs/node_modules/yargs-parser": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", - "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", - "dependencies": { - "camelcase": "^3.0.0", - "object.assign": "^4.1.0" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, - "optional": true, + "license": "ISC", "engines": { - "node": ">=6" + "node": ">=12" } }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "license": "MIT", "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/yoctocolors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz", + "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/package.json b/package.json index 9e13c149..790202b9 100644 --- a/package.json +++ b/package.json @@ -1,53 +1,58 @@ { "config": { "commitizen": { - "path": "./node_modules/cz-conventional-changelog" + "path": "cz-conventional-changelog" } }, "dependencies": { - "@babel/preset-env": "^7.22.20", - "@fontsource/inter": "5.0.3", - "@fontsource/rasa": "5.0.3", - "@hotwired/turbo": "^7.3.0", - "@rollup/plugin-babel": "^6.0.3", - "@rollup/plugin-commonjs": "^25.0.4", - "@rollup/plugin-json": "^6.0.0", - "@rollup/plugin-node-resolve": "^15.2.1", - "bulma": "0.9.4", - "bulma-checkradio": "2.1.3", - "bulma-switch": "2.0.4", - "bulma-tooltip": "3.0.2", - "del": "7.0.0", - "fontawesome-subset": "4.4.0", - "gulp": "4.0.2", - "gulp-autoprefixer": "8.0.0", + "@babel/preset-env": "^7.28.0", + "@fontsource-utils/scss": "0.2.1", + "@fontsource-variable/inter": "5.2.6", + "@fontsource-variable/rasa": "5.2.7", + "@hotwired/turbo": "^8.0.13", + "@rollup/plugin-babel": "^6.0.4", + "@rollup/plugin-commonjs": "^28.0.6", + "@rollup/plugin-json": "^6.1.0", + "@rollup/plugin-node-resolve": "^16.0.1", + "bulma": "^1.0.4", + "codemirror": "^6.0.2", + "del": "8.0.0", + "fontawesome-subset": "4.5.0", + "git-cz": "^4.9.0", + "gulp": "5.0.1", + "gulp-autoprefixer": "9.0.0", "gulp-replace": "1.1.4", - "gulp-sass": "5.1.0", + "gulp-sass": "6.0.1", "npm-run-all": "^4.1.5", - "rollup": "^3.29.2", - "sass": "^1.67.0", - "uglify-js": "^3.17.4" + "rollup": "^4.46.2", + "sass": "^1.90.0", + "uglify-js": "^3.19.3" }, "description": "A task scheduling tool.", "devDependencies": { - "@fortawesome/fontawesome-free": "6.4.0", - "@semantic-release/changelog": "6.0.3", - "@semantic-release/commit-analyzer": "^11.0.0", - "@semantic-release/exec": "6.0.3", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "^9.33.0", + "@fortawesome/fontawesome-free": "6.7.2", + "@semantic-release/changelog": "^6.0.3", + "@semantic-release/commit-analyzer": "13.0.1", + "@semantic-release/exec": "7.1.0", "@semantic-release/git": "10.0.1", - "@semantic-release/github": "^9.0.6", - "@semantic-release/npm": "^11.0.0", - "@semantic-release/release-notes-generator": "^12.0.0", - "browser-sync": "^2.29.1", + "@semantic-release/github": "^11.0.4", + "@semantic-release/npm": "^12.0.2", + "@semantic-release/release-notes-generator": "14.0.3", + "browser-sync": "^3.0.4", + "cssnano": "^7.1.0", "cz-conventional-changelog": "3.3.0", - "eslint": "^8.49.0", + "eslint": "^9.33.0", + "globals": "^16.3.0", "gulp-concat": "2.6.1", - "gulp-cssnano": "2.1.3", - "gulp-purgecss": "5.0.0", - "gulp-rename": "2.0.0", + "gulp-postcss": "10.0.0", + "gulp-purgecss": "7.0.2", + "gulp-rename": "2.1.0", "gulp-uglify": "3.0.2", - "prettier": "^3.0.3", - "semantic-release": "^22.0.0" + "prettier": "^3.6.2", + "prettier-plugin-jinja-template": "^2.1.0", + "semantic-release": "^24.2.7" }, "homepage": "https://atlas-hub.atlas.bi", "license": "AGPL-3.0-or-later", @@ -59,14 +64,14 @@ }, "scripts": { "build": "run-p gulp:build model:*", - "commit": "git add . && pre-commit run ; git add . && cz --no-verify", + "commit": "git add . && pre-commit run && git add . && cz --no-verify", "dev:browser": "browser-sync start --proxy http://127.0.0.1:4999/ --files=\"web/**\"", "dev:runner": "FLASK_ENV=development FLASK_DEBUG=1 FLASK_APP=runner poetry run flask run --port=5002", "dev:scheduler": "FLASK_ENV=development FLASK_DEBUG=1 FLASK_APP=scheduler poetry run flask run --port=5001", "dev:web": "FLASK_ENV=development FLASK_DEBUG=1 FLASK_APP=web FLASK_RUN_PORT=4999 poetry run flask run", "format": "run-s format:*", "format:dynamic": "poetry run tox -e reformat", - "format:static": "prettier --config .prettierrc \"web/**/*.{ts,css,less,scss,js,json,md,yaml,html}\" --write", + "format:static": "prettier --config .prettierrc \"web/**/*.{ts,css,less,scss,js,json,md,yaml,html,j2}\" --write", "gulp:build": "gulp build", "gulp:watch": "gulp watch", "install": "gulp build", @@ -78,7 +83,8 @@ "test": "run-s test:*", "test:eslint": "eslint \"./web/**/*.js\" --color", "test:lint": "poetry run tox -e lint", - "test:prettier": "prettier --check --config .prettierrc \"web/**/*.{ts,css,less,scss,js,json,md,yaml,html}\"" + "test:prettier": "prettier --check --config .prettierrc \"web/**/*.{ts,css,less,scss,js,json,md,yaml,html,j2}\"" }, - "version": "2.12.3" + "type": "module", + "version": "3.5.3" } diff --git a/poetry.lock b/poetry.lock index dd2c5a28..64fbe82a 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,161 +1,143 @@ -# This file is automatically @generated by Poetry and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "alembic" -version = "1.12.0" +version = "1.16.4" description = "A database migration tool for SQLAlchemy." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" files = [ - {file = "alembic-1.12.0-py3-none-any.whl", hash = "sha256:03226222f1cf943deee6c85d9464261a6c710cd19b4fe867a3ad1f25afda610f"}, - {file = "alembic-1.12.0.tar.gz", hash = "sha256:8e7645c32e4f200675e69f0745415335eb59a3663f5feb487abfa0b30c45888b"}, + {file = "alembic-1.16.4-py3-none-any.whl", hash = "sha256:b05e51e8e82efc1abd14ba2af6392897e145930c3e0a2faf2b0da2f7f7fd660d"}, + {file = "alembic-1.16.4.tar.gz", hash = "sha256:efab6ada0dd0fae2c92060800e0bf5c1dc26af15a10e02fb4babff164b4725e2"}, ] [package.dependencies] -importlib-metadata = {version = "*", markers = "python_version < \"3.9\""} -importlib-resources = {version = "*", markers = "python_version < \"3.9\""} Mako = "*" -SQLAlchemy = ">=1.3.0" -typing-extensions = ">=4" +SQLAlchemy = ">=1.4.0" +typing-extensions = ">=4.12" [package.extras] -tz = ["python-dateutil"] +tz = ["tzdata"] [[package]] name = "apscheduler" -version = "3.10.4" +version = "3.11.0" description = "In-process task scheduler with Cron-like capabilities" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "APScheduler-3.10.4-py3-none-any.whl", hash = "sha256:fb91e8a768632a4756a585f79ec834e0e27aad5860bac7eaa523d9ccefd87661"}, - {file = "APScheduler-3.10.4.tar.gz", hash = "sha256:e6df071b27d9be898e486bc7940a7be50b4af2e9da7c08f0744a96d4bd4cef4a"}, + {file = "APScheduler-3.11.0-py3-none-any.whl", hash = "sha256:fc134ca32e50f5eadcc4938e3a4545ab19131435e851abb40b34d63d5141c6da"}, + {file = "apscheduler-3.11.0.tar.gz", hash = "sha256:4c622d250b0955a65d5d0eb91c33e6d43fd879834bf541e0a18661ae60460133"}, ] [package.dependencies] -pytz = "*" -six = ">=1.4.0" -tzlocal = ">=2.0,<3.0.0 || >=4.0.0" +tzlocal = ">=3.0" [package.extras] -doc = ["sphinx", "sphinx-rtd-theme"] +doc = ["packaging", "sphinx", "sphinx-rtd-theme (>=1.3.0)"] +etcd = ["etcd3", "protobuf (<=3.21.0)"] gevent = ["gevent"] mongodb = ["pymongo (>=3.0)"] redis = ["redis (>=3.0)"] rethinkdb = ["rethinkdb (>=2.4.0)"] sqlalchemy = ["sqlalchemy (>=1.4)"] -testing = ["pytest", "pytest-asyncio", "pytest-cov", "pytest-tornado5"] +test = ["APScheduler[etcd,mongodb,redis,rethinkdb,sqlalchemy,tornado,zookeeper]", "PySide6", "anyio (>=4.5.2)", "gevent", "pytest", "pytz", "twisted"] tornado = ["tornado (>=4.3)"] twisted = ["twisted"] zookeeper = ["kazoo"] -[[package]] -name = "async-timeout" -version = "4.0.3" -description = "Timeout context manager for asyncio programs" -category = "main" -optional = false -python-versions = ">=3.7" -files = [ - {file = "async-timeout-4.0.3.tar.gz", hash = "sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f"}, - {file = "async_timeout-4.0.3-py3-none-any.whl", hash = "sha256:7405140ff1230c310e51dc27b3145b9092d659ce68ff733fb0cefe3ee42be028"}, -] - [[package]] name = "azure-core" -version = "1.29.4" +version = "1.35.0" description = "Microsoft Azure Core Library for Python" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" files = [ - {file = "azure-core-1.29.4.tar.gz", hash = "sha256:500b3aa9bf2e90c5ccc88bb105d056114ca0ce7d0ce73afb8bc4d714b2fc7568"}, - {file = "azure_core-1.29.4-py3-none-any.whl", hash = "sha256:b03261bcba22c0b9290faf9999cedd23e849ed2577feee90515694cea6bc74bf"}, + {file = "azure_core-1.35.0-py3-none-any.whl", hash = "sha256:8db78c72868a58f3de8991eb4d22c4d368fae226dac1002998d6c50437e7dad1"}, + {file = "azure_core-1.35.0.tar.gz", hash = "sha256:c0be528489485e9ede59b6971eb63c1eaacf83ef53001bfe3904e475e972be5c"}, ] [package.dependencies] -requests = ">=2.18.4" +requests = ">=2.21.0" six = ">=1.11.0" typing-extensions = ">=4.6.0" [package.extras] aio = ["aiohttp (>=3.0)"] +tracing = ["opentelemetry-api (>=1.26,<2.0)"] [[package]] name = "azure-devops" -version = "7.1.0b3" +version = "7.1.0b4" description = "Python wrapper around the Azure DevOps 7.x APIs" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "azure-devops-7.1.0b3.tar.gz", hash = "sha256:644e34d110f016e65c7b36647274c90c20223bf2ecca9be8806aa5a4c754b4e7"}, - {file = "azure_devops-7.1.0b3-py3-none-any.whl", hash = "sha256:ef082a59e79e7f5d979481c7737093cb54618f362b216292fcce7f26d9c452c3"}, + {file = "azure-devops-7.1.0b4.tar.gz", hash = "sha256:f04ba939112579f3d530cfecc044a74ef9e9339ba23c9ee1ece248241f07ff85"}, + {file = "azure_devops-7.1.0b4-py3-none-any.whl", hash = "sha256:f827e9fbc7c77bc6f2aaee46e5717514e9fe7d676c87624eccd0ca640b54f122"}, ] [package.dependencies] msrest = ">=0.7.1,<0.8.0" -[[package]] -name = "backports-zoneinfo" -version = "0.2.1" -description = "Backport of the standard library zoneinfo module" -category = "main" -optional = false -python-versions = ">=3.6" -files = [ - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-win32.whl", hash = "sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-win_amd64.whl", hash = "sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-win32.whl", hash = "sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-win32.whl", hash = "sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6"}, - {file = "backports.zoneinfo-0.2.1.tar.gz", hash = "sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2"}, -] - -[package.extras] -tzdata = ["tzdata"] - [[package]] name = "bcrypt" -version = "4.0.1" +version = "4.3.0" description = "Modern password hashing for your software and your servers" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "bcrypt-4.0.1-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:b1023030aec778185a6c16cf70f359cbb6e0c289fd564a7cfa29e727a1c38f8f"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:08d2947c490093a11416df18043c27abe3921558d2c03e2076ccb28a116cb6d0"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0eaa47d4661c326bfc9d08d16debbc4edf78778e6aaba29c1bc7ce67214d4410"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae88eca3024bb34bb3430f964beab71226e761f51b912de5133470b649d82344"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:a522427293d77e1c29e303fc282e2d71864579527a04ddcfda6d4f8396c6c36a"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:fbdaec13c5105f0c4e5c52614d04f0bca5f5af007910daa8b6b12095edaa67b3"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:ca3204d00d3cb2dfed07f2d74a25f12fc12f73e606fcaa6975d1f7ae69cacbb2"}, - {file = "bcrypt-4.0.1-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:089098effa1bc35dc055366740a067a2fc76987e8ec75349eb9484061c54f535"}, - {file = "bcrypt-4.0.1-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:e9a51bbfe7e9802b5f3508687758b564069ba937748ad7b9e890086290d2f79e"}, - {file = "bcrypt-4.0.1-cp36-abi3-win32.whl", hash = "sha256:2caffdae059e06ac23fce178d31b4a702f2a3264c20bfb5ff541b338194d8fab"}, - {file = "bcrypt-4.0.1-cp36-abi3-win_amd64.whl", hash = "sha256:8a68f4341daf7522fe8d73874de8906f3a339048ba406be6ddc1b3ccb16fc0d9"}, - {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf4fa8b2ca74381bb5442c089350f09a3f17797829d958fad058d6e44d9eb83c"}, - {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:67a97e1c405b24f19d08890e7ae0c4f7ce1e56a712a016746c8b2d7732d65d4b"}, - {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b3b85202d95dd568efcb35b53936c5e3b3600c7cdcc6115ba461df3a8e89f38d"}, - {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cbb03eec97496166b704ed663a53680ab57c5084b2fc98ef23291987b525cb7d"}, - {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:5ad4d32a28b80c5fa6671ccfb43676e8c1cc232887759d1cd7b6f56ea4355215"}, - {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b57adba8a1444faf784394de3436233728a1ecaeb6e07e8c22c8848f179b893c"}, - {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:705b2cea8a9ed3d55b4491887ceadb0106acf7c6387699fca771af56b1cdeeda"}, - {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:2b3ac11cf45161628f1f3733263e63194f22664bf4d0c0f3ab34099c02134665"}, - {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3100851841186c25f127731b9fa11909ab7b1df6fc4b9f8353f4f1fd952fbf71"}, - {file = "bcrypt-4.0.1.tar.gz", hash = "sha256:27d375903ac8261cfe4047f6709d16f7d18d39b1ec92aaf72af989552a650ebd"}, + {file = "bcrypt-4.3.0-cp313-cp313t-macosx_10_12_universal2.whl", hash = "sha256:f01e060f14b6b57bbb72fc5b4a83ac21c443c9a2ee708e04a10e9192f90a6281"}, + {file = "bcrypt-4.3.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5eeac541cefd0bb887a371ef73c62c3cd78535e4887b310626036a7c0a817bb"}, + {file = "bcrypt-4.3.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59e1aa0e2cd871b08ca146ed08445038f42ff75968c7ae50d2fdd7860ade2180"}, + {file = "bcrypt-4.3.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:0042b2e342e9ae3d2ed22727c1262f76cc4f345683b5c1715f0250cf4277294f"}, + {file = "bcrypt-4.3.0-cp313-cp313t-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74a8d21a09f5e025a9a23e7c0fd2c7fe8e7503e4d356c0a2c1486ba010619f09"}, + {file = "bcrypt-4.3.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:0142b2cb84a009f8452c8c5a33ace5e3dfec4159e7735f5afe9a4d50a8ea722d"}, + {file = "bcrypt-4.3.0-cp313-cp313t-manylinux_2_34_aarch64.whl", hash = "sha256:12fa6ce40cde3f0b899729dbd7d5e8811cb892d31b6f7d0334a1f37748b789fd"}, + {file = "bcrypt-4.3.0-cp313-cp313t-manylinux_2_34_x86_64.whl", hash = "sha256:5bd3cca1f2aa5dbcf39e2aa13dd094ea181f48959e1071265de49cc2b82525af"}, + {file = "bcrypt-4.3.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:335a420cfd63fc5bc27308e929bee231c15c85cc4c496610ffb17923abf7f231"}, + {file = "bcrypt-4.3.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:0e30e5e67aed0187a1764911af023043b4542e70a7461ad20e837e94d23e1d6c"}, + {file = "bcrypt-4.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:3b8d62290ebefd49ee0b3ce7500f5dbdcf13b81402c05f6dafab9a1e1b27212f"}, + {file = "bcrypt-4.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:2ef6630e0ec01376f59a006dc72918b1bf436c3b571b80fa1968d775fa02fe7d"}, + {file = "bcrypt-4.3.0-cp313-cp313t-win32.whl", hash = "sha256:7a4be4cbf241afee43f1c3969b9103a41b40bcb3a3f467ab19f891d9bc4642e4"}, + {file = "bcrypt-4.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5c1949bf259a388863ced887c7861da1df681cb2388645766c89fdfd9004c669"}, + {file = "bcrypt-4.3.0-cp38-abi3-macosx_10_12_universal2.whl", hash = "sha256:f81b0ed2639568bf14749112298f9e4e2b28853dab50a8b357e31798686a036d"}, + {file = "bcrypt-4.3.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:864f8f19adbe13b7de11ba15d85d4a428c7e2f344bac110f667676a0ff84924b"}, + {file = "bcrypt-4.3.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e36506d001e93bffe59754397572f21bb5dc7c83f54454c990c74a468cd589e"}, + {file = "bcrypt-4.3.0-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:842d08d75d9fe9fb94b18b071090220697f9f184d4547179b60734846461ed59"}, + {file = "bcrypt-4.3.0-cp38-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7c03296b85cb87db865d91da79bf63d5609284fc0cab9472fdd8367bbd830753"}, + {file = "bcrypt-4.3.0-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:62f26585e8b219cdc909b6a0069efc5e4267e25d4a3770a364ac58024f62a761"}, + {file = "bcrypt-4.3.0-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:beeefe437218a65322fbd0069eb437e7c98137e08f22c4660ac2dc795c31f8bb"}, + {file = "bcrypt-4.3.0-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:97eea7408db3a5bcce4a55d13245ab3fa566e23b4c67cd227062bb49e26c585d"}, + {file = "bcrypt-4.3.0-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:191354ebfe305e84f344c5964c7cd5f924a3bfc5d405c75ad07f232b6dffb49f"}, + {file = "bcrypt-4.3.0-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:41261d64150858eeb5ff43c753c4b216991e0ae16614a308a15d909503617732"}, + {file = "bcrypt-4.3.0-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:33752b1ba962ee793fa2b6321404bf20011fe45b9afd2a842139de3011898fef"}, + {file = "bcrypt-4.3.0-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:50e6e80a4bfd23a25f5c05b90167c19030cf9f87930f7cb2eacb99f45d1c3304"}, + {file = "bcrypt-4.3.0-cp38-abi3-win32.whl", hash = "sha256:67a561c4d9fb9465ec866177e7aebcad08fe23aaf6fbd692a6fab69088abfc51"}, + {file = "bcrypt-4.3.0-cp38-abi3-win_amd64.whl", hash = "sha256:584027857bc2843772114717a7490a37f68da563b3620f78a849bcb54dc11e62"}, + {file = "bcrypt-4.3.0-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:0d3efb1157edebfd9128e4e46e2ac1a64e0c1fe46fb023158a407c7892b0f8c3"}, + {file = "bcrypt-4.3.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08bacc884fd302b611226c01014eca277d48f0a05187666bca23aac0dad6fe24"}, + {file = "bcrypt-4.3.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6746e6fec103fcd509b96bacdfdaa2fbde9a553245dbada284435173a6f1aef"}, + {file = "bcrypt-4.3.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:afe327968aaf13fc143a56a3360cb27d4ad0345e34da12c7290f1b00b8fe9a8b"}, + {file = "bcrypt-4.3.0-cp39-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d9af79d322e735b1fc33404b5765108ae0ff232d4b54666d46730f8ac1a43676"}, + {file = "bcrypt-4.3.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f1e3ffa1365e8702dc48c8b360fef8d7afeca482809c5e45e653af82ccd088c1"}, + {file = "bcrypt-4.3.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:3004df1b323d10021fda07a813fd33e0fd57bef0e9a480bb143877f6cba996fe"}, + {file = "bcrypt-4.3.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:531457e5c839d8caea9b589a1bcfe3756b0547d7814e9ce3d437f17da75c32b0"}, + {file = "bcrypt-4.3.0-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:17a854d9a7a476a89dcef6c8bd119ad23e0f82557afbd2c442777a16408e614f"}, + {file = "bcrypt-4.3.0-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:6fb1fd3ab08c0cbc6826a2e0447610c6f09e983a281b919ed721ad32236b8b23"}, + {file = "bcrypt-4.3.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:e965a9c1e9a393b8005031ff52583cedc15b7884fce7deb8b0346388837d6cfe"}, + {file = "bcrypt-4.3.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:79e70b8342a33b52b55d93b3a59223a844962bef479f6a0ea318ebbcadf71505"}, + {file = "bcrypt-4.3.0-cp39-abi3-win32.whl", hash = "sha256:b4d4e57f0a63fd0b358eb765063ff661328f69a04494427265950c71b992a39a"}, + {file = "bcrypt-4.3.0-cp39-abi3-win_amd64.whl", hash = "sha256:e53e074b120f2877a35cc6c736b8eb161377caae8925c17688bd46ba56daaa5b"}, + {file = "bcrypt-4.3.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c950d682f0952bafcceaf709761da0a32a942272fad381081b51096ffa46cea1"}, + {file = "bcrypt-4.3.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:107d53b5c67e0bbc3f03ebf5b030e0403d24dda980f8e244795335ba7b4a027d"}, + {file = "bcrypt-4.3.0-pp310-pypy310_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:b693dbb82b3c27a1604a3dff5bfc5418a7e6a781bb795288141e5f80cf3a3492"}, + {file = "bcrypt-4.3.0-pp310-pypy310_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:b6354d3760fcd31994a14c89659dee887f1351a06e5dac3c1142307172a79f90"}, + {file = "bcrypt-4.3.0-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:a839320bf27d474e52ef8cb16449bb2ce0ba03ca9f44daba6d93fa1d8828e48a"}, + {file = "bcrypt-4.3.0-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:bdc6a24e754a555d7316fa4774e64c6c3997d27ed2d1964d55920c7c227bc4ce"}, + {file = "bcrypt-4.3.0-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:55a935b8e9a1d2def0626c4269db3fcd26728cbff1e84f0341465c31c4ee56d8"}, + {file = "bcrypt-4.3.0-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:57967b7a28d855313a963aaea51bf6df89f833db4320da458e5b3c5ab6d4c938"}, + {file = "bcrypt-4.3.0.tar.gz", hash = "sha256:3a3fd2204178b6d2adcf09cb4f6426ffef54762577a7c9b54c159008cb288c18"}, ] [package.extras] @@ -164,53 +146,55 @@ typecheck = ["mypy"] [[package]] name = "beautifulsoup4" -version = "4.12.2" +version = "4.13.4" description = "Screen-scraping library" -category = "main" optional = false -python-versions = ">=3.6.0" +python-versions = ">=3.7.0" files = [ - {file = "beautifulsoup4-4.12.2-py3-none-any.whl", hash = "sha256:bd2520ca0d9d7d12694a53d44ac482d181b4ec1888909b035a3dbf40d0f57d4a"}, - {file = "beautifulsoup4-4.12.2.tar.gz", hash = "sha256:492bbc69dca35d12daac71c4db1bfff0c876c00ef4a2ffacce226d4638eb72da"}, + {file = "beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b"}, + {file = "beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195"}, ] [package.dependencies] soupsieve = ">1.2" +typing-extensions = ">=4.0.0" [package.extras] +cchardet = ["cchardet"] +chardet = ["chardet"] +charset-normalizer = ["charset-normalizer"] html5lib = ["html5lib"] lxml = ["lxml"] [[package]] name = "black" -version = "23.9.1" +version = "25.1.0" description = "The uncompromising code formatter." -category = "dev" optional = false -python-versions = ">=3.8" -files = [ - {file = "black-23.9.1-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:d6bc09188020c9ac2555a498949401ab35bb6bf76d4e0f8ee251694664df6301"}, - {file = "black-23.9.1-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:13ef033794029b85dfea8032c9d3b92b42b526f1ff4bf13b2182ce4e917f5100"}, - {file = "black-23.9.1-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:75a2dc41b183d4872d3a500d2b9c9016e67ed95738a3624f4751a0cb4818fe71"}, - {file = "black-23.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13a2e4a93bb8ca74a749b6974925c27219bb3df4d42fc45e948a5d9feb5122b7"}, - {file = "black-23.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:adc3e4442eef57f99b5590b245a328aad19c99552e0bdc7f0b04db6656debd80"}, - {file = "black-23.9.1-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:8431445bf62d2a914b541da7ab3e2b4f3bc052d2ccbf157ebad18ea126efb91f"}, - {file = "black-23.9.1-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:8fc1ddcf83f996247505db6b715294eba56ea9372e107fd54963c7553f2b6dfe"}, - {file = "black-23.9.1-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:7d30ec46de88091e4316b17ae58bbbfc12b2de05e069030f6b747dfc649ad186"}, - {file = "black-23.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:031e8c69f3d3b09e1aa471a926a1eeb0b9071f80b17689a655f7885ac9325a6f"}, - {file = "black-23.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:538efb451cd50f43aba394e9ec7ad55a37598faae3348d723b59ea8e91616300"}, - {file = "black-23.9.1-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:638619a559280de0c2aa4d76f504891c9860bb8fa214267358f0a20f27c12948"}, - {file = "black-23.9.1-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:a732b82747235e0542c03bf352c126052c0fbc458d8a239a94701175b17d4855"}, - {file = "black-23.9.1-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:cf3a4d00e4cdb6734b64bf23cd4341421e8953615cba6b3670453737a72ec204"}, - {file = "black-23.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf99f3de8b3273a8317681d8194ea222f10e0133a24a7548c73ce44ea1679377"}, - {file = "black-23.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:14f04c990259576acd093871e7e9b14918eb28f1866f91968ff5524293f9c573"}, - {file = "black-23.9.1-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:c619f063c2d68f19b2d7270f4cf3192cb81c9ec5bc5ba02df91471d0b88c4c5c"}, - {file = "black-23.9.1-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:6a3b50e4b93f43b34a9d3ef00d9b6728b4a722c997c99ab09102fd5efdb88325"}, - {file = "black-23.9.1-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:c46767e8df1b7beefb0899c4a95fb43058fa8500b6db144f4ff3ca38eb2f6393"}, - {file = "black-23.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50254ebfa56aa46a9fdd5d651f9637485068a1adf42270148cd101cdf56e0ad9"}, - {file = "black-23.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:403397c033adbc45c2bd41747da1f7fc7eaa44efbee256b53842470d4ac5a70f"}, - {file = "black-23.9.1-py3-none-any.whl", hash = "sha256:6ccd59584cc834b6d127628713e4b6b968e5f79572da66284532525a042549f9"}, - {file = "black-23.9.1.tar.gz", hash = "sha256:24b6b3ff5c6d9ea08a8888f6977eae858e1f340d7260cf56d70a49823236b62d"}, +python-versions = ">=3.9" +files = [ + {file = "black-25.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:759e7ec1e050a15f89b770cefbf91ebee8917aac5c20483bc2d80a6c3a04df32"}, + {file = "black-25.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e519ecf93120f34243e6b0054db49c00a35f84f195d5bce7e9f5cfc578fc2da"}, + {file = "black-25.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:055e59b198df7ac0b7efca5ad7ff2516bca343276c466be72eb04a3bcc1f82d7"}, + {file = "black-25.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:db8ea9917d6f8fc62abd90d944920d95e73c83a5ee3383493e35d271aca872e9"}, + {file = "black-25.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a39337598244de4bae26475f77dda852ea00a93bd4c728e09eacd827ec929df0"}, + {file = "black-25.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:96c1c7cd856bba8e20094e36e0f948718dc688dba4a9d78c3adde52b9e6c2299"}, + {file = "black-25.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bce2e264d59c91e52d8000d507eb20a9aca4a778731a08cfff7e5ac4a4bb7096"}, + {file = "black-25.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:172b1dbff09f86ce6f4eb8edf9dede08b1fce58ba194c87d7a4f1a5aa2f5b3c2"}, + {file = "black-25.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4b60580e829091e6f9238c848ea6750efed72140b91b048770b64e74fe04908b"}, + {file = "black-25.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e2978f6df243b155ef5fa7e558a43037c3079093ed5d10fd84c43900f2d8ecc"}, + {file = "black-25.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b48735872ec535027d979e8dcb20bf4f70b5ac75a8ea99f127c106a7d7aba9f"}, + {file = "black-25.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:ea0213189960bda9cf99be5b8c8ce66bb054af5e9e861249cd23471bd7b0b3ba"}, + {file = "black-25.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8f0b18a02996a836cc9c9c78e5babec10930862827b1b724ddfe98ccf2f2fe4f"}, + {file = "black-25.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:afebb7098bfbc70037a053b91ae8437c3857482d3a690fefc03e9ff7aa9a5fd3"}, + {file = "black-25.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:030b9759066a4ee5e5aca28c3c77f9c64789cdd4de8ac1df642c40b708be6171"}, + {file = "black-25.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:a22f402b410566e2d1c950708c77ebf5ebd5d0d88a6a2e87c86d9fb48afa0d18"}, + {file = "black-25.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a1ee0a0c330f7b5130ce0caed9936a904793576ef4d2b98c40835d6a65afa6a0"}, + {file = "black-25.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f3df5f1bf91d36002b0a75389ca8663510cf0531cca8aa5c1ef695b46d98655f"}, + {file = "black-25.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d9e6827d563a2c820772b32ce8a42828dc6790f095f441beef18f96aa6f8294e"}, + {file = "black-25.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:bacabb307dca5ebaf9c118d2d2f6903da0d62c9faa82bd21a33eecc319559355"}, + {file = "black-25.1.0-py3-none-any.whl", hash = "sha256:95e8176dae143ba9097f351d174fdaf0ccd29efb414b362ae3fd72bf0f710717"}, + {file = "black-25.1.0.tar.gz", hash = "sha256:33496d5cd1222ad73391352b4ae8da15253c5de89b93a80b3e2c8d9a19ec2666"}, ] [package.dependencies] @@ -219,32 +203,28 @@ mypy-extensions = ">=0.4.3" packaging = ">=22.0" pathspec = ">=0.9.0" platformdirs = ">=2" -tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} -typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""} [package.extras] colorama = ["colorama (>=0.4.3)"] -d = ["aiohttp (>=3.7.4)"] +d = ["aiohttp (>=3.10)"] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "blinker" -version = "1.6.2" +version = "1.9.0" description = "Fast, simple object-to-object and broadcast signaling" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" files = [ - {file = "blinker-1.6.2-py3-none-any.whl", hash = "sha256:c3d739772abb7bc2860abf5f2ec284223d9ad5c76da018234f6f50d6f31ab1f0"}, - {file = "blinker-1.6.2.tar.gz", hash = "sha256:4afd3de66ef3a9f8067559fb7a1cbe555c17dcbe15971b05d1b625c3e7abe213"}, + {file = "blinker-1.9.0-py3-none-any.whl", hash = "sha256:ba0efaa9080b619ff2f3459d1d500c57bddea4a6b424b60a91141db6fd2f08bc"}, + {file = "blinker-1.9.0.tar.gz", hash = "sha256:b4ce2265a7abece45e7cc896e98dbebe6cead56bcf805a3d23136d145f5445bf"}, ] [[package]] name = "brotli" version = "1.1.0" description = "Python bindings for the Brotli compression library" -category = "main" optional = false python-versions = "*" files = [ @@ -337,7 +317,6 @@ files = [ name = "brotlicffi" version = "1.1.0.0" description = "Python CFFI bindings to the Brotli library" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -375,13 +354,13 @@ cffi = ">=1.0.0" [[package]] name = "bs4" -version = "0.0.1" -description = "Dummy package for Beautiful Soup" -category = "main" +version = "0.0.2" +description = "Dummy package for Beautiful Soup (beautifulsoup4)" optional = false python-versions = "*" files = [ - {file = "bs4-0.0.1.tar.gz", hash = "sha256:36ecea1fd7cc5c0c6e4a1ff075df26d50da647b75376626cc186e2212886dd3a"}, + {file = "bs4-0.0.2-py2.py3-none-any.whl", hash = "sha256:abf8742c0805ef7f662dce4b51cca104cffe52b835238afc169142ab9b3fbccc"}, + {file = "bs4-0.0.2.tar.gz", hash = "sha256:a48685c58f50fe127722417bae83fe6badf500d54b55f7e39ffe43b798653925"}, ] [package.dependencies] @@ -389,112 +368,111 @@ beautifulsoup4 = "*" [[package]] name = "cachelib" -version = "0.9.0" +version = "0.13.0" description = "A collection of cache libraries in the same API interface." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "cachelib-0.9.0-py3-none-any.whl", hash = "sha256:811ceeb1209d2fe51cd2b62810bd1eccf70feba5c52641532498be5c675493b3"}, - {file = "cachelib-0.9.0.tar.gz", hash = "sha256:38222cc7c1b79a23606de5c2607f4925779e37cdcea1c2ad21b8bae94b5425a5"}, + {file = "cachelib-0.13.0-py3-none-any.whl", hash = "sha256:8c8019e53b6302967d4e8329a504acf75e7bc46130291d30188a6e4e58162516"}, + {file = "cachelib-0.13.0.tar.gz", hash = "sha256:209d8996e3c57595bee274ff97116d1d73c4980b2fd9a34c7846cd07fd2e1a48"}, ] [[package]] name = "cachetools" -version = "5.3.1" +version = "6.1.0" description = "Extensible memoizing collections and decorators" -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" files = [ - {file = "cachetools-5.3.1-py3-none-any.whl", hash = "sha256:95ef631eeaea14ba2e36f06437f36463aac3a096799e876ee55e5cdccb102590"}, - {file = "cachetools-5.3.1.tar.gz", hash = "sha256:dce83f2d9b4e1f732a8cd44af8e8fab2dbe46201467fc98b3ef8f269092bf62b"}, + {file = "cachetools-6.1.0-py3-none-any.whl", hash = "sha256:1c7bb3cf9193deaf3508b7c5f2a79986c13ea38965c5adcff1f84519cf39163e"}, + {file = "cachetools-6.1.0.tar.gz", hash = "sha256:b4c4f404392848db3ce7aac34950d17be4d864da4b8b66911008e430bc544587"}, ] [[package]] name = "certifi" -version = "2023.7.22" +version = "2025.8.3" description = "Python package for providing Mozilla's CA Bundle." -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, - {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, + {file = "certifi-2025.8.3-py3-none-any.whl", hash = "sha256:f6c12493cfb1b06ba2ff328595af9350c65d6644968e5d3a2ffd78699af217a5"}, + {file = "certifi-2025.8.3.tar.gz", hash = "sha256:e564105f78ded564e3ae7c923924435e1daa7463faeab5bb932bc53ffae63407"}, ] [[package]] name = "cffi" -version = "1.15.1" +version = "1.17.1" description = "Foreign Function Interface for Python calling C code." -category = "main" optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "cffi-1.15.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2"}, - {file = "cffi-1.15.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2"}, - {file = "cffi-1.15.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914"}, - {file = "cffi-1.15.1-cp27-cp27m-win32.whl", hash = "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3"}, - {file = "cffi-1.15.1-cp27-cp27m-win_amd64.whl", hash = "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e"}, - {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162"}, - {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b"}, - {file = "cffi-1.15.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21"}, - {file = "cffi-1.15.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4"}, - {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01"}, - {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e"}, - {file = "cffi-1.15.1-cp310-cp310-win32.whl", hash = "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2"}, - {file = "cffi-1.15.1-cp310-cp310-win_amd64.whl", hash = "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d"}, - {file = "cffi-1.15.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac"}, - {file = "cffi-1.15.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c"}, - {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef"}, - {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8"}, - {file = "cffi-1.15.1-cp311-cp311-win32.whl", hash = "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d"}, - {file = "cffi-1.15.1-cp311-cp311-win_amd64.whl", hash = "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104"}, - {file = "cffi-1.15.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e"}, - {file = "cffi-1.15.1-cp36-cp36m-win32.whl", hash = "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf"}, - {file = "cffi-1.15.1-cp36-cp36m-win_amd64.whl", hash = "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497"}, - {file = "cffi-1.15.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426"}, - {file = "cffi-1.15.1-cp37-cp37m-win32.whl", hash = "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9"}, - {file = "cffi-1.15.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045"}, - {file = "cffi-1.15.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192"}, - {file = "cffi-1.15.1-cp38-cp38-win32.whl", hash = "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314"}, - {file = "cffi-1.15.1-cp38-cp38-win_amd64.whl", hash = "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5"}, - {file = "cffi-1.15.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585"}, - {file = "cffi-1.15.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27"}, - {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76"}, - {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3"}, - {file = "cffi-1.15.1-cp39-cp39-win32.whl", hash = "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee"}, - {file = "cffi-1.15.1-cp39-cp39-win_amd64.whl", hash = "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c"}, - {file = "cffi-1.15.1.tar.gz", hash = "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, + {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, + {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, + {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, + {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, + {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, + {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, + {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, + {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, + {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, + {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, + {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, + {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, + {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, + {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, ] [package.dependencies] @@ -504,7 +482,6 @@ pycparser = "*" name = "cfgv" version = "3.4.0" description = "Validate configuration and produce human readable error messages." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -516,7 +493,6 @@ files = [ name = "chardet" version = "5.2.0" description = "Universal encoding detector for Python 3" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -526,99 +502,101 @@ files = [ [[package]] name = "charset-normalizer" -version = "3.2.0" +version = "3.4.3" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "main" optional = false -python-versions = ">=3.7.0" +python-versions = ">=3.7" files = [ - {file = "charset-normalizer-3.2.0.tar.gz", hash = "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-win32.whl", hash = "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-win32.whl", hash = "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-win32.whl", hash = "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-win32.whl", hash = "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-win32.whl", hash = "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80"}, - {file = "charset_normalizer-3.2.0-py3-none-any.whl", hash = "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fb7f67a1bfa6e40b438170ebdc8158b78dc465a5a67b6dde178a46987b244a72"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cc9370a2da1ac13f0153780040f465839e6cccb4a1e44810124b4e22483c93fe"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:07a0eae9e2787b586e129fdcbe1af6997f8d0e5abaa0bc98c0e20e124d67e601"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:74d77e25adda8581ffc1c720f1c81ca082921329452eba58b16233ab1842141c"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d0e909868420b7049dafd3a31d45125b31143eec59235311fc4c57ea26a4acd2"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c6f162aabe9a91a309510d74eeb6507fab5fff92337a15acbe77753d88d9dcf0"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4ca4c094de7771a98d7fbd67d9e5dbf1eb73efa4f744a730437d8a3a5cf994f0"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:02425242e96bcf29a49711b0ca9f37e451da7c70562bc10e8ed992a5a7a25cc0"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:78deba4d8f9590fe4dae384aeff04082510a709957e968753ff3c48399f6f92a"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-win32.whl", hash = "sha256:d79c198e27580c8e958906f803e63cddb77653731be08851c7df0b1a14a8fc0f"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-win_amd64.whl", hash = "sha256:c6e490913a46fa054e03699c70019ab869e990270597018cef1d8562132c2669"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:b256ee2e749283ef3ddcff51a675ff43798d92d746d1a6e4631bf8c707d22d0b"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:13faeacfe61784e2559e690fc53fa4c5ae97c6fcedb8eb6fb8d0a15b475d2c64"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:00237675befef519d9af72169d8604a067d92755e84fe76492fef5441db05b91"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:585f3b2a80fbd26b048a0be90c5aae8f06605d3c92615911c3a2b03a8a3b796f"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e78314bdc32fa80696f72fa16dc61168fda4d6a0c014e0380f9d02f0e5d8a07"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:96b2b3d1a83ad55310de8c7b4a2d04d9277d5591f40761274856635acc5fcb30"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:939578d9d8fd4299220161fdd76e86c6a251987476f5243e8864a7844476ba14"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:fd10de089bcdcd1be95a2f73dbe6254798ec1bda9f450d5828c96f93e2536b9c"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1e8ac75d72fa3775e0b7cb7e4629cec13b7514d928d15ef8ea06bca03ef01cae"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-win32.whl", hash = "sha256:6cf8fd4c04756b6b60146d98cd8a77d0cdae0e1ca20329da2ac85eed779b6849"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:31a9a6f775f9bcd865d88ee350f0ffb0e25936a7f930ca98995c05abf1faf21c"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e28e334d3ff134e88989d90ba04b47d84382a828c061d0d1027b1b12a62b39b1"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0cacf8f7297b0c4fcb74227692ca46b4a5852f8f4f24b3c766dd94a1075c4884"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c6fd51128a41297f5409deab284fecbe5305ebd7e5a1f959bee1c054622b7018"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3cfb2aad70f2c6debfbcb717f23b7eb55febc0bb23dcffc0f076009da10c6392"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1606f4a55c0fd363d754049cdf400175ee96c992b1f8018b993941f221221c5f"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:027b776c26d38b7f15b26a5da1044f376455fb3766df8fc38563b4efbc515154"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:42e5088973e56e31e4fa58eb6bd709e42fc03799c11c42929592889a2e54c491"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cc34f233c9e71701040d772aa7490318673aa7164a0efe3172b2981218c26d93"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:320e8e66157cc4e247d9ddca8e21f427efc7a04bbd0ac8a9faf56583fa543f9f"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-win32.whl", hash = "sha256:fb6fecfd65564f208cbf0fba07f107fb661bcd1a7c389edbced3f7a493f70e37"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:86df271bf921c2ee3818f0522e9a5b8092ca2ad8b065ece5d7d9d0e9f4849bcc"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:14c2a87c65b351109f6abfc424cab3927b3bdece6f706e4d12faaf3d52ee5efe"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41d1fc408ff5fdfb910200ec0e74abc40387bccb3252f3f27c0676731df2b2c8"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1bb60174149316da1c35fa5233681f7c0f9f514509b8e399ab70fea5f17e45c9"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:30d006f98569de3459c2fc1f2acde170b7b2bd265dc1943e87e1a4efe1b67c31"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:416175faf02e4b0810f1f38bcb54682878a4af94059a1cd63b8747244420801f"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6aab0f181c486f973bc7262a97f5aca3ee7e1437011ef0c2ec04b5a11d16c927"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabf8315679312cfa71302f9bd509ded4f2f263fb5b765cf1433b39106c3cc9"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:bd28b817ea8c70215401f657edef3a8aa83c29d447fb0b622c35403780ba11d5"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:18343b2d246dc6761a249ba1fb13f9ee9a2bcd95decc767319506056ea4ad4dc"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-win32.whl", hash = "sha256:6fb70de56f1859a3f71261cbe41005f56a7842cc348d3aeb26237560bfa5e0ce"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-win_amd64.whl", hash = "sha256:cf1ebb7d78e1ad8ec2a8c4732c7be2e736f6e5123a4146c5b89c9d1f585f8cef"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3cd35b7e8aedeb9e34c41385fda4f73ba609e561faedfae0a9e75e44ac558a15"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b89bc04de1d83006373429975f8ef9e7932534b8cc9ca582e4db7d20d91816db"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2001a39612b241dae17b4687898843f254f8748b796a2e16f1051a17078d991d"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8dcfc373f888e4fb39a7bc57e93e3b845e7f462dacc008d9749568b1c4ece096"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:18b97b8404387b96cdbd30ad660f6407799126d26a39ca65729162fd810a99aa"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ccf600859c183d70eb47e05a44cd80a4ce77394d1ac0f79dbd2dd90a69a3a049"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:53cd68b185d98dde4ad8990e56a58dea83a4162161b1ea9272e5c9182ce415e0"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:30a96e1e1f865f78b030d65241c1ee850cdf422d869e9028e2fc1d5e4db73b92"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d716a916938e03231e86e43782ca7878fb602a125a91e7acb8b5112e2e96ac16"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-win32.whl", hash = "sha256:c6dbd0ccdda3a2ba7c2ecd9d77b37f3b5831687d8dc1b6ca5f56a4880cc7b7ce"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-win_amd64.whl", hash = "sha256:73dc19b562516fc9bcf6e5d6e596df0b4eb98d87e4f79f3ae71840e6ed21361c"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0f2be7e0cf7754b9a30eb01f4295cc3d4358a479843b31f328afd210e2c7598c"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c60e092517a73c632ec38e290eba714e9627abe9d301c8c8a12ec32c314a2a4b"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:252098c8c7a873e17dd696ed98bbe91dbacd571da4b87df3736768efa7a792e4"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3653fad4fe3ed447a596ae8638b437f827234f01a8cd801842e43f3d0a6b281b"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8999f965f922ae054125286faf9f11bc6932184b93011d138925a1773830bbe9"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d95bfb53c211b57198bb91c46dd5a2d8018b3af446583aab40074bf7988401cb"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:5b413b0b1bfd94dbf4023ad6945889f374cd24e3f62de58d6bb102c4d9ae534a"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:b5e3b2d152e74e100a9e9573837aba24aab611d39428ded46f4e4022ea7d1942"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a2d08ac246bb48479170408d6c19f6385fa743e7157d716e144cad849b2dd94b"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-win32.whl", hash = "sha256:ec557499516fc90fd374bf2e32349a2887a876fbf162c160e3c01b6849eaf557"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:5d8d01eac18c423815ed4f4a2ec3b439d654e55ee4ad610e153cf02faf67ea40"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:70bfc5f2c318afece2f5838ea5e4c3febada0be750fcf4775641052bbba14d05"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:23b6b24d74478dc833444cbd927c338349d6ae852ba53a0d02a2de1fce45b96e"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:34a7f768e3f985abdb42841e20e17b330ad3aaf4bb7e7aeeb73db2e70f077b99"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:fb731e5deb0c7ef82d698b0f4c5bb724633ee2a489401594c5c88b02e6cb15f7"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:257f26fed7d7ff59921b78244f3cd93ed2af1800ff048c33f624c87475819dd7"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1ef99f0456d3d46a50945c98de1774da86f8e992ab5c77865ea8b8195341fc19"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:2c322db9c8c89009a990ef07c3bcc9f011a3269bc06782f916cd3d9eed7c9312"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:511729f456829ef86ac41ca78c63a5cb55240ed23b4b737faca0eb1abb1c41bc"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:88ab34806dea0671532d3f82d82b85e8fc23d7b2dd12fa837978dad9bb392a34"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-win32.whl", hash = "sha256:16a8770207946ac75703458e2c743631c79c59c5890c80011d536248f8eaa432"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:d22dbedd33326a4a5190dd4fe9e9e693ef12160c77382d9e87919bce54f3d4ca"}, + {file = "charset_normalizer-3.4.3-py3-none-any.whl", hash = "sha256:ce571ab16d890d23b5c278547ba694193a45011ff86a9162a71307ed9f86759a"}, + {file = "charset_normalizer-3.4.3.tar.gz", hash = "sha256:6fce4b8500244f6fcb71465d4a4930d132ba9ab8e71a7859e6a5d59851068d14"}, ] [[package]] name = "click" -version = "8.1.7" +version = "8.2.1" description = "Composable command line interface toolkit" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.10" files = [ - {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, - {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, + {file = "click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b"}, + {file = "click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202"}, ] [package.dependencies] @@ -628,7 +606,6 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -638,139 +615,157 @@ files = [ [[package]] name = "coverage" -version = "7.3.1" +version = "7.10.3" description = "Code coverage measurement for Python" -category = "dev" optional = false -python-versions = ">=3.8" -files = [ - {file = "coverage-7.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cd0f7429ecfd1ff597389907045ff209c8fdb5b013d38cfa7c60728cb484b6e3"}, - {file = "coverage-7.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:966f10df9b2b2115da87f50f6a248e313c72a668248be1b9060ce935c871f276"}, - {file = "coverage-7.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0575c37e207bb9b98b6cf72fdaaa18ac909fb3d153083400c2d48e2e6d28bd8e"}, - {file = "coverage-7.3.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:245c5a99254e83875c7fed8b8b2536f040997a9b76ac4c1da5bff398c06e860f"}, - {file = "coverage-7.3.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c96dd7798d83b960afc6c1feb9e5af537fc4908852ef025600374ff1a017392"}, - {file = "coverage-7.3.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:de30c1aa80f30af0f6b2058a91505ea6e36d6535d437520067f525f7df123887"}, - {file = "coverage-7.3.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:50dd1e2dd13dbbd856ffef69196781edff26c800a74f070d3b3e3389cab2600d"}, - {file = "coverage-7.3.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b9c0c19f70d30219113b18fe07e372b244fb2a773d4afde29d5a2f7930765136"}, - {file = "coverage-7.3.1-cp310-cp310-win32.whl", hash = "sha256:770f143980cc16eb601ccfd571846e89a5fe4c03b4193f2e485268f224ab602f"}, - {file = "coverage-7.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:cdd088c00c39a27cfa5329349cc763a48761fdc785879220d54eb785c8a38520"}, - {file = "coverage-7.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:74bb470399dc1989b535cb41f5ca7ab2af561e40def22d7e188e0a445e7639e3"}, - {file = "coverage-7.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:025ded371f1ca280c035d91b43252adbb04d2aea4c7105252d3cbc227f03b375"}, - {file = "coverage-7.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a6191b3a6ad3e09b6cfd75b45c6aeeffe7e3b0ad46b268345d159b8df8d835f9"}, - {file = "coverage-7.3.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7eb0b188f30e41ddd659a529e385470aa6782f3b412f860ce22b2491c89b8593"}, - {file = "coverage-7.3.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75c8f0df9dfd8ff745bccff75867d63ef336e57cc22b2908ee725cc552689ec8"}, - {file = "coverage-7.3.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7eb3cd48d54b9bd0e73026dedce44773214064be93611deab0b6a43158c3d5a0"}, - {file = "coverage-7.3.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:ac3c5b7e75acac31e490b7851595212ed951889918d398b7afa12736c85e13ce"}, - {file = "coverage-7.3.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5b4ee7080878077af0afa7238df1b967f00dc10763f6e1b66f5cced4abebb0a3"}, - {file = "coverage-7.3.1-cp311-cp311-win32.whl", hash = "sha256:229c0dd2ccf956bf5aeede7e3131ca48b65beacde2029f0361b54bf93d36f45a"}, - {file = "coverage-7.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:c6f55d38818ca9596dc9019eae19a47410d5322408140d9a0076001a3dcb938c"}, - {file = "coverage-7.3.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5289490dd1c3bb86de4730a92261ae66ea8d44b79ed3cc26464f4c2cde581fbc"}, - {file = "coverage-7.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ca833941ec701fda15414be400c3259479bfde7ae6d806b69e63b3dc423b1832"}, - {file = "coverage-7.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd694e19c031733e446c8024dedd12a00cda87e1c10bd7b8539a87963685e969"}, - {file = "coverage-7.3.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aab8e9464c00da5cb9c536150b7fbcd8850d376d1151741dd0d16dfe1ba4fd26"}, - {file = "coverage-7.3.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87d38444efffd5b056fcc026c1e8d862191881143c3aa80bb11fcf9dca9ae204"}, - {file = "coverage-7.3.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:8a07b692129b8a14ad7a37941a3029c291254feb7a4237f245cfae2de78de037"}, - {file = "coverage-7.3.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:2829c65c8faaf55b868ed7af3c7477b76b1c6ebeee99a28f59a2cb5907a45760"}, - {file = "coverage-7.3.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1f111a7d85658ea52ffad7084088277135ec5f368457275fc57f11cebb15607f"}, - {file = "coverage-7.3.1-cp312-cp312-win32.whl", hash = "sha256:c397c70cd20f6df7d2a52283857af622d5f23300c4ca8e5bd8c7a543825baa5a"}, - {file = "coverage-7.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:5ae4c6da8b3d123500f9525b50bf0168023313963e0e2e814badf9000dd6ef92"}, - {file = "coverage-7.3.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ca70466ca3a17460e8fc9cea7123c8cbef5ada4be3140a1ef8f7b63f2f37108f"}, - {file = "coverage-7.3.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f2781fd3cabc28278dc982a352f50c81c09a1a500cc2086dc4249853ea96b981"}, - {file = "coverage-7.3.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6407424621f40205bbe6325686417e5e552f6b2dba3535dd1f90afc88a61d465"}, - {file = "coverage-7.3.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:04312b036580ec505f2b77cbbdfb15137d5efdfade09156961f5277149f5e344"}, - {file = "coverage-7.3.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac9ad38204887349853d7c313f53a7b1c210ce138c73859e925bc4e5d8fc18e7"}, - {file = "coverage-7.3.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:53669b79f3d599da95a0afbef039ac0fadbb236532feb042c534fbb81b1a4e40"}, - {file = "coverage-7.3.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:614f1f98b84eb256e4f35e726bfe5ca82349f8dfa576faabf8a49ca09e630086"}, - {file = "coverage-7.3.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f1a317fdf5c122ad642db8a97964733ab7c3cf6009e1a8ae8821089993f175ff"}, - {file = "coverage-7.3.1-cp38-cp38-win32.whl", hash = "sha256:defbbb51121189722420a208957e26e49809feafca6afeef325df66c39c4fdb3"}, - {file = "coverage-7.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:f4f456590eefb6e1b3c9ea6328c1e9fa0f1006e7481179d749b3376fc793478e"}, - {file = "coverage-7.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f12d8b11a54f32688b165fd1a788c408f927b0960984b899be7e4c190ae758f1"}, - {file = "coverage-7.3.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f09195dda68d94a53123883de75bb97b0e35f5f6f9f3aa5bf6e496da718f0cb6"}, - {file = "coverage-7.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6601a60318f9c3945be6ea0f2a80571f4299b6801716f8a6e4846892737ebe4"}, - {file = "coverage-7.3.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07d156269718670d00a3b06db2288b48527fc5f36859425ff7cec07c6b367745"}, - {file = "coverage-7.3.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:636a8ac0b044cfeccae76a36f3b18264edcc810a76a49884b96dd744613ec0b7"}, - {file = "coverage-7.3.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5d991e13ad2ed3aced177f524e4d670f304c8233edad3210e02c465351f785a0"}, - {file = "coverage-7.3.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:586649ada7cf139445da386ab6f8ef00e6172f11a939fc3b2b7e7c9082052fa0"}, - {file = "coverage-7.3.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4aba512a15a3e1e4fdbfed2f5392ec221434a614cc68100ca99dcad7af29f3f8"}, - {file = "coverage-7.3.1-cp39-cp39-win32.whl", hash = "sha256:6bc6f3f4692d806831c136c5acad5ccedd0262aa44c087c46b7101c77e139140"}, - {file = "coverage-7.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:553d7094cb27db58ea91332e8b5681bac107e7242c23f7629ab1316ee73c4981"}, - {file = "coverage-7.3.1-pp38.pp39.pp310-none-any.whl", hash = "sha256:220eb51f5fb38dfdb7e5d54284ca4d0cd70ddac047d750111a68ab1798945194"}, - {file = "coverage-7.3.1.tar.gz", hash = "sha256:6cb7fe1581deb67b782c153136541e20901aa312ceedaf1467dcb35255787952"}, -] - -[package.dependencies] -tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.11.0a6\" and extra == \"toml\""} +python-versions = ">=3.9" +files = [ + {file = "coverage-7.10.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:53808194afdf948c462215e9403cca27a81cf150d2f9b386aee4dab614ae2ffe"}, + {file = "coverage-7.10.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f4d1b837d1abf72187a61645dbf799e0d7705aa9232924946e1f57eb09a3bf00"}, + {file = "coverage-7.10.3-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:2a90dd4505d3cc68b847ab10c5ee81822a968b5191664e8a0801778fa60459fa"}, + {file = "coverage-7.10.3-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:d52989685ff5bf909c430e6d7f6550937bc6d6f3e6ecb303c97a86100efd4596"}, + {file = "coverage-7.10.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bdb558a1d97345bde3a9f4d3e8d11c9e5611f748646e9bb61d7d612a796671b5"}, + {file = "coverage-7.10.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c9e6331a8f09cb1fc8bda032752af03c366870b48cce908875ba2620d20d0ad4"}, + {file = "coverage-7.10.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:992f48bf35b720e174e7fae916d943599f1a66501a2710d06c5f8104e0756ee1"}, + {file = "coverage-7.10.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c5595fc4ad6a39312c786ec3326d7322d0cf10e3ac6a6df70809910026d67cfb"}, + {file = "coverage-7.10.3-cp310-cp310-win32.whl", hash = "sha256:9e92fa1f2bd5a57df9d00cf9ce1eb4ef6fccca4ceabec1c984837de55329db34"}, + {file = "coverage-7.10.3-cp310-cp310-win_amd64.whl", hash = "sha256:b96524d6e4a3ce6a75c56bb15dbd08023b0ae2289c254e15b9fbdddf0c577416"}, + {file = "coverage-7.10.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f2ff2e2afdf0d51b9b8301e542d9c21a8d084fd23d4c8ea2b3a1b3c96f5f7397"}, + {file = "coverage-7.10.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:18ecc5d1b9a8c570f6c9b808fa9a2b16836b3dd5414a6d467ae942208b095f85"}, + {file = "coverage-7.10.3-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:1af4461b25fe92889590d438905e1fc79a95680ec2a1ff69a591bb3fdb6c7157"}, + {file = "coverage-7.10.3-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:3966bc9a76b09a40dc6063c8b10375e827ea5dfcaffae402dd65953bef4cba54"}, + {file = "coverage-7.10.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:205a95b87ef4eb303b7bc5118b47b6b6604a644bcbdb33c336a41cfc0a08c06a"}, + {file = "coverage-7.10.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5b3801b79fb2ad61e3c7e2554bab754fc5f105626056980a2b9cf3aef4f13f84"}, + {file = "coverage-7.10.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:b0dc69c60224cda33d384572da945759756e3f06b9cdac27f302f53961e63160"}, + {file = "coverage-7.10.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a83d4f134bab2c7ff758e6bb1541dd72b54ba295ced6a63d93efc2e20cb9b124"}, + {file = "coverage-7.10.3-cp311-cp311-win32.whl", hash = "sha256:54e409dd64e5302b2a8fdf44ec1c26f47abd1f45a2dcf67bd161873ee05a59b8"}, + {file = "coverage-7.10.3-cp311-cp311-win_amd64.whl", hash = "sha256:30c601610a9b23807c5e9e2e442054b795953ab85d525c3de1b1b27cebeb2117"}, + {file = "coverage-7.10.3-cp311-cp311-win_arm64.whl", hash = "sha256:dabe662312a97958e932dee056f2659051d822552c0b866823e8ba1c2fe64770"}, + {file = "coverage-7.10.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:449c1e2d3a84d18bd204258a897a87bc57380072eb2aded6a5b5226046207b42"}, + {file = "coverage-7.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1d4f9ce50b9261ad196dc2b2e9f1fbbee21651b54c3097a25ad783679fd18294"}, + {file = "coverage-7.10.3-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:4dd4564207b160d0d45c36a10bc0a3d12563028e8b48cd6459ea322302a156d7"}, + {file = "coverage-7.10.3-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:5ca3c9530ee072b7cb6a6ea7b640bcdff0ad3b334ae9687e521e59f79b1d0437"}, + {file = "coverage-7.10.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b6df359e59fa243c9925ae6507e27f29c46698359f45e568fd51b9315dbbe587"}, + {file = "coverage-7.10.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a181e4c2c896c2ff64c6312db3bda38e9ade2e1aa67f86a5628ae85873786cea"}, + {file = "coverage-7.10.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a374d4e923814e8b72b205ef6b3d3a647bb50e66f3558582eda074c976923613"}, + {file = "coverage-7.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:daeefff05993e5e8c6e7499a8508e7bd94502b6b9a9159c84fd1fe6bce3151cb"}, + {file = "coverage-7.10.3-cp312-cp312-win32.whl", hash = "sha256:187ecdcac21f9636d570e419773df7bd2fda2e7fa040f812e7f95d0bddf5f79a"}, + {file = "coverage-7.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:4a50ad2524ee7e4c2a95e60d2b0b83283bdfc745fe82359d567e4f15d3823eb5"}, + {file = "coverage-7.10.3-cp312-cp312-win_arm64.whl", hash = "sha256:c112f04e075d3495fa3ed2200f71317da99608cbb2e9345bdb6de8819fc30571"}, + {file = "coverage-7.10.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b99e87304ffe0eb97c5308447328a584258951853807afdc58b16143a530518a"}, + {file = "coverage-7.10.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4af09c7574d09afbc1ea7da9dcea23665c01f3bc1b1feb061dac135f98ffc53a"}, + {file = "coverage-7.10.3-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:488e9b50dc5d2aa9521053cfa706209e5acf5289e81edc28291a24f4e4488f46"}, + {file = "coverage-7.10.3-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:913ceddb4289cbba3a310704a424e3fb7aac2bc0c3a23ea473193cb290cf17d4"}, + {file = "coverage-7.10.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b1f91cbc78c7112ab84ed2a8defbccd90f888fcae40a97ddd6466b0bec6ae8a"}, + {file = "coverage-7.10.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b0bac054d45af7cd938834b43a9878b36ea92781bcb009eab040a5b09e9927e3"}, + {file = "coverage-7.10.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:fe72cbdd12d9e0f4aca873fa6d755e103888a7f9085e4a62d282d9d5b9f7928c"}, + {file = "coverage-7.10.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c1e2e927ab3eadd7c244023927d646e4c15c65bb2ac7ae3c3e9537c013700d21"}, + {file = "coverage-7.10.3-cp313-cp313-win32.whl", hash = "sha256:24d0c13de473b04920ddd6e5da3c08831b1170b8f3b17461d7429b61cad59ae0"}, + {file = "coverage-7.10.3-cp313-cp313-win_amd64.whl", hash = "sha256:3564aae76bce4b96e2345cf53b4c87e938c4985424a9be6a66ee902626edec4c"}, + {file = "coverage-7.10.3-cp313-cp313-win_arm64.whl", hash = "sha256:f35580f19f297455f44afcd773c9c7a058e52eb6eb170aa31222e635f2e38b87"}, + {file = "coverage-7.10.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:07009152f497a0464ffdf2634586787aea0e69ddd023eafb23fc38267db94b84"}, + {file = "coverage-7.10.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:8dd2ba5f0c7e7e8cc418be2f0c14c4d9e3f08b8fb8e4c0f83c2fe87d03eb655e"}, + {file = "coverage-7.10.3-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:1ae22b97003c74186e034a93e4f946c75fad8c0ce8d92fbbc168b5e15ee2841f"}, + {file = "coverage-7.10.3-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:eb329f1046888a36b1dc35504d3029e1dd5afe2196d94315d18c45ee380f67d5"}, + {file = "coverage-7.10.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce01048199a91f07f96ca3074b0c14021f4fe7ffd29a3e6a188ac60a5c3a4af8"}, + {file = "coverage-7.10.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:08b989a06eb9dfacf96d42b7fb4c9a22bafa370d245dc22fa839f2168c6f9fa1"}, + {file = "coverage-7.10.3-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:669fe0d4e69c575c52148511029b722ba8d26e8a3129840c2ce0522e1452b256"}, + {file = "coverage-7.10.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:3262d19092771c83f3413831d9904b1ccc5f98da5de4ffa4ad67f5b20c7aaf7b"}, + {file = "coverage-7.10.3-cp313-cp313t-win32.whl", hash = "sha256:cc0ee4b2ccd42cab7ee6be46d8a67d230cb33a0a7cd47a58b587a7063b6c6b0e"}, + {file = "coverage-7.10.3-cp313-cp313t-win_amd64.whl", hash = "sha256:03db599f213341e2960430984e04cf35fb179724e052a3ee627a068653cf4a7c"}, + {file = "coverage-7.10.3-cp313-cp313t-win_arm64.whl", hash = "sha256:46eae7893ba65f53c71284585a262f083ef71594f05ec5c85baf79c402369098"}, + {file = "coverage-7.10.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:bce8b8180912914032785850d8f3aacb25ec1810f5f54afc4a8b114e7a9b55de"}, + {file = "coverage-7.10.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:07790b4b37d56608536f7c1079bd1aa511567ac2966d33d5cec9cf520c50a7c8"}, + {file = "coverage-7.10.3-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:e79367ef2cd9166acedcbf136a458dfe9a4a2dd4d1ee95738fb2ee581c56f667"}, + {file = "coverage-7.10.3-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:419d2a0f769f26cb1d05e9ccbc5eab4cb5d70231604d47150867c07822acbdf4"}, + {file = "coverage-7.10.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee221cf244757cdc2ac882e3062ab414b8464ad9c884c21e878517ea64b3fa26"}, + {file = "coverage-7.10.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c2079d8cdd6f7373d628e14b3357f24d1db02c9dc22e6a007418ca7a2be0435a"}, + {file = "coverage-7.10.3-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:bd8df1f83c0703fa3ca781b02d36f9ec67ad9cb725b18d486405924f5e4270bd"}, + {file = "coverage-7.10.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:6b4e25e0fa335c8aa26e42a52053f3786a61cc7622b4d54ae2dad994aa754fec"}, + {file = "coverage-7.10.3-cp314-cp314-win32.whl", hash = "sha256:d7c3d02c2866deb217dce664c71787f4b25420ea3eaf87056f44fb364a3528f5"}, + {file = "coverage-7.10.3-cp314-cp314-win_amd64.whl", hash = "sha256:9c8916d44d9e0fe6cdb2227dc6b0edd8bc6c8ef13438bbbf69af7482d9bb9833"}, + {file = "coverage-7.10.3-cp314-cp314-win_arm64.whl", hash = "sha256:1007d6a2b3cf197c57105cc1ba390d9ff7f0bee215ced4dea530181e49c65ab4"}, + {file = "coverage-7.10.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:ebc8791d346410d096818788877d675ca55c91db87d60e8f477bd41c6970ffc6"}, + {file = "coverage-7.10.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1f4e4d8e75f6fd3c6940ebeed29e3d9d632e1f18f6fb65d33086d99d4d073241"}, + {file = "coverage-7.10.3-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:24581ed69f132b6225a31b0228ae4885731cddc966f8a33fe5987288bdbbbd5e"}, + {file = "coverage-7.10.3-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:ec151569ddfccbf71bac8c422dce15e176167385a00cd86e887f9a80035ce8a5"}, + {file = "coverage-7.10.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2ae8e7c56290b908ee817200c0b65929b8050bc28530b131fe7c6dfee3e7d86b"}, + {file = "coverage-7.10.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5fb742309766d7e48e9eb4dc34bc95a424707bc6140c0e7d9726e794f11b92a0"}, + {file = "coverage-7.10.3-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:c65e2a5b32fbe1e499f1036efa6eb9cb4ea2bf6f7168d0e7a5852f3024f471b1"}, + {file = "coverage-7.10.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:d48d2cb07d50f12f4f18d2bb75d9d19e3506c26d96fffabf56d22936e5ed8f7c"}, + {file = "coverage-7.10.3-cp314-cp314t-win32.whl", hash = "sha256:dec0d9bc15ee305e09fe2cd1911d3f0371262d3cfdae05d79515d8cb712b4869"}, + {file = "coverage-7.10.3-cp314-cp314t-win_amd64.whl", hash = "sha256:424ea93a323aa0f7f01174308ea78bde885c3089ec1bef7143a6d93c3e24ef64"}, + {file = "coverage-7.10.3-cp314-cp314t-win_arm64.whl", hash = "sha256:f5983c132a62d93d71c9ef896a0b9bf6e6828d8d2ea32611f58684fba60bba35"}, + {file = "coverage-7.10.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:da749daa7e141985487e1ff90a68315b0845930ed53dc397f4ae8f8bab25b551"}, + {file = "coverage-7.10.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f3126fb6a47d287f461d9b1aa5d1a8c97034d1dffb4f452f2cf211289dae74ef"}, + {file = "coverage-7.10.3-cp39-cp39-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3da794db13cc27ca40e1ec8127945b97fab78ba548040047d54e7bfa6d442dca"}, + {file = "coverage-7.10.3-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:4e27bebbd184ef8d1c1e092b74a2b7109dcbe2618dce6e96b1776d53b14b3fe8"}, + {file = "coverage-7.10.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8fd4ee2580b9fefbd301b4f8f85b62ac90d1e848bea54f89a5748cf132782118"}, + {file = "coverage-7.10.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:6999920bdd73259ce11cabfc1307484f071ecc6abdb2ca58d98facbcefc70f16"}, + {file = "coverage-7.10.3-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:c3623f929db885fab100cb88220a5b193321ed37e03af719efdbaf5d10b6e227"}, + {file = "coverage-7.10.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:25b902c5e15dea056485d782e420bb84621cc08ee75d5131ecb3dbef8bd1365f"}, + {file = "coverage-7.10.3-cp39-cp39-win32.whl", hash = "sha256:f930a4d92b004b643183451fe9c8fe398ccf866ed37d172ebaccfd443a097f61"}, + {file = "coverage-7.10.3-cp39-cp39-win_amd64.whl", hash = "sha256:08e638a93c8acba13c7842953f92a33d52d73e410329acd472280d2a21a6c0e1"}, + {file = "coverage-7.10.3-py3-none-any.whl", hash = "sha256:416a8d74dc0adfd33944ba2f405897bab87b7e9e84a391e09d241956bd953ce1"}, + {file = "coverage-7.10.3.tar.gz", hash = "sha256:812ba9250532e4a823b070b0420a36499859542335af3dca8f47fc6aa1a05619"}, +] [package.extras] toml = ["tomli"] [[package]] name = "cryptography" -version = "41.0.3" +version = "43.0.3" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-41.0.3-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:652627a055cb52a84f8c448185922241dd5217443ca194d5739b44612c5e6507"}, - {file = "cryptography-41.0.3-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:8f09daa483aedea50d249ef98ed500569841d6498aa9c9f4b0531b9964658922"}, - {file = "cryptography-41.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4fd871184321100fb400d759ad0cddddf284c4b696568204d281c902fc7b0d81"}, - {file = "cryptography-41.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84537453d57f55a50a5b6835622ee405816999a7113267739a1b4581f83535bd"}, - {file = "cryptography-41.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:3fb248989b6363906827284cd20cca63bb1a757e0a2864d4c1682a985e3dca47"}, - {file = "cryptography-41.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:42cb413e01a5d36da9929baa9d70ca90d90b969269e5a12d39c1e0d475010116"}, - {file = "cryptography-41.0.3-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:aeb57c421b34af8f9fe830e1955bf493a86a7996cc1338fe41b30047d16e962c"}, - {file = "cryptography-41.0.3-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:6af1c6387c531cd364b72c28daa29232162010d952ceb7e5ca8e2827526aceae"}, - {file = "cryptography-41.0.3-cp37-abi3-win32.whl", hash = "sha256:0d09fb5356f975974dbcb595ad2d178305e5050656affb7890a1583f5e02a306"}, - {file = "cryptography-41.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:a983e441a00a9d57a4d7c91b3116a37ae602907a7618b882c8013b5762e80574"}, - {file = "cryptography-41.0.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5259cb659aa43005eb55a0e4ff2c825ca111a0da1814202c64d28a985d33b087"}, - {file = "cryptography-41.0.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:67e120e9a577c64fe1f611e53b30b3e69744e5910ff3b6e97e935aeb96005858"}, - {file = "cryptography-41.0.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:7efe8041897fe7a50863e51b77789b657a133c75c3b094e51b5e4b5cec7bf906"}, - {file = "cryptography-41.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ce785cf81a7bdade534297ef9e490ddff800d956625020ab2ec2780a556c313e"}, - {file = "cryptography-41.0.3-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:57a51b89f954f216a81c9d057bf1a24e2f36e764a1ca9a501a6964eb4a6800dd"}, - {file = "cryptography-41.0.3-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:4c2f0d35703d61002a2bbdcf15548ebb701cfdd83cdc12471d2bae80878a4207"}, - {file = "cryptography-41.0.3-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:23c2d778cf829f7d0ae180600b17e9fceea3c2ef8b31a99e3c694cbbf3a24b84"}, - {file = "cryptography-41.0.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:95dd7f261bb76948b52a5330ba5202b91a26fbac13ad0e9fc8a3ac04752058c7"}, - {file = "cryptography-41.0.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:41d7aa7cdfded09b3d73a47f429c298e80796c8e825ddfadc84c8a7f12df212d"}, - {file = "cryptography-41.0.3-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:d0d651aa754ef58d75cec6edfbd21259d93810b73f6ec246436a21b7841908de"}, - {file = "cryptography-41.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:ab8de0d091acbf778f74286f4989cf3d1528336af1b59f3e5d2ebca8b5fe49e1"}, - {file = "cryptography-41.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a74fbcdb2a0d46fe00504f571a2a540532f4c188e6ccf26f1f178480117b33c4"}, - {file = "cryptography-41.0.3.tar.gz", hash = "sha256:6d192741113ef5e30d89dcb5b956ef4e1578f304708701b8b73d38e3e1461f34"}, -] - -[package.dependencies] -cffi = ">=1.12" + {file = "cryptography-43.0.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:bf7a1932ac4176486eab36a19ed4c0492da5d97123f1406cf15e41b05e787d2e"}, + {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63efa177ff54aec6e1c0aefaa1a241232dcd37413835a9b674b6e3f0ae2bfd3e"}, + {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e1ce50266f4f70bf41a2c6dc4358afadae90e2a1e5342d3c08883df1675374f"}, + {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:443c4a81bb10daed9a8f334365fe52542771f25aedaf889fd323a853ce7377d6"}, + {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:74f57f24754fe349223792466a709f8e0c093205ff0dca557af51072ff47ab18"}, + {file = "cryptography-43.0.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9762ea51a8fc2a88b70cf2995e5675b38d93bf36bd67d91721c309df184f49bd"}, + {file = "cryptography-43.0.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:81ef806b1fef6b06dcebad789f988d3b37ccaee225695cf3e07648eee0fc6b73"}, + {file = "cryptography-43.0.3-cp37-abi3-win32.whl", hash = "sha256:cbeb489927bd7af4aa98d4b261af9a5bc025bd87f0e3547e11584be9e9427be2"}, + {file = "cryptography-43.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:f46304d6f0c6ab8e52770addfa2fc41e6629495548862279641972b6215451cd"}, + {file = "cryptography-43.0.3-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:8ac43ae87929a5982f5948ceda07001ee5e83227fd69cf55b109144938d96984"}, + {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:846da004a5804145a5f441b8530b4bf35afbf7da70f82409f151695b127213d5"}, + {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f996e7268af62598f2fc1204afa98a3b5712313a55c4c9d434aef49cadc91d4"}, + {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:f7b178f11ed3664fd0e995a47ed2b5ff0a12d893e41dd0494f406d1cf555cab7"}, + {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:c2e6fc39c4ab499049df3bdf567f768a723a5e8464816e8f009f121a5a9f4405"}, + {file = "cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:e1be4655c7ef6e1bbe6b5d0403526601323420bcf414598955968c9ef3eb7d16"}, + {file = "cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:df6b6c6d742395dd77a23ea3728ab62f98379eff8fb61be2744d4679ab678f73"}, + {file = "cryptography-43.0.3-cp39-abi3-win32.whl", hash = "sha256:d56e96520b1020449bbace2b78b603442e7e378a9b3bd68de65c782db1507995"}, + {file = "cryptography-43.0.3-cp39-abi3-win_amd64.whl", hash = "sha256:0c580952eef9bf68c4747774cde7ec1d85a6e61de97281f2dba83c7d2c806362"}, + {file = "cryptography-43.0.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d03b5621a135bffecad2c73e9f4deb1a0f977b9a8ffe6f8e002bf6c9d07b918c"}, + {file = "cryptography-43.0.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:a2a431ee15799d6db9fe80c82b055bae5a752bef645bba795e8e52687c69efe3"}, + {file = "cryptography-43.0.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:281c945d0e28c92ca5e5930664c1cefd85efe80e5c0d2bc58dd63383fda29f83"}, + {file = "cryptography-43.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:f18c716be16bc1fea8e95def49edf46b82fccaa88587a45f8dc0ff6ab5d8e0a7"}, + {file = "cryptography-43.0.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:4a02ded6cd4f0a5562a8887df8b3bd14e822a90f97ac5e544c162899bc467664"}, + {file = "cryptography-43.0.3-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:53a583b6637ab4c4e3591a15bc9db855b8d9dee9a669b550f311480acab6eb08"}, + {file = "cryptography-43.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1ec0bcf7e17c0c5669d881b1cd38c4972fade441b27bda1051665faaa89bdcaa"}, + {file = "cryptography-43.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2ce6fae5bdad59577b44e4dfed356944fbf1d925269114c28be377692643b4ff"}, + {file = "cryptography-43.0.3.tar.gz", hash = "sha256:315b9001266a492a6ff443b61238f956b214dbec9910a081ba5b6646a055a805"}, +] + +[package.dependencies] +cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""} [package.extras] docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] -docstest = ["pyenchant (>=1.6.11)", "sphinxcontrib-spelling (>=4.0.1)", "twine (>=1.12.0)"] +docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"] nox = ["nox"] -pep8test = ["black", "check-sdist", "mypy", "ruff"] +pep8test = ["check-sdist", "click", "mypy", "ruff"] sdist = ["build"] ssh = ["bcrypt (>=3.1.5)"] -test = ["pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] +test = ["certifi", "cryptography-vectors (==43.0.3)", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] test-randomorder = ["pytest-randomly"] -[[package]] -name = "cssbeautifier" -version = "1.14.9" -description = "CSS unobfuscator and beautifier." -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "cssbeautifier-1.14.9.tar.gz", hash = "sha256:2da432472f68170eb854aff97b16a24721f5090ee36af2e31199590a89e7f71f"}, -] - -[package.dependencies] -editorconfig = ">=0.12.2" -jsbeautifier = "*" -six = ">=1.13.0" - [[package]] name = "cssmin" version = "0.2.0" description = "A Python port of the YUI CSS compression algorithm." -category = "main" optional = false python-versions = "*" files = [ @@ -781,7 +776,6 @@ files = [ name = "defusedxml" version = "0.7.1" description = "XML bomb protection for Python stdlib modules" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -791,120 +785,63 @@ files = [ [[package]] name = "distlib" -version = "0.3.7" +version = "0.4.0" description = "Distribution utilities" -category = "main" optional = false python-versions = "*" files = [ - {file = "distlib-0.3.7-py2.py3-none-any.whl", hash = "sha256:2e24928bc811348f0feb63014e97aaae3037f2cf48712d51ae61df7fd6075057"}, - {file = "distlib-0.3.7.tar.gz", hash = "sha256:9dafe54b34a028eafd95039d5e5d4851a13734540f1331060d31c9916e7147a8"}, -] - -[[package]] -name = "djlint" -version = "1.33.0" -description = "HTML Template Linter and Formatter" -category = "dev" -optional = false -python-versions = ">=3.8.0,<4.0.0" -files = [ - {file = "djlint-1.33.0-py3-none-any.whl", hash = "sha256:aaf7bcbcfe937de5ff52747b573a8c78146b739d058dc817350640206aa477cc"}, - {file = "djlint-1.33.0.tar.gz", hash = "sha256:427e1d0b1cf2dc1922808d27d5a1078369d0c05b0fd2267f0bef06e9049bf3cf"}, -] - -[package.dependencies] -click = ">=8.0.1,<9.0.0" -colorama = ">=0.4.4,<0.5.0" -cssbeautifier = ">=1.14.4,<2.0.0" -html-tag-names = ">=0.1.2,<0.2.0" -html-void-elements = ">=0.1.0,<0.2.0" -jsbeautifier = ">=1.14.4,<2.0.0" -json5 = ">=0.9.11,<0.10.0" -pathspec = ">=0.11.0,<0.12.0" -PyYAML = ">=6.0,<7.0" -regex = ">=2023.0.0,<2024.0.0" -tomli = {version = ">=2.0.1,<3.0.0", markers = "python_version < \"3.11\""} -tqdm = ">=4.62.2,<5.0.0" - -[[package]] -name = "editorconfig" -version = "0.12.3" -description = "EditorConfig File Locator and Interpreter for Python" -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "EditorConfig-0.12.3-py3-none-any.whl", hash = "sha256:6b0851425aa875b08b16789ee0eeadbd4ab59666e9ebe728e526314c4a2e52c1"}, - {file = "EditorConfig-0.12.3.tar.gz", hash = "sha256:57f8ce78afcba15c8b18d46b5170848c88d56fd38f05c2ec60dbbfcb8996e89e"}, + {file = "distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16"}, + {file = "distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d"}, ] [[package]] name = "elementpath" -version = "4.1.5" +version = "4.8.0" description = "XPath 1.0/2.0/3.0/3.1 parsers and selectors for ElementTree and lxml" -category = "main" -optional = false -python-versions = ">=3.7" -files = [ - {file = "elementpath-4.1.5-py3-none-any.whl", hash = "sha256:2ac1a2fb31eb22bbbf817f8cf6752f844513216263f0e3892c8e79782fe4bb55"}, - {file = "elementpath-4.1.5.tar.gz", hash = "sha256:c2d6dc524b29ef751ecfc416b0627668119d8812441c555d7471da41d4bacb8d"}, -] - -[package.extras] -dev = ["Sphinx", "coverage", "flake8", "lxml", "lxml-stubs", "memory-profiler", "memray", "mypy", "tox", "xmlschema (>=2.0.0)"] - -[[package]] -name = "exceptiongroup" -version = "1.1.3" -description = "Backport of PEP 654 (exception groups)" -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "exceptiongroup-1.1.3-py3-none-any.whl", hash = "sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3"}, - {file = "exceptiongroup-1.1.3.tar.gz", hash = "sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9"}, + {file = "elementpath-4.8.0-py3-none-any.whl", hash = "sha256:5393191f84969bcf8033b05ec4593ef940e58622ea13cefe60ecefbbf09d58d9"}, + {file = "elementpath-4.8.0.tar.gz", hash = "sha256:5822a2560d99e2633d95f78694c7ff9646adaa187db520da200a8e9479dc46ae"}, ] [package.extras] -test = ["pytest (>=6)"] +dev = ["Sphinx", "coverage", "flake8", "lxml", "lxml-stubs", "memory-profiler", "memray", "mypy", "tox", "xmlschema (>=3.3.2)"] [[package]] name = "filelock" -version = "3.12.4" +version = "3.18.0" description = "A platform independent file lock." -category = "main" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "filelock-3.12.4-py3-none-any.whl", hash = "sha256:08c21d87ded6e2b9da6728c3dff51baf1dcecf973b768ef35bcbc3447edb9ad4"}, - {file = "filelock-3.12.4.tar.gz", hash = "sha256:2e6f249f1f3654291606e046b09f1fd5eac39b360664c27f5aad072012f8bcbd"}, + {file = "filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de"}, + {file = "filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2"}, ] [package.extras] -docs = ["furo (>=2023.7.26)", "sphinx (>=7.1.2)", "sphinx-autodoc-typehints (>=1.24)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.3)", "diff-cover (>=7.7)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)", "pytest-timeout (>=2.1)"] -typing = ["typing-extensions (>=4.7.1)"] +docs = ["furo (>=2024.8.6)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.6.10)", "diff-cover (>=9.2.1)", "pytest (>=8.3.4)", "pytest-asyncio (>=0.25.2)", "pytest-cov (>=6)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.28.1)"] +typing = ["typing-extensions (>=4.12.2)"] [[package]] name = "flask" -version = "2.3.3" +version = "3.1.1" description = "A simple framework for building complex web applications." -category = "main" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "flask-2.3.3-py3-none-any.whl", hash = "sha256:f69fcd559dc907ed196ab9df0e48471709175e696d6e698dd4dbe940f96ce66b"}, - {file = "flask-2.3.3.tar.gz", hash = "sha256:09c347a92aa7ff4a8e7f3206795f30d826654baf38b873d0744cd571ca609efc"}, + {file = "flask-3.1.1-py3-none-any.whl", hash = "sha256:07aae2bb5eaf77993ef57e357491839f5fd9f4dc281593a81a9e4d79a24f295c"}, + {file = "flask-3.1.1.tar.gz", hash = "sha256:284c7b8f2f58cb737f0cf1c30fd7eaf0ccfcde196099d24ecede3fc2005aa59e"}, ] [package.dependencies] -blinker = ">=1.6.2" +blinker = ">=1.9.0" click = ">=8.1.3" -importlib-metadata = {version = ">=3.6.0", markers = "python_version < \"3.10\""} -itsdangerous = ">=2.1.2" -Jinja2 = ">=3.1.2" -Werkzeug = ">=2.3.7" +itsdangerous = ">=2.2.0" +jinja2 = ">=3.1.2" +markupsafe = ">=2.1.1" +werkzeug = ">=3.1.0" [package.extras] async = ["asgiref (>=3.2)"] @@ -912,96 +849,87 @@ dotenv = ["python-dotenv"] [[package]] name = "flask-apscheduler" -version = "1.13.0" +version = "1.13.1" description = "Adds APScheduler support to Flask" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "Flask-APScheduler-1.13.0.tar.gz", hash = "sha256:19555d6761990f110678aa584ab3ad0e7e698238e6ff60d8f38ab1322bda14c2"}, + {file = "Flask-APScheduler-1.13.1.tar.gz", hash = "sha256:b929846f026fb339b76360b0e4fc75da78b75c6d08625715bd0d37949bd607da"}, ] [package.dependencies] apscheduler = ">=3.2.0,<4.0.0" -flask = ">=2.2.5,<3.0.0" +flask = ">=2.2.5,<4.0.0" python-dateutil = ">=2.4.2" [[package]] -name = "Flask-Assets" -version = "2.0" +name = "flask-assets" +version = "2.1.0" description = "Asset management for Flask, to compress and merge CSS and Javascript files." -category = "main" optional = false python-versions = "*" -files = [] -develop = false +files = [ + {file = "Flask-Assets-2.1.0.tar.gz", hash = "sha256:f84d6532ffe59c9ff352885e8740ff4da25c0bcfacd805f0a806815e44354813"}, + {file = "Flask_Assets-2.1.0-py3-none-any.whl", hash = "sha256:a56c476b15f84701712cc3b4b4a001ebbe62b1dcbe81c23f96fbe6f261b75324"}, +] [package.dependencies] Flask = ">=0.8" webassets = ">=2.0" -[package.source] -type = "git" -url = "https://github.com/christopherpickering/flask-assets.git" -reference = "HEAD" -resolved_reference = "8433cc30fd4dff046a95dd02e26a3e901595be21" - [[package]] name = "flask-caching" -version = "2.0.2" +version = "2.3.1" description = "Adds caching support to Flask applications." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "Flask-Caching-2.0.2.tar.gz", hash = "sha256:24b60c552d59a9605cc1b6a42c56cdb39a82a28dab4532bbedb9222ae54ecb4e"}, - {file = "Flask_Caching-2.0.2-py3-none-any.whl", hash = "sha256:19571f2570e9b8dd9dd9d2f49d7cbee69c14ebe8cc001100b1eb98c379dd80ad"}, + {file = "Flask_Caching-2.3.1-py3-none-any.whl", hash = "sha256:d3efcf600e5925ea5a2fcb810f13b341ae984f5b52c00e9d9070392f3ca10761"}, + {file = "flask_caching-2.3.1.tar.gz", hash = "sha256:65d7fd1b4eebf810f844de7de6258254b3248296ee429bdcb3f741bcbf7b98c9"}, ] [package.dependencies] -cachelib = ">=0.9.0,<0.10.0" -Flask = "<3" +cachelib = ">=0.9.0" +Flask = "*" [[package]] name = "flask-compress" -version = "1.14" -description = "Compress responses in your Flask app with gzip, deflate or brotli." -category = "main" +version = "1.17" +description = "Compress responses in your Flask app with gzip, deflate, brotli or zstandard." optional = false -python-versions = "*" +python-versions = ">=3.9" files = [ - {file = "Flask-Compress-1.14.tar.gz", hash = "sha256:e46528f37b91857012be38e24e65db1a248662c3dc32ee7808b5986bf1d123ee"}, - {file = "Flask_Compress-1.14-py3-none-any.whl", hash = "sha256:b86c9808f0f38ea2246c9730972cf978f2cdf6a9a1a69102ba81e07891e6b26c"}, + {file = "Flask_Compress-1.17-py3-none-any.whl", hash = "sha256:415131f197c41109f08e8fdfc3a6628d83d81680fb5ecd0b3a97410e02397b20"}, + {file = "flask_compress-1.17.tar.gz", hash = "sha256:1ebb112b129ea7c9e7d6ee6d5cc0d64f226cbc50c4daddf1a58b9bd02253fbd8"}, ] [package.dependencies] brotli = {version = "*", markers = "platform_python_implementation != \"PyPy\""} brotlicffi = {version = "*", markers = "platform_python_implementation == \"PyPy\""} flask = "*" +zstandard = [ + {version = "*", markers = "platform_python_implementation != \"PyPy\""}, + {version = "*", extras = ["cffi"], markers = "platform_python_implementation == \"PyPy\""}, +] [[package]] name = "flask-debugtoolbar" -version = "0.13.1" +version = "0.16.0" description = "A toolbar overlay for debugging Flask applications." -category = "dev" optional = false -python-versions = ">=2.7" +python-versions = ">=3.8" files = [ - {file = "Flask-DebugToolbar-0.13.1.tar.gz", hash = "sha256:0c26aa013a9813b8886857bf0ec24d28ab494114a264baf06c951cadc4dd0dae"}, - {file = "Flask_DebugToolbar-0.13.1-py3-none-any.whl", hash = "sha256:491c737f321830c06a2835784acf1fc8488fd257a0ef318810b3b6bed5f600d5"}, + {file = "flask_debugtoolbar-0.16.0-py3-none-any.whl", hash = "sha256:2857a58ef20b88cf022a88bb7f0c6f6be1fb91a2e8b2d9fcc9079357a692083e"}, + {file = "flask_debugtoolbar-0.16.0.tar.gz", hash = "sha256:3b925d4dcc09205471e5021019dfeb0eb6dabd6c184de16a3496dfb1f342afe1"}, ] [package.dependencies] -Blinker = "*" -Flask = ">=0.8" -itsdangerous = "*" -werkzeug = "*" +flask = ">=2.3.0" [[package]] name = "flask-executor" version = "1.0.0" description = "An easy to use Flask wrapper for concurrent.futures" -category = "main" optional = false python-versions = "*" files = [ @@ -1017,31 +945,29 @@ test = ["flask-sqlalchemy", "pytest"] [[package]] name = "flask-htmlmin" -version = "2.2.1" +version = "3.0.0" description = "Minify flask text/html mime type responses" -category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "Flask-HTMLmin-2.2.1.tar.gz", hash = "sha256:b369693600f0297e037233ab4aea3aaea5f7962ed12b988bded458bd89af217a"}, - {file = "Flask_HTMLmin-2.2.1-py3-none-any.whl", hash = "sha256:dce72b8ee5b777813873704aba1712aad155b7a581de19270d3e9ff333e79cba"}, + {file = "Flask_HTMLmin-3.0.0-py3-none-any.whl", hash = "sha256:30dcee47754b90d9bddb1ff351e170998e1521f190f60267f03a37b0679acd10"}, + {file = "flask_htmlmin-3.0.0.tar.gz", hash = "sha256:d34300a68b6fe0b3b418412aabe77956065ff6be75b3faa3394ea2847749389a"}, ] [package.dependencies] cssmin = "*" Flask = "*" -htmlmin = "*" +htmlmin2 = "*" [[package]] name = "flask-login" -version = "0.6.2" +version = "0.6.3" description = "User authentication and session management for Flask." -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "Flask-Login-0.6.2.tar.gz", hash = "sha256:c0a7baa9fdc448cdd3dd6f0939df72eec5177b2f7abe6cb82fc934d29caac9c3"}, - {file = "Flask_Login-0.6.2-py3-none-any.whl", hash = "sha256:1ef79843f5eddd0f143c2cd994c1b05ac83c0401dc6234c143495af9a939613f"}, + {file = "Flask-Login-0.6.3.tar.gz", hash = "sha256:5e23d14a607ef12806c699590b89d0f0e0d67baeec599d75947bf9c147330333"}, + {file = "Flask_Login-0.6.3-py3-none-any.whl", hash = "sha256:849b25b82a436bf830a054e74214074af59097171562ab10bfa999e6b78aae5d"}, ] [package.dependencies] @@ -1050,14 +976,13 @@ Werkzeug = ">=1.0.1" [[package]] name = "flask-migrate" -version = "4.0.5" +version = "4.1.0" description = "SQLAlchemy database migrations for Flask applications using Alembic." -category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "Flask-Migrate-4.0.5.tar.gz", hash = "sha256:d3f437a8b5f3849d1bb1b60e1b818efc564c66e3fefe90b62e5db08db295e1b1"}, - {file = "Flask_Migrate-4.0.5-py3-none-any.whl", hash = "sha256:613a2df703998e78716cace68cd83972960834424457f5b67f56e74fff950aef"}, + {file = "Flask_Migrate-4.1.0-py3-none-any.whl", hash = "sha256:24d8051af161782e0743af1b04a152d007bad9772b2bca67b7ec1e8ceeb3910d"}, + {file = "flask_migrate-4.1.0.tar.gz", hash = "sha256:1a336b06eb2c3ace005f5f2ded8641d534c18798d64061f6ff11f79e1434126d"}, ] [package.dependencies] @@ -1065,11 +990,14 @@ alembic = ">=1.9.0" Flask = ">=0.9" Flask-SQLAlchemy = ">=1.0" +[package.extras] +dev = ["flake8", "pytest", "tox"] +docs = ["sphinx"] + [[package]] name = "flask-redis" version = "0.4.0" description = "A nice way to use Redis in your Flask app" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -1089,7 +1017,6 @@ tests = ["coverage", "pytest", "pytest-mock"] name = "flask-script" version = "2.0.6" description = "Scripting support for Flask" -category = "main" optional = false python-versions = "*" files = [ @@ -1100,27 +1027,33 @@ files = [ Flask = "*" [[package]] -name = "flask-session2" -version = "1.3.1" -description = "Adds server-side session support to your Flask application" -category = "main" +name = "flask-session" +version = "0.8.0" +description = "Server-side session support for Flask" optional = false -python-versions = ">=3.7.2,<4.0.0" +python-versions = ">=3.8" files = [ - {file = "Flask-Session2-1.3.1.tar.gz", hash = "sha256:171e986d4e314795f448a527095e42df6abfba76c3e4ce5c8e4c61c857c59cb2"}, - {file = "Flask_Session2-1.3.1-py3-none-any.whl", hash = "sha256:6d1615dfc4b247759f31f89bf16aba96fa1294077e700771875abe952f291959"}, + {file = "flask_session-0.8.0-py3-none-any.whl", hash = "sha256:5dae6e9ddab334f8dc4dea4305af37851f4e7dc0f484caf3351184001195e3b7"}, + {file = "flask_session-0.8.0.tar.gz", hash = "sha256:20e045eb01103694e70be4a49f3a80dbb1b57296a22dc6f44bbf3f83ef0742ff"}, ] [package.dependencies] -cachelib = ">=0.9.0,<0.10.0" -Flask = ">=2.2.2,<3.0.0" -pytz = ">=2022.2.1,<2023.0.0" +cachelib = "*" +flask = ">=2.2" +msgspec = ">=0.18.6" + +[package.extras] +all = ["Flask-Session[cachelib,memcached,mongodb,redis,sqlalchemy]"] +cachelib = ["cachelib (>=0.10.2)"] +memcached = ["pymemcache"] +mongodb = ["pymongo (>=4.6.2)"] +redis = ["redis (>=5.0.3)"] +sqlalchemy = ["flask-sqlalchemy (>=3.0.5)"] [[package]] name = "flask-sqlalchemy" version = "3.1.1" description = "Add SQLAlchemy support to your Flask application." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1134,60 +1067,54 @@ sqlalchemy = ">=2.0.16" [[package]] name = "gevent" -version = "23.9.1" +version = "24.11.1" description = "Coroutine-based network library" -category = "main" optional = false -python-versions = ">=3.8" -files = [ - {file = "gevent-23.9.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:a3c5e9b1f766a7a64833334a18539a362fb563f6c4682f9634dea72cbe24f771"}, - {file = "gevent-23.9.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b101086f109168b23fa3586fccd1133494bdb97f86920a24dc0b23984dc30b69"}, - {file = "gevent-23.9.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36a549d632c14684bcbbd3014a6ce2666c5f2a500f34d58d32df6c9ea38b6535"}, - {file = "gevent-23.9.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:272cffdf535978d59c38ed837916dfd2b5d193be1e9e5dcc60a5f4d5025dd98a"}, - {file = "gevent-23.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcb8612787a7f4626aa881ff15ff25439561a429f5b303048f0fca8a1c781c39"}, - {file = "gevent-23.9.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:d57737860bfc332b9b5aa438963986afe90f49645f6e053140cfa0fa1bdae1ae"}, - {file = "gevent-23.9.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:5f3c781c84794926d853d6fb58554dc0dcc800ba25c41d42f6959c344b4db5a6"}, - {file = "gevent-23.9.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:dbb22a9bbd6a13e925815ce70b940d1578dbe5d4013f20d23e8a11eddf8d14a7"}, - {file = "gevent-23.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:707904027d7130ff3e59ea387dddceedb133cc742b00b3ffe696d567147a9c9e"}, - {file = "gevent-23.9.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:45792c45d60f6ce3d19651d7fde0bc13e01b56bb4db60d3f32ab7d9ec467374c"}, - {file = "gevent-23.9.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e24c2af9638d6c989caffc691a039d7c7022a31c0363da367c0d32ceb4a0648"}, - {file = "gevent-23.9.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e1ead6863e596a8cc2a03e26a7a0981f84b6b3e956101135ff6d02df4d9a6b07"}, - {file = "gevent-23.9.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65883ac026731ac112184680d1f0f1e39fa6f4389fd1fc0bf46cc1388e2599f9"}, - {file = "gevent-23.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf7af500da05363e66f122896012acb6e101a552682f2352b618e541c941a011"}, - {file = "gevent-23.9.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:c3e5d2fa532e4d3450595244de8ccf51f5721a05088813c1abd93ad274fe15e7"}, - {file = "gevent-23.9.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c84d34256c243b0a53d4335ef0bc76c735873986d478c53073861a92566a8d71"}, - {file = "gevent-23.9.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ada07076b380918829250201df1d016bdafb3acf352f35e5693b59dceee8dd2e"}, - {file = "gevent-23.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:921dda1c0b84e3d3b1778efa362d61ed29e2b215b90f81d498eb4d8eafcd0b7a"}, - {file = "gevent-23.9.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:ed7a048d3e526a5c1d55c44cb3bc06cfdc1947d06d45006cc4cf60dedc628904"}, - {file = "gevent-23.9.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c1abc6f25f475adc33e5fc2dbcc26a732608ac5375d0d306228738a9ae14d3b"}, - {file = "gevent-23.9.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4368f341a5f51611411ec3fc62426f52ac3d6d42eaee9ed0f9eebe715c80184e"}, - {file = "gevent-23.9.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:52b4abf28e837f1865a9bdeef58ff6afd07d1d888b70b6804557e7908032e599"}, - {file = "gevent-23.9.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:52e9f12cd1cda96603ce6b113d934f1aafb873e2c13182cf8e86d2c5c41982ea"}, - {file = "gevent-23.9.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:de350fde10efa87ea60d742901e1053eb2127ebd8b59a7d3b90597eb4e586599"}, - {file = "gevent-23.9.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fde6402c5432b835fbb7698f1c7f2809c8d6b2bd9d047ac1f5a7c1d5aa569303"}, - {file = "gevent-23.9.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:dd6c32ab977ecf7c7b8c2611ed95fa4aaebd69b74bf08f4b4960ad516861517d"}, - {file = "gevent-23.9.1-cp312-cp312-win_amd64.whl", hash = "sha256:455e5ee8103f722b503fa45dedb04f3ffdec978c1524647f8ba72b4f08490af1"}, - {file = "gevent-23.9.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:7ccf0fd378257cb77d91c116e15c99e533374a8153632c48a3ecae7f7f4f09fe"}, - {file = "gevent-23.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d163d59f1be5a4c4efcdd13c2177baaf24aadf721fdf2e1af9ee54a998d160f5"}, - {file = "gevent-23.9.1-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:7532c17bc6c1cbac265e751b95000961715adef35a25d2b0b1813aa7263fb397"}, - {file = "gevent-23.9.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:78eebaf5e73ff91d34df48f4e35581ab4c84e22dd5338ef32714264063c57507"}, - {file = "gevent-23.9.1-cp38-cp38-win32.whl", hash = "sha256:f632487c87866094546a74eefbca2c74c1d03638b715b6feb12e80120960185a"}, - {file = "gevent-23.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:62d121344f7465e3739989ad6b91f53a6ca9110518231553fe5846dbe1b4518f"}, - {file = "gevent-23.9.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:bf456bd6b992eb0e1e869e2fd0caf817f0253e55ca7977fd0e72d0336a8c1c6a"}, - {file = "gevent-23.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:43daf68496c03a35287b8b617f9f91e0e7c0d042aebcc060cadc3f049aadd653"}, - {file = "gevent-23.9.1-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:7c28e38dcde327c217fdafb9d5d17d3e772f636f35df15ffae2d933a5587addd"}, - {file = "gevent-23.9.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:fae8d5b5b8fa2a8f63b39f5447168b02db10c888a3e387ed7af2bd1b8612e543"}, - {file = "gevent-23.9.1-cp39-cp39-win32.whl", hash = "sha256:2c7b5c9912378e5f5ccf180d1fdb1e83f42b71823483066eddbe10ef1a2fcaa2"}, - {file = "gevent-23.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:a2898b7048771917d85a1d548fd378e8a7b2ca963db8e17c6d90c76b495e0e2b"}, - {file = "gevent-23.9.1.tar.gz", hash = "sha256:72c002235390d46f94938a96920d8856d4ffd9ddf62a303a0d7c118894097e34"}, -] - -[package.dependencies] -cffi = {version = ">=1.12.2", markers = "platform_python_implementation == \"CPython\" and sys_platform == \"win32\""} -greenlet = [ - {version = ">=2.0.0", markers = "platform_python_implementation == \"CPython\" and python_version < \"3.11\""}, - {version = ">=3.0rc3", markers = "platform_python_implementation == \"CPython\" and python_version >= \"3.11\""}, -] +python-versions = ">=3.9" +files = [ + {file = "gevent-24.11.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:92fe5dfee4e671c74ffaa431fd7ffd0ebb4b339363d24d0d944de532409b935e"}, + {file = "gevent-24.11.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7bfcfe08d038e1fa6de458891bca65c1ada6d145474274285822896a858c870"}, + {file = "gevent-24.11.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7398c629d43b1b6fd785db8ebd46c0a353880a6fab03d1cf9b6788e7240ee32e"}, + {file = "gevent-24.11.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d7886b63ebfb865178ab28784accd32f287d5349b3ed71094c86e4d3ca738af5"}, + {file = "gevent-24.11.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9ca80711e6553880974898d99357fb649e062f9058418a92120ca06c18c3c59"}, + {file = "gevent-24.11.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e24181d172f50097ac8fc272c8c5b030149b630df02d1c639ee9f878a470ba2b"}, + {file = "gevent-24.11.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1d4fadc319b13ef0a3c44d2792f7918cf1bca27cacd4d41431c22e6b46668026"}, + {file = "gevent-24.11.1-cp310-cp310-win_amd64.whl", hash = "sha256:3d882faa24f347f761f934786dde6c73aa6c9187ee710189f12dcc3a63ed4a50"}, + {file = "gevent-24.11.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:351d1c0e4ef2b618ace74c91b9b28b3eaa0dd45141878a964e03c7873af09f62"}, + {file = "gevent-24.11.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5efe72e99b7243e222ba0c2c2ce9618d7d36644c166d63373af239da1036bab"}, + {file = "gevent-24.11.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d3b249e4e1f40c598ab8393fc01ae6a3b4d51fc1adae56d9ba5b315f6b2d758"}, + {file = "gevent-24.11.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81d918e952954675f93fb39001da02113ec4d5f4921bf5a0cc29719af6824e5d"}, + {file = "gevent-24.11.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9c935b83d40c748b6421625465b7308d87c7b3717275acd587eef2bd1c39546"}, + {file = "gevent-24.11.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff96c5739834c9a594db0e12bf59cb3fa0e5102fc7b893972118a3166733d61c"}, + {file = "gevent-24.11.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d6c0a065e31ef04658f799215dddae8752d636de2bed61365c358f9c91e7af61"}, + {file = "gevent-24.11.1-cp311-cp311-win_amd64.whl", hash = "sha256:97e2f3999a5c0656f42065d02939d64fffaf55861f7d62b0107a08f52c984897"}, + {file = "gevent-24.11.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:a3d75fa387b69c751a3d7c5c3ce7092a171555126e136c1d21ecd8b50c7a6e46"}, + {file = "gevent-24.11.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:beede1d1cff0c6fafae3ab58a0c470d7526196ef4cd6cc18e7769f207f2ea4eb"}, + {file = "gevent-24.11.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:85329d556aaedced90a993226d7d1186a539c843100d393f2349b28c55131c85"}, + {file = "gevent-24.11.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:816b3883fa6842c1cf9d2786722014a0fd31b6312cca1f749890b9803000bad6"}, + {file = "gevent-24.11.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b24d800328c39456534e3bc3e1684a28747729082684634789c2f5a8febe7671"}, + {file = "gevent-24.11.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a5f1701ce0f7832f333dd2faf624484cbac99e60656bfbb72504decd42970f0f"}, + {file = "gevent-24.11.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:d740206e69dfdfdcd34510c20adcb9777ce2cc18973b3441ab9767cd8948ca8a"}, + {file = "gevent-24.11.1-cp312-cp312-win_amd64.whl", hash = "sha256:68bee86b6e1c041a187347ef84cf03a792f0b6c7238378bf6ba4118af11feaae"}, + {file = "gevent-24.11.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:d618e118fdb7af1d6c1a96597a5cd6ac84a9f3732b5be8515c6a66e098d498b6"}, + {file = "gevent-24.11.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2142704c2adce9cd92f6600f371afb2860a446bfd0be5bd86cca5b3e12130766"}, + {file = "gevent-24.11.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:92e0d7759de2450a501effd99374256b26359e801b2d8bf3eedd3751973e87f5"}, + {file = "gevent-24.11.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ca845138965c8c56d1550499d6b923eb1a2331acfa9e13b817ad8305dde83d11"}, + {file = "gevent-24.11.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:356b73d52a227d3313f8f828025b665deada57a43d02b1cf54e5d39028dbcf8d"}, + {file = "gevent-24.11.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:58851f23c4bdb70390f10fc020c973ffcf409eb1664086792c8b1e20f25eef43"}, + {file = "gevent-24.11.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:1ea50009ecb7f1327347c37e9eb6561bdbc7de290769ee1404107b9a9cba7cf1"}, + {file = "gevent-24.11.1-cp313-cp313-win_amd64.whl", hash = "sha256:ec68e270543ecd532c4c1d70fca020f90aa5486ad49c4f3b8b2e64a66f5c9274"}, + {file = "gevent-24.11.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9347690f4e53de2c4af74e62d6fabc940b6d4a6cad555b5a379f61e7d3f2a8e"}, + {file = "gevent-24.11.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8619d5c888cb7aebf9aec6703e410620ef5ad48cdc2d813dd606f8aa7ace675f"}, + {file = "gevent-24.11.1-cp39-cp39-win32.whl", hash = "sha256:c6b775381f805ff5faf250e3a07c0819529571d19bb2a9d474bee8c3f90d66af"}, + {file = "gevent-24.11.1-cp39-cp39-win_amd64.whl", hash = "sha256:1c3443b0ed23dcb7c36a748d42587168672953d368f2956b17fad36d43b58836"}, + {file = "gevent-24.11.1-pp310-pypy310_pp73-macosx_11_0_universal2.whl", hash = "sha256:f43f47e702d0c8e1b8b997c00f1601486f9f976f84ab704f8f11536e3fa144c9"}, + {file = "gevent-24.11.1.tar.gz", hash = "sha256:8bd1419114e9e4a3ed33a5bad766afff9a3cf765cb440a582a1b3a9bc80c1aca"}, +] + +[package.dependencies] +cffi = {version = ">=1.17.1", markers = "platform_python_implementation == \"CPython\" and sys_platform == \"win32\""} +greenlet = {version = ">=3.1.1", markers = "platform_python_implementation == \"CPython\""} "zope.event" = "*" "zope.interface" = "*" @@ -1195,147 +1122,116 @@ greenlet = [ dnspython = ["dnspython (>=1.16.0,<2.0)", "idna"] docs = ["furo", "repoze.sphinx.autointerface", "sphinx", "sphinxcontrib-programoutput", "zope.schema"] monitor = ["psutil (>=5.7.0)"] -recommended = ["cffi (>=1.12.2)", "dnspython (>=1.16.0,<2.0)", "idna", "psutil (>=5.7.0)"] -test = ["cffi (>=1.12.2)", "coverage (>=5.0)", "dnspython (>=1.16.0,<2.0)", "idna", "objgraph", "psutil (>=5.7.0)", "requests", "setuptools"] +recommended = ["cffi (>=1.17.1)", "dnspython (>=1.16.0,<2.0)", "idna", "psutil (>=5.7.0)"] +test = ["cffi (>=1.17.1)", "coverage (>=5.0)", "dnspython (>=1.16.0,<2.0)", "idna", "objgraph", "psutil (>=5.7.0)", "requests"] [[package]] name = "greenlet" -version = "3.0.0rc3" +version = "3.2.4" description = "Lightweight in-process concurrent programming" -category = "main" optional = false -python-versions = ">=3.7" -files = [ - {file = "greenlet-3.0.0rc3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2a2affddff9b2f846f40799673e41b29f0500582415c860fca8f146858e9de1a"}, - {file = "greenlet-3.0.0rc3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd00046dfd00767fce18f9933658d126652a500caf7af9dbfbd43818e4b484c2"}, - {file = "greenlet-3.0.0rc3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e787b00002cef3b98c7cf700fb85c2c01b0d202b1c6731706e5baa4b3325aa1e"}, - {file = "greenlet-3.0.0rc3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ffc7538bc66766a8b551888903d415773481c4bd13560a4fb24887222e3cc9"}, - {file = "greenlet-3.0.0rc3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dde5deb355b34bbf44b15789e27c56862f51f417207be49eedc58fce34681fe6"}, - {file = "greenlet-3.0.0rc3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:1fb703a102a02361a0cc6a3d9a7958e1584fdeb536bd37ca9aca529d3356bedd"}, - {file = "greenlet-3.0.0rc3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f8661d14d3e07f2ceeb850e4cbcc7114bdf90a8dc82d63d37b08a50bb6955a77"}, - {file = "greenlet-3.0.0rc3-cp310-cp310-win_amd64.whl", hash = "sha256:997456b74efee91ceeb39d63818909da5dbb712a07f7742f4378986ac3473463"}, - {file = "greenlet-3.0.0rc3-cp310-universal2-macosx_11_0_x86_64.whl", hash = "sha256:d3cd3957af8cec1fcfd87d92ca71b7d434d798036e14ae878f9ab1e07d99da0d"}, - {file = "greenlet-3.0.0rc3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:895b689fc52a5bc402f8d624705110df5c265b1410ffe8e0769a66db9d2e7851"}, - {file = "greenlet-3.0.0rc3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a84a88422b5a0360fae57ad6b3b20fc17c9462880929810b0a26ee43aa05982e"}, - {file = "greenlet-3.0.0rc3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d79cf299ba1996d8a4f133b317e709a0a3ce87181308280e40664e12cb512c54"}, - {file = "greenlet-3.0.0rc3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef9789aea735004eba559c7919a73a3b475d0c28e2c1e9de464c6bc761bf69f4"}, - {file = "greenlet-3.0.0rc3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:66790e1537382e53bce64de3a695d1b12a04b00104df45f7ef472a10561936c2"}, - {file = "greenlet-3.0.0rc3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:68349987bf2ce274953f9f9b28458869bd8770a0c5461e1ef91d8107b1bae361"}, - {file = "greenlet-3.0.0rc3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:30ffaa6c020a615c8f4be3abfc6029982fda026a3bf9a6dc7205afb033251506"}, - {file = "greenlet-3.0.0rc3-cp311-cp311-win_amd64.whl", hash = "sha256:864619b058f573058cd77f6944cf63d7f42157fe30be494798721bd8ac256d7b"}, - {file = "greenlet-3.0.0rc3-cp311-universal2-macosx_10_9_universal2.whl", hash = "sha256:7c887ecb55374d585d71ff8f9d07c137637694e88fa2b5d5b1450a05ece62ae9"}, - {file = "greenlet-3.0.0rc3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:686821157368c1c4ef53aa68e6801280010da92ab0e4265dad37003341fca6a1"}, - {file = "greenlet-3.0.0rc3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:242d56d2d5f6859f0f086ce62555a2c692c8053c89721d41fead5e1e8dffdb36"}, - {file = "greenlet-3.0.0rc3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81d653ae6c64b85ce4c7bccbea7b630de8799da751b73e55b4c68875b6eb19d6"}, - {file = "greenlet-3.0.0rc3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:beeb5cfbd8f3792c37db4e3c5665aa750d78bbdabe758161a34e7dfe27075e69"}, - {file = "greenlet-3.0.0rc3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:30daee988fc83078b016fa95a7a1f78a7c86534a44238748b9748675814eb1dc"}, - {file = "greenlet-3.0.0rc3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:977898b8c24159467c66ed1a8f62aacd33f3d85f852cf413d0d2e2a87a6b3091"}, - {file = "greenlet-3.0.0rc3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:097a2f75c79c3fa76fea2e5d48a637233722fe72a5ebb1213c55f0a0898f481c"}, - {file = "greenlet-3.0.0rc3-cp312-cp312-win_amd64.whl", hash = "sha256:5770d43b08dfa10f4460c1bd51f8c80e6f2c47611054e9fb80d4d7976d07e560"}, - {file = "greenlet-3.0.0rc3-cp312-universal2-macosx_10_9_universal2.whl", hash = "sha256:f33e7ff85775cb0ec6abb0950ffc631960bae5a203da38166fc3dfde826e0d0a"}, - {file = "greenlet-3.0.0rc3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:07f6d1ce31a1db5102a42b4afa609af330edfd8a81d10faba3e47ae33a07cbdf"}, - {file = "greenlet-3.0.0rc3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86e651fa59263f7ff1d4657b086c48cfe7e26db2a36e2d74069f3b5aeab478e6"}, - {file = "greenlet-3.0.0rc3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ef7c6e49a9a020d56349c6a769352709bfbe35d3ee7f98bd5efcac6cedbdc162"}, - {file = "greenlet-3.0.0rc3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5585bf8d1d2d3712010ee74988c2ed85c54b127b97f2778fbdcc5b3ea8e801a2"}, - {file = "greenlet-3.0.0rc3-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c706041cd92e1b9d2b602eaa31e94aad14453bdbf186ce77530f25167c173a0e"}, - {file = "greenlet-3.0.0rc3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:37213e72058d2e6231d18417adc63c698c040fbb47dc59a3fd633973214ab1ab"}, - {file = "greenlet-3.0.0rc3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:95bc6ec8dd73f8f36e9dfc61a7fa5a2819d1cd52d0bfdb70a43434d6b2aeb239"}, - {file = "greenlet-3.0.0rc3-cp37-cp37m-win32.whl", hash = "sha256:e83c4c7a0814dcfd7e2fe4b74a371f3ce489b62ff02e81d0c5cacc8ba4750395"}, - {file = "greenlet-3.0.0rc3-cp37-cp37m-win_amd64.whl", hash = "sha256:4c35608918f331256be199d3712552fa8a1d12f87ac171a86a31488c60d298f5"}, - {file = "greenlet-3.0.0rc3-cp37-universal2-macosx_11_0_x86_64.whl", hash = "sha256:215bdb33e85fd89fe55f9984dc6f0a96b5774bace663e1a6d051e65d66170ef8"}, - {file = "greenlet-3.0.0rc3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69db00f775ed9d233f53ef67c66ea40a7add0c0929eb528f633982e27595dd37"}, - {file = "greenlet-3.0.0rc3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5fcc7162944c2fedfb2253ca2171267e016a3b065c73369d0d4a27f601e7f162"}, - {file = "greenlet-3.0.0rc3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3c0082d7b83312c59127811367089f812f8f1386fad7e8cf321fd732b4a6ace6"}, - {file = "greenlet-3.0.0rc3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66f1131c17dba115ea7cb3b257b6751b3c4cfd324f2121447e2483f57abbbf3c"}, - {file = "greenlet-3.0.0rc3-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f0c5508582339090b99e2863a157fc2708ab9c8b5cd21619bdcb04edcdc6c28d"}, - {file = "greenlet-3.0.0rc3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f1c9ad8d6500f7b142a94054281d9628bc8652a14b0923d02e0dfd87392fbc74"}, - {file = "greenlet-3.0.0rc3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bd586284bbf18ca3068e1fcc67ef54538e1bb74cb605ebdac9e62048237839f5"}, - {file = "greenlet-3.0.0rc3-cp38-cp38-win32.whl", hash = "sha256:1c16f1bbaf9c75dfac3e52bb778d2fd6099fd5aa59fafa678eca5853eedd99ec"}, - {file = "greenlet-3.0.0rc3-cp38-cp38-win_amd64.whl", hash = "sha256:e388ceb55b8f3f388afea4d4a17a64b619040f0e8e9fa3e17e7c34f4d0fbe103"}, - {file = "greenlet-3.0.0rc3-cp38-universal2-macosx_11_0_x86_64.whl", hash = "sha256:68bd35ad9f99df0ef18836fd0fb34278dca6b3350bdcf1e8809822fc4f57a82e"}, - {file = "greenlet-3.0.0rc3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:256b748fc1e6c97012f217e0a403116cb0dd369bf1cff51c07a9c52899d4a8a8"}, - {file = "greenlet-3.0.0rc3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4936e6e051932848c4b237a874da8dbb47bfbb5ae5104497fb78c4f4cf184989"}, - {file = "greenlet-3.0.0rc3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a31b3a4bd10c540a7eb7d4b43d16779813ca4c79b615ed6d4ebf0e5a782d9fa0"}, - {file = "greenlet-3.0.0rc3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6f8253fdb00e74b928ab5d04f88ddbc8beb0cc26aa978bb4a12c1513166d481"}, - {file = "greenlet-3.0.0rc3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2a7831d04a0f8a14645c010e3fb3fa36b8d2df304dd837948427ccfec2524ddf"}, - {file = "greenlet-3.0.0rc3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ae84d2f2658990f29df4ea753061b25c337bd70f805128af328098e5b8afc454"}, - {file = "greenlet-3.0.0rc3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:cd51cc2528a2985f3bc0564c1b1ce5b2e6fa4ee9924503010428256fa95b0e3c"}, - {file = "greenlet-3.0.0rc3-cp39-cp39-win32.whl", hash = "sha256:e8698f341e78dd0f149511929e92d1507cc26647f047db13987169d244db10fb"}, - {file = "greenlet-3.0.0rc3-cp39-cp39-win_amd64.whl", hash = "sha256:f059457db4e2ae4a4fdae455453c5e5765aa08efcb804e2a106c69c31bd438ba"}, - {file = "greenlet-3.0.0rc3-cp39-universal2-macosx_11_0_x86_64.whl", hash = "sha256:c80cac2776df3dd08f27b7338f467a62ee6cb29668a8f4f408b8da1f981aae9e"}, - {file = "greenlet-3.0.0rc3.tar.gz", hash = "sha256:0df5c2ad154f457fd372e39723493b3df519330a4c1bff3ca901be66130f379b"}, +python-versions = ">=3.9" +files = [ + {file = "greenlet-3.2.4-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:8c68325b0d0acf8d91dde4e6f930967dd52a5302cd4062932a6b2e7c2969f47c"}, + {file = "greenlet-3.2.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:94385f101946790ae13da500603491f04a76b6e4c059dab271b3ce2e283b2590"}, + {file = "greenlet-3.2.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f10fd42b5ee276335863712fa3da6608e93f70629c631bf77145021600abc23c"}, + {file = "greenlet-3.2.4-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:c8c9e331e58180d0d83c5b7999255721b725913ff6bc6cf39fa2a45841a4fd4b"}, + {file = "greenlet-3.2.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:58b97143c9cc7b86fc458f215bd0932f1757ce649e05b640fea2e79b54cedb31"}, + {file = "greenlet-3.2.4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c2ca18a03a8cfb5b25bc1cbe20f3d9a4c80d8c3b13ba3df49ac3961af0b1018d"}, + {file = "greenlet-3.2.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9fe0a28a7b952a21e2c062cd5756d34354117796c6d9215a87f55e38d15402c5"}, + {file = "greenlet-3.2.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8854167e06950ca75b898b104b63cc646573aa5fef1353d4508ecdd1ee76254f"}, + {file = "greenlet-3.2.4-cp310-cp310-win_amd64.whl", hash = "sha256:73f49b5368b5359d04e18d15828eecc1806033db5233397748f4ca813ff1056c"}, + {file = "greenlet-3.2.4-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:96378df1de302bc38e99c3a9aa311967b7dc80ced1dcc6f171e99842987882a2"}, + {file = "greenlet-3.2.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1ee8fae0519a337f2329cb78bd7a8e128ec0f881073d43f023c7b8d4831d5246"}, + {file = "greenlet-3.2.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:94abf90142c2a18151632371140b3dba4dee031633fe614cb592dbb6c9e17bc3"}, + {file = "greenlet-3.2.4-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:4d1378601b85e2e5171b99be8d2dc85f594c79967599328f95c1dc1a40f1c633"}, + {file = "greenlet-3.2.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0db5594dce18db94f7d1650d7489909b57afde4c580806b8d9203b6e79cdc079"}, + {file = "greenlet-3.2.4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2523e5246274f54fdadbce8494458a2ebdcdbc7b802318466ac5606d3cded1f8"}, + {file = "greenlet-3.2.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1987de92fec508535687fb807a5cea1560f6196285a4cde35c100b8cd632cc52"}, + {file = "greenlet-3.2.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:55e9c5affaa6775e2c6b67659f3a71684de4c549b3dd9afca3bc773533d284fa"}, + {file = "greenlet-3.2.4-cp311-cp311-win_amd64.whl", hash = "sha256:9c40adce87eaa9ddb593ccb0fa6a07caf34015a29bf8d344811665b573138db9"}, + {file = "greenlet-3.2.4-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3b67ca49f54cede0186854a008109d6ee71f66bd57bb36abd6d0a0267b540cdd"}, + {file = "greenlet-3.2.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ddf9164e7a5b08e9d22511526865780a576f19ddd00d62f8a665949327fde8bb"}, + {file = "greenlet-3.2.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f28588772bb5fb869a8eb331374ec06f24a83a9c25bfa1f38b6993afe9c1e968"}, + {file = "greenlet-3.2.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:5c9320971821a7cb77cfab8d956fa8e39cd07ca44b6070db358ceb7f8797c8c9"}, + {file = "greenlet-3.2.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c60a6d84229b271d44b70fb6e5fa23781abb5d742af7b808ae3f6efd7c9c60f6"}, + {file = "greenlet-3.2.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b3812d8d0c9579967815af437d96623f45c0f2ae5f04e366de62a12d83a8fb0"}, + {file = "greenlet-3.2.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:abbf57b5a870d30c4675928c37278493044d7c14378350b3aa5d484fa65575f0"}, + {file = "greenlet-3.2.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:20fb936b4652b6e307b8f347665e2c615540d4b42b3b4c8a321d8286da7e520f"}, + {file = "greenlet-3.2.4-cp312-cp312-win_amd64.whl", hash = "sha256:a7d4e128405eea3814a12cc2605e0e6aedb4035bf32697f72deca74de4105e02"}, + {file = "greenlet-3.2.4-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:1a921e542453fe531144e91e1feedf12e07351b1cf6c9e8a3325ea600a715a31"}, + {file = "greenlet-3.2.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cd3c8e693bff0fff6ba55f140bf390fa92c994083f838fece0f63be121334945"}, + {file = "greenlet-3.2.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:710638eb93b1fa52823aa91bf75326f9ecdfd5e0466f00789246a5280f4ba0fc"}, + {file = "greenlet-3.2.4-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:c5111ccdc9c88f423426df3fd1811bfc40ed66264d35aa373420a34377efc98a"}, + {file = "greenlet-3.2.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d76383238584e9711e20ebe14db6c88ddcedc1829a9ad31a584389463b5aa504"}, + {file = "greenlet-3.2.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:23768528f2911bcd7e475210822ffb5254ed10d71f4028387e5a99b4c6699671"}, + {file = "greenlet-3.2.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:00fadb3fedccc447f517ee0d3fd8fe49eae949e1cd0f6a611818f4f6fb7dc83b"}, + {file = "greenlet-3.2.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:d25c5091190f2dc0eaa3f950252122edbbadbb682aa7b1ef2f8af0f8c0afefae"}, + {file = "greenlet-3.2.4-cp313-cp313-win_amd64.whl", hash = "sha256:554b03b6e73aaabec3745364d6239e9e012d64c68ccd0b8430c64ccc14939a8b"}, + {file = "greenlet-3.2.4-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:49a30d5fda2507ae77be16479bdb62a660fa51b1eb4928b524975b3bde77b3c0"}, + {file = "greenlet-3.2.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:299fd615cd8fc86267b47597123e3f43ad79c9d8a22bebdce535e53550763e2f"}, + {file = "greenlet-3.2.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:c17b6b34111ea72fc5a4e4beec9711d2226285f0386ea83477cbb97c30a3f3a5"}, + {file = "greenlet-3.2.4-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b4a1870c51720687af7fa3e7cda6d08d801dae660f75a76f3845b642b4da6ee1"}, + {file = "greenlet-3.2.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:061dc4cf2c34852b052a8620d40f36324554bc192be474b9e9770e8c042fd735"}, + {file = "greenlet-3.2.4-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:44358b9bf66c8576a9f57a590d5f5d6e72fa4228b763d0e43fee6d3b06d3a337"}, + {file = "greenlet-3.2.4-cp314-cp314-win_amd64.whl", hash = "sha256:e37ab26028f12dbb0ff65f29a8d3d44a765c61e729647bf2ddfbbed621726f01"}, + {file = "greenlet-3.2.4-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:b6a7c19cf0d2742d0809a4c05975db036fdff50cd294a93632d6a310bf9ac02c"}, + {file = "greenlet-3.2.4-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:27890167f55d2387576d1f41d9487ef171849ea0359ce1510ca6e06c8bece11d"}, + {file = "greenlet-3.2.4-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:18d9260df2b5fbf41ae5139e1be4e796d99655f023a636cd0e11e6406cca7d58"}, + {file = "greenlet-3.2.4-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:671df96c1f23c4a0d4077a325483c1503c96a1b7d9db26592ae770daa41233d4"}, + {file = "greenlet-3.2.4-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:16458c245a38991aa19676900d48bd1a6f2ce3e16595051a4db9d012154e8433"}, + {file = "greenlet-3.2.4-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c9913f1a30e4526f432991f89ae263459b1c64d1608c0d22a5c79c287b3c70df"}, + {file = "greenlet-3.2.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b90654e092f928f110e0007f572007c9727b5265f7632c2fa7415b4689351594"}, + {file = "greenlet-3.2.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:81701fd84f26330f0d5f4944d4e92e61afe6319dcd9775e39396e39d7c3e5f98"}, + {file = "greenlet-3.2.4-cp39-cp39-win32.whl", hash = "sha256:65458b409c1ed459ea899e939f0e1cdb14f58dbc803f2f93c5eab5694d32671b"}, + {file = "greenlet-3.2.4-cp39-cp39-win_amd64.whl", hash = "sha256:d2e685ade4dafd447ede19c31277a224a239a0a1a4eca4e6390efedf20260cfb"}, + {file = "greenlet-3.2.4.tar.gz", hash = "sha256:0dca0d95ff849f9a364385f36ab49f50065d76964944638be9691e1832e9f86d"}, ] [package.extras] -docs = ["Sphinx"] -test = ["objgraph", "psutil"] +docs = ["Sphinx", "furo"] +test = ["objgraph", "psutil", "setuptools"] [[package]] name = "gunicorn" -version = "21.2.0" +version = "23.0.0" description = "WSGI HTTP Server for UNIX" -category = "main" optional = false -python-versions = ">=3.5" +python-versions = ">=3.7" files = [ - {file = "gunicorn-21.2.0-py3-none-any.whl", hash = "sha256:3213aa5e8c24949e792bcacfc176fef362e7aac80b76c56f6b5122bf350722f0"}, - {file = "gunicorn-21.2.0.tar.gz", hash = "sha256:88ec8bff1d634f98e61b9f65bc4bf3cd918a90806c6f5c48bc5603849ec81033"}, + {file = "gunicorn-23.0.0-py3-none-any.whl", hash = "sha256:ec400d38950de4dfd418cff8328b2c8faed0edb0d517d3394e457c317908ca4d"}, + {file = "gunicorn-23.0.0.tar.gz", hash = "sha256:f014447a0101dc57e294f6c18ca6b40227a4c90e9bdb586042628030cba004ec"}, ] [package.dependencies] packaging = "*" [package.extras] -eventlet = ["eventlet (>=0.24.1)"] +eventlet = ["eventlet (>=0.24.1,!=0.36.0)"] gevent = ["gevent (>=1.4.0)"] setproctitle = ["setproctitle"] +testing = ["coverage", "eventlet", "gevent", "pytest", "pytest-cov"] tornado = ["tornado (>=0.2)"] [[package]] -name = "html-tag-names" -version = "0.1.2" -description = "List of known HTML tag names" -category = "dev" -optional = false -python-versions = ">=3.7,<4.0" -files = [ - {file = "html-tag-names-0.1.2.tar.gz", hash = "sha256:04924aca48770f36b5a41c27e4d917062507be05118acb0ba869c97389084297"}, - {file = "html_tag_names-0.1.2-py3-none-any.whl", hash = "sha256:eeb69ef21078486b615241f0393a72b41352c5219ee648e7c61f5632d26f0420"}, -] - -[[package]] -name = "html-void-elements" -version = "0.1.0" -description = "List of HTML void tag names." -category = "dev" -optional = false -python-versions = ">=3.7,<4.0" -files = [ - {file = "html-void-elements-0.1.0.tar.gz", hash = "sha256:931b88f84cd606fee0b582c28fcd00e41d7149421fb673e1e1abd2f0c4f231f0"}, - {file = "html_void_elements-0.1.0-py3-none-any.whl", hash = "sha256:784cf39db03cdeb017320d9301009f8f3480f9d7b254d0974272e80e0cb5e0d2"}, -] - -[[package]] -name = "htmlmin" -version = "0.1.12" +name = "htmlmin2" +version = "0.1.13" description = "An HTML Minifier" -category = "main" optional = false python-versions = "*" files = [ - {file = "htmlmin-0.1.12.tar.gz", hash = "sha256:50c1ef4630374a5d723900096a961cff426dff46b48f34d194a81bbe14eca178"}, + {file = "htmlmin2-0.1.13-py3-none-any.whl", hash = "sha256:75609f2a42e64f7ce57dbff28a39890363bde9e7e5885db633317efbdf8c79a2"}, ] [[package]] name = "identify" -version = "2.5.29" +version = "2.6.13" description = "File identification library for Python" -category = "dev" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "identify-2.5.29-py2.py3-none-any.whl", hash = "sha256:24437fbf6f4d3fe6efd0eb9d67e24dd9106db99af5ceb27996a5f7895f24bf1b"}, - {file = "identify-2.5.29.tar.gz", hash = "sha256:d43d52b86b15918c137e3a74fff5224f60385cd0e9c38e99d07c257f02f151a5"}, + {file = "identify-2.6.13-py2.py3-none-any.whl", hash = "sha256:60381139b3ae39447482ecc406944190f690d4a2997f2584062089848361b33b"}, + {file = "identify-2.6.13.tar.gz", hash = "sha256:da8d6c828e773620e13bfa86ea601c5a5310ba4bcd65edf378198b56a1f9fb32"}, ] [package.extras] @@ -1343,72 +1239,33 @@ license = ["ukkonen"] [[package]] name = "idna" -version = "3.4" +version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" -optional = false -python-versions = ">=3.5" -files = [ - {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, - {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, -] - -[[package]] -name = "importlib-metadata" -version = "6.8.0" -description = "Read metadata from Python packages" -category = "main" optional = false -python-versions = ">=3.8" -files = [ - {file = "importlib_metadata-6.8.0-py3-none-any.whl", hash = "sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb"}, - {file = "importlib_metadata-6.8.0.tar.gz", hash = "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743"}, -] - -[package.dependencies] -zipp = ">=0.5" - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -perf = ["ipython"] -testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] - -[[package]] -name = "importlib-resources" -version = "6.0.1" -description = "Read resources from Python packages" -category = "main" -optional = false -python-versions = ">=3.8" +python-versions = ">=3.6" files = [ - {file = "importlib_resources-6.0.1-py3-none-any.whl", hash = "sha256:134832a506243891221b88b4ae1213327eea96ceb4e407a00d790bb0626f45cf"}, - {file = "importlib_resources-6.0.1.tar.gz", hash = "sha256:4359457e42708462b9626a04657c6208ad799ceb41e5c58c57ffa0e6a098a5d4"}, + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, ] -[package.dependencies] -zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} - [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff"] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] [[package]] name = "iniconfig" -version = "2.0.0" +version = "2.1.0" description = "brain-dead simple config-ini parsing" -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, - {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, + {file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760"}, + {file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7"}, ] [[package]] name = "is-safe-url" version = "1.0" description = "Django's is_safe_url() bundled as a standalone package." -category = "main" optional = false python-versions = "*" files = [ @@ -1418,54 +1275,45 @@ files = [ [[package]] name = "isodate" -version = "0.6.1" +version = "0.7.2" description = "An ISO 8601 date/time/duration parser and formatter" -category = "main" optional = false -python-versions = "*" +python-versions = ">=3.7" files = [ - {file = "isodate-0.6.1-py2.py3-none-any.whl", hash = "sha256:0751eece944162659049d35f4f549ed815792b38793f07cf73381c1c87cbed96"}, - {file = "isodate-0.6.1.tar.gz", hash = "sha256:48c5881de7e8b0a0d648cb024c8062dc84e7b840ed81e864c7614fd3c127bde9"}, + {file = "isodate-0.7.2-py3-none-any.whl", hash = "sha256:28009937d8031054830160fce6d409ed342816b543597cece116d966c6d99e15"}, + {file = "isodate-0.7.2.tar.gz", hash = "sha256:4cd1aa0f43ca76f4a6c6c0292a85f40b35ec2e43e315b59f06e6d32171a953e6"}, ] -[package.dependencies] -six = "*" - [[package]] name = "isort" -version = "5.12.0" +version = "6.0.1" description = "A Python utility / library to sort Python imports." -category = "dev" optional = false -python-versions = ">=3.8.0" +python-versions = ">=3.9.0" files = [ - {file = "isort-5.12.0-py3-none-any.whl", hash = "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6"}, - {file = "isort-5.12.0.tar.gz", hash = "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504"}, + {file = "isort-6.0.1-py3-none-any.whl", hash = "sha256:2dc5d7f65c9678d94c88dfc29161a320eec67328bc97aad576874cb4be1e9615"}, + {file = "isort-6.0.1.tar.gz", hash = "sha256:1cb5df28dfbc742e490c5e41bad6da41b805b0a8be7bc93cd0fb2a8a890ac450"}, ] [package.extras] -colors = ["colorama (>=0.4.3)"] -pipfile-deprecated-finder = ["pip-shims (>=0.5.2)", "pipreqs", "requirementslib"] +colors = ["colorama"] plugins = ["setuptools"] -requirements-deprecated-finder = ["pip-api", "pipreqs"] [[package]] name = "itsdangerous" -version = "2.1.2" +version = "2.2.0" description = "Safely pass data to untrusted environments and back." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "itsdangerous-2.1.2-py3-none-any.whl", hash = "sha256:2c2349112351b88699d8d4b6b075022c0808887cb7ad10069318a8b0bc88db44"}, - {file = "itsdangerous-2.1.2.tar.gz", hash = "sha256:5dbbc68b317e5e42f327f9021763545dc3fc3bfe22e6deb96aaf1fc38874156a"}, + {file = "itsdangerous-2.2.0-py3-none-any.whl", hash = "sha256:c6242fc49e35958c8b15141343aa660db5fc54d4f13a1db01a3f5891b98700ef"}, + {file = "itsdangerous-2.2.0.tar.gz", hash = "sha256:e0050c0b7da1eea53ffaf149c0cfbb5c6e2e2b69c4bef22c81fa6eb73e5f6173"}, ] [[package]] name = "jaydebeapi" version = "1.2.3" description = "Use JDBC database drivers from Python 2/3 or Jython with a DB-API." -category = "main" optional = false python-versions = "*" files = [ @@ -1479,14 +1327,13 @@ JPype1 = {version = "*", markers = "python_version > \"2.7\" and platform_python [[package]] name = "jinja2" -version = "3.1.2" +version = "3.1.6" description = "A very fast and expressive template engine." -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, - {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, + {file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"}, + {file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"}, ] [package.dependencies] @@ -1497,33 +1344,39 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "jpype1" -version = "1.4.1" -description = "A Python to Java bridge." -category = "main" +version = "1.6.0" +description = "A Python to Java bridge" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "JPype1-1.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:233a6a1a9c7f3633e7d74c14039f7ea35df81e138241f1acc8f94f65a8bd086e"}, - {file = "JPype1-1.4.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0099e77c6e99af13089b1c89cd99681b485fbf74daa492ee38e35d90d6349ffc"}, - {file = "JPype1-1.4.1-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:213f7154a7cc859dead7143cfee255bd3ce57938e0a5f2250b6768af0cef62c8"}, - {file = "JPype1-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:8d94013dfed3d1c7ee193e86393b2aea756a9910d222b7167ed493f9a0b1b3d5"}, - {file = "JPype1-1.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:34373696c3457f1d686639d928ef53b6a121203d9c0e651ed44dd3adf78bedb3"}, - {file = "JPype1-1.4.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7622d07408e6d9a89e9eb70d4a9a675e51d5411657ac434ccec23cc94b828d9c"}, - {file = "JPype1-1.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d960ce12c3913242f9e4a11e55afa9c38e1a5410d0a38cc5a21086415c38a02"}, - {file = "JPype1-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:5473a89d2cab327e38382fd69d1209517bad44158fb3ee9e699ebfeb5bc1cd51"}, - {file = "JPype1-1.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d85489a27c58b1b21feb8601406319b6a51d233ae9fa27de9b24c4dfea560b22"}, - {file = "JPype1-1.4.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9ce364d26ccbf7a21e35737f62663ce8d3aeb4e4b0f05d7e71f6126a6eb81059"}, - {file = "JPype1-1.4.1-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b9e29a0ea763c16d0fb05528785d4ed0fa56a421d600eca87e43398b569d2dea"}, - {file = "JPype1-1.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:8c2fef2d0c298c8e69b2880ff866fa5db5f477ddd78ef310a357d697362c9f89"}, - {file = "JPype1-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6089cd28067d77e5b4a09e272525ecd70f838b92a7c08d91d4fa7d192ec3f3bb"}, - {file = "JPype1-1.4.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:24e601a31fb3b44decd5389ea87cbc39aaa0c61980c39b060561f9dc604f4cc5"}, - {file = "JPype1-1.4.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:000556d5839ffbe61c12f1fa41cbfd4e9a0abe103e0100febacc069d75defa8f"}, - {file = "JPype1-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:7039db1a522af55cf89f6a4a72120f8b074abcde2535543da34616640ecbb3c1"}, - {file = "JPype1-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bd8bd76bf8741fa20d44ded776e6a3ea7fe103bcab7156f53ba7a72c50b7dd2f"}, - {file = "JPype1-1.4.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d483a6c3e6cb19065e71d322c4742efcfafc44bf1a67ef8ef75f78626158c3d9"}, - {file = "JPype1-1.4.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:04ea4be3e9471bf62ccdeccc2417ad6b9a300effcc0e5f6af9534eafa14e3978"}, - {file = "JPype1-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:8692a7b14e807b224673010a648ab12415d3bc32323e351f03e6c64814ee319b"}, - {file = "JPype1-1.4.1.tar.gz", hash = "sha256:dc8ee854073474ad79ae168d90c2f6893854f58936cfa18f3587cadae0d3696d"}, + {file = "jpype1-1.6.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:533cf7ced58a4b74272f3d1e962fe33f305184d2fcb3856ca79867d5b6f0fb8b"}, + {file = "jpype1-1.6.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:597063698c074e5bf34e696626423a528cdf099989e22a837e889a0d671fd9e4"}, + {file = "jpype1-1.6.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:2f0cd698d160ba825952393b4d87911e7eedcbf5af381bb6438126de863f66b6"}, + {file = "jpype1-1.6.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fcabb8cce3be16528bd26e4b73e41d7b8c778111f14de52c33c25e2a9d4c9a9f"}, + {file = "jpype1-1.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:f02c419d6cdd45ed5576d95f0ab4732371c760ba4b01ea9bd646b98b3c21a16f"}, + {file = "jpype1-1.6.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:40b523e11b22398a8ddb777f1e6e8d55108a631311f35b48b0ed0f4c9198d025"}, + {file = "jpype1-1.6.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ae5927e441894d41b65e08390a0ea6a6512fe222c07aa33fbab623512092fdbd"}, + {file = "jpype1-1.6.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:9d85c2077172a32dd8ffde8711cb57c5bc351378ceb44dd8c3bdd80f27fa8caf"}, + {file = "jpype1-1.6.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f5a02cbba4022a0aa47ee617bc12349457988c653491484a988dc8f4e6269dfc"}, + {file = "jpype1-1.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:966daa892e6cd9ec3b2b92fd7a6d572687b29021e6d28fb73995a62ddd0a11eb"}, + {file = "jpype1-1.6.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:5454322887505097c46f41521becf31cda2303f54e35cb42e20f1a180055a558"}, + {file = "jpype1-1.6.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cf646459023a0dd71b3cc3aeeb977225a93f94c97839bb4e6146977b166c7caf"}, + {file = "jpype1-1.6.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:7a98b34bc68a117881382dffa9b02d5e1d0d94325f85d7f564c33cc9e9d2916b"}, + {file = "jpype1-1.6.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b56d7b662ce353c7f876e9ff3d4e775918348340795801e1f00c3b6241006264"}, + {file = "jpype1-1.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:cf41134bc59c28de2721614ed00a34f76f69f2b525583a5c42fee5c7bae05d40"}, + {file = "jpype1-1.6.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ce1da9ff01010a4529de194aecc053bfc8ab25440ea6b63579ef8c8d381da21d"}, + {file = "jpype1-1.6.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:4a387430cd4f3f68761013dca7f71b79d8d64b47dfd56eedcbd44c894d98d7f2"}, + {file = "jpype1-1.6.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:6c9d99f41a5d05a8a2b6aeda796f646904c1c2b68aed0cc9a3bbc165483d9e1e"}, + {file = "jpype1-1.6.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:55ba7257988a69bee84f7cd1444131725d5447999149fdafdba25bf46e4b1a3f"}, + {file = "jpype1-1.6.0-cp313-cp313-win_amd64.whl", hash = "sha256:ef8dd72442d91cde7e5eefef24ab71323cdd4137283a59f79d265a6620f7d0ab"}, + {file = "jpype1-1.6.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:dc0c1c8b989b9857f87648980a746084b323858b0450225eab3642bb674645d6"}, + {file = "jpype1-1.6.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:cbbba16381ccd23530ad4ef09f7b2b1b12bd7fd0f6ca9fe4c7b4e3da8fe4cf63"}, + {file = "jpype1-1.6.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1a3814e4f65d67e36bdb03b8851d5ece8d7a408aa3a24251ea0609bb8fba77dd"}, + {file = "jpype1-1.6.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f5c1c4fc3458fcde7a82974470f4d1cd0622b139027c67bc714f5762fc4ed6f9"}, + {file = "jpype1-1.6.0-cp39-cp39-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:c828e0272b57c687855442288de696d5377ee458cc19a0c4cb766eb53d908881"}, + {file = "jpype1-1.6.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:560ed113d718909406e3b0e1f4c48595977cb8378a5c9404420cece00788fc86"}, + {file = "jpype1-1.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:9afc02877787571e4cd312b90cbc4057bb986ac02728c3750c36ab59aded9044"}, + {file = "jpype1-1.6.0.tar.gz", hash = "sha256:2d46b2a14f8f0e6f17d8aa22b4fc3a64b2790851ebf1409ad79a37c698fd6e9a"}, ] [package.dependencies] @@ -1533,154 +1386,124 @@ packaging = "*" docs = ["readthedocs-sphinx-ext", "sphinx", "sphinx-rtd-theme"] tests = ["pytest"] -[[package]] -name = "jsbeautifier" -version = "1.14.9" -description = "JavaScript unobfuscator and beautifier." -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "jsbeautifier-1.14.9.tar.gz", hash = "sha256:c738ebc36b47bd94e4ca6dd17a9004c3cc74edad582ca1d60e0e5d5945a63cb9"}, -] - -[package.dependencies] -editorconfig = ">=0.12.2" -six = ">=1.13.0" - -[[package]] -name = "json5" -version = "0.9.14" -description = "A Python implementation of the JSON5 data format." -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "json5-0.9.14-py2.py3-none-any.whl", hash = "sha256:740c7f1b9e584a468dbb2939d8d458db3427f2c93ae2139d05f47e453eae964f"}, - {file = "json5-0.9.14.tar.gz", hash = "sha256:9ed66c3a6ca3510a976a9ef9b8c0787de24802724ab1860bc0153c7fdd589b02"}, -] - -[package.extras] -dev = ["hypothesis"] - [[package]] name = "lxml" -version = "4.9.3" +version = "6.0.0" description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*" -files = [ - {file = "lxml-4.9.3-cp27-cp27m-macosx_11_0_x86_64.whl", hash = "sha256:b0a545b46b526d418eb91754565ba5b63b1c0b12f9bd2f808c852d9b4b2f9b5c"}, - {file = "lxml-4.9.3-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:075b731ddd9e7f68ad24c635374211376aa05a281673ede86cbe1d1b3455279d"}, - {file = "lxml-4.9.3-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1e224d5755dba2f4a9498e150c43792392ac9b5380aa1b845f98a1618c94eeef"}, - {file = "lxml-4.9.3-cp27-cp27m-win32.whl", hash = "sha256:2c74524e179f2ad6d2a4f7caf70e2d96639c0954c943ad601a9e146c76408ed7"}, - {file = "lxml-4.9.3-cp27-cp27m-win_amd64.whl", hash = "sha256:4f1026bc732b6a7f96369f7bfe1a4f2290fb34dce00d8644bc3036fb351a4ca1"}, - {file = "lxml-4.9.3-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c0781a98ff5e6586926293e59480b64ddd46282953203c76ae15dbbbf302e8bb"}, - {file = "lxml-4.9.3-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:cef2502e7e8a96fe5ad686d60b49e1ab03e438bd9123987994528febd569868e"}, - {file = "lxml-4.9.3-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:b86164d2cff4d3aaa1f04a14685cbc072efd0b4f99ca5708b2ad1b9b5988a991"}, - {file = "lxml-4.9.3-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:42871176e7896d5d45138f6d28751053c711ed4d48d8e30b498da155af39aebd"}, - {file = "lxml-4.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:ae8b9c6deb1e634ba4f1930eb67ef6e6bf6a44b6eb5ad605642b2d6d5ed9ce3c"}, - {file = "lxml-4.9.3-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:411007c0d88188d9f621b11d252cce90c4a2d1a49db6c068e3c16422f306eab8"}, - {file = "lxml-4.9.3-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:cd47b4a0d41d2afa3e58e5bf1f62069255aa2fd6ff5ee41604418ca925911d76"}, - {file = "lxml-4.9.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0e2cb47860da1f7e9a5256254b74ae331687b9672dfa780eed355c4c9c3dbd23"}, - {file = "lxml-4.9.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1247694b26342a7bf47c02e513d32225ededd18045264d40758abeb3c838a51f"}, - {file = "lxml-4.9.3-cp310-cp310-win32.whl", hash = "sha256:cdb650fc86227eba20de1a29d4b2c1bfe139dc75a0669270033cb2ea3d391b85"}, - {file = "lxml-4.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:97047f0d25cd4bcae81f9ec9dc290ca3e15927c192df17331b53bebe0e3ff96d"}, - {file = "lxml-4.9.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:1f447ea5429b54f9582d4b955f5f1985f278ce5cf169f72eea8afd9502973dd5"}, - {file = "lxml-4.9.3-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:57d6ba0ca2b0c462f339640d22882acc711de224d769edf29962b09f77129cbf"}, - {file = "lxml-4.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:9767e79108424fb6c3edf8f81e6730666a50feb01a328f4a016464a5893f835a"}, - {file = "lxml-4.9.3-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:71c52db65e4b56b8ddc5bb89fb2e66c558ed9d1a74a45ceb7dcb20c191c3df2f"}, - {file = "lxml-4.9.3-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d73d8ecf8ecf10a3bd007f2192725a34bd62898e8da27eb9d32a58084f93962b"}, - {file = "lxml-4.9.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0a3d3487f07c1d7f150894c238299934a2a074ef590b583103a45002035be120"}, - {file = "lxml-4.9.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e28c51fa0ce5674be9f560c6761c1b441631901993f76700b1b30ca6c8378d6"}, - {file = "lxml-4.9.3-cp311-cp311-win32.whl", hash = "sha256:0bfd0767c5c1de2551a120673b72e5d4b628737cb05414f03c3277bf9bed3305"}, - {file = "lxml-4.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:25f32acefac14ef7bd53e4218fe93b804ef6f6b92ffdb4322bb6d49d94cad2bc"}, - {file = "lxml-4.9.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:d3ff32724f98fbbbfa9f49d82852b159e9784d6094983d9a8b7f2ddaebb063d4"}, - {file = "lxml-4.9.3-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:48d6ed886b343d11493129e019da91d4039826794a3e3027321c56d9e71505be"}, - {file = "lxml-4.9.3-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:9a92d3faef50658dd2c5470af249985782bf754c4e18e15afb67d3ab06233f13"}, - {file = "lxml-4.9.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b4e4bc18382088514ebde9328da057775055940a1f2e18f6ad2d78aa0f3ec5b9"}, - {file = "lxml-4.9.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fc9b106a1bf918db68619fdcd6d5ad4f972fdd19c01d19bdb6bf63f3589a9ec5"}, - {file = "lxml-4.9.3-cp312-cp312-win_amd64.whl", hash = "sha256:d37017287a7adb6ab77e1c5bee9bcf9660f90ff445042b790402a654d2ad81d8"}, - {file = "lxml-4.9.3-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:56dc1f1ebccc656d1b3ed288f11e27172a01503fc016bcabdcbc0978b19352b7"}, - {file = "lxml-4.9.3-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:578695735c5a3f51569810dfebd05dd6f888147a34f0f98d4bb27e92b76e05c2"}, - {file = "lxml-4.9.3-cp35-cp35m-win32.whl", hash = "sha256:704f61ba8c1283c71b16135caf697557f5ecf3e74d9e453233e4771d68a1f42d"}, - {file = "lxml-4.9.3-cp35-cp35m-win_amd64.whl", hash = "sha256:c41bfca0bd3532d53d16fd34d20806d5c2b1ace22a2f2e4c0008570bf2c58833"}, - {file = "lxml-4.9.3-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:64f479d719dc9f4c813ad9bb6b28f8390360660b73b2e4beb4cb0ae7104f1c12"}, - {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:dd708cf4ee4408cf46a48b108fb9427bfa00b9b85812a9262b5c668af2533ea5"}, - {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c31c7462abdf8f2ac0577d9f05279727e698f97ecbb02f17939ea99ae8daa98"}, - {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:e3cd95e10c2610c360154afdc2f1480aea394f4a4f1ea0a5eacce49640c9b190"}, - {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_28_x86_64.whl", hash = "sha256:4930be26af26ac545c3dffb662521d4e6268352866956672231887d18f0eaab2"}, - {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4aec80cde9197340bc353d2768e2a75f5f60bacda2bab72ab1dc499589b3878c"}, - {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:14e019fd83b831b2e61baed40cab76222139926b1fb5ed0e79225bc0cae14584"}, - {file = "lxml-4.9.3-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0c0850c8b02c298d3c7006b23e98249515ac57430e16a166873fc47a5d549287"}, - {file = "lxml-4.9.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:aca086dc5f9ef98c512bac8efea4483eb84abbf926eaeedf7b91479feb092458"}, - {file = "lxml-4.9.3-cp36-cp36m-win32.whl", hash = "sha256:50baa9c1c47efcaef189f31e3d00d697c6d4afda5c3cde0302d063492ff9b477"}, - {file = "lxml-4.9.3-cp36-cp36m-win_amd64.whl", hash = "sha256:bef4e656f7d98aaa3486d2627e7d2df1157d7e88e7efd43a65aa5dd4714916cf"}, - {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:46f409a2d60f634fe550f7133ed30ad5321ae2e6630f13657fb9479506b00601"}, - {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:4c28a9144688aef80d6ea666c809b4b0e50010a2aca784c97f5e6bf143d9f129"}, - {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:141f1d1a9b663c679dc524af3ea1773e618907e96075262726c7612c02b149a4"}, - {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:53ace1c1fd5a74ef662f844a0413446c0629d151055340e9893da958a374f70d"}, - {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:17a753023436a18e27dd7769e798ce302963c236bc4114ceee5b25c18c52c693"}, - {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7d298a1bd60c067ea75d9f684f5f3992c9d6766fadbc0bcedd39750bf344c2f4"}, - {file = "lxml-4.9.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:081d32421db5df44c41b7f08a334a090a545c54ba977e47fd7cc2deece78809a"}, - {file = "lxml-4.9.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:23eed6d7b1a3336ad92d8e39d4bfe09073c31bfe502f20ca5116b2a334f8ec02"}, - {file = "lxml-4.9.3-cp37-cp37m-win32.whl", hash = "sha256:1509dd12b773c02acd154582088820893109f6ca27ef7291b003d0e81666109f"}, - {file = "lxml-4.9.3-cp37-cp37m-win_amd64.whl", hash = "sha256:120fa9349a24c7043854c53cae8cec227e1f79195a7493e09e0c12e29f918e52"}, - {file = "lxml-4.9.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:4d2d1edbca80b510443f51afd8496be95529db04a509bc8faee49c7b0fb6d2cc"}, - {file = "lxml-4.9.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:8d7e43bd40f65f7d97ad8ef5c9b1778943d02f04febef12def25f7583d19baac"}, - {file = "lxml-4.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:71d66ee82e7417828af6ecd7db817913cb0cf9d4e61aa0ac1fde0583d84358db"}, - {file = "lxml-4.9.3-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:6fc3c450eaa0b56f815c7b62f2b7fba7266c4779adcf1cece9e6deb1de7305ce"}, - {file = "lxml-4.9.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:65299ea57d82fb91c7f019300d24050c4ddeb7c5a190e076b5f48a2b43d19c42"}, - {file = "lxml-4.9.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:eadfbbbfb41b44034a4c757fd5d70baccd43296fb894dba0295606a7cf3124aa"}, - {file = "lxml-4.9.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3e9bdd30efde2b9ccfa9cb5768ba04fe71b018a25ea093379c857c9dad262c40"}, - {file = "lxml-4.9.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fcdd00edfd0a3001e0181eab3e63bd5c74ad3e67152c84f93f13769a40e073a7"}, - {file = "lxml-4.9.3-cp38-cp38-win32.whl", hash = "sha256:57aba1bbdf450b726d58b2aea5fe47c7875f5afb2c4a23784ed78f19a0462574"}, - {file = "lxml-4.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:92af161ecbdb2883c4593d5ed4815ea71b31fafd7fd05789b23100d081ecac96"}, - {file = "lxml-4.9.3-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:9bb6ad405121241e99a86efff22d3ef469024ce22875a7ae045896ad23ba2340"}, - {file = "lxml-4.9.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:8ed74706b26ad100433da4b9d807eae371efaa266ffc3e9191ea436087a9d6a7"}, - {file = "lxml-4.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:fbf521479bcac1e25a663df882c46a641a9bff6b56dc8b0fafaebd2f66fb231b"}, - {file = "lxml-4.9.3-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:303bf1edce6ced16bf67a18a1cf8339d0db79577eec5d9a6d4a80f0fb10aa2da"}, - {file = "lxml-4.9.3-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:5515edd2a6d1a5a70bfcdee23b42ec33425e405c5b351478ab7dc9347228f96e"}, - {file = "lxml-4.9.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:690dafd0b187ed38583a648076865d8c229661ed20e48f2335d68e2cf7dc829d"}, - {file = "lxml-4.9.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b6420a005548ad52154c8ceab4a1290ff78d757f9e5cbc68f8c77089acd3c432"}, - {file = "lxml-4.9.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bb3bb49c7a6ad9d981d734ef7c7193bc349ac338776a0360cc671eaee89bcf69"}, - {file = "lxml-4.9.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d27be7405547d1f958b60837dc4c1007da90b8b23f54ba1f8b728c78fdb19d50"}, - {file = "lxml-4.9.3-cp39-cp39-win32.whl", hash = "sha256:8df133a2ea5e74eef5e8fc6f19b9e085f758768a16e9877a60aec455ed2609b2"}, - {file = "lxml-4.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:4dd9a263e845a72eacb60d12401e37c616438ea2e5442885f65082c276dfb2b2"}, - {file = "lxml-4.9.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6689a3d7fd13dc687e9102a27e98ef33730ac4fe37795d5036d18b4d527abd35"}, - {file = "lxml-4.9.3-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:f6bdac493b949141b733c5345b6ba8f87a226029cbabc7e9e121a413e49441e0"}, - {file = "lxml-4.9.3-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:05186a0f1346ae12553d66df1cfce6f251589fea3ad3da4f3ef4e34b2d58c6a3"}, - {file = "lxml-4.9.3-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c2006f5c8d28dee289f7020f721354362fa304acbaaf9745751ac4006650254b"}, - {file = "lxml-4.9.3-pp38-pypy38_pp73-macosx_11_0_x86_64.whl", hash = "sha256:5c245b783db29c4e4fbbbfc9c5a78be496c9fea25517f90606aa1f6b2b3d5f7b"}, - {file = "lxml-4.9.3-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:4fb960a632a49f2f089d522f70496640fdf1218f1243889da3822e0a9f5f3ba7"}, - {file = "lxml-4.9.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:50670615eaf97227d5dc60de2dc99fb134a7130d310d783314e7724bf163f75d"}, - {file = "lxml-4.9.3-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:9719fe17307a9e814580af1f5c6e05ca593b12fb7e44fe62450a5384dbf61b4b"}, - {file = "lxml-4.9.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:3331bece23c9ee066e0fb3f96c61322b9e0f54d775fccefff4c38ca488de283a"}, - {file = "lxml-4.9.3-pp39-pypy39_pp73-macosx_11_0_x86_64.whl", hash = "sha256:ed667f49b11360951e201453fc3967344d0d0263aa415e1619e85ae7fd17b4e0"}, - {file = "lxml-4.9.3-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:8b77946fd508cbf0fccd8e400a7f71d4ac0e1595812e66025bac475a8e811694"}, - {file = "lxml-4.9.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:e4da8ca0c0c0aea88fd46be8e44bd49716772358d648cce45fe387f7b92374a7"}, - {file = "lxml-4.9.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:fe4bda6bd4340caa6e5cf95e73f8fea5c4bfc55763dd42f1b50a94c1b4a2fbd4"}, - {file = "lxml-4.9.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:f3df3db1d336b9356dd3112eae5f5c2b8b377f3bc826848567f10bfddfee77e9"}, - {file = "lxml-4.9.3.tar.gz", hash = "sha256:48628bd53a426c9eb9bc066a923acaa0878d1e86129fd5359aee99285f4eed9c"}, +optional = false +python-versions = ">=3.8" +files = [ + {file = "lxml-6.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:35bc626eec405f745199200ccb5c6b36f202675d204aa29bb52e27ba2b71dea8"}, + {file = "lxml-6.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:246b40f8a4aec341cbbf52617cad8ab7c888d944bfe12a6abd2b1f6cfb6f6082"}, + {file = "lxml-6.0.0-cp310-cp310-manylinux2010_i686.manylinux2014_i686.manylinux_2_12_i686.manylinux_2_17_i686.whl", hash = "sha256:2793a627e95d119e9f1e19720730472f5543a6d84c50ea33313ce328d870f2dd"}, + {file = "lxml-6.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:46b9ed911f36bfeb6338e0b482e7fe7c27d362c52fde29f221fddbc9ee2227e7"}, + {file = "lxml-6.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2b4790b558bee331a933e08883c423f65bbcd07e278f91b2272489e31ab1e2b4"}, + {file = "lxml-6.0.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e2030956cf4886b10be9a0285c6802e078ec2391e1dd7ff3eb509c2c95a69b76"}, + {file = "lxml-6.0.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4d23854ecf381ab1facc8f353dcd9adeddef3652268ee75297c1164c987c11dc"}, + {file = "lxml-6.0.0-cp310-cp310-manylinux_2_31_armv7l.whl", hash = "sha256:43fe5af2d590bf4691531b1d9a2495d7aab2090547eaacd224a3afec95706d76"}, + {file = "lxml-6.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:74e748012f8c19b47f7d6321ac929a9a94ee92ef12bc4298c47e8b7219b26541"}, + {file = "lxml-6.0.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:43cfbb7db02b30ad3926e8fceaef260ba2fb7df787e38fa2df890c1ca7966c3b"}, + {file = "lxml-6.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:34190a1ec4f1e84af256495436b2d196529c3f2094f0af80202947567fdbf2e7"}, + {file = "lxml-6.0.0-cp310-cp310-win32.whl", hash = "sha256:5967fe415b1920a3877a4195e9a2b779249630ee49ece22021c690320ff07452"}, + {file = "lxml-6.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:f3389924581d9a770c6caa4df4e74b606180869043b9073e2cec324bad6e306e"}, + {file = "lxml-6.0.0-cp310-cp310-win_arm64.whl", hash = "sha256:522fe7abb41309e9543b0d9b8b434f2b630c5fdaf6482bee642b34c8c70079c8"}, + {file = "lxml-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4ee56288d0df919e4aac43b539dd0e34bb55d6a12a6562038e8d6f3ed07f9e36"}, + {file = "lxml-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b8dd6dd0e9c1992613ccda2bcb74fc9d49159dbe0f0ca4753f37527749885c25"}, + {file = "lxml-6.0.0-cp311-cp311-manylinux2010_i686.manylinux2014_i686.manylinux_2_12_i686.manylinux_2_17_i686.whl", hash = "sha256:d7ae472f74afcc47320238b5dbfd363aba111a525943c8a34a1b657c6be934c3"}, + {file = "lxml-6.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5592401cdf3dc682194727c1ddaa8aa0f3ddc57ca64fd03226a430b955eab6f6"}, + {file = "lxml-6.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:58ffd35bd5425c3c3b9692d078bf7ab851441434531a7e517c4984d5634cd65b"}, + {file = "lxml-6.0.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f720a14aa102a38907c6d5030e3d66b3b680c3e6f6bc95473931ea3c00c59967"}, + {file = "lxml-6.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c2a5e8d207311a0170aca0eb6b160af91adc29ec121832e4ac151a57743a1e1e"}, + {file = "lxml-6.0.0-cp311-cp311-manylinux_2_31_armv7l.whl", hash = "sha256:2dd1cc3ea7e60bfb31ff32cafe07e24839df573a5e7c2d33304082a5019bcd58"}, + {file = "lxml-6.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2cfcf84f1defed7e5798ef4f88aa25fcc52d279be731ce904789aa7ccfb7e8d2"}, + {file = "lxml-6.0.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:a52a4704811e2623b0324a18d41ad4b9fabf43ce5ff99b14e40a520e2190c851"}, + {file = "lxml-6.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c16304bba98f48a28ae10e32a8e75c349dd742c45156f297e16eeb1ba9287a1f"}, + {file = "lxml-6.0.0-cp311-cp311-win32.whl", hash = "sha256:f8d19565ae3eb956d84da3ef367aa7def14a2735d05bd275cd54c0301f0d0d6c"}, + {file = "lxml-6.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:b2d71cdefda9424adff9a3607ba5bbfc60ee972d73c21c7e3c19e71037574816"}, + {file = "lxml-6.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:8a2e76efbf8772add72d002d67a4c3d0958638696f541734304c7f28217a9cab"}, + {file = "lxml-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:78718d8454a6e928470d511bf8ac93f469283a45c354995f7d19e77292f26108"}, + {file = "lxml-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:84ef591495ffd3f9dcabffd6391db7bb70d7230b5c35ef5148354a134f56f2be"}, + {file = "lxml-6.0.0-cp312-cp312-manylinux2010_i686.manylinux2014_i686.manylinux_2_12_i686.manylinux_2_17_i686.whl", hash = "sha256:2930aa001a3776c3e2601cb8e0a15d21b8270528d89cc308be4843ade546b9ab"}, + {file = "lxml-6.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:219e0431ea8006e15005767f0351e3f7f9143e793e58519dc97fe9e07fae5563"}, + {file = "lxml-6.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bd5913b4972681ffc9718bc2d4c53cde39ef81415e1671ff93e9aa30b46595e7"}, + {file = "lxml-6.0.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:390240baeb9f415a82eefc2e13285016f9c8b5ad71ec80574ae8fa9605093cd7"}, + {file = "lxml-6.0.0-cp312-cp312-manylinux_2_27_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d6e200909a119626744dd81bae409fc44134389e03fbf1d68ed2a55a2fb10991"}, + {file = "lxml-6.0.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ca50bd612438258a91b5b3788c6621c1f05c8c478e7951899f492be42defc0da"}, + {file = "lxml-6.0.0-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:c24b8efd9c0f62bad0439283c2c795ef916c5a6b75f03c17799775c7ae3c0c9e"}, + {file = "lxml-6.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:afd27d8629ae94c5d863e32ab0e1d5590371d296b87dae0a751fb22bf3685741"}, + {file = "lxml-6.0.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:54c4855eabd9fc29707d30141be99e5cd1102e7d2258d2892314cf4c110726c3"}, + {file = "lxml-6.0.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c907516d49f77f6cd8ead1322198bdfd902003c3c330c77a1c5f3cc32a0e4d16"}, + {file = "lxml-6.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:36531f81c8214e293097cd2b7873f178997dae33d3667caaae8bdfb9666b76c0"}, + {file = "lxml-6.0.0-cp312-cp312-win32.whl", hash = "sha256:690b20e3388a7ec98e899fd54c924e50ba6693874aa65ef9cb53de7f7de9d64a"}, + {file = "lxml-6.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:310b719b695b3dd442cdfbbe64936b2f2e231bb91d998e99e6f0daf991a3eba3"}, + {file = "lxml-6.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:8cb26f51c82d77483cdcd2b4a53cda55bbee29b3c2f3ddeb47182a2a9064e4eb"}, + {file = "lxml-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6da7cd4f405fd7db56e51e96bff0865b9853ae70df0e6720624049da76bde2da"}, + {file = "lxml-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b34339898bb556a2351a1830f88f751679f343eabf9cf05841c95b165152c9e7"}, + {file = "lxml-6.0.0-cp313-cp313-manylinux2010_i686.manylinux2014_i686.manylinux_2_12_i686.manylinux_2_17_i686.whl", hash = "sha256:51a5e4c61a4541bd1cd3ba74766d0c9b6c12d6a1a4964ef60026832aac8e79b3"}, + {file = "lxml-6.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d18a25b19ca7307045581b18b3ec9ead2b1db5ccd8719c291f0cd0a5cec6cb81"}, + {file = "lxml-6.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d4f0c66df4386b75d2ab1e20a489f30dc7fd9a06a896d64980541506086be1f1"}, + {file = "lxml-6.0.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9f4b481b6cc3a897adb4279216695150bbe7a44c03daba3c894f49d2037e0a24"}, + {file = "lxml-6.0.0-cp313-cp313-manylinux_2_27_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8a78d6c9168f5bcb20971bf3329c2b83078611fbe1f807baadc64afc70523b3a"}, + {file = "lxml-6.0.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ae06fbab4f1bb7db4f7c8ca9897dc8db4447d1a2b9bee78474ad403437bcc29"}, + {file = "lxml-6.0.0-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:1fa377b827ca2023244a06554c6e7dc6828a10aaf74ca41965c5d8a4925aebb4"}, + {file = "lxml-6.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1676b56d48048a62ef77a250428d1f31f610763636e0784ba67a9740823988ca"}, + {file = "lxml-6.0.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:0e32698462aacc5c1cf6bdfebc9c781821b7e74c79f13e5ffc8bfe27c42b1abf"}, + {file = "lxml-6.0.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4d6036c3a296707357efb375cfc24bb64cd955b9ec731abf11ebb1e40063949f"}, + {file = "lxml-6.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7488a43033c958637b1a08cddc9188eb06d3ad36582cebc7d4815980b47e27ef"}, + {file = "lxml-6.0.0-cp313-cp313-win32.whl", hash = "sha256:5fcd7d3b1d8ecb91445bd71b9c88bdbeae528fefee4f379895becfc72298d181"}, + {file = "lxml-6.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:2f34687222b78fff795feeb799a7d44eca2477c3d9d3a46ce17d51a4f383e32e"}, + {file = "lxml-6.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:21db1ec5525780fd07251636eb5f7acb84003e9382c72c18c542a87c416ade03"}, + {file = "lxml-6.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4eb114a0754fd00075c12648d991ec7a4357f9cb873042cc9a77bf3a7e30c9db"}, + {file = "lxml-6.0.0-cp38-cp38-manylinux2010_i686.manylinux2014_i686.manylinux_2_12_i686.manylinux_2_17_i686.whl", hash = "sha256:7da298e1659e45d151b4028ad5c7974917e108afb48731f4ed785d02b6818994"}, + {file = "lxml-6.0.0-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7bf61bc4345c1895221357af8f3e89f8c103d93156ef326532d35c707e2fb19d"}, + {file = "lxml-6.0.0-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63b634facdfbad421d4b61c90735688465d4ab3a8853ac22c76ccac2baf98d97"}, + {file = "lxml-6.0.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:e380e85b93f148ad28ac15f8117e2fd8e5437aa7732d65e260134f83ce67911b"}, + {file = "lxml-6.0.0-cp38-cp38-win32.whl", hash = "sha256:185efc2fed89cdd97552585c624d3c908f0464090f4b91f7d92f8ed2f3b18f54"}, + {file = "lxml-6.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:f97487996a39cb18278ca33f7be98198f278d0bc3c5d0fd4d7b3d63646ca3c8a"}, + {file = "lxml-6.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:85b14a4689d5cff426c12eefe750738648706ea2753b20c2f973b2a000d3d261"}, + {file = "lxml-6.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f64ccf593916e93b8d36ed55401bb7fe9c7d5de3180ce2e10b08f82a8f397316"}, + {file = "lxml-6.0.0-cp39-cp39-manylinux2010_i686.manylinux2014_i686.manylinux_2_12_i686.manylinux_2_17_i686.whl", hash = "sha256:b372d10d17a701b0945f67be58fae4664fd056b85e0ff0fbc1e6c951cdbc0512"}, + {file = "lxml-6.0.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a674c0948789e9136d69065cc28009c1b1874c6ea340253db58be7622ce6398f"}, + {file = "lxml-6.0.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:edf6e4c8fe14dfe316939711e3ece3f9a20760aabf686051b537a7562f4da91a"}, + {file = "lxml-6.0.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:048a930eb4572829604982e39a0c7289ab5dc8abc7fc9f5aabd6fbc08c154e93"}, + {file = "lxml-6.0.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c0b5fa5eda84057a4f1bbb4bb77a8c28ff20ae7ce211588d698ae453e13c6281"}, + {file = "lxml-6.0.0-cp39-cp39-manylinux_2_31_armv7l.whl", hash = "sha256:c352fc8f36f7e9727db17adbf93f82499457b3d7e5511368569b4c5bd155a922"}, + {file = "lxml-6.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:8db5dc617cb937ae17ff3403c3a70a7de9df4852a046f93e71edaec678f721d0"}, + {file = "lxml-6.0.0-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:2181e4b1d07dde53986023482673c0f1fba5178ef800f9ab95ad791e8bdded6a"}, + {file = "lxml-6.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b3c98d5b24c6095e89e03d65d5c574705be3d49c0d8ca10c17a8a4b5201b72f5"}, + {file = "lxml-6.0.0-cp39-cp39-win32.whl", hash = "sha256:04d67ceee6db4bcb92987ccb16e53bef6b42ced872509f333c04fb58a3315256"}, + {file = "lxml-6.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:e0b1520ef900e9ef62e392dd3d7ae4f5fa224d1dd62897a792cf353eb20b6cae"}, + {file = "lxml-6.0.0-cp39-cp39-win_arm64.whl", hash = "sha256:e35e8aaaf3981489f42884b59726693de32dabfc438ac10ef4eb3409961fd402"}, + {file = "lxml-6.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:dbdd7679a6f4f08152818043dbb39491d1af3332128b3752c3ec5cebc0011a72"}, + {file = "lxml-6.0.0-pp310-pypy310_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:40442e2a4456e9910875ac12951476d36c0870dcb38a68719f8c4686609897c4"}, + {file = "lxml-6.0.0-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:db0efd6bae1c4730b9c863fc4f5f3c0fa3e8f05cae2c44ae141cb9dfc7d091dc"}, + {file = "lxml-6.0.0-pp310-pypy310_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9ab542c91f5a47aaa58abdd8ea84b498e8e49fe4b883d67800017757a3eb78e8"}, + {file = "lxml-6.0.0-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:013090383863b72c62a702d07678b658fa2567aa58d373d963cca245b017e065"}, + {file = "lxml-6.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c86df1c9af35d903d2b52d22ea3e66db8058d21dc0f59842ca5deb0595921141"}, + {file = "lxml-6.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4337e4aec93b7c011f7ee2e357b0d30562edd1955620fdd4aeab6aacd90d43c5"}, + {file = "lxml-6.0.0-pp39-pypy39_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ae74f7c762270196d2dda56f8dd7309411f08a4084ff2dfcc0b095a218df2e06"}, + {file = "lxml-6.0.0-pp39-pypy39_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:059c4cbf3973a621b62ea3132934ae737da2c132a788e6cfb9b08d63a0ef73f9"}, + {file = "lxml-6.0.0-pp39-pypy39_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:17f090a9bc0ce8da51a5632092f98a7e7f84bca26f33d161a98b57f7fb0004ca"}, + {file = "lxml-6.0.0-pp39-pypy39_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9da022c14baeec36edfcc8daf0e281e2f55b950249a455776f0d1adeeada4734"}, + {file = "lxml-6.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a55da151d0b0c6ab176b4e761670ac0e2667817a1e0dadd04a01d0561a219349"}, + {file = "lxml-6.0.0.tar.gz", hash = "sha256:032e65120339d44cdc3efc326c9f660f5f7205f3a535c1fdbf898b29ea01fb72"}, ] [package.extras] cssselect = ["cssselect (>=0.7)"] +html-clean = ["lxml_html_clean"] html5 = ["html5lib"] htmlsoup = ["BeautifulSoup4"] -source = ["Cython (>=0.29.35)"] [[package]] name = "mako" -version = "1.2.4" +version = "1.3.10" description = "A super-fast templating language that borrows the best ideas from the existing templating languages." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "Mako-1.2.4-py3-none-any.whl", hash = "sha256:c97c79c018b9165ac9922ae4f32da095ffd3c4e6872b45eded42926deea46818"}, - {file = "Mako-1.2.4.tar.gz", hash = "sha256:d60a3903dc3bb01a18ad6a89cdbe2e4eadc69c0bc8ef1e3773ba53d44c3f7a34"}, + {file = "mako-1.3.10-py3-none-any.whl", hash = "sha256:baef24a52fc4fc514a0887ac600f9f1cff3d82c61d4d700a1fa84d597b88db59"}, + {file = "mako-1.3.10.tar.gz", hash = "sha256:99579a6f39583fa7e5630a28c3c1f440e4e97a414b80372649c0ce338da2ea28"}, ] [package.dependencies] @@ -1695,7 +1518,6 @@ testing = ["pytest"] name = "mando" version = "0.7.1" description = "Create Python CLI apps with little to no effort at all!" -category = "dev" optional = false python-versions = "*" files = [ @@ -1711,69 +1533,130 @@ restructuredtext = ["rst2ansi"] [[package]] name = "markupsafe" -version = "2.1.3" +version = "3.0.2" description = "Safely add untrusted strings to HTML/XML markup." -category = "main" optional = false -python-versions = ">=3.7" -files = [ - {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"}, - {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"}, +python-versions = ">=3.9" +files = [ + {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a"}, + {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, +] + +[[package]] +name = "msgspec" +version = "0.19.0" +description = "A fast serialization and validation library, with builtin support for JSON, MessagePack, YAML, and TOML." +optional = false +python-versions = ">=3.9" +files = [ + {file = "msgspec-0.19.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d8dd848ee7ca7c8153462557655570156c2be94e79acec3561cf379581343259"}, + {file = "msgspec-0.19.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0553bbc77662e5708fe66aa75e7bd3e4b0f209709c48b299afd791d711a93c36"}, + {file = "msgspec-0.19.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe2c4bf29bf4e89790b3117470dea2c20b59932772483082c468b990d45fb947"}, + {file = "msgspec-0.19.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00e87ecfa9795ee5214861eab8326b0e75475c2e68a384002aa135ea2a27d909"}, + {file = "msgspec-0.19.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3c4ec642689da44618f68c90855a10edbc6ac3ff7c1d94395446c65a776e712a"}, + {file = "msgspec-0.19.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:2719647625320b60e2d8af06b35f5b12d4f4d281db30a15a1df22adb2295f633"}, + {file = "msgspec-0.19.0-cp310-cp310-win_amd64.whl", hash = "sha256:695b832d0091edd86eeb535cd39e45f3919f48d997685f7ac31acb15e0a2ed90"}, + {file = "msgspec-0.19.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:aa77046904db764b0462036bc63ef71f02b75b8f72e9c9dd4c447d6da1ed8f8e"}, + {file = "msgspec-0.19.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:047cfa8675eb3bad68722cfe95c60e7afabf84d1bd8938979dd2b92e9e4a9551"}, + {file = "msgspec-0.19.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e78f46ff39a427e10b4a61614a2777ad69559cc8d603a7c05681f5a595ea98f7"}, + {file = "msgspec-0.19.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c7adf191e4bd3be0e9231c3b6dc20cf1199ada2af523885efc2ed218eafd011"}, + {file = "msgspec-0.19.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:f04cad4385e20be7c7176bb8ae3dca54a08e9756cfc97bcdb4f18560c3042063"}, + {file = "msgspec-0.19.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:45c8fb410670b3b7eb884d44a75589377c341ec1392b778311acdbfa55187716"}, + {file = "msgspec-0.19.0-cp311-cp311-win_amd64.whl", hash = "sha256:70eaef4934b87193a27d802534dc466778ad8d536e296ae2f9334e182ac27b6c"}, + {file = "msgspec-0.19.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f98bd8962ad549c27d63845b50af3f53ec468b6318400c9f1adfe8b092d7b62f"}, + {file = "msgspec-0.19.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:43bbb237feab761b815ed9df43b266114203f53596f9b6e6f00ebd79d178cdf2"}, + {file = "msgspec-0.19.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4cfc033c02c3e0aec52b71710d7f84cb3ca5eb407ab2ad23d75631153fdb1f12"}, + {file = "msgspec-0.19.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d911c442571605e17658ca2b416fd8579c5050ac9adc5e00c2cb3126c97f73bc"}, + {file = "msgspec-0.19.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:757b501fa57e24896cf40a831442b19a864f56d253679f34f260dcb002524a6c"}, + {file = "msgspec-0.19.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5f0f65f29b45e2816d8bded36e6b837a4bf5fb60ec4bc3c625fa2c6da4124537"}, + {file = "msgspec-0.19.0-cp312-cp312-win_amd64.whl", hash = "sha256:067f0de1c33cfa0b6a8206562efdf6be5985b988b53dd244a8e06f993f27c8c0"}, + {file = "msgspec-0.19.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f12d30dd6266557aaaf0aa0f9580a9a8fbeadfa83699c487713e355ec5f0bd86"}, + {file = "msgspec-0.19.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82b2c42c1b9ebc89e822e7e13bbe9d17ede0c23c187469fdd9505afd5a481314"}, + {file = "msgspec-0.19.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19746b50be214a54239aab822964f2ac81e38b0055cca94808359d779338c10e"}, + {file = "msgspec-0.19.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60ef4bdb0ec8e4ad62e5a1f95230c08efb1f64f32e6e8dd2ced685bcc73858b5"}, + {file = "msgspec-0.19.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac7f7c377c122b649f7545810c6cd1b47586e3aa3059126ce3516ac7ccc6a6a9"}, + {file = "msgspec-0.19.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a5bc1472223a643f5ffb5bf46ccdede7f9795078194f14edd69e3aab7020d327"}, + {file = "msgspec-0.19.0-cp313-cp313-win_amd64.whl", hash = "sha256:317050bc0f7739cb30d257ff09152ca309bf5a369854bbf1e57dffc310c1f20f"}, + {file = "msgspec-0.19.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:15c1e86fff77184c20a2932cd9742bf33fe23125fa3fcf332df9ad2f7d483044"}, + {file = "msgspec-0.19.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3b5541b2b3294e5ffabe31a09d604e23a88533ace36ac288fa32a420aa38d229"}, + {file = "msgspec-0.19.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f5c043ace7962ef188746e83b99faaa9e3e699ab857ca3f367b309c8e2c6b12"}, + {file = "msgspec-0.19.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca06aa08e39bf57e39a258e1996474f84d0dd8130d486c00bec26d797b8c5446"}, + {file = "msgspec-0.19.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e695dad6897896e9384cf5e2687d9ae9feaef50e802f93602d35458e20d1fb19"}, + {file = "msgspec-0.19.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:3be5c02e1fee57b54130316a08fe40cca53af92999a302a6054cd451700ea7db"}, + {file = "msgspec-0.19.0-cp39-cp39-win_amd64.whl", hash = "sha256:0684573a821be3c749912acf5848cce78af4298345cb2d7a8b8948a0a5a27cfe"}, + {file = "msgspec-0.19.0.tar.gz", hash = "sha256:604037e7cd475345848116e89c553aa9a233259733ab51986ac924ab1b976f8e"}, ] +[package.extras] +dev = ["attrs", "coverage", "eval-type-backport", "furo", "ipython", "msgpack", "mypy", "pre-commit", "pyright", "pytest", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "tomli", "tomli_w"] +doc = ["furo", "ipython", "sphinx", "sphinx-copybutton", "sphinx-design"] +test = ["attrs", "eval-type-backport", "msgpack", "pytest", "pyyaml", "tomli", "tomli_w"] +toml = ["tomli", "tomli_w"] +yaml = ["pyyaml"] + [[package]] name = "msrest" version = "0.7.1" description = "AutoRest swagger generator Python client runtime." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1793,92 +1676,86 @@ async = ["aiodns", "aiohttp (>=3.0)"] [[package]] name = "mypy" -version = "0.991" +version = "1.12.0" description = "Optional static typing for Python" -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "mypy-0.991-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7d17e0a9707d0772f4a7b878f04b4fd11f6f5bcb9b3813975a9b13c9332153ab"}, - {file = "mypy-0.991-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0714258640194d75677e86c786e80ccf294972cc76885d3ebbb560f11db0003d"}, - {file = "mypy-0.991-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0c8f3be99e8a8bd403caa8c03be619544bc2c77a7093685dcf308c6b109426c6"}, - {file = "mypy-0.991-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc9ec663ed6c8f15f4ae9d3c04c989b744436c16d26580eaa760ae9dd5d662eb"}, - {file = "mypy-0.991-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4307270436fd7694b41f913eb09210faff27ea4979ecbcd849e57d2da2f65305"}, - {file = "mypy-0.991-cp310-cp310-win_amd64.whl", hash = "sha256:901c2c269c616e6cb0998b33d4adbb4a6af0ac4ce5cd078afd7bc95830e62c1c"}, - {file = "mypy-0.991-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d13674f3fb73805ba0c45eb6c0c3053d218aa1f7abead6e446d474529aafc372"}, - {file = "mypy-0.991-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1c8cd4fb70e8584ca1ed5805cbc7c017a3d1a29fb450621089ffed3e99d1857f"}, - {file = "mypy-0.991-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:209ee89fbb0deed518605edddd234af80506aec932ad28d73c08f1400ef80a33"}, - {file = "mypy-0.991-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37bd02ebf9d10e05b00d71302d2c2e6ca333e6c2a8584a98c00e038db8121f05"}, - {file = "mypy-0.991-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:26efb2fcc6b67e4d5a55561f39176821d2adf88f2745ddc72751b7890f3194ad"}, - {file = "mypy-0.991-cp311-cp311-win_amd64.whl", hash = "sha256:3a700330b567114b673cf8ee7388e949f843b356a73b5ab22dd7cff4742a5297"}, - {file = "mypy-0.991-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:1f7d1a520373e2272b10796c3ff721ea1a0712288cafaa95931e66aa15798813"}, - {file = "mypy-0.991-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:641411733b127c3e0dab94c45af15fea99e4468f99ac88b39efb1ad677da5711"}, - {file = "mypy-0.991-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3d80e36b7d7a9259b740be6d8d906221789b0d836201af4234093cae89ced0cd"}, - {file = "mypy-0.991-cp37-cp37m-win_amd64.whl", hash = "sha256:e62ebaad93be3ad1a828a11e90f0e76f15449371ffeecca4a0a0b9adc99abcef"}, - {file = "mypy-0.991-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b86ce2c1866a748c0f6faca5232059f881cda6dda2a893b9a8373353cfe3715a"}, - {file = "mypy-0.991-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac6e503823143464538efda0e8e356d871557ef60ccd38f8824a4257acc18d93"}, - {file = "mypy-0.991-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0cca5adf694af539aeaa6ac633a7afe9bbd760df9d31be55ab780b77ab5ae8bf"}, - {file = "mypy-0.991-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a12c56bf73cdab116df96e4ff39610b92a348cc99a1307e1da3c3768bbb5b135"}, - {file = "mypy-0.991-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:652b651d42f155033a1967739788c436491b577b6a44e4c39fb340d0ee7f0d70"}, - {file = "mypy-0.991-cp38-cp38-win_amd64.whl", hash = "sha256:4175593dc25d9da12f7de8de873a33f9b2b8bdb4e827a7cae952e5b1a342e243"}, - {file = "mypy-0.991-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:98e781cd35c0acf33eb0295e8b9c55cdbef64fcb35f6d3aa2186f289bed6e80d"}, - {file = "mypy-0.991-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6d7464bac72a85cb3491c7e92b5b62f3dcccb8af26826257760a552a5e244aa5"}, - {file = "mypy-0.991-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c9166b3f81a10cdf9b49f2d594b21b31adadb3d5e9db9b834866c3258b695be3"}, - {file = "mypy-0.991-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8472f736a5bfb159a5e36740847808f6f5b659960115ff29c7cecec1741c648"}, - {file = "mypy-0.991-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e80e758243b97b618cdf22004beb09e8a2de1af481382e4d84bc52152d1c476"}, - {file = "mypy-0.991-cp39-cp39-win_amd64.whl", hash = "sha256:74e259b5c19f70d35fcc1ad3d56499065c601dfe94ff67ae48b85596b9ec1461"}, - {file = "mypy-0.991-py3-none-any.whl", hash = "sha256:de32edc9b0a7e67c2775e574cb061a537660e51210fbf6006b0b36ea695ae9bb"}, - {file = "mypy-0.991.tar.gz", hash = "sha256:3c0165ba8f354a6d9881809ef29f1a9318a236a6d81c690094c5df32107bde06"}, -] - -[package.dependencies] -mypy-extensions = ">=0.4.3" -tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} -typing-extensions = ">=3.10" + {file = "mypy-1.12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4397081e620dc4dc18e2f124d5e1d2c288194c2c08df6bdb1db31c38cd1fe1ed"}, + {file = "mypy-1.12.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:684a9c508a283f324804fea3f0effeb7858eb03f85c4402a967d187f64562469"}, + {file = "mypy-1.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6cabe4cda2fa5eca7ac94854c6c37039324baaa428ecbf4de4567279e9810f9e"}, + {file = "mypy-1.12.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:060a07b10e999ac9e7fa249ce2bdcfa9183ca2b70756f3bce9df7a92f78a3c0a"}, + {file = "mypy-1.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:0eff042d7257f39ba4ca06641d110ca7d2ad98c9c1fb52200fe6b1c865d360ff"}, + {file = "mypy-1.12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4b86de37a0da945f6d48cf110d5206c5ed514b1ca2614d7ad652d4bf099c7de7"}, + {file = "mypy-1.12.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:20c7c5ce0c1be0b0aea628374e6cf68b420bcc772d85c3c974f675b88e3e6e57"}, + {file = "mypy-1.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a64ee25f05fc2d3d8474985c58042b6759100a475f8237da1f4faf7fcd7e6309"}, + {file = "mypy-1.12.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:faca7ab947c9f457a08dcb8d9a8664fd438080e002b0fa3e41b0535335edcf7f"}, + {file = "mypy-1.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:5bc81701d52cc8767005fdd2a08c19980de9ec61a25dbd2a937dfb1338a826f9"}, + {file = "mypy-1.12.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8462655b6694feb1c99e433ea905d46c478041a8b8f0c33f1dab00ae881b2164"}, + {file = "mypy-1.12.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:923ea66d282d8af9e0f9c21ffc6653643abb95b658c3a8a32dca1eff09c06475"}, + {file = "mypy-1.12.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1ebf9e796521f99d61864ed89d1fb2926d9ab6a5fab421e457cd9c7e4dd65aa9"}, + {file = "mypy-1.12.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e478601cc3e3fa9d6734d255a59c7a2e5c2934da4378f3dd1e3411ea8a248642"}, + {file = "mypy-1.12.0-cp312-cp312-win_amd64.whl", hash = "sha256:c72861b7139a4f738344faa0e150834467521a3fba42dc98264e5aa9507dd601"}, + {file = "mypy-1.12.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:52b9e1492e47e1790360a43755fa04101a7ac72287b1a53ce817f35899ba0521"}, + {file = "mypy-1.12.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:48d3e37dd7d9403e38fa86c46191de72705166d40b8c9f91a3de77350daa0893"}, + {file = "mypy-1.12.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2f106db5ccb60681b622ac768455743ee0e6a857724d648c9629a9bd2ac3f721"}, + {file = "mypy-1.12.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:233e11b3f73ee1f10efada2e6da0f555b2f3a5316e9d8a4a1224acc10e7181d3"}, + {file = "mypy-1.12.0-cp313-cp313-win_amd64.whl", hash = "sha256:4ae8959c21abcf9d73aa6c74a313c45c0b5a188752bf37dace564e29f06e9c1b"}, + {file = "mypy-1.12.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:eafc1b7319b40ddabdc3db8d7d48e76cfc65bbeeafaa525a4e0fa6b76175467f"}, + {file = "mypy-1.12.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9b9ce1ad8daeb049c0b55fdb753d7414260bad8952645367e70ac91aec90e07e"}, + {file = "mypy-1.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bfe012b50e1491d439172c43ccb50db66d23fab714d500b57ed52526a1020bb7"}, + {file = "mypy-1.12.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2c40658d4fa1ab27cb53d9e2f1066345596af2f8fe4827defc398a09c7c9519b"}, + {file = "mypy-1.12.0-cp38-cp38-win_amd64.whl", hash = "sha256:dee78a8b9746c30c1e617ccb1307b351ded57f0de0d287ca6276378d770006c0"}, + {file = "mypy-1.12.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b5df6c8a8224f6b86746bda716bbe4dbe0ce89fd67b1fa4661e11bfe38e8ec8"}, + {file = "mypy-1.12.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5feee5c74eb9749e91b77f60b30771563327329e29218d95bedbe1257e2fe4b0"}, + {file = "mypy-1.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:77278e8c6ffe2abfba6db4125de55f1024de9a323be13d20e4f73b8ed3402bd1"}, + {file = "mypy-1.12.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:dcfb754dea911039ac12434d1950d69a2f05acd4d56f7935ed402be09fad145e"}, + {file = "mypy-1.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:06de0498798527451ffb60f68db0d368bd2bae2bbfb5237eae616d4330cc87aa"}, + {file = "mypy-1.12.0-py3-none-any.whl", hash = "sha256:fd313226af375d52e1e36c383f39bf3836e1f192801116b31b090dfcd3ec5266"}, + {file = "mypy-1.12.0.tar.gz", hash = "sha256:65a22d87e757ccd95cbbf6f7e181e6caa87128255eb2b6be901bb71b26d8a99d"}, +] + +[package.dependencies] +mypy-extensions = ">=1.0.0" +typing-extensions = ">=4.6.0" [package.extras] dmypy = ["psutil (>=4.0)"] install-types = ["pip"] -python2 = ["typed-ast (>=1.4.0,<2)"] +mypyc = ["setuptools (>=50)"] reports = ["lxml"] [[package]] name = "mypy-extensions" -version = "1.0.0" +version = "1.1.0" description = "Type system extensions for programs checked with the mypy type checker." -category = "dev" optional = false -python-versions = ">=3.5" +python-versions = ">=3.8" files = [ - {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, - {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, + {file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505"}, + {file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558"}, ] [[package]] name = "nodeenv" -version = "1.8.0" +version = "1.9.1" description = "Node.js virtual environment builder" -category = "dev" optional = false -python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ - {file = "nodeenv-1.8.0-py2.py3-none-any.whl", hash = "sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec"}, - {file = "nodeenv-1.8.0.tar.gz", hash = "sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2"}, + {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, + {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, ] -[package.dependencies] -setuptools = "*" - [[package]] name = "oauthlib" -version = "3.2.2" +version = "3.3.1" description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "oauthlib-3.2.2-py3-none-any.whl", hash = "sha256:8139f29aac13e25d502680e9e19963e83f16838d48a0d71c287fe40e7067fbca"}, - {file = "oauthlib-3.2.2.tar.gz", hash = "sha256:9859c40929662bec5d64f34d01c99e093149682a3f38915dc0655d5a633dd918"}, + {file = "oauthlib-3.3.1-py3-none-any.whl", hash = "sha256:88119c938d2b8fb88561af5f6ee0eec8cc8d552b7bb1f712743136eb7523b7a1"}, + {file = "oauthlib-3.3.1.tar.gz", hash = "sha256:0f0f8aa759826a193cf66c12ea1af1637f87b9b4622d46e866952bb022e538c9"}, ] [package.extras] @@ -1888,26 +1765,24 @@ signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"] [[package]] name = "packaging" -version = "23.1" +version = "25.0" description = "Core utilities for Python packages" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, - {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, + {file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484"}, + {file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"}, ] [[package]] name = "paramiko" -version = "3.3.1" +version = "3.5.1" description = "SSH2 protocol library" -category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "paramiko-3.3.1-py3-none-any.whl", hash = "sha256:b7bc5340a43de4287bbe22fe6de728aa2c22468b2a849615498dd944c2f275eb"}, - {file = "paramiko-3.3.1.tar.gz", hash = "sha256:6a3777a961ac86dbef375c5f5b8d50014a1a96d0fd7f054a43bc880134b0ff77"}, + {file = "paramiko-3.5.1-py3-none-any.whl", hash = "sha256:43b9a0501fc2b5e70680388d9346cf252cfb7d00b0667c39e80eb43a408b8f61"}, + {file = "paramiko-3.5.1.tar.gz", hash = "sha256:b2c665bc45b2b215bd7d7f039901b14b067da00f3a11e6640995fd58f2664822"}, ] [package.dependencies] @@ -1922,74 +1797,71 @@ invoke = ["invoke (>=2.0)"] [[package]] name = "pathspec" -version = "0.11.2" +version = "0.12.1" description = "Utility library for gitignore style pattern matching of file paths." -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pathspec-0.11.2-py3-none-any.whl", hash = "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20"}, - {file = "pathspec-0.11.2.tar.gz", hash = "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3"}, + {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, + {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, ] [[package]] name = "pathvalidate" -version = "3.2.0" +version = "3.3.1" description = "pathvalidate is a Python library to sanitize/validate a string such as filenames/file-paths/etc." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" files = [ - {file = "pathvalidate-3.2.0-py3-none-any.whl", hash = "sha256:cc593caa6299b22b37f228148257997e2fa850eea2daf7e4cc9205cef6908dee"}, - {file = "pathvalidate-3.2.0.tar.gz", hash = "sha256:5e8378cf6712bff67fbe7a8307d99fa8c1a0cb28aa477056f8fc374f0dff24ad"}, + {file = "pathvalidate-3.3.1-py3-none-any.whl", hash = "sha256:5263baab691f8e1af96092fa5137ee17df5bdfbd6cff1fcac4d6ef4bc2e1735f"}, + {file = "pathvalidate-3.3.1.tar.gz", hash = "sha256:b18c07212bfead624345bb8e1d6141cdcf15a39736994ea0b94035ad2b1ba177"}, ] [package.extras] -docs = ["Sphinx (>=2.4)", "sphinx-rtd-theme (>=1.2.2)", "urllib3 (<2)"] -test = ["Faker (>=1.0.8)", "allpairspy (>=2)", "click (>=6.2)", "pytest (>=6.0.1)", "pytest-discord (>=0.1.4)", "pytest-md-report (>=0.4.1)"] +docs = ["Sphinx (>=2.4)", "sphinx_rtd_theme (>=1.2.2)", "urllib3 (<2)"] +readme = ["path (>=13,<18)", "readmemaker (>=1.2.0)"] +test = ["Faker (>=1.0.8)", "allpairspy (>=2)", "click (>=6.2)", "pytest (>=6.0.1)", "pytest-md-report (>=0.6.2)"] [[package]] name = "platformdirs" -version = "3.10.0" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "main" +version = "4.3.8" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" files = [ - {file = "platformdirs-3.10.0-py3-none-any.whl", hash = "sha256:d7c24979f292f916dc9cbf8648319032f551ea8c49a4c9bf2fb556a02070ec1d"}, - {file = "platformdirs-3.10.0.tar.gz", hash = "sha256:b45696dab2d7cc691a3226759c0d3b00c47c8b6e293d96f6436f733303f77f6d"}, + {file = "platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4"}, + {file = "platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc"}, ] [package.extras] -docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.4)", "pytest-cov (>=6)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.14.1)"] [[package]] name = "pluggy" -version = "1.3.0" +version = "1.6.0" description = "plugin and hook calling mechanisms for python" -category = "dev" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "pluggy-1.3.0-py3-none-any.whl", hash = "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"}, - {file = "pluggy-1.3.0.tar.gz", hash = "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12"}, + {file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746"}, + {file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3"}, ] [package.extras] dev = ["pre-commit", "tox"] -testing = ["pytest", "pytest-benchmark"] +testing = ["coverage", "pytest", "pytest-benchmark"] [[package]] name = "pre-commit" -version = "3.4.0" +version = "4.3.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." -category = "dev" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "pre_commit-3.4.0-py2.py3-none-any.whl", hash = "sha256:96d529a951f8b677f730a7212442027e8ba53f9b04d217c4c67dc56c393ad945"}, - {file = "pre_commit-3.4.0.tar.gz", hash = "sha256:6bbd5129a64cad4c0dfaeeb12cd8f7ea7e15b77028d985341478c8af3c759522"}, + {file = "pre_commit-4.3.0-py2.py3-none-any.whl", hash = "sha256:2b0747ad7e6e967169136edffee14c16e148a778a54e4f967921aa1ebf2308d8"}, + {file = "pre_commit-4.3.0.tar.gz", hash = "sha256:499fe450cc9d42e9d58e606262795ecb64dd05438943c62b66f6a8673da30b16"}, ] [package.dependencies] @@ -2001,145 +1873,174 @@ virtualenv = ">=20.10.0" [[package]] name = "psutil" -version = "5.9.5" -description = "Cross-platform lib for process and system monitoring in Python." -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "psutil-5.9.5-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:be8929ce4313f9f8146caad4272f6abb8bf99fc6cf59344a3167ecd74f4f203f"}, - {file = "psutil-5.9.5-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ab8ed1a1d77c95453db1ae00a3f9c50227ebd955437bcf2a574ba8adbf6a74d5"}, - {file = "psutil-5.9.5-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:4aef137f3345082a3d3232187aeb4ac4ef959ba3d7c10c33dd73763fbc063da4"}, - {file = "psutil-5.9.5-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ea8518d152174e1249c4f2a1c89e3e6065941df2fa13a1ab45327716a23c2b48"}, - {file = "psutil-5.9.5-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:acf2aef9391710afded549ff602b5887d7a2349831ae4c26be7c807c0a39fac4"}, - {file = "psutil-5.9.5-cp27-none-win32.whl", hash = "sha256:5b9b8cb93f507e8dbaf22af6a2fd0ccbe8244bf30b1baad6b3954e935157ae3f"}, - {file = "psutil-5.9.5-cp27-none-win_amd64.whl", hash = "sha256:8c5f7c5a052d1d567db4ddd231a9d27a74e8e4a9c3f44b1032762bd7b9fdcd42"}, - {file = "psutil-5.9.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:3c6f686f4225553615612f6d9bc21f1c0e305f75d7d8454f9b46e901778e7217"}, - {file = "psutil-5.9.5-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7a7dd9997128a0d928ed4fb2c2d57e5102bb6089027939f3b722f3a210f9a8da"}, - {file = "psutil-5.9.5-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89518112647f1276b03ca97b65cc7f64ca587b1eb0278383017c2a0dcc26cbe4"}, - {file = "psutil-5.9.5-cp36-abi3-win32.whl", hash = "sha256:104a5cc0e31baa2bcf67900be36acde157756b9c44017b86b2c049f11957887d"}, - {file = "psutil-5.9.5-cp36-abi3-win_amd64.whl", hash = "sha256:b258c0c1c9d145a1d5ceffab1134441c4c5113b2417fafff7315a917a026c3c9"}, - {file = "psutil-5.9.5-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:c607bb3b57dc779d55e1554846352b4e358c10fff3abf3514a7a6601beebdb30"}, - {file = "psutil-5.9.5.tar.gz", hash = "sha256:5410638e4df39c54d957fc51ce03048acd8e6d60abc0f5107af51e5fb566eb3c"}, +version = "7.0.0" +description = "Cross-platform lib for process and system monitoring in Python. NOTE: the syntax of this script MUST be kept compatible with Python 2.7." +optional = false +python-versions = ">=3.6" +files = [ + {file = "psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25"}, + {file = "psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da"}, + {file = "psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91"}, + {file = "psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1388a4f6875d7e2aff5c4ca1cc16c545ed41dd8bb596cefea80111db353a34"}, + {file = "psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993"}, + {file = "psutil-7.0.0-cp36-cp36m-win32.whl", hash = "sha256:84df4eb63e16849689f76b1ffcb36db7b8de703d1bc1fe41773db487621b6c17"}, + {file = "psutil-7.0.0-cp36-cp36m-win_amd64.whl", hash = "sha256:1e744154a6580bc968a0195fd25e80432d3afec619daf145b9e5ba16cc1d688e"}, + {file = "psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99"}, + {file = "psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553"}, + {file = "psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456"}, ] [package.extras] -test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] +dev = ["abi3audit", "black (==24.10.0)", "check-manifest", "coverage", "packaging", "pylint", "pyperf", "pypinfo", "pytest", "pytest-cov", "pytest-xdist", "requests", "rstcheck", "ruff", "setuptools", "sphinx", "sphinx_rtd_theme", "toml-sort", "twine", "virtualenv", "vulture", "wheel"] +test = ["pytest", "pytest-xdist", "setuptools"] [[package]] name = "psycopg2-binary" -version = "2.9.7" +version = "2.9.10" description = "psycopg2 - Python-PostgreSQL Database Adapter" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "psycopg2-binary-2.9.7.tar.gz", hash = "sha256:1b918f64a51ffe19cd2e230b3240ba481330ce1d4b7875ae67305bd1d37b041c"}, - {file = "psycopg2_binary-2.9.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ea5f8ee87f1eddc818fc04649d952c526db4426d26bab16efbe5a0c52b27d6ab"}, - {file = "psycopg2_binary-2.9.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2993ccb2b7e80844d534e55e0f12534c2871952f78e0da33c35e648bf002bbff"}, - {file = "psycopg2_binary-2.9.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dbbc3c5d15ed76b0d9db7753c0db40899136ecfe97d50cbde918f630c5eb857a"}, - {file = "psycopg2_binary-2.9.7-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:692df8763b71d42eb8343f54091368f6f6c9cfc56dc391858cdb3c3ef1e3e584"}, - {file = "psycopg2_binary-2.9.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9dcfd5d37e027ec393a303cc0a216be564b96c80ba532f3d1e0d2b5e5e4b1e6e"}, - {file = "psycopg2_binary-2.9.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17cc17a70dfb295a240db7f65b6d8153c3d81efb145d76da1e4a096e9c5c0e63"}, - {file = "psycopg2_binary-2.9.7-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e5666632ba2b0d9757b38fc17337d84bdf932d38563c5234f5f8c54fd01349c9"}, - {file = "psycopg2_binary-2.9.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7db7b9b701974c96a88997d458b38ccb110eba8f805d4b4f74944aac48639b42"}, - {file = "psycopg2_binary-2.9.7-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c82986635a16fb1fa15cd5436035c88bc65c3d5ced1cfaac7f357ee9e9deddd4"}, - {file = "psycopg2_binary-2.9.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4fe13712357d802080cfccbf8c6266a3121dc0e27e2144819029095ccf708372"}, - {file = "psycopg2_binary-2.9.7-cp310-cp310-win32.whl", hash = "sha256:122641b7fab18ef76b18860dd0c772290566b6fb30cc08e923ad73d17461dc63"}, - {file = "psycopg2_binary-2.9.7-cp310-cp310-win_amd64.whl", hash = "sha256:f8651cf1f144f9ee0fa7d1a1df61a9184ab72962531ca99f077bbdcba3947c58"}, - {file = "psycopg2_binary-2.9.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4ecc15666f16f97709106d87284c136cdc82647e1c3f8392a672616aed3c7151"}, - {file = "psycopg2_binary-2.9.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3fbb1184c7e9d28d67671992970718c05af5f77fc88e26fd7136613c4ece1f89"}, - {file = "psycopg2_binary-2.9.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a7968fd20bd550431837656872c19575b687f3f6f98120046228e451e4064df"}, - {file = "psycopg2_binary-2.9.7-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:094af2e77a1976efd4956a031028774b827029729725e136514aae3cdf49b87b"}, - {file = "psycopg2_binary-2.9.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:26484e913d472ecb6b45937ea55ce29c57c662066d222fb0fbdc1fab457f18c5"}, - {file = "psycopg2_binary-2.9.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f309b77a7c716e6ed9891b9b42953c3ff7d533dc548c1e33fddc73d2f5e21f9"}, - {file = "psycopg2_binary-2.9.7-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6d92e139ca388ccfe8c04aacc163756e55ba4c623c6ba13d5d1595ed97523e4b"}, - {file = "psycopg2_binary-2.9.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:2df562bb2e4e00ee064779902d721223cfa9f8f58e7e52318c97d139cf7f012d"}, - {file = "psycopg2_binary-2.9.7-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:4eec5d36dbcfc076caab61a2114c12094c0b7027d57e9e4387b634e8ab36fd44"}, - {file = "psycopg2_binary-2.9.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1011eeb0c51e5b9ea1016f0f45fa23aca63966a4c0afcf0340ccabe85a9f65bd"}, - {file = "psycopg2_binary-2.9.7-cp311-cp311-win32.whl", hash = "sha256:ded8e15f7550db9e75c60b3d9fcbc7737fea258a0f10032cdb7edc26c2a671fd"}, - {file = "psycopg2_binary-2.9.7-cp311-cp311-win_amd64.whl", hash = "sha256:8a136c8aaf6615653450817a7abe0fc01e4ea720ae41dfb2823eccae4b9062a3"}, - {file = "psycopg2_binary-2.9.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2dec5a75a3a5d42b120e88e6ed3e3b37b46459202bb8e36cd67591b6e5feebc1"}, - {file = "psycopg2_binary-2.9.7-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc10da7e7df3380426521e8c1ed975d22df678639da2ed0ec3244c3dc2ab54c8"}, - {file = "psycopg2_binary-2.9.7-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee919b676da28f78f91b464fb3e12238bd7474483352a59c8a16c39dfc59f0c5"}, - {file = "psycopg2_binary-2.9.7-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb1c0e682138f9067a58fc3c9a9bf1c83d8e08cfbee380d858e63196466d5c86"}, - {file = "psycopg2_binary-2.9.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00d8db270afb76f48a499f7bb8fa70297e66da67288471ca873db88382850bf4"}, - {file = "psycopg2_binary-2.9.7-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9b0c2b466b2f4d89ccc33784c4ebb1627989bd84a39b79092e560e937a11d4ac"}, - {file = "psycopg2_binary-2.9.7-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:51d1b42d44f4ffb93188f9b39e6d1c82aa758fdb8d9de65e1ddfe7a7d250d7ad"}, - {file = "psycopg2_binary-2.9.7-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:11abdbfc6f7f7dea4a524b5f4117369b0d757725798f1593796be6ece20266cb"}, - {file = "psycopg2_binary-2.9.7-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:f02f4a72cc3ab2565c6d9720f0343cb840fb2dc01a2e9ecb8bc58ccf95dc5c06"}, - {file = "psycopg2_binary-2.9.7-cp37-cp37m-win32.whl", hash = "sha256:81d5dd2dd9ab78d31a451e357315f201d976c131ca7d43870a0e8063b6b7a1ec"}, - {file = "psycopg2_binary-2.9.7-cp37-cp37m-win_amd64.whl", hash = "sha256:62cb6de84d7767164a87ca97e22e5e0a134856ebcb08f21b621c6125baf61f16"}, - {file = "psycopg2_binary-2.9.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:59f7e9109a59dfa31efa022e94a244736ae401526682de504e87bd11ce870c22"}, - {file = "psycopg2_binary-2.9.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:95a7a747bdc3b010bb6a980f053233e7610276d55f3ca506afff4ad7749ab58a"}, - {file = "psycopg2_binary-2.9.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c721ee464e45ecf609ff8c0a555018764974114f671815a0a7152aedb9f3343"}, - {file = "psycopg2_binary-2.9.7-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f4f37bbc6588d402980ffbd1f3338c871368fb4b1cfa091debe13c68bb3852b3"}, - {file = "psycopg2_binary-2.9.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac83ab05e25354dad798401babaa6daa9577462136ba215694865394840e31f8"}, - {file = "psycopg2_binary-2.9.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:024eaeb2a08c9a65cd5f94b31ace1ee3bb3f978cd4d079406aef85169ba01f08"}, - {file = "psycopg2_binary-2.9.7-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1c31c2606ac500dbd26381145684d87730a2fac9a62ebcfbaa2b119f8d6c19f4"}, - {file = "psycopg2_binary-2.9.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:42a62ef0e5abb55bf6ffb050eb2b0fcd767261fa3faf943a4267539168807522"}, - {file = "psycopg2_binary-2.9.7-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:7952807f95c8eba6a8ccb14e00bf170bb700cafcec3924d565235dffc7dc4ae8"}, - {file = "psycopg2_binary-2.9.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e02bc4f2966475a7393bd0f098e1165d470d3fa816264054359ed4f10f6914ea"}, - {file = "psycopg2_binary-2.9.7-cp38-cp38-win32.whl", hash = "sha256:fdca0511458d26cf39b827a663d7d87db6f32b93efc22442a742035728603d5f"}, - {file = "psycopg2_binary-2.9.7-cp38-cp38-win_amd64.whl", hash = "sha256:d0b16e5bb0ab78583f0ed7ab16378a0f8a89a27256bb5560402749dbe8a164d7"}, - {file = "psycopg2_binary-2.9.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6822c9c63308d650db201ba22fe6648bd6786ca6d14fdaf273b17e15608d0852"}, - {file = "psycopg2_binary-2.9.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8f94cb12150d57ea433e3e02aabd072205648e86f1d5a0a692d60242f7809b15"}, - {file = "psycopg2_binary-2.9.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5ee89587696d808c9a00876065d725d4ae606f5f7853b961cdbc348b0f7c9a1"}, - {file = "psycopg2_binary-2.9.7-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad5ec10b53cbb57e9a2e77b67e4e4368df56b54d6b00cc86398578f1c635f329"}, - {file = "psycopg2_binary-2.9.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:642df77484b2dcaf87d4237792246d8068653f9e0f5c025e2c692fc56b0dda70"}, - {file = "psycopg2_binary-2.9.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6a8b575ac45af1eaccbbcdcf710ab984fd50af048fe130672377f78aaff6fc1"}, - {file = "psycopg2_binary-2.9.7-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f955aa50d7d5220fcb6e38f69ea126eafecd812d96aeed5d5f3597f33fad43bb"}, - {file = "psycopg2_binary-2.9.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ad26d4eeaa0d722b25814cce97335ecf1b707630258f14ac4d2ed3d1d8415265"}, - {file = "psycopg2_binary-2.9.7-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:ced63c054bdaf0298f62681d5dcae3afe60cbae332390bfb1acf0e23dcd25fc8"}, - {file = "psycopg2_binary-2.9.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2b04da24cbde33292ad34a40db9832a80ad12de26486ffeda883413c9e1b1d5e"}, - {file = "psycopg2_binary-2.9.7-cp39-cp39-win32.whl", hash = "sha256:18f12632ab516c47c1ac4841a78fddea6508a8284c7cf0f292cb1a523f2e2379"}, - {file = "psycopg2_binary-2.9.7-cp39-cp39-win_amd64.whl", hash = "sha256:eb3b8d55924a6058a26db69fb1d3e7e32695ff8b491835ba9f479537e14dcf9f"}, + {file = "psycopg2-binary-2.9.10.tar.gz", hash = "sha256:4b3df0e6990aa98acda57d983942eff13d824135fe2250e6522edaa782a06de2"}, + {file = "psycopg2_binary-2.9.10-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:0ea8e3d0ae83564f2fc554955d327fa081d065c8ca5cc6d2abb643e2c9c1200f"}, + {file = "psycopg2_binary-2.9.10-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:3e9c76f0ac6f92ecfc79516a8034a544926430f7b080ec5a0537bca389ee0906"}, + {file = "psycopg2_binary-2.9.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ad26b467a405c798aaa1458ba09d7e2b6e5f96b1ce0ac15d82fd9f95dc38a92"}, + {file = "psycopg2_binary-2.9.10-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:270934a475a0e4b6925b5f804e3809dd5f90f8613621d062848dd82f9cd62007"}, + {file = "psycopg2_binary-2.9.10-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:48b338f08d93e7be4ab2b5f1dbe69dc5e9ef07170fe1f86514422076d9c010d0"}, + {file = "psycopg2_binary-2.9.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f4152f8f76d2023aac16285576a9ecd2b11a9895373a1f10fd9db54b3ff06b4"}, + {file = "psycopg2_binary-2.9.10-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:32581b3020c72d7a421009ee1c6bf4a131ef5f0a968fab2e2de0c9d2bb4577f1"}, + {file = "psycopg2_binary-2.9.10-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:2ce3e21dc3437b1d960521eca599d57408a695a0d3c26797ea0f72e834c7ffe5"}, + {file = "psycopg2_binary-2.9.10-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:e984839e75e0b60cfe75e351db53d6db750b00de45644c5d1f7ee5d1f34a1ce5"}, + {file = "psycopg2_binary-2.9.10-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3c4745a90b78e51d9ba06e2088a2fe0c693ae19cc8cb051ccda44e8df8a6eb53"}, + {file = "psycopg2_binary-2.9.10-cp310-cp310-win32.whl", hash = "sha256:e5720a5d25e3b99cd0dc5c8a440570469ff82659bb09431c1439b92caf184d3b"}, + {file = "psycopg2_binary-2.9.10-cp310-cp310-win_amd64.whl", hash = "sha256:3c18f74eb4386bf35e92ab2354a12c17e5eb4d9798e4c0ad3a00783eae7cd9f1"}, + {file = "psycopg2_binary-2.9.10-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:04392983d0bb89a8717772a193cfaac58871321e3ec69514e1c4e0d4957b5aff"}, + {file = "psycopg2_binary-2.9.10-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:1a6784f0ce3fec4edc64e985865c17778514325074adf5ad8f80636cd029ef7c"}, + {file = "psycopg2_binary-2.9.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5f86c56eeb91dc3135b3fd8a95dc7ae14c538a2f3ad77a19645cf55bab1799c"}, + {file = "psycopg2_binary-2.9.10-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b3d2491d4d78b6b14f76881905c7a8a8abcf974aad4a8a0b065273a0ed7a2cb"}, + {file = "psycopg2_binary-2.9.10-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2286791ececda3a723d1910441c793be44625d86d1a4e79942751197f4d30341"}, + {file = "psycopg2_binary-2.9.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:512d29bb12608891e349af6a0cccedce51677725a921c07dba6342beaf576f9a"}, + {file = "psycopg2_binary-2.9.10-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5a507320c58903967ef7384355a4da7ff3f28132d679aeb23572753cbf2ec10b"}, + {file = "psycopg2_binary-2.9.10-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:6d4fa1079cab9018f4d0bd2db307beaa612b0d13ba73b5c6304b9fe2fb441ff7"}, + {file = "psycopg2_binary-2.9.10-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:851485a42dbb0bdc1edcdabdb8557c09c9655dfa2ca0460ff210522e073e319e"}, + {file = "psycopg2_binary-2.9.10-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:35958ec9e46432d9076286dda67942ed6d968b9c3a6a2fd62b48939d1d78bf68"}, + {file = "psycopg2_binary-2.9.10-cp311-cp311-win32.whl", hash = "sha256:ecced182e935529727401b24d76634a357c71c9275b356efafd8a2a91ec07392"}, + {file = "psycopg2_binary-2.9.10-cp311-cp311-win_amd64.whl", hash = "sha256:ee0e8c683a7ff25d23b55b11161c2663d4b099770f6085ff0a20d4505778d6b4"}, + {file = "psycopg2_binary-2.9.10-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:880845dfe1f85d9d5f7c412efea7a08946a46894537e4e5d091732eb1d34d9a0"}, + {file = "psycopg2_binary-2.9.10-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:9440fa522a79356aaa482aa4ba500b65f28e5d0e63b801abf6aa152a29bd842a"}, + {file = "psycopg2_binary-2.9.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3923c1d9870c49a2d44f795df0c889a22380d36ef92440ff618ec315757e539"}, + {file = "psycopg2_binary-2.9.10-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b2c956c028ea5de47ff3a8d6b3cc3330ab45cf0b7c3da35a2d6ff8420896526"}, + {file = "psycopg2_binary-2.9.10-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f758ed67cab30b9a8d2833609513ce4d3bd027641673d4ebc9c067e4d208eec1"}, + {file = "psycopg2_binary-2.9.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cd9b4f2cfab88ed4a9106192de509464b75a906462fb846b936eabe45c2063e"}, + {file = "psycopg2_binary-2.9.10-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dc08420625b5a20b53551c50deae6e231e6371194fa0651dbe0fb206452ae1f"}, + {file = "psycopg2_binary-2.9.10-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:d7cd730dfa7c36dbe8724426bf5612798734bff2d3c3857f36f2733f5bfc7c00"}, + {file = "psycopg2_binary-2.9.10-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:155e69561d54d02b3c3209545fb08938e27889ff5a10c19de8d23eb5a41be8a5"}, + {file = "psycopg2_binary-2.9.10-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c3cc28a6fd5a4a26224007712e79b81dbaee2ffb90ff406256158ec4d7b52b47"}, + {file = "psycopg2_binary-2.9.10-cp312-cp312-win32.whl", hash = "sha256:ec8a77f521a17506a24a5f626cb2aee7850f9b69a0afe704586f63a464f3cd64"}, + {file = "psycopg2_binary-2.9.10-cp312-cp312-win_amd64.whl", hash = "sha256:18c5ee682b9c6dd3696dad6e54cc7ff3a1a9020df6a5c0f861ef8bfd338c3ca0"}, + {file = "psycopg2_binary-2.9.10-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:26540d4a9a4e2b096f1ff9cce51253d0504dca5a85872c7f7be23be5a53eb18d"}, + {file = "psycopg2_binary-2.9.10-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:e217ce4d37667df0bc1c397fdcd8de5e81018ef305aed9415c3b093faaeb10fb"}, + {file = "psycopg2_binary-2.9.10-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:245159e7ab20a71d989da00f280ca57da7641fa2cdcf71749c193cea540a74f7"}, + {file = "psycopg2_binary-2.9.10-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c4ded1a24b20021ebe677b7b08ad10bf09aac197d6943bfe6fec70ac4e4690d"}, + {file = "psycopg2_binary-2.9.10-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3abb691ff9e57d4a93355f60d4f4c1dd2d68326c968e7db17ea96df3c023ef73"}, + {file = "psycopg2_binary-2.9.10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8608c078134f0b3cbd9f89b34bd60a943b23fd33cc5f065e8d5f840061bd0673"}, + {file = "psycopg2_binary-2.9.10-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:230eeae2d71594103cd5b93fd29d1ace6420d0b86f4778739cb1a5a32f607d1f"}, + {file = "psycopg2_binary-2.9.10-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:bb89f0a835bcfc1d42ccd5f41f04870c1b936d8507c6df12b7737febc40f0909"}, + {file = "psycopg2_binary-2.9.10-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f0c2d907a1e102526dd2986df638343388b94c33860ff3bbe1384130828714b1"}, + {file = "psycopg2_binary-2.9.10-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f8157bed2f51db683f31306aa497311b560f2265998122abe1dce6428bd86567"}, + {file = "psycopg2_binary-2.9.10-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:eb09aa7f9cecb45027683bb55aebaaf45a0df8bf6de68801a6afdc7947bb09d4"}, + {file = "psycopg2_binary-2.9.10-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b73d6d7f0ccdad7bc43e6d34273f70d587ef62f824d7261c4ae9b8b1b6af90e8"}, + {file = "psycopg2_binary-2.9.10-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce5ab4bf46a211a8e924d307c1b1fcda82368586a19d0a24f8ae166f5c784864"}, + {file = "psycopg2_binary-2.9.10-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:056470c3dc57904bbf63d6f534988bafc4e970ffd50f6271fc4ee7daad9498a5"}, + {file = "psycopg2_binary-2.9.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73aa0e31fa4bb82578f3a6c74a73c273367727de397a7a0f07bd83cbea696baa"}, + {file = "psycopg2_binary-2.9.10-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:8de718c0e1c4b982a54b41779667242bc630b2197948405b7bd8ce16bcecac92"}, + {file = "psycopg2_binary-2.9.10-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:5c370b1e4975df846b0277b4deba86419ca77dbc25047f535b0bb03d1a544d44"}, + {file = "psycopg2_binary-2.9.10-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:ffe8ed017e4ed70f68b7b371d84b7d4a790368db9203dfc2d222febd3a9c8863"}, + {file = "psycopg2_binary-2.9.10-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:8aecc5e80c63f7459a1a2ab2c64df952051df196294d9f739933a9f6687e86b3"}, + {file = "psycopg2_binary-2.9.10-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:7a813c8bdbaaaab1f078014b9b0b13f5de757e2b5d9be6403639b298a04d218b"}, + {file = "psycopg2_binary-2.9.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d00924255d7fc916ef66e4bf22f354a940c67179ad3fd7067d7a0a9c84d2fbfc"}, + {file = "psycopg2_binary-2.9.10-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7559bce4b505762d737172556a4e6ea8a9998ecac1e39b5233465093e8cee697"}, + {file = "psycopg2_binary-2.9.10-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e8b58f0a96e7a1e341fc894f62c1177a7c83febebb5ff9123b579418fdc8a481"}, + {file = "psycopg2_binary-2.9.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b269105e59ac96aba877c1707c600ae55711d9dcd3fc4b5012e4af68e30c648"}, + {file = "psycopg2_binary-2.9.10-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:79625966e176dc97ddabc142351e0409e28acf4660b88d1cf6adb876d20c490d"}, + {file = "psycopg2_binary-2.9.10-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:8aabf1c1a04584c168984ac678a668094d831f152859d06e055288fa515e4d30"}, + {file = "psycopg2_binary-2.9.10-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:19721ac03892001ee8fdd11507e6a2e01f4e37014def96379411ca99d78aeb2c"}, + {file = "psycopg2_binary-2.9.10-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7f5d859928e635fa3ce3477704acee0f667b3a3d3e4bb109f2b18d4005f38287"}, + {file = "psycopg2_binary-2.9.10-cp39-cp39-win32.whl", hash = "sha256:3216ccf953b3f267691c90c6fe742e45d890d8272326b4a8b20850a03d05b7b8"}, + {file = "psycopg2_binary-2.9.10-cp39-cp39-win_amd64.whl", hash = "sha256:30e34c4e97964805f715206c7b789d54a78b70f3ff19fbe590104b71c45600e5"}, ] [[package]] name = "pyasn1" -version = "0.5.0" +version = "0.6.1" description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)" -category = "main" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +python-versions = ">=3.8" files = [ - {file = "pyasn1-0.5.0-py2.py3-none-any.whl", hash = "sha256:87a2121042a1ac9358cabcaf1d07680ff97ee6404333bacca15f76aa8ad01a57"}, - {file = "pyasn1-0.5.0.tar.gz", hash = "sha256:97b7290ca68e62a832558ec3976f15cbf911bf5d7c7039d8b861c2a0ece69fde"}, + {file = "pyasn1-0.6.1-py3-none-any.whl", hash = "sha256:0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629"}, + {file = "pyasn1-0.6.1.tar.gz", hash = "sha256:6f580d2bdd84365380830acf45550f2511469f673cb4a5ae3857a3170128b034"}, ] [[package]] name = "pyasn1-modules" -version = "0.3.0" +version = "0.4.2" description = "A collection of ASN.1-based protocols modules" -category = "main" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +python-versions = ">=3.8" files = [ - {file = "pyasn1_modules-0.3.0-py2.py3-none-any.whl", hash = "sha256:d3ccd6ed470d9ffbc716be08bd90efbd44d0734bc9303818f7336070984a162d"}, - {file = "pyasn1_modules-0.3.0.tar.gz", hash = "sha256:5bd01446b736eb9d31512a30d46c1ac3395d676c6f3cafa4c03eb54b9925631c"}, + {file = "pyasn1_modules-0.4.2-py3-none-any.whl", hash = "sha256:29253a9207ce32b64c3ac6600edc75368f98473906e8fd1043bd6b5b1de2c14a"}, + {file = "pyasn1_modules-0.4.2.tar.gz", hash = "sha256:677091de870a80aae844b1ca6134f54652fa2c8c5a52aa396440ac3106e941e6"}, ] [package.dependencies] -pyasn1 = ">=0.4.6,<0.6.0" +pyasn1 = ">=0.6.1,<0.7.0" [[package]] name = "pycparser" -version = "2.21" +version = "2.22" description = "C parser in Python" -category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.8" files = [ - {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, - {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, + {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, + {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, ] +[[package]] +name = "pygments" +version = "2.19.2" +description = "Pygments is a syntax highlighting package written in Python." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b"}, + {file = "pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887"}, +] + +[package.extras] +windows-terminal = ["colorama (>=0.4.6)"] + +[[package]] +name = "pyjwt" +version = "2.10.1" +description = "JSON Web Token implementation in Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb"}, + {file = "pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953"}, +] + +[package.extras] +crypto = ["cryptography (>=3.4.0)"] +dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.4.0)", "pre-commit", "pytest (>=6.0.0,<7.0.0)", "sphinx", "sphinx-rtd-theme", "zope.interface"] +docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] +tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] + [[package]] name = "pynacl" version = "1.5.0" description = "Python binding to the Networking and Cryptography (NaCl) library" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2164,180 +2065,177 @@ tests = ["hypothesis (>=3.27.0)", "pytest (>=3.2.1,!=3.3.0)"] [[package]] name = "pyodbc" -version = "4.0.39" -description = "DB API Module for ODBC" -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" -files = [ - {file = "pyodbc-4.0.39-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:74af348dbaee4885998858daf50c8964e767629ecf6c195868b016367b0bb861"}, - {file = "pyodbc-4.0.39-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0f5901b57eaef0761f4cf02bca8e7c63f589fd0fd723a79f6ccf1ea1275372e5"}, - {file = "pyodbc-4.0.39-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e0db69478d00fcd8d0b9bdde8aca0b0eada341fd6ed8c2da84b594b928c84106"}, - {file = "pyodbc-4.0.39-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c5faf2870e9d434c6a85c6adc1cdff55c0e376273baf480f06d9848025405688"}, - {file = "pyodbc-4.0.39-cp310-cp310-win32.whl", hash = "sha256:62bb6d7d0d25dc75d1445e539f946461c9c5a3643ae14676b240f71794ea004f"}, - {file = "pyodbc-4.0.39-cp310-cp310-win_amd64.whl", hash = "sha256:8eb5547282dc73a7784ce7b99584f68687dd85543538ca6f70cffaa6310676e7"}, - {file = "pyodbc-4.0.39-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:530c1ac37ead782803b44fb1934ba4c68ed4a6969f7475cb8bc04ae1da14486e"}, - {file = "pyodbc-4.0.39-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1f7fb65191926308f09ce75ae7ccecf89310232ee50cdea74edf17ee04a9b068"}, - {file = "pyodbc-4.0.39-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ec009180fcd7c8197f45d083e6670623d8dfe198a457ca2a50ebb1bafe4107f"}, - {file = "pyodbc-4.0.39-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:400e911d54980098c6badadecc82385fc0d6a9057db525d63d2652317df43efe"}, - {file = "pyodbc-4.0.39-cp311-cp311-win32.whl", hash = "sha256:f792677b88e1dde12dab46de8647620fc8171742c02780d51744f7b1b2135dbc"}, - {file = "pyodbc-4.0.39-cp311-cp311-win_amd64.whl", hash = "sha256:3d9d70e1635d35ba3aee3df216ec8e35f2824909f43331c0112b17f460a93923"}, - {file = "pyodbc-4.0.39-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:c1a59096f1784d0cda3d0b8f393849f05515c46a10016edb6da1b1960d039800"}, - {file = "pyodbc-4.0.39-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b3467157661615d5c30893efa1069b55c9ffa434097fc3ae3739e740d83d2ec"}, - {file = "pyodbc-4.0.39-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af027a60e84274ea08fad1c75991d37a5f1f6e8bcd30f6bda20db99f0cdfbc7d"}, - {file = "pyodbc-4.0.39-cp36-cp36m-win32.whl", hash = "sha256:64c1de1263281de7b5ce585b0352746ab1a483453017a8589f838a79cbe3d6d9"}, - {file = "pyodbc-4.0.39-cp36-cp36m-win_amd64.whl", hash = "sha256:27d1b3c3159673b44c97c878f9d8056901d45f747ce2e0b4d5d99f0fb6949dc7"}, - {file = "pyodbc-4.0.39-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:efccc11dff6fba684a74ae1030c92ff8b82429d7f00e0a50aa2ac6f56621cd9f"}, - {file = "pyodbc-4.0.39-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea08e9379c08663d7260e2b8a6c451f56d36c17291af735191089f8e29ad9578"}, - {file = "pyodbc-4.0.39-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b36fe804d367d01ad81077fa524a36e667aabc3945e32564c7ef9595b28edfa9"}, - {file = "pyodbc-4.0.39-cp37-cp37m-win32.whl", hash = "sha256:72d364e52f6ca2417881a23834b3a36733c09e0dcd4760f49a6b864218d98d92"}, - {file = "pyodbc-4.0.39-cp37-cp37m-win_amd64.whl", hash = "sha256:39f6c56022c764309aa7552c0eb2c58fbb5902ab5d2010d42b021c0b205aa609"}, - {file = "pyodbc-4.0.39-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ebcb900fcaf19ca2bc38632218c5d48c666fcc19fe38b08cde001917f4581456"}, - {file = "pyodbc-4.0.39-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a3e133621ac2dad22d0870a8521c7e82d4270e24ce02451d64e7eb6a40ad0941"}, - {file = "pyodbc-4.0.39-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05a0912e852ebddaffa8f235b0f3974475021dd8eb604eb46ea67af06efe1239"}, - {file = "pyodbc-4.0.39-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6353044b99c763aeec7ca1760b4340298504d8ee544fdcab3c380a2abec15b78"}, - {file = "pyodbc-4.0.39-cp38-cp38-win32.whl", hash = "sha256:a591a1cf3c251a9c7c1642cfb3774119bf3512f3be56151247238f8a7b22b336"}, - {file = "pyodbc-4.0.39-cp38-cp38-win_amd64.whl", hash = "sha256:8553eaef9f8ec333bbddff6eadf0d322dda34b37f4bab19f0658eb532037840c"}, - {file = "pyodbc-4.0.39-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9253e746c5c94bf61e3e9adb08fb7688d413cb68c06ebb287ec233387534760a"}, - {file = "pyodbc-4.0.39-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a6f4067f46aaa78e77e8a15ade81eb21fb344563d245fb2d9a0aaa553c367cbd"}, - {file = "pyodbc-4.0.39-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdf5a27e6587d1762f7f0e35d6f0309f09019bf3e19ca9177a4b765121f3f106"}, - {file = "pyodbc-4.0.39-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe4ee87b88867867f582dd0c1236cd982508db359a6cbb5e91623ceb6c83e60a"}, - {file = "pyodbc-4.0.39-cp39-cp39-win32.whl", hash = "sha256:42649ed57d09c04aa197bdd4fe0aa9ca319790b7aa86d0b0784cc70e78c426e5"}, - {file = "pyodbc-4.0.39-cp39-cp39-win_amd64.whl", hash = "sha256:305c7d6337e2d4c8350677cc641b343fc0197b7b9bc167815c66b64545c67a53"}, - {file = "pyodbc-4.0.39.tar.gz", hash = "sha256:e528bb70dd6d6299ee429868925df0866e3e919c772b9eff79c8e17920d8f116"}, +version = "5.2.0" +description = "DB API module for ODBC" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyodbc-5.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:eb0850e3e3782f57457feed297e220bb20c3e8fd7550d7a6b6bb96112bd9b6fe"}, + {file = "pyodbc-5.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0dae0fb86078c87acf135dbe5afd3c7d15d52ab0db5965c44159e84058c3e2fb"}, + {file = "pyodbc-5.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6493b9c7506ca964b80ad638d0dc82869df7058255d71f04fdd1405e88bcb36b"}, + {file = "pyodbc-5.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e04de873607fb960e71953c164c83e8e5d9291ce0d69e688e54947b254b04902"}, + {file = "pyodbc-5.2.0-cp310-cp310-win32.whl", hash = "sha256:74135cb10c1dcdbd99fe429c61539c232140e62939fa7c69b0a373cc552e4a08"}, + {file = "pyodbc-5.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:d287121eeaa562b9ab3d4c52fa77c793dfedd127049273eb882a05d3d67a8ce8"}, + {file = "pyodbc-5.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4627779f0a608b51ce2d2fe6d1d395384e65ca36248bf9dbb6d7cf2c8fda1cab"}, + {file = "pyodbc-5.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4d997d3b6551273647825c734158ca8a6f682df269f6b3975f2499c01577ddec"}, + {file = "pyodbc-5.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5102007a8c78dd2fc1c1b6f6147de8cfc020f81013e4b46c33e66aaa7d1bf7b1"}, + {file = "pyodbc-5.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e3cbc7075a46c411b531ada557c4aef13d034060a70077717124cabc1717e2d"}, + {file = "pyodbc-5.2.0-cp311-cp311-win32.whl", hash = "sha256:de1ee7ec2eb326b7be5e2c4ce20d472c5ef1a6eb838d126d1d26779ff5486e49"}, + {file = "pyodbc-5.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:113f904b9852c12f10c7a3288f5a3563ecdbbefe3ccc829074a9eb8255edcd29"}, + {file = "pyodbc-5.2.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:be43d1ece4f2cf4d430996689d89a1a15aeb3a8da8262527e5ced5aee27e89c3"}, + {file = "pyodbc-5.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9f7badd0055221a744d76c11440c0856fd2846ed53b6555cf8f0a8893a3e4b03"}, + {file = "pyodbc-5.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad633c52f4f4e7691daaa2278d6e6ebb2fe4ae7709e610e22c7dd1a1d620cf8b"}, + {file = "pyodbc-5.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97d086a8f7a302b74c9c2e77bedf954a603b19168af900d4d3a97322e773df63"}, + {file = "pyodbc-5.2.0-cp312-cp312-win32.whl", hash = "sha256:0e4412f8e608db2a4be5bcc75f9581f386ed6a427dbcb5eac795049ba6fc205e"}, + {file = "pyodbc-5.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:b1f5686b142759c5b2bdbeaa0692622c2ebb1f10780eb3c174b85f5607fbcf55"}, + {file = "pyodbc-5.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:26844d780045bbc3514d5c2f0d89e7fda7df7db0bd24292eb6902046f5730885"}, + {file = "pyodbc-5.2.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:26d2d8fd53b71204c755abc53b0379df4e23fd9a40faf211e1cb87e8a32470f0"}, + {file = "pyodbc-5.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a27996b6d27e275dfb5fe8a34087ba1cacadfd1439e636874ef675faea5149d9"}, + {file = "pyodbc-5.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eaf42c4bd323b8fd01f1cd900cca2d09232155f9b8f0b9bcd0be66763588ce64"}, + {file = "pyodbc-5.2.0-cp313-cp313-win32.whl", hash = "sha256:207f16b7e9bf09c591616429ebf2b47127e879aad21167ac15158910dc9bbcda"}, + {file = "pyodbc-5.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:96d3127f28c0dacf18da7ae009cd48eac532d3dcc718a334b86a3c65f6a5ef5c"}, + {file = "pyodbc-5.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:770e1ac2e7bdf31439bf1d57a1d34ae37d6151216367e8e3f6cdc275006c8bb0"}, + {file = "pyodbc-5.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4fde753fcea625bfaed36edae34c2fba15bf0b5d0ea27474ee038ef47b684d1d"}, + {file = "pyodbc-5.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d57843b9792994f9e73b91667da6452a4f2d7caaa2499598783eb972c4b6eb93"}, + {file = "pyodbc-5.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1f38adc47d36af392475cd4aaae0f35652fdc9e8364bf155810fe1be591336f"}, + {file = "pyodbc-5.2.0-cp38-cp38-win32.whl", hash = "sha256:dc5342d1d09466f9e76e3979551f9205a01ff0ea78b02d2d889171e8c3c4fb9c"}, + {file = "pyodbc-5.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:2b5323be83fedc79a6d1e1b96e67bdc368c1d3f1562b8f8184b735acdd749ae9"}, + {file = "pyodbc-5.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9e8f4ee2c523bbe85124540ffad62a3b62ae481f012e390ef93e0602b6302e5e"}, + {file = "pyodbc-5.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:057b8ede91b21d9f0ef58210d1ca1aad704e641ca68ac6b02f109d86b61d7402"}, + {file = "pyodbc-5.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f0ecbc7067467df95c9b8bd38fb2682c4a13a3402d77dccaddf1e145cea8cc0"}, + {file = "pyodbc-5.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26b7f8324fa01c09fe4843ad8adb0b131299ef263a1fb9e63830c9cd1d5c45e4"}, + {file = "pyodbc-5.2.0-cp39-cp39-win32.whl", hash = "sha256:600ef6f562f609f5612ffaa8a93827249150aa3030c867937c87b24a1608967e"}, + {file = "pyodbc-5.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:b77556349746fb90416a48bd114cd7323f7e2559a4b263dada935f9b406ba59b"}, + {file = "pyodbc-5.2.0.tar.gz", hash = "sha256:de8be39809c8ddeeee26a4b876a6463529cd487a60d1393eb2a93e9bcd44a8f5"}, ] [[package]] name = "pyopenssl" -version = "23.2.0" +version = "24.2.1" description = "Python wrapper module around the OpenSSL library" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "pyOpenSSL-23.2.0-py3-none-any.whl", hash = "sha256:24f0dc5227396b3e831f4c7f602b950a5e9833d292c8e4a2e06b709292806ae2"}, - {file = "pyOpenSSL-23.2.0.tar.gz", hash = "sha256:276f931f55a452e7dea69c7173e984eb2a4407ce413c918aa34b55f82f9b8bac"}, + {file = "pyOpenSSL-24.2.1-py3-none-any.whl", hash = "sha256:967d5719b12b243588573f39b0c677637145c7a1ffedcd495a487e58177fbb8d"}, + {file = "pyopenssl-24.2.1.tar.gz", hash = "sha256:4247f0dbe3748d560dcbb2ff3ea01af0f9a1a001ef5f7c4c647956ed8cbf0e95"}, ] [package.dependencies] -cryptography = ">=38.0.0,<40.0.0 || >40.0.0,<40.0.1 || >40.0.1,<42" +cryptography = ">=41.0.5,<44" [package.extras] -docs = ["sphinx (!=5.2.0,!=5.2.0.post0)", "sphinx-rtd-theme"] -test = ["flaky", "pretend", "pytest (>=3.0.1)"] +docs = ["sphinx (!=5.2.0,!=5.2.0.post0,!=7.2.5)", "sphinx-rtd-theme"] +test = ["pretend", "pytest (>=3.0.1)", "pytest-rerunfailures"] [[package]] name = "pyproject-api" -version = "1.6.1" +version = "1.9.1" description = "API to interact with the python pyproject.toml based projects" -category = "dev" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "pyproject_api-1.6.1-py3-none-any.whl", hash = "sha256:4c0116d60476b0786c88692cf4e325a9814965e2469c5998b830bba16b183675"}, - {file = "pyproject_api-1.6.1.tar.gz", hash = "sha256:1817dc018adc0d1ff9ca1ed8c60e1623d5aaca40814b953af14a9cf9a5cae538"}, + {file = "pyproject_api-1.9.1-py3-none-any.whl", hash = "sha256:7d6238d92f8962773dd75b5f0c4a6a27cce092a14b623b811dba656f3b628948"}, + {file = "pyproject_api-1.9.1.tar.gz", hash = "sha256:43c9918f49daab37e302038fc1aed54a8c7a91a9fa935d00b9a485f37e0f5335"}, ] [package.dependencies] -packaging = ">=23.1" -tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} +packaging = ">=25" [package.extras] -docs = ["furo (>=2023.8.19)", "sphinx (<7.2)", "sphinx-autodoc-typehints (>=1.24)"] -testing = ["covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)", "setuptools (>=68.1.2)", "wheel (>=0.41.2)"] +docs = ["furo (>=2024.8.6)", "sphinx-autodoc-typehints (>=3.2)"] +testing = ["covdefaults (>=2.3)", "pytest (>=8.3.5)", "pytest-cov (>=6.1.1)", "pytest-mock (>=3.14)", "setuptools (>=80.3.1)"] [[package]] name = "pysaml2" -version = "7.3.1" +version = "7.5.2" description = "Python implementation of SAML Version 2 Standard" -category = "main" optional = false -python-versions = ">=3.6.2,<4.0.0" +python-versions = "<4.0,>=3.9" files = [ - {file = "pysaml2-7.3.1-py3-none-any.whl", hash = "sha256:2cc66e7a371d3f5ff9601f0ed93b5276cca816fce82bb38447d5a0651f2f5193"}, - {file = "pysaml2-7.3.1.tar.gz", hash = "sha256:eab22d187c6dd7707c58b5bb1688f9b8e816427667fc99d77f54399e15cd0a0a"}, + {file = "pysaml2-7.5.2-py3-none-any.whl", hash = "sha256:6f7dc0cc3a72772821ebc92e7ee8df213945f8f9be766c647fb026eba4ca90fe"}, + {file = "pysaml2-7.5.2.tar.gz", hash = "sha256:529fd58107c49a9fd0e98fe545094072262d6533c6acf1124102eab170797de2"}, ] [package.dependencies] cryptography = ">=3.1" defusedxml = "*" -importlib-resources = {version = "*", markers = "python_version < \"3.9\""} -pyopenssl = "*" +pyopenssl = "<24.3.0" python-dateutil = "*" pytz = "*" requests = ">=2,<3" -xmlschema = ">=1.2.1" +xmlschema = ">=2,<3" [package.extras] s2repoze = ["paste", "repoze.who", "zope.interface"] [[package]] -name = "pysmb" -version = "1.2.9.1" -description = "pysmb is an experimental SMB/CIFS library written in Python to support file sharing between Windows and Linux machines" -category = "main" +name = "pyspnego" +version = "0.11.2" +description = "Windows Negotiate Authentication Client and Server" optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "pysmb-1.2.9.1.zip", hash = "sha256:ad613988d54b1317ca0466dc3546f47b2dddea16e645d755d29fb75a86903326"}, + {file = "pyspnego-0.11.2-py3-none-any.whl", hash = "sha256:74abc1fb51e59360eb5c5c9086e5962174f1072c7a50cf6da0bda9a4bcfdfbd4"}, + {file = "pyspnego-0.11.2.tar.gz", hash = "sha256:994388d308fb06e4498365ce78d222bf4f3570b6df4ec95738431f61510c971b"}, ] [package.dependencies] -pyasn1 = "*" -tqdm = "*" +cryptography = "*" +sspilib = {version = ">=0.1.0", markers = "sys_platform == \"win32\""} + +[package.extras] +kerberos = ["gssapi (>=1.6.0)", "krb5 (>=0.3.0)"] +yaml = ["ruamel.yaml"] [[package]] name = "pytest" -version = "7.4.2" +version = "8.4.1" description = "pytest: simple powerful testing with Python" -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" files = [ - {file = "pytest-7.4.2-py3-none-any.whl", hash = "sha256:1d881c6124e08ff0a1bb75ba3ec0bfd8b5354a01c194ddd5a0a870a48d99b002"}, - {file = "pytest-7.4.2.tar.gz", hash = "sha256:a766259cfab564a2ad52cb1aae1b881a75c3eb7e34ca3779697c23ed47c47069"}, + {file = "pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7"}, + {file = "pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c"}, ] [package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} -exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} -iniconfig = "*" -packaging = "*" -pluggy = ">=0.12,<2.0" -tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} +colorama = {version = ">=0.4", markers = "sys_platform == \"win32\""} +iniconfig = ">=1" +packaging = ">=20" +pluggy = ">=1.5,<2" +pygments = ">=2.7.2" [package.extras] -testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests", "setuptools", "xmlschema"] [[package]] name = "pytest-cov" -version = "4.1.0" +version = "6.2.1" description = "Pytest plugin for measuring coverage." -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" files = [ - {file = "pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6"}, - {file = "pytest_cov-4.1.0-py3-none-any.whl", hash = "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a"}, + {file = "pytest_cov-6.2.1-py3-none-any.whl", hash = "sha256:f5bc4c23f42f1cdd23c70b1dab1bbaef4fc505ba950d53e0081d0730dd7e86d5"}, + {file = "pytest_cov-6.2.1.tar.gz", hash = "sha256:25cc6cc0a5358204b8108ecedc51a9b57b34cc6b8c967cc2c01a4e00d8a67da2"}, ] [package.dependencies] -coverage = {version = ">=5.2.1", extras = ["toml"]} -pytest = ">=4.6" +coverage = {version = ">=7.5", extras = ["toml"]} +pluggy = ">=1.2" +pytest = ">=6.2.5" [package.extras] -testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"] +testing = ["fields", "hunter", "process-tests", "pytest-xdist", "virtualenv"] [[package]] name = "python-dateutil" -version = "2.8.2" +version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ - {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, - {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, + {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, + {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, ] [package.dependencies] @@ -2345,25 +2243,23 @@ six = ">=1.5" [[package]] name = "python-gnupg" -version = "0.5.1" +version = "0.5.5" description = "A wrapper for the Gnu Privacy Guard (GPG or GnuPG)" -category = "main" optional = false python-versions = "*" files = [ - {file = "python-gnupg-0.5.1.tar.gz", hash = "sha256:5674bad4e93876c0b0d3197e314d7f942d39018bf31e2b833f6788a6813c3fb8"}, - {file = "python_gnupg-0.5.1-py2.py3-none-any.whl", hash = "sha256:bf9b2d9032ef38139b7d64184176cd0b293eaeae6e4f93f50e304c7051174482"}, + {file = "python-gnupg-0.5.5.tar.gz", hash = "sha256:3fdcaf76f60a1b948ff8e37dc398d03cf9ce7427065d583082b92da7a4ff5a63"}, + {file = "python_gnupg-0.5.5-py2.py3-none-any.whl", hash = "sha256:51fa7b8831ff0914bc73d74c59b99c613de7247b91294323c39733bb85ac3fc1"}, ] [[package]] name = "python-ldap" -version = "3.4.3" +version = "3.4.4" description = "Python modules for implementing LDAP clients" -category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "python-ldap-3.4.3.tar.gz", hash = "sha256:ab26c519a0ef2a443a2a10391fa3c5cb52d7871323399db949ebfaa9f25ee2a0"}, + {file = "python-ldap-3.4.4.tar.gz", hash = "sha256:7edb0accec4e037797705f3a05cbf36a9fde50d08c8f67f2aef99a2628fab828"}, ] [package.dependencies] @@ -2372,15 +2268,14 @@ pyasn1_modules = ">=0.1.5" [[package]] name = "python3-saml" -version = "1.15.0" +version = "1.16.0" description = "Saml Python Toolkit. Add SAML support to your Python software using this library" -category = "main" optional = false python-versions = "*" files = [ - {file = "python3-saml-1.15.0.tar.gz", hash = "sha256:8c68b31739471faffb93dcdfe3bcab375b9d6a0459cab7fa9cb0d7d874ecf0b0"}, - {file = "python3_saml-1.15.0-py2-none-any.whl", hash = "sha256:3a76a17c6a2384313c5cdb450ea8b2e6d098f30836ee3dddbfe8e870903971d2"}, - {file = "python3_saml-1.15.0-py3-none-any.whl", hash = "sha256:cc0458351ddaa08270ebe29ffaf9e1a41dbd285ba43a176cbd70907af5944c66"}, + {file = "python3-saml-1.16.0.tar.gz", hash = "sha256:97c9669aecabc283c6e5fb4eb264f446b6e006f5267d01c9734f9d8bffdac133"}, + {file = "python3_saml-1.16.0-py2-none-any.whl", hash = "sha256:c49097863c278ff669a337a96c46dc1f25d16307b4bb2679d2d1733cc4f5176a"}, + {file = "python3_saml-1.16.0-py3-none-any.whl", hash = "sha256:20b97d11b04f01ee22e98f4a38242e2fea2e28fbc7fbc9bdd57cab5ac7fc2d0d"}, ] [package.dependencies] @@ -2393,21 +2288,19 @@ test = ["coverage (>=4.5.2)", "flake8 (>=3.6.0,<=5.0.0)", "freezegun (>=0.3.11,< [[package]] name = "pytz" -version = "2022.7.1" +version = "2025.2" description = "World timezone definitions, modern and historical" -category = "main" optional = false python-versions = "*" files = [ - {file = "pytz-2022.7.1-py2.py3-none-any.whl", hash = "sha256:78f4f37d8198e0627c5f1143240bb0206b8691d8d7ac6d78fee88b78733f8c4a"}, - {file = "pytz-2022.7.1.tar.gz", hash = "sha256:01a0681c4b9684a28304615eba55d1ab31ae00bf68ec157ec3708a8182dbbcd0"}, + {file = "pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00"}, + {file = "pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3"}, ] [[package]] name = "pytz-deprecation-shim" version = "0.1.0.post0" description = "Shims to make deprecation of pytz easier" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ @@ -2416,74 +2309,74 @@ files = [ ] [package.dependencies] -"backports.zoneinfo" = {version = "*", markers = "python_version >= \"3.6\" and python_version < \"3.9\""} tzdata = {version = "*", markers = "python_version >= \"3.6\""} [[package]] name = "pyyaml" -version = "6.0.1" +version = "6.0.2" description = "YAML parser and emitter for Python" -category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, - {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, - {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, - {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, - {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, - {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, - {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, - {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, - {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, - {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, - {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, - {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, - {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, - {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, - {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, - {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, - {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, - {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, - {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, - {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, - {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, - {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, - {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, - {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, - {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, - {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, - {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, - {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, - {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, + {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, + {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, + {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, + {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, + {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, + {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, + {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, + {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, + {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, + {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, + {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, + {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, + {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, + {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, + {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, ] [[package]] name = "radon" version = "6.0.1" description = "Code Metrics in Python" -category = "dev" optional = false python-versions = "*" files = [ @@ -2500,159 +2393,197 @@ toml = ["tomli (>=2.0.1)"] [[package]] name = "rcssmin" -version = "1.1.1" +version = "1.2.1" description = "CSS Minifier" -category = "main" optional = false python-versions = "*" files = [ - {file = "rcssmin-1.1.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:d4e263fa9428704fd94c2cb565c7519ca1d225217943f71caffe6741ab5b9df1"}, - {file = "rcssmin-1.1.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:c7278c1c25bb90d8e554df92cfb3b6a1195004ead50f764653d3093933ee0877"}, - {file = "rcssmin-1.1.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:f15673e97f0a68b4c378c4d15b088fe96d60bc106d278c88829923118833c20f"}, - {file = "rcssmin-1.1.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:d0afc6e7b64ef30d6dcde88830ec1a237b9f16a39f920a8fd159928684ccf8db"}, - {file = "rcssmin-1.1.1-cp310-cp310-manylinux1_i686.whl", hash = "sha256:705c9112d0ed54ea40aecf97e7fd29bdf0f1c46d278a32d8f957f31dde90778a"}, - {file = "rcssmin-1.1.1-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:f7a1fcdbafaacac0530da04edca4a44303baab430ea42e7d59aece4b3f3e9a51"}, - {file = "rcssmin-1.1.1-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:cf74d7ea5e191f0f344b354eed8b7c83eeafbd9a97bec3a579c3d26edf11b005"}, - {file = "rcssmin-1.1.1-cp311-cp311-manylinux1_i686.whl", hash = "sha256:908fe072efd2432fb0975a61124609a8e05021367f6a3463d45f5e3e74c4fdda"}, - {file = "rcssmin-1.1.1-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:35da6a6999e9e2c5b0e691b42ed56cc479373e0ecab33ef5277dfecce625e44a"}, - {file = "rcssmin-1.1.1-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:e923c105100ab70abde1c01d3196ddd6b07255e32073685542be4e3a60870c8e"}, - {file = "rcssmin-1.1.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:868215e1fd0e92a6122e0ed5973dfc7bb8330fe1e92274d05b2585253b38c0ca"}, - {file = "rcssmin-1.1.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:c7728e3b546b1b6ea08cab721e8e21409dbcc11b881d0b87d10b0be8930af2a2"}, - {file = "rcssmin-1.1.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:271e3d2f8614a6d4637ed8fff3d90007f03e2a654cd9444f37d888797662ba72"}, - {file = "rcssmin-1.1.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:42576d95dfad53d77df2e68dfdec95b89b10fad320f241f1af3ca1438578254a"}, - {file = "rcssmin-1.1.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:79421230dd67c37ec61ed9892813d2b839b68f2f48ef55c75f976e81701d60b4"}, - {file = "rcssmin-1.1.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:8fcfd10ae2a1c4ce231a33013f2539e07c3836bf17cc945cc25cc30bf8e68e45"}, - {file = "rcssmin-1.1.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:c30f8bc839747b6da59274e0c6e4361915d66532e26448d589cb2b1846d7bf11"}, - {file = "rcssmin-1.1.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:ee386bec6d62f8c814d65c011d604a7c82d24aa3f718facd66e850eea8d6a5a1"}, - {file = "rcssmin-1.1.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:8a26fec3c1e6b7a3765ccbaccc20fbb5c0ed3422cc381e01a2607f08d7621c44"}, - {file = "rcssmin-1.1.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:a04d58a2a21e9a089306d3f99c4b12bf5b656a79c198ef2321e80f8fd9afab06"}, - {file = "rcssmin-1.1.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:914e589f40573035006913861ed2adc28fbe70082a8b6bff5be7ee430b7b5c2e"}, - {file = "rcssmin-1.1.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:a417735d4023d47d048a6288c88dbceadd20abaaf65a11bb4fda1e8458057019"}, - {file = "rcssmin-1.1.1.tar.gz", hash = "sha256:4f9400b4366d29f5f5446f58e78549afa8338e6a59740c73115e9f6ac413dc64"}, + {file = "rcssmin-1.2.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:df821901ff16c25e8275f6c61a47f0f94e5e8c93ebd94921a3df9131e8b90928"}, + {file = "rcssmin-1.2.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:7f2338d58130f9a0635f09c3d1c3d2ec7655850361315665e6fed801e661da2f"}, + {file = "rcssmin-1.2.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:f279bdb2ec38cee375bb8b335ee0d018906b7a94d9245fff3c8faef853290f15"}, + {file = "rcssmin-1.2.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:cee31d3567db4c742197b5e59ed53f9478a3e97378b51799fd0ac26636224d73"}, + {file = "rcssmin-1.2.1-cp310-cp310-manylinux1_i686.whl", hash = "sha256:5f60daa642dac666d87c9fd5826d30da58ac921399c6fac2e1307767d7b65151"}, + {file = "rcssmin-1.2.1-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:ceaa956c4dba37f10cdb1b6ca76ed4ff02a7ff414a394e2b9375b476256b14e0"}, + {file = "rcssmin-1.2.1-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:2017d1a8ef6577d662c66eea6cd1fc021d32eb635ed358e687a4b795a0244f00"}, + {file = "rcssmin-1.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:cba2898fdc99b74ad1fc0fd7ad6c42af68a6ccecf4b9aa023a80a515b60f468a"}, + {file = "rcssmin-1.2.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c67476c72bc96fdbdb0bee995f7ec19589bb24bc4103bbc94dacb5203075de33"}, + {file = "rcssmin-1.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:334add21328c05cb1590c62ed98ae9a512fb62f918045aa93ddf57d042ab4821"}, + {file = "rcssmin-1.2.1-cp311-cp311-manylinux1_i686.whl", hash = "sha256:e0cdc0859658e17086c9f8c0bf5846afa3ca7f899f4b83ece5843af40c675384"}, + {file = "rcssmin-1.2.1-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:84cc7eba7fe8214c0f5b5ddd57f81bf33e5edae81dadba6a214fc2a79e61dde7"}, + {file = "rcssmin-1.2.1-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:e28e6c740bbdf4c7d649b1eee4a5485091ab64eec2d81e336b25443d61b1a9da"}, + {file = "rcssmin-1.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ddbd856c1b8a46341b7478f3d4c6cedf1c20b26f99f18bd7ee128850546831d0"}, + {file = "rcssmin-1.2.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:8d21eba23c3012cbc5a6eb3af33c331809e854011c5ae3e447a9f5e5b1670675"}, + {file = "rcssmin-1.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b847e372364fb5321670c834af504c34274c87b919924782000bf11aaeebc4ee"}, + {file = "rcssmin-1.2.1-cp312-cp312-manylinux1_i686.whl", hash = "sha256:908458ec1106162173506f9a4e77a3ffc46a9bb8a08445e44aa6360889ff9777"}, + {file = "rcssmin-1.2.1-cp312-cp312-manylinux1_x86_64.whl", hash = "sha256:1209c690e5c1ab781816078d3d7e4dfc8dc024a65c60327441b8d4296d8d750c"}, + {file = "rcssmin-1.2.1-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:9d89acb97605cef0c6f36b2bf2fe942abbfce8a809171258bff6d2f5064fcff0"}, + {file = "rcssmin-1.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:496c17bb565a0e315406d75540f7f464d8c6fce9b584c5aac44511dcbcb7d304"}, + {file = "rcssmin-1.2.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:a6f320933e7a5748349328e5bac83a373a17be661d435d3fee179d602e2e1039"}, + {file = "rcssmin-1.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b7cc33eba8b212b88b9fdcab6ff81bedd155b51adabd707376e7e6ff3be889e7"}, + {file = "rcssmin-1.2.1-cp313-cp313-manylinux1_i686.whl", hash = "sha256:3cbe222f43d859cbd3751591e4d2fbd0bee1f953e3122a619a7f1aa9809cc5be"}, + {file = "rcssmin-1.2.1-cp313-cp313-manylinux1_x86_64.whl", hash = "sha256:6e7e7f016fba8b9eaff882fa70c715276328477ec8aa603c4aec71d7cf632eb2"}, + {file = "rcssmin-1.2.1-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:1b9f827c6327bbcede7d5bbb24ca5d603ef573cfd1a68ac12a946f223df4cd8a"}, + {file = "rcssmin-1.2.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:b5f922aaf17ed61a7fa3861ba6148d9922af137cf0a5573dcd640d3bf2c95713"}, + {file = "rcssmin-1.2.1-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:9fb7b8e7ed5a18bc4ca411ca2ee63216a87cdeefe15b209cc3f39ad17f1ece33"}, + {file = "rcssmin-1.2.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:d1765069ba678d462d66540caa4fd7a91931a616c62aea703f364722dd93305c"}, + {file = "rcssmin-1.2.1-cp313-cp313t-manylinux1_i686.whl", hash = "sha256:f4be9bda3484518cb47335180ece7b1f9528e8b6a81c9e84837e7690557eacff"}, + {file = "rcssmin-1.2.1-cp313-cp313t-manylinux1_x86_64.whl", hash = "sha256:f453e7d02ecd94d41912b01f4d4e1ce2e8d8aef8566e653445e041bde7ccb962"}, + {file = "rcssmin-1.2.1-cp313-cp313t-manylinux2014_aarch64.whl", hash = "sha256:bbb16cf8c6dbb8c925b98806996e9eddd9373bd5560978021d42876bd58f87cf"}, + {file = "rcssmin-1.2.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:daf17953c4ed491f431b49a6177b5b85149cee2155e0d96306000f8a641b0547"}, + {file = "rcssmin-1.2.1-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:760d4710a0565fc35aaf7928fb82235d647164be4a39ab7836a51655595b7168"}, + {file = "rcssmin-1.2.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:7f4b31f89133695e315b290699823f616359f0ff5fe19f911b56e8e3c6a1a27e"}, + {file = "rcssmin-1.2.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:6ce99c96e4aeb09175f5b4891d980b822eb2679df78ca618f9616660094e424e"}, + {file = "rcssmin-1.2.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:4b1707efea4cc2a72eb5183552de4d851fc7b6549232ce92175f89c11b837429"}, + {file = "rcssmin-1.2.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:7444697216711e83df333aa6e529986e0644487e4309cbcdfff9917afee53dac"}, + {file = "rcssmin-1.2.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:67162c1a8b950f9ff63403abe367b959660c1c2eb3ac0433cbaee6c4f02a1b06"}, + {file = "rcssmin-1.2.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1104aa69319c7fef1bc991ff08338781f2124fdf5d2b5dda9ce50fa50c1a94e5"}, + {file = "rcssmin-1.2.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:4fa8474bca197ec752cc5f3fab4b6969a60c6a2fe1e55a285a4d530f7bbcc860"}, + {file = "rcssmin-1.2.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:e3d1f656e7f9a1692f7611c12ccaad505d6e5d75eb8fe078d6f6ae3465adad6b"}, + {file = "rcssmin-1.2.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:d7e2bf2110f65664e8b004322c934e84839ad43fbb94bda231087b64e83114f6"}, + {file = "rcssmin-1.2.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:abec1a2ecc03b6379ad7c490ecda087cfb50910de433c33bc488f98093981ce3"}, + {file = "rcssmin-1.2.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9c00fd706cc16485c3d315d696a030e5ced6ad7ec6dd00c1fb1d13a7ee481d7e"}, + {file = "rcssmin-1.2.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:5337150607bef63c9bf2220da68adad6c9645bccf04b12dff1e254933fc86b77"}, + {file = "rcssmin-1.2.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:fe2f1c75ad38518b067e34cfbc38188fec0642df8e726d93c604a8cf3afc74d4"}, + {file = "rcssmin-1.2.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:4fd765c6ca4b771da65b72878fbe370e7f96355b8914d229bdcec081f1260e3c"}, + {file = "rcssmin-1.2.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:e9a5f42fe064bab0b63edfe7c797dd51642934c98fa44d965a4ccd5b43c03e0a"}, + {file = "rcssmin-1.2.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:43fb6e4ff06062cdc8fe8ee28e8c8488543f265f8683ee98499779e2c8429099"}, + {file = "rcssmin-1.2.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:dc1767ad4e1c2f9c76ab35486dcd3901de90de27214a2b53e7401e9c674fd70c"}, + {file = "rcssmin-1.2.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3263a2fba08e21351bdda0e8803faf5fd42a887eddcb9931e26ad5ffb251ad07"}, + {file = "rcssmin-1.2.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9ab356d1eb9ba83e7c340f3c70e2ac6a439ce3adbe13ef0c4923bb04a6a92d55"}, + {file = "rcssmin-1.2.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:e525ea49ba4ed33eee94251ef432dde4ccda53a061ee6300c144a06851888408"}, + {file = "rcssmin-1.2.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:b59cee505a4e77e34a033368b008e4ead6b1fd457fb15c106b6e2a434a61c001"}, + {file = "rcssmin-1.2.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:9a2cdcd5502482a798198fb3f8ca4ccd877e011c7102c0f92b47e1e42b97295a"}, + {file = "rcssmin-1.2.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2f0ffdfef0d0a976514d3f6c49a350e6b6091d847efc312bd6c63249d120e46d"}, + {file = "rcssmin-1.2.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:8391ed68fdf1bc6f2093d0b7b48d747815279d84c004a76be078b486223583f7"}, + {file = "rcssmin-1.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:78eab04e9a3efdd158fa7c8363afbbc1d0587453a5a3ed5c9828e1ddeb2aeea7"}, + {file = "rcssmin-1.2.1.tar.gz", hash = "sha256:b35c0c89cdac8fc356c2b0985f3e534e85cc18d1971d902d1eac7fe6b4ff566c"}, ] [[package]] name = "redis" -version = "5.0.0" +version = "5.3.1" description = "Python client for Redis database and key-value store" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "redis-5.0.0-py3-none-any.whl", hash = "sha256:06570d0b2d84d46c21defc550afbaada381af82f5b83e5b3777600e05d8e2ed0"}, - {file = "redis-5.0.0.tar.gz", hash = "sha256:5cea6c0d335c9a7332a460ed8729ceabb4d0c489c7285b0a86dbbf8a017bd120"}, + {file = "redis-5.3.1-py3-none-any.whl", hash = "sha256:dc1909bd24669cc31b5f67a039700b16ec30571096c5f1f0d9d2324bff31af97"}, + {file = "redis-5.3.1.tar.gz", hash = "sha256:ca49577a531ea64039b5a36db3d6cd1a0c7a60c34124d46924a45b956e8cf14c"}, ] [package.dependencies] -async-timeout = {version = ">=4.0.2", markers = "python_full_version <= \"3.11.2\""} +PyJWT = ">=2.9.0" [package.extras] -hiredis = ["hiredis (>=1.0.0)"] -ocsp = ["cryptography (>=36.0.1)", "pyopenssl (==20.0.1)", "requests (>=2.26.0)"] +hiredis = ["hiredis (>=3.0.0)"] +ocsp = ["cryptography (>=36.0.1)", "pyopenssl (==23.2.1)", "requests (>=2.31.0)"] [[package]] name = "regex" -version = "2023.8.8" +version = "2024.11.6" description = "Alternative regular expression module, to replace re." -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "regex-2023.8.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:88900f521c645f784260a8d346e12a1590f79e96403971241e64c3a265c8ecdb"}, - {file = "regex-2023.8.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3611576aff55918af2697410ff0293d6071b7e00f4b09e005d614686ac4cd57c"}, - {file = "regex-2023.8.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8a0ccc8f2698f120e9e5742f4b38dc944c38744d4bdfc427616f3a163dd9de5"}, - {file = "regex-2023.8.8-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c662a4cbdd6280ee56f841f14620787215a171c4e2d1744c9528bed8f5816c96"}, - {file = "regex-2023.8.8-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cf0633e4a1b667bfe0bb10b5e53fe0d5f34a6243ea2530eb342491f1adf4f739"}, - {file = "regex-2023.8.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:551ad543fa19e94943c5b2cebc54c73353ffff08228ee5f3376bd27b3d5b9800"}, - {file = "regex-2023.8.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54de2619f5ea58474f2ac211ceea6b615af2d7e4306220d4f3fe690c91988a61"}, - {file = "regex-2023.8.8-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5ec4b3f0aebbbe2fc0134ee30a791af522a92ad9f164858805a77442d7d18570"}, - {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3ae646c35cb9f820491760ac62c25b6d6b496757fda2d51be429e0e7b67ae0ab"}, - {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ca339088839582d01654e6f83a637a4b8194d0960477b9769d2ff2cfa0fa36d2"}, - {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:d9b6627408021452dcd0d2cdf8da0534e19d93d070bfa8b6b4176f99711e7f90"}, - {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:bd3366aceedf274f765a3a4bc95d6cd97b130d1dda524d8f25225d14123c01db"}, - {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7aed90a72fc3654fba9bc4b7f851571dcc368120432ad68b226bd593f3f6c0b7"}, - {file = "regex-2023.8.8-cp310-cp310-win32.whl", hash = "sha256:80b80b889cb767cc47f31d2b2f3dec2db8126fbcd0cff31b3925b4dc6609dcdb"}, - {file = "regex-2023.8.8-cp310-cp310-win_amd64.whl", hash = "sha256:b82edc98d107cbc7357da7a5a695901b47d6eb0420e587256ba3ad24b80b7d0b"}, - {file = "regex-2023.8.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1e7d84d64c84ad97bf06f3c8cb5e48941f135ace28f450d86af6b6512f1c9a71"}, - {file = "regex-2023.8.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ce0f9fbe7d295f9922c0424a3637b88c6c472b75eafeaff6f910494a1fa719ef"}, - {file = "regex-2023.8.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06c57e14ac723b04458df5956cfb7e2d9caa6e9d353c0b4c7d5d54fcb1325c46"}, - {file = "regex-2023.8.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e7a9aaa5a1267125eef22cef3b63484c3241aaec6f48949b366d26c7250e0357"}, - {file = "regex-2023.8.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b7408511fca48a82a119d78a77c2f5eb1b22fe88b0d2450ed0756d194fe7a9a"}, - {file = "regex-2023.8.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14dc6f2d88192a67d708341f3085df6a4f5a0c7b03dec08d763ca2cd86e9f559"}, - {file = "regex-2023.8.8-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:48c640b99213643d141550326f34f0502fedb1798adb3c9eb79650b1ecb2f177"}, - {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0085da0f6c6393428bf0d9c08d8b1874d805bb55e17cb1dfa5ddb7cfb11140bf"}, - {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:964b16dcc10c79a4a2be9f1273fcc2684a9eedb3906439720598029a797b46e6"}, - {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7ce606c14bb195b0e5108544b540e2c5faed6843367e4ab3deb5c6aa5e681208"}, - {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:40f029d73b10fac448c73d6eb33d57b34607f40116e9f6e9f0d32e9229b147d7"}, - {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3b8e6ea6be6d64104d8e9afc34c151926f8182f84e7ac290a93925c0db004bfd"}, - {file = "regex-2023.8.8-cp311-cp311-win32.whl", hash = "sha256:942f8b1f3b223638b02df7df79140646c03938d488fbfb771824f3d05fc083a8"}, - {file = "regex-2023.8.8-cp311-cp311-win_amd64.whl", hash = "sha256:51d8ea2a3a1a8fe4f67de21b8b93757005213e8ac3917567872f2865185fa7fb"}, - {file = "regex-2023.8.8-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e951d1a8e9963ea51efd7f150450803e3b95db5939f994ad3d5edac2b6f6e2b4"}, - {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:704f63b774218207b8ccc6c47fcef5340741e5d839d11d606f70af93ee78e4d4"}, - {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:22283c769a7b01c8ac355d5be0715bf6929b6267619505e289f792b01304d898"}, - {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:91129ff1bb0619bc1f4ad19485718cc623a2dc433dff95baadbf89405c7f6b57"}, - {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de35342190deb7b866ad6ba5cbcccb2d22c0487ee0cbb251efef0843d705f0d4"}, - {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b993b6f524d1e274a5062488a43e3f9f8764ee9745ccd8e8193df743dbe5ee61"}, - {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3026cbcf11d79095a32d9a13bbc572a458727bd5b1ca332df4a79faecd45281c"}, - {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:293352710172239bf579c90a9864d0df57340b6fd21272345222fb6371bf82b3"}, - {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:d909b5a3fff619dc7e48b6b1bedc2f30ec43033ba7af32f936c10839e81b9217"}, - {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:3d370ff652323c5307d9c8e4c62efd1956fb08051b0e9210212bc51168b4ff56"}, - {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:b076da1ed19dc37788f6a934c60adf97bd02c7eea461b73730513921a85d4235"}, - {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:e9941a4ada58f6218694f382e43fdd256e97615db9da135e77359da257a7168b"}, - {file = "regex-2023.8.8-cp36-cp36m-win32.whl", hash = "sha256:a8c65c17aed7e15a0c824cdc63a6b104dfc530f6fa8cb6ac51c437af52b481c7"}, - {file = "regex-2023.8.8-cp36-cp36m-win_amd64.whl", hash = "sha256:aadf28046e77a72f30dcc1ab185639e8de7f4104b8cb5c6dfa5d8ed860e57236"}, - {file = "regex-2023.8.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:423adfa872b4908843ac3e7a30f957f5d5282944b81ca0a3b8a7ccbbfaa06103"}, - {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ae594c66f4a7e1ea67232a0846649a7c94c188d6c071ac0210c3e86a5f92109"}, - {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e51c80c168074faa793685656c38eb7a06cbad7774c8cbc3ea05552d615393d8"}, - {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:09b7f4c66aa9d1522b06e31a54f15581c37286237208df1345108fcf4e050c18"}, - {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e73e5243af12d9cd6a9d6a45a43570dbe2e5b1cdfc862f5ae2b031e44dd95a8"}, - {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:941460db8fe3bd613db52f05259c9336f5a47ccae7d7def44cc277184030a116"}, - {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f0ccf3e01afeb412a1a9993049cb160d0352dba635bbca7762b2dc722aa5742a"}, - {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:2e9216e0d2cdce7dbc9be48cb3eacb962740a09b011a116fd7af8c832ab116ca"}, - {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:5cd9cd7170459b9223c5e592ac036e0704bee765706445c353d96f2890e816c8"}, - {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:4873ef92e03a4309b3ccd8281454801b291b689f6ad45ef8c3658b6fa761d7ac"}, - {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:239c3c2a339d3b3ddd51c2daef10874410917cd2b998f043c13e2084cb191684"}, - {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:1005c60ed7037be0d9dea1f9c53cc42f836188227366370867222bda4c3c6bd7"}, - {file = "regex-2023.8.8-cp37-cp37m-win32.whl", hash = "sha256:e6bd1e9b95bc5614a7a9c9c44fde9539cba1c823b43a9f7bc11266446dd568e3"}, - {file = "regex-2023.8.8-cp37-cp37m-win_amd64.whl", hash = "sha256:9a96edd79661e93327cfeac4edec72a4046e14550a1d22aa0dd2e3ca52aec921"}, - {file = "regex-2023.8.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f2181c20ef18747d5f4a7ea513e09ea03bdd50884a11ce46066bb90fe4213675"}, - {file = "regex-2023.8.8-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a2ad5add903eb7cdde2b7c64aaca405f3957ab34f16594d2b78d53b8b1a6a7d6"}, - {file = "regex-2023.8.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9233ac249b354c54146e392e8a451e465dd2d967fc773690811d3a8c240ac601"}, - {file = "regex-2023.8.8-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:920974009fb37b20d32afcdf0227a2e707eb83fe418713f7a8b7de038b870d0b"}, - {file = "regex-2023.8.8-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd2b6c5dfe0929b6c23dde9624483380b170b6e34ed79054ad131b20203a1a63"}, - {file = "regex-2023.8.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96979d753b1dc3b2169003e1854dc67bfc86edf93c01e84757927f810b8c3c93"}, - {file = "regex-2023.8.8-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2ae54a338191e1356253e7883d9d19f8679b6143703086245fb14d1f20196be9"}, - {file = "regex-2023.8.8-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2162ae2eb8b079622176a81b65d486ba50b888271302190870b8cc488587d280"}, - {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c884d1a59e69e03b93cf0dfee8794c63d7de0ee8f7ffb76e5f75be8131b6400a"}, - {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:cf9273e96f3ee2ac89ffcb17627a78f78e7516b08f94dc435844ae72576a276e"}, - {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:83215147121e15d5f3a45d99abeed9cf1fe16869d5c233b08c56cdf75f43a504"}, - {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:3f7454aa427b8ab9101f3787eb178057c5250478e39b99540cfc2b889c7d0586"}, - {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f0640913d2c1044d97e30d7c41728195fc37e54d190c5385eacb52115127b882"}, - {file = "regex-2023.8.8-cp38-cp38-win32.whl", hash = "sha256:0c59122ceccb905a941fb23b087b8eafc5290bf983ebcb14d2301febcbe199c7"}, - {file = "regex-2023.8.8-cp38-cp38-win_amd64.whl", hash = "sha256:c12f6f67495ea05c3d542d119d270007090bad5b843f642d418eb601ec0fa7be"}, - {file = "regex-2023.8.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:82cd0a69cd28f6cc3789cc6adeb1027f79526b1ab50b1f6062bbc3a0ccb2dbc3"}, - {file = "regex-2023.8.8-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:bb34d1605f96a245fc39790a117ac1bac8de84ab7691637b26ab2c5efb8f228c"}, - {file = "regex-2023.8.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:987b9ac04d0b38ef4f89fbc035e84a7efad9cdd5f1e29024f9289182c8d99e09"}, - {file = "regex-2023.8.8-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9dd6082f4e2aec9b6a0927202c85bc1b09dcab113f97265127c1dc20e2e32495"}, - {file = "regex-2023.8.8-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7eb95fe8222932c10d4436e7a6f7c99991e3fdd9f36c949eff16a69246dee2dc"}, - {file = "regex-2023.8.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7098c524ba9f20717a56a8d551d2ed491ea89cbf37e540759ed3b776a4f8d6eb"}, - {file = "regex-2023.8.8-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b694430b3f00eb02c594ff5a16db30e054c1b9589a043fe9174584c6efa8033"}, - {file = "regex-2023.8.8-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b2aeab3895d778155054abea5238d0eb9a72e9242bd4b43f42fd911ef9a13470"}, - {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:988631b9d78b546e284478c2ec15c8a85960e262e247b35ca5eaf7ee22f6050a"}, - {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:67ecd894e56a0c6108ec5ab1d8fa8418ec0cff45844a855966b875d1039a2e34"}, - {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:14898830f0a0eb67cae2bbbc787c1a7d6e34ecc06fbd39d3af5fe29a4468e2c9"}, - {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:f2200e00b62568cfd920127782c61bc1c546062a879cdc741cfcc6976668dfcf"}, - {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9691a549c19c22d26a4f3b948071e93517bdf86e41b81d8c6ac8a964bb71e5a6"}, - {file = "regex-2023.8.8-cp39-cp39-win32.whl", hash = "sha256:6ab2ed84bf0137927846b37e882745a827458689eb969028af8032b1b3dac78e"}, - {file = "regex-2023.8.8-cp39-cp39-win_amd64.whl", hash = "sha256:5543c055d8ec7801901e1193a51570643d6a6ab8751b1f7dd9af71af467538bb"}, - {file = "regex-2023.8.8.tar.gz", hash = "sha256:fcbdc5f2b0f1cd0f6a56cdb46fe41d2cce1e644e3b68832f3eeebc5fb0f7712e"}, + {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff590880083d60acc0433f9c3f713c51f7ac6ebb9adf889c79a261ecf541aa91"}, + {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:658f90550f38270639e83ce492f27d2c8d2cd63805c65a13a14d36ca126753f0"}, + {file = "regex-2024.11.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:164d8b7b3b4bcb2068b97428060b2a53be050085ef94eca7f240e7947f1b080e"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3660c82f209655a06b587d55e723f0b813d3a7db2e32e5e7dc64ac2a9e86fde"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d22326fcdef5e08c154280b71163ced384b428343ae16a5ab2b3354aed12436e"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1ac758ef6aebfc8943560194e9fd0fa18bcb34d89fd8bd2af18183afd8da3a2"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:997d6a487ff00807ba810e0f8332c18b4eb8d29463cfb7c820dc4b6e7562d0cf"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:02a02d2bb04fec86ad61f3ea7f49c015a0681bf76abb9857f945d26159d2968c"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f02f93b92358ee3f78660e43b4b0091229260c5d5c408d17d60bf26b6c900e86"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:06eb1be98df10e81ebaded73fcd51989dcf534e3c753466e4b60c4697a003b67"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:040df6fe1a5504eb0f04f048e6d09cd7c7110fef851d7c567a6b6e09942feb7d"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabbfc59f2c6edba2a6622c647b716e34e8e3867e0ab975412c5c2f79b82da2"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8447d2d39b5abe381419319f942de20b7ecd60ce86f16a23b0698f22e1b70008"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:da8f5fc57d1933de22a9e23eec290a0d8a5927a5370d24bda9a6abe50683fe62"}, + {file = "regex-2024.11.6-cp310-cp310-win32.whl", hash = "sha256:b489578720afb782f6ccf2840920f3a32e31ba28a4b162e13900c3e6bd3f930e"}, + {file = "regex-2024.11.6-cp310-cp310-win_amd64.whl", hash = "sha256:5071b2093e793357c9d8b2929dfc13ac5f0a6c650559503bb81189d0a3814519"}, + {file = "regex-2024.11.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5478c6962ad548b54a591778e93cd7c456a7a29f8eca9c49e4f9a806dcc5d638"}, + {file = "regex-2024.11.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c89a8cc122b25ce6945f0423dc1352cb9593c68abd19223eebbd4e56612c5b7"}, + {file = "regex-2024.11.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:94d87b689cdd831934fa3ce16cc15cd65748e6d689f5d2b8f4f4df2065c9fa20"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1062b39a0a2b75a9c694f7a08e7183a80c63c0d62b301418ffd9c35f55aaa114"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:167ed4852351d8a750da48712c3930b031f6efdaa0f22fa1933716bfcd6bf4a3"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d548dafee61f06ebdb584080621f3e0c23fff312f0de1afc776e2a2ba99a74f"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a19f302cd1ce5dd01a9099aaa19cae6173306d1302a43b627f62e21cf18ac0"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bec9931dfb61ddd8ef2ebc05646293812cb6b16b60cf7c9511a832b6f1854b55"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9714398225f299aa85267fd222f7142fcb5c769e73d7733344efc46f2ef5cf89"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:202eb32e89f60fc147a41e55cb086db2a3f8cb82f9a9a88440dcfc5d37faae8d"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:4181b814e56078e9b00427ca358ec44333765f5ca1b45597ec7446d3a1ef6e34"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:068376da5a7e4da51968ce4c122a7cd31afaaec4fccc7856c92f63876e57b51d"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f2c4184420d881a3475fb2c6f4d95d53a8d50209a2500723d831036f7c45"}, + {file = "regex-2024.11.6-cp311-cp311-win32.whl", hash = "sha256:c36f9b6f5f8649bb251a5f3f66564438977b7ef8386a52460ae77e6070d309d9"}, + {file = "regex-2024.11.6-cp311-cp311-win_amd64.whl", hash = "sha256:02e28184be537f0e75c1f9b2f8847dc51e08e6e171c6bde130b2687e0c33cf60"}, + {file = "regex-2024.11.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:52fb28f528778f184f870b7cf8f225f5eef0a8f6e3778529bdd40c7b3920796a"}, + {file = "regex-2024.11.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9"}, + {file = "regex-2024.11.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805e6b60c54bf766b251e94526ebad60b7de0c70f70a4e6210ee2891acb70bf2"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b85c2530be953a890eaffde05485238f07029600e8f098cdf1848d414a8b45e4"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb26437975da7dc36b7efad18aa9dd4ea569d2357ae6b783bf1118dabd9ea577"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abfa5080c374a76a251ba60683242bc17eeb2c9818d0d30117b4486be10c59d3"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b7fa6606c2881c1db9479b0eaa11ed5dfa11c8d60a474ff0e095099f39d98e"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c32f75920cf99fe6b6c539c399a4a128452eaf1af27f39bce8909c9a3fd8cbe"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:982e6d21414e78e1f51cf595d7f321dcd14de1f2881c5dc6a6e23bbbbd68435e"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a7c2155f790e2fb448faed6dd241386719802296ec588a8b9051c1f5c481bc29"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149f5008d286636e48cd0b1dd65018548944e495b0265b45e1bffecce1ef7f39"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e5364a4502efca094731680e80009632ad6624084aff9a23ce8c8c6820de3e51"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0a86e7eeca091c09e021db8eb72d54751e527fa47b8d5787caf96d9831bd02ad"}, + {file = "regex-2024.11.6-cp312-cp312-win32.whl", hash = "sha256:32f9a4c643baad4efa81d549c2aadefaeba12249b2adc5af541759237eee1c54"}, + {file = "regex-2024.11.6-cp312-cp312-win_amd64.whl", hash = "sha256:a93c194e2df18f7d264092dc8539b8ffb86b45b899ab976aa15d48214138e81b"}, + {file = "regex-2024.11.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a6ba92c0bcdf96cbf43a12c717eae4bc98325ca3730f6b130ffa2e3c3c723d84"}, + {file = "regex-2024.11.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:525eab0b789891ac3be914d36893bdf972d483fe66551f79d3e27146191a37d4"}, + {file = "regex-2024.11.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:086a27a0b4ca227941700e0b31425e7a28ef1ae8e5e05a33826e17e47fbfdba0"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bde01f35767c4a7899b7eb6e823b125a64de314a8ee9791367c9a34d56af18d0"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b583904576650166b3d920d2bcce13971f6f9e9a396c673187f49811b2769dc7"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c4de13f06a0d54fa0d5ab1b7138bfa0d883220965a29616e3ea61b35d5f5fc7"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cde6e9f2580eb1665965ce9bf17ff4952f34f5b126beb509fee8f4e994f143c"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d7f453dca13f40a02b79636a339c5b62b670141e63efd511d3f8f73fba162b3"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59dfe1ed21aea057a65c6b586afd2a945de04fc7db3de0a6e3ed5397ad491b07"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b97c1e0bd37c5cd7902e65f410779d39eeda155800b65fc4d04cc432efa9bc6e"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f9d1e379028e0fc2ae3654bac3cbbef81bf3fd571272a42d56c24007979bafb6"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:13291b39131e2d002a7940fb176e120bec5145f3aeb7621be6534e46251912c4"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f51f88c126370dcec4908576c5a627220da6c09d0bff31cfa89f2523843316d"}, + {file = "regex-2024.11.6-cp313-cp313-win32.whl", hash = "sha256:63b13cfd72e9601125027202cad74995ab26921d8cd935c25f09c630436348ff"}, + {file = "regex-2024.11.6-cp313-cp313-win_amd64.whl", hash = "sha256:2b3361af3198667e99927da8b84c1b010752fa4b1115ee30beaa332cabc3ef1a"}, + {file = "regex-2024.11.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3a51ccc315653ba012774efca4f23d1d2a8a8f278a6072e29c7147eee7da446b"}, + {file = "regex-2024.11.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ad182d02e40de7459b73155deb8996bbd8e96852267879396fb274e8700190e3"}, + {file = "regex-2024.11.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ba9b72e5643641b7d41fa1f6d5abda2c9a263ae835b917348fc3c928182ad467"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40291b1b89ca6ad8d3f2b82782cc33807f1406cf68c8d440861da6304d8ffbbd"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cdf58d0e516ee426a48f7b2c03a332a4114420716d55769ff7108c37a09951bf"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a36fdf2af13c2b14738f6e973aba563623cb77d753bbbd8d414d18bfaa3105dd"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1cee317bfc014c2419a76bcc87f071405e3966da434e03e13beb45f8aced1a6"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50153825ee016b91549962f970d6a4442fa106832e14c918acd1c8e479916c4f"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea1bfda2f7162605f6e8178223576856b3d791109f15ea99a9f95c16a7636fb5"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:df951c5f4a1b1910f1a99ff42c473ff60f8225baa1cdd3539fe2819d9543e9df"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:072623554418a9911446278f16ecb398fb3b540147a7828c06e2011fa531e773"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f654882311409afb1d780b940234208a252322c24a93b442ca714d119e68086c"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:89d75e7293d2b3e674db7d4d9b1bee7f8f3d1609428e293771d1a962617150cc"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:f65557897fc977a44ab205ea871b690adaef6b9da6afda4790a2484b04293a5f"}, + {file = "regex-2024.11.6-cp38-cp38-win32.whl", hash = "sha256:6f44ec28b1f858c98d3036ad5d7d0bfc568bdd7a74f9c24e25f41ef1ebfd81a4"}, + {file = "regex-2024.11.6-cp38-cp38-win_amd64.whl", hash = "sha256:bb8f74f2f10dbf13a0be8de623ba4f9491faf58c24064f32b65679b021ed0001"}, + {file = "regex-2024.11.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5704e174f8ccab2026bd2f1ab6c510345ae8eac818b613d7d73e785f1310f839"}, + {file = "regex-2024.11.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:220902c3c5cc6af55d4fe19ead504de80eb91f786dc102fbd74894b1551f095e"}, + {file = "regex-2024.11.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7e351589da0850c125f1600a4c4ba3c722efefe16b297de54300f08d734fbf"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5056b185ca113c88e18223183aa1a50e66507769c9640a6ff75859619d73957b"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e34b51b650b23ed3354b5a07aab37034d9f923db2a40519139af34f485f77d0"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5670bce7b200273eee1840ef307bfa07cda90b38ae56e9a6ebcc9f50da9c469b"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:08986dce1339bc932923e7d1232ce9881499a0e02925f7402fb7c982515419ef"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93c0b12d3d3bc25af4ebbf38f9ee780a487e8bf6954c115b9f015822d3bb8e48"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:764e71f22ab3b305e7f4c21f1a97e1526a25ebdd22513e251cf376760213da13"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f056bf21105c2515c32372bbc057f43eb02aae2fda61052e2f7622c801f0b4e2"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:69ab78f848845569401469da20df3e081e6b5a11cb086de3eed1d48f5ed57c95"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:86fddba590aad9208e2fa8b43b4c098bb0ec74f15718bb6a704e3c63e2cef3e9"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:684d7a212682996d21ca12ef3c17353c021fe9de6049e19ac8481ec35574a70f"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a03e02f48cd1abbd9f3b7e3586d97c8f7a9721c436f51a5245b3b9483044480b"}, + {file = "regex-2024.11.6-cp39-cp39-win32.whl", hash = "sha256:41758407fc32d5c3c5de163888068cfee69cb4c2be844e7ac517a52770f9af57"}, + {file = "regex-2024.11.6-cp39-cp39-win_amd64.whl", hash = "sha256:b2837718570f95dd41675328e111345f9b7095d821bac435aac173ac80b19983"}, + {file = "regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519"}, ] [[package]] name = "relative-to-now" version = "1.1.0" description = "Print a datetime's distance from now" -category = "main" optional = false python-versions = ">=3.7.2,<4.0.0" files = [ @@ -2662,19 +2593,18 @@ files = [ [[package]] name = "requests" -version = "2.31.0" +version = "2.32.4" description = "Python HTTP for Humans." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, - {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, + {file = "requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c"}, + {file = "requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422"}, ] [package.dependencies] certifi = ">=2017.4.17" -charset-normalizer = ">=2,<4" +charset_normalizer = ">=2,<4" idna = ">=2.5,<4" urllib3 = ">=1.21.1,<3" @@ -2684,14 +2614,13 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "requests-oauthlib" -version = "1.3.1" +version = "2.0.0" description = "OAuthlib authentication support for Requests." -category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.4" files = [ - {file = "requests-oauthlib-1.3.1.tar.gz", hash = "sha256:75beac4a47881eeb94d5ea5d6ad31ef88856affe2332b9aafb52c6452ccf0d7a"}, - {file = "requests_oauthlib-1.3.1-py2.py3-none-any.whl", hash = "sha256:2577c501a2fb8d05a304c09d090d6e47c306fef15809d102b327cf8364bddab5"}, + {file = "requests-oauthlib-2.0.0.tar.gz", hash = "sha256:b3dffaebd884d8cd778494369603a9e7b58d29111bf6b41bdc2dcd87203af4e9"}, + {file = "requests_oauthlib-2.0.0-py2.py3-none-any.whl", hash = "sha256:7dd8a5c40426b779b0868c404bdef9768deccf22749cde15852df527e6269b36"}, ] [package.dependencies] @@ -2703,161 +2632,185 @@ rsa = ["oauthlib[signedtoken] (>=3.0.0)"] [[package]] name = "ruff" -version = "0.0.289" -description = "An extremely fast Python linter, written in Rust." -category = "dev" +version = "0.11.13" +description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.0.289-py3-none-macosx_10_7_x86_64.whl", hash = "sha256:c9a89d748e90c840bac9c37afe90cf13a5bfd460ca02ea93dad9d7bee3af03b4"}, - {file = "ruff-0.0.289-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:7f7396c6ea01ba332a6ad9d47642bac25d16bd2076aaa595b001f58b2f32ff05"}, - {file = "ruff-0.0.289-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7180de86c8ecd39624dec1699136f941c07e723201b4ce979bec9e7c67b40ad2"}, - {file = "ruff-0.0.289-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:73f37c65508203dd01a539926375a10243769c20d4fcab3fa6359cd3fbfc54b7"}, - {file = "ruff-0.0.289-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c14abcd7563b5c80be2dd809eeab20e4aa716bf849860b60a22d87ddf19eb88"}, - {file = "ruff-0.0.289-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:91b6d63b6b46d4707916472c91baa87aa0592e73f62a80ff55efdf6c0668cfd6"}, - {file = "ruff-0.0.289-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6479b8c4be3c36046c6c92054762b276fa0fddb03f6b9a310fbbf4c4951267fd"}, - {file = "ruff-0.0.289-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c5424318c254bcb091cb67e140ec9b9f7122074e100b06236f252923fb41e767"}, - {file = "ruff-0.0.289-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4daa90865796aedcedf0d8897fdd4cd09bf0ddd3504529a4ccf211edcaff3c7d"}, - {file = "ruff-0.0.289-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:8057e8ab0016c13b9419bad119e854f881e687bd96bc5e2d52c8baac0f278a44"}, - {file = "ruff-0.0.289-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:7eebfab2e6a6991908ff1bf82f2dc1e5095fc7e316848e62124526837b445f4d"}, - {file = "ruff-0.0.289-py3-none-musllinux_1_2_i686.whl", hash = "sha256:ebc7af550018001a7fb39ca22cdce20e1a0de4388ea4a007eb5c822f6188c297"}, - {file = "ruff-0.0.289-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:6e4e6eccb753efe760ba354fc8e9f783f6bba71aa9f592756f5bd0d78db898ed"}, - {file = "ruff-0.0.289-py3-none-win32.whl", hash = "sha256:bbb3044f931c09cf17dbe5b339896eece0d6ac10c9a86e172540fcdb1974f2b7"}, - {file = "ruff-0.0.289-py3-none-win_amd64.whl", hash = "sha256:6d043c5456b792be2615a52f16056c3cf6c40506ce1f2d6f9d3083cfcb9eeab6"}, - {file = "ruff-0.0.289-py3-none-win_arm64.whl", hash = "sha256:04a720bcca5e987426bb14ad8b9c6f55e259ea774da1cbeafe71569744cfd20a"}, - {file = "ruff-0.0.289.tar.gz", hash = "sha256:2513f853b0fc42f0339b7ab0d2751b63ce7a50a0032d2689b54b2931b3b866d7"}, + {file = "ruff-0.11.13-py3-none-linux_armv6l.whl", hash = "sha256:4bdfbf1240533f40042ec00c9e09a3aade6f8c10b6414cf11b519488d2635d46"}, + {file = "ruff-0.11.13-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:aef9c9ed1b5ca28bb15c7eac83b8670cf3b20b478195bd49c8d756ba0a36cf48"}, + {file = "ruff-0.11.13-py3-none-macosx_11_0_arm64.whl", hash = "sha256:53b15a9dfdce029c842e9a5aebc3855e9ab7771395979ff85b7c1dedb53ddc2b"}, + {file = "ruff-0.11.13-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ab153241400789138d13f362c43f7edecc0edfffce2afa6a68434000ecd8f69a"}, + {file = "ruff-0.11.13-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6c51f93029d54a910d3d24f7dd0bb909e31b6cd989a5e4ac513f4eb41629f0dc"}, + {file = "ruff-0.11.13-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1808b3ed53e1a777c2ef733aca9051dc9bf7c99b26ece15cb59a0320fbdbd629"}, + {file = "ruff-0.11.13-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:d28ce58b5ecf0f43c1b71edffabe6ed7f245d5336b17805803312ec9bc665933"}, + {file = "ruff-0.11.13-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:55e4bc3a77842da33c16d55b32c6cac1ec5fb0fbec9c8c513bdce76c4f922165"}, + {file = "ruff-0.11.13-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:633bf2c6f35678c56ec73189ba6fa19ff1c5e4807a78bf60ef487b9dd272cc71"}, + {file = "ruff-0.11.13-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ffbc82d70424b275b089166310448051afdc6e914fdab90e08df66c43bb5ca9"}, + {file = "ruff-0.11.13-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:4a9ddd3ec62a9a89578c85842b836e4ac832d4a2e0bfaad3b02243f930ceafcc"}, + {file = "ruff-0.11.13-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:d237a496e0778d719efb05058c64d28b757c77824e04ffe8796c7436e26712b7"}, + {file = "ruff-0.11.13-py3-none-musllinux_1_2_i686.whl", hash = "sha256:26816a218ca6ef02142343fd24c70f7cd8c5aa6c203bca284407adf675984432"}, + {file = "ruff-0.11.13-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:51c3f95abd9331dc5b87c47ac7f376db5616041173826dfd556cfe3d4977f492"}, + {file = "ruff-0.11.13-py3-none-win32.whl", hash = "sha256:96c27935418e4e8e77a26bb05962817f28b8ef3843a6c6cc49d8783b5507f250"}, + {file = "ruff-0.11.13-py3-none-win_amd64.whl", hash = "sha256:29c3189895a8a6a657b7af4e97d330c8a3afd2c9c8f46c81e2fc5a31866517e3"}, + {file = "ruff-0.11.13-py3-none-win_arm64.whl", hash = "sha256:b4385285e9179d608ff1d2fb9922062663c658605819a6876d8beef0c30b7f3b"}, + {file = "ruff-0.11.13.tar.gz", hash = "sha256:26fa247dc68d1d4e72c179e08889a25ac0c7ba4d78aecfc835d49cbfd60bf514"}, ] [[package]] name = "setuptools" -version = "68.2.2" +version = "78.1.1" description = "Easily download, build, install, upgrade, and uninstall Python packages" -category = "main" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "setuptools-68.2.2-py3-none-any.whl", hash = "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a"}, - {file = "setuptools-68.2.2.tar.gz", hash = "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87"}, + {file = "setuptools-78.1.1-py3-none-any.whl", hash = "sha256:c3a9c4211ff4c309edb8b8c4f1cbfa7ae324c4ba9f91ff254e3d305b9fd54561"}, + {file = "setuptools-78.1.1.tar.gz", hash = "sha256:fcc17fd9cd898242f6b4adfaca46137a9edef687f43e6f78469692a5e70d851d"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.8.0)"] +core = ["importlib_metadata (>=6)", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more_itertools", "more_itertools (>=8.8)", "packaging (>=24.2)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.7.2)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] +type = ["importlib_metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.14.*)", "pytest-mypy"] [[package]] name = "six" -version = "1.16.0" +version = "1.17.0" description = "Python 2 and 3 compatibility utilities" -category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, + {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, + {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, ] +[[package]] +name = "smbprotocol" +version = "1.15.0" +description = "Interact with a server using the SMB 2/3 Protocol" +optional = false +python-versions = ">=3.8" +files = [ + {file = "smbprotocol-1.15.0-py3-none-any.whl", hash = "sha256:1fbfe19be3afca25a27e3bccc0de54614c6a8d3443b1fac829763b4901fb1c06"}, + {file = "smbprotocol-1.15.0.tar.gz", hash = "sha256:3c892f4c22ab147d0576a3a8d34279831b26ab4695b7df911a334bc41f6d652a"}, +] + +[package.dependencies] +cryptography = ">=2.0" +pyspnego = "*" + +[package.extras] +kerberos = ["pyspnego[kerberos]"] + [[package]] name = "soupsieve" -version = "2.5" +version = "2.7" description = "A modern CSS selector implementation for Beautiful Soup." -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "soupsieve-2.5-py3-none-any.whl", hash = "sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7"}, - {file = "soupsieve-2.5.tar.gz", hash = "sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690"}, + {file = "soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4"}, + {file = "soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a"}, ] [[package]] name = "sqlalchemy" -version = "2.0.20" +version = "2.0.43" description = "Database Abstraction Library" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "SQLAlchemy-2.0.20-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:759b51346aa388c2e606ee206c0bc6f15a5299f6174d1e10cadbe4530d3c7a98"}, - {file = "SQLAlchemy-2.0.20-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1506e988ebeaaf316f183da601f24eedd7452e163010ea63dbe52dc91c7fc70e"}, - {file = "SQLAlchemy-2.0.20-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5768c268df78bacbde166b48be788b83dddaa2a5974b8810af422ddfe68a9bc8"}, - {file = "SQLAlchemy-2.0.20-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3f0dd6d15b6dc8b28a838a5c48ced7455c3e1fb47b89da9c79cc2090b072a50"}, - {file = "SQLAlchemy-2.0.20-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:243d0fb261f80a26774829bc2cee71df3222587ac789b7eaf6555c5b15651eed"}, - {file = "SQLAlchemy-2.0.20-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6eb6d77c31e1bf4268b4d61b549c341cbff9842f8e115ba6904249c20cb78a61"}, - {file = "SQLAlchemy-2.0.20-cp310-cp310-win32.whl", hash = "sha256:bcb04441f370cbe6e37c2b8d79e4af9e4789f626c595899d94abebe8b38f9a4d"}, - {file = "SQLAlchemy-2.0.20-cp310-cp310-win_amd64.whl", hash = "sha256:d32b5ffef6c5bcb452723a496bad2d4c52b346240c59b3e6dba279f6dcc06c14"}, - {file = "SQLAlchemy-2.0.20-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:dd81466bdbc82b060c3c110b2937ab65ace41dfa7b18681fdfad2f37f27acdd7"}, - {file = "SQLAlchemy-2.0.20-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6fe7d61dc71119e21ddb0094ee994418c12f68c61b3d263ebaae50ea8399c4d4"}, - {file = "SQLAlchemy-2.0.20-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4e571af672e1bb710b3cc1a9794b55bce1eae5aed41a608c0401885e3491179"}, - {file = "SQLAlchemy-2.0.20-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3364b7066b3c7f4437dd345d47271f1251e0cfb0aba67e785343cdbdb0fff08c"}, - {file = "SQLAlchemy-2.0.20-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1be86ccea0c965a1e8cd6ccf6884b924c319fcc85765f16c69f1ae7148eba64b"}, - {file = "SQLAlchemy-2.0.20-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1d35d49a972649b5080557c603110620a86aa11db350d7a7cb0f0a3f611948a0"}, - {file = "SQLAlchemy-2.0.20-cp311-cp311-win32.whl", hash = "sha256:27d554ef5d12501898d88d255c54eef8414576f34672e02fe96d75908993cf53"}, - {file = "SQLAlchemy-2.0.20-cp311-cp311-win_amd64.whl", hash = "sha256:411e7f140200c02c4b953b3dbd08351c9f9818d2bd591b56d0fa0716bd014f1e"}, - {file = "SQLAlchemy-2.0.20-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3c6aceebbc47db04f2d779db03afeaa2c73ea3f8dcd3987eb9efdb987ffa09a3"}, - {file = "SQLAlchemy-2.0.20-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7d3f175410a6db0ad96b10bfbb0a5530ecd4fcf1e2b5d83d968dd64791f810ed"}, - {file = "SQLAlchemy-2.0.20-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea8186be85da6587456c9ddc7bf480ebad1a0e6dcbad3967c4821233a4d4df57"}, - {file = "SQLAlchemy-2.0.20-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c3d99ba99007dab8233f635c32b5cd24fb1df8d64e17bc7df136cedbea427897"}, - {file = "SQLAlchemy-2.0.20-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:76fdfc0f6f5341987474ff48e7a66c3cd2b8a71ddda01fa82fedb180b961630a"}, - {file = "SQLAlchemy-2.0.20-cp37-cp37m-win32.whl", hash = "sha256:d3793dcf5bc4d74ae1e9db15121250c2da476e1af8e45a1d9a52b1513a393459"}, - {file = "SQLAlchemy-2.0.20-cp37-cp37m-win_amd64.whl", hash = "sha256:79fde625a0a55220d3624e64101ed68a059c1c1f126c74f08a42097a72ff66a9"}, - {file = "SQLAlchemy-2.0.20-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:599ccd23a7146e126be1c7632d1d47847fa9f333104d03325c4e15440fc7d927"}, - {file = "SQLAlchemy-2.0.20-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1a58052b5a93425f656675673ef1f7e005a3b72e3f2c91b8acca1b27ccadf5f4"}, - {file = "SQLAlchemy-2.0.20-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79543f945be7a5ada9943d555cf9b1531cfea49241809dd1183701f94a748624"}, - {file = "SQLAlchemy-2.0.20-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63e73da7fb030ae0a46a9ffbeef7e892f5def4baf8064786d040d45c1d6d1dc5"}, - {file = "SQLAlchemy-2.0.20-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3ce5e81b800a8afc870bb8e0a275d81957e16f8c4b62415a7b386f29a0cb9763"}, - {file = "SQLAlchemy-2.0.20-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cb0d3e94c2a84215532d9bcf10229476ffd3b08f481c53754113b794afb62d14"}, - {file = "SQLAlchemy-2.0.20-cp38-cp38-win32.whl", hash = "sha256:8dd77fd6648b677d7742d2c3cc105a66e2681cc5e5fb247b88c7a7b78351cf74"}, - {file = "SQLAlchemy-2.0.20-cp38-cp38-win_amd64.whl", hash = "sha256:6f8a934f9dfdf762c844e5164046a9cea25fabbc9ec865c023fe7f300f11ca4a"}, - {file = "SQLAlchemy-2.0.20-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:26a3399eaf65e9ab2690c07bd5cf898b639e76903e0abad096cd609233ce5208"}, - {file = "SQLAlchemy-2.0.20-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4cde2e1096cbb3e62002efdb7050113aa5f01718035ba9f29f9d89c3758e7e4e"}, - {file = "SQLAlchemy-2.0.20-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1b09ba72e4e6d341bb5bdd3564f1cea6095d4c3632e45dc69375a1dbe4e26ec"}, - {file = "SQLAlchemy-2.0.20-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b74eeafaa11372627ce94e4dc88a6751b2b4d263015b3523e2b1e57291102f0"}, - {file = "SQLAlchemy-2.0.20-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:77d37c1b4e64c926fa3de23e8244b964aab92963d0f74d98cbc0783a9e04f501"}, - {file = "SQLAlchemy-2.0.20-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:eefebcc5c555803065128401a1e224a64607259b5eb907021bf9b175f315d2a6"}, - {file = "SQLAlchemy-2.0.20-cp39-cp39-win32.whl", hash = "sha256:3423dc2a3b94125094897118b52bdf4d37daf142cbcf26d48af284b763ab90e9"}, - {file = "SQLAlchemy-2.0.20-cp39-cp39-win_amd64.whl", hash = "sha256:5ed61e3463021763b853628aef8bc5d469fe12d95f82c74ef605049d810f3267"}, - {file = "SQLAlchemy-2.0.20-py3-none-any.whl", hash = "sha256:63a368231c53c93e2b67d0c5556a9836fdcd383f7e3026a39602aad775b14acf"}, - {file = "SQLAlchemy-2.0.20.tar.gz", hash = "sha256:ca8a5ff2aa7f3ade6c498aaafce25b1eaeabe4e42b73e25519183e4566a16fc6"}, -] - -[package.dependencies] -greenlet = {version = "!=0.4.17", markers = "platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\""} -typing-extensions = ">=4.2.0" + {file = "SQLAlchemy-2.0.43-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:21ba7a08a4253c5825d1db389d4299f64a100ef9800e4624c8bf70d8f136e6ed"}, + {file = "SQLAlchemy-2.0.43-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11b9503fa6f8721bef9b8567730f664c5a5153d25e247aadc69247c4bc605227"}, + {file = "SQLAlchemy-2.0.43-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:cdeff998cb294896a34e5b2f00e383e7c5c4ef3b4bfa375d9104723f15186443"}, + {file = "SQLAlchemy-2.0.43-cp37-cp37m-win32.whl", hash = "sha256:c697575d0e2b0a5f0433f679bda22f63873821d991e95a90e9e52aae517b2e32"}, + {file = "SQLAlchemy-2.0.43-cp37-cp37m-win_amd64.whl", hash = "sha256:d34c0f6dbefd2e816e8f341d0df7d4763d382e3f452423e752ffd1e213da2512"}, + {file = "sqlalchemy-2.0.43-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:70322986c0c699dca241418fcf18e637a4369e0ec50540a2b907b184c8bca069"}, + {file = "sqlalchemy-2.0.43-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:87accdbba88f33efa7b592dc2e8b2a9c2cdbca73db2f9d5c510790428c09c154"}, + {file = "sqlalchemy-2.0.43-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c00e7845d2f692ebfc7d5e4ec1a3fd87698e4337d09e58d6749a16aedfdf8612"}, + {file = "sqlalchemy-2.0.43-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:022e436a1cb39b13756cf93b48ecce7aa95382b9cfacceb80a7d263129dfd019"}, + {file = "sqlalchemy-2.0.43-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c5e73ba0d76eefc82ec0219d2301cb33bfe5205ed7a2602523111e2e56ccbd20"}, + {file = "sqlalchemy-2.0.43-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9c2e02f06c68092b875d5cbe4824238ab93a7fa35d9c38052c033f7ca45daa18"}, + {file = "sqlalchemy-2.0.43-cp310-cp310-win32.whl", hash = "sha256:e7a903b5b45b0d9fa03ac6a331e1c1d6b7e0ab41c63b6217b3d10357b83c8b00"}, + {file = "sqlalchemy-2.0.43-cp310-cp310-win_amd64.whl", hash = "sha256:4bf0edb24c128b7be0c61cd17eef432e4bef507013292415f3fb7023f02b7d4b"}, + {file = "sqlalchemy-2.0.43-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:52d9b73b8fb3e9da34c2b31e6d99d60f5f99fd8c1225c9dad24aeb74a91e1d29"}, + {file = "sqlalchemy-2.0.43-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f42f23e152e4545157fa367b2435a1ace7571cab016ca26038867eb7df2c3631"}, + {file = "sqlalchemy-2.0.43-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4fb1a8c5438e0c5ea51afe9c6564f951525795cf432bed0c028c1cb081276685"}, + {file = "sqlalchemy-2.0.43-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db691fa174e8f7036afefe3061bc40ac2b770718be2862bfb03aabae09051aca"}, + {file = "sqlalchemy-2.0.43-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:fe2b3b4927d0bc03d02ad883f402d5de201dbc8894ac87d2e981e7d87430e60d"}, + {file = "sqlalchemy-2.0.43-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4d3d9b904ad4a6b175a2de0738248822f5ac410f52c2fd389ada0b5262d6a1e3"}, + {file = "sqlalchemy-2.0.43-cp311-cp311-win32.whl", hash = "sha256:5cda6b51faff2639296e276591808c1726c4a77929cfaa0f514f30a5f6156921"}, + {file = "sqlalchemy-2.0.43-cp311-cp311-win_amd64.whl", hash = "sha256:c5d1730b25d9a07727d20ad74bc1039bbbb0a6ca24e6769861c1aa5bf2c4c4a8"}, + {file = "sqlalchemy-2.0.43-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:20d81fc2736509d7a2bd33292e489b056cbae543661bb7de7ce9f1c0cd6e7f24"}, + {file = "sqlalchemy-2.0.43-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:25b9fc27650ff5a2c9d490c13c14906b918b0de1f8fcbb4c992712d8caf40e83"}, + {file = "sqlalchemy-2.0.43-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6772e3ca8a43a65a37c88e2f3e2adfd511b0b1da37ef11ed78dea16aeae85bd9"}, + {file = "sqlalchemy-2.0.43-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a113da919c25f7f641ffbd07fbc9077abd4b3b75097c888ab818f962707eb48"}, + {file = "sqlalchemy-2.0.43-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4286a1139f14b7d70141c67a8ae1582fc2b69105f1b09d9573494eb4bb4b2687"}, + {file = "sqlalchemy-2.0.43-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:529064085be2f4d8a6e5fab12d36ad44f1909a18848fcfbdb59cc6d4bbe48efe"}, + {file = "sqlalchemy-2.0.43-cp312-cp312-win32.whl", hash = "sha256:b535d35dea8bbb8195e7e2b40059e2253acb2b7579b73c1b432a35363694641d"}, + {file = "sqlalchemy-2.0.43-cp312-cp312-win_amd64.whl", hash = "sha256:1c6d85327ca688dbae7e2b06d7d84cfe4f3fffa5b5f9e21bb6ce9d0e1a0e0e0a"}, + {file = "sqlalchemy-2.0.43-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e7c08f57f75a2bb62d7ee80a89686a5e5669f199235c6d1dac75cd59374091c3"}, + {file = "sqlalchemy-2.0.43-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:14111d22c29efad445cd5021a70a8b42f7d9152d8ba7f73304c4d82460946aaa"}, + {file = "sqlalchemy-2.0.43-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21b27b56eb2f82653168cefe6cb8e970cdaf4f3a6cb2c5e3c3c1cf3158968ff9"}, + {file = "sqlalchemy-2.0.43-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c5a9da957c56e43d72126a3f5845603da00e0293720b03bde0aacffcf2dc04f"}, + {file = "sqlalchemy-2.0.43-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5d79f9fdc9584ec83d1b3c75e9f4595c49017f5594fee1a2217117647225d738"}, + {file = "sqlalchemy-2.0.43-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9df7126fd9db49e3a5a3999442cc67e9ee8971f3cb9644250107d7296cb2a164"}, + {file = "sqlalchemy-2.0.43-cp313-cp313-win32.whl", hash = "sha256:7f1ac7828857fcedb0361b48b9ac4821469f7694089d15550bbcf9ab22564a1d"}, + {file = "sqlalchemy-2.0.43-cp313-cp313-win_amd64.whl", hash = "sha256:971ba928fcde01869361f504fcff3b7143b47d30de188b11c6357c0505824197"}, + {file = "sqlalchemy-2.0.43-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:46293c39252f93ea0910aababa8752ad628bcce3a10d3f260648dd472256983f"}, + {file = "sqlalchemy-2.0.43-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:6e2bf13d9256398d037fef09fd8bf9b0bf77876e22647d10761d35593b9ac547"}, + {file = "sqlalchemy-2.0.43-cp38-cp38-win32.whl", hash = "sha256:13194276e69bb2af56198fef7909d48fd34820de01d9c92711a5fa45497cc7ed"}, + {file = "sqlalchemy-2.0.43-cp38-cp38-win_amd64.whl", hash = "sha256:334f41fa28de9f9be4b78445e68530da3c5fa054c907176460c81494f4ae1f5e"}, + {file = "sqlalchemy-2.0.43-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:413391b2239db55be14fa4223034d7e13325a1812c8396ecd4f2c08696d5ccad"}, + {file = "sqlalchemy-2.0.43-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:03d73ab2a37d9e40dec4984d1813d7878e01dbdc742448d44a7341b7a9f408c7"}, + {file = "sqlalchemy-2.0.43-cp39-cp39-win32.whl", hash = "sha256:b3edaec7e8b6dc5cd94523c6df4f294014df67097c8217a89929c99975811414"}, + {file = "sqlalchemy-2.0.43-cp39-cp39-win_amd64.whl", hash = "sha256:227119ce0a89e762ecd882dc661e0aa677a690c914e358f0dd8932a2e8b2765b"}, + {file = "sqlalchemy-2.0.43-py3-none-any.whl", hash = "sha256:1681c21dd2ccee222c2fe0bef671d1aef7c504087c9c4e800371cfcc8ac966fc"}, + {file = "sqlalchemy-2.0.43.tar.gz", hash = "sha256:788bfcef6787a7764169cfe9859fe425bf44559619e1d9f56f5bddf2ebf6f417"}, +] + +[package.dependencies] +greenlet = {version = ">=1", markers = "python_version < \"3.14\" and (platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\")"} +typing-extensions = ">=4.6.0" [package.extras] -aiomysql = ["aiomysql (>=0.2.0)", "greenlet (!=0.4.17)"] -aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing-extensions (!=3.10.0.1)"] -asyncio = ["greenlet (!=0.4.17)"] -asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"] -mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5)"] +aiomysql = ["aiomysql (>=0.2.0)", "greenlet (>=1)"] +aioodbc = ["aioodbc", "greenlet (>=1)"] +aiosqlite = ["aiosqlite", "greenlet (>=1)", "typing_extensions (!=3.10.0.1)"] +asyncio = ["greenlet (>=1)"] +asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (>=1)"] +mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5,!=1.1.10)"] mssql = ["pyodbc"] mssql-pymssql = ["pymssql"] mssql-pyodbc = ["pyodbc"] mypy = ["mypy (>=0.910)"] mysql = ["mysqlclient (>=1.4.0)"] mysql-connector = ["mysql-connector-python"] -oracle = ["cx-oracle (>=7)"] +oracle = ["cx_oracle (>=8)"] oracle-oracledb = ["oracledb (>=1.0.1)"] postgresql = ["psycopg2 (>=2.7)"] -postgresql-asyncpg = ["asyncpg", "greenlet (!=0.4.17)"] +postgresql-asyncpg = ["asyncpg", "greenlet (>=1)"] postgresql-pg8000 = ["pg8000 (>=1.29.1)"] postgresql-psycopg = ["psycopg (>=3.0.7)"] postgresql-psycopg2binary = ["psycopg2-binary"] postgresql-psycopg2cffi = ["psycopg2cffi"] postgresql-psycopgbinary = ["psycopg[binary] (>=3.0.7)"] pymysql = ["pymysql"] -sqlcipher = ["sqlcipher3-binary"] +sqlcipher = ["sqlcipher3_binary"] [[package]] name = "sqlalchemy-utils" -version = "0.41.1" +version = "0.41.2" description = "Various utility functions for SQLAlchemy." -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "SQLAlchemy-Utils-0.41.1.tar.gz", hash = "sha256:a2181bff01eeb84479e38571d2c0718eb52042f9afd8c194d0d02877e84b7d74"}, - {file = "SQLAlchemy_Utils-0.41.1-py3-none-any.whl", hash = "sha256:6c96b0768ea3f15c0dc56b363d386138c562752b84f647fb8d31a2223aaab801"}, + {file = "SQLAlchemy-Utils-0.41.2.tar.gz", hash = "sha256:bc599c8c3b3319e53ce6c5c3c471120bd325d0071fb6f38a10e924e3d07b9990"}, + {file = "SQLAlchemy_Utils-0.41.2-py3-none-any.whl", hash = "sha256:85cf3842da2bf060760f955f8467b87983fb2e30f1764fd0e24a48307dc8ec6e"}, ] [package.dependencies] @@ -2872,31 +2825,55 @@ intervals = ["intervals (>=0.7.1)"] password = ["passlib (>=1.6,<2.0)"] pendulum = ["pendulum (>=2.0.5)"] phone = ["phonenumbers (>=5.9.2)"] -test = ["Jinja2 (>=2.3)", "Pygments (>=1.2)", "backports.zoneinfo", "docutils (>=0.10)", "flake8 (>=2.4.0)", "flexmock (>=0.9.7)", "isort (>=4.2.2)", "pg8000 (>=1.12.4)", "psycopg (>=3.1.8)", "psycopg2 (>=2.5.1)", "psycopg2cffi (>=2.8.1)", "pymysql", "pyodbc", "pytest (>=2.7.1)", "python-dateutil (>=2.6)", "pytz (>=2014.2)"] -test-all = ["Babel (>=1.3)", "Jinja2 (>=2.3)", "Pygments (>=1.2)", "arrow (>=0.3.4)", "backports.zoneinfo", "colour (>=0.0.4)", "cryptography (>=0.6)", "docutils (>=0.10)", "flake8 (>=2.4.0)", "flexmock (>=0.9.7)", "furl (>=0.4.1)", "intervals (>=0.7.1)", "isort (>=4.2.2)", "passlib (>=1.6,<2.0)", "pendulum (>=2.0.5)", "pg8000 (>=1.12.4)", "phonenumbers (>=5.9.2)", "psycopg (>=3.1.8)", "psycopg2 (>=2.5.1)", "psycopg2cffi (>=2.8.1)", "pymysql", "pyodbc", "pytest (>=2.7.1)", "python-dateutil", "python-dateutil (>=2.6)", "pytz (>=2014.2)"] +test = ["Jinja2 (>=2.3)", "Pygments (>=1.2)", "backports.zoneinfo", "docutils (>=0.10)", "flake8 (>=2.4.0)", "flexmock (>=0.9.7)", "isort (>=4.2.2)", "pg8000 (>=1.12.4)", "psycopg (>=3.1.8)", "psycopg2 (>=2.5.1)", "psycopg2cffi (>=2.8.1)", "pymysql", "pyodbc", "pytest (==7.4.4)", "python-dateutil (>=2.6)", "pytz (>=2014.2)"] +test-all = ["Babel (>=1.3)", "Jinja2 (>=2.3)", "Pygments (>=1.2)", "arrow (>=0.3.4)", "backports.zoneinfo", "colour (>=0.0.4)", "cryptography (>=0.6)", "docutils (>=0.10)", "flake8 (>=2.4.0)", "flexmock (>=0.9.7)", "furl (>=0.4.1)", "intervals (>=0.7.1)", "isort (>=4.2.2)", "passlib (>=1.6,<2.0)", "pendulum (>=2.0.5)", "pg8000 (>=1.12.4)", "phonenumbers (>=5.9.2)", "psycopg (>=3.1.8)", "psycopg2 (>=2.5.1)", "psycopg2cffi (>=2.8.1)", "pymysql", "pyodbc", "pytest (==7.4.4)", "python-dateutil", "python-dateutil (>=2.6)", "pytz (>=2014.2)"] timezone = ["python-dateutil"] url = ["furl (>=0.4.1)"] [[package]] -name = "sqlalchemy2-stubs" -version = "0.0.2a35" -description = "Typing Stubs for SQLAlchemy 1.4" -category = "main" -optional = false -python-versions = ">=3.6" -files = [ - {file = "sqlalchemy2-stubs-0.0.2a35.tar.gz", hash = "sha256:bd5d530697d7e8c8504c7fe792ef334538392a5fb7aa7e4f670bfacdd668a19d"}, - {file = "sqlalchemy2_stubs-0.0.2a35-py3-none-any.whl", hash = "sha256:593784ff9fc0dc2ded1895e3322591689db3be06f3ca006e3ef47640baf2d38a"}, +name = "sspilib" +version = "0.3.1" +description = "SSPI API bindings for Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "sspilib-0.3.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:c45860bdc4793af572d365434020ff5a1ef78c42a2fc2c7a7d8e44eacaf475b6"}, + {file = "sspilib-0.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:62cc4de547503dec13b81a6af82b398e9ef53ea82c3535418d7d069c7a05d5cd"}, + {file = "sspilib-0.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f782214ae2876fe4e54d1dd54638a2e0877c32d03493926f7f3adf5253cf0e3f"}, + {file = "sspilib-0.3.1-cp310-cp310-win32.whl", hash = "sha256:d8e54aee722faed9efde96128bc56a5895889b5ed96011ad3c8e87efe8391d40"}, + {file = "sspilib-0.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:cdaa7bd965951cc6d032555ed87a575edba959338431a6cae3fcbfc174bb6de0"}, + {file = "sspilib-0.3.1-cp310-cp310-win_arm64.whl", hash = "sha256:08674256a42be6ab0481cb781f4079a46afd6b3ee73ad2569badbc88e556aa4d"}, + {file = "sspilib-0.3.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3a31991a34d1ac96e6f33981e1d368f56b6cf7863609c8ba681b9e1307721168"}, + {file = "sspilib-0.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e1c7fb3e40a281cdd0cfa701265fb78981f88d4c55c5e267caa63649aa490fc1"}, + {file = "sspilib-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f57e4384203e96ead5038fc327a695c8c268701a22c870e109ea67fbdcfd2ac0"}, + {file = "sspilib-0.3.1-cp311-cp311-win32.whl", hash = "sha256:c4745eb177773661211d5bf1dd3ef780a1fe7fbafe1392d3fdd8a5f520ec0fec"}, + {file = "sspilib-0.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:dfdd841bcd88af16c4f3d9f81f170b696e8ecfa18a4d16a571f755b5e0e8e43e"}, + {file = "sspilib-0.3.1-cp311-cp311-win_arm64.whl", hash = "sha256:a1d41eb2daf9db3d60414e87f86962db4bb4e0c517794879b0d47f1a17cc58ba"}, + {file = "sspilib-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e3e5163656bd14f0cac2c0dd2c777a272af00cecdba0e98ed5ef28c7185328b0"}, + {file = "sspilib-0.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:86aef2f824db862fb25066df286d2d0d35cf7da85474893eb573870a731b6691"}, + {file = "sspilib-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c6d11fd6e47ba964881c8980476354259bf0b570fa32b986697f7681b1fc5be"}, + {file = "sspilib-0.3.1-cp312-cp312-win32.whl", hash = "sha256:429ecda4c8ee587f734bdfc1fefaa196165bbd1f1c7980e0e49c89b60a6c956e"}, + {file = "sspilib-0.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:3355cfc5f3d5c257dbab2396d83493330ca952f9c28f3fe964193ababcc8c293"}, + {file = "sspilib-0.3.1-cp312-cp312-win_arm64.whl", hash = "sha256:2edc804f769dcaf0bdfcde06e0abc47763b58c79f1b7be40f805d33c7fc057fd"}, + {file = "sspilib-0.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:89b107704bd1ab84aff76b0b36538790cdfef233d4857b8cfebf53bd43ccf49c"}, + {file = "sspilib-0.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6c86e12b95bbe01ac89c0bd1083d01286fe3b0b4ecd63d4c03d4b39d7564a11f"}, + {file = "sspilib-0.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dea04c7da5fef0bf2e94c9e7e0ffdf52588b706c4df63c733c60c70731f334ba"}, + {file = "sspilib-0.3.1-cp313-cp313-win32.whl", hash = "sha256:89ccacb390b15e2e807e20b8ae7e96f4724ff1fa2f48b1ba0f7d18ccc9b0d581"}, + {file = "sspilib-0.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:21a26264df883ff6d367af60fdeb42476c7efb1dbfc5818970ac39edec3912e2"}, + {file = "sspilib-0.3.1-cp313-cp313-win_arm64.whl", hash = "sha256:44b89f866e0d14c8393dbc5a49c59296dd7b83a7ca97a0f9d6bd49cc46a04498"}, + {file = "sspilib-0.3.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:3c8914db71560cac25476a9f7c17412ccaecc441e798ad018492d2a488a1289c"}, + {file = "sspilib-0.3.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:656a15406eacde8cf933ec7282094bbfa0d489db3ebfef492308f3036c843f30"}, + {file = "sspilib-0.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8bb8d4504f2c98053ac924a5e1675d21955fcb309bd7247719fd09ce22ac37db"}, + {file = "sspilib-0.3.1-cp39-cp39-win32.whl", hash = "sha256:35168f39c6c1db9205eb02457d01175b7de32af543c7a51d657d1c12515fe422"}, + {file = "sspilib-0.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:6fa91c59af0b4e0b4e9f90908289977fe0240be63eee8b40a934abd424e9c3ba"}, + {file = "sspilib-0.3.1-cp39-cp39-win_arm64.whl", hash = "sha256:2812930555f693d4cffa0961c5088a4094889d1863d998c59162aa867dfc6be0"}, + {file = "sspilib-0.3.1.tar.gz", hash = "sha256:6df074ee54e3bd9c1bccc84233b1ceb846367ba1397dc52b5fae2846f373b154"}, ] -[package.dependencies] -typing-extensions = ">=3.7.4" - [[package]] name = "supervisor" version = "4.2.5" description = "A system for controlling process state under UNIX" -category = "main" optional = false python-versions = "*" files = [ @@ -2914,7 +2891,6 @@ testing = ["pytest", "pytest-cov"] name = "toml" version = "0.10.2" description = "Python Library for Tom's Obvious, Minimal Language" -category = "dev" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -2924,317 +2900,197 @@ files = [ [[package]] name = "tomli" -version = "2.0.1" +version = "2.2.1" description = "A lil' TOML parser" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, + {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8"}, + {file = "tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff"}, + {file = "tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b"}, + {file = "tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea"}, + {file = "tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e"}, + {file = "tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98"}, + {file = "tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4"}, + {file = "tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7"}, + {file = "tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744"}, + {file = "tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec"}, + {file = "tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69"}, + {file = "tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"}, + {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"}, ] [[package]] name = "tomlkit" -version = "0.12.1" +version = "0.13.3" description = "Style preserving TOML library" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomlkit-0.12.1-py3-none-any.whl", hash = "sha256:712cbd236609acc6a3e2e97253dfc52d4c2082982a88f61b640ecf0817eab899"}, - {file = "tomlkit-0.12.1.tar.gz", hash = "sha256:38e1ff8edb991273ec9f6181244a6a391ac30e9f5098e7535640ea6be97a7c86"}, + {file = "tomlkit-0.13.3-py3-none-any.whl", hash = "sha256:c89c649d79ee40629a9fda55f8ace8c6a1b42deb912b2a8fd8d942ddadb606b0"}, + {file = "tomlkit-0.13.3.tar.gz", hash = "sha256:430cf247ee57df2b94ee3fbe588e71d362a941ebb545dec29b53961d61add2a1"}, ] [[package]] name = "tox" -version = "4.11.3" +version = "4.28.4" description = "tox is a generic virtualenv management and test command line tool" -category = "dev" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "tox-4.11.3-py3-none-any.whl", hash = "sha256:599af5e5bb0cad0148ac1558a0b66f8fff219ef88363483b8d92a81e4246f28f"}, - {file = "tox-4.11.3.tar.gz", hash = "sha256:5039f68276461fae6a9452a3b2c7295798f00a0e92edcd9a3b78ba1a73577951"}, + {file = "tox-4.28.4-py3-none-any.whl", hash = "sha256:8d4ad9ee916ebbb59272bb045e154a10fa12e3bbdcf94cc5185cbdaf9b241f99"}, + {file = "tox-4.28.4.tar.gz", hash = "sha256:b5b14c6307bd8994ff1eba5074275826620325ee1a4f61316959d562bfd70b9d"}, ] [package.dependencies] -cachetools = ">=5.3.1" +cachetools = ">=6.1" chardet = ">=5.2" colorama = ">=0.4.6" -filelock = ">=3.12.3" -packaging = ">=23.1" -platformdirs = ">=3.10" -pluggy = ">=1.3" -pyproject-api = ">=1.6.1" -tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} -virtualenv = ">=20.24.3" - -[package.extras] -docs = ["furo (>=2023.8.19)", "sphinx (>=7.2.4)", "sphinx-argparse-cli (>=1.11.1)", "sphinx-autodoc-typehints (>=1.24)", "sphinx-copybutton (>=0.5.2)", "sphinx-inline-tabs (>=2023.4.21)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] -testing = ["build[virtualenv] (>=0.10)", "covdefaults (>=2.3)", "detect-test-pollution (>=1.1.1)", "devpi-process (>=1)", "diff-cover (>=7.7)", "distlib (>=0.3.7)", "flaky (>=3.7)", "hatch-vcs (>=0.3)", "hatchling (>=1.18)", "psutil (>=5.9.5)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)", "pytest-xdist (>=3.3.1)", "re-assert (>=1.1)", "time-machine (>=2.12)", "wheel (>=0.41.2)"] - -[[package]] -name = "tqdm" -version = "4.66.1" -description = "Fast, Extensible Progress Meter" -category = "main" -optional = false -python-versions = ">=3.7" -files = [ - {file = "tqdm-4.66.1-py3-none-any.whl", hash = "sha256:d302b3c5b53d47bce91fea46679d9c3c6508cf6332229aa1e7d8653723793386"}, - {file = "tqdm-4.66.1.tar.gz", hash = "sha256:d88e651f9db8d8551a62556d3cff9e3034274ca5d66e93197cf2490e2dcb69c7"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "platform_system == \"Windows\""} - -[package.extras] -dev = ["pytest (>=6)", "pytest-cov", "pytest-timeout", "pytest-xdist"] -notebook = ["ipywidgets (>=6)"] -slack = ["slack-sdk"] -telegram = ["requests"] - -[[package]] -name = "types-click" -version = "7.1.8" -description = "Typing stubs for click" -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "types-click-7.1.8.tar.gz", hash = "sha256:b6604968be6401dc516311ca50708a0a28baa7a0cb840efd7412f0dbbff4e092"}, - {file = "types_click-7.1.8-py3-none-any.whl", hash = "sha256:8cb030a669e2e927461be9827375f83c16b8178c365852c060a34e24871e7e81"}, -] - -[[package]] -name = "types-flask" -version = "1.1.6" -description = "Typing stubs for Flask" -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "types-Flask-1.1.6.tar.gz", hash = "sha256:aac777b3abfff9436e6b01f6d08171cf23ea6e5be71cbf773aaabb1c5763e9cf"}, - {file = "types_Flask-1.1.6-py3-none-any.whl", hash = "sha256:6ab8a9a5e258b76539d652f6341408867298550b19b81f0e41e916825fc39087"}, -] - -[package.dependencies] -types-click = "*" -types-Jinja2 = "*" -types-Werkzeug = "*" - -[[package]] -name = "types-jinja2" -version = "2.11.9" -description = "Typing stubs for Jinja2" -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "types-Jinja2-2.11.9.tar.gz", hash = "sha256:dbdc74a40aba7aed520b7e4d89e8f0fe4286518494208b35123bcf084d4b8c81"}, - {file = "types_Jinja2-2.11.9-py3-none-any.whl", hash = "sha256:60a1e21e8296979db32f9374d8a239af4cb541ff66447bb915d8ad398f9c63b2"}, -] - -[package.dependencies] -types-MarkupSafe = "*" - -[[package]] -name = "types-markupsafe" -version = "1.1.10" -description = "Typing stubs for MarkupSafe" -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "types-MarkupSafe-1.1.10.tar.gz", hash = "sha256:85b3a872683d02aea3a5ac2a8ef590193c344092032f58457287fbf8e06711b1"}, - {file = "types_MarkupSafe-1.1.10-py3-none-any.whl", hash = "sha256:ca2bee0f4faafc45250602567ef38d533e877d2ddca13003b319c551ff5b3cc5"}, -] +filelock = ">=3.18" +packaging = ">=25" +platformdirs = ">=4.3.8" +pluggy = ">=1.6" +pyproject-api = ">=1.9.1" +virtualenv = ">=20.31.2" [[package]] name = "types-paramiko" -version = "2.12.0.3" +version = "3.5.0.20250801" description = "Typing stubs for paramiko" -category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.9" files = [ - {file = "types-paramiko-2.12.0.3.tar.gz", hash = "sha256:3a79232382bcc7ed140f53d865feaec35188fd2ee105efdbf325200736e01aa2"}, - {file = "types_paramiko-2.12.0.3-py3-none-any.whl", hash = "sha256:a8b224e8a93cc0ffb60f67516890e49977ea0d3f5811c605238e71d9c49a152d"}, + {file = "types_paramiko-3.5.0.20250801-py3-none-any.whl", hash = "sha256:3e02a0fcf2b7e7b213e0cd569f7223ff9af417052a4d149d84172ebaa6fd742e"}, + {file = "types_paramiko-3.5.0.20250801.tar.gz", hash = "sha256:e79ff84eaf44f2a5ad811743edef5d9c0cd6632a264a526f00405b87db1ec99b"}, ] [package.dependencies] cryptography = ">=37.0.0" -[[package]] -name = "types-pyopenssl" -version = "23.2.0.2" -description = "Typing stubs for pyOpenSSL" -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "types-pyOpenSSL-23.2.0.2.tar.gz", hash = "sha256:6a010dac9ecd42b582d7dd2cc3e9e40486b79b3b64bb2fffba1474ff96af906d"}, - {file = "types_pyOpenSSL-23.2.0.2-py3-none-any.whl", hash = "sha256:19536aa3debfbe25a918cf0d898e9f5fbbe6f3594a429da7914bf331deb1b342"}, -] - -[package.dependencies] -cryptography = ">=35.0.0" - [[package]] name = "types-python-dateutil" -version = "2.8.19.14" +version = "2.9.0.20250809" description = "Typing stubs for python-dateutil" -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "types-python-dateutil-2.8.19.14.tar.gz", hash = "sha256:1f4f10ac98bb8b16ade9dbee3518d9ace017821d94b057a425b069f834737f4b"}, - {file = "types_python_dateutil-2.8.19.14-py3-none-any.whl", hash = "sha256:f977b8de27787639986b4e28963263fd0e5158942b3ecef91b9335c130cb1ce9"}, -] - -[[package]] -name = "types-redis" -version = "4.6.0.6" -description = "Typing stubs for redis" -category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.9" files = [ - {file = "types-redis-4.6.0.6.tar.gz", hash = "sha256:7865a843802937ab2ddca33579c4e255bfe73f87af85824ead7a6729ba92fc52"}, - {file = "types_redis-4.6.0.6-py3-none-any.whl", hash = "sha256:e0e9dcc530623db3a41ec058ccefdcd5c7582557f02ab5f7aa9a27fe10a78d7e"}, + {file = "types_python_dateutil-2.9.0.20250809-py3-none-any.whl", hash = "sha256:768890cac4f2d7fd9e0feb6f3217fce2abbfdfc0cadd38d11fba325a815e4b9f"}, + {file = "types_python_dateutil-2.9.0.20250809.tar.gz", hash = "sha256:69cbf8d15ef7a75c3801d65d63466e46ac25a0baa678d89d0a137fc31a608cc1"}, ] -[package.dependencies] -cryptography = ">=35.0.0" -types-pyOpenSSL = "*" - [[package]] name = "types-requests" -version = "2.31.0.2" +version = "2.32.4.20250809" description = "Typing stubs for requests" -category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.9" files = [ - {file = "types-requests-2.31.0.2.tar.gz", hash = "sha256:6aa3f7faf0ea52d728bb18c0a0d1522d9bfd8c72d26ff6f61bfc3d06a411cf40"}, - {file = "types_requests-2.31.0.2-py3-none-any.whl", hash = "sha256:56d181c85b5925cbc59f4489a57e72a8b2166f18273fd8ba7b6fe0c0b986f12a"}, + {file = "types_requests-2.32.4.20250809-py3-none-any.whl", hash = "sha256:f73d1832fb519ece02c85b1f09d5f0dd3108938e7d47e7f94bbfa18a6782b163"}, + {file = "types_requests-2.32.4.20250809.tar.gz", hash = "sha256:d8060de1c8ee599311f56ff58010fb4902f462a1470802cf9f6ed27bc46c4df3"}, ] [package.dependencies] -types-urllib3 = "*" - -[[package]] -name = "types-urllib3" -version = "1.26.25.14" -description = "Typing stubs for urllib3" -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "types-urllib3-1.26.25.14.tar.gz", hash = "sha256:229b7f577c951b8c1b92c1bc2b2fdb0b49847bd2af6d1cc2a2e3dd340f3bda8f"}, - {file = "types_urllib3-1.26.25.14-py3-none-any.whl", hash = "sha256:9683bbb7fb72e32bfe9d2be6e04875fbe1b3eeec3cbb4ea231435aa7fd6b4f0e"}, -] - -[[package]] -name = "types-werkzeug" -version = "1.0.9" -description = "Typing stubs for Werkzeug" -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "types-Werkzeug-1.0.9.tar.gz", hash = "sha256:5cc269604c400133d452a40cee6397655f878fc460e03fde291b9e3a5eaa518c"}, - {file = "types_Werkzeug-1.0.9-py3-none-any.whl", hash = "sha256:194bd5715a13c598f05c63e8a739328657590943bce941e8a3619a6b5d4a54ec"}, -] +urllib3 = ">=2" [[package]] name = "typing-extensions" -version = "4.8.0" -description = "Backported and Experimental Type Hints for Python 3.8+" -category = "main" +version = "4.14.1" +description = "Backported and Experimental Type Hints for Python 3.9+" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "typing_extensions-4.8.0-py3-none-any.whl", hash = "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0"}, - {file = "typing_extensions-4.8.0.tar.gz", hash = "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"}, + {file = "typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76"}, + {file = "typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36"}, ] [[package]] name = "tzdata" -version = "2023.3" +version = "2025.2" description = "Provider of IANA time zone data" -category = "main" optional = false python-versions = ">=2" files = [ - {file = "tzdata-2023.3-py2.py3-none-any.whl", hash = "sha256:7e65763eef3120314099b6939b5546db7adce1e7d6f2e179e3df563c70511eda"}, - {file = "tzdata-2023.3.tar.gz", hash = "sha256:11ef1e08e54acb0d4f95bdb1be05da659673de4acbd21bf9c69e94cc5e907a3a"}, + {file = "tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8"}, + {file = "tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9"}, ] [[package]] name = "tzlocal" -version = "5.0.1" +version = "5.3.1" description = "tzinfo object for the local timezone" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" files = [ - {file = "tzlocal-5.0.1-py3-none-any.whl", hash = "sha256:f3596e180296aaf2dbd97d124fe76ae3a0e3d32b258447de7b939b3fd4be992f"}, - {file = "tzlocal-5.0.1.tar.gz", hash = "sha256:46eb99ad4bdb71f3f72b7d24f4267753e240944ecfc16f25d2719ba89827a803"}, + {file = "tzlocal-5.3.1-py3-none-any.whl", hash = "sha256:eb1a66c3ef5847adf7a834f1be0800581b683b5608e74f86ecbcef8ab91bb85d"}, + {file = "tzlocal-5.3.1.tar.gz", hash = "sha256:cceffc7edecefea1f595541dbd6e990cb1ea3d19bf01b2809f362a03dd7921fd"}, ] [package.dependencies] -"backports.zoneinfo" = {version = "*", markers = "python_version < \"3.9\""} tzdata = {version = "*", markers = "platform_system == \"Windows\""} [package.extras] -devenv = ["black", "check-manifest", "flake8", "pyroma", "pytest (>=4.3)", "pytest-cov", "pytest-mock (>=3.3)", "zest.releaser"] +devenv = ["check-manifest", "pytest (>=4.3)", "pytest-cov", "pytest-mock (>=3.3)", "zest.releaser"] [[package]] name = "urllib3" -version = "2.0.4" +version = "2.5.0" description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" files = [ - {file = "urllib3-2.0.4-py3-none-any.whl", hash = "sha256:de7df1803967d2c2a98e4b11bb7d6bd9210474c46e8a0401514e3a42a75ebde4"}, - {file = "urllib3-2.0.4.tar.gz", hash = "sha256:8d22f86aae8ef5e410d4f539fde9ce6b2113a001bb4d189e0aed70642d602b11"}, + {file = "urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc"}, + {file = "urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760"}, ] [package.extras] brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] +h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] [[package]] name = "virtualenv" -version = "20.24.5" +version = "20.33.1" description = "Virtual Python Environment builder" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "virtualenv-20.24.5-py3-none-any.whl", hash = "sha256:b80039f280f4919c77b30f1c23294ae357c4c8701042086e3fc005963e4e537b"}, - {file = "virtualenv-20.24.5.tar.gz", hash = "sha256:e8361967f6da6fbdf1426483bfe9fca8287c242ac0bc30429905721cefbff752"}, + {file = "virtualenv-20.33.1-py3-none-any.whl", hash = "sha256:07c19bc66c11acab6a5958b815cbcee30891cd1c2ccf53785a28651a0d8d8a67"}, + {file = "virtualenv-20.33.1.tar.gz", hash = "sha256:1b44478d9e261b3fb8baa5e74a0ca3bc0e05f21aa36167bf9cbf850e542765b8"}, ] [package.dependencies] distlib = ">=0.3.7,<1" filelock = ">=3.12.2,<4" -platformdirs = ">=3.9.1,<4" +platformdirs = ">=3.9.1,<5" [package.extras] -docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] +docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] [[package]] name = "webassets" version = "2.0" description = "Media asset management for Python, with glue code for various web frameworks" -category = "main" optional = false python-versions = "*" files = [ @@ -3246,7 +3102,6 @@ files = [ name = "webassets-rollup" version = "1.0.0" description = "Rollup filter for webassets" -category = "main" optional = false python-versions = "*" files = [ @@ -3258,14 +3113,13 @@ webassets = "*" [[package]] name = "werkzeug" -version = "2.3.7" +version = "3.1.3" description = "The comprehensive WSGI web application library." -category = "main" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "werkzeug-2.3.7-py3-none-any.whl", hash = "sha256:effc12dba7f3bd72e605ce49807bbe692bd729c3bb122a3b91747a6ae77df528"}, - {file = "werkzeug-2.3.7.tar.gz", hash = "sha256:2b8c0e447b4b9dbcc85dd97b6eeb4dcbaf6c8b6c3be0bd654e25553e0a2157d8"}, + {file = "werkzeug-3.1.3-py3-none-any.whl", hash = "sha256:54b78bf3716d19a65be4fceccc0d1d7b89e608834989dfae50ea87564639213e"}, + {file = "werkzeug-3.1.3.tar.gz", hash = "sha256:60723ce945c19328679790e3282cc758aa4a6040e4bb330f53d30fa546d44746"}, ] [package.dependencies] @@ -3276,29 +3130,27 @@ watchdog = ["watchdog (>=2.3)"] [[package]] name = "whitenoise" -version = "6.5.0" +version = "6.9.0" description = "Radically simplified static file serving for WSGI applications" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" files = [ - {file = "whitenoise-6.5.0-py3-none-any.whl", hash = "sha256:16468e9ad2189f09f4a8c635a9031cc9bb2cdbc8e5e53365407acf99f7ade9ec"}, - {file = "whitenoise-6.5.0.tar.gz", hash = "sha256:15fe60546ac975b58e357ccaeb165a4ca2d0ab697e48450b8f0307ca368195a8"}, + {file = "whitenoise-6.9.0-py3-none-any.whl", hash = "sha256:c8a489049b7ee9889617bb4c274a153f3d979e8f51d2efd0f5b403caf41c57df"}, + {file = "whitenoise-6.9.0.tar.gz", hash = "sha256:8c4a7c9d384694990c26f3047e118c691557481d624f069b7f7752a2f735d609"}, ] [package.extras] -brotli = ["Brotli"] +brotli = ["brotli"] [[package]] name = "xmlschema" -version = "2.4.0" +version = "2.5.1" description = "An XML Schema validator and decoder" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "xmlschema-2.4.0-py3-none-any.whl", hash = "sha256:dc87be0caaa61f42649899189aab2fd8e0d567f2cf548433ba7b79278d231a4a"}, - {file = "xmlschema-2.4.0.tar.gz", hash = "sha256:d74cd0c10866ac609e1ef94a5a69b018ad16e39077bc6393408b40c6babee793"}, + {file = "xmlschema-2.5.1-py3-none-any.whl", hash = "sha256:ec2b2a15c8896c1fcd14dcee34ca30032b99456c3c43ce793fdb9dca2fb4b869"}, + {file = "xmlschema-2.5.1.tar.gz", hash = "sha256:4f7497de6c8b6dc2c28ad7b9ed6e21d186f4afe248a5bea4f54eedab4da44083"}, ] [package.dependencies] @@ -3311,60 +3163,80 @@ docs = ["Sphinx", "elementpath (>=4.1.5,<5.0.0)", "jinja2", "sphinx-rtd-theme"] [[package]] name = "xmlsec" -version = "1.3.13" +version = "1.3.16" description = "Python bindings for the XML Security Library" -category = "main" optional = false python-versions = ">=3.5" files = [ - {file = "xmlsec-1.3.13-cp310-cp310-win32.whl", hash = "sha256:2174e8c88555383322d8b7d3927490a92ef72ad72a6ddaf4fa1b96a3f27c3e90"}, - {file = "xmlsec-1.3.13-cp310-cp310-win_amd64.whl", hash = "sha256:46d1daf16a8f4430efca5bb9c6a15776f2671f69f48a1941d6bb335e6f8cb29d"}, - {file = "xmlsec-1.3.13-cp35-cp35m-win32.whl", hash = "sha256:d47062c42775a025aa94fb8b15de97c1db86e301e549d3168157e0b1223d51b1"}, - {file = "xmlsec-1.3.13-cp35-cp35m-win_amd64.whl", hash = "sha256:7c7e8ef52688ddaf5b66750cc8d901f61716f46727014ff012f41d8858cedeb0"}, - {file = "xmlsec-1.3.13-cp36-cp36m-win32.whl", hash = "sha256:1725d70ee2bb2cd8dd66c7a7451be02bb59dc8280103db4f68e731f00135b1e0"}, - {file = "xmlsec-1.3.13-cp36-cp36m-win_amd64.whl", hash = "sha256:1f8c41162152d7086fd459926e61bc7cb2d52ffc829e760bf8b2c221a645d568"}, - {file = "xmlsec-1.3.13-cp37-cp37m-win32.whl", hash = "sha256:ff1c61f296e75cba5bac802d0000bfde09143eed946ced1a5162211867c335f8"}, - {file = "xmlsec-1.3.13-cp37-cp37m-win_amd64.whl", hash = "sha256:d249c0a2bf3ff13a231bca6a588e7d276b3f1e2cf09316b542f470a63855799e"}, - {file = "xmlsec-1.3.13-cp38-cp38-win32.whl", hash = "sha256:56cfcf3487b6ad269eb1fb543c04dee2c101f1bc91e06d6cf7bfab9ac486efd8"}, - {file = "xmlsec-1.3.13-cp38-cp38-win_amd64.whl", hash = "sha256:e6626bece0e97a8598b5df28c27bc6f2ae1e97d29dca3c1a4910a7598a4d1d0f"}, - {file = "xmlsec-1.3.13-cp39-cp39-win32.whl", hash = "sha256:091f23765729df6f3b3a55c8a6a96f9c713fa86e76b86a19cdb756aaa6dc0646"}, - {file = "xmlsec-1.3.13-cp39-cp39-win_amd64.whl", hash = "sha256:5162f416179350587c4ff64737af68a846a9b86f95fd465df4e68b589ce56618"}, - {file = "xmlsec-1.3.13.tar.gz", hash = "sha256:916f5d78e8041f6cd9391abba659da8c94a4fef7196d126d40af1ff417f2cf86"}, + {file = "xmlsec-1.3.16-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a34ff8241eef1a98bc8105dad8909c00501aa8c045613cc55da75784d0a77a7a"}, + {file = "xmlsec-1.3.16-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7347748781c1a58d05e25a804e706b5a232cdac658ffd477866db109f32f3bf2"}, + {file = "xmlsec-1.3.16-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fda5206b7c94b6d9552d20493d57316cb165950f2501164c4ea682cd63fadeab"}, + {file = "xmlsec-1.3.16-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3343e37fc86a823ed4cb9272e548b27aeea964603c05d6d6d82f797d4f9d2826"}, + {file = "xmlsec-1.3.16-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e0942d08284b9343e42126939ad67ec72348dff922fbdc328593beea37a9ec3"}, + {file = "xmlsec-1.3.16-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:9ec5f9e57b18d4de372235b631cab6fb4f30e58c5f9d72999b687cf55019b588"}, + {file = "xmlsec-1.3.16-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b1321897c417ae7d633063c60742c722dad20797e7d5821438c2955ca5eafe92"}, + {file = "xmlsec-1.3.16-cp310-cp310-win32.whl", hash = "sha256:ab161b770addd44c04c7f6cdcfa6409e72ce60fde0356a851c678ed60bbb53e9"}, + {file = "xmlsec-1.3.16-cp310-cp310-win_amd64.whl", hash = "sha256:1c616f4a4c956ddf40dbcad45b4e1cee0e1efe2d1dd47ded483e6d89161b484d"}, + {file = "xmlsec-1.3.16-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:837fe04902341e6cb07fd652b73a40d776fef68842a8f8a6987d555d3244557f"}, + {file = "xmlsec-1.3.16-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0cc4c475a30364fc0db5b761e71add9212a5cc41a06399ee167249e7cfc8887f"}, + {file = "xmlsec-1.3.16-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3fc4bef7772391710fd4f7abe552f44b1b51bedc0d6eaa14311c353f6aac5830"}, + {file = "xmlsec-1.3.16-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c130ad630580da10656002ab577f307dba92bdbe285cea9aedd633847a28be91"}, + {file = "xmlsec-1.3.16-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:df55939743f48b1802a2036670f5004344fa71e787a8c395b4adc4f17beceb5f"}, + {file = "xmlsec-1.3.16-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:f8087d866c0997fd8145a37e0a60bfb7328af13a4cd424467f10b1b51b2f58d6"}, + {file = "xmlsec-1.3.16-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6bf07d5add2bfa47245c6ffbdc2f8646160e6f68a519f8723800e743acbdc300"}, + {file = "xmlsec-1.3.16-cp311-cp311-win32.whl", hash = "sha256:ab5f6293e101e45f53ccf6c46a7a54b39aecb8610a7688d9ddbb8879bdba7812"}, + {file = "xmlsec-1.3.16-cp311-cp311-win_amd64.whl", hash = "sha256:8c209841a9e0e34e6542d92012488db37422e5a50fa8d94ea899c3d138d619e0"}, + {file = "xmlsec-1.3.16-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b4878829e95561e66b2d43b987f1d3c75f470eff979acf6121f297f9cce0fc77"}, + {file = "xmlsec-1.3.16-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1f79a3324db82fa9da639723982971f7d8ca970e4677159a49f6242452cf8a33"}, + {file = "xmlsec-1.3.16-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0b3028f89760e5a87956af92d4aab102da56d5e07f34086f29793f644e7c8cb"}, + {file = "xmlsec-1.3.16-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27392ea8bc3b7e6ff310d261f0232ad14972188c44a45be5a1ebe33bf9d4f4c5"}, + {file = "xmlsec-1.3.16-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfbe712a1117145916c0fc183f3a3e924b3ca7495d6d06f4236d6f93324427d6"}, + {file = "xmlsec-1.3.16-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37144c51339a1217bcba2f5a2412fe9ec29410d08f25957f3635694512f0a375"}, + {file = "xmlsec-1.3.16-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6f430206704190738fb33a43b695a0813671675e811b570547789750e4de1390"}, + {file = "xmlsec-1.3.16-cp312-cp312-win32.whl", hash = "sha256:fc76572c58bf50d5d5c524ac649112a9cd62e5f525618af52efc162d22201a39"}, + {file = "xmlsec-1.3.16-cp312-cp312-win_amd64.whl", hash = "sha256:ae91291233db6fcbe154b58e06d647b4c01a28693b735cdfcda5f5ad0c86b3b3"}, + {file = "xmlsec-1.3.16-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:68b60867e6be61e06964be64d7501b88156f0ad0a4808b5c2eb8b16d8de9b6bc"}, + {file = "xmlsec-1.3.16-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:174917827e26ff71dab512e5e87544dcd3309eb4a5dc18e6f1e8022789e1f1bf"}, + {file = "xmlsec-1.3.16-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb683689a7770a3a71657af96c1953c9d00da7e3c8d9a9851777fa2c9ecf741a"}, + {file = "xmlsec-1.3.16-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fda1627987e26989ead9ae8ec8b089f2affa0e922f585ab1c37d1c2111c78c7"}, + {file = "xmlsec-1.3.16-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4fe9e8ab3497632ea242fc718a57e7524e0300537fd106a7455696b339ac0a6"}, + {file = "xmlsec-1.3.16-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1014c6cb723ad99781a2f37c03969eb246b310da029ddf3250df998801bb62d7"}, + {file = "xmlsec-1.3.16-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:795eedbdb4dbc72c786dbf4193561de0f3ebd8f8ee3a32e81b085b24ccbee120"}, + {file = "xmlsec-1.3.16-cp313-cp313-win32.whl", hash = "sha256:1f83fbd4c44bbeebd19db9de5969b68ed7d5b723d7812c5a62c795452f7c8945"}, + {file = "xmlsec-1.3.16-cp313-cp313-win_amd64.whl", hash = "sha256:4b8b36cdccd13fa84a923958ebf5f73febe8a97da4ecff711fdeb97fec6896db"}, + {file = "xmlsec-1.3.16-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ffff00ac7bcf8f28d33c250f20e09c7a257ec804463762f17609318b82a2177"}, + {file = "xmlsec-1.3.16-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69a9e786e06a3338bb9fe135ce5b97e1c410144d438ec35bd707b33f164f75cb"}, + {file = "xmlsec-1.3.16-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c5f36b3cce22c9686dcb981d382eeed4b7e5407c69992bb4fe40a732d47403db"}, + {file = "xmlsec-1.3.16-cp38-cp38-win32.whl", hash = "sha256:dd3465fb57c6b67df74022557dd7d5fcd5b57304987636cb61303dce8dd2dfd3"}, + {file = "xmlsec-1.3.16-cp38-cp38-win_amd64.whl", hash = "sha256:fcf4650aaed744c846aac0f87f69aec9c00926eb6f839744c1d3b508cd35093a"}, + {file = "xmlsec-1.3.16-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0264dad1de0d5aa5a5bf26fdd58db0626dd01731dd9150c74c8afd76a4467674"}, + {file = "xmlsec-1.3.16-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7899a22d3dddeba5e21fcb70a244301c4a71538ead55c814f0589b63c7ba1de8"}, + {file = "xmlsec-1.3.16-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:967c57f66932106078d571d02aa31b1eb59e51c2fe744685d1409f4d39b23034"}, + {file = "xmlsec-1.3.16-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b65fa36c495440f0ef08350df3e2a6eb54cc0cb88fcd528a5d522d164cd71d69"}, + {file = "xmlsec-1.3.16-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40532aab61599cf5510eb344930893e2d786edbb51bb78ad24efdfd9c37c1614"}, + {file = "xmlsec-1.3.16-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7faf7ef829f5a946234e466a7cfdac745aa6e436bb7ea55884dce7193e63629e"}, + {file = "xmlsec-1.3.16-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:cd23b75c9808fb86f4a3106ab706e485552e1a3364606c2226bfaad794264142"}, + {file = "xmlsec-1.3.16-cp39-cp39-win32.whl", hash = "sha256:51cf9da31c8efe4adcc739557c7747fbd32f29b1cf4f7f3aef60d557bfb7957d"}, + {file = "xmlsec-1.3.16-cp39-cp39-win_amd64.whl", hash = "sha256:53ade42eb59b45958b41dae196972544ed39c75274c232e31263e30578d9006c"}, + {file = "xmlsec-1.3.16.tar.gz", hash = "sha256:2b6c70544c6d1d4ca006aaa314958e0ef3514dc81fffde1b23f2ec41a5791f9d"}, ] [package.dependencies] lxml = ">=3.8" -[[package]] -name = "zipp" -version = "3.16.2" -description = "Backport of pathlib-compatible object wrapper for zip files" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "zipp-3.16.2-py3-none-any.whl", hash = "sha256:679e51dd4403591b2d6838a48de3d283f3d188412a9782faadf845f298736ba0"}, - {file = "zipp-3.16.2.tar.gz", hash = "sha256:ebc15946aa78bd63458992fc81ec3b6f7b1e92d51c35e6de1c3804e73b799147"}, -] - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] - [[package]] name = "zope-event" -version = "5.0" +version = "5.1.1" description = "Very basic event publishing system" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" files = [ - {file = "zope.event-5.0-py3-none-any.whl", hash = "sha256:2832e95014f4db26c47a13fdaef84cef2f4df37e66b59d8f1f4a8f319a632c26"}, - {file = "zope.event-5.0.tar.gz", hash = "sha256:bac440d8d9891b4068e2b5a2c5e2c9765a9df762944bda6955f96bb9b91e67cd"}, + {file = "zope_event-5.1.1-py3-none-any.whl", hash = "sha256:8d5ea7b992c42ce73a6fa9c2ba99a004c52cd9f05d87f3220768ef0329b92df7"}, + {file = "zope_event-5.1.1.tar.gz", hash = "sha256:c1ac931abf57efba71a2a313c5f4d57768a19b15c37e3f02f50eb1536be12d4e"}, ] [package.dependencies] -setuptools = "*" +setuptools = ">=75.8.2" [package.extras] docs = ["Sphinx"] @@ -3372,53 +3244,171 @@ test = ["zope.testrunner"] [[package]] name = "zope-interface" -version = "6.0" +version = "7.2" description = "Interfaces for Python" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "zope.interface-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f299c020c6679cb389814a3b81200fe55d428012c5e76da7e722491f5d205990"}, - {file = "zope.interface-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ee4b43f35f5dc15e1fec55ccb53c130adb1d11e8ad8263d68b1284b66a04190d"}, - {file = "zope.interface-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a158846d0fca0a908c1afb281ddba88744d403f2550dc34405c3691769cdd85"}, - {file = "zope.interface-6.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f72f23bab1848edb7472309e9898603141644faec9fd57a823ea6b4d1c4c8995"}, - {file = "zope.interface-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48f4d38cf4b462e75fac78b6f11ad47b06b1c568eb59896db5b6ec1094eb467f"}, - {file = "zope.interface-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:87b690bbee9876163210fd3f500ee59f5803e4a6607d1b1238833b8885ebd410"}, - {file = "zope.interface-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f2363e5fd81afb650085c6686f2ee3706975c54f331b426800b53531191fdf28"}, - {file = "zope.interface-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:af169ba897692e9cd984a81cb0f02e46dacdc07d6cf9fd5c91e81f8efaf93d52"}, - {file = "zope.interface-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fa90bac61c9dc3e1a563e5babb3fd2c0c1c80567e815442ddbe561eadc803b30"}, - {file = "zope.interface-6.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:89086c9d3490a0f265a3c4b794037a84541ff5ffa28bb9c24cc9f66566968464"}, - {file = "zope.interface-6.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:809fe3bf1a91393abc7e92d607976bbb8586512913a79f2bf7d7ec15bd8ea518"}, - {file = "zope.interface-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:0ec9653825f837fbddc4e4b603d90269b501486c11800d7c761eee7ce46d1bbb"}, - {file = "zope.interface-6.0-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:790c1d9d8f9c92819c31ea660cd43c3d5451df1df61e2e814a6f99cebb292788"}, - {file = "zope.interface-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b39b8711578dcfd45fc0140993403b8a81e879ec25d53189f3faa1f006087dca"}, - {file = "zope.interface-6.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eba51599370c87088d8882ab74f637de0c4f04a6d08a312dce49368ba9ed5c2a"}, - {file = "zope.interface-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ee934f023f875ec2cfd2b05a937bd817efcc6c4c3f55c5778cbf78e58362ddc"}, - {file = "zope.interface-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:042f2381118b093714081fd82c98e3b189b68db38ee7d35b63c327c470ef8373"}, - {file = "zope.interface-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:dfbbbf0809a3606046a41f8561c3eada9db811be94138f42d9135a5c47e75f6f"}, - {file = "zope.interface-6.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:424d23b97fa1542d7be882eae0c0fc3d6827784105264a8169a26ce16db260d8"}, - {file = "zope.interface-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e538f2d4a6ffb6edfb303ce70ae7e88629ac6e5581870e66c306d9ad7b564a58"}, - {file = "zope.interface-6.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12175ca6b4db7621aedd7c30aa7cfa0a2d65ea3a0105393e05482d7a2d367446"}, - {file = "zope.interface-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c3d7dfd897a588ec27e391edbe3dd320a03684457470415870254e714126b1f"}, - {file = "zope.interface-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:b3f543ae9d3408549a9900720f18c0194ac0fe810cecda2a584fd4dca2eb3bb8"}, - {file = "zope.interface-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d0583b75f2e70ec93f100931660328965bb9ff65ae54695fb3fa0a1255daa6f2"}, - {file = "zope.interface-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:23ac41d52fd15dd8be77e3257bc51bbb82469cf7f5e9a30b75e903e21439d16c"}, - {file = "zope.interface-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99856d6c98a326abbcc2363827e16bd6044f70f2ef42f453c0bd5440c4ce24e5"}, - {file = "zope.interface-6.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1592f68ae11e557b9ff2bc96ac8fc30b187e77c45a3c9cd876e3368c53dc5ba8"}, - {file = "zope.interface-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4407b1435572e3e1610797c9203ad2753666c62883b921318c5403fb7139dec2"}, - {file = "zope.interface-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:5171eb073474a5038321409a630904fd61f12dd1856dd7e9d19cd6fe092cbbc5"}, - {file = "zope.interface-6.0.tar.gz", hash = "sha256:aab584725afd10c710b8f1e6e208dbee2d0ad009f57d674cb9d1b3964037275d"}, + {file = "zope.interface-7.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ce290e62229964715f1011c3dbeab7a4a1e4971fd6f31324c4519464473ef9f2"}, + {file = "zope.interface-7.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:05b910a5afe03256b58ab2ba6288960a2892dfeef01336dc4be6f1b9ed02ab0a"}, + {file = "zope.interface-7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:550f1c6588ecc368c9ce13c44a49b8d6b6f3ca7588873c679bd8fd88a1b557b6"}, + {file = "zope.interface-7.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0ef9e2f865721553c6f22a9ff97da0f0216c074bd02b25cf0d3af60ea4d6931d"}, + {file = "zope.interface-7.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27f926f0dcb058211a3bb3e0e501c69759613b17a553788b2caeb991bed3b61d"}, + {file = "zope.interface-7.2-cp310-cp310-win_amd64.whl", hash = "sha256:144964649eba4c5e4410bb0ee290d338e78f179cdbfd15813de1a664e7649b3b"}, + {file = "zope.interface-7.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1909f52a00c8c3dcab6c4fad5d13de2285a4b3c7be063b239b8dc15ddfb73bd2"}, + {file = "zope.interface-7.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:80ecf2451596f19fd607bb09953f426588fc1e79e93f5968ecf3367550396b22"}, + {file = "zope.interface-7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:033b3923b63474800b04cba480b70f6e6243a62208071fc148354f3f89cc01b7"}, + {file = "zope.interface-7.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a102424e28c6b47c67923a1f337ede4a4c2bba3965b01cf707978a801fc7442c"}, + {file = "zope.interface-7.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:25e6a61dcb184453bb00eafa733169ab6d903e46f5c2ace4ad275386f9ab327a"}, + {file = "zope.interface-7.2-cp311-cp311-win_amd64.whl", hash = "sha256:3f6771d1647b1fc543d37640b45c06b34832a943c80d1db214a37c31161a93f1"}, + {file = "zope.interface-7.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:086ee2f51eaef1e4a52bd7d3111a0404081dadae87f84c0ad4ce2649d4f708b7"}, + {file = "zope.interface-7.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:21328fcc9d5b80768bf051faa35ab98fb979080c18e6f84ab3f27ce703bce465"}, + {file = "zope.interface-7.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6dd02ec01f4468da0f234da9d9c8545c5412fef80bc590cc51d8dd084138a89"}, + {file = "zope.interface-7.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8e7da17f53e25d1a3bde5da4601e026adc9e8071f9f6f936d0fe3fe84ace6d54"}, + {file = "zope.interface-7.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cab15ff4832580aa440dc9790b8a6128abd0b88b7ee4dd56abacbc52f212209d"}, + {file = "zope.interface-7.2-cp312-cp312-win_amd64.whl", hash = "sha256:29caad142a2355ce7cfea48725aa8bcf0067e2b5cc63fcf5cd9f97ad12d6afb5"}, + {file = "zope.interface-7.2-cp313-cp313-macosx_10_9_x86_64.whl", hash = "sha256:3e0350b51e88658d5ad126c6a57502b19d5f559f6cb0a628e3dc90442b53dd98"}, + {file = "zope.interface-7.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:15398c000c094b8855d7d74f4fdc9e73aa02d4d0d5c775acdef98cdb1119768d"}, + {file = "zope.interface-7.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:802176a9f99bd8cc276dcd3b8512808716492f6f557c11196d42e26c01a69a4c"}, + {file = "zope.interface-7.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb23f58a446a7f09db85eda09521a498e109f137b85fb278edb2e34841055398"}, + {file = "zope.interface-7.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a71a5b541078d0ebe373a81a3b7e71432c61d12e660f1d67896ca62d9628045b"}, + {file = "zope.interface-7.2-cp313-cp313-win_amd64.whl", hash = "sha256:4893395d5dd2ba655c38ceb13014fd65667740f09fa5bb01caa1e6284e48c0cd"}, + {file = "zope.interface-7.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d3a8ffec2a50d8ec470143ea3d15c0c52d73df882eef92de7537e8ce13475e8a"}, + {file = "zope.interface-7.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:31d06db13a30303c08d61d5fb32154be51dfcbdb8438d2374ae27b4e069aac40"}, + {file = "zope.interface-7.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e204937f67b28d2dca73ca936d3039a144a081fc47a07598d44854ea2a106239"}, + {file = "zope.interface-7.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:224b7b0314f919e751f2bca17d15aad00ddbb1eadf1cb0190fa8175edb7ede62"}, + {file = "zope.interface-7.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baf95683cde5bc7d0e12d8e7588a3eb754d7c4fa714548adcd96bdf90169f021"}, + {file = "zope.interface-7.2-cp38-cp38-win_amd64.whl", hash = "sha256:7dc5016e0133c1a1ec212fc87a4f7e7e562054549a99c73c8896fa3a9e80cbc7"}, + {file = "zope.interface-7.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7bd449c306ba006c65799ea7912adbbfed071089461a19091a228998b82b1fdb"}, + {file = "zope.interface-7.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a19a6cc9c6ce4b1e7e3d319a473cf0ee989cbbe2b39201d7c19e214d2dfb80c7"}, + {file = "zope.interface-7.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:72cd1790b48c16db85d51fbbd12d20949d7339ad84fd971427cf00d990c1f137"}, + {file = "zope.interface-7.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:52e446f9955195440e787596dccd1411f543743c359eeb26e9b2c02b077b0519"}, + {file = "zope.interface-7.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ad9913fd858274db8dd867012ebe544ef18d218f6f7d1e3c3e6d98000f14b75"}, + {file = "zope.interface-7.2-cp39-cp39-win_amd64.whl", hash = "sha256:1090c60116b3da3bfdd0c03406e2f14a1ff53e5771aebe33fec1edc0a350175d"}, + {file = "zope.interface-7.2.tar.gz", hash = "sha256:8b49f1a3d1ee4cdaf5b32d2e738362c7f5e40ac8b46dd7d1a65e82a4872728fe"}, ] [package.dependencies] setuptools = "*" [package.extras] -docs = ["Sphinx", "repoze.sphinx.autointerface"] -test = ["coverage (>=5.0.3)", "zope.event", "zope.testing"] -testing = ["coverage (>=5.0.3)", "zope.event", "zope.testing"] +docs = ["Sphinx", "furo", "repoze.sphinx.autointerface"] +test = ["coverage[toml]", "zope.event", "zope.testing"] +testing = ["coverage[toml]", "zope.event", "zope.testing"] + +[[package]] +name = "zstandard" +version = "0.23.0" +description = "Zstandard bindings for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "zstandard-0.23.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bf0a05b6059c0528477fba9054d09179beb63744355cab9f38059548fedd46a9"}, + {file = "zstandard-0.23.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fc9ca1c9718cb3b06634c7c8dec57d24e9438b2aa9a0f02b8bb36bf478538880"}, + {file = "zstandard-0.23.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77da4c6bfa20dd5ea25cbf12c76f181a8e8cd7ea231c673828d0386b1740b8dc"}, + {file = "zstandard-0.23.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b2170c7e0367dde86a2647ed5b6f57394ea7f53545746104c6b09fc1f4223573"}, + {file = "zstandard-0.23.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c16842b846a8d2a145223f520b7e18b57c8f476924bda92aeee3a88d11cfc391"}, + {file = "zstandard-0.23.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:157e89ceb4054029a289fb504c98c6a9fe8010f1680de0201b3eb5dc20aa6d9e"}, + {file = "zstandard-0.23.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:203d236f4c94cd8379d1ea61db2fce20730b4c38d7f1c34506a31b34edc87bdd"}, + {file = "zstandard-0.23.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:dc5d1a49d3f8262be192589a4b72f0d03b72dcf46c51ad5852a4fdc67be7b9e4"}, + {file = "zstandard-0.23.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:752bf8a74412b9892f4e5b58f2f890a039f57037f52c89a740757ebd807f33ea"}, + {file = "zstandard-0.23.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:80080816b4f52a9d886e67f1f96912891074903238fe54f2de8b786f86baded2"}, + {file = "zstandard-0.23.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:84433dddea68571a6d6bd4fbf8ff398236031149116a7fff6f777ff95cad3df9"}, + {file = "zstandard-0.23.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:ab19a2d91963ed9e42b4e8d77cd847ae8381576585bad79dbd0a8837a9f6620a"}, + {file = "zstandard-0.23.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:59556bf80a7094d0cfb9f5e50bb2db27fefb75d5138bb16fb052b61b0e0eeeb0"}, + {file = "zstandard-0.23.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:27d3ef2252d2e62476389ca8f9b0cf2bbafb082a3b6bfe9d90cbcbb5529ecf7c"}, + {file = "zstandard-0.23.0-cp310-cp310-win32.whl", hash = "sha256:5d41d5e025f1e0bccae4928981e71b2334c60f580bdc8345f824e7c0a4c2a813"}, + {file = "zstandard-0.23.0-cp310-cp310-win_amd64.whl", hash = "sha256:519fbf169dfac1222a76ba8861ef4ac7f0530c35dd79ba5727014613f91613d4"}, + {file = "zstandard-0.23.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:34895a41273ad33347b2fc70e1bff4240556de3c46c6ea430a7ed91f9042aa4e"}, + {file = "zstandard-0.23.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:77ea385f7dd5b5676d7fd943292ffa18fbf5c72ba98f7d09fc1fb9e819b34c23"}, + {file = "zstandard-0.23.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:983b6efd649723474f29ed42e1467f90a35a74793437d0bc64a5bf482bedfa0a"}, + {file = "zstandard-0.23.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80a539906390591dd39ebb8d773771dc4db82ace6372c4d41e2d293f8e32b8db"}, + {file = "zstandard-0.23.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:445e4cb5048b04e90ce96a79b4b63140e3f4ab5f662321975679b5f6360b90e2"}, + {file = "zstandard-0.23.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd30d9c67d13d891f2360b2a120186729c111238ac63b43dbd37a5a40670b8ca"}, + {file = "zstandard-0.23.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d20fd853fbb5807c8e84c136c278827b6167ded66c72ec6f9a14b863d809211c"}, + {file = "zstandard-0.23.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ed1708dbf4d2e3a1c5c69110ba2b4eb6678262028afd6c6fbcc5a8dac9cda68e"}, + {file = "zstandard-0.23.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:be9b5b8659dff1f913039c2feee1aca499cfbc19e98fa12bc85e037c17ec6ca5"}, + {file = "zstandard-0.23.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:65308f4b4890aa12d9b6ad9f2844b7ee42c7f7a4fd3390425b242ffc57498f48"}, + {file = "zstandard-0.23.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:98da17ce9cbf3bfe4617e836d561e433f871129e3a7ac16d6ef4c680f13a839c"}, + {file = "zstandard-0.23.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:8ed7d27cb56b3e058d3cf684d7200703bcae623e1dcc06ed1e18ecda39fee003"}, + {file = "zstandard-0.23.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:b69bb4f51daf461b15e7b3db033160937d3ff88303a7bc808c67bbc1eaf98c78"}, + {file = "zstandard-0.23.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:034b88913ecc1b097f528e42b539453fa82c3557e414b3de9d5632c80439a473"}, + {file = "zstandard-0.23.0-cp311-cp311-win32.whl", hash = "sha256:f2d4380bf5f62daabd7b751ea2339c1a21d1c9463f1feb7fc2bdcea2c29c3160"}, + {file = "zstandard-0.23.0-cp311-cp311-win_amd64.whl", hash = "sha256:62136da96a973bd2557f06ddd4e8e807f9e13cbb0bfb9cc06cfe6d98ea90dfe0"}, + {file = "zstandard-0.23.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b4567955a6bc1b20e9c31612e615af6b53733491aeaa19a6b3b37f3b65477094"}, + {file = "zstandard-0.23.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e172f57cd78c20f13a3415cc8dfe24bf388614324d25539146594c16d78fcc8"}, + {file = "zstandard-0.23.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0e166f698c5a3e914947388c162be2583e0c638a4703fc6a543e23a88dea3c1"}, + {file = "zstandard-0.23.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:12a289832e520c6bd4dcaad68e944b86da3bad0d339ef7989fb7e88f92e96072"}, + {file = "zstandard-0.23.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d50d31bfedd53a928fed6707b15a8dbeef011bb6366297cc435accc888b27c20"}, + {file = "zstandard-0.23.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72c68dda124a1a138340fb62fa21b9bf4848437d9ca60bd35db36f2d3345f373"}, + {file = "zstandard-0.23.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:53dd9d5e3d29f95acd5de6802e909ada8d8d8cfa37a3ac64836f3bc4bc5512db"}, + {file = "zstandard-0.23.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:6a41c120c3dbc0d81a8e8adc73312d668cd34acd7725f036992b1b72d22c1772"}, + {file = "zstandard-0.23.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:40b33d93c6eddf02d2c19f5773196068d875c41ca25730e8288e9b672897c105"}, + {file = "zstandard-0.23.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9206649ec587e6b02bd124fb7799b86cddec350f6f6c14bc82a2b70183e708ba"}, + {file = "zstandard-0.23.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:76e79bc28a65f467e0409098fa2c4376931fd3207fbeb6b956c7c476d53746dd"}, + {file = "zstandard-0.23.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:66b689c107857eceabf2cf3d3fc699c3c0fe8ccd18df2219d978c0283e4c508a"}, + {file = "zstandard-0.23.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9c236e635582742fee16603042553d276cca506e824fa2e6489db04039521e90"}, + {file = "zstandard-0.23.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a8fffdbd9d1408006baaf02f1068d7dd1f016c6bcb7538682622c556e7b68e35"}, + {file = "zstandard-0.23.0-cp312-cp312-win32.whl", hash = "sha256:dc1d33abb8a0d754ea4763bad944fd965d3d95b5baef6b121c0c9013eaf1907d"}, + {file = "zstandard-0.23.0-cp312-cp312-win_amd64.whl", hash = "sha256:64585e1dba664dc67c7cdabd56c1e5685233fbb1fc1966cfba2a340ec0dfff7b"}, + {file = "zstandard-0.23.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:576856e8594e6649aee06ddbfc738fec6a834f7c85bf7cadd1c53d4a58186ef9"}, + {file = "zstandard-0.23.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:38302b78a850ff82656beaddeb0bb989a0322a8bbb1bf1ab10c17506681d772a"}, + {file = "zstandard-0.23.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2240ddc86b74966c34554c49d00eaafa8200a18d3a5b6ffbf7da63b11d74ee2"}, + {file = "zstandard-0.23.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2ef230a8fd217a2015bc91b74f6b3b7d6522ba48be29ad4ea0ca3a3775bf7dd5"}, + {file = "zstandard-0.23.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:774d45b1fac1461f48698a9d4b5fa19a69d47ece02fa469825b442263f04021f"}, + {file = "zstandard-0.23.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f77fa49079891a4aab203d0b1744acc85577ed16d767b52fc089d83faf8d8ed"}, + {file = "zstandard-0.23.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ac184f87ff521f4840e6ea0b10c0ec90c6b1dcd0bad2f1e4a9a1b4fa177982ea"}, + {file = "zstandard-0.23.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c363b53e257246a954ebc7c488304b5592b9c53fbe74d03bc1c64dda153fb847"}, + {file = "zstandard-0.23.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e7792606d606c8df5277c32ccb58f29b9b8603bf83b48639b7aedf6df4fe8171"}, + {file = "zstandard-0.23.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a0817825b900fcd43ac5d05b8b3079937073d2b1ff9cf89427590718b70dd840"}, + {file = "zstandard-0.23.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:9da6bc32faac9a293ddfdcb9108d4b20416219461e4ec64dfea8383cac186690"}, + {file = "zstandard-0.23.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:fd7699e8fd9969f455ef2926221e0233f81a2542921471382e77a9e2f2b57f4b"}, + {file = "zstandard-0.23.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:d477ed829077cd945b01fc3115edd132c47e6540ddcd96ca169facff28173057"}, + {file = "zstandard-0.23.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa6ce8b52c5987b3e34d5674b0ab529a4602b632ebab0a93b07bfb4dfc8f8a33"}, + {file = "zstandard-0.23.0-cp313-cp313-win32.whl", hash = "sha256:a9b07268d0c3ca5c170a385a0ab9fb7fdd9f5fd866be004c4ea39e44edce47dd"}, + {file = "zstandard-0.23.0-cp313-cp313-win_amd64.whl", hash = "sha256:f3513916e8c645d0610815c257cbfd3242adfd5c4cfa78be514e5a3ebb42a41b"}, + {file = "zstandard-0.23.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2ef3775758346d9ac6214123887d25c7061c92afe1f2b354f9388e9e4d48acfc"}, + {file = "zstandard-0.23.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4051e406288b8cdbb993798b9a45c59a4896b6ecee2f875424ec10276a895740"}, + {file = "zstandard-0.23.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2d1a054f8f0a191004675755448d12be47fa9bebbcffa3cdf01db19f2d30a54"}, + {file = "zstandard-0.23.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f83fa6cae3fff8e98691248c9320356971b59678a17f20656a9e59cd32cee6d8"}, + {file = "zstandard-0.23.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:32ba3b5ccde2d581b1e6aa952c836a6291e8435d788f656fe5976445865ae045"}, + {file = "zstandard-0.23.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f146f50723defec2975fb7e388ae3a024eb7151542d1599527ec2aa9cacb152"}, + {file = "zstandard-0.23.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1bfe8de1da6d104f15a60d4a8a768288f66aa953bbe00d027398b93fb9680b26"}, + {file = "zstandard-0.23.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:29a2bc7c1b09b0af938b7a8343174b987ae021705acabcbae560166567f5a8db"}, + {file = "zstandard-0.23.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:61f89436cbfede4bc4e91b4397eaa3e2108ebe96d05e93d6ccc95ab5714be512"}, + {file = "zstandard-0.23.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:53ea7cdc96c6eb56e76bb06894bcfb5dfa93b7adcf59d61c6b92674e24e2dd5e"}, + {file = "zstandard-0.23.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:a4ae99c57668ca1e78597d8b06d5af837f377f340f4cce993b551b2d7731778d"}, + {file = "zstandard-0.23.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:379b378ae694ba78cef921581ebd420c938936a153ded602c4fea612b7eaa90d"}, + {file = "zstandard-0.23.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:50a80baba0285386f97ea36239855f6020ce452456605f262b2d33ac35c7770b"}, + {file = "zstandard-0.23.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:61062387ad820c654b6a6b5f0b94484fa19515e0c5116faf29f41a6bc91ded6e"}, + {file = "zstandard-0.23.0-cp38-cp38-win32.whl", hash = "sha256:b8c0bd73aeac689beacd4e7667d48c299f61b959475cdbb91e7d3d88d27c56b9"}, + {file = "zstandard-0.23.0-cp38-cp38-win_amd64.whl", hash = "sha256:a05e6d6218461eb1b4771d973728f0133b2a4613a6779995df557f70794fd60f"}, + {file = "zstandard-0.23.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3aa014d55c3af933c1315eb4bb06dd0459661cc0b15cd61077afa6489bec63bb"}, + {file = "zstandard-0.23.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0a7f0804bb3799414af278e9ad51be25edf67f78f916e08afdb983e74161b916"}, + {file = "zstandard-0.23.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb2b1ecfef1e67897d336de3a0e3f52478182d6a47eda86cbd42504c5cbd009a"}, + {file = "zstandard-0.23.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:837bb6764be6919963ef41235fd56a6486b132ea64afe5fafb4cb279ac44f259"}, + {file = "zstandard-0.23.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1516c8c37d3a053b01c1c15b182f3b5f5eef19ced9b930b684a73bad121addf4"}, + {file = "zstandard-0.23.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48ef6a43b1846f6025dde6ed9fee0c24e1149c1c25f7fb0a0585572b2f3adc58"}, + {file = "zstandard-0.23.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11e3bf3c924853a2d5835b24f03eeba7fc9b07d8ca499e247e06ff5676461a15"}, + {file = "zstandard-0.23.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2fb4535137de7e244c230e24f9d1ec194f61721c86ebea04e1581d9d06ea1269"}, + {file = "zstandard-0.23.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8c24f21fa2af4bb9f2c492a86fe0c34e6d2c63812a839590edaf177b7398f700"}, + {file = "zstandard-0.23.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a8c86881813a78a6f4508ef9daf9d4995b8ac2d147dcb1a450448941398091c9"}, + {file = "zstandard-0.23.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:fe3b385d996ee0822fd46528d9f0443b880d4d05528fd26a9119a54ec3f91c69"}, + {file = "zstandard-0.23.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:82d17e94d735c99621bf8ebf9995f870a6b3e6d14543b99e201ae046dfe7de70"}, + {file = "zstandard-0.23.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:c7c517d74bea1a6afd39aa612fa025e6b8011982a0897768a2f7c8ab4ebb78a2"}, + {file = "zstandard-0.23.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1fd7e0f1cfb70eb2f95a19b472ee7ad6d9a0a992ec0ae53286870c104ca939e5"}, + {file = "zstandard-0.23.0-cp39-cp39-win32.whl", hash = "sha256:43da0f0092281bf501f9c5f6f3b4c975a8a0ea82de49ba3f7100e64d422a1274"}, + {file = "zstandard-0.23.0-cp39-cp39-win_amd64.whl", hash = "sha256:f8346bfa098532bc1fb6c7ef06783e969d87a99dd1d2a5a18a892c1d7a643c58"}, + {file = "zstandard-0.23.0.tar.gz", hash = "sha256:b2d8c62d08e7255f68f7a740bae85b3c9b8e5466baa9cbf7f57f1cde0ac6bc09"}, +] + +[package.dependencies] +cffi = {version = ">=1.11", optional = true, markers = "platform_python_implementation == \"PyPy\" or extra == \"cffi\""} + +[package.extras] +cffi = ["cffi (>=1.11)"] [metadata] lock-version = "2.0" -python-versions = ">=3.8.1,<4.0" -content-hash = "5f4f1dbd28ebebce329e08e9f60bf2dbda90f48773dc6b52afc9b5a6aaedb200" +python-versions = ">=3.12.0,<4.0" +content-hash = "8193e38eae8a10c7190964206faa8be81d642ab07786134bebc7790b1b63829e" diff --git a/pyproject.toml b/pyproject.toml index d6cfc731..4a8d7ee7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,13 +28,7 @@ exclude = ''' | node_modules )/ ''' -max_line_length = 99 - -[tool.djlint] -blank_line_after_tag = "load,extends,include,endblock" -format_attribute_template_tags = true -ignore = "H011,H021,H023,H031" -profile = "jinja" +line-length = 99 [tool.isort] profile = "black" @@ -48,10 +42,6 @@ disallow_untyped_defs = true exclude = "/(temp|tests)/$" ignore_missing_imports = true -[[tool.mypy.overrides]] -ignore_errors = true -module = "*.smb_fix" - [[tool.mypy.overrides]] ignore_errors = true module = "*.ldap_auth" @@ -66,7 +56,8 @@ authors = [ "Christopher Pickering ", "Dan Ryan", "Richard Schissler", - "Eric Shultz" + "Eric Shultz", + "Payton Snider III" ] classifiers = [ "Programming Language :: Python :: 3 :: Only", @@ -97,81 +88,75 @@ packages = [ ] readme = "readme.md" repository = "https://github.com/atlas-bi/Hub" -version = "2.12.3" +version = "3.5.3" [tool.poetry.dependencies] -Flask = "^2.0.1" -Flask-APScheduler = "^1.12.2" -Flask-Assets = "^2.0" -Flask-Caching = "^2.0.0" -Flask-Compress = "1.14" +Flask = "^3.1.1" +Flask-APScheduler = "^1.13.1" +Flask-Assets = "^2.1.0" +Flask-Caching = "^2.3.1" +Flask-Compress = "1.17" Flask-Executor = "^1.0.0" -Flask-HTMLmin = "^2.1.0" -Flask-Login = "^0.6.0" -Flask-Migrate = "^4.0.0" +Flask-HTMLmin = "^3.0.0" +Flask-Login = "^0.6.3" +Flask-Migrate = "^4.1.0" Flask-SQLAlchemy = "^3.1.1" Flask-Script = "^2.0.6" -Jinja2 = "^3.0.1" -SQLAlchemy = "^2.0.20" -SQLAlchemy-Utils = "^0.41.0" -azure-devops = "^7.1.0b3" -bs4 = "^0.0.1" -cryptography = "^41.0.0" -flask-assets = {git = "https://github.com/christopherpickering/flask-assets.git"} +Flask-session = "^0.8.0" +Jinja2 = "^3.1.6" +SQLAlchemy = "^2.0.43" +SQLAlchemy-Utils = "^0.41.2" +azure-devops = "^7.1.0b4" +bs4 = "^0.0.2" +cryptography = "^43.0.3" flask-redis = "^0.4.0" -flask-session2 = "^1.2.0" -gevent = "^23.9.1" -gunicorn = "^21.0.0" +gevent = "^24.11.1" +gunicorn = "^23.0.0" is-safe-url = "^1.0" jaydebeapi = "^1.2.3" -paramiko = "^3.0.0" -pathvalidate = "^3.0.0" -psutil = "^5.8.0" -psycopg2-binary = "^2.9.1" -pyodbc = "^4.0.31" -pysaml2 = "^7.0.1" -pysmb = "^1.2.7" -python = ">=3.8.1,<4.0" -python-dateutil = "^2.8.2" -python-gnupg = "^0.5.0" -python-ldap = "^3.3.1" -python3-saml = "^1.12.0" -pytz-deprecation-shim = "^0.1.0-post.0" -rcssmin = "^1.0.6" -redis = "^5.0.0" -regex = "^2023.0.0" +paramiko = "^3.5.1" +pathvalidate = "^3.3.1" +psutil = "^7.0.0" +psycopg2-binary = "^2.9.10" +pyodbc = "^5.2.0" +pysaml2 = "^7.5.2" +python = ">=3.12.0,<4.0" +python-dateutil = "^2.9.0.post0" +python-gnupg = "^0.5.4" +python-ldap = "3.4.4" +python3-saml = "^1.16.0" +pytz-deprecation-shim = "^0.1.0" +rcssmin = "^1.2.1" +redis = "^5.3.1" +regex = "^2024.11.6" relative-to-now = "^1.0.0" -requests = "^2.26.0" -setuptools = "^68.0.0" -sqlalchemy2-stubs = "^0.0.2-alpha.32" -supervisor = "^4.2.2" -tomli = "^2.0.1" -tomlkit = "^0.12.0" -virtualenv = "^20.7.2" +requests = "^2.32.4" +setuptools = "^78.1.1" +smbprotocol = "^1.15.0" +supervisor = "^4.2.5" +tomli = "^2.2.1" +tomlkit = "^0.13.2" +virtualenv = "^20.33.1" webassets-rollup = "^1.0.0" -whitenoise = "^6.2.0" -xmlsec = "^1.3.11" +whitenoise = "^6.9.0" +xmlsec = "^1.3.16" [tool.poetry.group.dev.dependencies] -black = "^23.0.0" -coverage = "^7.0.0" -djlint = "^1.19.17" -flask-debugtoolbar = "^0.13.1" -isort = "^5.10.1" -mypy = "0.991" -pre-commit = "^3.0.0" -pytest = "^7.2.0" -pytest-cov = "^4.0.0" -radon = "^6.0.0" -ruff = "^0.0.289" +black = "^25.1.0" +coverage = "^7.10.3" +flask-debugtoolbar = "^0.16.0" +isort = "^6.0.1" +mypy = "1.12.0" +pre-commit = "^4.3.0" +pytest = "^8.4.1" +pytest-cov = "^6.2.1" +radon = "^6.0.1" +ruff = "^0.11.13" toml = "^0.10.2" -tox = "^4.0.8" -types-flask = "^1.1.6" -types-jinja2 = "^2.11.9" -types-paramiko = "^2.12.0.1" -types-python-dateutil = "^2.8.19.4" -types-redis = "^4.3.21.6" -types-requests = "^2.28.11.5" +tox = "^4.28.4" +types-paramiko = "^3.5.0.20250801" +types-python-dateutil = "^2.9.0.20250809" +types-requests = "^2.32.4.20250809" [tool.pytest] @@ -181,11 +166,13 @@ filterwarnings = "always" testpaths = "tests" [tool.ruff] -extend-exclude = ['test*', 'ldap_auth*'] -ignore = ['RUF015', 'B034', 'PLR1714', 'S602', 'S605', 'D213', 'S324', 'D203', 'S301', 'N818', 'PLW0120', 'PLR0915', 'S110', 'S101', 'C417', 'PLR0913', 'D212', 'RUF100', 'B020', 'S106', 'PLC1901', 'PLR0911', 'F401', "E501", 'SIM118', 'PLR2004', 'PLW2901', 'B905', 'E402', 'PLR0912', 'B904', 'ERA001', 'PLR5501', 'D401', 'SIM108'] +extend-exclude = ['test*', 'ldap_auth*', 'migrations*'] + +[tool.ruff.lint] +ignore = ['RUF015', 'B034', 'PLR1714', 'S602', 'S605', 'D213', 'S324', 'D203', 'S301', 'N818', 'PLW0120', 'PLR0915', 'S110', 'S101', 'C417', 'PLR0913', 'D212', 'RUF100', 'B020', 'S106', 'PLC1901', 'PLR0911', 'F401', "E501", 'SIM118', 'PLR2004', 'PLW2901', 'B905', 'E402', 'PLR0912', 'B904', 'ERA001', 'PLR5501', 'D401', 'SIM108', 'S507'] select = ['F', 'E', 'W', 'N', 'D', 'S', 'B', 'C4', 'T20', 'Q', 'SIM', 'ERA', 'PL', 'RUF'] -[tool.ruff.per-file-ignores] +[tool.ruff.lint.per-file-ignores] "runner/scripts/em_python.py" = ['SIM114'] [tool.setuptools_scm] diff --git a/runner/.coveragerc b/runner/.coveragerc index b0214b4e..16f7c83c 100644 --- a/runner/.coveragerc +++ b/runner/.coveragerc @@ -5,7 +5,6 @@ branch = True [report] omit = */confi_text.py - */smb_fix.py */flask_simpleldap.py */seed.py tests/* diff --git a/runner/__init__.py b/runner/__init__.py index 501e881a..40483ce3 100644 --- a/runner/__init__.py +++ b/runner/__init__.py @@ -34,6 +34,7 @@ cp web/model.py scheduler/ """ + import logging import os diff --git a/runner/extensions.py b/runner/extensions.py index df8ec6b3..684c3c34 100644 --- a/runner/extensions.py +++ b/runner/extensions.py @@ -13,10 +13,50 @@ """ +import datetime + from flask_executor import Executor from flask_redis import FlaskRedis from flask_sqlalchemy import SQLAlchemy +from sqlalchemy import String +from sqlalchemy.orm import DeclarativeBase, mapped_column, registry +from sqlalchemy.sql import functions +from typing_extensions import Annotated + +str_5 = Annotated[str, 5] +str_10 = Annotated[str, 10] +str_30 = Annotated[str, 30] +str_120 = Annotated[str, 120] +str_200 = Annotated[str, 200] +str_400 = Annotated[str, 400] +str_500 = Annotated[str, 500] +str_1000 = Annotated[str, 1000] +str_8000 = Annotated[str, 8000] +intpk = Annotated[int, mapped_column(primary_key=True, index=True)] +timestamp = Annotated[ + datetime.datetime, + mapped_column(nullable=False, server_default=functions.now()), +] + + +class Base(DeclarativeBase): + """Declare base types.""" + + registry = registry( + type_annotation_map={ + str_120: String(120), + str_200: String(200), + str_500: String(500), + str_1000: String(1000), + str_8000: String(8000), + str_5: String(5), + str_30: String(30), + str_400: String(400), + } + ) + + +db = SQLAlchemy(model_class=Base) -db = SQLAlchemy() executor = Executor() redis_client = FlaskRedis() diff --git a/runner/model.py b/runner/model.py index 1ce36e25..a35722b1 100644 --- a/runner/model.py +++ b/runner/model.py @@ -20,85 +20,78 @@ """ - import datetime -from dataclasses import dataclass -from typing import Optional +from typing import List, Optional -from sqlalchemy.orm import declarative_base +from sqlalchemy.orm import Mapped, mapped_column, relationship from sqlalchemy.sql import functions -from .extensions import db - -Base = declarative_base() +from .extensions import ( + db, + intpk, + str_5, + str_10, + str_30, + str_120, + str_200, + str_400, + str_500, + str_1000, + str_8000, + timestamp, +) -@dataclass class LoginType(db.Model): """Lookup table of user login types.""" __tablename__ = "login_type" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(120), nullable=True) - login = db.relationship("Login", backref="login_type", lazy=True) + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + login: Mapped[List["Login"]] = relationship(back_populates="login_type", lazy=True) -@dataclass class Login(db.Model): """Table should contain all login attempts.""" __tablename__ = "login" - id: Optional[int] = None - username: Optional[str] = None - login_date: Optional[datetime.datetime] = None - type_id: Optional[int] = None - id = db.Column(db.Integer, primary_key=True, index=True) - type_id = db.Column(db.Integer, db.ForeignKey(LoginType.id), nullable=True) - username = db.Column(db.String(120), nullable=True) - login_date = db.Column(db.DateTime, server_default=functions.now()) + id: Mapped[intpk] + type_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(LoginType.id)) + username: Mapped[Optional[str_120]] + login_date: Mapped[Optional[timestamp]] + login_type: Mapped["LoginType"] = relationship(back_populates="login") -@dataclass class User(db.Model): """Table containing any user-specific information.""" # pylint: disable=too-many-instance-attributes - id: Optional[int] = None - account_name: Optional[str] = None - email: Optional[str] = None - full_name: Optional[str] = None - first_name: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - account_name = db.Column(db.String(200), nullable=True, index=True) - email = db.Column(db.String(200), nullable=True, index=True) - full_name = db.Column(db.String(200), nullable=True) - first_name = db.Column(db.String(200), nullable=True) - project_owner = db.relationship( - "Project", backref="project_owner", lazy=True, foreign_keys="Project.owner_id" + id: Mapped[intpk] + account_name: Mapped[Optional[str_200]] = mapped_column(index=True) + email: Mapped[Optional[str_200]] = mapped_column(index=True) + full_name: Mapped[Optional[str_200]] + first_name: Mapped[Optional[str_200]] + project_owner: Mapped["Project"] = relationship( + backref="project_owner", lazy=True, foreign_keys="Project.owner_id" ) - project_creator = db.relationship( - "Project", + project_creator: Mapped["Project"] = relationship( backref="project_creator", lazy=True, foreign_keys="Project.creator_id", ) - project_updater = db.relationship( - "Project", + project_updater: Mapped["Project"] = relationship( backref="project_updater", lazy=True, foreign_keys="Project.updater_id", ) - task_creator = db.relationship( - "Task", backref="task_creator", lazy=True, foreign_keys="Task.creator_id" + task_creator: Mapped["Task"] = relationship( + backref="task_creator", lazy=True, foreign_keys="Task.creator_id" ) - task_updater = db.relationship( - "Task", backref="task_updater", lazy=True, foreign_keys="Task.updater_id" + task_updater: Mapped["Task"] = relationship( + backref="task_updater", lazy=True, foreign_keys="Task.updater_id" ) is_authenticated = True is_active = True @@ -113,78 +106,40 @@ def __str__(self) -> str: return self.full_name or f"User {self.id}" -@dataclass class Project(db.Model): """Table containing project details.""" # pylint: disable=too-many-instance-attributes - id: Optional[int] = None - name: Optional[str] = None - description: Optional[str] = None - owner_id: Optional[int] = None - cron: Optional[int] = None - cron_year: Optional[int] = None - cron_month: Optional[int] = None - cron_week: Optional[int] = None - cron_day: Optional[int] = None - cron_week_day: Optional[int] = None - cron_hour: Optional[int] = None - cron_min: Optional[int] = None - cron_sec: Optional[int] = None - cron_start_date: Optional[datetime.datetime] = None - cron_end_date: Optional[datetime.datetime] = None - - intv: Optional[int] = None - intv_type: Optional[str] = None - intv_value: Optional[int] = None - intv_start_date: Optional[datetime.datetime] = None - intv_end_date: Optional[datetime.datetime] = None - - ooff: Optional[int] = None - ooff_date: Optional[datetime.datetime] = None - - created: Optional[datetime.datetime] = None - creator_id: Optional[int] = None - updated: Optional[datetime.datetime] = None - updater_id: Optional[int] = None - - global_params: Optional[str] = None - - sequence_tasks: Optional[int] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(120), nullable=True) - description = db.Column(db.String(8000), nullable=True) - owner_id = db.Column(db.Integer, db.ForeignKey(User.id), nullable=True, index=True) - - cron = db.Column(db.Integer, nullable=True) - cron_year = db.Column(db.Integer, nullable=True) - cron_month = db.Column(db.Integer, nullable=True) - cron_week = db.Column(db.Integer, nullable=True) - cron_day = db.Column(db.Integer, nullable=True) - cron_week_day = db.Column(db.Integer, nullable=True) - cron_hour = db.Column(db.Integer, nullable=True) - cron_min = db.Column(db.Integer, nullable=True) - cron_sec = db.Column(db.Integer, nullable=True) - cron_start_date = db.Column(db.DateTime, nullable=True) - cron_end_date = db.Column(db.DateTime, nullable=True) - - intv = db.Column(db.Integer, nullable=True) - intv_type = db.Column(db.String(5), nullable=True) - intv_value = db.Column(db.Integer, nullable=True) - intv_start_date = db.Column(db.DateTime, nullable=True) - intv_end_date = db.Column(db.DateTime, nullable=True) - - ooff = db.Column(db.Integer, nullable=True) - ooff_date = db.Column(db.DateTime, nullable=True) - - global_params = db.Column(db.String(8000), nullable=True) - - sequence_tasks = db.Column(db.Integer, nullable=True) - - task = db.relationship( - "Task", + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + description: Mapped[Optional[str_8000]] + owner_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(User.id), index=True) + + cron: Mapped[Optional[int]] + cron_year: Mapped[Optional[str_120]] + cron_month: Mapped[Optional[str_120]] + cron_week: Mapped[Optional[str_120]] + cron_day: Mapped[Optional[str_120]] + cron_week_day: Mapped[Optional[str_120]] + cron_hour: Mapped[Optional[str_120]] + cron_min: Mapped[Optional[str_120]] + cron_sec: Mapped[Optional[str_120]] + cron_start_date: Mapped[Optional[datetime.datetime]] + cron_end_date: Mapped[Optional[datetime.datetime]] + + intv: Mapped[Optional[int]] + intv_type: Mapped[Optional[str_5]] + intv_value: Mapped[Optional[int]] + intv_start_date: Mapped[Optional[datetime.datetime]] + intv_end_date: Mapped[Optional[datetime.datetime]] + ooff: Mapped[Optional[int]] + ooff_date: Mapped[Optional[datetime.datetime]] + + global_params: Mapped[Optional[str_8000]] + sequence_tasks: Mapped[Optional[int]] + + task: Mapped[List["Task"]] = relationship( backref="project", lazy="dynamic", cascade="all, delete, delete-orphan", @@ -192,68 +147,53 @@ class Project(db.Model): ) # projectparams link - params = db.relationship( - "ProjectParam", + params: Mapped[List["ProjectParam"]] = relationship( backref="project", lazy=True, cascade="all, delete, delete-orphan", passive_deletes=True, ) - created = db.Column(db.DateTime, server_default=functions.now()) - creator_id = db.Column( - db.Integer, db.ForeignKey(User.id), nullable=True, index=True - ) - updated = db.Column(db.DateTime, onupdate=functions.now()) - updater_id = db.Column( - db.Integer, db.ForeignKey(User.id), nullable=True, index=True - ) + created: Mapped[Optional[timestamp]] + creator_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(User.id), index=True) + updated: Mapped[Optional[datetime.datetime]] = mapped_column(onupdate=functions.now()) + updater_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(User.id), index=True) def __str__(self) -> str: """Return default string.""" return str(self.name) -@dataclass class TaskSourceType(db.Model): """Lookup table of task source types.""" __tablename__ = "task_source_type" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(120), nullable=True) - task = db.relationship("Task", backref="source_type", lazy=True) + id: Mapped[int] = mapped_column(primary_key=True) + name: Mapped[Optional[str_120]] + task: Mapped["Task"] = relationship(backref="source_type", lazy=True) -@dataclass class TaskSourceQueryType(db.Model): """Lookup table of task query source types.""" __tablename__ = "task_source_query_type" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(120), nullable=True) - task = db.relationship("Task", backref="query_type", lazy=True) + id: Mapped[int] = mapped_column(primary_key=True) + name: Mapped[Optional[str_120]] + task: Mapped["Task"] = relationship(backref="query_type", lazy=True) -@dataclass class TaskProcessingType(db.Model): """Lookup table of task query source types.""" __tablename__ = "task_processing_type" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(120), nullable=True) - task = db.relationship("Task", backref="processing_type", lazy=True) + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + task: Mapped["Task"] = relationship(backref="processing_type", lazy=True) -@dataclass class TaskStatus(db.Model): """Lookup table of task status types. @@ -261,20 +201,16 @@ class TaskStatus(db.Model): """ __tablename__ = "task_status" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(1000), nullable=True) - task = db.relationship( - "Task", + id: Mapped[intpk] + name: Mapped[Optional[str_1000]] + task: Mapped[List["Task"]] = relationship( backref="status", lazy="dynamic", cascade="all, delete, delete-orphan", passive_deletes=True, ) - task_log = db.relationship( - "TaskLog", + task_log: Mapped[List["TaskLog"]] = relationship( backref="status", lazy="dynamic", cascade="all, delete, delete-orphan", @@ -282,60 +218,45 @@ class TaskStatus(db.Model): ) -@dataclass class Connection(db.Model): """Table containing all destination information.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection" - id: Optional[int] = None - name: Optional[str] = None - description: Optional[str] = None - address: Optional[str] = None - primary_contact: Optional[str] = None - primary_contact_email: Optional[str] = None - primary_contact_phone: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(120), nullable=True) - description = db.Column(db.String(120), nullable=True) - address = db.Column(db.String(120), nullable=True) - primary_contact = db.Column(db.String(400), nullable=True) - primary_contact_email = db.Column(db.String(120), nullable=True) - primary_contact_phone = db.Column(db.String(120), nullable=True) - ssh = db.relationship( - "ConnectionSsh", + + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + description: Mapped[Optional[str_120]] + address: Mapped[Optional[str_120]] + primary_contact: Mapped[Optional[str_400]] + primary_contact_email: Mapped[Optional[str_120]] + primary_contact_phone: Mapped[Optional[str_120]] + ssh: Mapped[List["ConnectionSsh"]] = relationship( backref="connection", lazy=True, foreign_keys="ConnectionSsh.connection_id", ) - sftp = db.relationship( - "ConnectionSftp", + sftp: Mapped[List["ConnectionSftp"]] = relationship( backref="connection", lazy=True, foreign_keys="ConnectionSftp.connection_id", ) - ftp = db.relationship( - "ConnectionFtp", + ftp: Mapped[List["ConnectionFtp"]] = relationship( backref="connection", lazy=True, foreign_keys="ConnectionFtp.connection_id", ) - smb = db.relationship( - "ConnectionSmb", + smb: Mapped[List["ConnectionSmb"]] = relationship( backref="connection", lazy=True, foreign_keys="ConnectionSmb.connection_id", ) - database = db.relationship( - "ConnectionDatabase", - backref="connection", + database: Mapped[List["ConnectionDatabase"]] = relationship( + back_populates="connection", lazy=True, - foreign_keys="ConnectionDatabase.connection_id", ) - gpg = db.relationship( - "ConnectionGpg", + gpg: Mapped[List["ConnectionGpg"]] = relationship( backref="connection", lazy=True, foreign_keys="ConnectionGpg.connection_id", @@ -346,52 +267,37 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionSftp(db.Model): """Table conntaining sftp connection strings.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection_sftp" - id: Optional[int] = None - connection_id: Optional[int] = None - name: Optional[str] = None - address: Optional[str] = None - port: Optional[int] = None - path: Optional[str] = None - username: Optional[str] = None - key: Optional[str] = None - password: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(500), nullable=True) - address = db.Column(db.String(500), nullable=True) - port = db.Column(db.Integer, nullable=True) - path = db.Column(db.String(500), nullable=True) - username = db.Column(db.String(120), nullable=True) - key = db.Column(db.String(8000), nullable=True) - password = db.Column(db.Text, nullable=True) - key_password = db.Column(db.Text, nullable=True) - task = db.relationship( - "Task", + + id: Mapped[intpk] + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_500]] + address: Mapped[Optional[str_500]] + port: Mapped[Optional[int]] + path: Mapped[Optional[str_500]] + username: Mapped[Optional[str_120]] + key: Mapped[Optional[str_8000]] + password: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + key_password: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + task: Mapped["Task"] = relationship( backref="destination_sftp_conn", lazy=True, foreign_keys="Task.destination_sftp_id", ) - task_source = db.relationship( - "Task", + task_source: Mapped["Task"] = relationship( backref="source_sftp_conn", lazy=True, foreign_keys="Task.source_sftp_id", ) - query_source = db.relationship( - "Task", backref="query_sftp_conn", lazy=True, foreign_keys="Task.query_sftp_id" + query_source: Mapped["Task"] = relationship( + backref="query_sftp_conn", lazy=True, foreign_keys="Task.query_sftp_id" ) - processing_source = db.relationship( - "Task", + processing_source: Mapped["Task"] = relationship( backref="processing_sftp_conn", lazy=True, foreign_keys="Task.processing_sftp_id", @@ -402,32 +308,21 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionSsh(db.Model): - """Table conntaining sftp connection strings.""" + """Table conntaining ssh connection strings.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection_ssh" - id: Optional[int] = None - connection_id: Optional[int] = None - name: Optional[str] = None - address: Optional[str] = None - port: Optional[int] = None - username: Optional[str] = None - password: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(500), nullable=True) - address = db.Column(db.String(500), nullable=True) - port = db.Column(db.Integer, nullable=True) - username = db.Column(db.String(120), nullable=True) - password = db.Column(db.Text, nullable=True) - task_source = db.relationship( - "Task", + + id: Mapped[intpk] + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_500]] + address: Mapped[Optional[str_500]] + port: Mapped[Optional[int]] + username: Mapped[Optional[str_120]] + password: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + task_source: Mapped["Task"] = relationship( backref="source_ssh_conn", lazy=True, foreign_keys="Task.source_ssh_id", @@ -438,26 +333,18 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionGpg(db.Model): """Table conntaining gpg keys.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection_gpg" - id: Optional[int] = None - connection_id: Optional[int] = None - name: Optional[str] = None - key: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(500), nullable=True) - key = db.Column(db.String(8000), nullable=True) - task_source = db.relationship( - "Task", + + id: Mapped[intpk] + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_500]] + key: Mapped[Optional[str_8000]] + task_source: Mapped["Task"] = relationship( backref="file_gpg_conn", lazy=True, foreign_keys="Task.file_gpg_id", @@ -468,44 +355,32 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionFtp(db.Model): - """Table conntaining sftp connection strings.""" + """Table conntaining ftp connection strings.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection_ftp" - id: Optional[int] = None - connection_id: Optional[int] = None - name: Optional[str] = None - address: Optional[str] = None - path: Optional[str] = None - username: Optional[str] = None - password: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(500), nullable=True) - address = db.Column(db.String(500), nullable=True) - path = db.Column(db.String(500), nullable=True) - username = db.Column(db.String(500), nullable=True) - password = db.Column(db.Text, nullable=True) - task = db.relationship( - "Task", + + id: Mapped[intpk] + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_500]] + address: Mapped[Optional[str_500]] + path: Mapped[Optional[str_500]] + username: Mapped[Optional[str_500]] + password: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + task: Mapped["Task"] = relationship( backref="destination_ftp_conn", lazy=True, foreign_keys="Task.destination_ftp_id", ) - task_source = db.relationship( - "Task", backref="source_ftp_conn", lazy=True, foreign_keys="Task.source_ftp_id" + task_source: Mapped["Task"] = relationship( + backref="source_ftp_conn", lazy=True, foreign_keys="Task.source_ftp_id" ) - query_source = db.relationship( - "Task", backref="query_ftp_conn", lazy=True, foreign_keys="Task.query_ftp_id" + query_source: Mapped["Task"] = relationship( + backref="query_ftp_conn", lazy=True, foreign_keys="Task.query_ftp_id" ) - processing_source = db.relationship( - "Task", + processing_source: Mapped["Task"] = relationship( backref="processing_ftp_conn", lazy=True, foreign_keys="Task.processing_ftp_id", @@ -516,48 +391,33 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionSmb(db.Model): - """Table conntaining sftp connection strings.""" + """Table conntaining smb connection strings.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection_smb" - id: Optional[int] = None - connection_id: Optional[int] = None - name: Optional[str] = None - share_name: Optional[str] = None - path: Optional[str] = None - username: Optional[str] = None - password: Optional[str] = None - server_ip: Optional[str] = None - server_name: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(120), nullable=True) - share_name = db.Column(db.String(500), nullable=True) - path = db.Column(db.String(1000), nullable=True) - username = db.Column(db.String(500), nullable=True) - password = db.Column(db.Text, nullable=True) - server_ip = db.Column(db.String(500), nullable=True) - server_name = db.Column(db.String(500), nullable=True) - task = db.relationship( - "Task", + + id: Mapped[intpk] + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_120]] + share_name: Mapped[Optional[str_500]] + path: Mapped[Optional[str_1000]] + username: Mapped[Optional[str_500]] + password: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + server_name: Mapped[Optional[str_500]] + task: Mapped["Task"] = relationship( backref="destination_smb_conn", lazy=True, foreign_keys="Task.destination_smb_id", ) - task_source = db.relationship( - "Task", backref="source_smb_conn", lazy=True, foreign_keys="Task.source_smb_id" + task_source: Mapped["Task"] = relationship( + backref="source_smb_conn", lazy=True, foreign_keys="Task.source_smb_id" ) - query_source = db.relationship( - "Task", backref="query_smb_conn", lazy=True, foreign_keys="Task.query_smb_id" + query_source: Mapped["Task"] = relationship( + backref="query_smb_conn", lazy=True, foreign_keys="Task.query_smb_id" ) - processing_source = db.relationship( - "Task", + processing_source: Mapped["Task"] = relationship( backref="processing_smb_conn", lazy=True, foreign_keys="Task.processing_smb_id", @@ -568,431 +428,272 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionDatabaseType(db.Model): """Lookup table of task source database types.""" __tablename__ = "connection_database_type" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(120), nullable=True) - database = db.relationship("ConnectionDatabase", backref="database_type", lazy=True) + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + database: Mapped["ConnectionDatabase"] = relationship(backref="database_type", lazy=True) -@dataclass class ConnectionDatabase(db.Model): """List of task source databases and connection strings.""" __tablename__ = "connection_database" - id: Optional[int] = None - type_id: Optional[int] = None - name: Optional[str] = None - connection_string: Optional[str] = None - connection_id: Optional[int] = None - timeout: Optional[int] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - type_id = db.Column( - db.Integer, db.ForeignKey(ConnectionDatabaseType.id), nullable=True, index=True - ) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(500), nullable=True) - connection_string = db.Column(db.Text, nullable=True) - timeout = db.Column(db.Integer, nullable=True) - task_source = db.relationship( - "Task", + + id: Mapped[intpk] + type_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(ConnectionDatabaseType.id)) + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_500]] + connection_string: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + timeout: Mapped[Optional[int]] + task_source: Mapped["Task"] = relationship( backref="source_database_conn", lazy=True, foreign_keys="Task.source_database_id", ) + connection: Mapped["Connection"] = relationship(back_populates="database") def __str__(self) -> str: """Get string of name.""" return str(self.name) -@dataclass class TaskDestinationFileType(db.Model): """Lookup table of task destination file types.""" __tablename__ = "task_destination_file_type" - id: Optional[int] = None - name: Optional[str] = None - ext: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(120), nullable=True) - ext = db.Column(db.String(120), nullable=False) - task = db.relationship("Task", backref="file_type", lazy=True) + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + ext: Mapped[Optional[str_120]] = mapped_column(nullable=False) + task: Mapped["Task"] = relationship(backref="file_type", lazy=True) -@dataclass class QuoteLevel(db.Model): """Lookup table for python quote levels.""" __tablename__ = "quote_level" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(120), nullable=True) - task = db.relationship("Task", backref="destination_file_quote_level", lazy=True) + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + task: Mapped["Task"] = relationship(backref="destination_file_quote_level", lazy=True) -@dataclass class ProjectParam(db.Model): """Task parameters.""" __tablename__ = "project_param" - id: Optional[int] = None - key: Optional[str] = None - value: Optional[str] = None - sensitive: Optional[int] = None - project_id: Optional[int] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - key = db.Column(db.String(500), nullable=True) - value = db.Column(db.String(8000), nullable=True) - project_id = db.Column( - db.Integer, db.ForeignKey(Project.id), nullable=True, index=True - ) - sensitive = db.Column(db.Integer, nullable=True, index=True) + + id: Mapped[intpk] + key: Mapped[Optional[str_500]] + value: Mapped[Optional[str_8000]] + project_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Project.id), index=True) + sensitive: Mapped[Optional[int]] = mapped_column(index=True) -@dataclass class Task(db.Model): """Table containing task details.""" # pylint: disable=too-many-instance-attributes __tablename__ = "task" - # general information - id: Optional[int] = None - name: Optional[str] = None - project_id: Optional[int] = None - status_id: Optional[int] = None - enabled: Optional[int] = None - order: Optional[int] = None - last_run: Optional[datetime.datetime] = None - next_run: Optional[datetime.datetime] = None - last_run_job_id: Optional[str] = None - created: Optional[datetime.datetime] = None - creator_id: Optional[int] = None - updated: Optional[datetime.datetime] = None - updater_id: Optional[int] = None - - # data source - source_type_id: Optional[int] = None - source_database_id: Optional[int] = None - - source_query_type_id: Optional[int] = None - source_query_include_header: Optional[int] = None - source_git: Optional[str] = None - source_devops: Optional[str] = None - source_url: Optional[str] = None - source_code: Optional[str] = None - - source_require_sql_output: Optional[int] = None - - query_smb_id: Optional[int] = None - query_smb_file: Optional[str] = None - query_sftp_id: Optional[int] = None - query_sftp_file: Optional[str] = None - query_ftp_id: Optional[int] = None - query_ftp_file: Optional[str] = None - query_params: Optional[str] = None - - source_smb_delimiter: Optional[str] = None - source_smb_ignore_delimiter: Optional[int] = None - source_smb_file: Optional[str] = None - source_smb_id: Optional[int] = None - - source_ftp_file: Optional[str] = None - source_ftp_delimiter: Optional[str] = None - source_ftp_ignore_delimiter: Optional[int] = None - source_ftp_id: Optional[int] = None - - source_sftp_file: Optional[str] = None - source_sftp_delimiter: Optional[str] = None - source_sftp_ignore_delimiter: Optional[int] = None - source_sftp_id: Optional[int] = None - - source_ssh_id: Optional[int] = None - - # caching - source_cache: Optional[str] = None - enable_source_cache: Optional[int] = None - - # processing - processing_type_id: Optional[int] = None - processing_smb_id: Optional[int] = None - processing_smb_file: Optional[str] = None - processing_sftp_id: Optional[int] = None - processing_sftp_file: Optional[str] = None - processing_ftp_id: Optional[int] = None - processing_ftp_file: Optional[str] = None - processing_code: Optional[str] = None - processing_url: Optional[str] = None - processing_git: Optional[str] = None - processing_devops: Optional[str] = None - processing_command: Optional[str] = None - - # destination - destination_file_delimiter: Optional[str] = None - destination_file_name: Optional[str] = None - destination_ignore_delimiter: Optional[int] = None - destination_file_line_terminator: Optional[str] = None - destination_quote_level_id: Optional[int] = None - - destination_create_zip: Optional[int] = None - destination_zip_name: Optional[str] = None - - destination_file_type_id: Optional[int] = None - - destination_sftp: Optional[int] = None - destination_sftp_overwrite: Optional[int] = None - destination_sftp_id: Optional[int] = None - destination_sftp_dont_send_empty_file: Optional[int] = None - - destination_ftp: Optional[int] = None - destination_ftp_overwrite: Optional[int] = None - destination_ftp_id: Optional[int] = None - destination_ftp_dont_send_empty_file: Optional[int] = None - - destination_smb: Optional[int] = None - destination_smb_overwrite: Optional[int] = None - destination_smb_id: Optional[int] = None - destination_smb_dont_send_empty_file: Optional[int] = None - - file_gpg: Optional[int] = None - file_gpg_id: Optional[int] = None - - email_completion: Optional[int] = None - email_completion_log: Optional[int] = None - email_completion_file: Optional[int] = None - email_completion_file_embed: Optional[int] = None - email_completion_dont_send_empty_file: Optional[int] = None - email_completion_recipients: Optional[str] = None - email_completion_message: Optional[str] = None - - email_error: Optional[int] = None - email_error_recipients: Optional[str] = None - email_error_message: Optional[str] = None - - max_retries: Optional[int] = None - - est_duration: Optional[int] = None # general information - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(1000), nullable=True) - project_id = db.Column( - db.Integer, db.ForeignKey(Project.id), nullable=True, index=True - ) - status_id = db.Column( - db.Integer, db.ForeignKey(TaskStatus.id), nullable=True, index=True - ) - enabled = db.Column(db.Integer, nullable=True, index=True) - order = db.Column(db.Integer, nullable=True, index=True) - last_run = db.Column(db.DateTime, nullable=True) - last_run_job_id = db.Column(db.String(30), nullable=True, index=True) - next_run = db.Column(db.DateTime, nullable=True, index=True) - created = db.Column(db.DateTime, server_default=functions.now(), index=True) - creator_id = db.Column( - db.Integer, db.ForeignKey(User.id), nullable=True, index=True - ) - updated = db.Column(db.DateTime, onupdate=functions.now(), index=True) - updater_id = db.Column( - db.Integer, db.ForeignKey(User.id), nullable=True, index=True - ) + id: Mapped[intpk] + name: Mapped[Optional[str_1000]] + project_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Project.id), index=True) + status_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(TaskStatus.id)) + enabled: Mapped[Optional[int]] = mapped_column(index=True) + order: Mapped[Optional[int]] = mapped_column(index=True) + last_run: Mapped[Optional[datetime.datetime]] + last_run_job_id: Mapped[Optional[str_30]] = mapped_column(index=True) + next_run: Mapped[Optional[datetime.datetime]] = mapped_column(index=True) + created: Mapped[Optional[timestamp]] = mapped_column(index=True) + creator_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(User.id), index=True) + updated: Mapped[Optional[datetime.datetime]] = mapped_column( + onupdate=functions.now(), index=True + ) + updater_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(User.id), index=True) """ data source """ # db/sftp/smb/ftp - source_type_id = db.Column( - db.Integer, db.ForeignKey(TaskSourceType.id), nullable=True, index=True + source_type_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(TaskSourceType.id), index=True ) # source locations # git/url/code/sftp/ftp/smb/devops - source_query_type_id = db.Column( - db.Integer, db.ForeignKey(TaskSourceQueryType.id), nullable=True, index=True + source_query_type_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(TaskSourceQueryType.id), index=True ) - source_query_include_header = db.Column(db.Integer, nullable=True) + source_query_include_header: Mapped[Optional[int]] - source_require_sql_output = db.Column(db.Integer, nullable=True) + source_require_sql_output: Mapped[Optional[int]] # source git - source_git = db.Column(db.String(1000), nullable=True) + source_git: Mapped[Optional[str_1000]] # source devops - source_devops = db.Column(db.String(1000), nullable=True) + source_devops: Mapped[Optional[str_1000]] # source web url - source_url = db.Column(db.String(1000), nullable=True) + source_url: Mapped[Optional[str_1000]] # source typed code - source_code = db.Column(db.Text, nullable=True) + source_code: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) # cached source query - source_cache = db.Column(db.Text, nullable=True) - enable_source_cache = db.Column(db.Integer, nullable=True, index=True) + source_cache: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + enable_source_cache: Mapped[Optional[int]] = mapped_column(index=True) - query_smb_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSmb.id), nullable=True, index=True + query_smb_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSmb.id), index=True ) - query_smb_file = db.Column(db.String(1000), nullable=True) + query_smb_file: Mapped[Optional[str_1000]] - query_sftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSftp.id), nullable=True, index=True + query_sftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSftp.id), index=True ) - query_sftp_file = db.Column(db.String(1000), nullable=True) + query_sftp_file: Mapped[Optional[str_1000]] - query_ftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionFtp.id), nullable=True, index=True + query_ftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionFtp.id), index=True ) - query_ftp_file = db.Column(db.String(1000), nullable=True) + query_ftp_file: Mapped[Optional[str_1000]] - query_params = db.Column(db.String(8000), nullable=True) + query_params: Mapped[Optional[str_8000]] # source smb sql file - source_smb_file = db.Column(db.String(1000), nullable=True) - source_smb_delimiter = db.Column(db.String(10), nullable=True) - source_smb_ignore_delimiter = db.Column(db.Integer, nullable=True) - source_smb_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSmb.id), nullable=True, index=True + source_smb_file: Mapped[Optional[str_1000]] + source_smb_ignore_subfolders: Mapped[Optional[int]] + source_smb_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSmb.id), index=True ) # source ftp sql file - source_ftp_file = db.Column(db.String(1000), nullable=True) - source_ftp_delimiter = db.Column(db.String(10), nullable=True) - source_ftp_ignore_delimiter = db.Column(db.Integer, nullable=True) - source_ftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionFtp.id), nullable=True, index=True + source_ftp_file: Mapped[Optional[str_1000]] + source_ftp_delimiter: Mapped[Optional[str_10]] + source_ftp_ignore_delimiter: Mapped[Optional[int]] + source_ftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionFtp.id), index=True ) # source sftp sql file - source_sftp_file = db.Column(db.String(1000), nullable=True) - source_sftp_delimiter = db.Column(db.String(10), nullable=True) - source_sftp_ignore_delimiter = db.Column(db.Integer, nullable=True) - source_sftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSftp.id), nullable=True, index=True + source_sftp_file: Mapped[Optional[str_1000]] + source_sftp_delimiter: Mapped[Optional[str_10]] + source_sftp_ignore_delimiter: Mapped[Optional[int]] + source_sftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSftp.id), index=True ) # source database - source_database_id = db.Column( - db.Integer, db.ForeignKey(ConnectionDatabase.id), nullable=True, index=True + source_database_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionDatabase.id), index=True ) - source_ssh_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSsh.id), nullable=True, index=True + source_ssh_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSsh.id), index=True ) """ processing script source """ - processing_type_id = db.Column( - db.Integer, db.ForeignKey(TaskProcessingType.id), nullable=True, index=True - ) + processing_type_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(TaskProcessingType.id)) - processing_smb_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSmb.id), nullable=True, index=True + processing_smb_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSmb.id), index=True ) - processing_smb_file = db.Column(db.String(1000), nullable=True) + processing_smb_file: Mapped[Optional[str_1000]] - processing_sftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSftp.id), nullable=True, index=True + processing_sftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSftp.id), index=True ) - processing_sftp_file = db.Column(db.String(1000), nullable=True) + processing_sftp_file: Mapped[Optional[str_1000]] - processing_ftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionFtp.id), nullable=True, index=True + processing_ftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionFtp.id), index=True ) - processing_ftp_file = db.Column(db.String(1000), nullable=True) + processing_ftp_file: Mapped[Optional[str_1000]] - processing_code = db.Column(db.String(8000), nullable=True) - processing_url = db.Column(db.String(1000), nullable=True) - processing_git = db.Column(db.String(1000), nullable=True) - processing_devops = db.Column(db.String(1000), nullable=True) - processing_command = db.Column(db.String(1000), nullable=True) + processing_code: Mapped[Optional[str_8000]] + processing_url: Mapped[Optional[str_1000]] + processing_git: Mapped[Optional[str_1000]] + processing_devops: Mapped[Optional[str_1000]] + processing_command: Mapped[Optional[str_1000]] """ destination """ # destination file - destination_file_name = db.Column(db.String(1000), nullable=True) - destination_file_delimiter = db.Column(db.String(10), nullable=True) - destination_ignore_delimiter = db.Column(db.Integer, nullable=True) - destination_file_line_terminator = db.Column(db.String(10), nullable=True) + destination_file_name: Mapped[Optional[str_1000]] + destination_file_delimiter: Mapped[Optional[str_10]] + destination_ignore_delimiter: Mapped[Optional[int]] + destination_file_line_terminator: Mapped[Optional[str_10]] # destination zip archive - destination_create_zip = db.Column(db.Integer, nullable=True) - destination_zip_name = db.Column(db.String(1000), nullable=True) + destination_create_zip: Mapped[Optional[int]] + destination_zip_name: Mapped[Optional[str_1000]] # csv/txt/other - destination_file_type_id = db.Column( - db.Integer, db.ForeignKey(TaskDestinationFileType.id), nullable=True, index=True + destination_file_type_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(TaskDestinationFileType.id) ) # save to sftp server - destination_sftp = db.Column(db.Integer, nullable=True, index=True) - destination_sftp_overwrite = db.Column(db.Integer, nullable=True) - destination_sftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSftp.id), nullable=True, index=True + destination_sftp: Mapped[Optional[int]] = mapped_column(index=True) + destination_sftp_overwrite: Mapped[Optional[int]] + destination_sftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSftp.id), index=True ) - destination_sftp_dont_send_empty_file = db.Column(db.Integer, nullable=True) + destination_sftp_dont_send_empty_file: Mapped[Optional[int]] # save to ftp server - destination_ftp = db.Column(db.Integer, nullable=True, index=True) - destination_ftp_overwrite = db.Column(db.Integer, nullable=True) - destination_ftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionFtp.id), nullable=True, index=True + destination_ftp: Mapped[Optional[int]] = mapped_column(index=True) + destination_ftp_overwrite: Mapped[Optional[int]] + destination_ftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionFtp.id), index=True ) - destination_ftp_dont_send_empty_file = db.Column(db.Integer, nullable=True) - + destination_ftp_dont_send_empty_file: Mapped[Optional[int]] # save to smb server - destination_smb = db.Column(db.Integer, nullable=True, index=True) - destination_smb_overwrite = db.Column(db.Integer, nullable=True) - destination_smb_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSmb.id), nullable=True, index=True + destination_smb: Mapped[Optional[int]] = mapped_column(index=True) + destination_smb_overwrite: Mapped[Optional[int]] + destination_smb_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSmb.id), index=True ) - destination_smb_dont_send_empty_file = db.Column(db.Integer, nullable=True) + destination_smb_dont_send_empty_file: Mapped[Optional[int]] - file_gpg = db.Column(db.Integer, nullable=True, index=True) - file_gpg_id = db.Column( - db.Integer, db.ForeignKey(ConnectionGpg.id), nullable=True, index=True - ) + file_gpg: Mapped[Optional[int]] = mapped_column(index=True) + file_gpg_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(ConnectionGpg.id), index=True) - destination_quote_level_id = db.Column( - db.Integer, db.ForeignKey(QuoteLevel.id), nullable=True, index=True + destination_quote_level_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(QuoteLevel.id), index=True ) """ email """ # completion email - email_completion = db.Column(db.Integer, nullable=True, index=True) - email_completion_log = db.Column(db.Integer, nullable=True) - email_completion_file = db.Column(db.Integer, nullable=True) - email_completion_file_embed = db.Column(db.Integer, nullable=True) - email_completion_recipients = db.Column(db.String(1000), nullable=True) - email_completion_subject = db.Column(db.String(8000), nullable=True) - email_completion_message = db.Column(db.String(8000), nullable=True) - email_completion_dont_send_empty_file = db.Column(db.Integer, nullable=True) + email_completion: Mapped[Optional[int]] = mapped_column(index=True) + email_completion_log: Mapped[Optional[int]] + email_completion_file: Mapped[Optional[int]] + email_completion_file_embed: Mapped[Optional[int]] + email_completion_recipients: Mapped[Optional[str_1000]] + email_completion_subject: Mapped[Optional[str_8000]] + email_completion_message: Mapped[Optional[str_8000]] + email_completion_dont_send_empty_file: Mapped[Optional[int]] # error email - email_error = db.Column(db.Integer, nullable=True, index=True) - email_error_recipients = db.Column(db.String(1000), nullable=True) - email_error_subject = db.Column(db.String(8000), nullable=True) - email_error_message = db.Column(db.String(8000), nullable=True) + email_error: Mapped[Optional[int]] + email_error_recipients: Mapped[Optional[str_1000]] + email_error_subject: Mapped[Optional[str_8000]] + email_error_message: Mapped[Optional[str_8000]] # rerun on fail - max_retries = db.Column(db.Integer, nullable=True, index=True) + max_retries: Mapped[Optional[int]] = mapped_column(index=True) - est_duration = db.Column(db.Integer, nullable=True, index=True) + est_duration: Mapped[Optional[int]] = mapped_column(index=True) # tasklog link - task = db.relationship( - "TaskLog", + task: Mapped[List["TaskLog"]] = relationship( backref="task", lazy=True, cascade="all, delete, delete-orphan", @@ -1000,8 +701,7 @@ class Task(db.Model): ) # taskparams link - params = db.relationship( - "TaskParam", + params: Mapped[List["TaskParam"]] = relationship( backref="task", lazy=True, cascade="all, delete, delete-orphan", @@ -1009,8 +709,7 @@ class Task(db.Model): ) # taskfiles link - files = db.relationship( - "TaskFile", + files: Mapped[List["TaskFile"]] = relationship( backref="task", lazy=True, cascade="all, delete, delete-orphan", @@ -1028,70 +727,46 @@ class TaskLog(db.Model): # pylint: disable=too-many-instance-attributes __tablename__ = "task_log" - id: Optional[int] = None - task_id: Optional[int] = None - status_id: Optional[int] = None - job_id: Optional[str] = None - message: Optional[str] = None - error: Optional[int] = 0 - status_date: Optional[datetime.datetime] = None - - job_id = db.Column(db.String(1000), nullable=True, index=True) - id = db.Column(db.Integer, primary_key=True, index=True) - task_id = db.Column(db.Integer, db.ForeignKey(Task.id), nullable=True, index=True) - status_id = db.Column( - db.Integer, db.ForeignKey(TaskStatus.id), nullable=True, index=True - ) - message = db.Column(db.Text, nullable=True) - status_date = db.Column(db.DateTime, default=datetime.datetime.now, index=True) - error = db.Column(db.Integer, nullable=True, index=True) - __table_args__ = ( - db.Index("ix_task_log_status_date_error", "status_date", "error"), + job_id: Mapped[Optional[str_1000]] = mapped_column(index=True) + id: Mapped[intpk] + task_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Task.id), index=True) + status_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(TaskStatus.id), index=True) + message: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + status_date: Mapped[Optional[datetime.datetime]] = mapped_column( + default=datetime.datetime.now, index=True ) + error: Mapped[Optional[int]] = mapped_column(index=True) + + __table_args__ = (db.Index("ix_task_log_status_date_error", "status_date", "error"),) -@dataclass class TaskFile(db.Model): """Table containing paths to task backup files.""" __tablename__ = "task_file" - id: Optional[int] = None - name: Optional[str] = None - task_id: Optional[int] = None - job_id: Optional[str] = None - size: Optional[str] = None - file_hash: Optional[str] = None - path: Optional[str] = None - created: Optional[datetime.datetime] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(1000), nullable=True, index=True) - task_id = db.Column(db.Integer, db.ForeignKey(Task.id), nullable=True, index=True) - job_id = db.Column(db.String(1000), nullable=True, index=True) - size = db.Column(db.String(200), nullable=True, index=True) - path = db.Column(db.String(1000), nullable=True, index=True) - file_hash = db.Column(db.String(1000), nullable=True) - created = db.Column(db.DateTime, default=datetime.datetime.now, index=True) - - __table_args__ = ( - db.Index("ix_task_file_id_task_id_job_id", "id", "task_id", "job_id"), + + id: Mapped[intpk] + name: Mapped[Optional[str_1000]] = mapped_column(index=True) + task_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Task.id), index=True) + job_id: Mapped[Optional[str_1000]] = mapped_column(index=True) + size: Mapped[Optional[str_200]] = mapped_column(index=True) + path: Mapped[Optional[str_1000]] = mapped_column(index=True) + file_hash: Mapped[Optional[str_1000]] + created: Mapped[Optional[datetime.datetime]] = mapped_column( + default=datetime.datetime.now, index=True ) + __table_args__ = (db.Index("ix_task_file_id_task_id_job_id", "id", "task_id", "job_id"),) + -@dataclass class TaskParam(db.Model): """Task parameters.""" __tablename__ = "task_param" - id: Optional[int] = None - key: Optional[str] = None - value: Optional[str] = None - sensitive: Optional[int] = None - task_id: Optional[int] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - key = db.Column(db.String(500), nullable=True) - value = db.Column(db.String(8000), nullable=True) - task_id = db.Column(db.Integer, db.ForeignKey(Task.id), nullable=True, index=True) - sensitive = db.Column(db.Integer, nullable=True, index=True) + + id: Mapped[intpk] + key: Mapped[Optional[str_500]] + value: Mapped[Optional[str_8000]] + task_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Task.id), index=True) + sensitive: Mapped[Optional[int]] = mapped_column(index=True) diff --git a/runner/scripts/em_cmd.py b/runner/scripts/em_cmd.py index 22de03ec..3fb4c8c7 100644 --- a/runner/scripts/em_cmd.py +++ b/runner/scripts/em_cmd.py @@ -1,6 +1,5 @@ """Functions used to run system commands.""" - import os import re import subprocess @@ -36,9 +35,7 @@ def __init__( def shell(self) -> str: """Run input command as a shell command.""" try: - out_bytes = subprocess.check_output( - self.cmd, stderr=subprocess.STDOUT, shell=True - ) + out_bytes = subprocess.check_output(self.cmd, stderr=subprocess.STDOUT, shell=True) out = out_bytes.decode("utf-8") if "Error" in out: diff --git a/runner/scripts/em_code.py b/runner/scripts/em_code.py index 838cef55..58b2f6e4 100644 --- a/runner/scripts/em_code.py +++ b/runner/scripts/em_code.py @@ -1,6 +1,5 @@ """Task source code handler.""" - import re import urllib.parse from typing import Optional @@ -43,8 +42,7 @@ def __init__( self.params = params self.db_type = ( "mssql" - if self.task.source_database_conn - and self.task.source_database_conn.type_id == 2 + if self.task.source_database_conn and self.task.source_database_conn.type_id == 2 else None ) @@ -84,9 +82,7 @@ def devops(self, url: str) -> str: projects = [i for i in get_projects_response if (i.name == project[0])] # this for repository id. - repos = git.get_repositories( - [i for i in projects if (i.name == project[0])][0].id - ) + repos = git.get_repositories([i for i in projects if (i.name == project[0])][0].id) repo_id = [i.id for i in repos if (i.name == repo_name[0])][0] item = git.get_item_content( @@ -122,20 +118,12 @@ def devops(self, url: str) -> str: # insert params return self.cleanup() - return ( - text - if not text.startswith(" str: f"Failed to get source from {url}.\n{e}", ) - raise RunnerException( - self.task, self.run_id, 15, "No url specified to get source from." - ) + raise RunnerException(self.task, self.run_id, 15, "No url specified to get source from.") def gitlab(self, url: str) -> str: """Get source code from gitlab using authentication.""" @@ -186,23 +172,17 @@ def gitlab(self, url: str) -> str: try: # convert the "raw" url into an api url branch = urllib.parse.quote( - urllib.parse.unquote( - re.findall(r"\/(?:raw|blob)\/(.+?)\/", url)[0] - ), + urllib.parse.unquote(re.findall(r"\/(?:raw|blob)\/(.+?)\/", url)[0]), safe="", ) project = urllib.parse.quote( - urllib.parse.unquote( - re.findall(r"\.(?:com|net|org)\/(.+?)\/-", url)[0] - ), + urllib.parse.unquote(re.findall(r"\.(?:com|net|org)\/(.+?)\/-", url)[0]), safe="", ) file_path = urllib.parse.quote( - urllib.parse.unquote( - re.findall(r"\/(?:raw|blob)\/.+?\/(.+?)$", url)[0] - ), + urllib.parse.unquote(re.findall(r"\/(?:raw|blob)\/.+?\/(.+?)$", url)[0]), safe="", ) @@ -262,11 +242,7 @@ def gitlab(self, url: str) -> str: # pylint: disable=broad-except except BaseException as e: # only use cache if we have a run id. Otherwise failures are from code preview. - if ( - self.run_id - and self.task.enable_source_cache == 1 - and self.task.source_cache - ): + if self.run_id and self.task.enable_source_cache == 1 and self.task.source_cache: RunnerLog( self.task, self.run_id, @@ -303,9 +279,7 @@ def gitlab(self, url: str) -> str: f"Failed to get source from {url}.\n{e}", ) - raise RunnerException( - self.task, self.run_id, 15, "No url specified to get source from." - ) + raise RunnerException(self.task, self.run_id, 15, "No url specified to get source from.") def web_url(self, url: str) -> str: """Get contents of a webpage.""" @@ -318,8 +292,7 @@ def web_url(self, url: str) -> str: self.query = page.text self.db_type = ( "mssql" - if self.task.source_database_conn - and self.task.source_database_conn.type_id == 2 + if self.task.source_database_conn and self.task.source_database_conn.type_id == 2 else None ) if page.status_code != 200: @@ -331,20 +304,14 @@ def web_url(self, url: str) -> str: db.session.commit() if self.refresh_cache: - RunnerLog( - self.task, self.run_id, 15, "Source cache manually refreshed." - ) + RunnerLog(self.task, self.run_id, 15, "Source cache manually refreshed.") # insert params return self.cleanup() # pylint: disable=broad-except except BaseException as e: - if ( - self.run_id - and self.task.enable_source_cache == 1 - and self.task.source_cache - ): + if self.run_id and self.task.enable_source_cache == 1 and self.task.source_cache: RunnerLog( self.task, self.run_id, @@ -363,11 +330,7 @@ def web_url(self, url: str) -> str: return self.cleanup() - elif ( - self.run_id - and self.task.enable_source_cache == 1 - and not self.task.source_cache - ): + elif self.run_id and self.task.enable_source_cache == 1 and not self.task.source_cache: raise RunnerException( self.task, self.run_id, @@ -385,8 +348,7 @@ def source(self, query: Optional[str] = None) -> str: self.query = query or self.task.source_code or "" self.db_type = ( "mssql" - if self.task.source_database_conn - and self.task.source_database_conn.type_id == 2 + if self.task.source_database_conn and self.task.source_database_conn.type_id == 2 else None ) return self.cleanup() @@ -414,16 +376,12 @@ def cleanup(self, query: Optional[str] = None) -> str: # only needed for mssql if self.task.source_type_id == 1 and self.db_type == "mssql": query = re.sub( - re.compile( - r"(^;?\s*;?)\buse\b\s+.+", flags=re.IGNORECASE | re.MULTILINE - ), + re.compile(r"(^;?\s*;?)\buse\b\s+.+", flags=re.IGNORECASE | re.MULTILINE), "", query, ) query = re.sub( - re.compile( - r"(^;?\s*;?)\buse\b\s+.+?;", flags=re.IGNORECASE | re.MULTILINE - ), + re.compile(r"(^;?\s*;?)\buse\b\s+.+?;", flags=re.IGNORECASE | re.MULTILINE), "", query, ) @@ -439,9 +397,7 @@ def cleanup(self, query: Optional[str] = None) -> str: # remove " go" query = re.sub( - re.compile( - r"^;?\s*?;?\bgo\b\s*?;?", flags=re.IGNORECASE | re.MULTILINE - ), + re.compile(r"^;?\s*?;?\bgo\b\s*?;?", flags=re.IGNORECASE | re.MULTILINE), r"", query, ) diff --git a/runner/scripts/em_date.py b/runner/scripts/em_date.py index 9862108a..d12ed705 100644 --- a/runner/scripts/em_date.py +++ b/runner/scripts/em_date.py @@ -20,7 +20,6 @@ years """ - import calendar import datetime import re @@ -157,11 +156,7 @@ def get_date_part(my_string: str) -> str: .replace("firstday", "1") .replace( "lastday", - str( - calendar.monthrange(date_from_string.year, date_from_string.month)[ - 1 - ] - ), + str(calendar.monthrange(date_from_string.year, date_from_string.month)[1]), ) ) @@ -185,9 +180,7 @@ def get_repeating_part(parts: List[str]) -> Optional[str]: return None try: - parameters = [ - x.group() for x in re.finditer(r"%[a-zA-Z]", self.date_string) - ] + parameters = [x.group() for x in re.finditer(r"%[a-zA-Z]", self.date_string)] parts = [] # split into parts @@ -206,9 +199,7 @@ def get_repeating_part(parts: List[str]) -> Optional[str]: date_string = param + split_parts[2] # update remaining parameters - parameters = [ - x.group() for x in re.finditer(r"%[a-zA-Z]", date_string) - ] + parameters = [x.group() for x in re.finditer(r"%[a-zA-Z]", date_string)] param = get_repeating_part(parameters) # need to add on the last part, if there are no more duplicate params. @@ -223,6 +214,4 @@ def get_repeating_part(parts: List[str]) -> Optional[str]: return self.date_string except BaseException as e: - raise RunnerException( - self.task, self.run_id, 17, f"Failed to parse date string.\n{e}" - ) + raise RunnerException(self.task, self.run_id, 17, f"Failed to parse date string.\n{e}") diff --git a/runner/scripts/em_file.py b/runner/scripts/em_file.py index 50c21357..971185f5 100644 --- a/runner/scripts/em_file.py +++ b/runner/scripts/em_file.py @@ -9,13 +9,13 @@ from typing import IO, Optional, Tuple, Union import gnupg -from crypto import em_decrypt from flask import current_app as app from runner.model import Task from runner.scripts.em_date import DateParsing from runner.scripts.em_messages import RunnerException, RunnerLog from runner.scripts.em_params import ParamLoader +from scripts.crypto import em_decrypt # set the limit for a csv cell value to something massive. # this is needed when users are building xml in a sql query @@ -98,9 +98,9 @@ def __quote_level(self) -> int: return quote_levels[task_level] - def __quotechar(self) -> str: + def __quotechar(self) -> str | None: if self.__quote_level() == 3: # quote none - return "" + return None return '"' @@ -109,10 +109,7 @@ def save(self) -> Tuple[str, str, str]: returns [filename, filepath] of final file. """ - if ( - self.task.destination_file_name is None - or self.task.destination_file_name == "" - ): + if self.task.destination_file_name is None or self.task.destination_file_name == "": RunnerLog( self.task, self.run_id, @@ -120,19 +117,14 @@ def save(self) -> Tuple[str, str, str]: f"No filename specified, {Path(self.data_file.name).name} will be used.", ) - if ( - self.task.destination_file_name != "" - and self.task.destination_file_name is not None - ): + if self.task.destination_file_name != "" and self.task.destination_file_name is not None: # insert params self.file_name = self.params.insert_file_params( self.task.destination_file_name.strip() ) # parse python dates - self.file_name = DateParsing( - self.task, self.run_id, self.file_name - ).string_to_date() + self.file_name = DateParsing(self.task, self.run_id, self.file_name).string_to_date() else: self.file_name = Path(self.data_file.name).name @@ -200,8 +192,7 @@ def save(self) -> Tuple[str, str, str]: ) for row in reader: new_row = [ - (x.strip('"').strip("'") if isinstance(x, str) else x) - for x in row + (x.strip('"').strip("'") if isinstance(x, str) else x) for x in row ] if ( @@ -212,9 +203,7 @@ def save(self) -> Tuple[str, str, str]: self.task.destination_file_line_terminator is not None and self.task.destination_file_line_terminator != "" ): - new_row.append( - self.task.destination_file_line_terminator - ) + new_row.append(self.task.destination_file_line_terminator) wrtr.writerow(new_row) @@ -228,8 +217,7 @@ def save(self) -> Tuple[str, str, str]: ) for row in reader: new_row = [ - (x.strip('"').strip("'") if isinstance(x, str) else x) - for x in row + (x.strip('"').strip("'") if isinstance(x, str) else x) for x in row ] wrtr.writerow(new_row) @@ -300,9 +288,7 @@ def save(self) -> Tuple[str, str, str]: break self.file_hash.update(chunk) - RunnerLog( - self.task, self.run_id, 11, f"File md5 hash: {self.file_hash.hexdigest()}" - ) + RunnerLog(self.task, self.run_id, 11, f"File md5 hash: {self.file_hash.hexdigest()}") # create zip if self.task.destination_create_zip == 1: @@ -329,8 +315,6 @@ def save(self) -> Tuple[str, str, str]: self.file_name = self.zip_name self.file_path = str(Path(self.base_path).joinpath(self.zip_name)) - RunnerLog( - self.task, self.run_id, 11, f"ZIP archive created.\n{self.file_path}" - ) + RunnerLog(self.task, self.run_id, 11, f"ZIP archive created.\n{self.file_path}") return self.file_name, self.file_path, self.file_hash.hexdigest() diff --git a/runner/scripts/em_ftp.py b/runner/scripts/em_ftp.py index b2f70022..125b048a 100644 --- a/runner/scripts/em_ftp.py +++ b/runner/scripts/em_ftp.py @@ -1,6 +1,5 @@ """FTP connection manager.""" - import csv import fnmatch import ftplib # noqa: S402 @@ -44,9 +43,7 @@ def connect(connection: ConnectionFtp) -> FTP: conn = FTP(connection.address or "") # noqa: S321 conn.login( user=(connection.username or ""), - passwd=( - em_decrypt(connection.password, app.config["PASS_KEY"]) or "" - ), + passwd=(em_decrypt(connection.password, app.config["PASS_KEY"]) or ""), ) break except ftplib.error_reply as e: @@ -95,9 +92,7 @@ def __connect(self) -> FTP: except ValueError as e: raise RunnerException(self.task, self.run_id, 13, str(e)) - def _walk( - self, directory: str - ) -> Generator[Tuple[str, List[Any], List[str]], None, None]: + def _walk(self, directory: str) -> Generator[Tuple[str, List[Any], List[str]], None, None]: dirs = [] nondirs = [] @@ -124,13 +119,8 @@ def handle_binary(more_data: bytes) -> None: self.conn.retrbinary("RETR " + file_name, callback=handle_binary) data = "".join([str(x) for x in my_binary]) - with tempfile.NamedTemporaryFile( - mode="w", delete=False, dir=self.dir - ) as data_file: - if ( - self.task.source_sftp_ignore_delimiter != 1 - and self.task.source_sftp_delimiter - ): + with tempfile.NamedTemporaryFile(mode="w", delete=False, dir=self.dir) as data_file: + if self.task.source_sftp_ignore_delimiter != 1 and self.task.source_sftp_delimiter: my_delimiter = self.task.source_sftp_delimiter or "," csv_reader = csv.reader( @@ -216,9 +206,7 @@ def save(self, overwrite: int, file_name: str) -> None: # pylint: disable=broad-except except BaseException as e: - raise RunnerException( - self.task, self.run_id, 13, f"Failed to change path.\n{e}" - ) + raise RunnerException(self.task, self.run_id, 13, f"Failed to change path.\n{e}") if overwrite != 1: try: @@ -255,6 +243,4 @@ def __close(self) -> None: self.conn.close() except BaseException as e: - raise RunnerException( - self.task, self.run_id, 13, f"Failed to close connection.\n{e}" - ) + raise RunnerException(self.task, self.run_id, 13, f"Failed to close connection.\n{e}") diff --git a/runner/scripts/em_jdbc.py b/runner/scripts/em_jdbc.py index a6d87f5b..a0cc9c76 100644 --- a/runner/scripts/em_jdbc.py +++ b/runner/scripts/em_jdbc.py @@ -70,7 +70,7 @@ def __rows(self, size: int = 50) -> Generator: log = TaskLog( task_id=self.task.id, job_id=self.run_id, - status_id=20, + status_id=22, message=("Getting first %d query rows." % size), ) db.session.add(log) diff --git a/runner/scripts/em_messages.py b/runner/scripts/em_messages.py index 41fd6d77..675d8c9f 100644 --- a/runner/scripts/em_messages.py +++ b/runner/scripts/em_messages.py @@ -1,6 +1,5 @@ """Exception and logging messages.""" - import datetime import sys from dataclasses import dataclass @@ -110,10 +109,10 @@ def __init__( success=0, date=date, logs=logs, + host=app.config["WEB_HOST"], org=app.config["ORG_NAME"], ), - short_message=task.email_error_message - or f"Atlas Hub task {task} failed.", + short_message=task.email_error_message or f"Atlas Hub task {task} failed.", attachments=[], ) except BaseException as e: @@ -136,9 +135,7 @@ def __init__( if (redis_client.zincrby(f"runner_{task.id}_attempt", 0, "inc") or 1) <= ( task.max_retries or 0 ): - run_number = int( - redis_client.zincrby(f"runner_{task.id}_attempt", 0, "inc") or 1 - ) + run_number = int(redis_client.zincrby(f"runner_{task.id}_attempt", 0, "inc") or 1) # schedule a rerun in 5 minutes. RunnerLog( diff --git a/runner/scripts/em_params.py b/runner/scripts/em_params.py index dcc51e5a..9ead7be5 100644 --- a/runner/scripts/em_params.py +++ b/runner/scripts/em_params.py @@ -47,9 +47,7 @@ def insert_date(match: re.Match) -> str: # parse python dates for key, value in params_dict.items(): - params_dict[key] = re.sub( - r"\bparse\((.*?)\)", insert_date, value, re.IGNORECASE - ) + params_dict[key] = re.sub(r"\bparse\((.*?)\)", insert_date, value, re.IGNORECASE) # sort by key length.. longest first to avoid replacing wrong values return dict(sorted(params_dict.items(), key=lambda x: len(x[0]), reverse=True)) diff --git a/runner/scripts/em_postgres.py b/runner/scripts/em_postgres.py index b3ef7e89..fc0598d5 100644 --- a/runner/scripts/em_postgres.py +++ b/runner/scripts/em_postgres.py @@ -69,7 +69,7 @@ def __rows(self, size: int = 50) -> Generator: log = TaskLog( task_id=self.task.id, job_id=self.run_id, - status_id=20, + status_id=21, message=("Getting first %d query rows." % size), ) db.session.add(log) diff --git a/runner/scripts/em_python.py b/runner/scripts/em_python.py index 3b73bc88..34651a83 100644 --- a/runner/scripts/em_python.py +++ b/runner/scripts/em_python.py @@ -1,6 +1,5 @@ """Python script runner.""" - import ast import datetime import sys @@ -181,37 +180,27 @@ def __pip_install(self) -> None: else: # find all scripts in dir, but not in venv paths = list( - set(Path(self.job_path).rglob("*.py")) - - set(Path(self.env_path).rglob("*.py")) + set(Path(self.job_path).rglob("*.py")) - set(Path(self.env_path).rglob("*.py")) ) for this_file in paths: with open(this_file, "r") as my_file: for line in my_file: - imports.extend( - re.findall(r"^\s*?import\K\s+[^\.][^\s]+?\s+?$", line) - ) - imports.extend( - re.findall(r"^\s*?from\K\s+[^\.].+?(?=import)", line) - ) - imports.extend( - re.findall(r"^\s*?import\K\s+[^\.][^\s]+?(?=\s)", line) - ) + imports.extend(re.findall(r"^\s*?import\K\s+[^\.][^\s]+?\s+?$", line)) + imports.extend(re.findall(r"^\s*?from\K\s+[^\.].+?(?=import)", line)) + imports.extend(re.findall(r"^\s*?import\K\s+[^\.][^\s]+?(?=\s)", line)) package_map = { "dateutil": "python-dateutil", - "smb": "pysmb", + "smbclient": "smbprotocol", "dotenv": "python-dotenv", "azure": "azure-devops", + "office365": "Office365-REST-Python-Client", } # clean list imports = [ - str( - package_map.get( - x.strip().split(".")[0], x.strip().split(".")[0] - ) - ) + str(package_map.get(x.strip().split(".")[0], x.strip().split(".")[0])) for x in imports if x.strip() != "" ] @@ -239,11 +228,7 @@ def __pip_install(self) -> None: this_out.strip() for this_out in list( chain.from_iterable( - [ - g.split(" ") - for g in built_in_packages.split("\n") - if g != "" - ] + [g.split(" ") for g in built_in_packages.split("\n") if g != ""] ) ) if this_out.strip() != "" @@ -251,9 +236,7 @@ def __pip_install(self) -> None: # remove default python packages from list imports = [ - x.strip() - for x in imports - if x not in cleaned_built_in_packages and x.strip() + x.strip() for x in imports if x not in cleaned_built_in_packages and x.strip() ] # try to install @@ -271,9 +254,7 @@ def __pip_install(self) -> None: + " with command: " + "\n" + cmd, - error_msg="Failed to install imports with command: " - + "\n" - + cmd, + error_msg="Failed to install imports with command: " + "\n" + cmd, ).shell() except BaseException as e: @@ -298,8 +279,7 @@ def __run_script(self) -> None: "connection_string": em_decrypt( external_db.connection_string, app.config["PASS_KEY"] ), - "timeout": external_db.timeout - or app.config["DEFAULT_SQL_TIMEOUT"], + "timeout": external_db.timeout or app.config["DEFAULT_SQL_TIMEOUT"], } elif external_db.database_type.id == 2: # mssql @@ -307,8 +287,7 @@ def __run_script(self) -> None: "connection_string": em_decrypt( external_db.connection_string, app.config["PASS_KEY"] ), - "timeout": external_db.timeout - or app.config["DEFAULT_SQL_TIMEOUT"], + "timeout": external_db.timeout or app.config["DEFAULT_SQL_TIMEOUT"], } elif self.task.source_type_id == 2: # smb file connection = em_smb.connection_json(self.task.source_smb_conn) @@ -371,19 +350,13 @@ def clean_string(text: Optional[Union[str, int, datetime.datetime]]) -> str: "source_type_id": clean_string(self.task.source_type_id), "source_database_id": clean_string(self.task.source_database_id), "source_query_type_id": clean_string(self.task.source_query_type_id), - "source_query_include_header": clean_string( - self.task.source_query_include_header - ), + "source_query_include_header": clean_string(self.task.source_query_include_header), "source_git": clean_string(self.task.source_git), "source_devops": clean_string(self.task.source_devops), "source_url": clean_string(self.task.source_url), - "source_require_sql_output": clean_string( - self.task.source_require_sql_output - ), + "source_require_sql_output": clean_string(self.task.source_require_sql_output), "enable_source_cache": clean_string(self.task.enable_source_cache), - "destination_file_delimiter": clean_string( - self.task.destination_file_delimiter - ), + "destination_file_delimiter": clean_string(self.task.destination_file_delimiter), "destination_file_name": clean_string(self.task.destination_file_name), "destination_ignore_delimiter": clean_string( self.task.destination_ignore_delimiter @@ -391,35 +364,21 @@ def clean_string(text: Optional[Union[str, int, datetime.datetime]]) -> str: "destination_file_line_terminator": clean_string( self.task.destination_file_line_terminator ), - "destination_quote_level_id": clean_string( - self.task.destination_quote_level_id - ), - "destination_create_zip": clean_string( - self.task.destination_create_zip - ), + "destination_quote_level_id": clean_string(self.task.destination_quote_level_id), + "destination_create_zip": clean_string(self.task.destination_create_zip), "destination_zip_name": clean_string(self.task.destination_zip_name), - "destination_file_type_id": clean_string( - self.task.destination_file_type_id - ), + "destination_file_type_id": clean_string(self.task.destination_file_type_id), "email_completion": clean_string(self.task.email_completion), "email_completion_log": clean_string(self.task.email_completion_log), "email_completion_file": clean_string(self.task.email_completion_file), - "email_completion_file_embed": clean_string( - self.task.email_completion_file_embed - ), + "email_completion_file_embed": clean_string(self.task.email_completion_file_embed), "email_completion_dont_send_empty_file": clean_string( self.task.email_completion_dont_send_empty_file ), - "email_completion_recipients": clean_string( - self.task.email_completion_recipients - ), - "email_completion_message": clean_string( - self.task.email_completion_message - ), + "email_completion_recipients": clean_string(self.task.email_completion_recipients), + "email_completion_message": clean_string(self.task.email_completion_message), "email_error": clean_string(self.task.email_error), - "email_error_recipients": clean_string( - self.task.email_error_recipients - ), + "email_error_recipients": clean_string(self.task.email_error_recipients), "email_error_message": clean_string(self.task.email_error_message), "max_retries": clean_string(self.task.max_retries), "est_duration": clean_string(self.task.est_duration), diff --git a/runner/scripts/em_sftp.py b/runner/scripts/em_sftp.py index 0f7c3759..b72ef04f 100644 --- a/runner/scripts/em_sftp.py +++ b/runner/scripts/em_sftp.py @@ -1,6 +1,5 @@ """SFTP connection manager.""" - import csv import fnmatch import os @@ -39,9 +38,11 @@ def connection_key(connection: ConnectionSftp) -> Optional[paramiko.pkey.PKey]: key = paramiko.RSAKey.from_private_key_file( key_file.name, - password=em_decrypt(connection.key_password, app.config["PASS_KEY"]) - if connection.key_password - else None, + password=( + em_decrypt(connection.key_password, app.config["PASS_KEY"]) + if connection.key_password + else None + ), ) return key @@ -81,9 +82,11 @@ def connect(connection: ConnectionSftp) -> Tuple[Transport, SFTPClient]: transport.auth_publickey(connection.username, key, event=None) transport.auth_password( connection.username, - em_decrypt(connection.password, app.config["PASS_KEY"]) - if connection.password - else "", + ( + em_decrypt(connection.password, app.config["PASS_KEY"]) + if connection.password + else "" + ), event=None, ) @@ -147,9 +150,7 @@ def __connect(self) -> Tuple[Transport, SFTPClient]: except ValueError as e: raise RunnerException(self.task, self.run_id, 9, str(e)) - def _walk( - self, directory: str - ) -> Generator[Tuple[str, List[Any], List[str]], None, None]: + def _walk(self, directory: str) -> Generator[Tuple[str, List[Any], List[str]], None, None]: dirs = [] nondirs = [] @@ -185,14 +186,9 @@ def load_data(file_obj: SFTPFile) -> Generator: break yield data - with tempfile.NamedTemporaryFile( - mode="w", delete=False, dir=self.dir - ) as data_file: + with tempfile.NamedTemporaryFile(mode="w+", delete=False, dir=self.dir) as data_file: for data in load_data(sftp_file): - if ( - self.task.source_sftp_ignore_delimiter != 1 - and self.task.source_sftp_delimiter - ): + if self.task.source_sftp_ignore_delimiter != 1 and self.task.source_sftp_delimiter: my_delimiter = self.task.source_sftp_delimiter or "," csv_reader = csv.reader( @@ -280,9 +276,7 @@ def save(self, overwrite: int, file_name: str) -> None: self.conn.chdir(self.__clean_path(self.connection.path or "/")) except BaseException as e: - raise RunnerException( - self.task, self.run_id, 9, f"Failed to change path.\n{e}" - ) + raise RunnerException(self.task, self.run_id, 9, f"Failed to change path.\n{e}") if overwrite != 1: try: @@ -343,6 +337,4 @@ def __close(self) -> None: self.transport.close() except BaseException as e: - raise RunnerException( - self.task, self.run_id, 9, f"Failed to close connection.\n{e}" - ) + raise RunnerException(self.task, self.run_id, 9, f"Failed to close connection.\n{e}") diff --git a/runner/scripts/em_smb.py b/runner/scripts/em_smb.py index 0c556c73..eafafd55 100644 --- a/runner/scripts/em_smb.py +++ b/runner/scripts/em_smb.py @@ -1,123 +1,78 @@ -"""SMB Connection Manager.""" +"""SMB Connection Manager. + +This module provides a class `Smb` to manage SMB file transfers. +""" -import csv import fnmatch import os -import pickle -import sys import tempfile -import time -import urllib -from io import TextIOWrapper from pathlib import Path -from typing import IO, Any, Dict, Generator, List, Optional, Tuple +from typing import IO, Dict, List, Optional from flask import current_app as app from pathvalidate import sanitize_filename -from smb.base import NotConnectedError, SMBTimeout -from smb.smb_structs import OperationFailure -from smb.SMBConnection import SMBConnection +from smbclient import ( + ClientConfig, + listdir, + makedirs, + register_session, + reset_connection_cache, + walk, +) +from smbclient.path import getsize +from smbclient.shutil import copyfile +from smbprotocol.exceptions import ( + LogonFailure, + SMBAuthenticationError, + SMBException, + SMBOSError, + SMBResponseException, +) +from smbprotocol.session import Session -from runner import redis_client from runner.model import ConnectionSmb, Task from runner.scripts.em_file import file_size from runner.scripts.em_messages import RunnerException, RunnerLog -from runner.scripts.smb_fix import SMBHandler - -sys.path.append(str(Path(__file__).parents[2]) + "/scripts") -from crypto import em_decrypt +from scripts.crypto import em_decrypt -def connection_json(connection: SMBConnection) -> Dict: +def connection_json(connection: Session) -> Dict: """Convert the connection string to json.""" return { - "share_name": str(connection.share_name).strip("/").strip("\\"), "server_name": connection.server_name, - "server_ip": connection.server_ip, "password": em_decrypt(connection.password, app.config["PASS_KEY"]), "username": str(connection.username), } -def connect( - username: str, password: str, server_name: str, server_ip: str -) -> SMBConnection: +def connect(username: str, password: str, server_name: str) -> Session: """Connect to SMB server. - After making a connection we save it to redis. Next time we need a connection - we can grab if from redis and attempt to use. If it is no longer connected - then reconnect. - - Because we want to use existing connection we will not close them... + Returns the session for use in connnection_cache """ - - def build_connect() -> SMBConnection: - conn = SMBConnection( - username, - em_decrypt(password, app.config["PASS_KEY"]), - "EM2.0 Webapp", - server_name, - use_ntlm_v2=True, - ) - - redis_client.set("smb_connection_" + str(server_name), pickle.dumps(conn)) - - return conn - try: - smb_connection = redis_client.get("smb_connection_" + str(server_name)) - conn = pickle.loads(smb_connection) if smb_connection else None - - # there is no timeout in paramiko so... - # continue to attemp to login during time limit - # if we are getting timeout exceptions - - conn = build_connect() - - # make connection is not already connected. - timeout = time.time() + 60 * 3 # 3 mins from now - - while True: - try: - connected = conn.connect(server_ip, 139) - - if not connected: - raise AssertionError() - break - - except ( - AssertionError, - ConnectionResetError, - SMBTimeout, - NotConnectedError, - ) as e: - # pylint: disable=no-else-continue - if time.time() <= timeout: - time.sleep(30) # wait 30 sec before retrying - # recreate login - conn = build_connect() - continue - elif time.time() > timeout: - # pylint: disable=raise-missing-from - raise ValueError("Connection timeout.") - - raise ValueError(f"Connection failed.\n{e}") - - return conn - - except BaseException as e: - raise ValueError(f"Connection failed.\n{e}") + sess = register_session( + server=server_name, + username=username, + password=em_decrypt(password, app.config["PASS_KEY"]), + connection_cache={}, + ) + return sess + except LogonFailure as err: + raise ValueError(f"Authentication failed\n{err}") + except SMBException as err: + raise ValueError(f"SMB registration failed\n{err}") + except Exception as err: + raise ValueError(f"Unexpected error during registration\n{err}") class Smb: """SMB Connection Handler Class. - smb.read = returns contents of a network file - smb.save = save contents of local file to network file + Provides methods to read files from and write files to SMB shares. + Handles wildcard reads, path generation, and connection reuse. """ - # pylint: disable=too-many-instance-attributes - def __init__( self, task: Task, @@ -125,152 +80,144 @@ def __init__( connection: Optional[ConnectionSmb], directory: Path, ): - """Set up class parameters.""" - # pylint: disable=too-many-arguments + """Initialize the SMB class with task, run ID, connection, and working directory.""" self.task = task self.run_id = run_id self.connection = connection - self.dir = directory + self.local_temp_dir = directory if self.connection is not None: self.share_name = str(self.connection.share_name).strip("/").strip("\\") self.username = self.connection.username self.password = self.connection.password - self.server_ip = self.connection.server_ip - self.server_name = ( - self.connection.server_name if self.connection else "Error" - ) + self.server_name = self.connection.server_name else: # default connection for backups self.share_name = app.config["SMB_DEFAULT_SHARE"].strip("/").strip("\\") self.username = app.config["SMB_USERNAME"] self.password = app.config["SMB_PASSWORD"] - self.server_ip = app.config["SMB_SERVER_IP"] self.server_name = app.config["SMB_SERVER_NAME"] - self.subfolder = app.config.get("SMB_SUBFOLDER") + self.subfolder = app.config["SMB_SUBFOLDER"] - self.conn = self.__connect() + # set global username and password. It sets default just in case username and pw is missing. + ClientConfig( + username=app.config["SMB_USERNAME"], + password=em_decrypt(app.config["SMB_PASSWORD"], app.config["PASS_KEY"]), + ) + self.cache = {"cache": self.__connect()} - def __connect(self) -> SMBConnection: + def __connect(self) -> Session: """Connect to SMB server. - After making a connection we save it to redis. Next time we need a connection - we can grab if from redis and attempt to use. If it is no longer connected - then reconnect. - - Because we want to use existing connection we will not close them... + After making a connection we save the session. Next time we need a connection + we can grab it and attempt to use. If it is no longer connected + then it will reconnect. """ - try: - return connect( - str(self.username), - str(self.password), - str(self.server_name), - str(self.server_ip), - ) - except ValueError as e: - raise RunnerException(self.task, self.run_id, 10, str(e)) - - def _walk( - self, directory: str - ) -> Generator[Tuple[str, List[Any], List[str]], None, None]: - dirs = [] - nondirs = [] - - for entry in self.conn.listPath( - self.share_name, directory, search=65591, timeout=30, pattern="*" - ): - if entry.isDirectory and entry.filename not in ["/", ".", ".."]: - dirs.append(entry.filename) - elif entry.isDirectory is False: - nondirs.append(str(Path(directory).joinpath(entry.filename))) - - yield directory, dirs, nondirs - - # Recurse into sub-directories - for dirname in dirs: - new_path = str(Path(directory).joinpath(dirname)) - yield from self._walk(new_path) - - def __load_file(self, file_name: str, index: int, length: int) -> IO[str]: - RunnerLog( - self.task, self.run_id, 10, f"({index} of {length}) downloading {file_name}" + return connect( + username=str(self.username), + password=str(self.password), + server_name=str(self.server_name), ) - director = urllib.request.build_opener(SMBHandler) - - password = em_decrypt(self.password, app.config["PASS_KEY"]) + def __load_file(self, full_path: str, index: int, length: int) -> IO[bytes]: + """Copy a file from a smb drive to a local path. - open_file_for_read = director.open( - f"smb://{self.username}:{password}@{self.server_name},{self.server_ip}/{self.share_name}/{file_name}" + :param full_path: the full UNC path to the file. + :param index: the file number that is being downloaded. + :param length: the amount of files being downloaded. + """ + original_name = Path(full_path).name + local_path = Path(self.local_temp_dir) / original_name + RunnerLog( + self.task, + self.run_id, + 10, + f"({index} of {length}) downloading {original_name}", ) - def load_data(file_obj: TextIOWrapper) -> Generator: - with file_obj as this_file: - while True: - data = this_file.read(1024) - if not data: - break - yield data - - # send back contents - + # need to return a file object to be used in em_file steps. with tempfile.NamedTemporaryFile( - mode="wb+", delete=False, dir=self.dir + mode="wb", delete=False, dir=self.local_temp_dir ) as data_file: - for data in load_data(open_file_for_read): - if ( - self.task.source_smb_ignore_delimiter != 1 - and self.task.source_smb_delimiter - ): - my_delimiter = self.task.source_smb_delimiter or "," - - csv_reader = csv.reader( - data.splitlines(), - delimiter=my_delimiter, - ) - writer = csv.writer(data_file) - writer.writerows(csv_reader) + copyfile(f"\\\\{full_path}", data_file.name, connection_cache=self.cache) - else: - data_file.write(data) - - original_name = str(self.dir.joinpath(file_name.split("/")[-1])) - if os.path.islink(original_name): - os.unlink(original_name) - elif os.path.isfile(original_name): - os.remove(original_name) - os.link(data_file.name, original_name) - data_file.name = original_name # type: ignore[misc] - - open_file_for_read.close() + # overwrite existing file if needed. + if local_path.exists(): + local_path.unlink() + os.rename(data_file.name, local_path) + data_file.name = str(local_path) return data_file - def read(self, file_name: str) -> List[IO[str]]: + def __smb_file_exists(self, smb_path: str) -> bool: + """Check if a file exists on an SMB share (more reliable than exists).""" + try: + dir_path = Path(smb_path).parent + file_name = Path(smb_path).name + return file_name in listdir(dir_path, connection_cache=self.cache) + except SMBOSError as e: + raise RunnerException( + self.task, + self.run_id, + 10, + f"Failed to check if file exists.\n{e}", + ) + + def read(self, file_name: str) -> List[IO[bytes]]: """Read file contents of network file path. Data is loaded into a temp file. Returns a path or raises an exception. """ + # get full path + # if the connection is none, then the file_name has the full path. + if self.connection is not None: + # lets get the full path and checking if the file_name already has the connection.path in it. + # this is for older tasks where we had to include the path even though it was already in the connection. + base = Path(sanitize_filename(self.server_name or "")) / Path( + sanitize_filename(self.share_name or "") + ) + if "/*" in file_name: + file_name_path = Path(file_name.split("*")[0].strip("/")) + else: + file_name_path = Path(file_name.strip("/")).parent + + conn_path = (self.connection.path or "").strip("/") + if conn_path and file_name_path.match(conn_path): + file_path = str(base / Path(file_name.strip("/"))) + else: + file_path = str(base / conn_path / Path(file_name.strip("/"))) + else: + file_path = file_name + try: # if there is a wildcard in the filename if "*" in file_name: RunnerLog(self.task, self.run_id, 10, "Searching for matching files...") - # a smb file name can be a path, but listpath - # will only list current folder. - # we need to split the filename path and iter - # through the folders that match. + # we need to split the file path from a * to get a base path + # this will be passed into walk funcion + # walk will generate file names in a directory and everything below it. # get the path up to the *. - base_dir = str(Path(file_name.split("*")[0]).parent) - + base_dir = f"\\\\{str(Path(file_path).parent).strip('*') if file_name.split('*')[0] else Path(file_path.split('*')[0])}" + file_path_name = str(Path(file_path).name) file_list = [] - for _, _, walk_file_list in self._walk(base_dir): - for this_file in walk_file_list: - if fnmatch.fnmatch(this_file, file_name): - file_list.append(this_file) + if self.task.source_smb_ignore_subfolders == 1: + for filename in listdir(base_dir, connection_cache=self.cache): + if fnmatch.fnmatch(filename, file_path_name): + file_list += [ + # remove the \\ from the base_dir here. + str(Path(base_dir.replace("\\\\", "")) / filename) + ] + else: + for path, _, filenames in walk(base_dir, connection_cache=self.cache): + file_list += [ + str(Path(path) / f) + for f in filenames + if fnmatch.fnmatch(f, file_path_name) + ] RunnerLog( self.task, @@ -286,11 +233,11 @@ def read(self, file_name: str) -> List[IO[str]]: # if a file was found, try to open. return [ - self.__load_file(file_name, i, len(file_list)) - for i, file_name in enumerate(file_list, 1) + self.__load_file(full_path=f_name, index=i, length=len(file_list)) + for i, f_name in enumerate(file_list, 1) ] - return [self.__load_file(file_name, 1, 1)] + return [self.__load_file(full_path=file_path, index=1, length=1)] except BaseException as e: raise RunnerException( self.task, @@ -301,17 +248,26 @@ def read(self, file_name: str) -> List[IO[str]]: # pylint: disable=R1710 def save(self, overwrite: int, file_name: str) -> str: # type: ignore[return] - """Load data into network file path, creating location if not existing.""" + """Upload a local file to SMB server. Will create directories if needed. + + If overwrite is disabled and file exists, skips copy. + """ try: + base_path = Path(sanitize_filename(self.server_name or "")) / Path( + sanitize_filename(self.share_name or "") + ) if self.connection is not None: - dest_path = str(Path(self.connection.path or "").joinpath(file_name)) + dest_path = str( + base_path / Path((self.connection.path or "").strip("/")).joinpath(file_name) + ) else: dest_path = str( Path( - ( + base_path + / ( Path( - sanitize_filename(self.subfolder) - / sanitize_filename(self.task.project.name or "") + Path(sanitize_filename(self.subfolder or "")) + / Path(sanitize_filename(self.task.project.name or "")) ) if self.subfolder else Path(sanitize_filename(self.task.project.name or "")) @@ -322,52 +278,55 @@ def save(self, overwrite: int, file_name: str) -> str: # type: ignore[return] ) ) - # path must be created one folder at a time.. the docs say the path will all be - # created if not existing, but it doesn't seem to be the case :) - my_dir = dest_path.split("/")[:-1] + smb_path = f"\\\\{dest_path}" - path_builder = "" - for my_path in my_dir: - # only create directories in the backup drive. For tasks - # the user must already have a usable folder created. - if self.connection is None: - path_builder += my_path + "/" + my_dir = str(Path(smb_path).parent) - try: - self.conn.listPath(self.share_name, path_builder) - # pylint: disable=broad-except - except OperationFailure: - self.conn.createDirectory(self.share_name, path_builder) + # makedirs will create the folders. If parent doesn't exist, it will create that also. + try: + makedirs(my_dir, exist_ok=True, connection_cache=self.cache) + except (OSError, SMBException, SMBResponseException, SMBAuthenticationError) as e: + raise RunnerException( + self.task, + self.run_id, + 10, + f"Failed to create SMB directory: {my_dir}\n{e}", + ) - # pylint: disable=useless-else-on-loop - else: - if overwrite != 1: - try: - # try to get security of the file. if it doesn't exist, - # we crash and then can create the file. - self.conn.getSecurity(self.share_name, dest_path) - RunnerLog( - self.task, - self.run_id, - 10, - "File already exists and will not be loaded", - ) - return dest_path + if overwrite != 1 and self.__smb_file_exists(smb_path): + RunnerLog( + self.task, + self.run_id, + 10, + "File already exists and will not be loaded", + ) + self.__close() + return smb_path - # pylint: disable=broad-except - except BaseException: - pass + try: - with open( - str(self.dir.joinpath(file_name)), "rb", buffering=0 - ) as file_obj: - uploaded_size = self.conn.storeFile( - self.share_name, dest_path, file_obj, timeout=120 - ) + copyfile( + self.local_temp_dir.joinpath(file_name), smb_path, connection_cache=self.cache + ) + except FileNotFoundError as e: + raise RunnerException(self.task, self.run_id, 10, f"Source file not found: {e}") + except PermissionError as e: + raise RunnerException( + self.task, + self.run_id, + 10, + f"Permission denied while copying file: {e}", + ) + except Exception as e: + raise RunnerException( + self.task, + self.run_id, + 10, + f"Unexpected error during file copy: {e}", + ) + uploaded_size = getsize(smb_path) - server_name = ( - "backup" if self.connection is None else self.connection.server_name - ) + server_name = "backup" if self.connection is None else self.connection.server_name RunnerLog( self.task, @@ -375,11 +334,17 @@ def save(self, overwrite: int, file_name: str) -> str: # type: ignore[return] 10, f"{file_size(uploaded_size)} uploaded to {server_name} server.", ) - - return dest_path + self.__close() + return smb_path # pylint: disable=broad-except - except BaseException as e: + except Exception as e: raise RunnerException( self.task, self.run_id, 10, f"Failed to save file on server.\n{e}" ) + + def __close(self) -> None: + try: + reset_connection_cache(connection_cache=self.cache) + except BaseException as e: + raise RunnerException(self.task, self.run_id, 10, f"Failed to close connection.\n{e}") diff --git a/runner/scripts/em_smtp.py b/runner/scripts/em_smtp.py index a553eff4..aa21caf9 100644 --- a/runner/scripts/em_smtp.py +++ b/runner/scripts/em_smtp.py @@ -73,16 +73,12 @@ def __send_ssms(self) -> None: if app.config.get("SMTP_USE_TLS", False): mail_server.starttls() mail_server.ehlo() - - if app.config.get("SMTP_USERNAME"): mail_server.login( app.config["SMTP_USERNAME"], app.config.get("SMTP_PASSWORD", None), ) - mail_server.sendmail( - app.config["SMTP_SENDER_EMAIL"], phone, self.msg.as_string() - ) + mail_server.sendmail(app.config["SMTP_SENDER_EMAIL"], phone, self.msg.as_string()) mail_server.quit() log = TaskLog( @@ -112,9 +108,7 @@ def __send_mail(self) -> None: self.msg = MIMEMultipart() self.msg["From"] = email.utils.formataddr( # type: ignore[attr-defined] ( - email.header.Header(app.config["SMTP_SENDER_NAME"], "utf-8").encode( - "utf-8" - ), + email.header.Header(app.config["SMTP_SENDER_NAME"], "utf-8").encode("utf-8"), app.config["SMTP_SENDER_EMAIL"], ) ) @@ -145,6 +139,13 @@ def __send_mail(self) -> None: ) mail_server.ehlo() + if app.config.get("SMTP_USE_TLS", False): + mail_server.starttls() + mail_server.ehlo() + mail_server.login( + app.config["SMTP_USERNAME"], + app.config.get("SMTP_PASSWORD", None), + ) mail_server.sendmail( app.config["SMTP_SENDER_EMAIL"], self.mailto, self.msg.as_string() ) diff --git a/runner/scripts/em_sqlserver.py b/runner/scripts/em_sqlserver.py index 0639a3a5..2cbe7d18 100644 --- a/runner/scripts/em_sqlserver.py +++ b/runner/scripts/em_sqlserver.py @@ -4,6 +4,7 @@ import itertools import sys import tempfile +import time from pathlib import Path from typing import IO, Any, Generator, List, Optional, Tuple @@ -108,24 +109,51 @@ def run(self, query: str) -> Tuple[int, List[IO[str]]]: Returns a path or raises an exception. """ - self.cur.execute(query) - - with tempfile.NamedTemporaryFile( - mode="w+", newline="", delete=False, dir=self.dir - ) as data_file: - writer = csv.writer(data_file) - - if self.task.source_query_include_header: - writer.writerow( - [i[0] for i in self.cur.description] if self.cur.description else [] + # lets retry the runs if there are operational errors. + # such as connection reset + retries = 0 + max_retries = 3 + sleep_time = 10 + while retries < max_retries: + try: + self.cur.execute(query) + + with tempfile.NamedTemporaryFile( + mode="w+", newline="", delete=False, dir=self.dir + ) as data_file: + writer = csv.writer(data_file) + + if self.task.source_query_include_header: + writer.writerow( + [i[0] for i in self.cur.description] if self.cur.description else [] + ) + + for row in self.__rows(): + writer.writerow(row) + + self.__close() + + if self.task.source_require_sql_output == 1 and self.row_count == 0: + raise ValueError("SQL output is required but no records returned.") + + return self.row_count, [data_file] + + except pyodbc.OperationalError as err: + retries += 1 + self.__close() + if retries >= max_retries: + raise ValueError("pyodbc operationalError when trying to connect to db") + log = TaskLog( + task_id=self.task.id, + job_id=self.run_id, + status_id=20, + message=f"Query failed with error: {err} It will retry again. Retry {retries} out of {max_retries}", ) - - for row in self.__rows(): - writer.writerow(row) - - self.__close() - - if self.task.source_require_sql_output == 1 and self.row_count == 0: - raise ValueError("SQL output is required but no records returned.") - - return self.row_count, [data_file] + db.session.add(log) + db.session.commit() + time.sleep(sleep_time) # sleep for 10 seconds + sleep_time += 20 + # reconnect + self.conn, self.cur = self.__connect() + # this should never hit but it makes mypy happy. + return 0, [] diff --git a/runner/scripts/em_ssh.py b/runner/scripts/em_ssh.py index 09989ca4..cb215d8e 100644 --- a/runner/scripts/em_ssh.py +++ b/runner/scripts/em_ssh.py @@ -1,4 +1,5 @@ """SSH connection handler.""" + import select import sys import time @@ -73,18 +74,14 @@ def __connect(self) -> paramiko.SSHClient: try: return connect(self.connection) except BaseException as e: - raise RunnerException( - self.task, self.run_id, 19, f"Failed to connect.\n{e}" - ) + raise RunnerException(self.task, self.run_id, 19, f"Failed to connect.\n{e}") def __close(self) -> None: try: self.session.close() except BaseException as e: - raise RunnerException( - self.task, self.run_id, 19, f"Failed to disconnect.\n{e}" - ) + raise RunnerException(self.task, self.run_id, 19, f"Failed to disconnect.\n{e}") def run(self) -> None: """Run an SSH Command. @@ -113,11 +110,7 @@ def run(self) -> None: stderr_data = b"" stdout_data = b"" - while ( - not channel.closed - or channel.recv_ready() - or channel.recv_stderr_ready() - ): + while not channel.closed or channel.recv_ready() or channel.recv_stderr_ready(): got_chunk = False readq, _, _ = select.select([stdout.channel], [], [], timeout) @@ -126,9 +119,7 @@ def run(self) -> None: stdout_data += stdout.channel.recv(len(chunk.in_buffer)) got_chunk = True if chunk.recv_stderr_ready(): - stderr_data += stderr.channel.recv_stderr( - len(chunk.in_stderr_buffer) - ) + stderr_data += stderr.channel.recv_stderr(len(chunk.in_stderr_buffer)) got_chunk = True if ( @@ -163,8 +154,6 @@ def run(self) -> None: ) except BaseException as e: - raise RunnerException( - self.task, self.run_id, 19, f"Failed to run command.\n{e}" - ) + raise RunnerException(self.task, self.run_id, 19, f"Failed to run command.\n{e}") self.__close() diff --git a/runner/scripts/smb_fix.py b/runner/scripts/smb_fix.py deleted file mode 100644 index 7cdaaede..00000000 --- a/runner/scripts/smb_fix.py +++ /dev/null @@ -1,148 +0,0 @@ -"""Update to an older version of https://github.com/miketeo/pysmb. Waiting for next release.""" -# flake8: noqa -# type: ignore -# mypy: ignore-errors -import email -import mimetypes -import os -import socket -import sys -import tempfile -import time -import urllib.error -import urllib.parse -import urllib.request -from io import BytesIO -from urllib.parse import ( - quote, - splitattr, - splithost, - splitpasswd, - splitport, - splittag, - splittype, - splituser, - splitvalue, - unquote, - unwrap, -) -from urllib.request import ftpwrapper -from urllib.response import addinfourl - -from nmb.NetBIOS import NetBIOS -from smb.base import NotConnectedError, SMBTimeout -from smb.SMBConnection import SMBConnection - -USE_NTLM = True -MACHINE_NAME = None - - -class SMBHandler(urllib.request.BaseHandler): - def smb_open(self, req): - global USE_NTLM, MACHINE_NAME - - if not req.host: - raise urllib.error.URLError("SMB error: no host given") - host, port = splitport(req.host) - if port is None: - port = 139 - else: - port = int(port) - - # username/password handling - - user, host = splituser(host) - - if user: - user, passwd = splitpasswd(user) - else: - passwd = None - - host = unquote(host) - user = user or "" - - domain = "" - if ";" in user: - domain, user = user.split(";", 1) - - passwd = passwd or "" - myname = MACHINE_NAME or self.generateClientMachineName() - - server_name, host = host.split(",") if "," in host else [None, host] - - if server_name is None: - n = NetBIOS() - - names = n.queryIPForName(host) - if names: - server_name = names[0] - else: - raise urllib.error.URLError( - "SMB error: Hostname does not reply back with its machine name" - ) - - path, attrs = splitattr(req.selector) - if path.startswith("/"): - path = path[1:] - dirs = path.split("/") - dirs = list(map(unquote, dirs)) - service, path = dirs[0], "/".join(dirs[1:]) - - try: - conn = SMBConnection( - user, passwd, myname, server_name, domain=domain, use_ntlm_v2=USE_NTLM - ) - - # retry - retry = 0 - while True: - try: - connected = conn.connect(host, port, timeout=120) - if not connected: - raise AssertionError() - break - - except ( - AssertionError, - ConnectionResetError, - SMBTimeout, - NotConnectedError, - ) as e: - if retry <= 10: - retry += 1 - time.sleep(5) # wait 5 sec before retrying - continue - - raise ValueError(f"Connection failed.\n{e}") - - headers = email.message.Message() - if req.data: - filelen = conn.storeFile(service, path, req.data) - - headers.add_header("Content-length", "0") - fp = BytesIO(b"") - else: - fp = self.createTempFile() - file_attrs, retrlen = conn.retrieveFile(service, path, fp) - fp.seek(0) - - mtype = mimetypes.guess_type(req.get_full_url())[0] - if mtype: - headers.add_header("Content-type", mtype) - if retrlen is not None and retrlen >= 0: - headers.add_header("Content-length", "%d" % retrlen) - - return addinfourl(fp, headers, req.get_full_url()) - except Exception as ex: - raise urllib.error.URLError("smb error: %s" % ex).with_traceback( - sys.exc_info()[2] - ) - - def createTempFile(self): - return tempfile.TemporaryFile() - - def generateClientMachineName(self): - hostname = socket.gethostname() - if hostname: - return hostname.split(".")[0] - return "SMB%d" % os.getpid() diff --git a/runner/scripts/task_runner.py b/runner/scripts/task_runner.py index acea1e1e..6b19530c 100644 --- a/runner/scripts/task_runner.py +++ b/runner/scripts/task_runner.py @@ -12,7 +12,7 @@ import time import urllib.parse from pathlib import Path -from typing import IO, List, Optional +from typing import IO, Any, List, Optional import azure.devops.credentials as cd import requests @@ -40,9 +40,7 @@ from runner.scripts.em_ssh import Ssh from runner.scripts.em_system import system_monitor from runner.web.filters import datetime_format - -sys.path.append(str(Path(__file__).parents[2]) + "/scripts") -from crypto import em_decrypt +from scripts.crypto import em_decrypt env = Environment( loader=PackageLoader("runner", "templates"), @@ -97,7 +95,7 @@ def __init__(self, task_id: int) -> None: task = Task.query.filter_by(id=task_id).first() - self.source_files: List[IO[str]] + self.source_files: List[IO[Any]] = [] self.output_files: List[str] = [] print("starting task " + str(task.id)) # noqa: T201 @@ -141,7 +139,6 @@ def __init__(self, task_id: int) -> None: # load file/ run query/ etc to get some sort of data or process something. self.query_output_size: Optional[int] = None self.source_loader = SourceCode(self.task, self.run_id, self.param_loader) - self.source_files = [] self.__get_source() # any data post-processing @@ -158,7 +155,9 @@ def __init__(self, task_id: int) -> None: ) # store output - self.__store_files() + # if file_type is none. We don't need to store files. + if self.task.destination_file_type_id != 5: + self.__store_files() # send confirmation/error emails self.__send_email() @@ -172,48 +171,66 @@ def __init__(self, task_id: int) -> None: redis_client.delete(f"runner_{task_id}_attempt") task.status_id = 4 task.est_duration = (datetime.datetime.now() - task.last_run).total_seconds() - # if this is a sequence job, trigger the next job. if task.project.sequence_tasks == 1: - task_id_list = [ - x.id - for x in Task.query.filter_by(enabled=1) - .filter_by(project_id=task.project_id) - .order_by(Task.order.asc(), Task.name.asc()) # type: ignore[union-attr] + task_list = ( + db.session.execute( + db.select(Task) + .filter_by(enabled=1, project_id=task.project_id) + .where(Task.order > task.order) + .order_by(Task.order.asc()) + ) + .scalars() .all() - ] + ) + + # check if any are still running in same order. + runners = db.session.execute( + db.select(Task) + .filter_by(enabled=1, order=task.order, project_id=task.project_id) + # 4 is completed. This also filters out error tasks + .where(Task.status_id != 4) + .where(Task.id != task.id) + ).scalar() + # potentially the task was disabled while running # and removed from list. when that happens we should # quit. - if task.id in task_id_list: - next_task_id = task_id_list[ - task_id_list.index(task.id) + 1 : task_id_list.index(task.id) + 2 - ] - if next_task_id: - # trigger next task - RunnerLog( - self.task, - self.run_id, - 8, - f"Triggering run of next sequence job: {next_task_id}.", - ) - - next_task = Task.query.filter_by(id=next_task_id[0]).first() - - RunnerLog( - next_task, - None, - 8, - f"Run triggered by previous sequence job: {task.id}.", - ) + # also make sure everything is completed before + # going on to starting next tasks. + if ( + db.session.execute(db.select(Task).filter_by(enabled=1, id=task.id)).scalar() + and not runners + and task_list + ): + # get the next rank from the task_list. + task_sequence = task_list[0].order + + # kick off all the tasks in task_list that match the next rank. + for tsk in task_list: + if tsk.order == task_sequence: + # trigger next tasks + RunnerLog( + self.task, + self.run_id, + 8, + f"Triggering run of next sequence job: {tsk.id}.", + ) - requests.get( - app.config["RUNNER_HOST"] + "/" + str(next_task_id[0]), - timeout=60, - ) + RunnerLog( + tsk, + None, + 8, + f"Run triggered by previous sequence job: {task.id}.", + ) - else: - RunnerLog(self.task, self.run_id, 8, "Sequence completed!") + requests.get( + app.config["RUNNER_HOST"] + "/" + str(tsk.id), + timeout=60, + ) + # if there isn't anything in task list, add log that sequence is completed. + elif not task_list: + RunnerLog(self.task, self.run_id, 8, "Sequence completed!") task.last_run_job_id = None task.last_run = datetime.datetime.now() @@ -227,13 +244,9 @@ def __get_source(self) -> None: RunnerLog(self.task, self.run_id, 8, "Loading query...") query = self.__get_query() except BaseException as e: - raise RunnerException( - self.task, self.run_id, 8, f"Failed to load query.\n{e}" - ) + raise RunnerException(self.task, self.run_id, 8, f"Failed to load query.\n{e}") - RunnerLog( - self.task, self.run_id, 8, "Starting query run, waiting for results..." - ) + RunnerLog(self.task, self.run_id, 8, "Starting query run, waiting for results...") if external_db.database_type.id == 1: # postgres try: @@ -243,8 +256,7 @@ def __get_source(self) -> None: connection=em_decrypt( external_db.connection_string, app.config["PASS_KEY"] ), - timeout=external_db.timeout - or app.config["DEFAULT_SQL_TIMEOUT"], + timeout=external_db.timeout or app.config["DEFAULT_SQL_TIMEOUT"], directory=self.temp_path, ).run(query) @@ -264,8 +276,7 @@ def __get_source(self) -> None: connection=em_decrypt( external_db.connection_string, app.config["PASS_KEY"] ), - timeout=external_db.timeout - or app.config["DEFAULT_SQL_TIMEOUT"], + timeout=external_db.timeout or app.config["DEFAULT_SQL_TIMEOUT"], directory=self.temp_path, ).run(query) @@ -306,9 +317,7 @@ def __get_source(self) -> None: elif self.task.source_type_id == 2: # smb file if self.task.source_smb_file: RunnerLog(self.task, self.run_id, 10, "Loading data from server...") - file_name = self.param_loader.insert_file_params( - self.task.source_smb_file - ) + file_name = self.param_loader.insert_file_params(self.task.source_smb_file) file_name = DateParsing( task=self.task, run_id=self.run_id, @@ -327,9 +336,7 @@ def __get_source(self) -> None: elif self.task.source_type_id == 3: # sftp file if self.task.source_sftp_file: RunnerLog(self.task, self.run_id, 9, "Loading data from server...") - file_name = self.param_loader.insert_file_params( - self.task.source_sftp_file - ) + file_name = self.param_loader.insert_file_params(self.task.source_sftp_file) file_name = DateParsing( task=self.task, run_id=self.run_id, @@ -348,9 +355,7 @@ def __get_source(self) -> None: elif self.task.source_type_id == 4: # ftp file if self.task.source_ftp_file: RunnerLog(self.task, self.run_id, 13, "Loading data from server...") - file_name = self.param_loader.insert_file_params( - self.task.source_ftp_file - ) + file_name = self.param_loader.insert_file_params(self.task.source_ftp_file) file_name = DateParsing( task=self.task, run_id=self.run_id, @@ -390,9 +395,7 @@ def __get_query(self) -> str: query = self.source_loader.source() elif self.task.source_query_type_id == 2: # smb - file_name = self.param_loader.insert_file_params( - self.task.source_query_file - ) + file_name = self.param_loader.insert_file_params(self.task.source_query_file) file_name = DateParsing( task=self.task, run_id=self.run_id, @@ -428,10 +431,7 @@ def __process(self) -> None: processing_script_name = self.temp_path / (self.run_id + ".py") my_file = "" - if ( - self.task.processing_type_id == 1 - and self.task.processing_smb_id is not None - ): + if self.task.processing_type_id == 1 and self.task.processing_smb_id is not None: file_name = self.param_loader.insert_file_params(self.task.source_smb_file) file_name = DateParsing( task=self.task, @@ -450,13 +450,8 @@ def __process(self) -> None: .name ).read_text("utf8") - elif ( - self.task.processing_type_id == 2 - and self.task.processing_sftp_id is not None - ): - file_name = self.param_loader.insert_file_params( - self.task.processing_sftp_file - ) + elif self.task.processing_type_id == 2 and self.task.processing_sftp_id is not None: + file_name = self.param_loader.insert_file_params(self.task.processing_sftp_file) file_name = DateParsing( task=self.task, run_id=self.run_id, @@ -474,13 +469,8 @@ def __process(self) -> None: .name ).read_text("utf8") - elif ( - self.task.processing_type_id == 3 - and self.task.processing_ftp_id is not None - ): - file_name = self.param_loader.insert_file_params( - self.task.processing_ftp_file - ) + elif self.task.processing_type_id == 3 and self.task.processing_ftp_id is not None: + file_name = self.param_loader.insert_file_params(self.task.processing_ftp_file) file_name = DateParsing( task=self.task, run_id=self.run_id, @@ -500,10 +490,7 @@ def __process(self) -> None: elif self.task.processing_type_id == 4 and self.task.processing_git is not None: # if a dir is specified then download all files - if ( - self.task.processing_command is not None - and self.task.processing_command != "" - ): + if self.task.processing_command is not None and self.task.processing_command != "": try: split_url = re.split("#|@", self.task.processing_git) branch = None @@ -518,12 +505,8 @@ def __process(self) -> None: base_url, flags=re.IGNORECASE, ) - .replace( - "", urllib.parse.quote(app.config["GIT_USERNAME"]) - ) - .replace( - "", urllib.parse.quote(app.config["GIT_PASSWORD"]) - ) + .replace("", urllib.parse.quote(app.config["GIT_USERNAME"])) + .replace("", urllib.parse.quote(app.config["GIT_PASSWORD"])) ) cmd = ( @@ -572,14 +555,16 @@ def __process(self) -> None: run_id=self.run_id, cmd=cmd, success_msg="Repo cloned", - error_msg="Failed to clone repo: %s" - % (self.task.processing_url,), + error_msg="Failed to clone repo: %s" % (self.task.processing_url,), ).shell() - processing_script_name = str(self.temp_path) + ( - self.task.processing_command - if self.task.processing_command is not None - else "" + processing_script_name = Path( + str(self.temp_path) + + ( + self.task.processing_command + if self.task.processing_command is not None + else "" + ) ) # pylint: disable=broad-except except BaseException: @@ -589,26 +574,16 @@ def __process(self) -> None: else: my_file = self.source_loader.web_url(self.task.processing_url) - elif ( - self.task.processing_type_id == 6 and self.task.processing_code is not None - ): + elif self.task.processing_type_id == 6 and self.task.processing_code is not None: my_file = self.task.processing_code - elif ( - self.task.processing_type_id == 7 - and self.task.processing_devops is not None - ): + elif self.task.processing_type_id == 7 and self.task.processing_devops is not None: # if a dir is specified then download all files - if ( - self.task.processing_command is not None - and self.task.processing_command != "" - ): + if self.task.processing_command is not None and self.task.processing_command != "": try: token = app.config["DEVOPS_TOKEN"] creds = cd.BasicAuthentication("", token) - connection = Connection( - base_url=app.config["DEVOPS_URL"], creds=creds - ) + connection = Connection(base_url=app.config["DEVOPS_URL"], creds=creds) # Get a client (the "core" client provides access to projects, teams, etc) core_client = connection.clients.get_core_client() @@ -625,18 +600,14 @@ def __process(self) -> None: rf"\.(?:com\/{org_name[0]}\/{project[0]}\/_git)\/(.+?)\?", url ) # need this to get the projects id - projects = [ - i for i in get_projects_response if (i.name == project[0]) - ] + projects = [i for i in get_projects_response if (i.name == project[0])] path = re.findall(r"(path[=])\/(.+?)(&|$)", url) # if branch is specified, we need to get that, else pass in main branch. this_branch = re.findall(r"(version[=]GB)(.+?)$", url) version = AttributeDict( { - "version": ( - "main" if len(this_branch) == 0 else this_branch[0][1] - ), + "version": ("main" if len(this_branch) == 0 else this_branch[0][1]), "version_type": 0, "version_options": 0, } @@ -699,9 +670,7 @@ def __process(self) -> None: # pylint: disable=broad-except except BaseException as e: - raise RunnerException( - self.task, self.run_id, 8, f"Processing script failure:\n{e}" - ) + raise RunnerException(self.task, self.run_id, 8, f"Processing script failure:\n{e}") try: # run processing script @@ -710,15 +679,15 @@ def __process(self) -> None: run_id=self.run_id, directory=self.temp_path, source_files=self.source_files, - script=self.task.processing_command or processing_script_name.name - if self.task.processing_type_id != 6 # source code - else processing_script_name.name, + script=( + self.task.processing_command or processing_script_name.name + if self.task.processing_type_id != 6 # source code + else processing_script_name.name + ), params=self.param_loader, ).run() except BaseException as e: - raise RunnerException( - self.task, self.run_id, 8, f"Processing script failure:\n{e}" - ) + raise RunnerException(self.task, self.run_id, 8, f"Processing script failure:\n{e}") # allow processor to rename file if output: @@ -746,8 +715,8 @@ def __process(self) -> None: os.link(data_file.name, original_name) - data_file.name = original_name # type: ignore[misc] - self.source_files.append(data_file) + data_file.name = original_name + self.source_files.append(data_file) # type: ignore except BaseException as e: raise RunnerException( @@ -758,6 +727,7 @@ def __process(self) -> None: ) def __store_files(self) -> None: + # it there are no source files nothing to store. if not self.source_files or len(self.source_files) == 0: return @@ -774,10 +744,13 @@ def __store_files(self) -> None: if self.query_output_size is not None else Path(this_file.name).stat().st_size ) - + original_name = self.task.destination_file_name # get new parameters just in case it was changed in the processing script. params = ParamLoader(self.task, self.run_id) + # rename the file so it will save off all the files + if self.task.destination_file_name and len(self.source_files) > 1: + self.task.destination_file_name = f"{Path(self.task.destination_file_name).stem}_{file_counter}{Path(self.task.destination_file_name).suffix}" # get file name. if no name specified in task setting, then use temp name. try: file_name, file_path, file_hash = File( @@ -825,10 +798,7 @@ def __store_files(self) -> None: # send to sftp if self.task.destination_sftp == 1 and self.task.destination_sftp_conn: - if ( - self.task.destination_sftp_dont_send_empty_file == 1 - and this_file_size == 0 - ): + if self.task.destination_sftp_dont_send_empty_file == 1 and this_file_size == 0: RunnerLog( self.task, self.run_id, @@ -848,10 +818,7 @@ def __store_files(self) -> None: # send to ftp if self.task.destination_ftp == 1 and self.task.destination_ftp_conn: - if ( - self.task.destination_ftp_dont_send_empty_file == 1 - and this_file_size == 0 - ): + if self.task.destination_ftp_dont_send_empty_file == 1 and this_file_size == 0: RunnerLog( self.task, self.run_id, @@ -871,10 +838,7 @@ def __store_files(self) -> None: # save to smb if self.task.destination_smb == 1 and self.task.destination_smb_conn: - if ( - self.task.destination_smb_dont_send_empty_file == 1 - and this_file_size == 0 - ): + if self.task.destination_smb_dont_send_empty_file == 1 and this_file_size == 0: RunnerLog( self.task, self.run_id, @@ -891,6 +855,8 @@ def __store_files(self) -> None: overwrite=self.task.destination_smb_overwrite, file_name=file_name, ) + # set the destination_file_name back to original name + self.task.destination_file_name = original_name def __send_email(self) -> None: logs = ( @@ -911,19 +877,17 @@ def __send_email(self) -> None: try: template = env.get_template("email/email.html.j2") except BaseException as e: - raise RunnerException( - self.task, self.run_id, 8, f"Failed to get email template.\n{e}" - ) + raise RunnerException(self.task, self.run_id, 8, f"Failed to get email template.\n{e}") # success email if self.task.email_completion == 1 and ( - (len(error_logs) < 1 and self.task.email_error == 1) - or self.task.email_error != 1 + (len(error_logs) < 1 and self.task.email_error == 1) or self.task.email_error != 1 ): RunnerLog(self.task, self.run_id, 8, "Sending completion email.") output: List[List[str]] = [] empty = 0 + num_lines = 0 attachments: List[str] = [] if self.task.email_completion_file == 1 and len(self.output_files) > 0: @@ -931,16 +895,24 @@ def __send_email(self) -> None: if self.task.email_completion_file_embed == 1: with open(output_file, newline="") as csvfile: output.extend(list(csv.reader(csvfile))) - + with open(output_file, "r") as f: + num_lines = len(f.readlines()) # check attachement file size if the task # should not send blank files if ( self.task.email_completion_dont_send_empty_file == 1 and output_file # if query and data is blank, or other types and file is 0 - and os.path.getsize(output_file) == 0 + # don't attach file if it is just the header. + and ( + os.path.getsize(output_file) == 0 + or (self.task.source_query_include_header == 1 and num_lines <= 1) + ) ): empty = 1 + # there may be multiple output files. If one isn't empty, still include it. + else: + empty = 0 attachments.append(output_file) @@ -961,9 +933,7 @@ def __send_email(self) -> None: ) if self.task.email_completion_subject: - subject = self.param_loader.insert_file_params( - self.task.email_completion_subject - ) + subject = self.param_loader.insert_file_params(self.task.email_completion_subject) subject = DateParsing(self.task, None, subject).string_to_date() try: @@ -999,6 +969,4 @@ def __clean_up(self) -> None: # pylint: disable=broad-except except BaseException as e: - raise RunnerException( - self.task, self.run_id, 8, f"Failed to clean up job.\n{e}" - ) + raise RunnerException(self.task, self.run_id, 8, f"Failed to clean up job.\n{e}") diff --git a/runner/tests/__init__.py b/runner/tests/__init__.py index 3a49a28b..ddedae7e 100644 --- a/runner/tests/__init__.py +++ b/runner/tests/__init__.py @@ -5,6 +5,7 @@ poetry run pytest runner/tests/ \ --cov --cov-append --cov-branch --cov-report=term-missing --disable-warnings """ + import sys from pathlib import Path diff --git a/runner/tests/conftest.py b/runner/tests/conftest.py index 40d32a76..d5123d34 100644 --- a/runner/tests/conftest.py +++ b/runner/tests/conftest.py @@ -1,4 +1,5 @@ """Setyp pytest.""" + import os import pytest diff --git a/runner/tests/test_filters.py b/runner/tests/test_filters.py index 930c4d8c..0e8a192c 100644 --- a/runner/tests/test_filters.py +++ b/runner/tests/test_filters.py @@ -11,6 +11,7 @@ """ + import datetime from pytest import fixture diff --git a/runner/tests/test_scripts_code.py b/runner/tests/test_scripts_code.py index e6d1ff6d..1e4efe3d 100644 --- a/runner/tests/test_scripts_code.py +++ b/runner/tests/test_scripts_code.py @@ -11,7 +11,6 @@ """ - from pytest import fixture from runner.extensions import db diff --git a/runner/tests/test_scripts_date.py b/runner/tests/test_scripts_date.py index 68e09451..d2187d7a 100644 --- a/runner/tests/test_scripts_date.py +++ b/runner/tests/test_scripts_date.py @@ -11,7 +11,6 @@ """ - import calendar import datetime @@ -404,9 +403,7 @@ def test_complex_patterns(client_fixture: fixture) -> None: my_date_string = DateParsing(task, None, "%m-6-%d-30-%Y+1-lastday").string_to_date() - new_date = datetime.datetime.now() + relativedelta.relativedelta( - months=-6, days=-30, years=1 - ) + new_date = datetime.datetime.now() + relativedelta.relativedelta(months=-6, days=-30, years=1) last_day = calendar.monthrange( int(new_date.strftime("%Y")), @@ -418,13 +415,9 @@ def test_complex_patterns(client_fixture: fixture) -> None: task, None, "%m-6-%d-30-%Y+1-lastday_something_cool_%m+6-%d+30-%Y-1-lastday" ).string_to_date() - new_date = datetime.datetime.now() + relativedelta.relativedelta( - months=-6, days=-30, years=1 - ) + new_date = datetime.datetime.now() + relativedelta.relativedelta(months=-6, days=-30, years=1) - last_day = calendar.monthrange( - int(new_date.strftime("%Y")), int(new_date.strftime("%m")) - )[1] + last_day = calendar.monthrange(int(new_date.strftime("%Y")), int(new_date.strftime("%m")))[1] second_new_date = datetime.datetime.now() + relativedelta.relativedelta( months=6, days=30, years=-1 @@ -436,6 +429,4 @@ def test_complex_patterns(client_fixture: fixture) -> None: assert my_date_string == new_date.strftime("%m-%d-%Y-") + str( last_day - ) + "_something_cool_" + second_new_date.strftime("%m-%d-%Y-") + str( - second_last_day - ) + ) + "_something_cool_" + second_new_date.strftime("%m-%d-%Y-") + str(second_last_day) diff --git a/runner/tests/test_scripts_postgres.py b/runner/tests/test_scripts_postgres.py index 1f60c7b4..16bf579c 100644 --- a/runner/tests/test_scripts_postgres.py +++ b/runner/tests/test_scripts_postgres.py @@ -10,6 +10,7 @@ --cov --cov-append --cov-branch --cov-report=term-missing --disable-warnings """ + from pathlib import Path import pytest @@ -47,9 +48,7 @@ def test_connection_failure(client_fixture: fixture) -> None: temp_dir.mkdir(parents=True, exist_ok=True) with pytest.raises(ValueError) as e: - pg = Postgres( - task, None, str(task.source_database_conn.connection_string), 90, temp_dir - ) + pg = Postgres(task, None, str(task.source_database_conn.connection_string), 90, temp_dir) assert "Failed to connect to database" in e assert 'missing "=" after "asdf"' in e diff --git a/runner/tests/test_scripts_sftp.py b/runner/tests/test_scripts_sftp.py index bbce4263..3a22d470 100644 --- a/runner/tests/test_scripts_sftp.py +++ b/runner/tests/test_scripts_sftp.py @@ -10,6 +10,7 @@ --cov --cov-append --cov-branch --cov-report=term-missing --disable-warnings """ + import sys import tempfile from pathlib import Path diff --git a/runner/tests/test_scripts_smb.py b/runner/tests/test_scripts_smb.py index e69de29b..12bb19bb 100644 --- a/runner/tests/test_scripts_smb.py +++ b/runner/tests/test_scripts_smb.py @@ -0,0 +1,173 @@ +"""Test SMB functionality. + +Run with: + + poetry run pytest runner/tests/test_scripts_smb.py \ + --cov --cov-append --cov-branch --cov-report=term-missing --disable-warnings + + poetry run pytest runner/tests/test_scripts_smb.py::test_save_file \ + --cov --cov-append --cov-branch --cov-report=term-missing --disable-warnings + +""" + +import os +import tempfile +from pathlib import Path +from unittest import mock + +import pytest +from pytest import fixture + +from runner.extensions import db +from runner.model import Connection, ConnectionSmb, Task +from runner.scripts.em_messages import RunnerException +from runner.scripts.em_smb import Smb + +from .conftest import create_demo_task + + +@fixture +def temp_dir(): + with tempfile.TemporaryDirectory() as tmp: + yield Path(tmp) + + +@fixture +def smb_connection(client_fixture: fixture) -> None: + conn = Connection(name="demo_smb") + db.session.add(conn) + db.session.commit() + + smb = ConnectionSmb( + name="demo smb", + server_name="raynor", + share_name="int", + username=client_fixture.application.config["SMB_USERNAME"], + password=client_fixture.application.config["SMB_PASSWORD"], + connection=conn, + path="AtlasHubTest", + ) + db.session.add(smb) + db.session.commit() + return smb + + +def test_connection_failure(client_fixture: fixture) -> None: + p_id, t_id = create_demo_task() + + # make a db connection + conn = Connection(name="demo") + db.session.add(conn) + db.session.commit() + + smb = ConnectionSmb( + name="demo smb", + server_name="server", + share_name="int", + username="asdsad", + password="12345", + connection=conn, + path="AtlasHubTest", + ) + db.session.add(smb) + db.session.commit() + + task = Task.query.filter_by(id=t_id).first() + task.source_type_id = 2 + task.source_smb_conn = smb + + db.session.commit() + + temp_dir = Path(Path(__file__).parent.parent / "temp" / "tests" / "smb") + temp_dir.mkdir(parents=True, exist_ok=True) + + with pytest.raises(ValueError) as excinfo: + s = Smb(task, None, task.source_smb_conn, temp_dir) + + assert "Failed to connect to" in str(excinfo.value) + assert "Unexpected error during registration" in str(excinfo.value) + + +def test_save_file(client_fixture: fixture, temp_dir: Path, smb_connection: ConnectionSmb): + _, task_id = create_demo_task() + task = Task.query.get(task_id) + task.destination_file_name = "testfile.txt" + db.session.commit() + + # Create dummy file to upload + test_file = temp_dir / "testfile.txt" + test_file.write_text("dummy content") + + with mock.patch("runner.scripts.em_smb.copyfile"), mock.patch( + "runner.scripts.em_smb.getsize", return_value=1234 + ), mock.patch("runner.scripts.em_smb.makedirs"): + + smb = Smb(task, "run1", smb_connection, temp_dir) + path = smb.save(overwrite=1, file_name="testfile.txt") + + assert path.endswith("testfile.txt") + + +def test_save_missing_file(client_fixture: fixture, temp_dir: Path, smb_connection: ConnectionSmb): + _, task_id = create_demo_task() + task = Task.query.get(task_id) + + with mock.patch("runner.scripts.em_smb.copyfile", side_effect=FileNotFoundError("not found")): + smb = Smb(task, "run2", smb_connection, temp_dir) + + with pytest.raises(RunnerException) as e: + smb.save(overwrite=1, file_name="missing.txt") + + assert "Source file not found" in str(e.value) + + +def test_save_permission_denied( + client_fixture: fixture, temp_dir: Path, smb_connection: ConnectionSmb +): + _, task_id = create_demo_task() + task = Task.query.get(task_id) + test_file = temp_dir / "testfile.txt" + test_file.write_text("data") + + with mock.patch("runner.scripts.em_smb.copyfile", side_effect=PermissionError("denied")): + smb = Smb(task, "run3", smb_connection, temp_dir) + + with pytest.raises(RunnerException) as e: + smb.save(overwrite=1, file_name="testfile.txt") + + assert "Permission denied" in str(e.value) + + +def test_read_file(client_fixture: fixture, temp_dir: Path, smb_connection: ConnectionSmb): + _, task_id = create_demo_task() + task = Task.query.get(task_id) + test_file = temp_dir / "readfile.txt" + test_file.write_text("downloaded") + + def fake_copyfile(src, dst, **kwargs): + Path(dst).write_text("copied content") + + with mock.patch("runner.scripts.em_smb.copyfile", side_effect=fake_copyfile): + smb = Smb(task, "run4", smb_connection, temp_dir) + result = smb.read("readfile.txt") + + assert len(result) == 1 + assert Path(result[0].name).read_text() == "copied content" + + +def test_read_wildcard(client_fixture: fixture, temp_dir: Path, smb_connection: ConnectionSmb): + _, task_id = create_demo_task() + task = Task.query.get(task_id) + + with mock.patch( + "runner.scripts.em_smb.walk", return_value=[("path", [], ["match1.txt", "match2.txt"])] + ), mock.patch( + "runner.scripts.em_smb.copyfile", + side_effect=lambda src, dst, **kwargs: Path(dst).write_text("content"), + ): + + smb = Smb(task, "run5", smb_connection, temp_dir) + results = smb.read("match*.txt") + + assert len(results) == 2 + assert all("content" in Path(f.name).read_text() for f in results) diff --git a/runner/tests/test_scripts_sqlserver.py b/runner/tests/test_scripts_sqlserver.py index 84fba902..ba6a9e2a 100644 --- a/runner/tests/test_scripts_sqlserver.py +++ b/runner/tests/test_scripts_sqlserver.py @@ -48,9 +48,7 @@ def test_connection_failure(client_fixture: fixture) -> None: temp_dir.mkdir(parents=True, exist_ok=True) with pytest.raises(ValueError) as e: - pg = SqlServer( - task, None, str(task.source_database_conn.connection_string), 90, temp_dir - ) + pg = SqlServer(task, None, str(task.source_database_conn.connection_string), 90, temp_dir) assert "Failed to connection to database." in e assert "Neither DSN nor SERVER keyword supplied" in e diff --git a/runner/tests/test_scripts_system.py b/runner/tests/test_scripts_system.py index 29802606..1ad5aff7 100644 --- a/runner/tests/test_scripts_system.py +++ b/runner/tests/test_scripts_system.py @@ -11,7 +11,6 @@ """ - import pytest from pytest import fixture diff --git a/runner/web/__init__.py b/runner/web/__init__.py index a1b3397c..e90350ac 100644 --- a/runner/web/__init__.py +++ b/runner/web/__init__.py @@ -1,2 +1,3 @@ """Import web modules.""" + print(__name__) # noqa: T201 diff --git a/runner/web/web.py b/runner/web/web.py index 1e8978b7..0edae6c1 100644 --- a/runner/web/web.py +++ b/runner/web/web.py @@ -10,6 +10,8 @@ from flask import jsonify from jinja2 import Environment, PackageLoader, select_autoescape from pathvalidate import sanitize_filename +from smbclient import reset_connection_cache +from werkzeug.wrappers import Response from runner import executor from runner.model import ( @@ -36,6 +38,8 @@ from runner.scripts.em_sqlserver import connect as sql_connect from runner.scripts.em_ssh import connect as ssh_connect from runner.scripts.task_runner import Runner +from runner.web.filters import datetime_format +from scripts.crypto import em_decrypt web_bp = Blueprint("web_bp", __name__) @@ -43,19 +47,17 @@ loader=PackageLoader("runner", "templates"), autoescape=select_autoescape(["html", "xml"]), ) - -sys.path.append(str(Path(__file__).parents[2]) + "/scripts") -from crypto import em_decrypt +env.filters["datetime_format"] = datetime_format @web_bp.route("/api") -def alive() -> dict: +def alive() -> Response: """Check API status.""" return jsonify({"status": "alive"}) @web_bp.route("/api/send_ftp///") -def send_ftp(task_id: int, run_id: int, file_id: int) -> dict: +def send_ftp(task_id: int, run_id: int, file_id: int) -> Response: """Send file to FPT server specified in the task. File is loaded from the backup SMB file server into a tempfile. @@ -99,7 +101,7 @@ def send_ftp(task_id: int, run_id: int, file_id: int) -> dict: @web_bp.route("/api/send_sftp//") -def send_sftp(run_id: int, file_id: int) -> dict: +def send_sftp(run_id: int, file_id: int) -> Response: """Send file to SFPT server specified in the task. File is loaded from the backup SMB file server into a tempfile. @@ -146,7 +148,7 @@ def send_sftp(run_id: int, file_id: int) -> dict: @web_bp.route("/api/send_smb//") -def send_smb(run_id: int, file_id: int) -> dict: +def send_smb(run_id: int, file_id: int) -> Response: """Send file to SMB server specified in the task. File is loaded from the backup SMB file server into a tempfile. @@ -192,8 +194,8 @@ def send_smb(run_id: int, file_id: int) -> dict: return jsonify({"error": str(e)}) -@web_bp.route("/api/send_email///") -def send_email(run_id: int, file_id: int) -> dict: +@web_bp.route("/api/send_email//") +def send_email(run_id: int, file_id: int) -> Response: """Send file to email address specified in the task. File is loaded from the backup SMB file server into a tempfile. @@ -232,12 +234,14 @@ def send_email(run_id: int, file_id: int) -> dict: run_id=str(run_id), recipients=task.email_completion_recipients, short_message=f"Atlas Hub: {task.name} data emailed.", - subject="(Manual Send) Project: " - + task.project.name - + " / Task: " - + task.name, + subject="(Manual Send) Project: " + task.project.name + " / Task: " + task.name, message=template.render( - task=task, success=1, date=date, logs=[], org=app.config["ORG_NAME"] + task=task, + success=1, + date=date, + logs=[], + host=app.config["WEB_HOST"], + org=app.config["ORG_NAME"], ), attachments=[x.name for x in downloaded_files], ) @@ -250,7 +254,7 @@ def send_email(run_id: int, file_id: int) -> dict: @web_bp.route("/api/") -def run(task_id: int) -> dict: +def run(task_id: int) -> Response: """Run specified task.""" executor.submit(Runner, task_id) @@ -258,7 +262,7 @@ def run(task_id: int) -> dict: @web_bp.route("/api//source_code") -def task_get_source_code(task_id: int) -> dict: +def task_get_source_code(task_id: int) -> Response: """Get source code for a task.""" try: task = Task.query.filter_by(id=task_id).first() @@ -281,7 +285,7 @@ def task_get_source_code(task_id: int) -> dict: @web_bp.route("/api//processing_code") -def task_get_processing_git_code(task_id: int) -> dict: +def task_get_processing_git_code(task_id: int) -> Response: """Get processing code for a task.""" try: task = Task.query.filter_by(id=task_id).first() @@ -299,9 +303,7 @@ def task_get_processing_git_code(task_id: int) -> dict: # if there is a branch we need rearrange the url. branch = re.findall(r"(&version[=]GB.+?)$", task.processing_devops) url = ( - re.sub( - (branch[0] if len(branch) > 0 else ""), "", task.processing_devops - ) + re.sub((branch[0] if len(branch) > 0 else ""), "", task.processing_devops) + "/" + task.processing_command + (branch[0] if len(branch) > 0 else "") @@ -314,7 +316,7 @@ def task_get_processing_git_code(task_id: int) -> dict: @web_bp.route("/api/file/") -def get_task_file_download(file_id: int) -> dict: +def get_task_file_download(file_id: int) -> Response: """Download file from SMB backup server.""" my_file = TaskFile.query.filter_by(id=file_id).first() task = my_file.task @@ -362,24 +364,18 @@ def database_online(database_id: int) -> str: database_connection = ConnectionDatabase.query.filter_by(id=database_id).first() if database_connection.type_id == 2: conn, _ = sql_connect( - em_decrypt( - database_connection.connection_string, app.config["PASS_KEY"] - ).strip(), + em_decrypt(database_connection.connection_string, app.config["PASS_KEY"]).strip(), database_connection.timeout or app.config["DEFAULT_SQL_TIMEOUT"], ) conn.close() elif database_connection.type_id == 3: conn, _ = jdbc_connect( - em_decrypt( - database_connection.connection_string, app.config["PASS_KEY"] - ).strip(), + em_decrypt(database_connection.connection_string, app.config["PASS_KEY"]).strip(), ) conn.close() else: conn, _ = pg_connect( - em_decrypt( - database_connection.connection_string, app.config["PASS_KEY"] - ).strip(), + em_decrypt(database_connection.connection_string, app.config["PASS_KEY"]).strip(), database_connection.timeout or app.config["DEFAULT_SQL_TIMEOUT"], ) conn.close() @@ -419,13 +415,13 @@ def smb_online(smb_id: int) -> str: """Check if connection is online.""" try: smb_connection = ConnectionSmb.query.filter_by(id=smb_id).first() - smb_connect( + sess = smb_connect( smb_connection.username, em_decrypt(smb_connection.password, app.config["PASS_KEY"]), smb_connection.server_name, - smb_connection.server_ip, ) - # we do not close smb connections. they are recycled. + # close the connection after checking. Don't need to keep it open. + reset_connection_cache(connection_cache={"cache": sess}) return 'Online' except BaseException as e: return f'Offline' diff --git a/scheduler/.coveragerc b/scheduler/.coveragerc index 7d2cccb0..ebe60f05 100644 --- a/scheduler/.coveragerc +++ b/scheduler/.coveragerc @@ -5,7 +5,6 @@ branch = True [report] omit = */confi_text.py - */smb_fix.py */flask_simpleldap.py */seed.py tests/* diff --git a/scheduler/__init__.py b/scheduler/__init__.py index 098bdcd7..ce51a944 100644 --- a/scheduler/__init__.py +++ b/scheduler/__init__.py @@ -41,7 +41,6 @@ """ - import contextlib import logging import os diff --git a/scheduler/events.py b/scheduler/events.py index f3e3e2e1..7e75b1f1 100644 --- a/scheduler/events.py +++ b/scheduler/events.py @@ -54,9 +54,7 @@ def job_missed(event: JobEvent) -> None: if re.match(r"^\d+-\d+-.+?$", event.job_id): _, task_id = event.job_id.split("-")[:2] - ex_time = ( - datetime.datetime.now(datetime.timezone.utc) - event.scheduled_run_time - ) + ex_time = datetime.datetime.now(datetime.timezone.utc) - event.scheduled_run_time if Task.query.filter_by(id=task_id).first(): log = TaskLog( @@ -85,10 +83,7 @@ def job_error(event: JobEvent) -> None: # only add logs for valid tasks if task: - ex_time = ( - datetime.datetime.now(datetime.timezone.utc) - - event.scheduled_run_time - ) + ex_time = datetime.datetime.now(datetime.timezone.utc) - event.scheduled_run_time log = TaskLog( task_id=task_id, @@ -122,10 +117,7 @@ def job_executed(event: JobExecutionEvent) -> None: # only log valid tasks if task: - ex_time = ( - datetime.datetime.now(datetime.timezone.utc) - - event.scheduled_run_time - ) + ex_time = datetime.datetime.now(datetime.timezone.utc) - event.scheduled_run_time log = TaskLog( task_id=task_id, diff --git a/scheduler/extensions.py b/scheduler/extensions.py index de7a2fc1..f63d1919 100644 --- a/scheduler/extensions.py +++ b/scheduler/extensions.py @@ -13,8 +13,47 @@ """ +import datetime + from flask_apscheduler import APScheduler from flask_sqlalchemy import SQLAlchemy +from sqlalchemy import String +from sqlalchemy.orm import DeclarativeBase, mapped_column, registry +from sqlalchemy.sql import functions +from typing_extensions import Annotated + +str_5 = Annotated[str, 5] +str_10 = Annotated[str, 10] +str_30 = Annotated[str, 30] +str_120 = Annotated[str, 120] +str_200 = Annotated[str, 200] +str_400 = Annotated[str, 400] +str_500 = Annotated[str, 500] +str_1000 = Annotated[str, 1000] +str_8000 = Annotated[str, 8000] +intpk = Annotated[int, mapped_column(primary_key=True, index=True)] +timestamp = Annotated[ + datetime.datetime, + mapped_column(nullable=False, server_default=functions.now()), +] + + +class Base(DeclarativeBase): + """Declare base types.""" + + registry = registry( + type_annotation_map={ + str_120: String(120), + str_200: String(200), + str_500: String(500), + str_1000: String(1000), + str_8000: String(8000), + str_5: String(5), + str_30: String(30), + str_400: String(400), + } + ) + -db = SQLAlchemy() +db = SQLAlchemy(model_class=Base) atlas_scheduler = APScheduler() diff --git a/scheduler/functions.py b/scheduler/functions.py index 22c1ca99..156415e0 100644 --- a/scheduler/functions.py +++ b/scheduler/functions.py @@ -1,5 +1,6 @@ """Scheduler Event Logging.""" +import datetime import hashlib import time @@ -125,14 +126,14 @@ def scheduler_add_task(task_id: int) -> bool: atlas_scheduler.add_job( func=scheduler_task_runner, trigger="cron", - second=project.cron_sec, - minute=project.cron_min, - hour=project.cron_hour, - year=project.cron_year, - month=project.cron_month, - week=project.cron_week, - day=project.cron_day, - day_of_week=project.cron_week_day, + second=project.cron_sec if project.cron_sec else None, + minute=project.cron_min if project.cron_min else None, + hour=project.cron_hour if project.cron_hour else None, + year=project.cron_year if project.cron_year else None, + month=project.cron_month if project.cron_month else None, + week=project.cron_week if project.cron_week else None, + day=project.cron_day if project.cron_day else None, + day_of_week=project.cron_week_day if project.cron_week_day else None, start_date=project.cron_start_date, end_date=project.cron_end_date, args=[str(task_id)], @@ -150,6 +151,7 @@ def scheduler_add_task(task_id: int) -> bool: hours = project.intv_value or 999 if project.intv_type == "h" else 0 minutes = project.intv_value or 999 if project.intv_type == "m" else 0 seconds = project.intv_value or 999 if project.intv_type == "s" else 0 + timezone = datetime.datetime.now().astimezone().tzinfo atlas_scheduler.add_job( func=scheduler_task_runner, @@ -159,6 +161,7 @@ def scheduler_add_task(task_id: int) -> bool: hours=hours, days=days, weeks=weeks, + timezone=timezone, start_date=project.intv_start_date, end_date=project.intv_end_date, args=[str(task_id)], diff --git a/scheduler/maintenance.py b/scheduler/maintenance.py index 204f89ae..d35a72f8 100644 --- a/scheduler/maintenance.py +++ b/scheduler/maintenance.py @@ -7,7 +7,7 @@ import psutil from flask import current_app as app -from sqlalchemy import update +from sqlalchemy import and_, or_, update from scheduler.extensions import atlas_scheduler, db from scheduler.model import Task @@ -28,8 +28,10 @@ def job_sync() -> None: db.session.execute( update(Task) .where( - Task.enabled == 0 - and (Task.next_run is not None or Task.est_duration is not None) + and_( + Task.enabled == 0, + or_(Task.next_run != None, Task.est_duration != None), # noqa: E711 + ) ) .values(next_run=None, est_duration=None) ) @@ -53,15 +55,9 @@ def drop_them(temp_path: Path, age: int) -> None: for temp_file in temp_path.glob("*/*/*"): if os.stat(temp_file.resolve()).st_mtime < time.time() - age: try: - if ( - Path(temp_file.resolve()).exists() - and Path(temp_file.resolve()).is_dir() - ): + if Path(temp_file.resolve()).exists() and Path(temp_file.resolve()).is_dir(): shutil.rmtree(temp_file.resolve()) - if ( - Path(temp_file.resolve()).exists() - and Path(temp_file.resolve()).is_file() - ): + if Path(temp_file.resolve()).exists() and Path(temp_file.resolve()).is_file(): os.remove(temp_file.resolve()) # pylint: disable=broad-except diff --git a/scheduler/model.py b/scheduler/model.py index 1ce36e25..a35722b1 100644 --- a/scheduler/model.py +++ b/scheduler/model.py @@ -20,85 +20,78 @@ """ - import datetime -from dataclasses import dataclass -from typing import Optional +from typing import List, Optional -from sqlalchemy.orm import declarative_base +from sqlalchemy.orm import Mapped, mapped_column, relationship from sqlalchemy.sql import functions -from .extensions import db - -Base = declarative_base() +from .extensions import ( + db, + intpk, + str_5, + str_10, + str_30, + str_120, + str_200, + str_400, + str_500, + str_1000, + str_8000, + timestamp, +) -@dataclass class LoginType(db.Model): """Lookup table of user login types.""" __tablename__ = "login_type" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(120), nullable=True) - login = db.relationship("Login", backref="login_type", lazy=True) + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + login: Mapped[List["Login"]] = relationship(back_populates="login_type", lazy=True) -@dataclass class Login(db.Model): """Table should contain all login attempts.""" __tablename__ = "login" - id: Optional[int] = None - username: Optional[str] = None - login_date: Optional[datetime.datetime] = None - type_id: Optional[int] = None - id = db.Column(db.Integer, primary_key=True, index=True) - type_id = db.Column(db.Integer, db.ForeignKey(LoginType.id), nullable=True) - username = db.Column(db.String(120), nullable=True) - login_date = db.Column(db.DateTime, server_default=functions.now()) + id: Mapped[intpk] + type_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(LoginType.id)) + username: Mapped[Optional[str_120]] + login_date: Mapped[Optional[timestamp]] + login_type: Mapped["LoginType"] = relationship(back_populates="login") -@dataclass class User(db.Model): """Table containing any user-specific information.""" # pylint: disable=too-many-instance-attributes - id: Optional[int] = None - account_name: Optional[str] = None - email: Optional[str] = None - full_name: Optional[str] = None - first_name: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - account_name = db.Column(db.String(200), nullable=True, index=True) - email = db.Column(db.String(200), nullable=True, index=True) - full_name = db.Column(db.String(200), nullable=True) - first_name = db.Column(db.String(200), nullable=True) - project_owner = db.relationship( - "Project", backref="project_owner", lazy=True, foreign_keys="Project.owner_id" + id: Mapped[intpk] + account_name: Mapped[Optional[str_200]] = mapped_column(index=True) + email: Mapped[Optional[str_200]] = mapped_column(index=True) + full_name: Mapped[Optional[str_200]] + first_name: Mapped[Optional[str_200]] + project_owner: Mapped["Project"] = relationship( + backref="project_owner", lazy=True, foreign_keys="Project.owner_id" ) - project_creator = db.relationship( - "Project", + project_creator: Mapped["Project"] = relationship( backref="project_creator", lazy=True, foreign_keys="Project.creator_id", ) - project_updater = db.relationship( - "Project", + project_updater: Mapped["Project"] = relationship( backref="project_updater", lazy=True, foreign_keys="Project.updater_id", ) - task_creator = db.relationship( - "Task", backref="task_creator", lazy=True, foreign_keys="Task.creator_id" + task_creator: Mapped["Task"] = relationship( + backref="task_creator", lazy=True, foreign_keys="Task.creator_id" ) - task_updater = db.relationship( - "Task", backref="task_updater", lazy=True, foreign_keys="Task.updater_id" + task_updater: Mapped["Task"] = relationship( + backref="task_updater", lazy=True, foreign_keys="Task.updater_id" ) is_authenticated = True is_active = True @@ -113,78 +106,40 @@ def __str__(self) -> str: return self.full_name or f"User {self.id}" -@dataclass class Project(db.Model): """Table containing project details.""" # pylint: disable=too-many-instance-attributes - id: Optional[int] = None - name: Optional[str] = None - description: Optional[str] = None - owner_id: Optional[int] = None - cron: Optional[int] = None - cron_year: Optional[int] = None - cron_month: Optional[int] = None - cron_week: Optional[int] = None - cron_day: Optional[int] = None - cron_week_day: Optional[int] = None - cron_hour: Optional[int] = None - cron_min: Optional[int] = None - cron_sec: Optional[int] = None - cron_start_date: Optional[datetime.datetime] = None - cron_end_date: Optional[datetime.datetime] = None - - intv: Optional[int] = None - intv_type: Optional[str] = None - intv_value: Optional[int] = None - intv_start_date: Optional[datetime.datetime] = None - intv_end_date: Optional[datetime.datetime] = None - - ooff: Optional[int] = None - ooff_date: Optional[datetime.datetime] = None - - created: Optional[datetime.datetime] = None - creator_id: Optional[int] = None - updated: Optional[datetime.datetime] = None - updater_id: Optional[int] = None - - global_params: Optional[str] = None - - sequence_tasks: Optional[int] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(120), nullable=True) - description = db.Column(db.String(8000), nullable=True) - owner_id = db.Column(db.Integer, db.ForeignKey(User.id), nullable=True, index=True) - - cron = db.Column(db.Integer, nullable=True) - cron_year = db.Column(db.Integer, nullable=True) - cron_month = db.Column(db.Integer, nullable=True) - cron_week = db.Column(db.Integer, nullable=True) - cron_day = db.Column(db.Integer, nullable=True) - cron_week_day = db.Column(db.Integer, nullable=True) - cron_hour = db.Column(db.Integer, nullable=True) - cron_min = db.Column(db.Integer, nullable=True) - cron_sec = db.Column(db.Integer, nullable=True) - cron_start_date = db.Column(db.DateTime, nullable=True) - cron_end_date = db.Column(db.DateTime, nullable=True) - - intv = db.Column(db.Integer, nullable=True) - intv_type = db.Column(db.String(5), nullable=True) - intv_value = db.Column(db.Integer, nullable=True) - intv_start_date = db.Column(db.DateTime, nullable=True) - intv_end_date = db.Column(db.DateTime, nullable=True) - - ooff = db.Column(db.Integer, nullable=True) - ooff_date = db.Column(db.DateTime, nullable=True) - - global_params = db.Column(db.String(8000), nullable=True) - - sequence_tasks = db.Column(db.Integer, nullable=True) - - task = db.relationship( - "Task", + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + description: Mapped[Optional[str_8000]] + owner_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(User.id), index=True) + + cron: Mapped[Optional[int]] + cron_year: Mapped[Optional[str_120]] + cron_month: Mapped[Optional[str_120]] + cron_week: Mapped[Optional[str_120]] + cron_day: Mapped[Optional[str_120]] + cron_week_day: Mapped[Optional[str_120]] + cron_hour: Mapped[Optional[str_120]] + cron_min: Mapped[Optional[str_120]] + cron_sec: Mapped[Optional[str_120]] + cron_start_date: Mapped[Optional[datetime.datetime]] + cron_end_date: Mapped[Optional[datetime.datetime]] + + intv: Mapped[Optional[int]] + intv_type: Mapped[Optional[str_5]] + intv_value: Mapped[Optional[int]] + intv_start_date: Mapped[Optional[datetime.datetime]] + intv_end_date: Mapped[Optional[datetime.datetime]] + ooff: Mapped[Optional[int]] + ooff_date: Mapped[Optional[datetime.datetime]] + + global_params: Mapped[Optional[str_8000]] + sequence_tasks: Mapped[Optional[int]] + + task: Mapped[List["Task"]] = relationship( backref="project", lazy="dynamic", cascade="all, delete, delete-orphan", @@ -192,68 +147,53 @@ class Project(db.Model): ) # projectparams link - params = db.relationship( - "ProjectParam", + params: Mapped[List["ProjectParam"]] = relationship( backref="project", lazy=True, cascade="all, delete, delete-orphan", passive_deletes=True, ) - created = db.Column(db.DateTime, server_default=functions.now()) - creator_id = db.Column( - db.Integer, db.ForeignKey(User.id), nullable=True, index=True - ) - updated = db.Column(db.DateTime, onupdate=functions.now()) - updater_id = db.Column( - db.Integer, db.ForeignKey(User.id), nullable=True, index=True - ) + created: Mapped[Optional[timestamp]] + creator_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(User.id), index=True) + updated: Mapped[Optional[datetime.datetime]] = mapped_column(onupdate=functions.now()) + updater_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(User.id), index=True) def __str__(self) -> str: """Return default string.""" return str(self.name) -@dataclass class TaskSourceType(db.Model): """Lookup table of task source types.""" __tablename__ = "task_source_type" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(120), nullable=True) - task = db.relationship("Task", backref="source_type", lazy=True) + id: Mapped[int] = mapped_column(primary_key=True) + name: Mapped[Optional[str_120]] + task: Mapped["Task"] = relationship(backref="source_type", lazy=True) -@dataclass class TaskSourceQueryType(db.Model): """Lookup table of task query source types.""" __tablename__ = "task_source_query_type" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(120), nullable=True) - task = db.relationship("Task", backref="query_type", lazy=True) + id: Mapped[int] = mapped_column(primary_key=True) + name: Mapped[Optional[str_120]] + task: Mapped["Task"] = relationship(backref="query_type", lazy=True) -@dataclass class TaskProcessingType(db.Model): """Lookup table of task query source types.""" __tablename__ = "task_processing_type" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(120), nullable=True) - task = db.relationship("Task", backref="processing_type", lazy=True) + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + task: Mapped["Task"] = relationship(backref="processing_type", lazy=True) -@dataclass class TaskStatus(db.Model): """Lookup table of task status types. @@ -261,20 +201,16 @@ class TaskStatus(db.Model): """ __tablename__ = "task_status" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(1000), nullable=True) - task = db.relationship( - "Task", + id: Mapped[intpk] + name: Mapped[Optional[str_1000]] + task: Mapped[List["Task"]] = relationship( backref="status", lazy="dynamic", cascade="all, delete, delete-orphan", passive_deletes=True, ) - task_log = db.relationship( - "TaskLog", + task_log: Mapped[List["TaskLog"]] = relationship( backref="status", lazy="dynamic", cascade="all, delete, delete-orphan", @@ -282,60 +218,45 @@ class TaskStatus(db.Model): ) -@dataclass class Connection(db.Model): """Table containing all destination information.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection" - id: Optional[int] = None - name: Optional[str] = None - description: Optional[str] = None - address: Optional[str] = None - primary_contact: Optional[str] = None - primary_contact_email: Optional[str] = None - primary_contact_phone: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(120), nullable=True) - description = db.Column(db.String(120), nullable=True) - address = db.Column(db.String(120), nullable=True) - primary_contact = db.Column(db.String(400), nullable=True) - primary_contact_email = db.Column(db.String(120), nullable=True) - primary_contact_phone = db.Column(db.String(120), nullable=True) - ssh = db.relationship( - "ConnectionSsh", + + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + description: Mapped[Optional[str_120]] + address: Mapped[Optional[str_120]] + primary_contact: Mapped[Optional[str_400]] + primary_contact_email: Mapped[Optional[str_120]] + primary_contact_phone: Mapped[Optional[str_120]] + ssh: Mapped[List["ConnectionSsh"]] = relationship( backref="connection", lazy=True, foreign_keys="ConnectionSsh.connection_id", ) - sftp = db.relationship( - "ConnectionSftp", + sftp: Mapped[List["ConnectionSftp"]] = relationship( backref="connection", lazy=True, foreign_keys="ConnectionSftp.connection_id", ) - ftp = db.relationship( - "ConnectionFtp", + ftp: Mapped[List["ConnectionFtp"]] = relationship( backref="connection", lazy=True, foreign_keys="ConnectionFtp.connection_id", ) - smb = db.relationship( - "ConnectionSmb", + smb: Mapped[List["ConnectionSmb"]] = relationship( backref="connection", lazy=True, foreign_keys="ConnectionSmb.connection_id", ) - database = db.relationship( - "ConnectionDatabase", - backref="connection", + database: Mapped[List["ConnectionDatabase"]] = relationship( + back_populates="connection", lazy=True, - foreign_keys="ConnectionDatabase.connection_id", ) - gpg = db.relationship( - "ConnectionGpg", + gpg: Mapped[List["ConnectionGpg"]] = relationship( backref="connection", lazy=True, foreign_keys="ConnectionGpg.connection_id", @@ -346,52 +267,37 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionSftp(db.Model): """Table conntaining sftp connection strings.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection_sftp" - id: Optional[int] = None - connection_id: Optional[int] = None - name: Optional[str] = None - address: Optional[str] = None - port: Optional[int] = None - path: Optional[str] = None - username: Optional[str] = None - key: Optional[str] = None - password: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(500), nullable=True) - address = db.Column(db.String(500), nullable=True) - port = db.Column(db.Integer, nullable=True) - path = db.Column(db.String(500), nullable=True) - username = db.Column(db.String(120), nullable=True) - key = db.Column(db.String(8000), nullable=True) - password = db.Column(db.Text, nullable=True) - key_password = db.Column(db.Text, nullable=True) - task = db.relationship( - "Task", + + id: Mapped[intpk] + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_500]] + address: Mapped[Optional[str_500]] + port: Mapped[Optional[int]] + path: Mapped[Optional[str_500]] + username: Mapped[Optional[str_120]] + key: Mapped[Optional[str_8000]] + password: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + key_password: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + task: Mapped["Task"] = relationship( backref="destination_sftp_conn", lazy=True, foreign_keys="Task.destination_sftp_id", ) - task_source = db.relationship( - "Task", + task_source: Mapped["Task"] = relationship( backref="source_sftp_conn", lazy=True, foreign_keys="Task.source_sftp_id", ) - query_source = db.relationship( - "Task", backref="query_sftp_conn", lazy=True, foreign_keys="Task.query_sftp_id" + query_source: Mapped["Task"] = relationship( + backref="query_sftp_conn", lazy=True, foreign_keys="Task.query_sftp_id" ) - processing_source = db.relationship( - "Task", + processing_source: Mapped["Task"] = relationship( backref="processing_sftp_conn", lazy=True, foreign_keys="Task.processing_sftp_id", @@ -402,32 +308,21 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionSsh(db.Model): - """Table conntaining sftp connection strings.""" + """Table conntaining ssh connection strings.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection_ssh" - id: Optional[int] = None - connection_id: Optional[int] = None - name: Optional[str] = None - address: Optional[str] = None - port: Optional[int] = None - username: Optional[str] = None - password: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(500), nullable=True) - address = db.Column(db.String(500), nullable=True) - port = db.Column(db.Integer, nullable=True) - username = db.Column(db.String(120), nullable=True) - password = db.Column(db.Text, nullable=True) - task_source = db.relationship( - "Task", + + id: Mapped[intpk] + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_500]] + address: Mapped[Optional[str_500]] + port: Mapped[Optional[int]] + username: Mapped[Optional[str_120]] + password: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + task_source: Mapped["Task"] = relationship( backref="source_ssh_conn", lazy=True, foreign_keys="Task.source_ssh_id", @@ -438,26 +333,18 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionGpg(db.Model): """Table conntaining gpg keys.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection_gpg" - id: Optional[int] = None - connection_id: Optional[int] = None - name: Optional[str] = None - key: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(500), nullable=True) - key = db.Column(db.String(8000), nullable=True) - task_source = db.relationship( - "Task", + + id: Mapped[intpk] + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_500]] + key: Mapped[Optional[str_8000]] + task_source: Mapped["Task"] = relationship( backref="file_gpg_conn", lazy=True, foreign_keys="Task.file_gpg_id", @@ -468,44 +355,32 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionFtp(db.Model): - """Table conntaining sftp connection strings.""" + """Table conntaining ftp connection strings.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection_ftp" - id: Optional[int] = None - connection_id: Optional[int] = None - name: Optional[str] = None - address: Optional[str] = None - path: Optional[str] = None - username: Optional[str] = None - password: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(500), nullable=True) - address = db.Column(db.String(500), nullable=True) - path = db.Column(db.String(500), nullable=True) - username = db.Column(db.String(500), nullable=True) - password = db.Column(db.Text, nullable=True) - task = db.relationship( - "Task", + + id: Mapped[intpk] + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_500]] + address: Mapped[Optional[str_500]] + path: Mapped[Optional[str_500]] + username: Mapped[Optional[str_500]] + password: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + task: Mapped["Task"] = relationship( backref="destination_ftp_conn", lazy=True, foreign_keys="Task.destination_ftp_id", ) - task_source = db.relationship( - "Task", backref="source_ftp_conn", lazy=True, foreign_keys="Task.source_ftp_id" + task_source: Mapped["Task"] = relationship( + backref="source_ftp_conn", lazy=True, foreign_keys="Task.source_ftp_id" ) - query_source = db.relationship( - "Task", backref="query_ftp_conn", lazy=True, foreign_keys="Task.query_ftp_id" + query_source: Mapped["Task"] = relationship( + backref="query_ftp_conn", lazy=True, foreign_keys="Task.query_ftp_id" ) - processing_source = db.relationship( - "Task", + processing_source: Mapped["Task"] = relationship( backref="processing_ftp_conn", lazy=True, foreign_keys="Task.processing_ftp_id", @@ -516,48 +391,33 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionSmb(db.Model): - """Table conntaining sftp connection strings.""" + """Table conntaining smb connection strings.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection_smb" - id: Optional[int] = None - connection_id: Optional[int] = None - name: Optional[str] = None - share_name: Optional[str] = None - path: Optional[str] = None - username: Optional[str] = None - password: Optional[str] = None - server_ip: Optional[str] = None - server_name: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(120), nullable=True) - share_name = db.Column(db.String(500), nullable=True) - path = db.Column(db.String(1000), nullable=True) - username = db.Column(db.String(500), nullable=True) - password = db.Column(db.Text, nullable=True) - server_ip = db.Column(db.String(500), nullable=True) - server_name = db.Column(db.String(500), nullable=True) - task = db.relationship( - "Task", + + id: Mapped[intpk] + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_120]] + share_name: Mapped[Optional[str_500]] + path: Mapped[Optional[str_1000]] + username: Mapped[Optional[str_500]] + password: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + server_name: Mapped[Optional[str_500]] + task: Mapped["Task"] = relationship( backref="destination_smb_conn", lazy=True, foreign_keys="Task.destination_smb_id", ) - task_source = db.relationship( - "Task", backref="source_smb_conn", lazy=True, foreign_keys="Task.source_smb_id" + task_source: Mapped["Task"] = relationship( + backref="source_smb_conn", lazy=True, foreign_keys="Task.source_smb_id" ) - query_source = db.relationship( - "Task", backref="query_smb_conn", lazy=True, foreign_keys="Task.query_smb_id" + query_source: Mapped["Task"] = relationship( + backref="query_smb_conn", lazy=True, foreign_keys="Task.query_smb_id" ) - processing_source = db.relationship( - "Task", + processing_source: Mapped["Task"] = relationship( backref="processing_smb_conn", lazy=True, foreign_keys="Task.processing_smb_id", @@ -568,431 +428,272 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionDatabaseType(db.Model): """Lookup table of task source database types.""" __tablename__ = "connection_database_type" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(120), nullable=True) - database = db.relationship("ConnectionDatabase", backref="database_type", lazy=True) + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + database: Mapped["ConnectionDatabase"] = relationship(backref="database_type", lazy=True) -@dataclass class ConnectionDatabase(db.Model): """List of task source databases and connection strings.""" __tablename__ = "connection_database" - id: Optional[int] = None - type_id: Optional[int] = None - name: Optional[str] = None - connection_string: Optional[str] = None - connection_id: Optional[int] = None - timeout: Optional[int] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - type_id = db.Column( - db.Integer, db.ForeignKey(ConnectionDatabaseType.id), nullable=True, index=True - ) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(500), nullable=True) - connection_string = db.Column(db.Text, nullable=True) - timeout = db.Column(db.Integer, nullable=True) - task_source = db.relationship( - "Task", + + id: Mapped[intpk] + type_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(ConnectionDatabaseType.id)) + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_500]] + connection_string: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + timeout: Mapped[Optional[int]] + task_source: Mapped["Task"] = relationship( backref="source_database_conn", lazy=True, foreign_keys="Task.source_database_id", ) + connection: Mapped["Connection"] = relationship(back_populates="database") def __str__(self) -> str: """Get string of name.""" return str(self.name) -@dataclass class TaskDestinationFileType(db.Model): """Lookup table of task destination file types.""" __tablename__ = "task_destination_file_type" - id: Optional[int] = None - name: Optional[str] = None - ext: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(120), nullable=True) - ext = db.Column(db.String(120), nullable=False) - task = db.relationship("Task", backref="file_type", lazy=True) + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + ext: Mapped[Optional[str_120]] = mapped_column(nullable=False) + task: Mapped["Task"] = relationship(backref="file_type", lazy=True) -@dataclass class QuoteLevel(db.Model): """Lookup table for python quote levels.""" __tablename__ = "quote_level" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(120), nullable=True) - task = db.relationship("Task", backref="destination_file_quote_level", lazy=True) + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + task: Mapped["Task"] = relationship(backref="destination_file_quote_level", lazy=True) -@dataclass class ProjectParam(db.Model): """Task parameters.""" __tablename__ = "project_param" - id: Optional[int] = None - key: Optional[str] = None - value: Optional[str] = None - sensitive: Optional[int] = None - project_id: Optional[int] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - key = db.Column(db.String(500), nullable=True) - value = db.Column(db.String(8000), nullable=True) - project_id = db.Column( - db.Integer, db.ForeignKey(Project.id), nullable=True, index=True - ) - sensitive = db.Column(db.Integer, nullable=True, index=True) + + id: Mapped[intpk] + key: Mapped[Optional[str_500]] + value: Mapped[Optional[str_8000]] + project_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Project.id), index=True) + sensitive: Mapped[Optional[int]] = mapped_column(index=True) -@dataclass class Task(db.Model): """Table containing task details.""" # pylint: disable=too-many-instance-attributes __tablename__ = "task" - # general information - id: Optional[int] = None - name: Optional[str] = None - project_id: Optional[int] = None - status_id: Optional[int] = None - enabled: Optional[int] = None - order: Optional[int] = None - last_run: Optional[datetime.datetime] = None - next_run: Optional[datetime.datetime] = None - last_run_job_id: Optional[str] = None - created: Optional[datetime.datetime] = None - creator_id: Optional[int] = None - updated: Optional[datetime.datetime] = None - updater_id: Optional[int] = None - - # data source - source_type_id: Optional[int] = None - source_database_id: Optional[int] = None - - source_query_type_id: Optional[int] = None - source_query_include_header: Optional[int] = None - source_git: Optional[str] = None - source_devops: Optional[str] = None - source_url: Optional[str] = None - source_code: Optional[str] = None - - source_require_sql_output: Optional[int] = None - - query_smb_id: Optional[int] = None - query_smb_file: Optional[str] = None - query_sftp_id: Optional[int] = None - query_sftp_file: Optional[str] = None - query_ftp_id: Optional[int] = None - query_ftp_file: Optional[str] = None - query_params: Optional[str] = None - - source_smb_delimiter: Optional[str] = None - source_smb_ignore_delimiter: Optional[int] = None - source_smb_file: Optional[str] = None - source_smb_id: Optional[int] = None - - source_ftp_file: Optional[str] = None - source_ftp_delimiter: Optional[str] = None - source_ftp_ignore_delimiter: Optional[int] = None - source_ftp_id: Optional[int] = None - - source_sftp_file: Optional[str] = None - source_sftp_delimiter: Optional[str] = None - source_sftp_ignore_delimiter: Optional[int] = None - source_sftp_id: Optional[int] = None - - source_ssh_id: Optional[int] = None - - # caching - source_cache: Optional[str] = None - enable_source_cache: Optional[int] = None - - # processing - processing_type_id: Optional[int] = None - processing_smb_id: Optional[int] = None - processing_smb_file: Optional[str] = None - processing_sftp_id: Optional[int] = None - processing_sftp_file: Optional[str] = None - processing_ftp_id: Optional[int] = None - processing_ftp_file: Optional[str] = None - processing_code: Optional[str] = None - processing_url: Optional[str] = None - processing_git: Optional[str] = None - processing_devops: Optional[str] = None - processing_command: Optional[str] = None - - # destination - destination_file_delimiter: Optional[str] = None - destination_file_name: Optional[str] = None - destination_ignore_delimiter: Optional[int] = None - destination_file_line_terminator: Optional[str] = None - destination_quote_level_id: Optional[int] = None - - destination_create_zip: Optional[int] = None - destination_zip_name: Optional[str] = None - - destination_file_type_id: Optional[int] = None - - destination_sftp: Optional[int] = None - destination_sftp_overwrite: Optional[int] = None - destination_sftp_id: Optional[int] = None - destination_sftp_dont_send_empty_file: Optional[int] = None - - destination_ftp: Optional[int] = None - destination_ftp_overwrite: Optional[int] = None - destination_ftp_id: Optional[int] = None - destination_ftp_dont_send_empty_file: Optional[int] = None - - destination_smb: Optional[int] = None - destination_smb_overwrite: Optional[int] = None - destination_smb_id: Optional[int] = None - destination_smb_dont_send_empty_file: Optional[int] = None - - file_gpg: Optional[int] = None - file_gpg_id: Optional[int] = None - - email_completion: Optional[int] = None - email_completion_log: Optional[int] = None - email_completion_file: Optional[int] = None - email_completion_file_embed: Optional[int] = None - email_completion_dont_send_empty_file: Optional[int] = None - email_completion_recipients: Optional[str] = None - email_completion_message: Optional[str] = None - - email_error: Optional[int] = None - email_error_recipients: Optional[str] = None - email_error_message: Optional[str] = None - - max_retries: Optional[int] = None - - est_duration: Optional[int] = None # general information - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(1000), nullable=True) - project_id = db.Column( - db.Integer, db.ForeignKey(Project.id), nullable=True, index=True - ) - status_id = db.Column( - db.Integer, db.ForeignKey(TaskStatus.id), nullable=True, index=True - ) - enabled = db.Column(db.Integer, nullable=True, index=True) - order = db.Column(db.Integer, nullable=True, index=True) - last_run = db.Column(db.DateTime, nullable=True) - last_run_job_id = db.Column(db.String(30), nullable=True, index=True) - next_run = db.Column(db.DateTime, nullable=True, index=True) - created = db.Column(db.DateTime, server_default=functions.now(), index=True) - creator_id = db.Column( - db.Integer, db.ForeignKey(User.id), nullable=True, index=True - ) - updated = db.Column(db.DateTime, onupdate=functions.now(), index=True) - updater_id = db.Column( - db.Integer, db.ForeignKey(User.id), nullable=True, index=True - ) + id: Mapped[intpk] + name: Mapped[Optional[str_1000]] + project_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Project.id), index=True) + status_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(TaskStatus.id)) + enabled: Mapped[Optional[int]] = mapped_column(index=True) + order: Mapped[Optional[int]] = mapped_column(index=True) + last_run: Mapped[Optional[datetime.datetime]] + last_run_job_id: Mapped[Optional[str_30]] = mapped_column(index=True) + next_run: Mapped[Optional[datetime.datetime]] = mapped_column(index=True) + created: Mapped[Optional[timestamp]] = mapped_column(index=True) + creator_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(User.id), index=True) + updated: Mapped[Optional[datetime.datetime]] = mapped_column( + onupdate=functions.now(), index=True + ) + updater_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(User.id), index=True) """ data source """ # db/sftp/smb/ftp - source_type_id = db.Column( - db.Integer, db.ForeignKey(TaskSourceType.id), nullable=True, index=True + source_type_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(TaskSourceType.id), index=True ) # source locations # git/url/code/sftp/ftp/smb/devops - source_query_type_id = db.Column( - db.Integer, db.ForeignKey(TaskSourceQueryType.id), nullable=True, index=True + source_query_type_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(TaskSourceQueryType.id), index=True ) - source_query_include_header = db.Column(db.Integer, nullable=True) + source_query_include_header: Mapped[Optional[int]] - source_require_sql_output = db.Column(db.Integer, nullable=True) + source_require_sql_output: Mapped[Optional[int]] # source git - source_git = db.Column(db.String(1000), nullable=True) + source_git: Mapped[Optional[str_1000]] # source devops - source_devops = db.Column(db.String(1000), nullable=True) + source_devops: Mapped[Optional[str_1000]] # source web url - source_url = db.Column(db.String(1000), nullable=True) + source_url: Mapped[Optional[str_1000]] # source typed code - source_code = db.Column(db.Text, nullable=True) + source_code: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) # cached source query - source_cache = db.Column(db.Text, nullable=True) - enable_source_cache = db.Column(db.Integer, nullable=True, index=True) + source_cache: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + enable_source_cache: Mapped[Optional[int]] = mapped_column(index=True) - query_smb_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSmb.id), nullable=True, index=True + query_smb_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSmb.id), index=True ) - query_smb_file = db.Column(db.String(1000), nullable=True) + query_smb_file: Mapped[Optional[str_1000]] - query_sftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSftp.id), nullable=True, index=True + query_sftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSftp.id), index=True ) - query_sftp_file = db.Column(db.String(1000), nullable=True) + query_sftp_file: Mapped[Optional[str_1000]] - query_ftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionFtp.id), nullable=True, index=True + query_ftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionFtp.id), index=True ) - query_ftp_file = db.Column(db.String(1000), nullable=True) + query_ftp_file: Mapped[Optional[str_1000]] - query_params = db.Column(db.String(8000), nullable=True) + query_params: Mapped[Optional[str_8000]] # source smb sql file - source_smb_file = db.Column(db.String(1000), nullable=True) - source_smb_delimiter = db.Column(db.String(10), nullable=True) - source_smb_ignore_delimiter = db.Column(db.Integer, nullable=True) - source_smb_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSmb.id), nullable=True, index=True + source_smb_file: Mapped[Optional[str_1000]] + source_smb_ignore_subfolders: Mapped[Optional[int]] + source_smb_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSmb.id), index=True ) # source ftp sql file - source_ftp_file = db.Column(db.String(1000), nullable=True) - source_ftp_delimiter = db.Column(db.String(10), nullable=True) - source_ftp_ignore_delimiter = db.Column(db.Integer, nullable=True) - source_ftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionFtp.id), nullable=True, index=True + source_ftp_file: Mapped[Optional[str_1000]] + source_ftp_delimiter: Mapped[Optional[str_10]] + source_ftp_ignore_delimiter: Mapped[Optional[int]] + source_ftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionFtp.id), index=True ) # source sftp sql file - source_sftp_file = db.Column(db.String(1000), nullable=True) - source_sftp_delimiter = db.Column(db.String(10), nullable=True) - source_sftp_ignore_delimiter = db.Column(db.Integer, nullable=True) - source_sftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSftp.id), nullable=True, index=True + source_sftp_file: Mapped[Optional[str_1000]] + source_sftp_delimiter: Mapped[Optional[str_10]] + source_sftp_ignore_delimiter: Mapped[Optional[int]] + source_sftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSftp.id), index=True ) # source database - source_database_id = db.Column( - db.Integer, db.ForeignKey(ConnectionDatabase.id), nullable=True, index=True + source_database_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionDatabase.id), index=True ) - source_ssh_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSsh.id), nullable=True, index=True + source_ssh_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSsh.id), index=True ) """ processing script source """ - processing_type_id = db.Column( - db.Integer, db.ForeignKey(TaskProcessingType.id), nullable=True, index=True - ) + processing_type_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(TaskProcessingType.id)) - processing_smb_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSmb.id), nullable=True, index=True + processing_smb_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSmb.id), index=True ) - processing_smb_file = db.Column(db.String(1000), nullable=True) + processing_smb_file: Mapped[Optional[str_1000]] - processing_sftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSftp.id), nullable=True, index=True + processing_sftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSftp.id), index=True ) - processing_sftp_file = db.Column(db.String(1000), nullable=True) + processing_sftp_file: Mapped[Optional[str_1000]] - processing_ftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionFtp.id), nullable=True, index=True + processing_ftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionFtp.id), index=True ) - processing_ftp_file = db.Column(db.String(1000), nullable=True) + processing_ftp_file: Mapped[Optional[str_1000]] - processing_code = db.Column(db.String(8000), nullable=True) - processing_url = db.Column(db.String(1000), nullable=True) - processing_git = db.Column(db.String(1000), nullable=True) - processing_devops = db.Column(db.String(1000), nullable=True) - processing_command = db.Column(db.String(1000), nullable=True) + processing_code: Mapped[Optional[str_8000]] + processing_url: Mapped[Optional[str_1000]] + processing_git: Mapped[Optional[str_1000]] + processing_devops: Mapped[Optional[str_1000]] + processing_command: Mapped[Optional[str_1000]] """ destination """ # destination file - destination_file_name = db.Column(db.String(1000), nullable=True) - destination_file_delimiter = db.Column(db.String(10), nullable=True) - destination_ignore_delimiter = db.Column(db.Integer, nullable=True) - destination_file_line_terminator = db.Column(db.String(10), nullable=True) + destination_file_name: Mapped[Optional[str_1000]] + destination_file_delimiter: Mapped[Optional[str_10]] + destination_ignore_delimiter: Mapped[Optional[int]] + destination_file_line_terminator: Mapped[Optional[str_10]] # destination zip archive - destination_create_zip = db.Column(db.Integer, nullable=True) - destination_zip_name = db.Column(db.String(1000), nullable=True) + destination_create_zip: Mapped[Optional[int]] + destination_zip_name: Mapped[Optional[str_1000]] # csv/txt/other - destination_file_type_id = db.Column( - db.Integer, db.ForeignKey(TaskDestinationFileType.id), nullable=True, index=True + destination_file_type_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(TaskDestinationFileType.id) ) # save to sftp server - destination_sftp = db.Column(db.Integer, nullable=True, index=True) - destination_sftp_overwrite = db.Column(db.Integer, nullable=True) - destination_sftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSftp.id), nullable=True, index=True + destination_sftp: Mapped[Optional[int]] = mapped_column(index=True) + destination_sftp_overwrite: Mapped[Optional[int]] + destination_sftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSftp.id), index=True ) - destination_sftp_dont_send_empty_file = db.Column(db.Integer, nullable=True) + destination_sftp_dont_send_empty_file: Mapped[Optional[int]] # save to ftp server - destination_ftp = db.Column(db.Integer, nullable=True, index=True) - destination_ftp_overwrite = db.Column(db.Integer, nullable=True) - destination_ftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionFtp.id), nullable=True, index=True + destination_ftp: Mapped[Optional[int]] = mapped_column(index=True) + destination_ftp_overwrite: Mapped[Optional[int]] + destination_ftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionFtp.id), index=True ) - destination_ftp_dont_send_empty_file = db.Column(db.Integer, nullable=True) - + destination_ftp_dont_send_empty_file: Mapped[Optional[int]] # save to smb server - destination_smb = db.Column(db.Integer, nullable=True, index=True) - destination_smb_overwrite = db.Column(db.Integer, nullable=True) - destination_smb_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSmb.id), nullable=True, index=True + destination_smb: Mapped[Optional[int]] = mapped_column(index=True) + destination_smb_overwrite: Mapped[Optional[int]] + destination_smb_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSmb.id), index=True ) - destination_smb_dont_send_empty_file = db.Column(db.Integer, nullable=True) + destination_smb_dont_send_empty_file: Mapped[Optional[int]] - file_gpg = db.Column(db.Integer, nullable=True, index=True) - file_gpg_id = db.Column( - db.Integer, db.ForeignKey(ConnectionGpg.id), nullable=True, index=True - ) + file_gpg: Mapped[Optional[int]] = mapped_column(index=True) + file_gpg_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(ConnectionGpg.id), index=True) - destination_quote_level_id = db.Column( - db.Integer, db.ForeignKey(QuoteLevel.id), nullable=True, index=True + destination_quote_level_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(QuoteLevel.id), index=True ) """ email """ # completion email - email_completion = db.Column(db.Integer, nullable=True, index=True) - email_completion_log = db.Column(db.Integer, nullable=True) - email_completion_file = db.Column(db.Integer, nullable=True) - email_completion_file_embed = db.Column(db.Integer, nullable=True) - email_completion_recipients = db.Column(db.String(1000), nullable=True) - email_completion_subject = db.Column(db.String(8000), nullable=True) - email_completion_message = db.Column(db.String(8000), nullable=True) - email_completion_dont_send_empty_file = db.Column(db.Integer, nullable=True) + email_completion: Mapped[Optional[int]] = mapped_column(index=True) + email_completion_log: Mapped[Optional[int]] + email_completion_file: Mapped[Optional[int]] + email_completion_file_embed: Mapped[Optional[int]] + email_completion_recipients: Mapped[Optional[str_1000]] + email_completion_subject: Mapped[Optional[str_8000]] + email_completion_message: Mapped[Optional[str_8000]] + email_completion_dont_send_empty_file: Mapped[Optional[int]] # error email - email_error = db.Column(db.Integer, nullable=True, index=True) - email_error_recipients = db.Column(db.String(1000), nullable=True) - email_error_subject = db.Column(db.String(8000), nullable=True) - email_error_message = db.Column(db.String(8000), nullable=True) + email_error: Mapped[Optional[int]] + email_error_recipients: Mapped[Optional[str_1000]] + email_error_subject: Mapped[Optional[str_8000]] + email_error_message: Mapped[Optional[str_8000]] # rerun on fail - max_retries = db.Column(db.Integer, nullable=True, index=True) + max_retries: Mapped[Optional[int]] = mapped_column(index=True) - est_duration = db.Column(db.Integer, nullable=True, index=True) + est_duration: Mapped[Optional[int]] = mapped_column(index=True) # tasklog link - task = db.relationship( - "TaskLog", + task: Mapped[List["TaskLog"]] = relationship( backref="task", lazy=True, cascade="all, delete, delete-orphan", @@ -1000,8 +701,7 @@ class Task(db.Model): ) # taskparams link - params = db.relationship( - "TaskParam", + params: Mapped[List["TaskParam"]] = relationship( backref="task", lazy=True, cascade="all, delete, delete-orphan", @@ -1009,8 +709,7 @@ class Task(db.Model): ) # taskfiles link - files = db.relationship( - "TaskFile", + files: Mapped[List["TaskFile"]] = relationship( backref="task", lazy=True, cascade="all, delete, delete-orphan", @@ -1028,70 +727,46 @@ class TaskLog(db.Model): # pylint: disable=too-many-instance-attributes __tablename__ = "task_log" - id: Optional[int] = None - task_id: Optional[int] = None - status_id: Optional[int] = None - job_id: Optional[str] = None - message: Optional[str] = None - error: Optional[int] = 0 - status_date: Optional[datetime.datetime] = None - - job_id = db.Column(db.String(1000), nullable=True, index=True) - id = db.Column(db.Integer, primary_key=True, index=True) - task_id = db.Column(db.Integer, db.ForeignKey(Task.id), nullable=True, index=True) - status_id = db.Column( - db.Integer, db.ForeignKey(TaskStatus.id), nullable=True, index=True - ) - message = db.Column(db.Text, nullable=True) - status_date = db.Column(db.DateTime, default=datetime.datetime.now, index=True) - error = db.Column(db.Integer, nullable=True, index=True) - __table_args__ = ( - db.Index("ix_task_log_status_date_error", "status_date", "error"), + job_id: Mapped[Optional[str_1000]] = mapped_column(index=True) + id: Mapped[intpk] + task_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Task.id), index=True) + status_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(TaskStatus.id), index=True) + message: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + status_date: Mapped[Optional[datetime.datetime]] = mapped_column( + default=datetime.datetime.now, index=True ) + error: Mapped[Optional[int]] = mapped_column(index=True) + + __table_args__ = (db.Index("ix_task_log_status_date_error", "status_date", "error"),) -@dataclass class TaskFile(db.Model): """Table containing paths to task backup files.""" __tablename__ = "task_file" - id: Optional[int] = None - name: Optional[str] = None - task_id: Optional[int] = None - job_id: Optional[str] = None - size: Optional[str] = None - file_hash: Optional[str] = None - path: Optional[str] = None - created: Optional[datetime.datetime] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(1000), nullable=True, index=True) - task_id = db.Column(db.Integer, db.ForeignKey(Task.id), nullable=True, index=True) - job_id = db.Column(db.String(1000), nullable=True, index=True) - size = db.Column(db.String(200), nullable=True, index=True) - path = db.Column(db.String(1000), nullable=True, index=True) - file_hash = db.Column(db.String(1000), nullable=True) - created = db.Column(db.DateTime, default=datetime.datetime.now, index=True) - - __table_args__ = ( - db.Index("ix_task_file_id_task_id_job_id", "id", "task_id", "job_id"), + + id: Mapped[intpk] + name: Mapped[Optional[str_1000]] = mapped_column(index=True) + task_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Task.id), index=True) + job_id: Mapped[Optional[str_1000]] = mapped_column(index=True) + size: Mapped[Optional[str_200]] = mapped_column(index=True) + path: Mapped[Optional[str_1000]] = mapped_column(index=True) + file_hash: Mapped[Optional[str_1000]] + created: Mapped[Optional[datetime.datetime]] = mapped_column( + default=datetime.datetime.now, index=True ) + __table_args__ = (db.Index("ix_task_file_id_task_id_job_id", "id", "task_id", "job_id"),) + -@dataclass class TaskParam(db.Model): """Task parameters.""" __tablename__ = "task_param" - id: Optional[int] = None - key: Optional[str] = None - value: Optional[str] = None - sensitive: Optional[int] = None - task_id: Optional[int] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - key = db.Column(db.String(500), nullable=True) - value = db.Column(db.String(8000), nullable=True) - task_id = db.Column(db.Integer, db.ForeignKey(Task.id), nullable=True, index=True) - sensitive = db.Column(db.Integer, nullable=True, index=True) + + id: Mapped[intpk] + key: Mapped[Optional[str_500]] + value: Mapped[Optional[str_8000]] + task_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Task.id), index=True) + sensitive: Mapped[Optional[int]] = mapped_column(index=True) diff --git a/scheduler/tests/__init__.py b/scheduler/tests/__init__.py index f8616900..50a87b88 100644 --- a/scheduler/tests/__init__.py +++ b/scheduler/tests/__init__.py @@ -5,6 +5,7 @@ poetry run pytest tests/ \ --cov --cov-append --cov-branch --cov-report=term-missing --disable-warnings """ + import sys from pathlib import Path diff --git a/scheduler/tests/conftest.py b/scheduler/tests/conftest.py index 608a05fe..98575f8e 100644 --- a/scheduler/tests/conftest.py +++ b/scheduler/tests/conftest.py @@ -1,4 +1,5 @@ """Setyp pytest.""" + import os import sys from pathlib import Path @@ -134,7 +135,7 @@ def create_demo_task(session, year: int = 2025, sequence: int = 0) -> Tuple[int, name="Project 1 " + str(datetime.now()), cron=1, cron_min="1", - cron_start_date=datetime(year, 1, 1, tzinfo=timezone.utc), + cron_start_date=datetime(year, 1, 1), sequence_tasks=sequence, intv=1, intv_type="w", @@ -147,7 +148,7 @@ def create_demo_task(session, year: int = 2025, sequence: int = 0) -> Tuple[int, session, Task, name="Task 1 " + str(project.id), - source_type_id=6, + source_type_id=1, source_code="""select getdate()""", project_id=project.id, source_query_type_id=4, diff --git a/scheduler/tests/test_api.py b/scheduler/tests/test_api.py index 3bf21543..1219bad2 100644 --- a/scheduler/tests/test_api.py +++ b/scheduler/tests/test_api.py @@ -9,6 +9,7 @@ --cov --cov-append --cov-branch --cov-report=term-missing --disable-warnings """ + # flake8: noqa, # pylint: skip-file # check all admin links @@ -228,7 +229,7 @@ def test_delete_task(client_fixture: fixture) -> None: def test_run_task(client_fixture: fixture) -> None: p_id, t_id = create_demo_task(db.session) page = client_fixture.get(f"/api/run/{t_id}") - assert "Connection refused" in page.json["error"] + assert page.json == {"message": "Scheduler: task job started!"} assert page.status_code == 200 @@ -241,9 +242,7 @@ def test_run_task_with_delay(client_fixture: fixture) -> None: # check that job is in scheduler scheduled_task = [ - x - for x in atlas_scheduler.get_jobs() - if len(x.args) > 0 and x.args[0] == str(t_id) + x for x in atlas_scheduler.get_jobs() if len(x.args) > 0 and x.args[0] == str(t_id) ][0] assert ( scheduled_task.next_run_time.replace(microsecond=0, second=0).isoformat() diff --git a/scheduler/tests/test_events.py b/scheduler/tests/test_events.py index 510d1ab6..2734f337 100644 --- a/scheduler/tests/test_events.py +++ b/scheduler/tests/test_events.py @@ -9,6 +9,7 @@ --cov --cov-append --cov-branch --cov-report=term-missing --disable-warnings """ + print("importing tests") import time from datetime import datetime, timedelta @@ -42,7 +43,7 @@ def test_job_missed(api_fixture: fixture, caplog: fixture) -> None: # wait for logs to be added by background process time.sleep(1) # check that log was added - log = TaskLog.query.filter_by(task_id=t_id, status_id=6, error=1).first() + log = TaskLog.query.filter_by(task_id=t_id, error=1).first() assert "Job missed. Scheduled for:" in log.message # check logs @@ -284,9 +285,7 @@ def test_job_removed(api_fixture: fixture, caplog: fixture) -> None: for record in caplog.records: assert record.levelname not in ["CRITICAL", "ERROR"] - log = TaskLog.query.filter_by( - task_id=t_id, status_id=6, message="Job removed." - ).first() + log = TaskLog.query.filter_by(task_id=t_id, status_id=6, message="Job removed.").first() assert log is not None caplog.clear() # try invalid task_id @@ -306,9 +305,7 @@ def test_job_removed(api_fixture: fixture, caplog: fixture) -> None: for record in caplog.records: assert record.levelname not in ["CRITICAL", "ERROR"] - log = TaskLog.query.filter_by( - task_id=t_id, status_id=6, message="Job removed." - ).first() + log = TaskLog.query.filter_by(task_id=t_id, status_id=6, message="Job removed.").first() assert log is None caplog.clear() @@ -326,9 +323,7 @@ def test_job_removed(api_fixture: fixture, caplog: fixture) -> None: for record in caplog.records: assert record.levelname not in ["CRITICAL", "ERROR"] - log = TaskLog.query.filter_by( - task_id=t_id, status_id=6, message="Job removed." - ).first() + log = TaskLog.query.filter_by(task_id=t_id, status_id=6, message="Job removed.").first() assert log is None diff --git a/scheduler/web.py b/scheduler/web.py index 67adde85..0aebcf75 100644 --- a/scheduler/web.py +++ b/scheduler/web.py @@ -37,9 +37,7 @@ def schedule() -> Response: Merge two lists and put 0 where needed. """ - now = datetime.datetime.now( - datetime.datetime.now(datetime.timezone.utc).astimezone().tzinfo - ) + now = datetime.datetime.now(datetime.datetime.now(datetime.timezone.utc).astimezone().tzinfo) tomorrow = now + datetime.timedelta(hours=24) hour_list = ["now"] @@ -56,8 +54,7 @@ def schedule() -> Response: if ( job.id in ["job_sync", "temp_clean"] or not hasattr(job, "next_run_time") - or job.next_run_time is None - and job.args + or (job.next_run_time is None and job.args) ): continue @@ -100,7 +97,7 @@ def schedule() -> Response: @web_bp.route("/api/add/") -def add_task(task_id: int) -> str: +def add_task(task_id: int) -> Response: """Schedule task to run. First check for any existing schedules, remove them, then add a new schedule. diff --git a/scripts/cron_descriptor.py b/scripts/cron_descriptor.py new file mode 100644 index 00000000..24eaf16c --- /dev/null +++ b/scripts/cron_descriptor.py @@ -0,0 +1,531 @@ +""" +Cron schedule descriptions. + +Returns schedules in a readable format. +""" + +import calendar +import datetime +import re +from typing import Any, Callable, ClassVar, List, Optional + + +class ExpressionDescriptor: + """Converts a Cron Expression into a human readable string.""" + + _cron_days: ClassVar[dict[str, int]] = { + v.upper(): k for (k, v) in enumerate(calendar.day_abbr) + } + _special_characters: ClassVar[List[str]] = ["/", "-", ",", "*"] + + def __init__( + self, + cron_year: str = "*", + cron_month: str = "*", + cron_week: str = "*", + cron_day: str = "*", + cron_week_day: str = "*", + cron_hour: str = "0", + cron_min: str = "0", + cron_sec: str = "0", + ) -> None: + """Initializes a new instance of the ExpressionDescriptor.""" + self.cron_year = "*" if cron_year is None or cron_year == "" else cron_year + self.cron_month = "*" if cron_month is None or cron_month == "" else cron_month + self.cron_week = "*" if cron_week is None or cron_week == "" else cron_week + self.cron_day = "*" if cron_day is None or cron_day == "" else cron_day + self.cron_week_day = "*" if cron_week_day is None or cron_week_day == "" else cron_week_day + self.cron_hour = "0" if cron_hour is None or cron_hour == "" else cron_hour + self.cron_min = "0" if cron_min is None or cron_min == "" else cron_min + self.cron_sec = "0" if cron_sec is None or cron_sec == "" else cron_sec + + def get_full_description(self) -> str: + """Generates the FULL description. + + Returns + ------- + The FULL description + Raises: + FormatException: if formatting fails + + """ + + def remove_adjacent_duplicates(sentence: str) -> str: + """Remove duplicate words that might pop up such as week week.""" + words = sentence.split() + unique_words = [words[0]] # Initialize unique words list with the first word + for word in words[1:]: + if ( + word != unique_words[-1] + ): # Check if the current word is different from the previous word + unique_words.append(word) + return " ".join(unique_words) + + try: + time_segment = self.get_time_of_day_description() + day_of_month_desc = self.get_day_of_month_description() + month_desc = self.get_month_description() + day_of_week_desc = self.get_day_of_week_description() + week_desc = self.get_week_number_description() + year_desc = self.get_year_description() + + description = f"{time_segment}{day_of_month_desc}{day_of_week_desc}{month_desc}{week_desc}{year_desc}" + description = remove_adjacent_duplicates(description) + description = f"{description[0].upper()}{description[1:]}" + + except Exception as e: + description = ( + f"An error occurred when generating the expression description. error is {e}" + ) + + raise ValueError(description) from e + + return description + + def get_time_of_day_description(self) -> str: + """Generates a description for only the TIMEOFDAY portion of the expression. + + Returns + ------- + The TIMEOFDAY description + + """ + seconds_expression = self.cron_sec + minute_expression = self.cron_min + hour_expression = self.cron_hour + description = "" + + # handle special cases first + if ( + any(exp in minute_expression for exp in self._special_characters) is False + and any(exp in hour_expression for exp in self._special_characters) is False + and any(exp in seconds_expression for exp in self._special_characters) is False + ): + # specific time of day (i.e. 10 14) + description = ( + f"At {self.format_time(hour_expression, minute_expression, seconds_expression)} " + ) + + elif ( + seconds_expression == "" + and "-" in minute_expression + and "," not in minute_expression + and any(exp in hour_expression for exp in self._special_characters) is False + ): + # minute range in single hour (i.e. 0-10 11) + minute_parts = minute_expression.split("-") + description = f"Every minute between {self.format_time(hour_expression, minute_parts[0])} and {self.format_time(hour_expression, minute_parts[1])} " + + elif ( + seconds_expression == "" + and "," in hour_expression + and "-" not in hour_expression + and any(exp in minute_expression for exp in self._special_characters) is False + ): + # hours list with single minute (o.e. 30 6,14,16) + hour_parts = hour_expression.split(",") + description = "At" + "".join( + f" {self.format_time(hour_part, minute_expression)}" + + ( + "," + if i < len(hour_parts) - 2 + else (" and" if i == len(hour_parts) - 2 else "") + ) + for i, hour_part in enumerate(hour_parts) + ) + + else: + # default time description + seconds_description = self.get_seconds_description() + minutes_description = self.get_minutes_description() + hours_description = self.get_hours_description() + + description = str(seconds_description) + + if description and minutes_description: + description += ", " + + description += str(minutes_description) + + if description and hours_description: + description += ", " + + description += str(hours_description) + return description + + def get_seconds_description(self) -> Optional[str]: + """Generates a description for only the SECONDS portion of the expression. + + Returns + ------- + The SECONDS description + + """ + return self.get_segment_description( + self.cron_sec, + "every second", + lambda s: s, + lambda s: f"every {s} seconds", + lambda s: "seconds {0} through {1} past the minute", + lambda s: "" if s == "0" else "at {0} seconds past the minute", + lambda s: ", {0} through {1}", + ) + + def get_minutes_description(self) -> Optional[str]: + """Generates a description for only the MINUTE portion of the expression. + + Returns + ------- + The MINUTE description + + """ + return self.get_segment_description( + self.cron_min, + "every minute", + lambda s: s, + lambda s: f"every {s} minutes", + lambda s: "minutes {0} through {1} past the hour", + lambda s: "" if s == "0" and self.cron_sec == "" else "at {0} minutes past the hour", + lambda s: ", {0} through {1}", + ) + + def get_hours_description(self) -> Optional[str]: + """Generates a description for only the HOUR portion of the expression. + + Returns + ------- + The HOUR description + + """ + return self.get_segment_description( + self.cron_hour, + "every hour", + lambda s: self.format_time(s, "0"), + lambda s: f"every {s} hours", + lambda s: "between {0} and {1}", + lambda s: "at {0}", + lambda s: ", {0} through {1}", + ) + + def get_day_of_week_description(self) -> Optional[str]: + """Generates a description for only the DAYOFWEEK portion of the expression. + + Returns + ------- + The DAYOFWEEK description + + """ + if self.cron_week_day == "*": + # DOW is specified as * so we will not generate a description and defer to DOM part. + # Otherwise, we could get a contradiction like "on day 1 of the month, every day" + # or a dupe description like "every day, every day". + return "" + + def get_day_name(s: str) -> str: + try: + return calendar.day_name[int(s)] + except (IndexError, ValueError): + pass + try: + return calendar.day_name[list(calendar.day_abbr).index(s.title())] + except ValueError: + pass + return s + + return self.get_segment_description( + self.cron_week_day, + ", every day", + lambda s: get_day_name(s), + lambda s: f", every {s} days of the week", + lambda s: ", {0} through {1}", + lambda s: ", only on {0}", + lambda s: ", {0} through {1}", + ) + + def get_week_number_description(self) -> Optional[str]: + """Generates a description for only the week number portion of the expression. + + Returns + ------- + The week description + + """ + return self.get_segment_description( + self.cron_week, + "", + lambda s: s, + lambda s: f", every {s} weeks", + lambda s: ", week {0} through {1}", + lambda s: ", only on week {0} of the year", + lambda s: ", week {0} through {1}", + ) + + def get_month_description(self) -> Optional[str]: + """Generates a description for only the MONTH portion of the expression. + + Returns + ------- + The MONTH description + + """ + + def get_month_name(s: str) -> str: + try: + return calendar.month_name[int(s)] + except (IndexError, ValueError): + pass + try: + return calendar.month_name[list(calendar.month_abbr).index(s.title())] + except ValueError: + pass + return s + + return self.get_segment_description( + self.cron_month, + "", + lambda s: get_month_name(s), + lambda s: f", every {s} months", + lambda s: ", {0} through {1}", + lambda s: ", only in {0}", + lambda s: ", {0} through {1}", + ) + + def get_day_of_month_description(self) -> str: + """Generates a description for only the DAYOFMONTH portion of the expression. + + Returns + ------- + The DAYOFMONTH description + + """ + + def _add_suffix(day: str) -> str: + try: + d = int(day) + if 10 <= d % 100 <= 20: + suffix = "th" + else: + suffix = {1: "st", 2: "nd", 3: "rd"}.get(d % 10, "th") + return str(d) + suffix + " day" + except ValueError: + return day + + exp = self.cron_day + if exp.lower() == "last": + description = ", on the last day of the month" + elif re.match(r"^last\s\D{3}$", exp, re.IGNORECASE): + parts = exp.split() + description = f", on the last {calendar.day_name[self._cron_days[parts[1].upper()]]} of the month" + + else: + description = str( + self.get_segment_description( + exp, + ", every day" if self.cron_week_day == "*" else "", + lambda s: _add_suffix(s), + lambda s: ", every day" if s == "1" else ", every {0}", + lambda s: ", between {0} and {1} day of the month", + lambda s: " on the {0} of the month", + lambda s: ", {0} through {1}", + ) + ) + + return description + + def get_year_description(self) -> Optional[str]: + """Generates a description for only the YEAR portion of the expression. + + Returns + ------- + The YEAR description + + """ + return self.get_segment_description( + self.cron_year, + "", + lambda s: s, + lambda s: f", every {s} years", + lambda s: ", year {0} through year {1}", + lambda s: ", only in {0}", + lambda s: ", year {0} through year {1}", + ) + + def get_segment_description( + self, + expression: str, + all_description: str, + get_single_item_description: Callable[[Any], str], + get_interval_description_format: Callable[[Any], str], + get_between_description_format: Callable[[Any], str], + get_description_format: Callable[[Any], str], + get_range_format: Callable[[Any], str], + ) -> Optional[str]: + """Returns segment description. + + Args: + ---- + expression: Segment to descript + all_description: if everything then description for it. + get_single_item_description: single item description such as Monday. + get_interval_description_format: description for an interval such as 1/2. + get_between_description_format: description for a between such as 1-2. + get_description_format: Format get_single_item_description. + get_range_format: Function that formats range expressions depending on cron parts. + + Returns: + ------- + segment description. + + """ + description = None + expression = expression.strip() + if expression is None or expression == "": + description = "" + elif expression == "*": + description = all_description + elif not any(ext in expression for ext in ["/", "-", ",", " "]): + description = get_description_format(expression).format( + get_single_item_description(expression) + ) + elif "," in expression: + segments = expression.split(",") + description_content = "" + for i, seg in enumerate(segments): + seg = seg.strip() + if i > 0 and len(segments) > 2: + description_content += ", " + + if i < len(segments) - 1: + description_content += " " + + if i > 0 and len(segments) > 1 and (i == len(segments) - 1 or len(segments) == 2): + description_content += " and " + description_content += str( + self.get_segment_description( + seg, + all_description, + get_single_item_description, + get_interval_description_format, + get_between_description_format, + get_single_item_description, + get_range_format, + ) + ) + # replace weirdness + description_content = description_content.replace("and ,", "and") + description_content = description_content.replace("of the month", "") + + description = get_description_format(expression).format(description_content) + elif " " in expression and not any(ext in expression for ext in ["/", "-", ","]): + daypart = expression.split() + if len(daypart) > 1 and daypart[1].lower() in map(str.lower, calendar.day_abbr): + expression = ( + f"{daypart[0]} {calendar.day_name[self._cron_days[daypart[1].upper()]]}" + ) + description = get_description_format(expression).format( + get_single_item_description(expression) + ) + elif "/" in expression: + segments = expression.split("/") + description = get_interval_description_format(segments[1]).format( + get_single_item_description(segments[1]) + ) + + # interval contains 'between' piece (i.e. 2-59/3 ) + if "-" in segments[0]: + between_segment_description = self.generate_between_segment_description( + segments[0], + get_between_description_format, + get_single_item_description, + ) + if not between_segment_description.startswith(", "): + description += ", " + + description += between_segment_description + elif not any(ext in segments[0] for ext in ["*", ","]): + range_item_description = get_description_format(segments[0]).format( + get_single_item_description(segments[0]) + ) + range_item_description = range_item_description.replace(", ", "") + + description += f", starting {range_item_description}" + elif "-" in expression: + description = self.generate_between_segment_description( + expression, get_between_description_format, get_single_item_description + ) + + return description + + def generate_between_segment_description( + self, + between_expression: str, + get_between_description_format: Callable[[Any], str], + get_single_item_description: Callable[[Any], str], + ) -> str: + """ + Generates the between segment description. + + :param between_expression: the expression that is passed in. + :param get_between_description_format: a format for how to describe the between expression. + :param get_single_item_description: if it is one item, then this is the expression. + + :return: The between segment description. + """ + description = "" + between_segments = between_expression.split("-") + between_segment_1_description = get_single_item_description(between_segments[0]) + between_segment_2_description = get_single_item_description(between_segments[1]) + between_segment_2_description = between_segment_2_description.replace(":00", ":59") + + between_description_format = get_between_description_format(between_expression) + description += between_description_format.format( + between_segment_1_description, between_segment_2_description + ) + + return description + + def format_time( + self, hour_expression: str, minute_expression: str, second_expression: str = "" + ) -> str: + """Given time parts, will construct a formatted time description. + + Args: + ---- + hour_expression: This is the Hours part of the time. + minute_expression: Minutes part of time. + second_expression: Seconds part of time. + + Returns: + ------- + Formatted time description. + + """ + hour = int(hour_expression) + + period = "" + + period = "PM" if (hour >= 12) else "AM" + if period: + # add preceding space + period = " " + period + + if hour > 12: + hour -= 12 + + if hour == 0: + hour = 12 + + minute = str(int(minute_expression)) # Removes leading zero if any + second = "" + if second_expression is not None and second_expression: + second = f":{str(int(second_expression)).zfill(2)}" + + return f"{str(hour).zfill(2)}:{minute.zfill(2)}{second}{period}" + + def __str__(self) -> str: + """Call the full description if this method is called.""" + return self.get_full_description() + + def __repr__(self) -> str: + """Call the full description if this method is called.""" + return self.get_full_description() diff --git a/scripts/cron_validator.py b/scripts/cron_validator.py new file mode 100644 index 00000000..51154849 --- /dev/null +++ b/scripts/cron_validator.py @@ -0,0 +1,298 @@ +""" +Cron validation. + +Will validate that the values entered into the schedule are valid. +""" + +import calendar +import re +from typing import ClassVar, Optional + + +class CronValidator: + """Group of functions to make sure each cron field is correct.""" + + _cron_days: ClassVar[dict[str, int]] = { + v.upper(): k for (k, v) in enumerate(calendar.day_abbr) + } + _cron_months: ClassVar[dict[str, int]] = { + v.upper(): k for (k, v) in enumerate(calendar.month_abbr) if k != 0 + } + + def __init__( + self, + cron: int, + cron_year: Optional[str], + cron_month: Optional[str], + cron_week: Optional[str], + cron_day: Optional[str], + cron_week_day: Optional[str], + cron_hour: Optional[str], + cron_min: Optional[str], + cron_sec: Optional[str], + ) -> None: + """Initializes values with this class.""" + self.cron = cron + self.cron_year = str(cron_year) + self.cron_month = str(cron_month) + self.cron_week = str(cron_week) + self.cron_day = str(cron_day) + self.cron_week_day = str(cron_week_day) + self.cron_hour = str(cron_hour) + self.cron_min = str(cron_min) + self.cron_sec = str(cron_sec) + + def validate(self) -> None: + """Main method called to validate the cron values. + The first if statement prevents saving of a completely blank + cron schedule. + The second if statement is validation of each cron element. + """ + if ( + self.cron == 1 + and self.cron_year == "" + and self.cron_month == "" + and self.cron_day == "" + and self.cron_week_day == "" + and self.cron_hour == "" + and self.cron_min == "" + and self.cron_sec == "" + ): + msg = f"At least one schedule element must be populated" + raise ValueError(msg) + + if self.cron == 1: + self._month(expr=self.cron_month, prefix="Month") + self._day_of_month(expr=self.cron_day, prefix="Day") + self._day_of_week(expr=self.cron_week_day, prefix="Week Day") + self._number_validate(expr=self.cron_year, prefix="Year", mi=1970, mx=2099, limit=84) + self._number_validate(expr=self.cron_week, prefix="Week", mi=1, mx=53, limit=53) + self._number_validate(expr=self.cron_hour, prefix="Hour", mi=0, mx=23, limit=24) + self._number_validate(expr=self.cron_min, prefix="Minute", mi=0, mx=59, limit=60) + self._number_validate(expr=self.cron_sec, prefix="Second", mi=0, mx=59, limit=60) + + def _number_validate(self, expr: str, prefix: str, mi: int, mx: int, limit: int) -> None: + """Validates any records that are number only. + + * + nn (mi-mx) + nn-nn + nn/nn + nn-nn/nn + */nn + nn,nn,nn. + """ + if expr is None or expr == "" or expr == "*": + pass + elif re.match(r"^\d*$", expr): + self.check_range(expr=expr, mi=mi, mx=mx, prefix=prefix) + + elif re.match(r"^\d*-\d*$", expr): + parts = expr.split("-") + self.check_range(expr=parts[0], mi=mi, mx=mx, prefix=prefix) + self.check_range(expr=parts[1], mi=mi, mx=mx, prefix=prefix) + self.compare_range(st=int(parts[0]), ed=int(parts[1]), mi=mi, mx=mx, prefix=prefix) + + elif re.match(r"^\d*/\d*$", expr): + parts = expr.split("/") + self.check_range(expr=parts[0], mi=mi, mx=mx, prefix=prefix) + self.check_range(type="interval", expr=parts[1], mi=1, mx=mx, prefix=prefix) + + elif re.match(r"^\d*-\d*/\d*$", expr): + parts = expr.split("/") + fst_parts = parts[0].split("-") + self.check_range(expr=fst_parts[0], mi=mi, mx=mx, prefix=prefix) + self.check_range(expr=fst_parts[1], mi=mi, mx=mx, prefix=prefix) + self.compare_range( + st=int(fst_parts[0]), ed=int(fst_parts[1]), mi=mi, mx=mx, prefix=prefix + ) + self.check_range(type="interval", expr=parts[1], mi=1, mx=mx, prefix=prefix) + + elif re.match(r"^\*/\d*$", expr): + parts = expr.split("/") + self.check_range(type="interval", expr=parts[1], mi=1, mx=mx, prefix=prefix) + + elif "," in expr: + expr_ls = expr.split(",") + if len(expr_ls) > limit: + msg = f"({prefix}) Exceeded maximum number({limit}) of specified value. '{len(expr_ls)}' is provided" + raise ValueError(msg) + else: + for n in expr_ls: + self._number_validate(expr=n.strip(), prefix=prefix, mi=mi, mx=mx, limit=limit) + else: + msg = f"({prefix}) Illegal Expression Format '{expr}'" + raise ValueError(msg) + + def _day_of_month(self, expr: str, prefix: str) -> None: + """DAY Of Month expressions (n : Number, s: String). + + * + nn (1~31) + nn-nn + nn/nn + nn-nn/nn + */nn + nn,nn,nn, nth sss, last sss, last (Maximum 31 elements) + last + nth sss + last sss. + """ + mi, mx = (1, 31) + if expr is None or expr == "" or expr == "*" or expr.lower() == "last": + pass + elif "," in expr: + limit = 31 + expr_ls = expr.split(",") + if len(expr_ls) > 31: + msg = f"({prefix}) Exceeded maximum number({limit}) of specified value. '{len(expr_ls)}' is provided" + raise ValueError(msg) + else: + for dayofmonth in expr_ls: + self._day_of_month(expr=dayofmonth.strip(), prefix=prefix) + # if it is number only then just use _number_validate function + elif re.match( + r"^(\*|(\d{1,2})-(\d{1,2})(/(\d{1,2}))?|\*/\d{1,2}|\d{1,2}(/\d{1,2})?)$", + expr, + ): + self._number_validate(expr=expr, prefix=prefix, mi=mi, mx=mx, limit=31) + elif re.match(r"^[1-5](nd|st|rd|th)\s\D{3}$", expr, re.IGNORECASE): + parts = expr.split() + parts[0] = re.sub("[nd|st|rd|th]", "", parts[0]) + try: + self._cron_days[parts[1].upper()] + except KeyError: + msg = f"({prefix}) Invalid value '{expr}'" + raise ValueError(msg) + self.check_range(expr=parts[0], mi=mi, mx=5, prefix=prefix) + elif re.match(r"^last\s\D{3}$", expr, re.IGNORECASE): + parts = expr.split() + try: + self._cron_days[parts[1].upper()] + except KeyError: + msg = f"({prefix}) Invalid value '{expr}'" + raise ValueError(msg) + else: + msg = f"({prefix}) Illegal Expression Format '{expr}'" + raise ValueError(msg) + + def _month(self, expr: str, prefix: str) -> None: + """Month expressions (n : Number, s: String). + + * + nn (1~12) + sss (JAN~DEC) + nn-nn + sss-sss + nn/nn + nn-nn/nn + */nn + nn,nn,nn,nn-nn,sss-sss (Maximum 12 elements). + """ + mi, mx = (1, 12) + if expr is None or expr == "" or expr == "*": + pass + elif "," in expr: + """ + get values with a comma and then run each part through months again. + """ + limit = 12 + expr_ls = expr.split(",") + if len(expr_ls) > limit: + msg = f"({prefix}) Exceeded maximum number({limit}) of specified value. '{len(expr_ls)}' is provided" + raise ValueError(msg) + else: + for mon in expr_ls: + self._month(expr=mon.strip(), prefix=prefix) + # if it is number only then just use _number_validate function + elif re.match( + r"^(\*|(\d{1,2})-(\d{1,2})(/(\d{1,2}))?|\*/\d{1,2}|\d{1,2}(/\d{1,2})?)$", + expr, + ): + self._number_validate(expr=expr, prefix=prefix, mi=mi, mx=mx, limit=12) + elif re.match(r"\D{3}$", expr): + try: + st_mon = int(self._cron_months[expr.upper()]) + except KeyError: + msg = f"Invalid Month value '{expr}'" + raise ValueError(msg) + elif re.match(r"\D{3}-\D{3}$", expr): + parts = expr.split("-") + try: + st_mon = int(self._cron_months[parts[0].upper()]) + ed_mon = int(self._cron_months[parts[1].upper()]) + except KeyError: + msg = f"Invalid Month value '{expr}'" + raise ValueError(msg) + self.compare_range( + st=st_mon, + ed=ed_mon, + mi=mi, + mx=mx, + prefix=prefix, + ) + else: + msg = f"({prefix}) Illegal Expression Format '{expr}'" + raise ValueError(msg) + + def _day_of_week(self, expr: str, prefix: str) -> None: + """DAYOfWeek expressions (n : Number, s: String). + + * + n (0~6) + sss (SUN~SAT) + n/n + n-n/n + */n + n-n + sss-sss + n-n,sss-sss (maximum 7 elements). + """ + mi, mx = (0, 6) + if expr is None or expr == "" or expr == "*" or expr.upper() in self._cron_days.keys(): + pass + elif "," in expr: + limit = 7 + expr_ls = expr.split(",") + + if len(expr_ls) > limit: + msg = f"({prefix}) Exceeded maximum number({limit}) of specified value. '{len(expr_ls)}' is provided" + raise ValueError(msg) + else: + for day in expr_ls: + self._day_of_week(expr=day.strip(), prefix=prefix) + # if it is number only then just use _number_validate function + elif re.match(r"^(\*|(\d{1})-(\d{1})(/(\d{1}))?|\*/\d{1}|\d{1}(/\d{1})?)$", expr): + self._number_validate(expr=expr, prefix=prefix, mi=mi, mx=mx, limit=7) + elif re.match(r"\D{3}-\D{3}$", expr): + parts = expr.split("-") + try: + st_day = self._cron_days[parts[0].upper()] + ed_day = self._cron_days[parts[1].upper()] + except KeyError: + msg = f"({prefix}) Invalid value '{expr}'" + raise ValueError(msg) + self.compare_range(st=st_day, ed=ed_day, mi=mi, mx=mx, prefix=prefix) + else: + msg = f"({prefix}) Illegal Expression Format '{expr}'" + raise ValueError(msg) + + def check_range( + self, expr: str, mi: int, mx: int, prefix: str, type: Optional[str] = None + ) -> None: + """Check if expression value within range of specified limit.""" + if int(expr) < mi or mx < int(expr): + if type is None: + msg = f"{prefix} values must be between {mi} and {mx} but '{expr}' is provided" + elif type == "interval": + msg = f"({prefix}) Accepted increment value range is {mi}~{mx} but '{expr}' is provided" + raise ValueError(msg) + + def compare_range(self, prefix: str, st: int, ed: int, mi: int, mx: int) -> None: + """Check 2 expression value's size. + + does not allow {st} value to be greater than {ed} value. + """ + if int(st) > int(ed): + msg = f"({prefix}) Invalid range '{st}-{ed}'. Accepted range is {mi}-{mx}" + raise ValueError(msg) diff --git a/scripts/crypto.py b/scripts/crypto.py index b97bb6ac..55b1d3e6 100644 --- a/scripts/crypto.py +++ b/scripts/crypto.py @@ -1,6 +1,5 @@ """Password encryption and decryption.""" - from base64 import b64decode, b64encode from cryptography.fernet import Fernet diff --git a/scripts/database.py b/scripts/database.py index efc0548a..00beb373 100644 --- a/scripts/database.py +++ b/scripts/database.py @@ -1,3 +1,5 @@ +"""Initial creation and seed of the database.""" + from typing import Any from sqlalchemy.orm import Session as SqlSession @@ -43,9 +45,7 @@ def seed(session: SqlSession, model: Any) -> None: get_or_create(session, model.TaskSourceType, name="SSH Command") # task processing type - get_or_create( - session, model.TaskProcessingType, name="Network File (SMB Connection)" - ) + get_or_create(session, model.TaskProcessingType, name="Network File (SMB Connection)") get_or_create(session, model.TaskProcessingType, name="File (SFTP Connection)") get_or_create(session, model.TaskProcessingType, name="File (FTP Connection)") get_or_create(session, model.TaskProcessingType, name="Git URL") @@ -58,28 +58,26 @@ def seed(session: SqlSession, model: Any) -> None: get_or_create(session, model.TaskSourceQueryType, name="File Path (SMB Connection)") get_or_create(session, model.TaskSourceQueryType, name="Other URL (no auth)") get_or_create(session, model.TaskSourceQueryType, name="Source Code") - get_or_create( - session, model.TaskSourceQueryType, name="File Path (SFTP Connection)" - ) + get_or_create(session, model.TaskSourceQueryType, name="File Path (SFTP Connection)") get_or_create(session, model.TaskSourceQueryType, name="File Path (FTP Connection)") get_or_create(session, model.TaskSourceQueryType, name="Devops") # database type get_or_create(session, model.ConnectionDatabaseType, name="Postgres") get_or_create(session, model.ConnectionDatabaseType, name="SQL Sever") + get_or_create(session, model.ConnectionDatabaseType, name="Jdbc") # file types get_or_create(session, model.TaskDestinationFileType, name="CSV (.csv)", ext="csv") get_or_create(session, model.TaskDestinationFileType, name="Text (.txt)", ext="txt") - get_or_create( - session, model.TaskDestinationFileType, name="Excel (.csv)", ext="csv" - ) + get_or_create(session, model.TaskDestinationFileType, name="Excel (.csv)", ext="csv") get_or_create( session, model.TaskDestinationFileType, name="Other (specify in filename)", ext="", ) + get_or_create(session, model.TaskDestinationFileType, name="None", ext="") # task status get_or_create(session, model.TaskStatus, name="Running") @@ -103,3 +101,4 @@ def seed(session: SqlSession, model: Any) -> None: get_or_create(session, model.TaskStatus, name="SSH") get_or_create(session, model.TaskStatus, name="SQL Server") get_or_create(session, model.TaskStatus, name="Postgres") + get_or_create(session, model.TaskStatus, name="Jdbc") diff --git a/scripts/error_print.py b/scripts/error_print.py index cb0e84cc..8d9c374a 100644 --- a/scripts/error_print.py +++ b/scripts/error_print.py @@ -2,19 +2,20 @@ import sys import traceback +from typing import Optional, Type -def full_stack(): +def full_stack() -> str: """Return full stack trace of an exception.""" - exc = sys.exc_info()[0] - if exc is not None: + exc_info: Optional[Type[BaseException]] = sys.exc_info()[0] + if exc_info is not None: frame = sys.exc_info()[-1].tb_frame.f_back stack = traceback.extract_stack(frame) else: stack = traceback.extract_stack()[:-1] # last one would be full_stack() trc = "Traceback (most recent call last):\n" stackstr = trc + "".join(traceback.format_list(stack)) - if exc is not None: + if exc_info is not None: # pylint: disable=bad-str-strip-call stackstr += " " + traceback.format_exc().lstrip(trc) return stackstr diff --git a/sonar-project.properties b/sonar-project.properties index 44154da0..7cc46555 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -1,2 +1,2 @@ sonar.exclusions = web/static/lib/**/*, migrations_dev/, migrations/, runner/tests/, web/tests/, scheduler/tests/, web/static/fonts/**/* -sonar.python.version = 3.9 +sonar.python.version = 3.10 diff --git a/tox.ini b/tox.ini index 962e712d..99aac624 100644 --- a/tox.ini +++ b/tox.ini @@ -4,6 +4,7 @@ envlist = cov skip_missing_interpreters = True isolated_build = True +skipsdist = True [testenv:test] setenv = @@ -41,11 +42,9 @@ description = reformat code commands = black . isort . - djlint . -e html.j2 --reformat --quiet --warn allowlist_externals = isort black - djlint skip_install = true skip_gitignore = true @@ -54,10 +53,8 @@ description = check code style commands = isort . --check black . --fast --check - ruff scheduler/ web/ runner/ + ruff check scheduler/ web/ runner/ mypy scheduler web runner --show-traceback --show-error-codes - djlint . -e html.j2 --check --quiet - djlint . -e html.j2 --lint skip_install = true allowlist_externals = black diff --git a/web/.coveragerc b/web/.coveragerc index dbf0102f..f707fb0d 100644 --- a/web/.coveragerc +++ b/web/.coveragerc @@ -5,7 +5,6 @@ branch = True [report] omit = */confi_text.py - */smb_fix.py */flask_simpleldap.py */seed.py */cli.py diff --git a/web/cli.py b/web/cli.py index a30360da..dc7f1e23 100644 --- a/web/cli.py +++ b/web/cli.py @@ -1,4 +1,5 @@ """EM Web Custom CLI.""" + import sys from pathlib import Path diff --git a/web/extensions.py b/web/extensions.py index 090e1f3a..b52fcd8f 100644 --- a/web/extensions.py +++ b/web/extensions.py @@ -9,6 +9,8 @@ scripts after running :obj:`web.create_app` """ + +import datetime import logging from flask_assets import Environment @@ -21,16 +23,53 @@ from flask_redis import FlaskRedis from flask_session import Session from flask_sqlalchemy import SQLAlchemy +from sqlalchemy import String +from sqlalchemy.orm import DeclarativeBase, mapped_column, registry +from sqlalchemy.sql import functions +from typing_extensions import Annotated cache = Cache() compress = Compress() -db = SQLAlchemy() executor = Executor() htmlmin = HTMLMIN(remove_empty_space=True) migrate = Migrate(compare_type=True) redis_client = FlaskRedis() sess = Session() +str_5 = Annotated[str, 5] +str_10 = Annotated[str, 10] +str_30 = Annotated[str, 30] +str_120 = Annotated[str, 120] +str_200 = Annotated[str, 200] +str_400 = Annotated[str, 400] +str_500 = Annotated[str, 500] +str_1000 = Annotated[str, 1000] +str_8000 = Annotated[str, 8000] +intpk = Annotated[int, mapped_column(primary_key=True, index=True)] +timestamp = Annotated[ + datetime.datetime, + mapped_column(nullable=False, server_default=functions.now()), +] + + +class Base(DeclarativeBase): + """Declare base types.""" + + registry = registry( + type_annotation_map={ + str_120: String(120), + str_200: String(200), + str_500: String(500), + str_1000: String(1000), + str_8000: String(8000), + str_5: String(5), + str_30: String(30), + str_400: String(400), + } + ) + + +db = SQLAlchemy(model_class=Base) web_assets = Environment() login_manager = LoginManager() diff --git a/web/model.py b/web/model.py index 1ce36e25..a35722b1 100644 --- a/web/model.py +++ b/web/model.py @@ -20,85 +20,78 @@ """ - import datetime -from dataclasses import dataclass -from typing import Optional +from typing import List, Optional -from sqlalchemy.orm import declarative_base +from sqlalchemy.orm import Mapped, mapped_column, relationship from sqlalchemy.sql import functions -from .extensions import db - -Base = declarative_base() +from .extensions import ( + db, + intpk, + str_5, + str_10, + str_30, + str_120, + str_200, + str_400, + str_500, + str_1000, + str_8000, + timestamp, +) -@dataclass class LoginType(db.Model): """Lookup table of user login types.""" __tablename__ = "login_type" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(120), nullable=True) - login = db.relationship("Login", backref="login_type", lazy=True) + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + login: Mapped[List["Login"]] = relationship(back_populates="login_type", lazy=True) -@dataclass class Login(db.Model): """Table should contain all login attempts.""" __tablename__ = "login" - id: Optional[int] = None - username: Optional[str] = None - login_date: Optional[datetime.datetime] = None - type_id: Optional[int] = None - id = db.Column(db.Integer, primary_key=True, index=True) - type_id = db.Column(db.Integer, db.ForeignKey(LoginType.id), nullable=True) - username = db.Column(db.String(120), nullable=True) - login_date = db.Column(db.DateTime, server_default=functions.now()) + id: Mapped[intpk] + type_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(LoginType.id)) + username: Mapped[Optional[str_120]] + login_date: Mapped[Optional[timestamp]] + login_type: Mapped["LoginType"] = relationship(back_populates="login") -@dataclass class User(db.Model): """Table containing any user-specific information.""" # pylint: disable=too-many-instance-attributes - id: Optional[int] = None - account_name: Optional[str] = None - email: Optional[str] = None - full_name: Optional[str] = None - first_name: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - account_name = db.Column(db.String(200), nullable=True, index=True) - email = db.Column(db.String(200), nullable=True, index=True) - full_name = db.Column(db.String(200), nullable=True) - first_name = db.Column(db.String(200), nullable=True) - project_owner = db.relationship( - "Project", backref="project_owner", lazy=True, foreign_keys="Project.owner_id" + id: Mapped[intpk] + account_name: Mapped[Optional[str_200]] = mapped_column(index=True) + email: Mapped[Optional[str_200]] = mapped_column(index=True) + full_name: Mapped[Optional[str_200]] + first_name: Mapped[Optional[str_200]] + project_owner: Mapped["Project"] = relationship( + backref="project_owner", lazy=True, foreign_keys="Project.owner_id" ) - project_creator = db.relationship( - "Project", + project_creator: Mapped["Project"] = relationship( backref="project_creator", lazy=True, foreign_keys="Project.creator_id", ) - project_updater = db.relationship( - "Project", + project_updater: Mapped["Project"] = relationship( backref="project_updater", lazy=True, foreign_keys="Project.updater_id", ) - task_creator = db.relationship( - "Task", backref="task_creator", lazy=True, foreign_keys="Task.creator_id" + task_creator: Mapped["Task"] = relationship( + backref="task_creator", lazy=True, foreign_keys="Task.creator_id" ) - task_updater = db.relationship( - "Task", backref="task_updater", lazy=True, foreign_keys="Task.updater_id" + task_updater: Mapped["Task"] = relationship( + backref="task_updater", lazy=True, foreign_keys="Task.updater_id" ) is_authenticated = True is_active = True @@ -113,78 +106,40 @@ def __str__(self) -> str: return self.full_name or f"User {self.id}" -@dataclass class Project(db.Model): """Table containing project details.""" # pylint: disable=too-many-instance-attributes - id: Optional[int] = None - name: Optional[str] = None - description: Optional[str] = None - owner_id: Optional[int] = None - cron: Optional[int] = None - cron_year: Optional[int] = None - cron_month: Optional[int] = None - cron_week: Optional[int] = None - cron_day: Optional[int] = None - cron_week_day: Optional[int] = None - cron_hour: Optional[int] = None - cron_min: Optional[int] = None - cron_sec: Optional[int] = None - cron_start_date: Optional[datetime.datetime] = None - cron_end_date: Optional[datetime.datetime] = None - - intv: Optional[int] = None - intv_type: Optional[str] = None - intv_value: Optional[int] = None - intv_start_date: Optional[datetime.datetime] = None - intv_end_date: Optional[datetime.datetime] = None - - ooff: Optional[int] = None - ooff_date: Optional[datetime.datetime] = None - - created: Optional[datetime.datetime] = None - creator_id: Optional[int] = None - updated: Optional[datetime.datetime] = None - updater_id: Optional[int] = None - - global_params: Optional[str] = None - - sequence_tasks: Optional[int] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(120), nullable=True) - description = db.Column(db.String(8000), nullable=True) - owner_id = db.Column(db.Integer, db.ForeignKey(User.id), nullable=True, index=True) - - cron = db.Column(db.Integer, nullable=True) - cron_year = db.Column(db.Integer, nullable=True) - cron_month = db.Column(db.Integer, nullable=True) - cron_week = db.Column(db.Integer, nullable=True) - cron_day = db.Column(db.Integer, nullable=True) - cron_week_day = db.Column(db.Integer, nullable=True) - cron_hour = db.Column(db.Integer, nullable=True) - cron_min = db.Column(db.Integer, nullable=True) - cron_sec = db.Column(db.Integer, nullable=True) - cron_start_date = db.Column(db.DateTime, nullable=True) - cron_end_date = db.Column(db.DateTime, nullable=True) - - intv = db.Column(db.Integer, nullable=True) - intv_type = db.Column(db.String(5), nullable=True) - intv_value = db.Column(db.Integer, nullable=True) - intv_start_date = db.Column(db.DateTime, nullable=True) - intv_end_date = db.Column(db.DateTime, nullable=True) - - ooff = db.Column(db.Integer, nullable=True) - ooff_date = db.Column(db.DateTime, nullable=True) - - global_params = db.Column(db.String(8000), nullable=True) - - sequence_tasks = db.Column(db.Integer, nullable=True) - - task = db.relationship( - "Task", + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + description: Mapped[Optional[str_8000]] + owner_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(User.id), index=True) + + cron: Mapped[Optional[int]] + cron_year: Mapped[Optional[str_120]] + cron_month: Mapped[Optional[str_120]] + cron_week: Mapped[Optional[str_120]] + cron_day: Mapped[Optional[str_120]] + cron_week_day: Mapped[Optional[str_120]] + cron_hour: Mapped[Optional[str_120]] + cron_min: Mapped[Optional[str_120]] + cron_sec: Mapped[Optional[str_120]] + cron_start_date: Mapped[Optional[datetime.datetime]] + cron_end_date: Mapped[Optional[datetime.datetime]] + + intv: Mapped[Optional[int]] + intv_type: Mapped[Optional[str_5]] + intv_value: Mapped[Optional[int]] + intv_start_date: Mapped[Optional[datetime.datetime]] + intv_end_date: Mapped[Optional[datetime.datetime]] + ooff: Mapped[Optional[int]] + ooff_date: Mapped[Optional[datetime.datetime]] + + global_params: Mapped[Optional[str_8000]] + sequence_tasks: Mapped[Optional[int]] + + task: Mapped[List["Task"]] = relationship( backref="project", lazy="dynamic", cascade="all, delete, delete-orphan", @@ -192,68 +147,53 @@ class Project(db.Model): ) # projectparams link - params = db.relationship( - "ProjectParam", + params: Mapped[List["ProjectParam"]] = relationship( backref="project", lazy=True, cascade="all, delete, delete-orphan", passive_deletes=True, ) - created = db.Column(db.DateTime, server_default=functions.now()) - creator_id = db.Column( - db.Integer, db.ForeignKey(User.id), nullable=True, index=True - ) - updated = db.Column(db.DateTime, onupdate=functions.now()) - updater_id = db.Column( - db.Integer, db.ForeignKey(User.id), nullable=True, index=True - ) + created: Mapped[Optional[timestamp]] + creator_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(User.id), index=True) + updated: Mapped[Optional[datetime.datetime]] = mapped_column(onupdate=functions.now()) + updater_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(User.id), index=True) def __str__(self) -> str: """Return default string.""" return str(self.name) -@dataclass class TaskSourceType(db.Model): """Lookup table of task source types.""" __tablename__ = "task_source_type" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(120), nullable=True) - task = db.relationship("Task", backref="source_type", lazy=True) + id: Mapped[int] = mapped_column(primary_key=True) + name: Mapped[Optional[str_120]] + task: Mapped["Task"] = relationship(backref="source_type", lazy=True) -@dataclass class TaskSourceQueryType(db.Model): """Lookup table of task query source types.""" __tablename__ = "task_source_query_type" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(120), nullable=True) - task = db.relationship("Task", backref="query_type", lazy=True) + id: Mapped[int] = mapped_column(primary_key=True) + name: Mapped[Optional[str_120]] + task: Mapped["Task"] = relationship(backref="query_type", lazy=True) -@dataclass class TaskProcessingType(db.Model): """Lookup table of task query source types.""" __tablename__ = "task_processing_type" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(120), nullable=True) - task = db.relationship("Task", backref="processing_type", lazy=True) + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + task: Mapped["Task"] = relationship(backref="processing_type", lazy=True) -@dataclass class TaskStatus(db.Model): """Lookup table of task status types. @@ -261,20 +201,16 @@ class TaskStatus(db.Model): """ __tablename__ = "task_status" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(1000), nullable=True) - task = db.relationship( - "Task", + id: Mapped[intpk] + name: Mapped[Optional[str_1000]] + task: Mapped[List["Task"]] = relationship( backref="status", lazy="dynamic", cascade="all, delete, delete-orphan", passive_deletes=True, ) - task_log = db.relationship( - "TaskLog", + task_log: Mapped[List["TaskLog"]] = relationship( backref="status", lazy="dynamic", cascade="all, delete, delete-orphan", @@ -282,60 +218,45 @@ class TaskStatus(db.Model): ) -@dataclass class Connection(db.Model): """Table containing all destination information.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection" - id: Optional[int] = None - name: Optional[str] = None - description: Optional[str] = None - address: Optional[str] = None - primary_contact: Optional[str] = None - primary_contact_email: Optional[str] = None - primary_contact_phone: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(120), nullable=True) - description = db.Column(db.String(120), nullable=True) - address = db.Column(db.String(120), nullable=True) - primary_contact = db.Column(db.String(400), nullable=True) - primary_contact_email = db.Column(db.String(120), nullable=True) - primary_contact_phone = db.Column(db.String(120), nullable=True) - ssh = db.relationship( - "ConnectionSsh", + + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + description: Mapped[Optional[str_120]] + address: Mapped[Optional[str_120]] + primary_contact: Mapped[Optional[str_400]] + primary_contact_email: Mapped[Optional[str_120]] + primary_contact_phone: Mapped[Optional[str_120]] + ssh: Mapped[List["ConnectionSsh"]] = relationship( backref="connection", lazy=True, foreign_keys="ConnectionSsh.connection_id", ) - sftp = db.relationship( - "ConnectionSftp", + sftp: Mapped[List["ConnectionSftp"]] = relationship( backref="connection", lazy=True, foreign_keys="ConnectionSftp.connection_id", ) - ftp = db.relationship( - "ConnectionFtp", + ftp: Mapped[List["ConnectionFtp"]] = relationship( backref="connection", lazy=True, foreign_keys="ConnectionFtp.connection_id", ) - smb = db.relationship( - "ConnectionSmb", + smb: Mapped[List["ConnectionSmb"]] = relationship( backref="connection", lazy=True, foreign_keys="ConnectionSmb.connection_id", ) - database = db.relationship( - "ConnectionDatabase", - backref="connection", + database: Mapped[List["ConnectionDatabase"]] = relationship( + back_populates="connection", lazy=True, - foreign_keys="ConnectionDatabase.connection_id", ) - gpg = db.relationship( - "ConnectionGpg", + gpg: Mapped[List["ConnectionGpg"]] = relationship( backref="connection", lazy=True, foreign_keys="ConnectionGpg.connection_id", @@ -346,52 +267,37 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionSftp(db.Model): """Table conntaining sftp connection strings.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection_sftp" - id: Optional[int] = None - connection_id: Optional[int] = None - name: Optional[str] = None - address: Optional[str] = None - port: Optional[int] = None - path: Optional[str] = None - username: Optional[str] = None - key: Optional[str] = None - password: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(500), nullable=True) - address = db.Column(db.String(500), nullable=True) - port = db.Column(db.Integer, nullable=True) - path = db.Column(db.String(500), nullable=True) - username = db.Column(db.String(120), nullable=True) - key = db.Column(db.String(8000), nullable=True) - password = db.Column(db.Text, nullable=True) - key_password = db.Column(db.Text, nullable=True) - task = db.relationship( - "Task", + + id: Mapped[intpk] + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_500]] + address: Mapped[Optional[str_500]] + port: Mapped[Optional[int]] + path: Mapped[Optional[str_500]] + username: Mapped[Optional[str_120]] + key: Mapped[Optional[str_8000]] + password: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + key_password: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + task: Mapped["Task"] = relationship( backref="destination_sftp_conn", lazy=True, foreign_keys="Task.destination_sftp_id", ) - task_source = db.relationship( - "Task", + task_source: Mapped["Task"] = relationship( backref="source_sftp_conn", lazy=True, foreign_keys="Task.source_sftp_id", ) - query_source = db.relationship( - "Task", backref="query_sftp_conn", lazy=True, foreign_keys="Task.query_sftp_id" + query_source: Mapped["Task"] = relationship( + backref="query_sftp_conn", lazy=True, foreign_keys="Task.query_sftp_id" ) - processing_source = db.relationship( - "Task", + processing_source: Mapped["Task"] = relationship( backref="processing_sftp_conn", lazy=True, foreign_keys="Task.processing_sftp_id", @@ -402,32 +308,21 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionSsh(db.Model): - """Table conntaining sftp connection strings.""" + """Table conntaining ssh connection strings.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection_ssh" - id: Optional[int] = None - connection_id: Optional[int] = None - name: Optional[str] = None - address: Optional[str] = None - port: Optional[int] = None - username: Optional[str] = None - password: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(500), nullable=True) - address = db.Column(db.String(500), nullable=True) - port = db.Column(db.Integer, nullable=True) - username = db.Column(db.String(120), nullable=True) - password = db.Column(db.Text, nullable=True) - task_source = db.relationship( - "Task", + + id: Mapped[intpk] + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_500]] + address: Mapped[Optional[str_500]] + port: Mapped[Optional[int]] + username: Mapped[Optional[str_120]] + password: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + task_source: Mapped["Task"] = relationship( backref="source_ssh_conn", lazy=True, foreign_keys="Task.source_ssh_id", @@ -438,26 +333,18 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionGpg(db.Model): """Table conntaining gpg keys.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection_gpg" - id: Optional[int] = None - connection_id: Optional[int] = None - name: Optional[str] = None - key: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(500), nullable=True) - key = db.Column(db.String(8000), nullable=True) - task_source = db.relationship( - "Task", + + id: Mapped[intpk] + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_500]] + key: Mapped[Optional[str_8000]] + task_source: Mapped["Task"] = relationship( backref="file_gpg_conn", lazy=True, foreign_keys="Task.file_gpg_id", @@ -468,44 +355,32 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionFtp(db.Model): - """Table conntaining sftp connection strings.""" + """Table conntaining ftp connection strings.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection_ftp" - id: Optional[int] = None - connection_id: Optional[int] = None - name: Optional[str] = None - address: Optional[str] = None - path: Optional[str] = None - username: Optional[str] = None - password: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(500), nullable=True) - address = db.Column(db.String(500), nullable=True) - path = db.Column(db.String(500), nullable=True) - username = db.Column(db.String(500), nullable=True) - password = db.Column(db.Text, nullable=True) - task = db.relationship( - "Task", + + id: Mapped[intpk] + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_500]] + address: Mapped[Optional[str_500]] + path: Mapped[Optional[str_500]] + username: Mapped[Optional[str_500]] + password: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + task: Mapped["Task"] = relationship( backref="destination_ftp_conn", lazy=True, foreign_keys="Task.destination_ftp_id", ) - task_source = db.relationship( - "Task", backref="source_ftp_conn", lazy=True, foreign_keys="Task.source_ftp_id" + task_source: Mapped["Task"] = relationship( + backref="source_ftp_conn", lazy=True, foreign_keys="Task.source_ftp_id" ) - query_source = db.relationship( - "Task", backref="query_ftp_conn", lazy=True, foreign_keys="Task.query_ftp_id" + query_source: Mapped["Task"] = relationship( + backref="query_ftp_conn", lazy=True, foreign_keys="Task.query_ftp_id" ) - processing_source = db.relationship( - "Task", + processing_source: Mapped["Task"] = relationship( backref="processing_ftp_conn", lazy=True, foreign_keys="Task.processing_ftp_id", @@ -516,48 +391,33 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionSmb(db.Model): - """Table conntaining sftp connection strings.""" + """Table conntaining smb connection strings.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection_smb" - id: Optional[int] = None - connection_id: Optional[int] = None - name: Optional[str] = None - share_name: Optional[str] = None - path: Optional[str] = None - username: Optional[str] = None - password: Optional[str] = None - server_ip: Optional[str] = None - server_name: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(120), nullable=True) - share_name = db.Column(db.String(500), nullable=True) - path = db.Column(db.String(1000), nullable=True) - username = db.Column(db.String(500), nullable=True) - password = db.Column(db.Text, nullable=True) - server_ip = db.Column(db.String(500), nullable=True) - server_name = db.Column(db.String(500), nullable=True) - task = db.relationship( - "Task", + + id: Mapped[intpk] + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_120]] + share_name: Mapped[Optional[str_500]] + path: Mapped[Optional[str_1000]] + username: Mapped[Optional[str_500]] + password: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + server_name: Mapped[Optional[str_500]] + task: Mapped["Task"] = relationship( backref="destination_smb_conn", lazy=True, foreign_keys="Task.destination_smb_id", ) - task_source = db.relationship( - "Task", backref="source_smb_conn", lazy=True, foreign_keys="Task.source_smb_id" + task_source: Mapped["Task"] = relationship( + backref="source_smb_conn", lazy=True, foreign_keys="Task.source_smb_id" ) - query_source = db.relationship( - "Task", backref="query_smb_conn", lazy=True, foreign_keys="Task.query_smb_id" + query_source: Mapped["Task"] = relationship( + backref="query_smb_conn", lazy=True, foreign_keys="Task.query_smb_id" ) - processing_source = db.relationship( - "Task", + processing_source: Mapped["Task"] = relationship( backref="processing_smb_conn", lazy=True, foreign_keys="Task.processing_smb_id", @@ -568,431 +428,272 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionDatabaseType(db.Model): """Lookup table of task source database types.""" __tablename__ = "connection_database_type" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(120), nullable=True) - database = db.relationship("ConnectionDatabase", backref="database_type", lazy=True) + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + database: Mapped["ConnectionDatabase"] = relationship(backref="database_type", lazy=True) -@dataclass class ConnectionDatabase(db.Model): """List of task source databases and connection strings.""" __tablename__ = "connection_database" - id: Optional[int] = None - type_id: Optional[int] = None - name: Optional[str] = None - connection_string: Optional[str] = None - connection_id: Optional[int] = None - timeout: Optional[int] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - type_id = db.Column( - db.Integer, db.ForeignKey(ConnectionDatabaseType.id), nullable=True, index=True - ) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(500), nullable=True) - connection_string = db.Column(db.Text, nullable=True) - timeout = db.Column(db.Integer, nullable=True) - task_source = db.relationship( - "Task", + + id: Mapped[intpk] + type_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(ConnectionDatabaseType.id)) + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_500]] + connection_string: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + timeout: Mapped[Optional[int]] + task_source: Mapped["Task"] = relationship( backref="source_database_conn", lazy=True, foreign_keys="Task.source_database_id", ) + connection: Mapped["Connection"] = relationship(back_populates="database") def __str__(self) -> str: """Get string of name.""" return str(self.name) -@dataclass class TaskDestinationFileType(db.Model): """Lookup table of task destination file types.""" __tablename__ = "task_destination_file_type" - id: Optional[int] = None - name: Optional[str] = None - ext: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(120), nullable=True) - ext = db.Column(db.String(120), nullable=False) - task = db.relationship("Task", backref="file_type", lazy=True) + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + ext: Mapped[Optional[str_120]] = mapped_column(nullable=False) + task: Mapped["Task"] = relationship(backref="file_type", lazy=True) -@dataclass class QuoteLevel(db.Model): """Lookup table for python quote levels.""" __tablename__ = "quote_level" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(120), nullable=True) - task = db.relationship("Task", backref="destination_file_quote_level", lazy=True) + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + task: Mapped["Task"] = relationship(backref="destination_file_quote_level", lazy=True) -@dataclass class ProjectParam(db.Model): """Task parameters.""" __tablename__ = "project_param" - id: Optional[int] = None - key: Optional[str] = None - value: Optional[str] = None - sensitive: Optional[int] = None - project_id: Optional[int] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - key = db.Column(db.String(500), nullable=True) - value = db.Column(db.String(8000), nullable=True) - project_id = db.Column( - db.Integer, db.ForeignKey(Project.id), nullable=True, index=True - ) - sensitive = db.Column(db.Integer, nullable=True, index=True) + + id: Mapped[intpk] + key: Mapped[Optional[str_500]] + value: Mapped[Optional[str_8000]] + project_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Project.id), index=True) + sensitive: Mapped[Optional[int]] = mapped_column(index=True) -@dataclass class Task(db.Model): """Table containing task details.""" # pylint: disable=too-many-instance-attributes __tablename__ = "task" - # general information - id: Optional[int] = None - name: Optional[str] = None - project_id: Optional[int] = None - status_id: Optional[int] = None - enabled: Optional[int] = None - order: Optional[int] = None - last_run: Optional[datetime.datetime] = None - next_run: Optional[datetime.datetime] = None - last_run_job_id: Optional[str] = None - created: Optional[datetime.datetime] = None - creator_id: Optional[int] = None - updated: Optional[datetime.datetime] = None - updater_id: Optional[int] = None - - # data source - source_type_id: Optional[int] = None - source_database_id: Optional[int] = None - - source_query_type_id: Optional[int] = None - source_query_include_header: Optional[int] = None - source_git: Optional[str] = None - source_devops: Optional[str] = None - source_url: Optional[str] = None - source_code: Optional[str] = None - - source_require_sql_output: Optional[int] = None - - query_smb_id: Optional[int] = None - query_smb_file: Optional[str] = None - query_sftp_id: Optional[int] = None - query_sftp_file: Optional[str] = None - query_ftp_id: Optional[int] = None - query_ftp_file: Optional[str] = None - query_params: Optional[str] = None - - source_smb_delimiter: Optional[str] = None - source_smb_ignore_delimiter: Optional[int] = None - source_smb_file: Optional[str] = None - source_smb_id: Optional[int] = None - - source_ftp_file: Optional[str] = None - source_ftp_delimiter: Optional[str] = None - source_ftp_ignore_delimiter: Optional[int] = None - source_ftp_id: Optional[int] = None - - source_sftp_file: Optional[str] = None - source_sftp_delimiter: Optional[str] = None - source_sftp_ignore_delimiter: Optional[int] = None - source_sftp_id: Optional[int] = None - - source_ssh_id: Optional[int] = None - - # caching - source_cache: Optional[str] = None - enable_source_cache: Optional[int] = None - - # processing - processing_type_id: Optional[int] = None - processing_smb_id: Optional[int] = None - processing_smb_file: Optional[str] = None - processing_sftp_id: Optional[int] = None - processing_sftp_file: Optional[str] = None - processing_ftp_id: Optional[int] = None - processing_ftp_file: Optional[str] = None - processing_code: Optional[str] = None - processing_url: Optional[str] = None - processing_git: Optional[str] = None - processing_devops: Optional[str] = None - processing_command: Optional[str] = None - - # destination - destination_file_delimiter: Optional[str] = None - destination_file_name: Optional[str] = None - destination_ignore_delimiter: Optional[int] = None - destination_file_line_terminator: Optional[str] = None - destination_quote_level_id: Optional[int] = None - - destination_create_zip: Optional[int] = None - destination_zip_name: Optional[str] = None - - destination_file_type_id: Optional[int] = None - - destination_sftp: Optional[int] = None - destination_sftp_overwrite: Optional[int] = None - destination_sftp_id: Optional[int] = None - destination_sftp_dont_send_empty_file: Optional[int] = None - - destination_ftp: Optional[int] = None - destination_ftp_overwrite: Optional[int] = None - destination_ftp_id: Optional[int] = None - destination_ftp_dont_send_empty_file: Optional[int] = None - - destination_smb: Optional[int] = None - destination_smb_overwrite: Optional[int] = None - destination_smb_id: Optional[int] = None - destination_smb_dont_send_empty_file: Optional[int] = None - - file_gpg: Optional[int] = None - file_gpg_id: Optional[int] = None - - email_completion: Optional[int] = None - email_completion_log: Optional[int] = None - email_completion_file: Optional[int] = None - email_completion_file_embed: Optional[int] = None - email_completion_dont_send_empty_file: Optional[int] = None - email_completion_recipients: Optional[str] = None - email_completion_message: Optional[str] = None - - email_error: Optional[int] = None - email_error_recipients: Optional[str] = None - email_error_message: Optional[str] = None - - max_retries: Optional[int] = None - - est_duration: Optional[int] = None # general information - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(1000), nullable=True) - project_id = db.Column( - db.Integer, db.ForeignKey(Project.id), nullable=True, index=True - ) - status_id = db.Column( - db.Integer, db.ForeignKey(TaskStatus.id), nullable=True, index=True - ) - enabled = db.Column(db.Integer, nullable=True, index=True) - order = db.Column(db.Integer, nullable=True, index=True) - last_run = db.Column(db.DateTime, nullable=True) - last_run_job_id = db.Column(db.String(30), nullable=True, index=True) - next_run = db.Column(db.DateTime, nullable=True, index=True) - created = db.Column(db.DateTime, server_default=functions.now(), index=True) - creator_id = db.Column( - db.Integer, db.ForeignKey(User.id), nullable=True, index=True - ) - updated = db.Column(db.DateTime, onupdate=functions.now(), index=True) - updater_id = db.Column( - db.Integer, db.ForeignKey(User.id), nullable=True, index=True - ) + id: Mapped[intpk] + name: Mapped[Optional[str_1000]] + project_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Project.id), index=True) + status_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(TaskStatus.id)) + enabled: Mapped[Optional[int]] = mapped_column(index=True) + order: Mapped[Optional[int]] = mapped_column(index=True) + last_run: Mapped[Optional[datetime.datetime]] + last_run_job_id: Mapped[Optional[str_30]] = mapped_column(index=True) + next_run: Mapped[Optional[datetime.datetime]] = mapped_column(index=True) + created: Mapped[Optional[timestamp]] = mapped_column(index=True) + creator_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(User.id), index=True) + updated: Mapped[Optional[datetime.datetime]] = mapped_column( + onupdate=functions.now(), index=True + ) + updater_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(User.id), index=True) """ data source """ # db/sftp/smb/ftp - source_type_id = db.Column( - db.Integer, db.ForeignKey(TaskSourceType.id), nullable=True, index=True + source_type_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(TaskSourceType.id), index=True ) # source locations # git/url/code/sftp/ftp/smb/devops - source_query_type_id = db.Column( - db.Integer, db.ForeignKey(TaskSourceQueryType.id), nullable=True, index=True + source_query_type_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(TaskSourceQueryType.id), index=True ) - source_query_include_header = db.Column(db.Integer, nullable=True) + source_query_include_header: Mapped[Optional[int]] - source_require_sql_output = db.Column(db.Integer, nullable=True) + source_require_sql_output: Mapped[Optional[int]] # source git - source_git = db.Column(db.String(1000), nullable=True) + source_git: Mapped[Optional[str_1000]] # source devops - source_devops = db.Column(db.String(1000), nullable=True) + source_devops: Mapped[Optional[str_1000]] # source web url - source_url = db.Column(db.String(1000), nullable=True) + source_url: Mapped[Optional[str_1000]] # source typed code - source_code = db.Column(db.Text, nullable=True) + source_code: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) # cached source query - source_cache = db.Column(db.Text, nullable=True) - enable_source_cache = db.Column(db.Integer, nullable=True, index=True) + source_cache: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + enable_source_cache: Mapped[Optional[int]] = mapped_column(index=True) - query_smb_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSmb.id), nullable=True, index=True + query_smb_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSmb.id), index=True ) - query_smb_file = db.Column(db.String(1000), nullable=True) + query_smb_file: Mapped[Optional[str_1000]] - query_sftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSftp.id), nullable=True, index=True + query_sftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSftp.id), index=True ) - query_sftp_file = db.Column(db.String(1000), nullable=True) + query_sftp_file: Mapped[Optional[str_1000]] - query_ftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionFtp.id), nullable=True, index=True + query_ftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionFtp.id), index=True ) - query_ftp_file = db.Column(db.String(1000), nullable=True) + query_ftp_file: Mapped[Optional[str_1000]] - query_params = db.Column(db.String(8000), nullable=True) + query_params: Mapped[Optional[str_8000]] # source smb sql file - source_smb_file = db.Column(db.String(1000), nullable=True) - source_smb_delimiter = db.Column(db.String(10), nullable=True) - source_smb_ignore_delimiter = db.Column(db.Integer, nullable=True) - source_smb_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSmb.id), nullable=True, index=True + source_smb_file: Mapped[Optional[str_1000]] + source_smb_ignore_subfolders: Mapped[Optional[int]] + source_smb_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSmb.id), index=True ) # source ftp sql file - source_ftp_file = db.Column(db.String(1000), nullable=True) - source_ftp_delimiter = db.Column(db.String(10), nullable=True) - source_ftp_ignore_delimiter = db.Column(db.Integer, nullable=True) - source_ftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionFtp.id), nullable=True, index=True + source_ftp_file: Mapped[Optional[str_1000]] + source_ftp_delimiter: Mapped[Optional[str_10]] + source_ftp_ignore_delimiter: Mapped[Optional[int]] + source_ftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionFtp.id), index=True ) # source sftp sql file - source_sftp_file = db.Column(db.String(1000), nullable=True) - source_sftp_delimiter = db.Column(db.String(10), nullable=True) - source_sftp_ignore_delimiter = db.Column(db.Integer, nullable=True) - source_sftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSftp.id), nullable=True, index=True + source_sftp_file: Mapped[Optional[str_1000]] + source_sftp_delimiter: Mapped[Optional[str_10]] + source_sftp_ignore_delimiter: Mapped[Optional[int]] + source_sftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSftp.id), index=True ) # source database - source_database_id = db.Column( - db.Integer, db.ForeignKey(ConnectionDatabase.id), nullable=True, index=True + source_database_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionDatabase.id), index=True ) - source_ssh_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSsh.id), nullable=True, index=True + source_ssh_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSsh.id), index=True ) """ processing script source """ - processing_type_id = db.Column( - db.Integer, db.ForeignKey(TaskProcessingType.id), nullable=True, index=True - ) + processing_type_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(TaskProcessingType.id)) - processing_smb_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSmb.id), nullable=True, index=True + processing_smb_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSmb.id), index=True ) - processing_smb_file = db.Column(db.String(1000), nullable=True) + processing_smb_file: Mapped[Optional[str_1000]] - processing_sftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSftp.id), nullable=True, index=True + processing_sftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSftp.id), index=True ) - processing_sftp_file = db.Column(db.String(1000), nullable=True) + processing_sftp_file: Mapped[Optional[str_1000]] - processing_ftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionFtp.id), nullable=True, index=True + processing_ftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionFtp.id), index=True ) - processing_ftp_file = db.Column(db.String(1000), nullable=True) + processing_ftp_file: Mapped[Optional[str_1000]] - processing_code = db.Column(db.String(8000), nullable=True) - processing_url = db.Column(db.String(1000), nullable=True) - processing_git = db.Column(db.String(1000), nullable=True) - processing_devops = db.Column(db.String(1000), nullable=True) - processing_command = db.Column(db.String(1000), nullable=True) + processing_code: Mapped[Optional[str_8000]] + processing_url: Mapped[Optional[str_1000]] + processing_git: Mapped[Optional[str_1000]] + processing_devops: Mapped[Optional[str_1000]] + processing_command: Mapped[Optional[str_1000]] """ destination """ # destination file - destination_file_name = db.Column(db.String(1000), nullable=True) - destination_file_delimiter = db.Column(db.String(10), nullable=True) - destination_ignore_delimiter = db.Column(db.Integer, nullable=True) - destination_file_line_terminator = db.Column(db.String(10), nullable=True) + destination_file_name: Mapped[Optional[str_1000]] + destination_file_delimiter: Mapped[Optional[str_10]] + destination_ignore_delimiter: Mapped[Optional[int]] + destination_file_line_terminator: Mapped[Optional[str_10]] # destination zip archive - destination_create_zip = db.Column(db.Integer, nullable=True) - destination_zip_name = db.Column(db.String(1000), nullable=True) + destination_create_zip: Mapped[Optional[int]] + destination_zip_name: Mapped[Optional[str_1000]] # csv/txt/other - destination_file_type_id = db.Column( - db.Integer, db.ForeignKey(TaskDestinationFileType.id), nullable=True, index=True + destination_file_type_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(TaskDestinationFileType.id) ) # save to sftp server - destination_sftp = db.Column(db.Integer, nullable=True, index=True) - destination_sftp_overwrite = db.Column(db.Integer, nullable=True) - destination_sftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSftp.id), nullable=True, index=True + destination_sftp: Mapped[Optional[int]] = mapped_column(index=True) + destination_sftp_overwrite: Mapped[Optional[int]] + destination_sftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSftp.id), index=True ) - destination_sftp_dont_send_empty_file = db.Column(db.Integer, nullable=True) + destination_sftp_dont_send_empty_file: Mapped[Optional[int]] # save to ftp server - destination_ftp = db.Column(db.Integer, nullable=True, index=True) - destination_ftp_overwrite = db.Column(db.Integer, nullable=True) - destination_ftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionFtp.id), nullable=True, index=True + destination_ftp: Mapped[Optional[int]] = mapped_column(index=True) + destination_ftp_overwrite: Mapped[Optional[int]] + destination_ftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionFtp.id), index=True ) - destination_ftp_dont_send_empty_file = db.Column(db.Integer, nullable=True) - + destination_ftp_dont_send_empty_file: Mapped[Optional[int]] # save to smb server - destination_smb = db.Column(db.Integer, nullable=True, index=True) - destination_smb_overwrite = db.Column(db.Integer, nullable=True) - destination_smb_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSmb.id), nullable=True, index=True + destination_smb: Mapped[Optional[int]] = mapped_column(index=True) + destination_smb_overwrite: Mapped[Optional[int]] + destination_smb_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSmb.id), index=True ) - destination_smb_dont_send_empty_file = db.Column(db.Integer, nullable=True) + destination_smb_dont_send_empty_file: Mapped[Optional[int]] - file_gpg = db.Column(db.Integer, nullable=True, index=True) - file_gpg_id = db.Column( - db.Integer, db.ForeignKey(ConnectionGpg.id), nullable=True, index=True - ) + file_gpg: Mapped[Optional[int]] = mapped_column(index=True) + file_gpg_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(ConnectionGpg.id), index=True) - destination_quote_level_id = db.Column( - db.Integer, db.ForeignKey(QuoteLevel.id), nullable=True, index=True + destination_quote_level_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(QuoteLevel.id), index=True ) """ email """ # completion email - email_completion = db.Column(db.Integer, nullable=True, index=True) - email_completion_log = db.Column(db.Integer, nullable=True) - email_completion_file = db.Column(db.Integer, nullable=True) - email_completion_file_embed = db.Column(db.Integer, nullable=True) - email_completion_recipients = db.Column(db.String(1000), nullable=True) - email_completion_subject = db.Column(db.String(8000), nullable=True) - email_completion_message = db.Column(db.String(8000), nullable=True) - email_completion_dont_send_empty_file = db.Column(db.Integer, nullable=True) + email_completion: Mapped[Optional[int]] = mapped_column(index=True) + email_completion_log: Mapped[Optional[int]] + email_completion_file: Mapped[Optional[int]] + email_completion_file_embed: Mapped[Optional[int]] + email_completion_recipients: Mapped[Optional[str_1000]] + email_completion_subject: Mapped[Optional[str_8000]] + email_completion_message: Mapped[Optional[str_8000]] + email_completion_dont_send_empty_file: Mapped[Optional[int]] # error email - email_error = db.Column(db.Integer, nullable=True, index=True) - email_error_recipients = db.Column(db.String(1000), nullable=True) - email_error_subject = db.Column(db.String(8000), nullable=True) - email_error_message = db.Column(db.String(8000), nullable=True) + email_error: Mapped[Optional[int]] + email_error_recipients: Mapped[Optional[str_1000]] + email_error_subject: Mapped[Optional[str_8000]] + email_error_message: Mapped[Optional[str_8000]] # rerun on fail - max_retries = db.Column(db.Integer, nullable=True, index=True) + max_retries: Mapped[Optional[int]] = mapped_column(index=True) - est_duration = db.Column(db.Integer, nullable=True, index=True) + est_duration: Mapped[Optional[int]] = mapped_column(index=True) # tasklog link - task = db.relationship( - "TaskLog", + task: Mapped[List["TaskLog"]] = relationship( backref="task", lazy=True, cascade="all, delete, delete-orphan", @@ -1000,8 +701,7 @@ class Task(db.Model): ) # taskparams link - params = db.relationship( - "TaskParam", + params: Mapped[List["TaskParam"]] = relationship( backref="task", lazy=True, cascade="all, delete, delete-orphan", @@ -1009,8 +709,7 @@ class Task(db.Model): ) # taskfiles link - files = db.relationship( - "TaskFile", + files: Mapped[List["TaskFile"]] = relationship( backref="task", lazy=True, cascade="all, delete, delete-orphan", @@ -1028,70 +727,46 @@ class TaskLog(db.Model): # pylint: disable=too-many-instance-attributes __tablename__ = "task_log" - id: Optional[int] = None - task_id: Optional[int] = None - status_id: Optional[int] = None - job_id: Optional[str] = None - message: Optional[str] = None - error: Optional[int] = 0 - status_date: Optional[datetime.datetime] = None - - job_id = db.Column(db.String(1000), nullable=True, index=True) - id = db.Column(db.Integer, primary_key=True, index=True) - task_id = db.Column(db.Integer, db.ForeignKey(Task.id), nullable=True, index=True) - status_id = db.Column( - db.Integer, db.ForeignKey(TaskStatus.id), nullable=True, index=True - ) - message = db.Column(db.Text, nullable=True) - status_date = db.Column(db.DateTime, default=datetime.datetime.now, index=True) - error = db.Column(db.Integer, nullable=True, index=True) - __table_args__ = ( - db.Index("ix_task_log_status_date_error", "status_date", "error"), + job_id: Mapped[Optional[str_1000]] = mapped_column(index=True) + id: Mapped[intpk] + task_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Task.id), index=True) + status_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(TaskStatus.id), index=True) + message: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + status_date: Mapped[Optional[datetime.datetime]] = mapped_column( + default=datetime.datetime.now, index=True ) + error: Mapped[Optional[int]] = mapped_column(index=True) + + __table_args__ = (db.Index("ix_task_log_status_date_error", "status_date", "error"),) -@dataclass class TaskFile(db.Model): """Table containing paths to task backup files.""" __tablename__ = "task_file" - id: Optional[int] = None - name: Optional[str] = None - task_id: Optional[int] = None - job_id: Optional[str] = None - size: Optional[str] = None - file_hash: Optional[str] = None - path: Optional[str] = None - created: Optional[datetime.datetime] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(1000), nullable=True, index=True) - task_id = db.Column(db.Integer, db.ForeignKey(Task.id), nullable=True, index=True) - job_id = db.Column(db.String(1000), nullable=True, index=True) - size = db.Column(db.String(200), nullable=True, index=True) - path = db.Column(db.String(1000), nullable=True, index=True) - file_hash = db.Column(db.String(1000), nullable=True) - created = db.Column(db.DateTime, default=datetime.datetime.now, index=True) - - __table_args__ = ( - db.Index("ix_task_file_id_task_id_job_id", "id", "task_id", "job_id"), + + id: Mapped[intpk] + name: Mapped[Optional[str_1000]] = mapped_column(index=True) + task_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Task.id), index=True) + job_id: Mapped[Optional[str_1000]] = mapped_column(index=True) + size: Mapped[Optional[str_200]] = mapped_column(index=True) + path: Mapped[Optional[str_1000]] = mapped_column(index=True) + file_hash: Mapped[Optional[str_1000]] + created: Mapped[Optional[datetime.datetime]] = mapped_column( + default=datetime.datetime.now, index=True ) + __table_args__ = (db.Index("ix_task_file_id_task_id_job_id", "id", "task_id", "job_id"),) + -@dataclass class TaskParam(db.Model): """Task parameters.""" __tablename__ = "task_param" - id: Optional[int] = None - key: Optional[str] = None - value: Optional[str] = None - sensitive: Optional[int] = None - task_id: Optional[int] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - key = db.Column(db.String(500), nullable=True) - value = db.Column(db.String(8000), nullable=True) - task_id = db.Column(db.Integer, db.ForeignKey(Task.id), nullable=True, index=True) - sensitive = db.Column(db.Integer, nullable=True, index=True) + + id: Mapped[intpk] + key: Mapped[Optional[str_500]] + value: Mapped[Optional[str_8000]] + task_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Task.id), index=True) + sensitive: Mapped[Optional[int]] = mapped_column(index=True) diff --git a/web/seed.py b/web/seed.py index f63b57cf..91bed61b 100644 --- a/web/seed.py +++ b/web/seed.py @@ -14,6 +14,7 @@ flask seed_demo """ + # pylint: disable=C0301 import sys diff --git a/web/static/assets/base.scss b/web/static/assets/base.scss index 15e88861..2666542d 100644 --- a/web/static/assets/base.scss +++ b/web/static/assets/base.scss @@ -1,7 +1,50 @@ -@use '../../../node_modules/@fontsource/inter/scss/mixins' as Inter; -@use '../../../node_modules/@fontsource/rasa/scss/mixins' as Rasa; +@use 'sass:math'; +@use 'sass:meta'; +@use '../../../node_modules/@fontsource-utils/scss/src/mixins.scss' as + fontsource; +@use '../../../node_modules/@fontsource-variable/inter/scss/metadata.scss' as + inter; +@use '../../../node_modules/@fontsource-variable/rasa/scss/metadata.scss' as + rasa; +@use '../../../node_modules/bulma/sass/utilities' + with( + $family-primary: + 'Inter, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Lucida Sans Unicode, Lucida Grande, Arial, sans-serif', + $cssvars-prefix: '' + ); +@use '../../../node_modules/bulma/sass/elements' with ( + $title-family: 'Rasa, Georgia, Times New Roman, serif' +); +@forward '../../../node_modules/bulma/sass/base'; +@use '../../../node_modules/bulma/sass/components' with ( + $breadcrumb-item-active-color: #363636 +); + +@forward '../../../node_modules/bulma/sass/layout'; +@forward '../../../node_modules/bulma/sass/form'; +@forward '../../../node_modules/bulma/sass/grid'; +@forward '../../../node_modules/bulma/sass/helpers'; + +// Import the themes so that all CSS variables have a value +@forward '../../../node_modules/bulma/sass/index'; +@forward '../../../node_modules/bulma/sass/utilities/mixins'; -@include Inter.faces( +@forward 'bulma-switch'; +@forward 'bulma-tooltip'; +@forward 'bulma-checkradio'; +/* purgecss start ignore */ +@use '../fonts/fontawesome/stylesheet'; +@forward '../lib/codemirror/codemirror'; +@forward '../lib/codemirror/ttcn'; +@forward '../lib/codemirror/simplescrollbars'; +@forward '../lib/scroll/scroll'; +@forward '../lib/prism/prism'; +@forward '../lib/table/table'; +@forward '../lib/prism/prism_line_numbers'; +@forward '../lib/flatpickr/flatpickr'; + +@include fontsource.faces( + $metadata: inter.$metadata, $family: 'Inter', $subsets: latin, $weights: ( @@ -15,7 +58,8 @@ $display: swap ); -@include Rasa.faces( +@include fontsource.faces( + $metadata: rasa.$metadata, $family: 'Rasa', $subsets: latin, $weights: 600, @@ -23,41 +67,6 @@ $display: swap ); -$title-family: 'Rasa', 'Georgia', 'Times New Roman', serif; - -$family-sans-serif: - 'Inter', - -apple-system, - 'BlinkMacSystemFont', - 'Segoe UI', - 'Roboto', - 'Helvetica Neue', - 'Lucida Sans Unicode', - 'Lucida Grande', - 'Arial', - sans-serif, - 'Apple Color Emoji', - 'Segoe UI Emoji', - 'Segoe UI Symbol'; - -@import '../../../node_modules/bulma-checkradio/src/sass'; -@import '../../../node_modules/bulma/bulma'; - -@import '../../../node_modules/bulma-switch/src/sass'; -@import '../../../node_modules/bulma-tooltip/src/sass'; - -/* purgecss start ignore */ -@import '../fonts/fontawesome/stylesheet'; -@import '../lib/codemirror/codemirror'; -@import '../lib/codemirror/ttcn'; -@import '../lib/codemirror/simplescrollbars'; -@import '../lib/scroll/scroll'; -@import '../lib/prism/prism'; -@import '../lib/table/table'; -@import '../lib/prism/prism_line_numbers'; -@import '../lib/flatpickr/flatpickr'; -@import '../lib/table/table'; - .column { min-width: 0px; } @@ -79,25 +88,25 @@ $family-sans-serif: } a.navbar-item { &:hover { - color: $grey-darker; + color: utilities.$grey-darker; } } .has-dropdown { .navbar-link { &:hover { - color: $grey-darker; + color: utilities.$grey-darker; } } } } -@media screen and (min-width: $desktop) { +@media screen and (min-width: utilities.$desktop) { .atlas-navbar .navbar-start { padding-top: 0 !important; } } -@media screen and (min-width: $desktop) { +@media screen and (min-width: utilities.$desktop) { .hide-desktop { display: none !important; } @@ -116,13 +125,13 @@ $family-sans-serif: min-width: max(50vw, 100%); max-width: 800px; display: none; - border-radius: $radius; + border-radius: utilities.$radius; z-index: 999999; max-height: calc(100vh - 145px); overflow-y: auto; } -@media screen and (min-width: $desktop) { +@media screen and (min-width: utilities.$desktop) { #search-results { min-width: max(30vw, 100%); } @@ -135,8 +144,7 @@ $family-sans-serif: #search-results:active, #search-results.search-focus { display: block; - box-shadow: $shadow; - border: 1px solid $border; + border: 1px solid utilities.$border; } #search-results .panel-block:first-of-type { @@ -163,8 +171,8 @@ $family-sans-serif: } #search-results em { - background-color: $info-light; - color: $info; + background-color: rgb(239, 245, 251); + color: rgb(62, 142, 208); } /*** tabs ***/ @@ -279,7 +287,7 @@ input.transparent { content: attr(data-attr); position: absolute; bottom: -30px; - background: $white; + background: utilities.$white; right: 0; left: 0; } @@ -287,7 +295,7 @@ input.transparent { .em-ScaleBar { height: 1px; width: 100%; - background: $grey-light; + background: utilities.$grey-light; position: relative; margin-bottom: 50px; &::before { @@ -295,9 +303,9 @@ input.transparent { position: absolute; top: 50%; transform: translateY(-50%); - background: $white; + background: utilities.$white; padding-right: 10px; - color: $grey-dark; + color: utilities.$grey-dark; } &:last-of-type { background: transparent; @@ -322,4 +330,22 @@ article.message a { .em-ajaxContent.is-inline div { display: inline-block; } +/* sticky task header */ +#sticky-task-header { + position: fixed; + top: 0; + left: 0; + right: 0; + z-index: 1000; + opacity: 0; + transform: translateY(-100%); + transition: all 0.3s ease; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + + &.is-visible { + opacity: 1; + transform: translateY(0); + } +} + /* purgecss end ignore */ diff --git a/web/static/assets/bulma-checkradio.sass b/web/static/assets/bulma-checkradio.sass new file mode 100644 index 00000000..ba649743 --- /dev/null +++ b/web/static/assets/bulma-checkradio.sass @@ -0,0 +1,383 @@ +@use "sass:math" +@use "sass:color" +@use "sass:list" +@use "../../../node_modules/bulma/sass/utilities/index" as utilities + +$checkbox-radius: utilities.$radius !default +$checkbox-border: .1rem solid utilities.$grey-lighter !default +$checkbox-block-background: utilities.$white-ter !default +$checkbox-checked-width: .1rem !default +$checkradio-focus: 1px dotted utilities.$grey-light !default +$checkradio-top-offset: 0rem !default + +=checkbox-size($size) + $newSize: $size * 1.5 + $height: math.div($newSize, 2.5) + $width: math.div($newSize, 4) + + + label + font-size: $size + padding-left: $size * 2 + &::before, + &:before + width: $newSize + height: $newSize + &::after, + &:after + width: $width + height: $height + top: ( ( math.div($newSize, 2) ) - ( math.div($height, 2) ) ) * 0.9 + left: $height + + &.is-block + + label + &::before, + &:before + width: 1.25 * $size + height: 1.25 * $size + left: .175rem + top: .175rem + &::after, + &:after + top: .2rem + $size * 0.125 + left: .2rem + $size * 0.45 + + &.is-rtl + + label + padding-left: 0 + padding-right: $size * 2 + &::after, + &:after + left: auto + right: $height + +// Use a mixin to define all ratios in the same spot +=radio-size($size) + $newSize: $size * 1.5 + $height: $newSize + $width: $newSize + + + label + font-size: $size + line-height: $newSize + padding-left: $size * 2 + &::before, + &:before, + &::after, + &:after + width: $width + height: $height + &.is-rtl + + label + padding-right: $size * 2 + +.is-checkradio[type="radio"], +.is-checkradio[type="checkbox"] + outline: 0 + user-select: none + display: none + position: absolute + opacity: 0 + + + label + position: relative + display: initial + cursor: pointer + vertical-align: middle + margin: .5em + padding: .2rem .5rem .2rem 0 + border-radius: $checkbox-radius + &:first-of-type + margin-left: 0 + + &:hover + &::before, + &:before + animation-duration: 0.4s + animation-fill-mode: both + animation-name: hover-color + + &::before, + &:before + position: absolute + left: 0 + top: $checkradio-top-offset + content: '' + border: $checkbox-border + + &::after, + &:after + position: absolute + display: none + content: '' + top: $checkradio-top-offset + + &.is-rtl + + label + margin-right: 0rem + margin-left: 0.5rem + &::before, + &:before + left: auto + right: 0 + + &:focus + + label + &::before, + &:before + outline: $checkradio-focus + + &:hover:not([disabled]) + + label + &::before, + &:before + border-color: utilities.$primary !important + + &:checked + + label + &::before, + &:before + border: $checkbox-border + &[disabled] + cursor: not-allowed + + label + opacity: 0.5 + + label + &::before, + &:before + animation-name: none + &::after, + &:after + display: inline-block + + &[disabled] + cursor: not-allowed + + label + opacity: 0.5 + cursor: not-allowed + &:hover, + &:before, + &::before, + &::after, + &:after + cursor: not-allowed + + &:hover + cursor: not-allowed + &::before, + &:before + animation-name: none + + &::before, + &:before + cursor: not-allowed + + &::after, + &:after + cursor: not-allowed + + &.has-no-border + + label + &::before, + &:before + border: none !important + + &.is-block + display: none !important + + label + width: 100% !important + background: $checkbox-block-background + color: findColorInvert( $checkbox-block-background ) + padding-right: .75em + &:hover:not([disabled]) + + label + background: color.adjust($checkbox-block-background, $lightness: -5%) + + +.is-checkradio[type="checkbox"] + + label + &::before, + &:before + border-radius: $checkbox-radius + + &::after, + &:after + box-sizing: border-box + transform: translateY($checkradio-top-offset) rotate(45deg) + border-width: $checkbox-checked-width + border-style: solid + border-color: utilities.$primary + border-top: 0 + border-left: 0 + + &.is-circle + + label + &::before, + &:before + border-radius: 50% + + +checkbox-size(utilities.$size-normal) + &.is-small + +checkbox-size(utilities.$size-small) + &.is-medium + +checkbox-size(utilities.$size-medium) + &.is-large + +checkbox-size(utilities.$size-large) + + @each $name, $pair in utilities.$colors + $color: list.nth($pair, 1) + $color-invert: null + // Check if $pair has at least two elements before accessing the second one + @if list.length($pair) > 1 + $color-invert: list.nth($pair, 2) + + &.is-#{$name} + &.has-background-color + + label + &::before, + &:before + border-color: transparent !important + background-color: $color !important + + &:hover:not([disabled]) + + label + &::before, + &:before + border-color: $color !important + + &:checked + + label + &::after, + &:after + border-color: $color !important + + &.has-background-color + + label + &::before, + &:before + border-color: transparent !important + background-color: $color !important + + &::after, + &:after + border-color: if($color-invert != null, $color-invert, $color) !important + background-color: $color !important + + &.is-block + &:hover:not([disabled]) + + label + &::after, + &:after, + &::before, + &:before + border-color: $color !important + + &:checked + + label + color: if($color-invert != null, $color-invert, $color) + border-color: $color !important + background: $color + + &::after, + &:after + border-color: if($color-invert != null, $color-invert, $color) !important + + &:hover:not([disabled]) + + label + background: color.adjust($color, $lightness: -5%) + &::after, + &:after, + &::before, + &:before + border-color: if($color-invert != null, color.adjust($color-invert, $lightness: -5%), $color) !important + + + &:indeterminate + + label + &::after, + &:after + display: inline-block + transform: rotate(90deg) + border-bottom: none + @each $name, $pair in utilities.$colors + $color: list.nth($pair, 1) + &.is-#{$name} + + label + &::after, + &:after + border-color: $color + +.is-checkradio[type="radio"] + + label + &::before, + &:before + border-radius: 50% + &::after, + &:after + border-radius: 50% + background: utilities.$primary + left: 0 + transform: scale(0.5) + + &:checked + &.has-background-color + + label + &::before, + &:before + border-color: utilities.$text !important + background-color: utilities.$text !important + &::after, + &:after + border-color: utilities.$text !important + background-color: utilities.$text !important + + &.is-rtl + + label + padding-left: 0 + &::after, + &:after + left: auto + right: 0 + + +radio-size(utilities.$size-normal) + &.is-small + +radio-size(utilities.$size-small) + &.is-medium + +radio-size(utilities.$size-medium) + &.is-large + +radio-size(utilities.$size-large) + + @each $name, $pair in utilities.$colors + $color: list.nth($pair, 1) + $color-invert: null + // Check if $pair has at least two elements before accessing the second one + @if list.length($pair) > 1 + $color-invert: list.nth($pair, 2) + &.is-#{$name} + &.has-background-color + + label + &::before, + &:before + border-color: $color !important + background-color: $color !important + &:hover:not([disabled]) + + label + &::before, + &:before + border-color: $color !important + &:checked + + label + &::after, + &:after + border-color: $color !important + background-color: $color !important + &.has-background-color + + label + &::before, + &:before + border-color: $color !important + background-color: $color !important + &::after, + &:after + border-color: if($color-invert != null, $color-invert, $color) !important + background-color: if($color-invert != null, $color-invert, $color) !important diff --git a/web/static/assets/bulma-switch.sass b/web/static/assets/bulma-switch.sass new file mode 100644 index 00000000..1eeab2e7 --- /dev/null +++ b/web/static/assets/bulma-switch.sass @@ -0,0 +1,223 @@ +@use "sass:list" +@use "../../../node_modules/bulma/sass/utilities/index" as utilities +$switch-background: utilities.$grey-light !default +$switch-border: .1rem solid transparent !default +$switch-background-active: utilities.$primary !default +$switch-radius: utilities.$radius !default +$switch-paddle-background: utilities.$white !default +$switch-paddle-background-active: utilities.$primary !default +$switch-paddle-offset: 0.25rem !default +$switch-paddle-transition: all 0.25s ease-out !default +$switch-focus: 1px dotted utilities.$grey-light !default + +=switch-size($size) + $switch-height: $size * 1.5 + $switch-width: $switch-height * 2 + $paddle-height: $switch-height - ($switch-paddle-offset * 2) + $paddle-width: $switch-height - ($switch-paddle-offset * 2) + $paddle-active-offest: $switch-width - $paddle-width - ($switch-paddle-offset * 1.5) + + + label + position: relative + display: inline-flex + align-items: center + justify-content: flex-start + font-size: $size + height: utilities.$control-height + line-height: utilities.$control-line-height + padding-left: $switch-width + .5 + padding-top: .2rem + cursor: pointer + + &::before, + &:before + position: absolute + display: block + top: calc( 50% - #{$switch-height} * 0.5 ) + left: 0 + width: $switch-width + height: $switch-height + border: $switch-border + border-radius: $switch-radius + background: $switch-background + content: '' + + &::after, + &:after + display: block + position: absolute + top: calc( 50% - #{$paddle-height} * 0.5 ) + left: $switch-paddle-offset + width: $paddle-width + height: $paddle-height + transform: translate3d(0, 0, 0) + border-radius: $switch-radius + background: $switch-paddle-background + transition: $switch-paddle-transition + content: '' + + .switch-active, .switch-inactive + font-size: $size - 0.1 + z-index: 1 + margin-top: -4px + &.has-text-inside + .switch-inactive + margin-left: -($paddle-active-offest + 0.3) + .switch-active + margin-left: -($paddle-active-offest * 2) + + + &.is-rtl + + label + padding-left: 0 + padding-right: $switch-width + .5 + &::before, + &:before + left: auto + right: 0 + &::after, + &:after + left: auto + right: $paddle-active-offest + + &:checked + + label + &::before, + &:before + background: $switch-background-active + &::after + left: $paddle-active-offest + &.is-rtl + + label + &::after, + &:after + left: auto + right: $switch-paddle-offset + + &.is-outlined + + label + &::before, + &:before + background-color: transparent + border-color: $switch-background + &::after, + &:after + background: $switch-background + &:checked + + label + &::before, + &:before + background-color: transparent + border-color: $switch-background-active + &::after, + &:after + background: $switch-paddle-background-active + + &.is-thin + + label + &::before, + &:before + top: divide($switch-height, 2.75) + height: divide($switch-height, 4) + &::after, + &:after + box-shadow: 0 0 3px utilities.$grey + + &.is-rounded + + label + &::before, + &:before + border-radius: utilities.$radius-large * 4 + &::after, + &:after + border-radius: 50% + + +.switch[type="checkbox"] + outline: 0 + user-select: none + display: inline-block + position: absolute + opacity: 0 + + &:focus + + label + &::before, + &:before, + &::after, + &:after + outline: $switch-focus + + &[disabled] + cursor: not-allowed + + label + opacity: 0.5 + &::before, + &:before + opacity: 0.5 + &::after, + &:after + opacity: 0.5 + &:hover + cursor: not-allowed + + +switch-size(utilities.$size-normal) + &.is-small + +switch-size(utilities.$size-small) + &.is-medium + +switch-size(utilities.$size-medium) + &.is-large + +switch-size(utilities.$size-large) + + @each $name, $pair in utilities.$colors + $color: list.nth($pair, 1) + &.is-#{$name} + + label + .switch-active + display: none + .switch-inactive + display: inline-block + &:checked + + label + &::before, + &:before + background: $color + .switch-active + display: inline-block + .switch-inactive + display: none + &.is-outlined + &:checked + + label + &::before, + &:before + background-color: transparent + border-color: $color !important + &::after, + &:after + background: $color + &.is-thin + &.is-outlined + + label + &::after, + &:after + box-shadow: none + &.is-unchecked-#{$name} + + label + &::before, + &:before + background: $color + &.is-outlined + + label + &::before, + &:before + background-color: transparent + border-color: $color !important + &::after, + &:after + background: $color + +.field-body + .switch[type="checkbox"] + + label + margin-top: .375em diff --git a/web/static/assets/bulma-tooltip.sass b/web/static/assets/bulma-tooltip.sass new file mode 100644 index 00000000..dde14cd6 --- /dev/null +++ b/web/static/assets/bulma-tooltip.sass @@ -0,0 +1,274 @@ +@use '../../../node_modules/bulma/sass/utilities/initial-variables' as iv +@use '../../../node_modules/bulma/sass/utilities/derived-variables' as dv +@use '../../../node_modules/bulma/sass/utilities/mixins' as * +@use 'sass:list' +$tooltip-arrow-size: 6px !default +$tooltip-background-color: iv.$grey-dark !default +$tooltip-background-opacity: 0.9 !default +$tooltip-color: iv.$white !default +$tooltip-font-family: dv.$family-primary !default +$tooltip-font-size: iv.$size-7 +$tooltip-max-width: 15rem !default +$tooltip-padding: .5rem 1rem !default +$tooltip-radius: iv.$radius-small !default +$tooltip-z-index: 1020 !default + +=tooltip-hover + &:focus::before, + &:focus::after, + &:hover::before, + &:hover::after, + &.has-tooltip-active::before, + &.has-tooltip-active::after + @content + +=tooltip-arrow-top + &::after + top: 0 + right: auto + bottom: auto + left: 50% + margin-top: $tooltip-arrow-size * -1 + 1 + margin-right: auto + margin-bottom: auto + margin-left: $tooltip-arrow-size * -1 + 1 + border-color: rgba($tooltip-background-color, $tooltip-background-opacity) transparent transparent transparent + +=tooltip-box-top + &::before + top: 0 + right: auto + bottom: auto + left: 50% + top: 0 + margin-top: $tooltip-arrow-size * -1 + 1 + margin-bottom: auto + transform: translate(-50%, -100%) + +=tooltip-top + +tooltip-arrow-top + +tooltip-box-top + +=tooltip-arrow-bottom + &::after + top: auto + right: auto + bottom: 0 + left: 50% + margin-top: auto + margin-right: auto + margin-bottom: $tooltip-arrow-size * -1 + 1 + margin-left: $tooltip-arrow-size * -1 + 1 + border-color: transparent transparent rgba($tooltip-background-color, $tooltip-background-opacity) transparent + +=tooltip-box-bottom + &::before + top: auto + right: auto + bottom: 0 + left: 50% + margin-top: auto + margin-bottom: $tooltip-arrow-size * -1 + 1 + transform: translate(-50%, 100%) + +=tooltip-bottom + +tooltip-arrow-bottom + +tooltip-box-bottom + + +=tooltip-arrow-left + &::after + top: auto + right: auto + bottom: 50% + left: 0 + margin-top: auto + margin-right: auto + margin-bottom: $tooltip-arrow-size * -1 + margin-left: $tooltip-arrow-size * -2 + 1 + border-color: transparent transparent transparent rgba($tooltip-background-color, $tooltip-background-opacity) + +=tooltip-box-left + &::before + top: auto + right: auto + bottom: 50% + left: $tooltip-arrow-size * -2 + 1 + transform: translate(-100%, 50%) + +=tooltip-left + +tooltip-arrow-left + +tooltip-box-left + + +=tooltip-arrow-right + &::after + top: auto + right: 0 + bottom: 50% + left: auto + margin-top: auto + margin-right: $tooltip-arrow-size * -2 + 1 + margin-bottom: $tooltip-arrow-size * -1 + margin-left: auto + border-color: transparent rgba($tooltip-background-color, $tooltip-background-opacity) transparent transparent + +=tooltip-box-right + &::before + top: auto + right: $tooltip-arrow-size * -2 + 1 + bottom: 50% + left: auto + margin-top: auto + transform: translate(100%, 50%) + +=tooltip-right + +tooltip-arrow-right + +tooltip-box-right + + +=tooltip-direction($direction) + @if $direction == 'top' + @include tooltip-top + @else if $direction == 'right' + @include tooltip-right + @else if $direction == 'bottom' + @include tooltip-bottom + @else if $direction == 'left' + @include tooltip-left + +=tooltip-fade + &::before, + &::after + transition: opacity .3s linear, visibility .3s linear + +=tooltip-arrow + &::after + content: '' + border-style: solid + border-width: $tooltip-arrow-size + border-color: rgba($tooltip-background-color, $tooltip-background-opacity) transparent transparent transparent + margin-bottom: $tooltip-arrow-size * -1 + 1 + +tooltip-arrow-top + +=tooltip-box + &::before + background: rgba($tooltip-background-color, $tooltip-background-opacity) + border-radius: $tooltip-radius + content: attr(data-tooltip) + padding: $tooltip-padding + text-overflow: ellipsis + white-space: pre + +tooltip-box-top + +=tooltip-multiline + &::before + height: auto + width: $tooltip-max-width + max-width: $tooltip-max-width + text-overflow: clip + white-space: normal + word-break: keep-all + +[data-tooltip] + &:not(.is-loading), + &:not(.is-disabled), + &:not([disabled]) + cursor: pointer + overflow: visible + position: relative + + &::before, + &::after + box-sizing: border-box + color: $tooltip-color + display: inline-block + font-family: $tooltip-font-family + font-size: $tooltip-font-size + hyphens: auto + opacity: 0 + overflow: hidden + pointer-events: none + position: absolute + visibility: hidden + z-index: $tooltip-z-index + + +tooltip-arrow + +tooltip-box + + &.has-tooltip-bottom + +tooltip-direction('bottom') + + &.has-tooltip-left + +tooltip-direction('left') + + &.has-tooltip-right + +tooltip-direction('right') + + &.has-tooltip-multiline + +tooltip-multiline + + @each $name, $pair in dv.$colors + @if list.length($name) > 1 + $color: nth($pair, 1) + $color-invert: nth($pair, 2) + &.has-tooltip-#{$name} + &.has-tooltip-bottom + &::after + border-color: transparent transparent rgba($color, $tooltip-background-opacity) transparent + &.has-tooltip-left + &::after + border-color: transparent transparent transparent rgba($color, $tooltip-background-opacity) + &.has-tooltip-right + &::after + border-color: transparent rgba($color, $tooltip-background-opacity) transparent transparent + &:not(.has-tooltip-bottom), + &:not(.has-tooltip-left), + &:not(.has-tooltip-right) + &::after + border-color: rgba($color, $tooltip-background-opacity) transparent transparent transparent + &:before + background-color: rgba($color, $tooltip-background-opacity) + color: $color-invert + + +tooltip-hover + opacity: 1 + visibility: visible + + &.has-tooltip-fade + +tooltip-fade + +@each $direction in top, right, bottom, left + +mobile + .has-tooltip-#{$direction}-mobile + @include tooltip-direction(#{$direction}) + +tablet + .has-tooltip-#{$direction}-tablet + @include tooltip-direction(#{$direction}) + +tablet-only + .has-tooltip-#{$direction}-tablet-only + @include tooltip-direction(#{$direction}) + +touch + .has-tooltip-#{$direction}-touch + @include tooltip-direction(#{$direction}) + +desktop + .has-tooltip-#{$direction}-desktop + @include tooltip-direction(#{$direction}) + +desktop-only + .has-tooltip-#{$direction}-desktop-only + @include tooltip-direction(#{$direction}) + +until-widescreen + .has-tooltip-#{$direction}-until-widescreen + @include tooltip-direction(#{$direction}) + +widescreen + .has-tooltip-#{$direction}-widescreen + @include tooltip-direction(#{$direction}) + +widescreen-only + .has-tooltip-#{$direction}-widescreen-only + @include tooltip-direction(#{$direction}) + +until-fullhd + .has-tooltip-#{$direction}-until-fullhd + @include tooltip-direction(#{$direction}) + +fullhd + .has-tooltip-#{$direction}-fullhd + @include tooltip-direction(#{$direction}) diff --git a/web/static/assets/fontawesome/_animated.scss b/web/static/assets/fontawesome/_animated.scss new file mode 100644 index 00000000..152b32c8 --- /dev/null +++ b/web/static/assets/fontawesome/_animated.scss @@ -0,0 +1,291 @@ +// animating icons +// -------------------------- +@use 'mixins'; +@use 'variables'; + +.#{variables.$fa-css-prefix}-beat { + animation-name: #{variables.$fa-css-prefix}-beat; + animation-delay: var(--#{variables.$fa-css-prefix}-animation-delay, 0s); + animation-direction: var( + --#{variables.$fa-css-prefix}-animation-direction, + normal + ); + animation-duration: var(--#{variables.$fa-css-prefix}-animation-duration, 1s); + animation-iteration-count: var( + --#{variables.$fa-css-prefix}-animation-iteration-count, + infinite + ); + animation-timing-function: var( + --#{variables.$fa-css-prefix}-animation-timing, + ease-in-out + ); +} + +.#{variables.$fa-css-prefix}-bounce { + animation-name: #{variables.$fa-css-prefix}-bounce; + animation-delay: var(--#{variables.$fa-css-prefix}-animation-delay, 0s); + animation-direction: var( + --#{variables.$fa-css-prefix}-animation-direction, + normal + ); + animation-duration: var(--#{variables.$fa-css-prefix}-animation-duration, 1s); + animation-iteration-count: var( + --#{variables.$fa-css-prefix}-animation-iteration-count, + infinite + ); + animation-timing-function: var( + --#{variables.$fa-css-prefix}-animation-timing, + cubic-bezier(0.28, 0.84, 0.42, 1) + ); +} + +.#{variables.$fa-css-prefix}-fade { + animation-name: #{variables.$fa-css-prefix}-fade; + animation-delay: var(--#{variables.$fa-css-prefix}-animation-delay, 0s); + animation-direction: var( + --#{variables.$fa-css-prefix}-animation-direction, + normal + ); + animation-duration: var(--#{variables.$fa-css-prefix}-animation-duration, 1s); + animation-iteration-count: var( + --#{variables.$fa-css-prefix}-animation-iteration-count, + infinite + ); + animation-timing-function: var( + --#{variables.$fa-css-prefix}-animation-timing, + cubic-bezier(0.4, 0, 0.6, 1) + ); +} + +.#{variables.$fa-css-prefix}-beat-fade { + animation-name: #{variables.$fa-css-prefix}-beat-fade; + animation-delay: var(--#{variables.$fa-css-prefix}-animation-delay, 0s); + animation-direction: var( + --#{variables.$fa-css-prefix}-animation-direction, + normal + ); + animation-duration: var(--#{variables.$fa-css-prefix}-animation-duration, 1s); + animation-iteration-count: var( + --#{variables.$fa-css-prefix}-animation-iteration-count, + infinite + ); + animation-timing-function: var( + --#{variables.$fa-css-prefix}-animation-timing, + cubic-bezier(0.4, 0, 0.6, 1) + ); +} + +.#{variables.$fa-css-prefix}-flip { + animation-name: #{variables.$fa-css-prefix}-flip; + animation-delay: var(--#{variables.$fa-css-prefix}-animation-delay, 0s); + animation-direction: var( + --#{variables.$fa-css-prefix}-animation-direction, + normal + ); + animation-duration: var(--#{variables.$fa-css-prefix}-animation-duration, 1s); + animation-iteration-count: var( + --#{variables.$fa-css-prefix}-animation-iteration-count, + infinite + ); + animation-timing-function: var( + --#{variables.$fa-css-prefix}-animation-timing, + ease-in-out + ); +} + +.#{variables.$fa-css-prefix}-shake { + animation-name: #{variables.$fa-css-prefix}-shake; + animation-delay: var(--#{variables.$fa-css-prefix}-animation-delay, 0s); + animation-direction: var( + --#{variables.$fa-css-prefix}-animation-direction, + normal + ); + animation-duration: var(--#{variables.$fa-css-prefix}-animation-duration, 1s); + animation-iteration-count: var( + --#{variables.$fa-css-prefix}-animation-iteration-count, + infinite + ); + animation-timing-function: var( + --#{variables.$fa-css-prefix}-animation-timing, + linear + ); +} + +.#{variables.$fa-css-prefix}-spin { + animation-name: #{variables.$fa-css-prefix}-spin; + animation-delay: var(--#{variables.$fa-css-prefix}-animation-delay, 0s); + animation-direction: var( + --#{variables.$fa-css-prefix}-animation-direction, + normal + ); + animation-duration: var(--#{variables.$fa-css-prefix}-animation-duration, 2s); + animation-iteration-count: var( + --#{variables.$fa-css-prefix}-animation-iteration-count, + infinite + ); + animation-timing-function: var( + --#{variables.$fa-css-prefix}-animation-timing, + linear + ); +} + +.#{variables.$fa-css-prefix}-spin-reverse { + --#{variables.$fa-css-prefix}-animation-direction: reverse; +} + +.#{variables.$fa-css-prefix}-pulse, +.#{variables.$fa-css-prefix}-spin-pulse { + animation-name: #{variables.$fa-css-prefix}-spin; + animation-direction: var( + --#{variables.$fa-css-prefix}-animation-direction, + normal + ); + animation-duration: var(--#{variables.$fa-css-prefix}-animation-duration, 1s); + animation-iteration-count: var( + --#{variables.$fa-css-prefix}-animation-iteration-count, + infinite + ); + animation-timing-function: var( + --#{variables.$fa-css-prefix}-animation-timing, + steps(8) + ); +} + +// if agent or operating system prefers reduced motion, disable animations +// see: https://www.smashingmagazine.com/2020/09/design-reduced-motion-sensitivities/ +// see: https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion +@media (prefers-reduced-motion: reduce) { + .#{variables.$fa-css-prefix}-beat, + .#{variables.$fa-css-prefix}-bounce, + .#{variables.$fa-css-prefix}-fade, + .#{variables.$fa-css-prefix}-beat-fade, + .#{variables.$fa-css-prefix}-flip, + .#{variables.$fa-css-prefix}-pulse, + .#{variables.$fa-css-prefix}-shake, + .#{variables.$fa-css-prefix}-spin, + .#{variables.$fa-css-prefix}-spin-pulse { + animation-delay: -1ms; + animation-duration: 1ms; + animation-iteration-count: 1; + transition-delay: 0s; + transition-duration: 0s; + } +} + +@keyframes #{variables.$fa-css-prefix}-beat { + 0%, + 90% { + transform: scale(1); + } + 45% { + transform: scale(var(--#{variables.$fa-css-prefix}-beat-scale, 1.25)); + } +} + +@keyframes #{variables.$fa-css-prefix}-bounce { + 0% { + transform: scale(1, 1) translateY(0); + } + 10% { + transform: scale( + var(--#{variables.$fa-css-prefix}-bounce-start-scale-x, 1.1), + var(--#{variables.$fa-css-prefix}-bounce-start-scale-y, 0.9) + ) + translateY(0); + } + 30% { + transform: scale( + var(--#{variables.$fa-css-prefix}-bounce-jump-scale-x, 0.9), + var(--#{variables.$fa-css-prefix}-bounce-jump-scale-y, 1.1) + ) + translateY(var(--#{variables.$fa-css-prefix}-bounce-height, -0.5em)); + } + 50% { + transform: scale( + var(--#{variables.$fa-css-prefix}-bounce-land-scale-x, 1.05), + var(--#{variables.$fa-css-prefix}-bounce-land-scale-y, 0.95) + ) + translateY(0); + } + 57% { + transform: scale(1, 1) + translateY(var(--#{variables.$fa-css-prefix}-bounce-rebound, -0.125em)); + } + 64% { + transform: scale(1, 1) translateY(0); + } + 100% { + transform: scale(1, 1) translateY(0); + } +} + +@keyframes #{variables.$fa-css-prefix}-fade { + 50% { + opacity: var(--#{variables.$fa-css-prefix}-fade-opacity, 0.4); + } +} + +@keyframes #{variables.$fa-css-prefix}-beat-fade { + 0%, + 100% { + opacity: var(--#{variables.$fa-css-prefix}-beat-fade-opacity, 0.4); + transform: scale(1); + } + 50% { + opacity: 1; + transform: scale(var(--#{variables.$fa-css-prefix}-beat-fade-scale, 1.125)); + } +} + +@keyframes #{variables.$fa-css-prefix}-flip { + 50% { + transform: rotate3d( + var(--#{variables.$fa-css-prefix}-flip-x, 0), + var(--#{variables.$fa-css-prefix}-flip-y, 1), + var(--#{variables.$fa-css-prefix}-flip-z, 0), + var(--#{variables.$fa-css-prefix}-flip-angle, -180deg) + ); + } +} + +@keyframes #{variables.$fa-css-prefix}-shake { + 0% { + transform: rotate(-15deg); + } + 4% { + transform: rotate(15deg); + } + 8%, + 24% { + transform: rotate(-18deg); + } + 12%, + 28% { + transform: rotate(18deg); + } + 16% { + transform: rotate(-22deg); + } + 20% { + transform: rotate(22deg); + } + 32% { + transform: rotate(-12deg); + } + 36% { + transform: rotate(12deg); + } + 40%, + 100% { + transform: rotate(0deg); + } +} + +@keyframes #{variables.$fa-css-prefix}-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} diff --git a/web/static/assets/fontawesome/_bordered-pulled.scss b/web/static/assets/fontawesome/_bordered-pulled.scss new file mode 100644 index 00000000..befdc455 --- /dev/null +++ b/web/static/assets/fontawesome/_bordered-pulled.scss @@ -0,0 +1,20 @@ +// bordered + pulled icons +// ------------------------- + +.#{$fa-css-prefix}-border { + border-color: var(--#{$fa-css-prefix}-border-color, #{$fa-border-color}); + border-radius: var(--#{$fa-css-prefix}-border-radius, #{$fa-border-radius}); + border-style: var(--#{$fa-css-prefix}-border-style, #{$fa-border-style}); + border-width: var(--#{$fa-css-prefix}-border-width, #{$fa-border-width}); + padding: var(--#{$fa-css-prefix}-border-padding, #{$fa-border-padding}); +} + +.#{$fa-css-prefix}-pull-left { + float: left; + margin-right: var(--#{$fa-css-prefix}-pull-margin, #{$fa-pull-margin}); +} + +.#{$fa-css-prefix}-pull-right { + float: right; + margin-left: var(--#{$fa-css-prefix}-pull-margin, #{$fa-pull-margin}); +} diff --git a/web/static/assets/fontawesome/_core.scss b/web/static/assets/fontawesome/_core.scss new file mode 100644 index 00000000..93df788e --- /dev/null +++ b/web/static/assets/fontawesome/_core.scss @@ -0,0 +1,55 @@ +@use 'mixins'; +@use 'variables'; + +// base icon class definition +// ------------------------- + +.#{variables.$fa-css-prefix} { + font-family: var( + --#{variables.$fa-css-prefix}-style-family, + '#{variables.$fa-style-family}' + ); + font-weight: var(--#{variables.$fa-css-prefix}-style, #{variables.$fa-style}); +} + +.fas, +.far, +.fab, +.#{variables.$fa-css-prefix}-solid, +.#{variables.$fa-css-prefix}-regular, +.#{variables.$fa-css-prefix}-brands, +.#{variables.$fa-css-prefix} { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: var(--#{variables.$fa-css-prefix}-display, #{variables.$fa-display}); + font-style: normal; + font-variant: normal; + line-height: 1; + text-rendering: auto; +} + +.fas::before, +.far::before, +.fab::before, +.#{variables.$fa-css-prefix}-solid::before, +.#{variables.$fa-css-prefix}-regular::before, +.#{variables.$fa-css-prefix}-brands::before, +.#{variables.$fa-css-prefix}::before { + content: var(#{variables.$fa-icon-property}); +} + +.#{variables.$fa-css-prefix}-classic, +.fas, +.#{variables.$fa-css-prefix}-solid, +.far, +.#{variables.$fa-css-prefix}-regular { + font-family: 'Font Awesome 6 Free'; +} +.#{variables.$fa-css-prefix}-brands, +.fab { + font-family: 'Font Awesome 6 Brands'; +} + +%fa-icon { + @include mixins.fa-icon; +} diff --git a/web/static/assets/fontawesome/_fixed-width.scss b/web/static/assets/fontawesome/_fixed-width.scss new file mode 100644 index 00000000..72342368 --- /dev/null +++ b/web/static/assets/fontawesome/_fixed-width.scss @@ -0,0 +1,7 @@ +// fixed-width icons +// ------------------------- + +.#{$fa-css-prefix}-fw { + text-align: center; + width: $fa-fw-width; +} diff --git a/web/static/assets/fontawesome/_functions.scss b/web/static/assets/fontawesome/_functions.scss new file mode 100644 index 00000000..9d1aabb6 --- /dev/null +++ b/web/static/assets/fontawesome/_functions.scss @@ -0,0 +1,59 @@ +@use 'sass:math'; +@use 'sass:string'; +// functions +// -------------------------- + +// fa-content: convenience function used to set content property +@function fa-content($fa-var) { + @return string.unquote('"#{ $fa-var }"'); +} + +// fa-divide: Originally obtained from the Bootstrap https://github.com/twbs/bootstrap +// +// Licensed under: The MIT License (MIT) +// +// Copyright (c) 2011-2021 Twitter, Inc. +// Copyright (c) 2011-2021 The Bootstrap Authors +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +@function fa-divide($dividend, $divisor, $precision: 10) { + $sign: if($dividend > 0 and $divisor > 0, 1, -1); + $dividend: math.abs($dividend); + $divisor: math.abs($divisor); + $quotient: 0; + $remainder: $dividend; + @if $dividend == 0 { + @return 0; + } + @if $divisor == 0 { + @error "Cannot divide by 0"; + } + @if $divisor == 1 { + @return $dividend; + } + @while $remainder >= $divisor { + $quotient: $quotient + 1; + $remainder: $remainder - $divisor; + } + @if $remainder > 0 and $precision > 0 { + $remainder: fa-divide($remainder * 10, $divisor, $precision - 1) * 0.1; + } + @return ($quotient + $remainder) * $sign; +} diff --git a/web/static/assets/fontawesome/_icons.scss b/web/static/assets/fontawesome/_icons.scss new file mode 100644 index 00000000..13885f41 --- /dev/null +++ b/web/static/assets/fontawesome/_icons.scss @@ -0,0 +1,11 @@ +// specific icon class definition +// ------------------------- + +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen +readers do not read off random characters that represent icons */ + +@each $name, $icon in $fa-icons { + .#{$fa-css-prefix}-#{$name} { + #{$fa-icon-property}: unquote('"#{ $icon }"'); + } +} diff --git a/web/static/assets/fontawesome/_list.scss b/web/static/assets/fontawesome/_list.scss new file mode 100644 index 00000000..77590f5f --- /dev/null +++ b/web/static/assets/fontawesome/_list.scss @@ -0,0 +1,20 @@ +// icons in a list +// ------------------------- + +.#{$fa-css-prefix}-ul { + list-style-type: none; + margin-left: var(--#{$fa-css-prefix}-li-margin, #{$fa-li-margin}); + padding-left: 0; + + > li { + position: relative; + } +} + +.#{$fa-css-prefix}-li { + left: calc(-1 * var(--#{$fa-css-prefix}-li-width, #{$fa-li-width})); + position: absolute; + text-align: center; + width: var(--#{$fa-css-prefix}-li-width, #{$fa-li-width}); + line-height: inherit; +} diff --git a/web/static/assets/fontawesome/_mixins.scss b/web/static/assets/fontawesome/_mixins.scss new file mode 100644 index 00000000..1b74e6d6 --- /dev/null +++ b/web/static/assets/fontawesome/_mixins.scss @@ -0,0 +1,88 @@ +@use 'sass:string'; +@use 'functions'; +@use 'variables'; + +// mixins +// -------------------------- + +// base rendering for an icon +@mixin fa-icon { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + display: inline-block; + font-style: normal; + font-variant: normal; + font-weight: normal; + line-height: 1; +} + +// sets relative font-sizing and alignment (in _sizing) +@mixin fa-size($font-size) { + font-size: functions.fa-divide($font-size, variables.$fa-size-scale-base) * + 1em; // converts step in sizing scale into an em-based value that's relative to the scale's base + line-height: functions.fa-divide(1, $font-size) * 1em; // sets the line-height of the icon back to that of it's parent + vertical-align: ( + functions.fa-divide(6, $font-size) - functions.fa-divide(3, 8) + ) * + 1em; // vertically centers the icon taking into account the surrounding text's descender +} + +// only display content to screen readers +// see: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/ +// see: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/ +@mixin fa-sr-only() { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +// use in conjunction with .sr-only to only display content when it's focused +@mixin fa-sr-only-focusable() { + &:not(:focus) { + @include fa-sr-only(); + } +} + +// sets a specific icon family to use alongside style + icon mixins +@mixin fa-family-classic() { + @extend .fa-classic; +} + +// convenience mixins for declaring pseudo-elements by CSS variable, +// including all style-specific font properties +@mixin fa-icon-solid($fa-var) { + @extend .fa-solid; + + & { + #{variables.$fa-icon-property}: string.unquote('"#{ $fa-var }"'); + #{variables.$fa-duotone-icon-property}: string.unquote( + '"#{ $fa-var }#{ $fa-var }"' + ); + } +} +@mixin fa-icon-regular($fa-var) { + @extend .fa-regular; + + & { + #{variables.$fa-icon-property}: string.unquote('"#{ $fa-var }"'); + #{variables.$fa-duotone-icon-property}: string.unquote( + '"#{ $fa-var }#{ $fa-var }"' + ); + } +} +@mixin fa-icon-brands($fa-var) { + @extend .fa-brands; + + & { + #{variables.$fa-icon-property}: string.unquote('"#{ $fa-var }"'); + #{variables.$fa-duotone-icon-property}: string.unquote( + '"#{ $fa-var }#{ $fa-var }"' + ); + } +} diff --git a/web/static/assets/fontawesome/_rotated-flipped.scss b/web/static/assets/fontawesome/_rotated-flipped.scss new file mode 100644 index 00000000..0bd4b7cb --- /dev/null +++ b/web/static/assets/fontawesome/_rotated-flipped.scss @@ -0,0 +1,31 @@ +// rotating + flipping icons +// ------------------------- + +.#{$fa-css-prefix}-rotate-90 { + transform: rotate(90deg); +} + +.#{$fa-css-prefix}-rotate-180 { + transform: rotate(180deg); +} + +.#{$fa-css-prefix}-rotate-270 { + transform: rotate(270deg); +} + +.#{$fa-css-prefix}-flip-horizontal { + transform: scale(-1, 1); +} + +.#{$fa-css-prefix}-flip-vertical { + transform: scale(1, -1); +} + +.#{$fa-css-prefix}-flip-both, +.#{$fa-css-prefix}-flip-horizontal.#{$fa-css-prefix}-flip-vertical { + transform: scale(-1, -1); +} + +.#{$fa-css-prefix}-rotate-by { + transform: rotate(var(--#{$fa-css-prefix}-rotate-angle, 0)); +} diff --git a/web/static/assets/fontawesome/_screen-reader.scss b/web/static/assets/fontawesome/_screen-reader.scss new file mode 100644 index 00000000..2beb887b --- /dev/null +++ b/web/static/assets/fontawesome/_screen-reader.scss @@ -0,0 +1,14 @@ +// screen-reader utilities +// ------------------------- + +// only display content to screen readers +.sr-only, +.#{$fa-css-prefix}-sr-only { + @include fa-sr-only; +} + +// use in conjunction with .sr-only to only display content when it's focused +.sr-only-focusable, +.#{$fa-css-prefix}-sr-only-focusable { + @include fa-sr-only-focusable; +} diff --git a/web/static/assets/fontawesome/_shims.scss b/web/static/assets/fontawesome/_shims.scss new file mode 100644 index 00000000..9171bb90 --- /dev/null +++ b/web/static/assets/fontawesome/_shims.scss @@ -0,0 +1,2196 @@ +@use 'variables'; + +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-glass { + #{$fa-icon-property}: unquote('"#{ $fa-var-martini-glass-empty }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-envelope-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-envelope-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-envelope }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-star-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-star-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-star }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-remove { + #{$fa-icon-property}: unquote('"#{ $fa-var-xmark }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-close { + #{$fa-icon-property}: unquote('"#{ $fa-var-xmark }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-gear { + #{$fa-icon-property}: unquote('"#{ $fa-var-gear }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-trash-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-trash-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-trash-can }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-home { + #{$fa-icon-property}: unquote('"#{ $fa-var-house }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-file-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-file-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-file }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-clock-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-clock-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-clock }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-arrow-circle-o-down { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-arrow-circle-o-down { + #{$fa-icon-property}: unquote('"#{ $fa-var-circle-down }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-arrow-circle-o-up { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-arrow-circle-o-up { + #{$fa-icon-property}: unquote('"#{ $fa-var-circle-up }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-play-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-play-circle-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-circle-play }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-repeat { + #{$fa-icon-property}: unquote('"#{ $fa-var-arrow-rotate-right }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-rotate-right { + #{$fa-icon-property}: unquote('"#{ $fa-var-arrow-rotate-right }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-refresh { + #{$fa-icon-property}: unquote('"#{ $fa-var-arrows-rotate }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-list-alt { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-list-alt { + #{$fa-icon-property}: unquote('"#{ $fa-var-rectangle-list }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-dedent { + #{$fa-icon-property}: unquote('"#{ $fa-var-outdent }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-video-camera { + #{$fa-icon-property}: unquote('"#{ $fa-var-video }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-picture-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-picture-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-image }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-photo { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-photo { + #{$fa-icon-property}: unquote('"#{ $fa-var-image }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-image { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-image { + #{$fa-icon-property}: unquote('"#{ $fa-var-image }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-map-marker { + #{$fa-icon-property}: unquote('"#{ $fa-var-location-dot }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-pencil-square-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-pencil-square-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-pen-to-square }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-edit { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-edit { + #{$fa-icon-property}: unquote('"#{ $fa-var-pen-to-square }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-share-square-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-share-from-square }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-check-square-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-check-square-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-square-check }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-arrows { + #{$fa-icon-property}: unquote('"#{ $fa-var-up-down-left-right }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-times-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-times-circle-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-circle-xmark }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-check-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-check-circle-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-circle-check }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-mail-forward { + #{$fa-icon-property}: unquote('"#{ $fa-var-share }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-expand { + #{$fa-icon-property}: unquote( + '"#{ $fa-var-up-right-and-down-left-from-center }"' + ); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-compress { + #{$fa-icon-property}: unquote( + '"#{ $fa-var-down-left-and-up-right-to-center }"' + ); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-eye { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-eye-slash { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-warning { + #{$fa-icon-property}: unquote('"#{ $fa-var-triangle-exclamation }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-calendar { + #{$fa-icon-property}: unquote('"#{ $fa-var-calendar-days }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-arrows-v { + #{$fa-icon-property}: unquote('"#{ $fa-var-up-down }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-arrows-h { + #{$fa-icon-property}: unquote('"#{ $fa-var-left-right }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-bar-chart { + #{$fa-icon-property}: unquote('"#{ $fa-var-chart-column }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-bar-chart-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-chart-column }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-twitter-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-twitter-square { + #{$fa-icon-property}: unquote('"#{ $fa-var-square-twitter }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-facebook-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-facebook-square { + #{$fa-icon-property}: unquote('"#{ $fa-var-square-facebook }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-gears { + #{$fa-icon-property}: unquote('"#{ $fa-var-gears }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-thumbs-o-up { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-thumbs-o-up { + #{$fa-icon-property}: unquote('"#{ $fa-var-thumbs-up }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-thumbs-o-down { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-thumbs-o-down { + #{$fa-icon-property}: unquote('"#{ $fa-var-thumbs-down }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-heart-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-heart-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-heart }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-sign-out { + #{$fa-icon-property}: unquote('"#{ $fa-var-right-from-bracket }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-linkedin-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-linkedin-square { + #{$fa-icon-property}: unquote('"#{ $fa-var-linkedin }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-thumb-tack { + #{$fa-icon-property}: unquote('"#{ $fa-var-thumbtack }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-external-link { + #{$fa-icon-property}: unquote('"#{ $fa-var-up-right-from-square }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-sign-in { + #{$fa-icon-property}: unquote('"#{ $fa-var-right-to-bracket }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-github-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-github-square { + #{$fa-icon-property}: unquote('"#{ $fa-var-square-github }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-lemon-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-lemon-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-lemon }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-square-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-square-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-square }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-bookmark-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-bookmark-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-bookmark }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-twitter { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-facebook { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-facebook { + #{$fa-icon-property}: unquote('"#{ $fa-var-facebook-f }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-facebook-f { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-facebook-f { + #{$fa-icon-property}: unquote('"#{ $fa-var-facebook-f }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-github { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-credit-card { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-feed { + #{$fa-icon-property}: unquote('"#{ $fa-var-rss }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hdd-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hdd-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-hard-drive }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hand-o-right { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hand-o-right { + #{$fa-icon-property}: unquote('"#{ $fa-var-hand-point-right }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hand-o-left { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hand-o-left { + #{$fa-icon-property}: unquote('"#{ $fa-var-hand-point-left }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hand-o-up { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hand-o-up { + #{$fa-icon-property}: unquote('"#{ $fa-var-hand-point-up }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hand-o-down { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hand-o-down { + #{$fa-icon-property}: unquote('"#{ $fa-var-hand-point-down }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-globe { + #{$fa-icon-property}: unquote('"#{ $fa-var-earth-americas }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-tasks { + #{$fa-icon-property}: unquote('"#{ $fa-var-bars-progress }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-arrows-alt { + #{$fa-icon-property}: unquote('"#{ $fa-var-maximize }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-group { + #{$fa-icon-property}: unquote('"#{ $fa-var-users }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-chain { + #{$fa-icon-property}: unquote('"#{ $fa-var-link }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-cut { + #{$fa-icon-property}: unquote('"#{ $fa-var-scissors }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-files-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-files-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-copy }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-floppy-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-floppy-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-floppy-disk }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-save { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-save { + #{$fa-icon-property}: unquote('"#{ $fa-var-floppy-disk }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-navicon { + #{$fa-icon-property}: unquote('"#{ $fa-var-bars }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-reorder { + #{$fa-icon-property}: unquote('"#{ $fa-var-bars }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-magic { + #{$fa-icon-property}: unquote('"#{ $fa-var-wand-magic-sparkles }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-pinterest { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-pinterest-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-pinterest-square { + #{$fa-icon-property}: unquote('"#{ $fa-var-square-pinterest }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-google-plus-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-google-plus-square { + #{$fa-icon-property}: unquote('"#{ $fa-var-square-google-plus }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-google-plus { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-google-plus { + #{$fa-icon-property}: unquote('"#{ $fa-var-google-plus-g }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-money { + #{$fa-icon-property}: unquote('"#{ $fa-var-money-bill-1 }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-unsorted { + #{$fa-icon-property}: unquote('"#{ $fa-var-sort }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-sort-desc { + #{$fa-icon-property}: unquote('"#{ $fa-var-sort-down }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-sort-asc { + #{$fa-icon-property}: unquote('"#{ $fa-var-sort-up }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-linkedin { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-linkedin { + #{$fa-icon-property}: unquote('"#{ $fa-var-linkedin-in }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-rotate-left { + #{$fa-icon-property}: unquote('"#{ $fa-var-arrow-rotate-left }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-legal { + #{$fa-icon-property}: unquote('"#{ $fa-var-gavel }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-tachometer { + #{$fa-icon-property}: unquote('"#{ $fa-var-gauge-high }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-dashboard { + #{$fa-icon-property}: unquote('"#{ $fa-var-gauge-high }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-comment-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-comment-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-comment }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-comments-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-comments-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-comments }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-flash { + #{$fa-icon-property}: unquote('"#{ $fa-var-bolt }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-clipboard { + #{$fa-icon-property}: unquote('"#{ $fa-var-paste }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-lightbulb-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-lightbulb-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-lightbulb }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-exchange { + #{$fa-icon-property}: unquote('"#{ $fa-var-right-left }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-cloud-download { + #{$fa-icon-property}: unquote('"#{ $fa-var-cloud-arrow-down }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-cloud-upload { + #{$fa-icon-property}: unquote('"#{ $fa-var-cloud-arrow-up }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-bell-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-bell-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-bell }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-cutlery { + #{$fa-icon-property}: unquote('"#{ $fa-var-utensils }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-file-text-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-file-text-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-file-lines }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-building-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-building-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-building }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hospital-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hospital-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-hospital }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-tablet { + #{$fa-icon-property}: unquote('"#{ $fa-var-tablet-screen-button }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-mobile { + #{$fa-icon-property}: unquote('"#{ $fa-var-mobile-screen-button }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-mobile-phone { + #{$fa-icon-property}: unquote('"#{ $fa-var-mobile-screen-button }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-circle-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-circle }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-mail-reply { + #{$fa-icon-property}: unquote('"#{ $fa-var-reply }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-github-alt { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-folder-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-folder-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-folder }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-folder-open-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-folder-open-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-folder-open }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-smile-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-smile-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-face-smile }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-frown-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-frown-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-face-frown }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-meh-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-meh-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-face-meh }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-keyboard-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-keyboard-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-keyboard }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-flag-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-flag-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-flag }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-mail-reply-all { + #{$fa-icon-property}: unquote('"#{ $fa-var-reply-all }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-star-half-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-star-half-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-star-half-stroke }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-star-half-empty { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-star-half-empty { + #{$fa-icon-property}: unquote('"#{ $fa-var-star-half-stroke }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-star-half-full { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-star-half-full { + #{$fa-icon-property}: unquote('"#{ $fa-var-star-half-stroke }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-code-fork { + #{$fa-icon-property}: unquote('"#{ $fa-var-code-branch }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-chain-broken { + #{$fa-icon-property}: unquote('"#{ $fa-var-link-slash }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-unlink { + #{$fa-icon-property}: unquote('"#{ $fa-var-link-slash }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-calendar-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-calendar-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-calendar }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-maxcdn { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-html5 { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-css3 { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-unlock-alt { + #{$fa-icon-property}: unquote('"#{ $fa-var-unlock }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-minus-square-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-minus-square-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-square-minus }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-level-up { + #{$fa-icon-property}: unquote('"#{ $fa-var-turn-up }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-level-down { + #{$fa-icon-property}: unquote('"#{ $fa-var-turn-down }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-pencil-square { + #{$fa-icon-property}: unquote('"#{ $fa-var-square-pen }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-external-link-square { + #{$fa-icon-property}: unquote('"#{ $fa-var-square-up-right }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-compass { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-caret-square-o-down { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-caret-square-o-down { + #{$fa-icon-property}: unquote('"#{ $fa-var-square-caret-down }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-toggle-down { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-toggle-down { + #{$fa-icon-property}: unquote('"#{ $fa-var-square-caret-down }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-caret-square-o-up { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-caret-square-o-up { + #{$fa-icon-property}: unquote('"#{ $fa-var-square-caret-up }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-toggle-up { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-toggle-up { + #{$fa-icon-property}: unquote('"#{ $fa-var-square-caret-up }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-caret-square-o-right { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-caret-square-o-right { + #{$fa-icon-property}: unquote('"#{ $fa-var-square-caret-right }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-toggle-right { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-toggle-right { + #{$fa-icon-property}: unquote('"#{ $fa-var-square-caret-right }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-eur { + #{$fa-icon-property}: unquote('"#{ $fa-var-euro-sign }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-euro { + #{$fa-icon-property}: unquote('"#{ $fa-var-euro-sign }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-gbp { + #{$fa-icon-property}: unquote('"#{ $fa-var-sterling-sign }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-usd { + #{$fa-icon-property}: unquote('"#{ $fa-var-dollar-sign }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-dollar { + #{$fa-icon-property}: unquote('"#{ $fa-var-dollar-sign }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-inr { + #{$fa-icon-property}: unquote('"#{ $fa-var-indian-rupee-sign }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-rupee { + #{$fa-icon-property}: unquote('"#{ $fa-var-indian-rupee-sign }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-jpy { + #{$fa-icon-property}: unquote('"#{ $fa-var-yen-sign }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-cny { + #{$fa-icon-property}: unquote('"#{ $fa-var-yen-sign }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-rmb { + #{$fa-icon-property}: unquote('"#{ $fa-var-yen-sign }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-yen { + #{$fa-icon-property}: unquote('"#{ $fa-var-yen-sign }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-rub { + #{$fa-icon-property}: unquote('"#{ $fa-var-ruble-sign }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-ruble { + #{$fa-icon-property}: unquote('"#{ $fa-var-ruble-sign }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-rouble { + #{$fa-icon-property}: unquote('"#{ $fa-var-ruble-sign }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-krw { + #{$fa-icon-property}: unquote('"#{ $fa-var-won-sign }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-won { + #{$fa-icon-property}: unquote('"#{ $fa-var-won-sign }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-btc { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-bitcoin { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-bitcoin { + #{$fa-icon-property}: unquote('"#{ $fa-var-btc }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-file-text { + #{$fa-icon-property}: unquote('"#{ $fa-var-file-lines }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-sort-alpha-asc { + #{$fa-icon-property}: unquote('"#{ $fa-var-arrow-down-a-z }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-sort-alpha-desc { + #{$fa-icon-property}: unquote('"#{ $fa-var-arrow-down-z-a }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-sort-amount-asc { + #{$fa-icon-property}: unquote('"#{ $fa-var-arrow-down-short-wide }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-sort-amount-desc { + #{$fa-icon-property}: unquote('"#{ $fa-var-arrow-down-wide-short }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-sort-numeric-asc { + #{$fa-icon-property}: unquote('"#{ $fa-var-arrow-down-1-9 }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-sort-numeric-desc { + #{$fa-icon-property}: unquote('"#{ $fa-var-arrow-down-9-1 }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-youtube-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-youtube-square { + #{$fa-icon-property}: unquote('"#{ $fa-var-square-youtube }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-youtube { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-xing { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-xing-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-xing-square { + #{$fa-icon-property}: unquote('"#{ $fa-var-square-xing }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-youtube-play { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-youtube-play { + #{$fa-icon-property}: unquote('"#{ $fa-var-youtube }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-dropbox { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-stack-overflow { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-instagram { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-flickr { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-adn { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-bitbucket { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-bitbucket-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-bitbucket-square { + #{$fa-icon-property}: unquote('"#{ $fa-var-bitbucket }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-tumblr { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-tumblr-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-tumblr-square { + #{$fa-icon-property}: unquote('"#{ $fa-var-square-tumblr }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-long-arrow-down { + #{$fa-icon-property}: unquote('"#{ $fa-var-down-long }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-long-arrow-up { + #{$fa-icon-property}: unquote('"#{ $fa-var-up-long }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-long-arrow-left { + #{$fa-icon-property}: unquote('"#{ $fa-var-left-long }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-long-arrow-right { + #{$fa-icon-property}: unquote('"#{ $fa-var-right-long }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-apple { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-windows { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-android { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-linux { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-dribbble { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-skype { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-foursquare { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-trello { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-gratipay { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-gittip { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-gittip { + #{$fa-icon-property}: unquote('"#{ $fa-var-gratipay }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-sun-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-sun-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-sun }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-moon-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-moon-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-moon }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-vk { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-weibo { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-renren { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-pagelines { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-stack-exchange { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-arrow-circle-o-right { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-arrow-circle-o-right { + #{$fa-icon-property}: unquote('"#{ $fa-var-circle-right }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-arrow-circle-o-left { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-arrow-circle-o-left { + #{$fa-icon-property}: unquote('"#{ $fa-var-circle-left }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-caret-square-o-left { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-caret-square-o-left { + #{$fa-icon-property}: unquote('"#{ $fa-var-square-caret-left }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-toggle-left { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-toggle-left { + #{$fa-icon-property}: unquote('"#{ $fa-var-square-caret-left }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-dot-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-dot-circle-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-circle-dot }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-vimeo-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-vimeo-square { + #{$fa-icon-property}: unquote('"#{ $fa-var-square-vimeo }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-try { + #{$fa-icon-property}: unquote('"#{ $fa-var-turkish-lira-sign }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-turkish-lira { + #{$fa-icon-property}: unquote('"#{ $fa-var-turkish-lira-sign }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-plus-square-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-plus-square-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-square-plus }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-slack { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-wordpress { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-openid { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-institution { + #{$fa-icon-property}: unquote('"#{ $fa-var-building-columns }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-bank { + #{$fa-icon-property}: unquote('"#{ $fa-var-building-columns }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-mortar-board { + #{$fa-icon-property}: unquote('"#{ $fa-var-graduation-cap }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-yahoo { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-google { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-reddit { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-reddit-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-reddit-square { + #{$fa-icon-property}: unquote('"#{ $fa-var-square-reddit }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-stumbleupon-circle { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-stumbleupon { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-delicious { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-digg { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-pied-piper-pp { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-pied-piper-alt { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-drupal { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-joomla { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-behance { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-behance-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-behance-square { + #{$fa-icon-property}: unquote('"#{ $fa-var-square-behance }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-steam { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-steam-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-steam-square { + #{$fa-icon-property}: unquote('"#{ $fa-var-square-steam }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-automobile { + #{$fa-icon-property}: unquote('"#{ $fa-var-car }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-cab { + #{$fa-icon-property}: unquote('"#{ $fa-var-taxi }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-spotify { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-deviantart { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-soundcloud { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-file-pdf-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-file-pdf-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-file-pdf }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-file-word-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-file-word-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-file-word }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-file-excel-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-file-excel-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-file-excel }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-file-powerpoint-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-file-powerpoint-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-file-powerpoint }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-file-image-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-file-image-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-file-image }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-file-photo-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-file-photo-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-file-image }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-file-picture-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-file-picture-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-file-image }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-file-archive-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-file-archive-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-file-zipper }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-file-zip-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-file-zip-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-file-zipper }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-file-audio-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-file-audio-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-file-audio }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-file-sound-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-file-sound-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-file-audio }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-file-video-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-file-video-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-file-video }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-file-movie-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-file-movie-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-file-video }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-file-code-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-file-code-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-file-code }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-vine { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-codepen { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-jsfiddle { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-life-bouy { + #{$fa-icon-property}: unquote('"#{ $fa-var-life-ring }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-life-buoy { + #{$fa-icon-property}: unquote('"#{ $fa-var-life-ring }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-life-saver { + #{$fa-icon-property}: unquote('"#{ $fa-var-life-ring }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-support { + #{$fa-icon-property}: unquote('"#{ $fa-var-life-ring }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-circle-o-notch { + #{$fa-icon-property}: unquote('"#{ $fa-var-circle-notch }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-rebel { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-ra { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-ra { + #{$fa-icon-property}: unquote('"#{ $fa-var-rebel }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-resistance { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-resistance { + #{$fa-icon-property}: unquote('"#{ $fa-var-rebel }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-empire { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-ge { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-ge { + #{$fa-icon-property}: unquote('"#{ $fa-var-empire }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-git-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-git-square { + #{$fa-icon-property}: unquote('"#{ $fa-var-square-git }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-git { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hacker-news { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-y-combinator-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-y-combinator-square { + #{$fa-icon-property}: unquote('"#{ $fa-var-hacker-news }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-yc-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-yc-square { + #{$fa-icon-property}: unquote('"#{ $fa-var-hacker-news }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-tencent-weibo { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-qq { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-weixin { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-wechat { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-wechat { + #{$fa-icon-property}: unquote('"#{ $fa-var-weixin }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-send { + #{$fa-icon-property}: unquote('"#{ $fa-var-paper-plane }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-paper-plane-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-paper-plane-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-paper-plane }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-send-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-send-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-paper-plane }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-circle-thin { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-circle-thin { + #{$fa-icon-property}: unquote('"#{ $fa-var-circle }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-header { + #{$fa-icon-property}: unquote('"#{ $fa-var-heading }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-futbol-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-futbol-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-futbol }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-soccer-ball-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-soccer-ball-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-futbol }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-slideshare { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-twitch { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-yelp { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-newspaper-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-newspaper-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-newspaper }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-paypal { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-google-wallet { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-cc-visa { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-cc-mastercard { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-cc-discover { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-cc-amex { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-cc-paypal { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-cc-stripe { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-bell-slash-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-bell-slash-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-bell-slash }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-trash { + #{$fa-icon-property}: unquote('"#{ $fa-var-trash-can }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-copyright { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-eyedropper { + #{$fa-icon-property}: unquote('"#{ $fa-var-eye-dropper }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-area-chart { + #{$fa-icon-property}: unquote('"#{ $fa-var-chart-area }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-pie-chart { + #{$fa-icon-property}: unquote('"#{ $fa-var-chart-pie }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-line-chart { + #{$fa-icon-property}: unquote('"#{ $fa-var-chart-line }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-lastfm { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-lastfm-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-lastfm-square { + #{$fa-icon-property}: unquote('"#{ $fa-var-square-lastfm }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-ioxhost { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-angellist { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-cc { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-cc { + #{$fa-icon-property}: unquote('"#{ $fa-var-closed-captioning }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-ils { + #{$fa-icon-property}: unquote('"#{ $fa-var-shekel-sign }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-shekel { + #{$fa-icon-property}: unquote('"#{ $fa-var-shekel-sign }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-sheqel { + #{$fa-icon-property}: unquote('"#{ $fa-var-shekel-sign }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-buysellads { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-connectdevelop { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-dashcube { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-forumbee { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-leanpub { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-sellsy { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-shirtsinbulk { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-simplybuilt { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-skyatlas { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-diamond { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-diamond { + #{$fa-icon-property}: unquote('"#{ $fa-var-gem }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-transgender { + #{$fa-icon-property}: unquote('"#{ $fa-var-mars-and-venus }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-intersex { + #{$fa-icon-property}: unquote('"#{ $fa-var-mars-and-venus }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-transgender-alt { + #{$fa-icon-property}: unquote('"#{ $fa-var-transgender }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-facebook-official { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-facebook-official { + #{$fa-icon-property}: unquote('"#{ $fa-var-facebook }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-pinterest-p { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-whatsapp { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hotel { + #{$fa-icon-property}: unquote('"#{ $fa-var-bed }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-viacoin { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-medium { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-y-combinator { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-yc { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-yc { + #{$fa-icon-property}: unquote('"#{ $fa-var-y-combinator }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-optin-monster { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-opencart { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-expeditedssl { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-battery-4 { + #{$fa-icon-property}: unquote('"#{ $fa-var-battery-full }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-battery { + #{$fa-icon-property}: unquote('"#{ $fa-var-battery-full }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-battery-3 { + #{$fa-icon-property}: unquote('"#{ $fa-var-battery-three-quarters }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-battery-2 { + #{$fa-icon-property}: unquote('"#{ $fa-var-battery-half }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-battery-1 { + #{$fa-icon-property}: unquote('"#{ $fa-var-battery-quarter }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-battery-0 { + #{$fa-icon-property}: unquote('"#{ $fa-var-battery-empty }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-object-group { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-object-ungroup { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-sticky-note-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-sticky-note-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-note-sticky }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-cc-jcb { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-cc-diners-club { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-clone { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hourglass-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-hourglass }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hourglass-1 { + #{$fa-icon-property}: unquote('"#{ $fa-var-hourglass-start }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hourglass-2 { + #{$fa-icon-property}: unquote('"#{ $fa-var-hourglass-half }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hourglass-3 { + #{$fa-icon-property}: unquote('"#{ $fa-var-hourglass-end }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hand-rock-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hand-rock-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-hand-back-fist }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hand-grab-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hand-grab-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-hand-back-fist }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hand-paper-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hand-paper-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-hand }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hand-stop-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hand-stop-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-hand }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hand-scissors-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hand-scissors-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-hand-scissors }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hand-lizard-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hand-lizard-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-hand-lizard }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hand-spock-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hand-spock-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-hand-spock }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hand-pointer-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hand-pointer-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-hand-pointer }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hand-peace-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hand-peace-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-hand-peace }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-registered { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-creative-commons { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-gg { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-gg-circle { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-odnoklassniki { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-odnoklassniki-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-odnoklassniki-square { + #{$fa-icon-property}: unquote('"#{ $fa-var-square-odnoklassniki }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-get-pocket { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-wikipedia-w { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-safari { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-chrome { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-firefox { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-opera { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-internet-explorer { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-television { + #{$fa-icon-property}: unquote('"#{ $fa-var-tv }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-contao { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-500px { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-amazon { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-calendar-plus-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-calendar-plus-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-calendar-plus }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-calendar-minus-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-calendar-minus-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-calendar-minus }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-calendar-times-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-calendar-times-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-calendar-xmark }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-calendar-check-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-calendar-check-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-calendar-check }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-map-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-map-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-map }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-commenting { + #{$fa-icon-property}: unquote('"#{ $fa-var-comment-dots }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-commenting-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-commenting-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-comment-dots }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-houzz { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-vimeo { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-vimeo { + #{$fa-icon-property}: unquote('"#{ $fa-var-vimeo-v }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-black-tie { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-fonticons { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-reddit-alien { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-edge { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-credit-card-alt { + #{$fa-icon-property}: unquote('"#{ $fa-var-credit-card }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-codiepie { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-modx { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-fort-awesome { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-usb { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-product-hunt { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-mixcloud { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-scribd { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-pause-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-pause-circle-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-circle-pause }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-stop-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-stop-circle-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-circle-stop }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-bluetooth { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-bluetooth-b { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-gitlab { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-wpbeginner { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-wpforms { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-envira { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-wheelchair-alt { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-wheelchair-alt { + #{$fa-icon-property}: unquote('"#{ $fa-var-accessible-icon }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-question-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-question-circle-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-circle-question }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-volume-control-phone { + #{$fa-icon-property}: unquote('"#{ $fa-var-phone-volume }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-asl-interpreting { + #{$fa-icon-property}: unquote('"#{ $fa-var-hands-asl-interpreting }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-deafness { + #{$fa-icon-property}: unquote('"#{ $fa-var-ear-deaf }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-hard-of-hearing { + #{$fa-icon-property}: unquote('"#{ $fa-var-ear-deaf }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-glide { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-glide-g { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-signing { + #{$fa-icon-property}: unquote('"#{ $fa-var-hands }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-viadeo { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-viadeo-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-viadeo-square { + #{$fa-icon-property}: unquote('"#{ $fa-var-square-viadeo }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-snapchat { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-snapchat-ghost { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-snapchat-ghost { + #{$fa-icon-property}: unquote('"#{ $fa-var-snapchat }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-snapchat-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-snapchat-square { + #{$fa-icon-property}: unquote('"#{ $fa-var-square-snapchat }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-pied-piper { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-first-order { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-yoast { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-themeisle { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-google-plus-official { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-google-plus-official { + #{$fa-icon-property}: unquote('"#{ $fa-var-google-plus }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-google-plus-circle { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-google-plus-circle { + #{$fa-icon-property}: unquote('"#{ $fa-var-google-plus }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-font-awesome { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-fa { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-fa { + #{$fa-icon-property}: unquote('"#{ $fa-var-font-awesome }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-handshake-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-handshake-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-handshake }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-envelope-open-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-envelope-open-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-envelope-open }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-linode { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-address-book-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-address-book-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-address-book }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-vcard { + #{$fa-icon-property}: unquote('"#{ $fa-var-address-card }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-address-card-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-address-card-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-address-card }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-vcard-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-vcard-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-address-card }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-user-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-user-circle-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-circle-user }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-user-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-user-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-user }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-id-badge { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-drivers-license { + #{$fa-icon-property}: unquote('"#{ $fa-var-id-card }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-id-card-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-id-card-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-id-card }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-drivers-license-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-drivers-license-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-id-card }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-quora { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-free-code-camp { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-telegram { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-thermometer-4 { + #{$fa-icon-property}: unquote('"#{ $fa-var-temperature-full }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-thermometer { + #{$fa-icon-property}: unquote('"#{ $fa-var-temperature-full }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-thermometer-3 { + #{$fa-icon-property}: unquote('"#{ $fa-var-temperature-three-quarters }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-thermometer-2 { + #{$fa-icon-property}: unquote('"#{ $fa-var-temperature-half }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-thermometer-1 { + #{$fa-icon-property}: unquote('"#{ $fa-var-temperature-quarter }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-thermometer-0 { + #{$fa-icon-property}: unquote('"#{ $fa-var-temperature-empty }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-bathtub { + #{$fa-icon-property}: unquote('"#{ $fa-var-bath }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-s15 { + #{$fa-icon-property}: unquote('"#{ $fa-var-bath }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-window-maximize { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-window-restore { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-times-rectangle { + #{$fa-icon-property}: unquote('"#{ $fa-var-rectangle-xmark }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-window-close-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-window-close-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-rectangle-xmark }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-times-rectangle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-times-rectangle-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-rectangle-xmark }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-bandcamp { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-grav { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-etsy { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-imdb { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-ravelry { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-eercast { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-eercast { + #{$fa-icon-property}: unquote('"#{ $fa-var-sellcast }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-snowflake-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-snowflake-o { + #{$fa-icon-property}: unquote('"#{ $fa-var-snowflake }"'); +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-superpowers { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-wpexplorer { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{variables.$fa-css-prefix}.#{variables.$fa-css-prefix}-meetup { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} diff --git a/web/static/assets/fontawesome/_sizing.scss b/web/static/assets/fontawesome/_sizing.scss new file mode 100644 index 00000000..7302445b --- /dev/null +++ b/web/static/assets/fontawesome/_sizing.scss @@ -0,0 +1,19 @@ +@use 'mixins'; +@use 'variables'; + +// sizing icons +// ------------------------- + +// literal magnification scale +@for $i from 1 through 10 { + .#{variables.$fa-css-prefix}-#{$i}x { + font-size: $i * 1em; + } +} + +// step-based scale (with alignment) +@each $size, $value in variables.$fa-sizes { + .#{variables.$fa-css-prefix}-#{$size} { + @include mixins.fa-size($value); + } +} diff --git a/web/static/assets/fontawesome/_stacked.scss b/web/static/assets/fontawesome/_stacked.scss new file mode 100644 index 00000000..d9a9d4e9 --- /dev/null +++ b/web/static/assets/fontawesome/_stacked.scss @@ -0,0 +1,32 @@ +// stacking icons +// ------------------------- + +.#{$fa-css-prefix}-stack { + display: inline-block; + height: 2em; + line-height: 2em; + position: relative; + vertical-align: $fa-stack-vertical-align; + width: $fa-stack-width; +} + +.#{$fa-css-prefix}-stack-1x, +.#{$fa-css-prefix}-stack-2x { + left: 0; + position: absolute; + text-align: center; + width: 100%; + z-index: var(--#{$fa-css-prefix}-stack-z-index, #{$fa-stack-z-index}); +} + +.#{$fa-css-prefix}-stack-1x { + line-height: inherit; +} + +.#{$fa-css-prefix}-stack-2x { + font-size: 2em; +} + +.#{$fa-css-prefix}-inverse { + color: var(--#{$fa-css-prefix}-inverse, #{$fa-inverse}); +} diff --git a/web/static/assets/fontawesome/_variables.scss b/web/static/assets/fontawesome/_variables.scss new file mode 100644 index 00000000..af7ffd11 --- /dev/null +++ b/web/static/assets/fontawesome/_variables.scss @@ -0,0 +1,5051 @@ +@use 'functions'; + +// variables +// -------------------------- + +$fa-css-prefix: fa !default; +$fa-style: 900 !default; +$fa-style-family: 'Font Awesome 6 Free' !default; + +$fa-icon-property: --fa; +$fa-duotone-icon-property: --fa--fa; + +$fa-display: inline-block !default; + +$fa-fw-width: functions.fa-divide(20em, 16) !default; +$fa-inverse: #fff !default; + +$fa-border-color: #eee !default; +$fa-border-padding: 0.2em 0.25em 0.15em !default; +$fa-border-radius: 0.1em !default; +$fa-border-style: solid !default; +$fa-border-width: 0.08em !default; + +$fa-size-scale-2xs: 10 !default; +$fa-size-scale-xs: 12 !default; +$fa-size-scale-sm: 14 !default; +$fa-size-scale-base: 16 !default; +$fa-size-scale-lg: 20 !default; +$fa-size-scale-xl: 24 !default; +$fa-size-scale-2xl: 32 !default; + +$fa-sizes: ( + '2xs': $fa-size-scale-2xs, + 'xs': $fa-size-scale-xs, + 'sm': $fa-size-scale-sm, + 'lg': $fa-size-scale-lg, + 'xl': $fa-size-scale-xl, + '2xl': $fa-size-scale-2xl, +) !default; + +$fa-li-width: 2em !default; +$fa-li-margin: $fa-li-width * functions.fa-divide(5, 4) !default; + +$fa-pull-margin: 0.3em !default; + +$fa-primary-opacity: 1 !default; +$fa-secondary-opacity: 0.4 !default; + +$fa-stack-vertical-align: middle !default; +$fa-stack-width: ($fa-fw-width * 2) !default; +$fa-stack-z-index: auto !default; + +$fa-font-display: block !default; +$fa-font-path: '../webfonts' !default; + +$fa-var-0: \30; +$fa-var-1: \31; +$fa-var-2: \32; +$fa-var-3: \33; +$fa-var-4: \34; +$fa-var-5: \35; +$fa-var-6: \36; +$fa-var-7: \37; +$fa-var-8: \38; +$fa-var-9: \39; +$fa-var-fill-drip: \f576; +$fa-var-arrows-to-circle: \e4bd; +$fa-var-circle-chevron-right: \f138; +$fa-var-chevron-circle-right: \f138; +$fa-var-at: \40; +$fa-var-trash-can: \f2ed; +$fa-var-trash-alt: \f2ed; +$fa-var-text-height: \f034; +$fa-var-user-xmark: \f235; +$fa-var-user-times: \f235; +$fa-var-stethoscope: \f0f1; +$fa-var-message: \f27a; +$fa-var-comment-alt: \f27a; +$fa-var-info: \f129; +$fa-var-down-left-and-up-right-to-center: \f422; +$fa-var-compress-alt: \f422; +$fa-var-explosion: \e4e9; +$fa-var-file-lines: \f15c; +$fa-var-file-alt: \f15c; +$fa-var-file-text: \f15c; +$fa-var-wave-square: \f83e; +$fa-var-ring: \f70b; +$fa-var-building-un: \e4d9; +$fa-var-dice-three: \f527; +$fa-var-calendar-days: \f073; +$fa-var-calendar-alt: \f073; +$fa-var-anchor-circle-check: \e4aa; +$fa-var-building-circle-arrow-right: \e4d1; +$fa-var-volleyball: \f45f; +$fa-var-volleyball-ball: \f45f; +$fa-var-arrows-up-to-line: \e4c2; +$fa-var-sort-down: \f0dd; +$fa-var-sort-desc: \f0dd; +$fa-var-circle-minus: \f056; +$fa-var-minus-circle: \f056; +$fa-var-door-open: \f52b; +$fa-var-right-from-bracket: \f2f5; +$fa-var-sign-out-alt: \f2f5; +$fa-var-atom: \f5d2; +$fa-var-soap: \e06e; +$fa-var-icons: \f86d; +$fa-var-heart-music-camera-bolt: \f86d; +$fa-var-microphone-lines-slash: \f539; +$fa-var-microphone-alt-slash: \f539; +$fa-var-bridge-circle-check: \e4c9; +$fa-var-pump-medical: \e06a; +$fa-var-fingerprint: \f577; +$fa-var-hand-point-right: \f0a4; +$fa-var-magnifying-glass-location: \f689; +$fa-var-search-location: \f689; +$fa-var-forward-step: \f051; +$fa-var-step-forward: \f051; +$fa-var-face-smile-beam: \f5b8; +$fa-var-smile-beam: \f5b8; +$fa-var-flag-checkered: \f11e; +$fa-var-football: \f44e; +$fa-var-football-ball: \f44e; +$fa-var-school-circle-exclamation: \e56c; +$fa-var-crop: \f125; +$fa-var-angles-down: \f103; +$fa-var-angle-double-down: \f103; +$fa-var-users-rectangle: \e594; +$fa-var-people-roof: \e537; +$fa-var-people-line: \e534; +$fa-var-beer-mug-empty: \f0fc; +$fa-var-beer: \f0fc; +$fa-var-diagram-predecessor: \e477; +$fa-var-arrow-up-long: \f176; +$fa-var-long-arrow-up: \f176; +$fa-var-fire-flame-simple: \f46a; +$fa-var-burn: \f46a; +$fa-var-person: \f183; +$fa-var-male: \f183; +$fa-var-laptop: \f109; +$fa-var-file-csv: \f6dd; +$fa-var-menorah: \f676; +$fa-var-truck-plane: \e58f; +$fa-var-record-vinyl: \f8d9; +$fa-var-face-grin-stars: \f587; +$fa-var-grin-stars: \f587; +$fa-var-bong: \f55c; +$fa-var-spaghetti-monster-flying: \f67b; +$fa-var-pastafarianism: \f67b; +$fa-var-arrow-down-up-across-line: \e4af; +$fa-var-spoon: \f2e5; +$fa-var-utensil-spoon: \f2e5; +$fa-var-jar-wheat: \e517; +$fa-var-envelopes-bulk: \f674; +$fa-var-mail-bulk: \f674; +$fa-var-file-circle-exclamation: \e4eb; +$fa-var-circle-h: \f47e; +$fa-var-hospital-symbol: \f47e; +$fa-var-pager: \f815; +$fa-var-address-book: \f2b9; +$fa-var-contact-book: \f2b9; +$fa-var-strikethrough: \f0cc; +$fa-var-k: \4b; +$fa-var-landmark-flag: \e51c; +$fa-var-pencil: \f303; +$fa-var-pencil-alt: \f303; +$fa-var-backward: \f04a; +$fa-var-caret-right: \f0da; +$fa-var-comments: \f086; +$fa-var-paste: \f0ea; +$fa-var-file-clipboard: \f0ea; +$fa-var-code-pull-request: \e13c; +$fa-var-clipboard-list: \f46d; +$fa-var-truck-ramp-box: \f4de; +$fa-var-truck-loading: \f4de; +$fa-var-user-check: \f4fc; +$fa-var-vial-virus: \e597; +$fa-var-sheet-plastic: \e571; +$fa-var-blog: \f781; +$fa-var-user-ninja: \f504; +$fa-var-person-arrow-up-from-line: \e539; +$fa-var-scroll-torah: \f6a0; +$fa-var-torah: \f6a0; +$fa-var-broom-ball: \f458; +$fa-var-quidditch: \f458; +$fa-var-quidditch-broom-ball: \f458; +$fa-var-toggle-off: \f204; +$fa-var-box-archive: \f187; +$fa-var-archive: \f187; +$fa-var-person-drowning: \e545; +$fa-var-arrow-down-9-1: \f886; +$fa-var-sort-numeric-desc: \f886; +$fa-var-sort-numeric-down-alt: \f886; +$fa-var-face-grin-tongue-squint: \f58a; +$fa-var-grin-tongue-squint: \f58a; +$fa-var-spray-can: \f5bd; +$fa-var-truck-monster: \f63b; +$fa-var-w: \57; +$fa-var-earth-africa: \f57c; +$fa-var-globe-africa: \f57c; +$fa-var-rainbow: \f75b; +$fa-var-circle-notch: \f1ce; +$fa-var-tablet-screen-button: \f3fa; +$fa-var-tablet-alt: \f3fa; +$fa-var-paw: \f1b0; +$fa-var-cloud: \f0c2; +$fa-var-trowel-bricks: \e58a; +$fa-var-face-flushed: \f579; +$fa-var-flushed: \f579; +$fa-var-hospital-user: \f80d; +$fa-var-tent-arrow-left-right: \e57f; +$fa-var-gavel: \f0e3; +$fa-var-legal: \f0e3; +$fa-var-binoculars: \f1e5; +$fa-var-microphone-slash: \f131; +$fa-var-box-tissue: \e05b; +$fa-var-motorcycle: \f21c; +$fa-var-bell-concierge: \f562; +$fa-var-concierge-bell: \f562; +$fa-var-pen-ruler: \f5ae; +$fa-var-pencil-ruler: \f5ae; +$fa-var-people-arrows: \e068; +$fa-var-people-arrows-left-right: \e068; +$fa-var-mars-and-venus-burst: \e523; +$fa-var-square-caret-right: \f152; +$fa-var-caret-square-right: \f152; +$fa-var-scissors: \f0c4; +$fa-var-cut: \f0c4; +$fa-var-sun-plant-wilt: \e57a; +$fa-var-toilets-portable: \e584; +$fa-var-hockey-puck: \f453; +$fa-var-table: \f0ce; +$fa-var-magnifying-glass-arrow-right: \e521; +$fa-var-tachograph-digital: \f566; +$fa-var-digital-tachograph: \f566; +$fa-var-users-slash: \e073; +$fa-var-clover: \e139; +$fa-var-reply: \f3e5; +$fa-var-mail-reply: \f3e5; +$fa-var-star-and-crescent: \f699; +$fa-var-house-fire: \e50c; +$fa-var-square-minus: \f146; +$fa-var-minus-square: \f146; +$fa-var-helicopter: \f533; +$fa-var-compass: \f14e; +$fa-var-square-caret-down: \f150; +$fa-var-caret-square-down: \f150; +$fa-var-file-circle-question: \e4ef; +$fa-var-laptop-code: \f5fc; +$fa-var-swatchbook: \f5c3; +$fa-var-prescription-bottle: \f485; +$fa-var-bars: \f0c9; +$fa-var-navicon: \f0c9; +$fa-var-people-group: \e533; +$fa-var-hourglass-end: \f253; +$fa-var-hourglass-3: \f253; +$fa-var-heart-crack: \f7a9; +$fa-var-heart-broken: \f7a9; +$fa-var-square-up-right: \f360; +$fa-var-external-link-square-alt: \f360; +$fa-var-face-kiss-beam: \f597; +$fa-var-kiss-beam: \f597; +$fa-var-film: \f008; +$fa-var-ruler-horizontal: \f547; +$fa-var-people-robbery: \e536; +$fa-var-lightbulb: \f0eb; +$fa-var-caret-left: \f0d9; +$fa-var-circle-exclamation: \f06a; +$fa-var-exclamation-circle: \f06a; +$fa-var-school-circle-xmark: \e56d; +$fa-var-arrow-right-from-bracket: \f08b; +$fa-var-sign-out: \f08b; +$fa-var-circle-chevron-down: \f13a; +$fa-var-chevron-circle-down: \f13a; +$fa-var-unlock-keyhole: \f13e; +$fa-var-unlock-alt: \f13e; +$fa-var-cloud-showers-heavy: \f740; +$fa-var-headphones-simple: \f58f; +$fa-var-headphones-alt: \f58f; +$fa-var-sitemap: \f0e8; +$fa-var-circle-dollar-to-slot: \f4b9; +$fa-var-donate: \f4b9; +$fa-var-memory: \f538; +$fa-var-road-spikes: \e568; +$fa-var-fire-burner: \e4f1; +$fa-var-flag: \f024; +$fa-var-hanukiah: \f6e6; +$fa-var-feather: \f52d; +$fa-var-volume-low: \f027; +$fa-var-volume-down: \f027; +$fa-var-comment-slash: \f4b3; +$fa-var-cloud-sun-rain: \f743; +$fa-var-compress: \f066; +$fa-var-wheat-awn: \e2cd; +$fa-var-wheat-alt: \e2cd; +$fa-var-ankh: \f644; +$fa-var-hands-holding-child: \e4fa; +$fa-var-asterisk: \2a; +$fa-var-square-check: \f14a; +$fa-var-check-square: \f14a; +$fa-var-peseta-sign: \e221; +$fa-var-heading: \f1dc; +$fa-var-header: \f1dc; +$fa-var-ghost: \f6e2; +$fa-var-list: \f03a; +$fa-var-list-squares: \f03a; +$fa-var-square-phone-flip: \f87b; +$fa-var-phone-square-alt: \f87b; +$fa-var-cart-plus: \f217; +$fa-var-gamepad: \f11b; +$fa-var-circle-dot: \f192; +$fa-var-dot-circle: \f192; +$fa-var-face-dizzy: \f567; +$fa-var-dizzy: \f567; +$fa-var-egg: \f7fb; +$fa-var-house-medical-circle-xmark: \e513; +$fa-var-campground: \f6bb; +$fa-var-folder-plus: \f65e; +$fa-var-futbol: \f1e3; +$fa-var-futbol-ball: \f1e3; +$fa-var-soccer-ball: \f1e3; +$fa-var-paintbrush: \f1fc; +$fa-var-paint-brush: \f1fc; +$fa-var-lock: \f023; +$fa-var-gas-pump: \f52f; +$fa-var-hot-tub-person: \f593; +$fa-var-hot-tub: \f593; +$fa-var-map-location: \f59f; +$fa-var-map-marked: \f59f; +$fa-var-house-flood-water: \e50e; +$fa-var-tree: \f1bb; +$fa-var-bridge-lock: \e4cc; +$fa-var-sack-dollar: \f81d; +$fa-var-pen-to-square: \f044; +$fa-var-edit: \f044; +$fa-var-car-side: \f5e4; +$fa-var-share-nodes: \f1e0; +$fa-var-share-alt: \f1e0; +$fa-var-heart-circle-minus: \e4ff; +$fa-var-hourglass-half: \f252; +$fa-var-hourglass-2: \f252; +$fa-var-microscope: \f610; +$fa-var-sink: \e06d; +$fa-var-bag-shopping: \f290; +$fa-var-shopping-bag: \f290; +$fa-var-arrow-down-z-a: \f881; +$fa-var-sort-alpha-desc: \f881; +$fa-var-sort-alpha-down-alt: \f881; +$fa-var-mitten: \f7b5; +$fa-var-person-rays: \e54d; +$fa-var-users: \f0c0; +$fa-var-eye-slash: \f070; +$fa-var-flask-vial: \e4f3; +$fa-var-hand: \f256; +$fa-var-hand-paper: \f256; +$fa-var-om: \f679; +$fa-var-worm: \e599; +$fa-var-house-circle-xmark: \e50b; +$fa-var-plug: \f1e6; +$fa-var-chevron-up: \f077; +$fa-var-hand-spock: \f259; +$fa-var-stopwatch: \f2f2; +$fa-var-face-kiss: \f596; +$fa-var-kiss: \f596; +$fa-var-bridge-circle-xmark: \e4cb; +$fa-var-face-grin-tongue: \f589; +$fa-var-grin-tongue: \f589; +$fa-var-chess-bishop: \f43a; +$fa-var-face-grin-wink: \f58c; +$fa-var-grin-wink: \f58c; +$fa-var-ear-deaf: \f2a4; +$fa-var-deaf: \f2a4; +$fa-var-deafness: \f2a4; +$fa-var-hard-of-hearing: \f2a4; +$fa-var-road-circle-check: \e564; +$fa-var-dice-five: \f523; +$fa-var-square-rss: \f143; +$fa-var-rss-square: \f143; +$fa-var-land-mine-on: \e51b; +$fa-var-i-cursor: \f246; +$fa-var-stamp: \f5bf; +$fa-var-stairs: \e289; +$fa-var-i: \49; +$fa-var-hryvnia-sign: \f6f2; +$fa-var-hryvnia: \f6f2; +$fa-var-pills: \f484; +$fa-var-face-grin-wide: \f581; +$fa-var-grin-alt: \f581; +$fa-var-tooth: \f5c9; +$fa-var-v: \56; +$fa-var-bangladeshi-taka-sign: \e2e6; +$fa-var-bicycle: \f206; +$fa-var-staff-snake: \e579; +$fa-var-rod-asclepius: \e579; +$fa-var-rod-snake: \e579; +$fa-var-staff-aesculapius: \e579; +$fa-var-head-side-cough-slash: \e062; +$fa-var-truck-medical: \f0f9; +$fa-var-ambulance: \f0f9; +$fa-var-wheat-awn-circle-exclamation: \e598; +$fa-var-snowman: \f7d0; +$fa-var-mortar-pestle: \f5a7; +$fa-var-road-barrier: \e562; +$fa-var-school: \f549; +$fa-var-igloo: \f7ae; +$fa-var-joint: \f595; +$fa-var-angle-right: \f105; +$fa-var-horse: \f6f0; +$fa-var-q: \51; +$fa-var-g: \47; +$fa-var-notes-medical: \f481; +$fa-var-temperature-half: \f2c9; +$fa-var-temperature-2: \f2c9; +$fa-var-thermometer-2: \f2c9; +$fa-var-thermometer-half: \f2c9; +$fa-var-dong-sign: \e169; +$fa-var-capsules: \f46b; +$fa-var-poo-storm: \f75a; +$fa-var-poo-bolt: \f75a; +$fa-var-face-frown-open: \f57a; +$fa-var-frown-open: \f57a; +$fa-var-hand-point-up: \f0a6; +$fa-var-money-bill: \f0d6; +$fa-var-bookmark: \f02e; +$fa-var-align-justify: \f039; +$fa-var-umbrella-beach: \f5ca; +$fa-var-helmet-un: \e503; +$fa-var-bullseye: \f140; +$fa-var-bacon: \f7e5; +$fa-var-hand-point-down: \f0a7; +$fa-var-arrow-up-from-bracket: \e09a; +$fa-var-folder: \f07b; +$fa-var-folder-blank: \f07b; +$fa-var-file-waveform: \f478; +$fa-var-file-medical-alt: \f478; +$fa-var-radiation: \f7b9; +$fa-var-chart-simple: \e473; +$fa-var-mars-stroke: \f229; +$fa-var-vial: \f492; +$fa-var-gauge: \f624; +$fa-var-dashboard: \f624; +$fa-var-gauge-med: \f624; +$fa-var-tachometer-alt-average: \f624; +$fa-var-wand-magic-sparkles: \e2ca; +$fa-var-magic-wand-sparkles: \e2ca; +$fa-var-e: \45; +$fa-var-pen-clip: \f305; +$fa-var-pen-alt: \f305; +$fa-var-bridge-circle-exclamation: \e4ca; +$fa-var-user: \f007; +$fa-var-school-circle-check: \e56b; +$fa-var-dumpster: \f793; +$fa-var-van-shuttle: \f5b6; +$fa-var-shuttle-van: \f5b6; +$fa-var-building-user: \e4da; +$fa-var-square-caret-left: \f191; +$fa-var-caret-square-left: \f191; +$fa-var-highlighter: \f591; +$fa-var-key: \f084; +$fa-var-bullhorn: \f0a1; +$fa-var-globe: \f0ac; +$fa-var-synagogue: \f69b; +$fa-var-person-half-dress: \e548; +$fa-var-road-bridge: \e563; +$fa-var-location-arrow: \f124; +$fa-var-c: \43; +$fa-var-tablet-button: \f10a; +$fa-var-building-lock: \e4d6; +$fa-var-pizza-slice: \f818; +$fa-var-money-bill-wave: \f53a; +$fa-var-chart-area: \f1fe; +$fa-var-area-chart: \f1fe; +$fa-var-house-flag: \e50d; +$fa-var-person-circle-minus: \e540; +$fa-var-ban: \f05e; +$fa-var-cancel: \f05e; +$fa-var-camera-rotate: \e0d8; +$fa-var-spray-can-sparkles: \f5d0; +$fa-var-air-freshener: \f5d0; +$fa-var-star: \f005; +$fa-var-repeat: \f363; +$fa-var-cross: \f654; +$fa-var-box: \f466; +$fa-var-venus-mars: \f228; +$fa-var-arrow-pointer: \f245; +$fa-var-mouse-pointer: \f245; +$fa-var-maximize: \f31e; +$fa-var-expand-arrows-alt: \f31e; +$fa-var-charging-station: \f5e7; +$fa-var-shapes: \f61f; +$fa-var-triangle-circle-square: \f61f; +$fa-var-shuffle: \f074; +$fa-var-random: \f074; +$fa-var-person-running: \f70c; +$fa-var-running: \f70c; +$fa-var-mobile-retro: \e527; +$fa-var-grip-lines-vertical: \f7a5; +$fa-var-spider: \f717; +$fa-var-hands-bound: \e4f9; +$fa-var-file-invoice-dollar: \f571; +$fa-var-plane-circle-exclamation: \e556; +$fa-var-x-ray: \f497; +$fa-var-spell-check: \f891; +$fa-var-slash: \f715; +$fa-var-computer-mouse: \f8cc; +$fa-var-mouse: \f8cc; +$fa-var-arrow-right-to-bracket: \f090; +$fa-var-sign-in: \f090; +$fa-var-shop-slash: \e070; +$fa-var-store-alt-slash: \e070; +$fa-var-server: \f233; +$fa-var-virus-covid-slash: \e4a9; +$fa-var-shop-lock: \e4a5; +$fa-var-hourglass-start: \f251; +$fa-var-hourglass-1: \f251; +$fa-var-blender-phone: \f6b6; +$fa-var-building-wheat: \e4db; +$fa-var-person-breastfeeding: \e53a; +$fa-var-right-to-bracket: \f2f6; +$fa-var-sign-in-alt: \f2f6; +$fa-var-venus: \f221; +$fa-var-passport: \f5ab; +$fa-var-thumbtack-slash: \e68f; +$fa-var-thumb-tack-slash: \e68f; +$fa-var-heart-pulse: \f21e; +$fa-var-heartbeat: \f21e; +$fa-var-people-carry-box: \f4ce; +$fa-var-people-carry: \f4ce; +$fa-var-temperature-high: \f769; +$fa-var-microchip: \f2db; +$fa-var-crown: \f521; +$fa-var-weight-hanging: \f5cd; +$fa-var-xmarks-lines: \e59a; +$fa-var-file-prescription: \f572; +$fa-var-weight-scale: \f496; +$fa-var-weight: \f496; +$fa-var-user-group: \f500; +$fa-var-user-friends: \f500; +$fa-var-arrow-up-a-z: \f15e; +$fa-var-sort-alpha-up: \f15e; +$fa-var-chess-knight: \f441; +$fa-var-face-laugh-squint: \f59b; +$fa-var-laugh-squint: \f59b; +$fa-var-wheelchair: \f193; +$fa-var-circle-arrow-up: \f0aa; +$fa-var-arrow-circle-up: \f0aa; +$fa-var-toggle-on: \f205; +$fa-var-person-walking: \f554; +$fa-var-walking: \f554; +$fa-var-l: \4c; +$fa-var-fire: \f06d; +$fa-var-bed-pulse: \f487; +$fa-var-procedures: \f487; +$fa-var-shuttle-space: \f197; +$fa-var-space-shuttle: \f197; +$fa-var-face-laugh: \f599; +$fa-var-laugh: \f599; +$fa-var-folder-open: \f07c; +$fa-var-heart-circle-plus: \e500; +$fa-var-code-fork: \e13b; +$fa-var-city: \f64f; +$fa-var-microphone-lines: \f3c9; +$fa-var-microphone-alt: \f3c9; +$fa-var-pepper-hot: \f816; +$fa-var-unlock: \f09c; +$fa-var-colon-sign: \e140; +$fa-var-headset: \f590; +$fa-var-store-slash: \e071; +$fa-var-road-circle-xmark: \e566; +$fa-var-user-minus: \f503; +$fa-var-mars-stroke-up: \f22a; +$fa-var-mars-stroke-v: \f22a; +$fa-var-champagne-glasses: \f79f; +$fa-var-glass-cheers: \f79f; +$fa-var-clipboard: \f328; +$fa-var-house-circle-exclamation: \e50a; +$fa-var-file-arrow-up: \f574; +$fa-var-file-upload: \f574; +$fa-var-wifi: \f1eb; +$fa-var-wifi-3: \f1eb; +$fa-var-wifi-strong: \f1eb; +$fa-var-bath: \f2cd; +$fa-var-bathtub: \f2cd; +$fa-var-underline: \f0cd; +$fa-var-user-pen: \f4ff; +$fa-var-user-edit: \f4ff; +$fa-var-signature: \f5b7; +$fa-var-stroopwafel: \f551; +$fa-var-bold: \f032; +$fa-var-anchor-lock: \e4ad; +$fa-var-building-ngo: \e4d7; +$fa-var-manat-sign: \e1d5; +$fa-var-not-equal: \f53e; +$fa-var-border-top-left: \f853; +$fa-var-border-style: \f853; +$fa-var-map-location-dot: \f5a0; +$fa-var-map-marked-alt: \f5a0; +$fa-var-jedi: \f669; +$fa-var-square-poll-vertical: \f681; +$fa-var-poll: \f681; +$fa-var-mug-hot: \f7b6; +$fa-var-car-battery: \f5df; +$fa-var-battery-car: \f5df; +$fa-var-gift: \f06b; +$fa-var-dice-two: \f528; +$fa-var-chess-queen: \f445; +$fa-var-glasses: \f530; +$fa-var-chess-board: \f43c; +$fa-var-building-circle-check: \e4d2; +$fa-var-person-chalkboard: \e53d; +$fa-var-mars-stroke-right: \f22b; +$fa-var-mars-stroke-h: \f22b; +$fa-var-hand-back-fist: \f255; +$fa-var-hand-rock: \f255; +$fa-var-square-caret-up: \f151; +$fa-var-caret-square-up: \f151; +$fa-var-cloud-showers-water: \e4e4; +$fa-var-chart-bar: \f080; +$fa-var-bar-chart: \f080; +$fa-var-hands-bubbles: \e05e; +$fa-var-hands-wash: \e05e; +$fa-var-less-than-equal: \f537; +$fa-var-train: \f238; +$fa-var-eye-low-vision: \f2a8; +$fa-var-low-vision: \f2a8; +$fa-var-crow: \f520; +$fa-var-sailboat: \e445; +$fa-var-window-restore: \f2d2; +$fa-var-square-plus: \f0fe; +$fa-var-plus-square: \f0fe; +$fa-var-torii-gate: \f6a1; +$fa-var-frog: \f52e; +$fa-var-bucket: \e4cf; +$fa-var-image: \f03e; +$fa-var-microphone: \f130; +$fa-var-cow: \f6c8; +$fa-var-caret-up: \f0d8; +$fa-var-screwdriver: \f54a; +$fa-var-folder-closed: \e185; +$fa-var-house-tsunami: \e515; +$fa-var-square-nfi: \e576; +$fa-var-arrow-up-from-ground-water: \e4b5; +$fa-var-martini-glass: \f57b; +$fa-var-glass-martini-alt: \f57b; +$fa-var-square-binary: \e69b; +$fa-var-rotate-left: \f2ea; +$fa-var-rotate-back: \f2ea; +$fa-var-rotate-backward: \f2ea; +$fa-var-undo-alt: \f2ea; +$fa-var-table-columns: \f0db; +$fa-var-columns: \f0db; +$fa-var-lemon: \f094; +$fa-var-head-side-mask: \e063; +$fa-var-handshake: \f2b5; +$fa-var-gem: \f3a5; +$fa-var-dolly: \f472; +$fa-var-dolly-box: \f472; +$fa-var-smoking: \f48d; +$fa-var-minimize: \f78c; +$fa-var-compress-arrows-alt: \f78c; +$fa-var-monument: \f5a6; +$fa-var-snowplow: \f7d2; +$fa-var-angles-right: \f101; +$fa-var-angle-double-right: \f101; +$fa-var-cannabis: \f55f; +$fa-var-circle-play: \f144; +$fa-var-play-circle: \f144; +$fa-var-tablets: \f490; +$fa-var-ethernet: \f796; +$fa-var-euro-sign: \f153; +$fa-var-eur: \f153; +$fa-var-euro: \f153; +$fa-var-chair: \f6c0; +$fa-var-circle-check: \f058; +$fa-var-check-circle: \f058; +$fa-var-circle-stop: \f28d; +$fa-var-stop-circle: \f28d; +$fa-var-compass-drafting: \f568; +$fa-var-drafting-compass: \f568; +$fa-var-plate-wheat: \e55a; +$fa-var-icicles: \f7ad; +$fa-var-person-shelter: \e54f; +$fa-var-neuter: \f22c; +$fa-var-id-badge: \f2c1; +$fa-var-marker: \f5a1; +$fa-var-face-laugh-beam: \f59a; +$fa-var-laugh-beam: \f59a; +$fa-var-helicopter-symbol: \e502; +$fa-var-universal-access: \f29a; +$fa-var-circle-chevron-up: \f139; +$fa-var-chevron-circle-up: \f139; +$fa-var-lari-sign: \e1c8; +$fa-var-volcano: \f770; +$fa-var-person-walking-dashed-line-arrow-right: \e553; +$fa-var-sterling-sign: \f154; +$fa-var-gbp: \f154; +$fa-var-pound-sign: \f154; +$fa-var-viruses: \e076; +$fa-var-square-person-confined: \e577; +$fa-var-user-tie: \f508; +$fa-var-arrow-down-long: \f175; +$fa-var-long-arrow-down: \f175; +$fa-var-tent-arrow-down-to-line: \e57e; +$fa-var-certificate: \f0a3; +$fa-var-reply-all: \f122; +$fa-var-mail-reply-all: \f122; +$fa-var-suitcase: \f0f2; +$fa-var-person-skating: \f7c5; +$fa-var-skating: \f7c5; +$fa-var-filter-circle-dollar: \f662; +$fa-var-funnel-dollar: \f662; +$fa-var-camera-retro: \f083; +$fa-var-circle-arrow-down: \f0ab; +$fa-var-arrow-circle-down: \f0ab; +$fa-var-file-import: \f56f; +$fa-var-arrow-right-to-file: \f56f; +$fa-var-square-arrow-up-right: \f14c; +$fa-var-external-link-square: \f14c; +$fa-var-box-open: \f49e; +$fa-var-scroll: \f70e; +$fa-var-spa: \f5bb; +$fa-var-location-pin-lock: \e51f; +$fa-var-pause: \f04c; +$fa-var-hill-avalanche: \e507; +$fa-var-temperature-empty: \f2cb; +$fa-var-temperature-0: \f2cb; +$fa-var-thermometer-0: \f2cb; +$fa-var-thermometer-empty: \f2cb; +$fa-var-bomb: \f1e2; +$fa-var-registered: \f25d; +$fa-var-address-card: \f2bb; +$fa-var-contact-card: \f2bb; +$fa-var-vcard: \f2bb; +$fa-var-scale-unbalanced-flip: \f516; +$fa-var-balance-scale-right: \f516; +$fa-var-subscript: \f12c; +$fa-var-diamond-turn-right: \f5eb; +$fa-var-directions: \f5eb; +$fa-var-burst: \e4dc; +$fa-var-house-laptop: \e066; +$fa-var-laptop-house: \e066; +$fa-var-face-tired: \f5c8; +$fa-var-tired: \f5c8; +$fa-var-money-bills: \e1f3; +$fa-var-smog: \f75f; +$fa-var-crutch: \f7f7; +$fa-var-cloud-arrow-up: \f0ee; +$fa-var-cloud-upload: \f0ee; +$fa-var-cloud-upload-alt: \f0ee; +$fa-var-palette: \f53f; +$fa-var-arrows-turn-right: \e4c0; +$fa-var-vest: \e085; +$fa-var-ferry: \e4ea; +$fa-var-arrows-down-to-people: \e4b9; +$fa-var-seedling: \f4d8; +$fa-var-sprout: \f4d8; +$fa-var-left-right: \f337; +$fa-var-arrows-alt-h: \f337; +$fa-var-boxes-packing: \e4c7; +$fa-var-circle-arrow-left: \f0a8; +$fa-var-arrow-circle-left: \f0a8; +$fa-var-group-arrows-rotate: \e4f6; +$fa-var-bowl-food: \e4c6; +$fa-var-candy-cane: \f786; +$fa-var-arrow-down-wide-short: \f160; +$fa-var-sort-amount-asc: \f160; +$fa-var-sort-amount-down: \f160; +$fa-var-cloud-bolt: \f76c; +$fa-var-thunderstorm: \f76c; +$fa-var-text-slash: \f87d; +$fa-var-remove-format: \f87d; +$fa-var-face-smile-wink: \f4da; +$fa-var-smile-wink: \f4da; +$fa-var-file-word: \f1c2; +$fa-var-file-powerpoint: \f1c4; +$fa-var-arrows-left-right: \f07e; +$fa-var-arrows-h: \f07e; +$fa-var-house-lock: \e510; +$fa-var-cloud-arrow-down: \f0ed; +$fa-var-cloud-download: \f0ed; +$fa-var-cloud-download-alt: \f0ed; +$fa-var-children: \e4e1; +$fa-var-chalkboard: \f51b; +$fa-var-blackboard: \f51b; +$fa-var-user-large-slash: \f4fa; +$fa-var-user-alt-slash: \f4fa; +$fa-var-envelope-open: \f2b6; +$fa-var-handshake-simple-slash: \e05f; +$fa-var-handshake-alt-slash: \e05f; +$fa-var-mattress-pillow: \e525; +$fa-var-guarani-sign: \e19a; +$fa-var-arrows-rotate: \f021; +$fa-var-refresh: \f021; +$fa-var-sync: \f021; +$fa-var-fire-extinguisher: \f134; +$fa-var-cruzeiro-sign: \e152; +$fa-var-greater-than-equal: \f532; +$fa-var-shield-halved: \f3ed; +$fa-var-shield-alt: \f3ed; +$fa-var-book-atlas: \f558; +$fa-var-atlas: \f558; +$fa-var-virus: \e074; +$fa-var-envelope-circle-check: \e4e8; +$fa-var-layer-group: \f5fd; +$fa-var-arrows-to-dot: \e4be; +$fa-var-archway: \f557; +$fa-var-heart-circle-check: \e4fd; +$fa-var-house-chimney-crack: \f6f1; +$fa-var-house-damage: \f6f1; +$fa-var-file-zipper: \f1c6; +$fa-var-file-archive: \f1c6; +$fa-var-square: \f0c8; +$fa-var-martini-glass-empty: \f000; +$fa-var-glass-martini: \f000; +$fa-var-couch: \f4b8; +$fa-var-cedi-sign: \e0df; +$fa-var-italic: \f033; +$fa-var-table-cells-column-lock: \e678; +$fa-var-church: \f51d; +$fa-var-comments-dollar: \f653; +$fa-var-democrat: \f747; +$fa-var-z: \5a; +$fa-var-person-skiing: \f7c9; +$fa-var-skiing: \f7c9; +$fa-var-road-lock: \e567; +$fa-var-a: \41; +$fa-var-temperature-arrow-down: \e03f; +$fa-var-temperature-down: \e03f; +$fa-var-feather-pointed: \f56b; +$fa-var-feather-alt: \f56b; +$fa-var-p: \50; +$fa-var-snowflake: \f2dc; +$fa-var-newspaper: \f1ea; +$fa-var-rectangle-ad: \f641; +$fa-var-ad: \f641; +$fa-var-circle-arrow-right: \f0a9; +$fa-var-arrow-circle-right: \f0a9; +$fa-var-filter-circle-xmark: \e17b; +$fa-var-locust: \e520; +$fa-var-sort: \f0dc; +$fa-var-unsorted: \f0dc; +$fa-var-list-ol: \f0cb; +$fa-var-list-1-2: \f0cb; +$fa-var-list-numeric: \f0cb; +$fa-var-person-dress-burst: \e544; +$fa-var-money-check-dollar: \f53d; +$fa-var-money-check-alt: \f53d; +$fa-var-vector-square: \f5cb; +$fa-var-bread-slice: \f7ec; +$fa-var-language: \f1ab; +$fa-var-face-kiss-wink-heart: \f598; +$fa-var-kiss-wink-heart: \f598; +$fa-var-filter: \f0b0; +$fa-var-question: \3f; +$fa-var-file-signature: \f573; +$fa-var-up-down-left-right: \f0b2; +$fa-var-arrows-alt: \f0b2; +$fa-var-house-chimney-user: \e065; +$fa-var-hand-holding-heart: \f4be; +$fa-var-puzzle-piece: \f12e; +$fa-var-money-check: \f53c; +$fa-var-star-half-stroke: \f5c0; +$fa-var-star-half-alt: \f5c0; +$fa-var-code: \f121; +$fa-var-whiskey-glass: \f7a0; +$fa-var-glass-whiskey: \f7a0; +$fa-var-building-circle-exclamation: \e4d3; +$fa-var-magnifying-glass-chart: \e522; +$fa-var-arrow-up-right-from-square: \f08e; +$fa-var-external-link: \f08e; +$fa-var-cubes-stacked: \e4e6; +$fa-var-won-sign: \f159; +$fa-var-krw: \f159; +$fa-var-won: \f159; +$fa-var-virus-covid: \e4a8; +$fa-var-austral-sign: \e0a9; +$fa-var-f: \46; +$fa-var-leaf: \f06c; +$fa-var-road: \f018; +$fa-var-taxi: \f1ba; +$fa-var-cab: \f1ba; +$fa-var-person-circle-plus: \e541; +$fa-var-chart-pie: \f200; +$fa-var-pie-chart: \f200; +$fa-var-bolt-lightning: \e0b7; +$fa-var-sack-xmark: \e56a; +$fa-var-file-excel: \f1c3; +$fa-var-file-contract: \f56c; +$fa-var-fish-fins: \e4f2; +$fa-var-building-flag: \e4d5; +$fa-var-face-grin-beam: \f582; +$fa-var-grin-beam: \f582; +$fa-var-object-ungroup: \f248; +$fa-var-poop: \f619; +$fa-var-location-pin: \f041; +$fa-var-map-marker: \f041; +$fa-var-kaaba: \f66b; +$fa-var-toilet-paper: \f71e; +$fa-var-helmet-safety: \f807; +$fa-var-hard-hat: \f807; +$fa-var-hat-hard: \f807; +$fa-var-eject: \f052; +$fa-var-circle-right: \f35a; +$fa-var-arrow-alt-circle-right: \f35a; +$fa-var-plane-circle-check: \e555; +$fa-var-face-rolling-eyes: \f5a5; +$fa-var-meh-rolling-eyes: \f5a5; +$fa-var-object-group: \f247; +$fa-var-chart-line: \f201; +$fa-var-line-chart: \f201; +$fa-var-mask-ventilator: \e524; +$fa-var-arrow-right: \f061; +$fa-var-signs-post: \f277; +$fa-var-map-signs: \f277; +$fa-var-cash-register: \f788; +$fa-var-person-circle-question: \e542; +$fa-var-h: \48; +$fa-var-tarp: \e57b; +$fa-var-screwdriver-wrench: \f7d9; +$fa-var-tools: \f7d9; +$fa-var-arrows-to-eye: \e4bf; +$fa-var-plug-circle-bolt: \e55b; +$fa-var-heart: \f004; +$fa-var-mars-and-venus: \f224; +$fa-var-house-user: \e1b0; +$fa-var-home-user: \e1b0; +$fa-var-dumpster-fire: \f794; +$fa-var-house-crack: \e3b1; +$fa-var-martini-glass-citrus: \f561; +$fa-var-cocktail: \f561; +$fa-var-face-surprise: \f5c2; +$fa-var-surprise: \f5c2; +$fa-var-bottle-water: \e4c5; +$fa-var-circle-pause: \f28b; +$fa-var-pause-circle: \f28b; +$fa-var-toilet-paper-slash: \e072; +$fa-var-apple-whole: \f5d1; +$fa-var-apple-alt: \f5d1; +$fa-var-kitchen-set: \e51a; +$fa-var-r: \52; +$fa-var-temperature-quarter: \f2ca; +$fa-var-temperature-1: \f2ca; +$fa-var-thermometer-1: \f2ca; +$fa-var-thermometer-quarter: \f2ca; +$fa-var-cube: \f1b2; +$fa-var-bitcoin-sign: \e0b4; +$fa-var-shield-dog: \e573; +$fa-var-solar-panel: \f5ba; +$fa-var-lock-open: \f3c1; +$fa-var-elevator: \e16d; +$fa-var-money-bill-transfer: \e528; +$fa-var-money-bill-trend-up: \e529; +$fa-var-house-flood-water-circle-arrow-right: \e50f; +$fa-var-square-poll-horizontal: \f682; +$fa-var-poll-h: \f682; +$fa-var-circle: \f111; +$fa-var-backward-fast: \f049; +$fa-var-fast-backward: \f049; +$fa-var-recycle: \f1b8; +$fa-var-user-astronaut: \f4fb; +$fa-var-plane-slash: \e069; +$fa-var-trademark: \f25c; +$fa-var-basketball: \f434; +$fa-var-basketball-ball: \f434; +$fa-var-satellite-dish: \f7c0; +$fa-var-circle-up: \f35b; +$fa-var-arrow-alt-circle-up: \f35b; +$fa-var-mobile-screen-button: \f3cd; +$fa-var-mobile-alt: \f3cd; +$fa-var-volume-high: \f028; +$fa-var-volume-up: \f028; +$fa-var-users-rays: \e593; +$fa-var-wallet: \f555; +$fa-var-clipboard-check: \f46c; +$fa-var-file-audio: \f1c7; +$fa-var-burger: \f805; +$fa-var-hamburger: \f805; +$fa-var-wrench: \f0ad; +$fa-var-bugs: \e4d0; +$fa-var-rupee-sign: \f156; +$fa-var-rupee: \f156; +$fa-var-file-image: \f1c5; +$fa-var-circle-question: \f059; +$fa-var-question-circle: \f059; +$fa-var-plane-departure: \f5b0; +$fa-var-handshake-slash: \e060; +$fa-var-book-bookmark: \e0bb; +$fa-var-code-branch: \f126; +$fa-var-hat-cowboy: \f8c0; +$fa-var-bridge: \e4c8; +$fa-var-phone-flip: \f879; +$fa-var-phone-alt: \f879; +$fa-var-truck-front: \e2b7; +$fa-var-cat: \f6be; +$fa-var-anchor-circle-exclamation: \e4ab; +$fa-var-truck-field: \e58d; +$fa-var-route: \f4d7; +$fa-var-clipboard-question: \e4e3; +$fa-var-panorama: \e209; +$fa-var-comment-medical: \f7f5; +$fa-var-teeth-open: \f62f; +$fa-var-file-circle-minus: \e4ed; +$fa-var-tags: \f02c; +$fa-var-wine-glass: \f4e3; +$fa-var-forward-fast: \f050; +$fa-var-fast-forward: \f050; +$fa-var-face-meh-blank: \f5a4; +$fa-var-meh-blank: \f5a4; +$fa-var-square-parking: \f540; +$fa-var-parking: \f540; +$fa-var-house-signal: \e012; +$fa-var-bars-progress: \f828; +$fa-var-tasks-alt: \f828; +$fa-var-faucet-drip: \e006; +$fa-var-cart-flatbed: \f474; +$fa-var-dolly-flatbed: \f474; +$fa-var-ban-smoking: \f54d; +$fa-var-smoking-ban: \f54d; +$fa-var-terminal: \f120; +$fa-var-mobile-button: \f10b; +$fa-var-house-medical-flag: \e514; +$fa-var-basket-shopping: \f291; +$fa-var-shopping-basket: \f291; +$fa-var-tape: \f4db; +$fa-var-bus-simple: \f55e; +$fa-var-bus-alt: \f55e; +$fa-var-eye: \f06e; +$fa-var-face-sad-cry: \f5b3; +$fa-var-sad-cry: \f5b3; +$fa-var-audio-description: \f29e; +$fa-var-person-military-to-person: \e54c; +$fa-var-file-shield: \e4f0; +$fa-var-user-slash: \f506; +$fa-var-pen: \f304; +$fa-var-tower-observation: \e586; +$fa-var-file-code: \f1c9; +$fa-var-signal: \f012; +$fa-var-signal-5: \f012; +$fa-var-signal-perfect: \f012; +$fa-var-bus: \f207; +$fa-var-heart-circle-xmark: \e501; +$fa-var-house-chimney: \e3af; +$fa-var-home-lg: \e3af; +$fa-var-window-maximize: \f2d0; +$fa-var-face-frown: \f119; +$fa-var-frown: \f119; +$fa-var-prescription: \f5b1; +$fa-var-shop: \f54f; +$fa-var-store-alt: \f54f; +$fa-var-floppy-disk: \f0c7; +$fa-var-save: \f0c7; +$fa-var-vihara: \f6a7; +$fa-var-scale-unbalanced: \f515; +$fa-var-balance-scale-left: \f515; +$fa-var-sort-up: \f0de; +$fa-var-sort-asc: \f0de; +$fa-var-comment-dots: \f4ad; +$fa-var-commenting: \f4ad; +$fa-var-plant-wilt: \e5aa; +$fa-var-diamond: \f219; +$fa-var-face-grin-squint: \f585; +$fa-var-grin-squint: \f585; +$fa-var-hand-holding-dollar: \f4c0; +$fa-var-hand-holding-usd: \f4c0; +$fa-var-chart-diagram: \e695; +$fa-var-bacterium: \e05a; +$fa-var-hand-pointer: \f25a; +$fa-var-drum-steelpan: \f56a; +$fa-var-hand-scissors: \f257; +$fa-var-hands-praying: \f684; +$fa-var-praying-hands: \f684; +$fa-var-arrow-rotate-right: \f01e; +$fa-var-arrow-right-rotate: \f01e; +$fa-var-arrow-rotate-forward: \f01e; +$fa-var-redo: \f01e; +$fa-var-biohazard: \f780; +$fa-var-location-crosshairs: \f601; +$fa-var-location: \f601; +$fa-var-mars-double: \f227; +$fa-var-child-dress: \e59c; +$fa-var-users-between-lines: \e591; +$fa-var-lungs-virus: \e067; +$fa-var-face-grin-tears: \f588; +$fa-var-grin-tears: \f588; +$fa-var-phone: \f095; +$fa-var-calendar-xmark: \f273; +$fa-var-calendar-times: \f273; +$fa-var-child-reaching: \e59d; +$fa-var-head-side-virus: \e064; +$fa-var-user-gear: \f4fe; +$fa-var-user-cog: \f4fe; +$fa-var-arrow-up-1-9: \f163; +$fa-var-sort-numeric-up: \f163; +$fa-var-door-closed: \f52a; +$fa-var-shield-virus: \e06c; +$fa-var-dice-six: \f526; +$fa-var-mosquito-net: \e52c; +$fa-var-file-fragment: \e697; +$fa-var-bridge-water: \e4ce; +$fa-var-person-booth: \f756; +$fa-var-text-width: \f035; +$fa-var-hat-wizard: \f6e8; +$fa-var-pen-fancy: \f5ac; +$fa-var-person-digging: \f85e; +$fa-var-digging: \f85e; +$fa-var-trash: \f1f8; +$fa-var-gauge-simple: \f629; +$fa-var-gauge-simple-med: \f629; +$fa-var-tachometer-average: \f629; +$fa-var-book-medical: \f7e6; +$fa-var-poo: \f2fe; +$fa-var-quote-right: \f10e; +$fa-var-quote-right-alt: \f10e; +$fa-var-shirt: \f553; +$fa-var-t-shirt: \f553; +$fa-var-tshirt: \f553; +$fa-var-cubes: \f1b3; +$fa-var-divide: \f529; +$fa-var-tenge-sign: \f7d7; +$fa-var-tenge: \f7d7; +$fa-var-headphones: \f025; +$fa-var-hands-holding: \f4c2; +$fa-var-hands-clapping: \e1a8; +$fa-var-republican: \f75e; +$fa-var-arrow-left: \f060; +$fa-var-person-circle-xmark: \e543; +$fa-var-ruler: \f545; +$fa-var-align-left: \f036; +$fa-var-dice-d6: \f6d1; +$fa-var-restroom: \f7bd; +$fa-var-j: \4a; +$fa-var-users-viewfinder: \e595; +$fa-var-file-video: \f1c8; +$fa-var-up-right-from-square: \f35d; +$fa-var-external-link-alt: \f35d; +$fa-var-table-cells: \f00a; +$fa-var-th: \f00a; +$fa-var-file-pdf: \f1c1; +$fa-var-book-bible: \f647; +$fa-var-bible: \f647; +$fa-var-o: \4f; +$fa-var-suitcase-medical: \f0fa; +$fa-var-medkit: \f0fa; +$fa-var-user-secret: \f21b; +$fa-var-otter: \f700; +$fa-var-person-dress: \f182; +$fa-var-female: \f182; +$fa-var-comment-dollar: \f651; +$fa-var-business-time: \f64a; +$fa-var-briefcase-clock: \f64a; +$fa-var-table-cells-large: \f009; +$fa-var-th-large: \f009; +$fa-var-book-tanakh: \f827; +$fa-var-tanakh: \f827; +$fa-var-phone-volume: \f2a0; +$fa-var-volume-control-phone: \f2a0; +$fa-var-hat-cowboy-side: \f8c1; +$fa-var-clipboard-user: \f7f3; +$fa-var-child: \f1ae; +$fa-var-lira-sign: \f195; +$fa-var-satellite: \f7bf; +$fa-var-plane-lock: \e558; +$fa-var-tag: \f02b; +$fa-var-comment: \f075; +$fa-var-cake-candles: \f1fd; +$fa-var-birthday-cake: \f1fd; +$fa-var-cake: \f1fd; +$fa-var-envelope: \f0e0; +$fa-var-angles-up: \f102; +$fa-var-angle-double-up: \f102; +$fa-var-paperclip: \f0c6; +$fa-var-arrow-right-to-city: \e4b3; +$fa-var-ribbon: \f4d6; +$fa-var-lungs: \f604; +$fa-var-arrow-up-9-1: \f887; +$fa-var-sort-numeric-up-alt: \f887; +$fa-var-litecoin-sign: \e1d3; +$fa-var-border-none: \f850; +$fa-var-circle-nodes: \e4e2; +$fa-var-parachute-box: \f4cd; +$fa-var-indent: \f03c; +$fa-var-truck-field-un: \e58e; +$fa-var-hourglass: \f254; +$fa-var-hourglass-empty: \f254; +$fa-var-mountain: \f6fc; +$fa-var-user-doctor: \f0f0; +$fa-var-user-md: \f0f0; +$fa-var-circle-info: \f05a; +$fa-var-info-circle: \f05a; +$fa-var-cloud-meatball: \f73b; +$fa-var-camera: \f030; +$fa-var-camera-alt: \f030; +$fa-var-square-virus: \e578; +$fa-var-meteor: \f753; +$fa-var-car-on: \e4dd; +$fa-var-sleigh: \f7cc; +$fa-var-arrow-down-1-9: \f162; +$fa-var-sort-numeric-asc: \f162; +$fa-var-sort-numeric-down: \f162; +$fa-var-hand-holding-droplet: \f4c1; +$fa-var-hand-holding-water: \f4c1; +$fa-var-water: \f773; +$fa-var-calendar-check: \f274; +$fa-var-braille: \f2a1; +$fa-var-prescription-bottle-medical: \f486; +$fa-var-prescription-bottle-alt: \f486; +$fa-var-landmark: \f66f; +$fa-var-truck: \f0d1; +$fa-var-crosshairs: \f05b; +$fa-var-person-cane: \e53c; +$fa-var-tent: \e57d; +$fa-var-vest-patches: \e086; +$fa-var-check-double: \f560; +$fa-var-arrow-down-a-z: \f15d; +$fa-var-sort-alpha-asc: \f15d; +$fa-var-sort-alpha-down: \f15d; +$fa-var-money-bill-wheat: \e52a; +$fa-var-cookie: \f563; +$fa-var-arrow-rotate-left: \f0e2; +$fa-var-arrow-left-rotate: \f0e2; +$fa-var-arrow-rotate-back: \f0e2; +$fa-var-arrow-rotate-backward: \f0e2; +$fa-var-undo: \f0e2; +$fa-var-hard-drive: \f0a0; +$fa-var-hdd: \f0a0; +$fa-var-face-grin-squint-tears: \f586; +$fa-var-grin-squint-tears: \f586; +$fa-var-dumbbell: \f44b; +$fa-var-rectangle-list: \f022; +$fa-var-list-alt: \f022; +$fa-var-tarp-droplet: \e57c; +$fa-var-house-medical-circle-check: \e511; +$fa-var-person-skiing-nordic: \f7ca; +$fa-var-skiing-nordic: \f7ca; +$fa-var-calendar-plus: \f271; +$fa-var-plane-arrival: \f5af; +$fa-var-circle-left: \f359; +$fa-var-arrow-alt-circle-left: \f359; +$fa-var-train-subway: \f239; +$fa-var-subway: \f239; +$fa-var-chart-gantt: \e0e4; +$fa-var-indian-rupee-sign: \e1bc; +$fa-var-indian-rupee: \e1bc; +$fa-var-inr: \e1bc; +$fa-var-crop-simple: \f565; +$fa-var-crop-alt: \f565; +$fa-var-money-bill-1: \f3d1; +$fa-var-money-bill-alt: \f3d1; +$fa-var-left-long: \f30a; +$fa-var-long-arrow-alt-left: \f30a; +$fa-var-dna: \f471; +$fa-var-virus-slash: \e075; +$fa-var-minus: \f068; +$fa-var-subtract: \f068; +$fa-var-chess: \f439; +$fa-var-arrow-left-long: \f177; +$fa-var-long-arrow-left: \f177; +$fa-var-plug-circle-check: \e55c; +$fa-var-street-view: \f21d; +$fa-var-franc-sign: \e18f; +$fa-var-volume-off: \f026; +$fa-var-hands-asl-interpreting: \f2a3; +$fa-var-american-sign-language-interpreting: \f2a3; +$fa-var-asl-interpreting: \f2a3; +$fa-var-hands-american-sign-language-interpreting: \f2a3; +$fa-var-gear: \f013; +$fa-var-cog: \f013; +$fa-var-droplet-slash: \f5c7; +$fa-var-tint-slash: \f5c7; +$fa-var-mosque: \f678; +$fa-var-mosquito: \e52b; +$fa-var-star-of-david: \f69a; +$fa-var-person-military-rifle: \e54b; +$fa-var-cart-shopping: \f07a; +$fa-var-shopping-cart: \f07a; +$fa-var-vials: \f493; +$fa-var-plug-circle-plus: \e55f; +$fa-var-place-of-worship: \f67f; +$fa-var-grip-vertical: \f58e; +$fa-var-hexagon-nodes: \e699; +$fa-var-arrow-turn-up: \f148; +$fa-var-level-up: \f148; +$fa-var-u: \55; +$fa-var-square-root-variable: \f698; +$fa-var-square-root-alt: \f698; +$fa-var-clock: \f017; +$fa-var-clock-four: \f017; +$fa-var-backward-step: \f048; +$fa-var-step-backward: \f048; +$fa-var-pallet: \f482; +$fa-var-faucet: \e005; +$fa-var-baseball-bat-ball: \f432; +$fa-var-s: \53; +$fa-var-timeline: \e29c; +$fa-var-keyboard: \f11c; +$fa-var-caret-down: \f0d7; +$fa-var-house-chimney-medical: \f7f2; +$fa-var-clinic-medical: \f7f2; +$fa-var-temperature-three-quarters: \f2c8; +$fa-var-temperature-3: \f2c8; +$fa-var-thermometer-3: \f2c8; +$fa-var-thermometer-three-quarters: \f2c8; +$fa-var-mobile-screen: \f3cf; +$fa-var-mobile-android-alt: \f3cf; +$fa-var-plane-up: \e22d; +$fa-var-piggy-bank: \f4d3; +$fa-var-battery-half: \f242; +$fa-var-battery-3: \f242; +$fa-var-mountain-city: \e52e; +$fa-var-coins: \f51e; +$fa-var-khanda: \f66d; +$fa-var-sliders: \f1de; +$fa-var-sliders-h: \f1de; +$fa-var-folder-tree: \f802; +$fa-var-network-wired: \f6ff; +$fa-var-map-pin: \f276; +$fa-var-hamsa: \f665; +$fa-var-cent-sign: \e3f5; +$fa-var-flask: \f0c3; +$fa-var-person-pregnant: \e31e; +$fa-var-wand-sparkles: \f72b; +$fa-var-ellipsis-vertical: \f142; +$fa-var-ellipsis-v: \f142; +$fa-var-ticket: \f145; +$fa-var-power-off: \f011; +$fa-var-right-long: \f30b; +$fa-var-long-arrow-alt-right: \f30b; +$fa-var-flag-usa: \f74d; +$fa-var-laptop-file: \e51d; +$fa-var-tty: \f1e4; +$fa-var-teletype: \f1e4; +$fa-var-diagram-next: \e476; +$fa-var-person-rifle: \e54e; +$fa-var-house-medical-circle-exclamation: \e512; +$fa-var-closed-captioning: \f20a; +$fa-var-person-hiking: \f6ec; +$fa-var-hiking: \f6ec; +$fa-var-venus-double: \f226; +$fa-var-images: \f302; +$fa-var-calculator: \f1ec; +$fa-var-people-pulling: \e535; +$fa-var-n: \4e; +$fa-var-cable-car: \f7da; +$fa-var-tram: \f7da; +$fa-var-cloud-rain: \f73d; +$fa-var-building-circle-xmark: \e4d4; +$fa-var-ship: \f21a; +$fa-var-arrows-down-to-line: \e4b8; +$fa-var-download: \f019; +$fa-var-face-grin: \f580; +$fa-var-grin: \f580; +$fa-var-delete-left: \f55a; +$fa-var-backspace: \f55a; +$fa-var-eye-dropper: \f1fb; +$fa-var-eye-dropper-empty: \f1fb; +$fa-var-eyedropper: \f1fb; +$fa-var-file-circle-check: \e5a0; +$fa-var-forward: \f04e; +$fa-var-mobile: \f3ce; +$fa-var-mobile-android: \f3ce; +$fa-var-mobile-phone: \f3ce; +$fa-var-face-meh: \f11a; +$fa-var-meh: \f11a; +$fa-var-align-center: \f037; +$fa-var-book-skull: \f6b7; +$fa-var-book-dead: \f6b7; +$fa-var-id-card: \f2c2; +$fa-var-drivers-license: \f2c2; +$fa-var-outdent: \f03b; +$fa-var-dedent: \f03b; +$fa-var-heart-circle-exclamation: \e4fe; +$fa-var-house: \f015; +$fa-var-home: \f015; +$fa-var-home-alt: \f015; +$fa-var-home-lg-alt: \f015; +$fa-var-calendar-week: \f784; +$fa-var-laptop-medical: \f812; +$fa-var-b: \42; +$fa-var-file-medical: \f477; +$fa-var-dice-one: \f525; +$fa-var-kiwi-bird: \f535; +$fa-var-arrow-right-arrow-left: \f0ec; +$fa-var-exchange: \f0ec; +$fa-var-rotate-right: \f2f9; +$fa-var-redo-alt: \f2f9; +$fa-var-rotate-forward: \f2f9; +$fa-var-utensils: \f2e7; +$fa-var-cutlery: \f2e7; +$fa-var-arrow-up-wide-short: \f161; +$fa-var-sort-amount-up: \f161; +$fa-var-mill-sign: \e1ed; +$fa-var-bowl-rice: \e2eb; +$fa-var-skull: \f54c; +$fa-var-tower-broadcast: \f519; +$fa-var-broadcast-tower: \f519; +$fa-var-truck-pickup: \f63c; +$fa-var-up-long: \f30c; +$fa-var-long-arrow-alt-up: \f30c; +$fa-var-stop: \f04d; +$fa-var-code-merge: \f387; +$fa-var-upload: \f093; +$fa-var-hurricane: \f751; +$fa-var-mound: \e52d; +$fa-var-toilet-portable: \e583; +$fa-var-compact-disc: \f51f; +$fa-var-file-arrow-down: \f56d; +$fa-var-file-download: \f56d; +$fa-var-caravan: \f8ff; +$fa-var-shield-cat: \e572; +$fa-var-bolt: \f0e7; +$fa-var-zap: \f0e7; +$fa-var-glass-water: \e4f4; +$fa-var-oil-well: \e532; +$fa-var-vault: \e2c5; +$fa-var-mars: \f222; +$fa-var-toilet: \f7d8; +$fa-var-plane-circle-xmark: \e557; +$fa-var-yen-sign: \f157; +$fa-var-cny: \f157; +$fa-var-jpy: \f157; +$fa-var-rmb: \f157; +$fa-var-yen: \f157; +$fa-var-ruble-sign: \f158; +$fa-var-rouble: \f158; +$fa-var-rub: \f158; +$fa-var-ruble: \f158; +$fa-var-sun: \f185; +$fa-var-guitar: \f7a6; +$fa-var-face-laugh-wink: \f59c; +$fa-var-laugh-wink: \f59c; +$fa-var-horse-head: \f7ab; +$fa-var-bore-hole: \e4c3; +$fa-var-industry: \f275; +$fa-var-circle-down: \f358; +$fa-var-arrow-alt-circle-down: \f358; +$fa-var-arrows-turn-to-dots: \e4c1; +$fa-var-florin-sign: \e184; +$fa-var-arrow-down-short-wide: \f884; +$fa-var-sort-amount-desc: \f884; +$fa-var-sort-amount-down-alt: \f884; +$fa-var-less-than: \3c; +$fa-var-angle-down: \f107; +$fa-var-car-tunnel: \e4de; +$fa-var-head-side-cough: \e061; +$fa-var-grip-lines: \f7a4; +$fa-var-thumbs-down: \f165; +$fa-var-user-lock: \f502; +$fa-var-arrow-right-long: \f178; +$fa-var-long-arrow-right: \f178; +$fa-var-anchor-circle-xmark: \e4ac; +$fa-var-ellipsis: \f141; +$fa-var-ellipsis-h: \f141; +$fa-var-chess-pawn: \f443; +$fa-var-kit-medical: \f479; +$fa-var-first-aid: \f479; +$fa-var-person-through-window: \e5a9; +$fa-var-toolbox: \f552; +$fa-var-hands-holding-circle: \e4fb; +$fa-var-bug: \f188; +$fa-var-credit-card: \f09d; +$fa-var-credit-card-alt: \f09d; +$fa-var-car: \f1b9; +$fa-var-automobile: \f1b9; +$fa-var-hand-holding-hand: \e4f7; +$fa-var-book-open-reader: \f5da; +$fa-var-book-reader: \f5da; +$fa-var-mountain-sun: \e52f; +$fa-var-arrows-left-right-to-line: \e4ba; +$fa-var-dice-d20: \f6cf; +$fa-var-truck-droplet: \e58c; +$fa-var-file-circle-xmark: \e5a1; +$fa-var-temperature-arrow-up: \e040; +$fa-var-temperature-up: \e040; +$fa-var-medal: \f5a2; +$fa-var-bed: \f236; +$fa-var-square-h: \f0fd; +$fa-var-h-square: \f0fd; +$fa-var-podcast: \f2ce; +$fa-var-temperature-full: \f2c7; +$fa-var-temperature-4: \f2c7; +$fa-var-thermometer-4: \f2c7; +$fa-var-thermometer-full: \f2c7; +$fa-var-bell: \f0f3; +$fa-var-superscript: \f12b; +$fa-var-plug-circle-xmark: \e560; +$fa-var-star-of-life: \f621; +$fa-var-phone-slash: \f3dd; +$fa-var-paint-roller: \f5aa; +$fa-var-handshake-angle: \f4c4; +$fa-var-hands-helping: \f4c4; +$fa-var-location-dot: \f3c5; +$fa-var-map-marker-alt: \f3c5; +$fa-var-file: \f15b; +$fa-var-greater-than: \3e; +$fa-var-person-swimming: \f5c4; +$fa-var-swimmer: \f5c4; +$fa-var-arrow-down: \f063; +$fa-var-droplet: \f043; +$fa-var-tint: \f043; +$fa-var-eraser: \f12d; +$fa-var-earth-americas: \f57d; +$fa-var-earth: \f57d; +$fa-var-earth-america: \f57d; +$fa-var-globe-americas: \f57d; +$fa-var-person-burst: \e53b; +$fa-var-dove: \f4ba; +$fa-var-battery-empty: \f244; +$fa-var-battery-0: \f244; +$fa-var-socks: \f696; +$fa-var-inbox: \f01c; +$fa-var-section: \e447; +$fa-var-gauge-high: \f625; +$fa-var-tachometer-alt: \f625; +$fa-var-tachometer-alt-fast: \f625; +$fa-var-envelope-open-text: \f658; +$fa-var-hospital: \f0f8; +$fa-var-hospital-alt: \f0f8; +$fa-var-hospital-wide: \f0f8; +$fa-var-wine-bottle: \f72f; +$fa-var-chess-rook: \f447; +$fa-var-bars-staggered: \f550; +$fa-var-reorder: \f550; +$fa-var-stream: \f550; +$fa-var-dharmachakra: \f655; +$fa-var-hotdog: \f80f; +$fa-var-person-walking-with-cane: \f29d; +$fa-var-blind: \f29d; +$fa-var-drum: \f569; +$fa-var-ice-cream: \f810; +$fa-var-heart-circle-bolt: \e4fc; +$fa-var-fax: \f1ac; +$fa-var-paragraph: \f1dd; +$fa-var-check-to-slot: \f772; +$fa-var-vote-yea: \f772; +$fa-var-star-half: \f089; +$fa-var-boxes-stacked: \f468; +$fa-var-boxes: \f468; +$fa-var-boxes-alt: \f468; +$fa-var-link: \f0c1; +$fa-var-chain: \f0c1; +$fa-var-ear-listen: \f2a2; +$fa-var-assistive-listening-systems: \f2a2; +$fa-var-tree-city: \e587; +$fa-var-play: \f04b; +$fa-var-font: \f031; +$fa-var-table-cells-row-lock: \e67a; +$fa-var-rupiah-sign: \e23d; +$fa-var-magnifying-glass: \f002; +$fa-var-search: \f002; +$fa-var-table-tennis-paddle-ball: \f45d; +$fa-var-ping-pong-paddle-ball: \f45d; +$fa-var-table-tennis: \f45d; +$fa-var-person-dots-from-line: \f470; +$fa-var-diagnoses: \f470; +$fa-var-trash-can-arrow-up: \f82a; +$fa-var-trash-restore-alt: \f82a; +$fa-var-naira-sign: \e1f6; +$fa-var-cart-arrow-down: \f218; +$fa-var-walkie-talkie: \f8ef; +$fa-var-file-pen: \f31c; +$fa-var-file-edit: \f31c; +$fa-var-receipt: \f543; +$fa-var-square-pen: \f14b; +$fa-var-pen-square: \f14b; +$fa-var-pencil-square: \f14b; +$fa-var-suitcase-rolling: \f5c1; +$fa-var-person-circle-exclamation: \e53f; +$fa-var-chevron-down: \f078; +$fa-var-battery-full: \f240; +$fa-var-battery: \f240; +$fa-var-battery-5: \f240; +$fa-var-skull-crossbones: \f714; +$fa-var-code-compare: \e13a; +$fa-var-list-ul: \f0ca; +$fa-var-list-dots: \f0ca; +$fa-var-school-lock: \e56f; +$fa-var-tower-cell: \e585; +$fa-var-down-long: \f309; +$fa-var-long-arrow-alt-down: \f309; +$fa-var-ranking-star: \e561; +$fa-var-chess-king: \f43f; +$fa-var-person-harassing: \e549; +$fa-var-brazilian-real-sign: \e46c; +$fa-var-landmark-dome: \f752; +$fa-var-landmark-alt: \f752; +$fa-var-arrow-up: \f062; +$fa-var-tv: \f26c; +$fa-var-television: \f26c; +$fa-var-tv-alt: \f26c; +$fa-var-shrimp: \e448; +$fa-var-list-check: \f0ae; +$fa-var-tasks: \f0ae; +$fa-var-jug-detergent: \e519; +$fa-var-circle-user: \f2bd; +$fa-var-user-circle: \f2bd; +$fa-var-user-shield: \f505; +$fa-var-wind: \f72e; +$fa-var-car-burst: \f5e1; +$fa-var-car-crash: \f5e1; +$fa-var-y: \59; +$fa-var-person-snowboarding: \f7ce; +$fa-var-snowboarding: \f7ce; +$fa-var-truck-fast: \f48b; +$fa-var-shipping-fast: \f48b; +$fa-var-fish: \f578; +$fa-var-user-graduate: \f501; +$fa-var-circle-half-stroke: \f042; +$fa-var-adjust: \f042; +$fa-var-clapperboard: \e131; +$fa-var-circle-radiation: \f7ba; +$fa-var-radiation-alt: \f7ba; +$fa-var-baseball: \f433; +$fa-var-baseball-ball: \f433; +$fa-var-jet-fighter-up: \e518; +$fa-var-diagram-project: \f542; +$fa-var-project-diagram: \f542; +$fa-var-copy: \f0c5; +$fa-var-volume-xmark: \f6a9; +$fa-var-volume-mute: \f6a9; +$fa-var-volume-times: \f6a9; +$fa-var-hand-sparkles: \e05d; +$fa-var-grip: \f58d; +$fa-var-grip-horizontal: \f58d; +$fa-var-share-from-square: \f14d; +$fa-var-share-square: \f14d; +$fa-var-child-combatant: \e4e0; +$fa-var-child-rifle: \e4e0; +$fa-var-gun: \e19b; +$fa-var-square-phone: \f098; +$fa-var-phone-square: \f098; +$fa-var-plus: \2b; +$fa-var-add: \2b; +$fa-var-expand: \f065; +$fa-var-computer: \e4e5; +$fa-var-xmark: \f00d; +$fa-var-close: \f00d; +$fa-var-multiply: \f00d; +$fa-var-remove: \f00d; +$fa-var-times: \f00d; +$fa-var-arrows-up-down-left-right: \f047; +$fa-var-arrows: \f047; +$fa-var-chalkboard-user: \f51c; +$fa-var-chalkboard-teacher: \f51c; +$fa-var-peso-sign: \e222; +$fa-var-building-shield: \e4d8; +$fa-var-baby: \f77c; +$fa-var-users-line: \e592; +$fa-var-quote-left: \f10d; +$fa-var-quote-left-alt: \f10d; +$fa-var-tractor: \f722; +$fa-var-trash-arrow-up: \f829; +$fa-var-trash-restore: \f829; +$fa-var-arrow-down-up-lock: \e4b0; +$fa-var-lines-leaning: \e51e; +$fa-var-ruler-combined: \f546; +$fa-var-copyright: \f1f9; +$fa-var-equals: \3d; +$fa-var-blender: \f517; +$fa-var-teeth: \f62e; +$fa-var-shekel-sign: \f20b; +$fa-var-ils: \f20b; +$fa-var-shekel: \f20b; +$fa-var-sheqel: \f20b; +$fa-var-sheqel-sign: \f20b; +$fa-var-map: \f279; +$fa-var-rocket: \f135; +$fa-var-photo-film: \f87c; +$fa-var-photo-video: \f87c; +$fa-var-folder-minus: \f65d; +$fa-var-hexagon-nodes-bolt: \e69a; +$fa-var-store: \f54e; +$fa-var-arrow-trend-up: \e098; +$fa-var-plug-circle-minus: \e55e; +$fa-var-sign-hanging: \f4d9; +$fa-var-sign: \f4d9; +$fa-var-bezier-curve: \f55b; +$fa-var-bell-slash: \f1f6; +$fa-var-tablet: \f3fb; +$fa-var-tablet-android: \f3fb; +$fa-var-school-flag: \e56e; +$fa-var-fill: \f575; +$fa-var-angle-up: \f106; +$fa-var-drumstick-bite: \f6d7; +$fa-var-holly-berry: \f7aa; +$fa-var-chevron-left: \f053; +$fa-var-bacteria: \e059; +$fa-var-hand-lizard: \f258; +$fa-var-notdef: \e1fe; +$fa-var-disease: \f7fa; +$fa-var-briefcase-medical: \f469; +$fa-var-genderless: \f22d; +$fa-var-chevron-right: \f054; +$fa-var-retweet: \f079; +$fa-var-car-rear: \f5de; +$fa-var-car-alt: \f5de; +$fa-var-pump-soap: \e06b; +$fa-var-video-slash: \f4e2; +$fa-var-battery-quarter: \f243; +$fa-var-battery-2: \f243; +$fa-var-radio: \f8d7; +$fa-var-baby-carriage: \f77d; +$fa-var-carriage-baby: \f77d; +$fa-var-traffic-light: \f637; +$fa-var-thermometer: \f491; +$fa-var-vr-cardboard: \f729; +$fa-var-hand-middle-finger: \f806; +$fa-var-percent: \25; +$fa-var-percentage: \25; +$fa-var-truck-moving: \f4df; +$fa-var-glass-water-droplet: \e4f5; +$fa-var-display: \e163; +$fa-var-face-smile: \f118; +$fa-var-smile: \f118; +$fa-var-thumbtack: \f08d; +$fa-var-thumb-tack: \f08d; +$fa-var-trophy: \f091; +$fa-var-person-praying: \f683; +$fa-var-pray: \f683; +$fa-var-hammer: \f6e3; +$fa-var-hand-peace: \f25b; +$fa-var-rotate: \f2f1; +$fa-var-sync-alt: \f2f1; +$fa-var-spinner: \f110; +$fa-var-robot: \f544; +$fa-var-peace: \f67c; +$fa-var-gears: \f085; +$fa-var-cogs: \f085; +$fa-var-warehouse: \f494; +$fa-var-arrow-up-right-dots: \e4b7; +$fa-var-splotch: \f5bc; +$fa-var-face-grin-hearts: \f584; +$fa-var-grin-hearts: \f584; +$fa-var-dice-four: \f524; +$fa-var-sim-card: \f7c4; +$fa-var-transgender: \f225; +$fa-var-transgender-alt: \f225; +$fa-var-mercury: \f223; +$fa-var-arrow-turn-down: \f149; +$fa-var-level-down: \f149; +$fa-var-person-falling-burst: \e547; +$fa-var-award: \f559; +$fa-var-ticket-simple: \f3ff; +$fa-var-ticket-alt: \f3ff; +$fa-var-building: \f1ad; +$fa-var-angles-left: \f100; +$fa-var-angle-double-left: \f100; +$fa-var-qrcode: \f029; +$fa-var-clock-rotate-left: \f1da; +$fa-var-history: \f1da; +$fa-var-face-grin-beam-sweat: \f583; +$fa-var-grin-beam-sweat: \f583; +$fa-var-file-export: \f56e; +$fa-var-arrow-right-from-file: \f56e; +$fa-var-shield: \f132; +$fa-var-shield-blank: \f132; +$fa-var-arrow-up-short-wide: \f885; +$fa-var-sort-amount-up-alt: \f885; +$fa-var-comment-nodes: \e696; +$fa-var-house-medical: \e3b2; +$fa-var-golf-ball-tee: \f450; +$fa-var-golf-ball: \f450; +$fa-var-circle-chevron-left: \f137; +$fa-var-chevron-circle-left: \f137; +$fa-var-house-chimney-window: \e00d; +$fa-var-pen-nib: \f5ad; +$fa-var-tent-arrow-turn-left: \e580; +$fa-var-tents: \e582; +$fa-var-wand-magic: \f0d0; +$fa-var-magic: \f0d0; +$fa-var-dog: \f6d3; +$fa-var-carrot: \f787; +$fa-var-moon: \f186; +$fa-var-wine-glass-empty: \f5ce; +$fa-var-wine-glass-alt: \f5ce; +$fa-var-cheese: \f7ef; +$fa-var-yin-yang: \f6ad; +$fa-var-music: \f001; +$fa-var-code-commit: \f386; +$fa-var-temperature-low: \f76b; +$fa-var-person-biking: \f84a; +$fa-var-biking: \f84a; +$fa-var-broom: \f51a; +$fa-var-shield-heart: \e574; +$fa-var-gopuram: \f664; +$fa-var-earth-oceania: \e47b; +$fa-var-globe-oceania: \e47b; +$fa-var-square-xmark: \f2d3; +$fa-var-times-square: \f2d3; +$fa-var-xmark-square: \f2d3; +$fa-var-hashtag: \23; +$fa-var-up-right-and-down-left-from-center: \f424; +$fa-var-expand-alt: \f424; +$fa-var-oil-can: \f613; +$fa-var-t: \54; +$fa-var-hippo: \f6ed; +$fa-var-chart-column: \e0e3; +$fa-var-infinity: \f534; +$fa-var-vial-circle-check: \e596; +$fa-var-person-arrow-down-to-line: \e538; +$fa-var-voicemail: \f897; +$fa-var-fan: \f863; +$fa-var-person-walking-luggage: \e554; +$fa-var-up-down: \f338; +$fa-var-arrows-alt-v: \f338; +$fa-var-cloud-moon-rain: \f73c; +$fa-var-calendar: \f133; +$fa-var-trailer: \e041; +$fa-var-bahai: \f666; +$fa-var-haykal: \f666; +$fa-var-sd-card: \f7c2; +$fa-var-dragon: \f6d5; +$fa-var-shoe-prints: \f54b; +$fa-var-circle-plus: \f055; +$fa-var-plus-circle: \f055; +$fa-var-face-grin-tongue-wink: \f58b; +$fa-var-grin-tongue-wink: \f58b; +$fa-var-hand-holding: \f4bd; +$fa-var-plug-circle-exclamation: \e55d; +$fa-var-link-slash: \f127; +$fa-var-chain-broken: \f127; +$fa-var-chain-slash: \f127; +$fa-var-unlink: \f127; +$fa-var-clone: \f24d; +$fa-var-person-walking-arrow-loop-left: \e551; +$fa-var-arrow-up-z-a: \f882; +$fa-var-sort-alpha-up-alt: \f882; +$fa-var-fire-flame-curved: \f7e4; +$fa-var-fire-alt: \f7e4; +$fa-var-tornado: \f76f; +$fa-var-file-circle-plus: \e494; +$fa-var-book-quran: \f687; +$fa-var-quran: \f687; +$fa-var-anchor: \f13d; +$fa-var-border-all: \f84c; +$fa-var-face-angry: \f556; +$fa-var-angry: \f556; +$fa-var-cookie-bite: \f564; +$fa-var-arrow-trend-down: \e097; +$fa-var-rss: \f09e; +$fa-var-feed: \f09e; +$fa-var-draw-polygon: \f5ee; +$fa-var-scale-balanced: \f24e; +$fa-var-balance-scale: \f24e; +$fa-var-gauge-simple-high: \f62a; +$fa-var-tachometer: \f62a; +$fa-var-tachometer-fast: \f62a; +$fa-var-shower: \f2cc; +$fa-var-desktop: \f390; +$fa-var-desktop-alt: \f390; +$fa-var-m: \4d; +$fa-var-table-list: \f00b; +$fa-var-th-list: \f00b; +$fa-var-comment-sms: \f7cd; +$fa-var-sms: \f7cd; +$fa-var-book: \f02d; +$fa-var-user-plus: \f234; +$fa-var-check: \f00c; +$fa-var-battery-three-quarters: \f241; +$fa-var-battery-4: \f241; +$fa-var-house-circle-check: \e509; +$fa-var-angle-left: \f104; +$fa-var-diagram-successor: \e47a; +$fa-var-truck-arrow-right: \e58b; +$fa-var-arrows-split-up-and-left: \e4bc; +$fa-var-hand-fist: \f6de; +$fa-var-fist-raised: \f6de; +$fa-var-cloud-moon: \f6c3; +$fa-var-briefcase: \f0b1; +$fa-var-person-falling: \e546; +$fa-var-image-portrait: \f3e0; +$fa-var-portrait: \f3e0; +$fa-var-user-tag: \f507; +$fa-var-rug: \e569; +$fa-var-earth-europe: \f7a2; +$fa-var-globe-europe: \f7a2; +$fa-var-cart-flatbed-suitcase: \f59d; +$fa-var-luggage-cart: \f59d; +$fa-var-rectangle-xmark: \f410; +$fa-var-rectangle-times: \f410; +$fa-var-times-rectangle: \f410; +$fa-var-window-close: \f410; +$fa-var-baht-sign: \e0ac; +$fa-var-book-open: \f518; +$fa-var-book-journal-whills: \f66a; +$fa-var-journal-whills: \f66a; +$fa-var-handcuffs: \e4f8; +$fa-var-triangle-exclamation: \f071; +$fa-var-exclamation-triangle: \f071; +$fa-var-warning: \f071; +$fa-var-database: \f1c0; +$fa-var-share: \f064; +$fa-var-mail-forward: \f064; +$fa-var-bottle-droplet: \e4c4; +$fa-var-mask-face: \e1d7; +$fa-var-hill-rockslide: \e508; +$fa-var-right-left: \f362; +$fa-var-exchange-alt: \f362; +$fa-var-paper-plane: \f1d8; +$fa-var-road-circle-exclamation: \e565; +$fa-var-dungeon: \f6d9; +$fa-var-align-right: \f038; +$fa-var-money-bill-1-wave: \f53b; +$fa-var-money-bill-wave-alt: \f53b; +$fa-var-life-ring: \f1cd; +$fa-var-hands: \f2a7; +$fa-var-sign-language: \f2a7; +$fa-var-signing: \f2a7; +$fa-var-calendar-day: \f783; +$fa-var-water-ladder: \f5c5; +$fa-var-ladder-water: \f5c5; +$fa-var-swimming-pool: \f5c5; +$fa-var-arrows-up-down: \f07d; +$fa-var-arrows-v: \f07d; +$fa-var-face-grimace: \f57f; +$fa-var-grimace: \f57f; +$fa-var-wheelchair-move: \e2ce; +$fa-var-wheelchair-alt: \e2ce; +$fa-var-turn-down: \f3be; +$fa-var-level-down-alt: \f3be; +$fa-var-person-walking-arrow-right: \e552; +$fa-var-square-envelope: \f199; +$fa-var-envelope-square: \f199; +$fa-var-dice: \f522; +$fa-var-bowling-ball: \f436; +$fa-var-brain: \f5dc; +$fa-var-bandage: \f462; +$fa-var-band-aid: \f462; +$fa-var-calendar-minus: \f272; +$fa-var-circle-xmark: \f057; +$fa-var-times-circle: \f057; +$fa-var-xmark-circle: \f057; +$fa-var-gifts: \f79c; +$fa-var-hotel: \f594; +$fa-var-earth-asia: \f57e; +$fa-var-globe-asia: \f57e; +$fa-var-id-card-clip: \f47f; +$fa-var-id-card-alt: \f47f; +$fa-var-magnifying-glass-plus: \f00e; +$fa-var-search-plus: \f00e; +$fa-var-thumbs-up: \f164; +$fa-var-user-clock: \f4fd; +$fa-var-hand-dots: \f461; +$fa-var-allergies: \f461; +$fa-var-file-invoice: \f570; +$fa-var-window-minimize: \f2d1; +$fa-var-mug-saucer: \f0f4; +$fa-var-coffee: \f0f4; +$fa-var-brush: \f55d; +$fa-var-file-half-dashed: \e698; +$fa-var-mask: \f6fa; +$fa-var-magnifying-glass-minus: \f010; +$fa-var-search-minus: \f010; +$fa-var-ruler-vertical: \f548; +$fa-var-user-large: \f406; +$fa-var-user-alt: \f406; +$fa-var-train-tram: \e5b4; +$fa-var-user-nurse: \f82f; +$fa-var-syringe: \f48e; +$fa-var-cloud-sun: \f6c4; +$fa-var-stopwatch-20: \e06f; +$fa-var-square-full: \f45c; +$fa-var-magnet: \f076; +$fa-var-jar: \e516; +$fa-var-note-sticky: \f249; +$fa-var-sticky-note: \f249; +$fa-var-bug-slash: \e490; +$fa-var-arrow-up-from-water-pump: \e4b6; +$fa-var-bone: \f5d7; +$fa-var-table-cells-row-unlock: \e691; +$fa-var-user-injured: \f728; +$fa-var-face-sad-tear: \f5b4; +$fa-var-sad-tear: \f5b4; +$fa-var-plane: \f072; +$fa-var-tent-arrows-down: \e581; +$fa-var-exclamation: \21; +$fa-var-arrows-spin: \e4bb; +$fa-var-print: \f02f; +$fa-var-turkish-lira-sign: \e2bb; +$fa-var-try: \e2bb; +$fa-var-turkish-lira: \e2bb; +$fa-var-dollar-sign: \24; +$fa-var-dollar: \24; +$fa-var-usd: \24; +$fa-var-x: \58; +$fa-var-magnifying-glass-dollar: \f688; +$fa-var-search-dollar: \f688; +$fa-var-users-gear: \f509; +$fa-var-users-cog: \f509; +$fa-var-person-military-pointing: \e54a; +$fa-var-building-columns: \f19c; +$fa-var-bank: \f19c; +$fa-var-institution: \f19c; +$fa-var-museum: \f19c; +$fa-var-university: \f19c; +$fa-var-umbrella: \f0e9; +$fa-var-trowel: \e589; +$fa-var-d: \44; +$fa-var-stapler: \e5af; +$fa-var-masks-theater: \f630; +$fa-var-theater-masks: \f630; +$fa-var-kip-sign: \e1c4; +$fa-var-hand-point-left: \f0a5; +$fa-var-handshake-simple: \f4c6; +$fa-var-handshake-alt: \f4c6; +$fa-var-jet-fighter: \f0fb; +$fa-var-fighter-jet: \f0fb; +$fa-var-square-share-nodes: \f1e1; +$fa-var-share-alt-square: \f1e1; +$fa-var-barcode: \f02a; +$fa-var-plus-minus: \e43c; +$fa-var-video: \f03d; +$fa-var-video-camera: \f03d; +$fa-var-graduation-cap: \f19d; +$fa-var-mortar-board: \f19d; +$fa-var-hand-holding-medical: \e05c; +$fa-var-person-circle-check: \e53e; +$fa-var-turn-up: \f3bf; +$fa-var-level-up-alt: \f3bf; + +$fa-var-monero: \f3d0; +$fa-var-hooli: \f427; +$fa-var-yelp: \f1e9; +$fa-var-cc-visa: \f1f0; +$fa-var-lastfm: \f202; +$fa-var-shopware: \f5b5; +$fa-var-creative-commons-nc: \f4e8; +$fa-var-aws: \f375; +$fa-var-redhat: \f7bc; +$fa-var-yoast: \f2b1; +$fa-var-cloudflare: \e07d; +$fa-var-ups: \f7e0; +$fa-var-pixiv: \e640; +$fa-var-wpexplorer: \f2de; +$fa-var-dyalog: \f399; +$fa-var-bity: \f37a; +$fa-var-stackpath: \f842; +$fa-var-buysellads: \f20d; +$fa-var-first-order: \f2b0; +$fa-var-modx: \f285; +$fa-var-guilded: \e07e; +$fa-var-vnv: \f40b; +$fa-var-square-js: \f3b9; +$fa-var-js-square: \f3b9; +$fa-var-microsoft: \f3ca; +$fa-var-qq: \f1d6; +$fa-var-orcid: \f8d2; +$fa-var-java: \f4e4; +$fa-var-invision: \f7b0; +$fa-var-creative-commons-pd-alt: \f4ed; +$fa-var-centercode: \f380; +$fa-var-glide-g: \f2a6; +$fa-var-drupal: \f1a9; +$fa-var-jxl: \e67b; +$fa-var-dart-lang: \e693; +$fa-var-hire-a-helper: \f3b0; +$fa-var-creative-commons-by: \f4e7; +$fa-var-unity: \e049; +$fa-var-whmcs: \f40d; +$fa-var-rocketchat: \f3e8; +$fa-var-vk: \f189; +$fa-var-untappd: \f405; +$fa-var-mailchimp: \f59e; +$fa-var-css3-alt: \f38b; +$fa-var-square-reddit: \f1a2; +$fa-var-reddit-square: \f1a2; +$fa-var-vimeo-v: \f27d; +$fa-var-contao: \f26d; +$fa-var-square-font-awesome: \e5ad; +$fa-var-deskpro: \f38f; +$fa-var-brave: \e63c; +$fa-var-sistrix: \f3ee; +$fa-var-square-instagram: \e055; +$fa-var-instagram-square: \e055; +$fa-var-battle-net: \f835; +$fa-var-the-red-yeti: \f69d; +$fa-var-square-hacker-news: \f3af; +$fa-var-hacker-news-square: \f3af; +$fa-var-edge: \f282; +$fa-var-threads: \e618; +$fa-var-napster: \f3d2; +$fa-var-square-snapchat: \f2ad; +$fa-var-snapchat-square: \f2ad; +$fa-var-google-plus-g: \f0d5; +$fa-var-artstation: \f77a; +$fa-var-markdown: \f60f; +$fa-var-sourcetree: \f7d3; +$fa-var-google-plus: \f2b3; +$fa-var-diaspora: \f791; +$fa-var-foursquare: \f180; +$fa-var-stack-overflow: \f16c; +$fa-var-github-alt: \f113; +$fa-var-phoenix-squadron: \f511; +$fa-var-pagelines: \f18c; +$fa-var-algolia: \f36c; +$fa-var-red-river: \f3e3; +$fa-var-creative-commons-sa: \f4ef; +$fa-var-safari: \f267; +$fa-var-google: \f1a0; +$fa-var-square-font-awesome-stroke: \f35c; +$fa-var-font-awesome-alt: \f35c; +$fa-var-atlassian: \f77b; +$fa-var-linkedin-in: \f0e1; +$fa-var-digital-ocean: \f391; +$fa-var-nimblr: \f5a8; +$fa-var-chromecast: \f838; +$fa-var-evernote: \f839; +$fa-var-hacker-news: \f1d4; +$fa-var-creative-commons-sampling: \f4f0; +$fa-var-adversal: \f36a; +$fa-var-creative-commons: \f25e; +$fa-var-watchman-monitoring: \e087; +$fa-var-fonticons: \f280; +$fa-var-weixin: \f1d7; +$fa-var-shirtsinbulk: \f214; +$fa-var-codepen: \f1cb; +$fa-var-git-alt: \f841; +$fa-var-lyft: \f3c3; +$fa-var-rev: \f5b2; +$fa-var-windows: \f17a; +$fa-var-wizards-of-the-coast: \f730; +$fa-var-square-viadeo: \f2aa; +$fa-var-viadeo-square: \f2aa; +$fa-var-meetup: \f2e0; +$fa-var-centos: \f789; +$fa-var-adn: \f170; +$fa-var-cloudsmith: \f384; +$fa-var-opensuse: \e62b; +$fa-var-pied-piper-alt: \f1a8; +$fa-var-square-dribbble: \f397; +$fa-var-dribbble-square: \f397; +$fa-var-codiepie: \f284; +$fa-var-node: \f419; +$fa-var-mix: \f3cb; +$fa-var-steam: \f1b6; +$fa-var-cc-apple-pay: \f416; +$fa-var-scribd: \f28a; +$fa-var-debian: \e60b; +$fa-var-openid: \f19b; +$fa-var-instalod: \e081; +$fa-var-files-pinwheel: \e69f; +$fa-var-expeditedssl: \f23e; +$fa-var-sellcast: \f2da; +$fa-var-square-twitter: \f081; +$fa-var-twitter-square: \f081; +$fa-var-r-project: \f4f7; +$fa-var-delicious: \f1a5; +$fa-var-freebsd: \f3a4; +$fa-var-vuejs: \f41f; +$fa-var-accusoft: \f369; +$fa-var-ioxhost: \f208; +$fa-var-fonticons-fi: \f3a2; +$fa-var-app-store: \f36f; +$fa-var-cc-mastercard: \f1f1; +$fa-var-itunes-note: \f3b5; +$fa-var-golang: \e40f; +$fa-var-kickstarter: \f3bb; +$fa-var-square-kickstarter: \f3bb; +$fa-var-grav: \f2d6; +$fa-var-weibo: \f18a; +$fa-var-uncharted: \e084; +$fa-var-firstdraft: \f3a1; +$fa-var-square-youtube: \f431; +$fa-var-youtube-square: \f431; +$fa-var-wikipedia-w: \f266; +$fa-var-wpressr: \f3e4; +$fa-var-rendact: \f3e4; +$fa-var-angellist: \f209; +$fa-var-galactic-republic: \f50c; +$fa-var-nfc-directional: \e530; +$fa-var-skype: \f17e; +$fa-var-joget: \f3b7; +$fa-var-fedora: \f798; +$fa-var-stripe-s: \f42a; +$fa-var-meta: \e49b; +$fa-var-laravel: \f3bd; +$fa-var-hotjar: \f3b1; +$fa-var-bluetooth-b: \f294; +$fa-var-square-letterboxd: \e62e; +$fa-var-sticker-mule: \f3f7; +$fa-var-creative-commons-zero: \f4f3; +$fa-var-hips: \f452; +$fa-var-css: \e6a2; +$fa-var-behance: \f1b4; +$fa-var-reddit: \f1a1; +$fa-var-discord: \f392; +$fa-var-chrome: \f268; +$fa-var-app-store-ios: \f370; +$fa-var-cc-discover: \f1f2; +$fa-var-wpbeginner: \f297; +$fa-var-confluence: \f78d; +$fa-var-shoelace: \e60c; +$fa-var-mdb: \f8ca; +$fa-var-dochub: \f394; +$fa-var-accessible-icon: \f368; +$fa-var-ebay: \f4f4; +$fa-var-amazon: \f270; +$fa-var-unsplash: \e07c; +$fa-var-yarn: \f7e3; +$fa-var-square-steam: \f1b7; +$fa-var-steam-square: \f1b7; +$fa-var-500px: \f26e; +$fa-var-square-vimeo: \f194; +$fa-var-vimeo-square: \f194; +$fa-var-asymmetrik: \f372; +$fa-var-font-awesome: \f2b4; +$fa-var-font-awesome-flag: \f2b4; +$fa-var-font-awesome-logo-full: \f2b4; +$fa-var-gratipay: \f184; +$fa-var-apple: \f179; +$fa-var-hive: \e07f; +$fa-var-gitkraken: \f3a6; +$fa-var-keybase: \f4f5; +$fa-var-apple-pay: \f415; +$fa-var-padlet: \e4a0; +$fa-var-amazon-pay: \f42c; +$fa-var-square-github: \f092; +$fa-var-github-square: \f092; +$fa-var-stumbleupon: \f1a4; +$fa-var-fedex: \f797; +$fa-var-phoenix-framework: \f3dc; +$fa-var-shopify: \e057; +$fa-var-neos: \f612; +$fa-var-square-threads: \e619; +$fa-var-hackerrank: \f5f7; +$fa-var-researchgate: \f4f8; +$fa-var-swift: \f8e1; +$fa-var-angular: \f420; +$fa-var-speakap: \f3f3; +$fa-var-angrycreative: \f36e; +$fa-var-y-combinator: \f23b; +$fa-var-empire: \f1d1; +$fa-var-envira: \f299; +$fa-var-google-scholar: \e63b; +$fa-var-square-gitlab: \e5ae; +$fa-var-gitlab-square: \e5ae; +$fa-var-studiovinari: \f3f8; +$fa-var-pied-piper: \f2ae; +$fa-var-wordpress: \f19a; +$fa-var-product-hunt: \f288; +$fa-var-firefox: \f269; +$fa-var-linode: \f2b8; +$fa-var-goodreads: \f3a8; +$fa-var-square-odnoklassniki: \f264; +$fa-var-odnoklassniki-square: \f264; +$fa-var-jsfiddle: \f1cc; +$fa-var-sith: \f512; +$fa-var-themeisle: \f2b2; +$fa-var-page4: \f3d7; +$fa-var-hashnode: \e499; +$fa-var-react: \f41b; +$fa-var-cc-paypal: \f1f4; +$fa-var-squarespace: \f5be; +$fa-var-cc-stripe: \f1f5; +$fa-var-creative-commons-share: \f4f2; +$fa-var-bitcoin: \f379; +$fa-var-keycdn: \f3ba; +$fa-var-opera: \f26a; +$fa-var-itch-io: \f83a; +$fa-var-umbraco: \f8e8; +$fa-var-galactic-senate: \f50d; +$fa-var-ubuntu: \f7df; +$fa-var-draft2digital: \f396; +$fa-var-stripe: \f429; +$fa-var-houzz: \f27c; +$fa-var-gg: \f260; +$fa-var-dhl: \f790; +$fa-var-square-pinterest: \f0d3; +$fa-var-pinterest-square: \f0d3; +$fa-var-xing: \f168; +$fa-var-blackberry: \f37b; +$fa-var-creative-commons-pd: \f4ec; +$fa-var-playstation: \f3df; +$fa-var-quinscape: \f459; +$fa-var-less: \f41d; +$fa-var-blogger-b: \f37d; +$fa-var-opencart: \f23d; +$fa-var-vine: \f1ca; +$fa-var-signal-messenger: \e663; +$fa-var-paypal: \f1ed; +$fa-var-gitlab: \f296; +$fa-var-typo3: \f42b; +$fa-var-reddit-alien: \f281; +$fa-var-yahoo: \f19e; +$fa-var-dailymotion: \e052; +$fa-var-affiliatetheme: \f36b; +$fa-var-pied-piper-pp: \f1a7; +$fa-var-bootstrap: \f836; +$fa-var-odnoklassniki: \f263; +$fa-var-nfc-symbol: \e531; +$fa-var-mintbit: \e62f; +$fa-var-ethereum: \f42e; +$fa-var-speaker-deck: \f83c; +$fa-var-creative-commons-nc-eu: \f4e9; +$fa-var-patreon: \f3d9; +$fa-var-avianex: \f374; +$fa-var-ello: \f5f1; +$fa-var-gofore: \f3a7; +$fa-var-bimobject: \f378; +$fa-var-brave-reverse: \e63d; +$fa-var-facebook-f: \f39e; +$fa-var-square-google-plus: \f0d4; +$fa-var-google-plus-square: \f0d4; +$fa-var-web-awesome: \e682; +$fa-var-mandalorian: \f50f; +$fa-var-first-order-alt: \f50a; +$fa-var-osi: \f41a; +$fa-var-google-wallet: \f1ee; +$fa-var-d-and-d-beyond: \f6ca; +$fa-var-periscope: \f3da; +$fa-var-fulcrum: \f50b; +$fa-var-cloudscale: \f383; +$fa-var-forumbee: \f211; +$fa-var-mizuni: \f3cc; +$fa-var-schlix: \f3ea; +$fa-var-square-xing: \f169; +$fa-var-xing-square: \f169; +$fa-var-bandcamp: \f2d5; +$fa-var-wpforms: \f298; +$fa-var-cloudversify: \f385; +$fa-var-usps: \f7e1; +$fa-var-megaport: \f5a3; +$fa-var-magento: \f3c4; +$fa-var-spotify: \f1bc; +$fa-var-optin-monster: \f23c; +$fa-var-fly: \f417; +$fa-var-square-bluesky: \e6a3; +$fa-var-aviato: \f421; +$fa-var-itunes: \f3b4; +$fa-var-cuttlefish: \f38c; +$fa-var-blogger: \f37c; +$fa-var-flickr: \f16e; +$fa-var-viber: \f409; +$fa-var-soundcloud: \f1be; +$fa-var-digg: \f1a6; +$fa-var-tencent-weibo: \f1d5; +$fa-var-letterboxd: \e62d; +$fa-var-symfony: \f83d; +$fa-var-maxcdn: \f136; +$fa-var-etsy: \f2d7; +$fa-var-facebook-messenger: \f39f; +$fa-var-audible: \f373; +$fa-var-think-peaks: \f731; +$fa-var-bilibili: \e3d9; +$fa-var-erlang: \f39d; +$fa-var-x-twitter: \e61b; +$fa-var-cotton-bureau: \f89e; +$fa-var-dashcube: \f210; +$fa-var-42-group: \e080; +$fa-var-innosoft: \e080; +$fa-var-stack-exchange: \f18d; +$fa-var-elementor: \f430; +$fa-var-square-pied-piper: \e01e; +$fa-var-pied-piper-square: \e01e; +$fa-var-creative-commons-nd: \f4eb; +$fa-var-palfed: \f3d8; +$fa-var-superpowers: \f2dd; +$fa-var-resolving: \f3e7; +$fa-var-xbox: \f412; +$fa-var-square-web-awesome-stroke: \e684; +$fa-var-searchengin: \f3eb; +$fa-var-tiktok: \e07b; +$fa-var-square-facebook: \f082; +$fa-var-facebook-square: \f082; +$fa-var-renren: \f18b; +$fa-var-linux: \f17c; +$fa-var-glide: \f2a5; +$fa-var-linkedin: \f08c; +$fa-var-hubspot: \f3b2; +$fa-var-deploydog: \f38e; +$fa-var-twitch: \f1e8; +$fa-var-flutter: \e694; +$fa-var-ravelry: \f2d9; +$fa-var-mixer: \e056; +$fa-var-square-lastfm: \f203; +$fa-var-lastfm-square: \f203; +$fa-var-vimeo: \f40a; +$fa-var-mendeley: \f7b3; +$fa-var-uniregistry: \f404; +$fa-var-figma: \f799; +$fa-var-creative-commons-remix: \f4ee; +$fa-var-cc-amazon-pay: \f42d; +$fa-var-dropbox: \f16b; +$fa-var-instagram: \f16d; +$fa-var-cmplid: \e360; +$fa-var-upwork: \e641; +$fa-var-facebook: \f09a; +$fa-var-gripfire: \f3ac; +$fa-var-jedi-order: \f50e; +$fa-var-uikit: \f403; +$fa-var-fort-awesome-alt: \f3a3; +$fa-var-phabricator: \f3db; +$fa-var-ussunnah: \f407; +$fa-var-earlybirds: \f39a; +$fa-var-trade-federation: \f513; +$fa-var-autoprefixer: \f41c; +$fa-var-whatsapp: \f232; +$fa-var-square-upwork: \e67c; +$fa-var-slideshare: \f1e7; +$fa-var-google-play: \f3ab; +$fa-var-viadeo: \f2a9; +$fa-var-line: \f3c0; +$fa-var-google-drive: \f3aa; +$fa-var-servicestack: \f3ec; +$fa-var-simplybuilt: \f215; +$fa-var-bitbucket: \f171; +$fa-var-imdb: \f2d8; +$fa-var-deezer: \e077; +$fa-var-raspberry-pi: \f7bb; +$fa-var-jira: \f7b1; +$fa-var-docker: \f395; +$fa-var-screenpal: \e570; +$fa-var-bluetooth: \f293; +$fa-var-gitter: \f426; +$fa-var-d-and-d: \f38d; +$fa-var-microblog: \e01a; +$fa-var-cc-diners-club: \f24c; +$fa-var-gg-circle: \f261; +$fa-var-pied-piper-hat: \f4e5; +$fa-var-kickstarter-k: \f3bc; +$fa-var-yandex: \f413; +$fa-var-readme: \f4d5; +$fa-var-html5: \f13b; +$fa-var-sellsy: \f213; +$fa-var-square-web-awesome: \e683; +$fa-var-sass: \f41e; +$fa-var-wirsindhandwerk: \e2d0; +$fa-var-wsh: \e2d0; +$fa-var-buromobelexperte: \f37f; +$fa-var-salesforce: \f83b; +$fa-var-octopus-deploy: \e082; +$fa-var-medapps: \f3c6; +$fa-var-ns8: \f3d5; +$fa-var-pinterest-p: \f231; +$fa-var-apper: \f371; +$fa-var-fort-awesome: \f286; +$fa-var-waze: \f83f; +$fa-var-bluesky: \e671; +$fa-var-cc-jcb: \f24b; +$fa-var-snapchat: \f2ab; +$fa-var-snapchat-ghost: \f2ab; +$fa-var-fantasy-flight-games: \f6dc; +$fa-var-rust: \e07a; +$fa-var-wix: \f5cf; +$fa-var-square-behance: \f1b5; +$fa-var-behance-square: \f1b5; +$fa-var-supple: \f3f9; +$fa-var-webflow: \e65c; +$fa-var-rebel: \f1d0; +$fa-var-css3: \f13c; +$fa-var-staylinked: \f3f5; +$fa-var-kaggle: \f5fa; +$fa-var-space-awesome: \e5ac; +$fa-var-deviantart: \f1bd; +$fa-var-cpanel: \f388; +$fa-var-goodreads-g: \f3a9; +$fa-var-square-git: \f1d2; +$fa-var-git-square: \f1d2; +$fa-var-square-tumblr: \f174; +$fa-var-tumblr-square: \f174; +$fa-var-trello: \f181; +$fa-var-creative-commons-nc-jp: \f4ea; +$fa-var-get-pocket: \f265; +$fa-var-perbyte: \e083; +$fa-var-grunt: \f3ad; +$fa-var-weebly: \f5cc; +$fa-var-connectdevelop: \f20e; +$fa-var-leanpub: \f212; +$fa-var-black-tie: \f27e; +$fa-var-themeco: \f5c6; +$fa-var-python: \f3e2; +$fa-var-android: \f17b; +$fa-var-bots: \e340; +$fa-var-free-code-camp: \f2c5; +$fa-var-hornbill: \f592; +$fa-var-js: \f3b8; +$fa-var-ideal: \e013; +$fa-var-git: \f1d3; +$fa-var-dev: \f6cc; +$fa-var-sketch: \f7c6; +$fa-var-yandex-international: \f414; +$fa-var-cc-amex: \f1f3; +$fa-var-uber: \f402; +$fa-var-github: \f09b; +$fa-var-php: \f457; +$fa-var-alipay: \f642; +$fa-var-youtube: \f167; +$fa-var-skyatlas: \f216; +$fa-var-firefox-browser: \e007; +$fa-var-replyd: \f3e6; +$fa-var-suse: \f7d6; +$fa-var-jenkins: \f3b6; +$fa-var-twitter: \f099; +$fa-var-rockrms: \f3e9; +$fa-var-pinterest: \f0d2; +$fa-var-buffer: \f837; +$fa-var-npm: \f3d4; +$fa-var-yammer: \f840; +$fa-var-btc: \f15a; +$fa-var-dribbble: \f17d; +$fa-var-stumbleupon-circle: \f1a3; +$fa-var-internet-explorer: \f26b; +$fa-var-stubber: \e5c7; +$fa-var-telegram: \f2c6; +$fa-var-telegram-plane: \f2c6; +$fa-var-old-republic: \f510; +$fa-var-odysee: \e5c6; +$fa-var-square-whatsapp: \f40c; +$fa-var-whatsapp-square: \f40c; +$fa-var-node-js: \f3d3; +$fa-var-edge-legacy: \e078; +$fa-var-slack: \f198; +$fa-var-slack-hash: \f198; +$fa-var-medrt: \f3c8; +$fa-var-usb: \f287; +$fa-var-tumblr: \f173; +$fa-var-vaadin: \f408; +$fa-var-quora: \f2c4; +$fa-var-square-x-twitter: \e61a; +$fa-var-reacteurope: \f75d; +$fa-var-medium: \f23a; +$fa-var-medium-m: \f23a; +$fa-var-amilia: \f36d; +$fa-var-mixcloud: \f289; +$fa-var-flipboard: \f44d; +$fa-var-viacoin: \f237; +$fa-var-critical-role: \f6c9; +$fa-var-sitrox: \e44a; +$fa-var-discourse: \f393; +$fa-var-joomla: \f1aa; +$fa-var-mastodon: \f4f6; +$fa-var-airbnb: \f834; +$fa-var-wolf-pack-battalion: \f514; +$fa-var-buy-n-large: \f8a6; +$fa-var-gulp: \f3ae; +$fa-var-creative-commons-sampling-plus: \f4f1; +$fa-var-strava: \f428; +$fa-var-ember: \f423; +$fa-var-canadian-maple-leaf: \f785; +$fa-var-teamspeak: \f4f9; +$fa-var-pushed: \f3e1; +$fa-var-wordpress-simple: \f411; +$fa-var-nutritionix: \f3d6; +$fa-var-wodu: \e088; +$fa-var-google-pay: \e079; +$fa-var-intercom: \f7af; +$fa-var-zhihu: \f63f; +$fa-var-korvue: \f42f; +$fa-var-pix: \e43a; +$fa-var-steam-symbol: \f3f6; + +$fa-icons: ( + '0': $fa-var-0, + '1': $fa-var-1, + '2': $fa-var-2, + '3': $fa-var-3, + '4': $fa-var-4, + '5': $fa-var-5, + '6': $fa-var-6, + '7': $fa-var-7, + '8': $fa-var-8, + '9': $fa-var-9, + 'fill-drip': $fa-var-fill-drip, + 'arrows-to-circle': $fa-var-arrows-to-circle, + 'circle-chevron-right': $fa-var-circle-chevron-right, + 'chevron-circle-right': $fa-var-chevron-circle-right, + 'at': $fa-var-at, + 'trash-can': $fa-var-trash-can, + 'trash-alt': $fa-var-trash-alt, + 'text-height': $fa-var-text-height, + 'user-xmark': $fa-var-user-xmark, + 'user-times': $fa-var-user-times, + 'stethoscope': $fa-var-stethoscope, + 'message': $fa-var-message, + 'comment-alt': $fa-var-comment-alt, + 'info': $fa-var-info, + 'down-left-and-up-right-to-center': $fa-var-down-left-and-up-right-to-center, + 'compress-alt': $fa-var-compress-alt, + 'explosion': $fa-var-explosion, + 'file-lines': $fa-var-file-lines, + 'file-alt': $fa-var-file-alt, + 'file-text': $fa-var-file-text, + 'wave-square': $fa-var-wave-square, + 'ring': $fa-var-ring, + 'building-un': $fa-var-building-un, + 'dice-three': $fa-var-dice-three, + 'calendar-days': $fa-var-calendar-days, + 'calendar-alt': $fa-var-calendar-alt, + 'anchor-circle-check': $fa-var-anchor-circle-check, + 'building-circle-arrow-right': $fa-var-building-circle-arrow-right, + 'volleyball': $fa-var-volleyball, + 'volleyball-ball': $fa-var-volleyball-ball, + 'arrows-up-to-line': $fa-var-arrows-up-to-line, + 'sort-down': $fa-var-sort-down, + 'sort-desc': $fa-var-sort-desc, + 'circle-minus': $fa-var-circle-minus, + 'minus-circle': $fa-var-minus-circle, + 'door-open': $fa-var-door-open, + 'right-from-bracket': $fa-var-right-from-bracket, + 'sign-out-alt': $fa-var-sign-out-alt, + 'atom': $fa-var-atom, + 'soap': $fa-var-soap, + 'icons': $fa-var-icons, + 'heart-music-camera-bolt': $fa-var-heart-music-camera-bolt, + 'microphone-lines-slash': $fa-var-microphone-lines-slash, + 'microphone-alt-slash': $fa-var-microphone-alt-slash, + 'bridge-circle-check': $fa-var-bridge-circle-check, + 'pump-medical': $fa-var-pump-medical, + 'fingerprint': $fa-var-fingerprint, + 'hand-point-right': $fa-var-hand-point-right, + 'magnifying-glass-location': $fa-var-magnifying-glass-location, + 'search-location': $fa-var-search-location, + 'forward-step': $fa-var-forward-step, + 'step-forward': $fa-var-step-forward, + 'face-smile-beam': $fa-var-face-smile-beam, + 'smile-beam': $fa-var-smile-beam, + 'flag-checkered': $fa-var-flag-checkered, + 'football': $fa-var-football, + 'football-ball': $fa-var-football-ball, + 'school-circle-exclamation': $fa-var-school-circle-exclamation, + 'crop': $fa-var-crop, + 'angles-down': $fa-var-angles-down, + 'angle-double-down': $fa-var-angle-double-down, + 'users-rectangle': $fa-var-users-rectangle, + 'people-roof': $fa-var-people-roof, + 'people-line': $fa-var-people-line, + 'beer-mug-empty': $fa-var-beer-mug-empty, + 'beer': $fa-var-beer, + 'diagram-predecessor': $fa-var-diagram-predecessor, + 'arrow-up-long': $fa-var-arrow-up-long, + 'long-arrow-up': $fa-var-long-arrow-up, + 'fire-flame-simple': $fa-var-fire-flame-simple, + 'burn': $fa-var-burn, + 'person': $fa-var-person, + 'male': $fa-var-male, + 'laptop': $fa-var-laptop, + 'file-csv': $fa-var-file-csv, + 'menorah': $fa-var-menorah, + 'truck-plane': $fa-var-truck-plane, + 'record-vinyl': $fa-var-record-vinyl, + 'face-grin-stars': $fa-var-face-grin-stars, + 'grin-stars': $fa-var-grin-stars, + 'bong': $fa-var-bong, + 'spaghetti-monster-flying': $fa-var-spaghetti-monster-flying, + 'pastafarianism': $fa-var-pastafarianism, + 'arrow-down-up-across-line': $fa-var-arrow-down-up-across-line, + 'spoon': $fa-var-spoon, + 'utensil-spoon': $fa-var-utensil-spoon, + 'jar-wheat': $fa-var-jar-wheat, + 'envelopes-bulk': $fa-var-envelopes-bulk, + 'mail-bulk': $fa-var-mail-bulk, + 'file-circle-exclamation': $fa-var-file-circle-exclamation, + 'circle-h': $fa-var-circle-h, + 'hospital-symbol': $fa-var-hospital-symbol, + 'pager': $fa-var-pager, + 'address-book': $fa-var-address-book, + 'contact-book': $fa-var-contact-book, + 'strikethrough': $fa-var-strikethrough, + 'k': $fa-var-k, + 'landmark-flag': $fa-var-landmark-flag, + 'pencil': $fa-var-pencil, + 'pencil-alt': $fa-var-pencil-alt, + 'backward': $fa-var-backward, + 'caret-right': $fa-var-caret-right, + 'comments': $fa-var-comments, + 'paste': $fa-var-paste, + 'file-clipboard': $fa-var-file-clipboard, + 'code-pull-request': $fa-var-code-pull-request, + 'clipboard-list': $fa-var-clipboard-list, + 'truck-ramp-box': $fa-var-truck-ramp-box, + 'truck-loading': $fa-var-truck-loading, + 'user-check': $fa-var-user-check, + 'vial-virus': $fa-var-vial-virus, + 'sheet-plastic': $fa-var-sheet-plastic, + 'blog': $fa-var-blog, + 'user-ninja': $fa-var-user-ninja, + 'person-arrow-up-from-line': $fa-var-person-arrow-up-from-line, + 'scroll-torah': $fa-var-scroll-torah, + 'torah': $fa-var-torah, + 'broom-ball': $fa-var-broom-ball, + 'quidditch': $fa-var-quidditch, + 'quidditch-broom-ball': $fa-var-quidditch-broom-ball, + 'toggle-off': $fa-var-toggle-off, + 'box-archive': $fa-var-box-archive, + 'archive': $fa-var-archive, + 'person-drowning': $fa-var-person-drowning, + 'arrow-down-9-1': $fa-var-arrow-down-9-1, + 'sort-numeric-desc': $fa-var-sort-numeric-desc, + 'sort-numeric-down-alt': $fa-var-sort-numeric-down-alt, + 'face-grin-tongue-squint': $fa-var-face-grin-tongue-squint, + 'grin-tongue-squint': $fa-var-grin-tongue-squint, + 'spray-can': $fa-var-spray-can, + 'truck-monster': $fa-var-truck-monster, + 'w': $fa-var-w, + 'earth-africa': $fa-var-earth-africa, + 'globe-africa': $fa-var-globe-africa, + 'rainbow': $fa-var-rainbow, + 'circle-notch': $fa-var-circle-notch, + 'tablet-screen-button': $fa-var-tablet-screen-button, + 'tablet-alt': $fa-var-tablet-alt, + 'paw': $fa-var-paw, + 'cloud': $fa-var-cloud, + 'trowel-bricks': $fa-var-trowel-bricks, + 'face-flushed': $fa-var-face-flushed, + 'flushed': $fa-var-flushed, + 'hospital-user': $fa-var-hospital-user, + 'tent-arrow-left-right': $fa-var-tent-arrow-left-right, + 'gavel': $fa-var-gavel, + 'legal': $fa-var-legal, + 'binoculars': $fa-var-binoculars, + 'microphone-slash': $fa-var-microphone-slash, + 'box-tissue': $fa-var-box-tissue, + 'motorcycle': $fa-var-motorcycle, + 'bell-concierge': $fa-var-bell-concierge, + 'concierge-bell': $fa-var-concierge-bell, + 'pen-ruler': $fa-var-pen-ruler, + 'pencil-ruler': $fa-var-pencil-ruler, + 'people-arrows': $fa-var-people-arrows, + 'people-arrows-left-right': $fa-var-people-arrows-left-right, + 'mars-and-venus-burst': $fa-var-mars-and-venus-burst, + 'square-caret-right': $fa-var-square-caret-right, + 'caret-square-right': $fa-var-caret-square-right, + 'scissors': $fa-var-scissors, + 'cut': $fa-var-cut, + 'sun-plant-wilt': $fa-var-sun-plant-wilt, + 'toilets-portable': $fa-var-toilets-portable, + 'hockey-puck': $fa-var-hockey-puck, + 'table': $fa-var-table, + 'magnifying-glass-arrow-right': $fa-var-magnifying-glass-arrow-right, + 'tachograph-digital': $fa-var-tachograph-digital, + 'digital-tachograph': $fa-var-digital-tachograph, + 'users-slash': $fa-var-users-slash, + 'clover': $fa-var-clover, + 'reply': $fa-var-reply, + 'mail-reply': $fa-var-mail-reply, + 'star-and-crescent': $fa-var-star-and-crescent, + 'house-fire': $fa-var-house-fire, + 'square-minus': $fa-var-square-minus, + 'minus-square': $fa-var-minus-square, + 'helicopter': $fa-var-helicopter, + 'compass': $fa-var-compass, + 'square-caret-down': $fa-var-square-caret-down, + 'caret-square-down': $fa-var-caret-square-down, + 'file-circle-question': $fa-var-file-circle-question, + 'laptop-code': $fa-var-laptop-code, + 'swatchbook': $fa-var-swatchbook, + 'prescription-bottle': $fa-var-prescription-bottle, + 'bars': $fa-var-bars, + 'navicon': $fa-var-navicon, + 'people-group': $fa-var-people-group, + 'hourglass-end': $fa-var-hourglass-end, + 'hourglass-3': $fa-var-hourglass-3, + 'heart-crack': $fa-var-heart-crack, + 'heart-broken': $fa-var-heart-broken, + 'square-up-right': $fa-var-square-up-right, + 'external-link-square-alt': $fa-var-external-link-square-alt, + 'face-kiss-beam': $fa-var-face-kiss-beam, + 'kiss-beam': $fa-var-kiss-beam, + 'film': $fa-var-film, + 'ruler-horizontal': $fa-var-ruler-horizontal, + 'people-robbery': $fa-var-people-robbery, + 'lightbulb': $fa-var-lightbulb, + 'caret-left': $fa-var-caret-left, + 'circle-exclamation': $fa-var-circle-exclamation, + 'exclamation-circle': $fa-var-exclamation-circle, + 'school-circle-xmark': $fa-var-school-circle-xmark, + 'arrow-right-from-bracket': $fa-var-arrow-right-from-bracket, + 'sign-out': $fa-var-sign-out, + 'circle-chevron-down': $fa-var-circle-chevron-down, + 'chevron-circle-down': $fa-var-chevron-circle-down, + 'unlock-keyhole': $fa-var-unlock-keyhole, + 'unlock-alt': $fa-var-unlock-alt, + 'cloud-showers-heavy': $fa-var-cloud-showers-heavy, + 'headphones-simple': $fa-var-headphones-simple, + 'headphones-alt': $fa-var-headphones-alt, + 'sitemap': $fa-var-sitemap, + 'circle-dollar-to-slot': $fa-var-circle-dollar-to-slot, + 'donate': $fa-var-donate, + 'memory': $fa-var-memory, + 'road-spikes': $fa-var-road-spikes, + 'fire-burner': $fa-var-fire-burner, + 'flag': $fa-var-flag, + 'hanukiah': $fa-var-hanukiah, + 'feather': $fa-var-feather, + 'volume-low': $fa-var-volume-low, + 'volume-down': $fa-var-volume-down, + 'comment-slash': $fa-var-comment-slash, + 'cloud-sun-rain': $fa-var-cloud-sun-rain, + 'compress': $fa-var-compress, + 'wheat-awn': $fa-var-wheat-awn, + 'wheat-alt': $fa-var-wheat-alt, + 'ankh': $fa-var-ankh, + 'hands-holding-child': $fa-var-hands-holding-child, + 'asterisk': $fa-var-asterisk, + 'square-check': $fa-var-square-check, + 'check-square': $fa-var-check-square, + 'peseta-sign': $fa-var-peseta-sign, + 'heading': $fa-var-heading, + 'header': $fa-var-header, + 'ghost': $fa-var-ghost, + 'list': $fa-var-list, + 'list-squares': $fa-var-list-squares, + 'square-phone-flip': $fa-var-square-phone-flip, + 'phone-square-alt': $fa-var-phone-square-alt, + 'cart-plus': $fa-var-cart-plus, + 'gamepad': $fa-var-gamepad, + 'circle-dot': $fa-var-circle-dot, + 'dot-circle': $fa-var-dot-circle, + 'face-dizzy': $fa-var-face-dizzy, + 'dizzy': $fa-var-dizzy, + 'egg': $fa-var-egg, + 'house-medical-circle-xmark': $fa-var-house-medical-circle-xmark, + 'campground': $fa-var-campground, + 'folder-plus': $fa-var-folder-plus, + 'futbol': $fa-var-futbol, + 'futbol-ball': $fa-var-futbol-ball, + 'soccer-ball': $fa-var-soccer-ball, + 'paintbrush': $fa-var-paintbrush, + 'paint-brush': $fa-var-paint-brush, + 'lock': $fa-var-lock, + 'gas-pump': $fa-var-gas-pump, + 'hot-tub-person': $fa-var-hot-tub-person, + 'hot-tub': $fa-var-hot-tub, + 'map-location': $fa-var-map-location, + 'map-marked': $fa-var-map-marked, + 'house-flood-water': $fa-var-house-flood-water, + 'tree': $fa-var-tree, + 'bridge-lock': $fa-var-bridge-lock, + 'sack-dollar': $fa-var-sack-dollar, + 'pen-to-square': $fa-var-pen-to-square, + 'edit': $fa-var-edit, + 'car-side': $fa-var-car-side, + 'share-nodes': $fa-var-share-nodes, + 'share-alt': $fa-var-share-alt, + 'heart-circle-minus': $fa-var-heart-circle-minus, + 'hourglass-half': $fa-var-hourglass-half, + 'hourglass-2': $fa-var-hourglass-2, + 'microscope': $fa-var-microscope, + 'sink': $fa-var-sink, + 'bag-shopping': $fa-var-bag-shopping, + 'shopping-bag': $fa-var-shopping-bag, + 'arrow-down-z-a': $fa-var-arrow-down-z-a, + 'sort-alpha-desc': $fa-var-sort-alpha-desc, + 'sort-alpha-down-alt': $fa-var-sort-alpha-down-alt, + 'mitten': $fa-var-mitten, + 'person-rays': $fa-var-person-rays, + 'users': $fa-var-users, + 'eye-slash': $fa-var-eye-slash, + 'flask-vial': $fa-var-flask-vial, + 'hand': $fa-var-hand, + 'hand-paper': $fa-var-hand-paper, + 'om': $fa-var-om, + 'worm': $fa-var-worm, + 'house-circle-xmark': $fa-var-house-circle-xmark, + 'plug': $fa-var-plug, + 'chevron-up': $fa-var-chevron-up, + 'hand-spock': $fa-var-hand-spock, + 'stopwatch': $fa-var-stopwatch, + 'face-kiss': $fa-var-face-kiss, + 'kiss': $fa-var-kiss, + 'bridge-circle-xmark': $fa-var-bridge-circle-xmark, + 'face-grin-tongue': $fa-var-face-grin-tongue, + 'grin-tongue': $fa-var-grin-tongue, + 'chess-bishop': $fa-var-chess-bishop, + 'face-grin-wink': $fa-var-face-grin-wink, + 'grin-wink': $fa-var-grin-wink, + 'ear-deaf': $fa-var-ear-deaf, + 'deaf': $fa-var-deaf, + 'deafness': $fa-var-deafness, + 'hard-of-hearing': $fa-var-hard-of-hearing, + 'road-circle-check': $fa-var-road-circle-check, + 'dice-five': $fa-var-dice-five, + 'square-rss': $fa-var-square-rss, + 'rss-square': $fa-var-rss-square, + 'land-mine-on': $fa-var-land-mine-on, + 'i-cursor': $fa-var-i-cursor, + 'stamp': $fa-var-stamp, + 'stairs': $fa-var-stairs, + 'i': $fa-var-i, + 'hryvnia-sign': $fa-var-hryvnia-sign, + 'hryvnia': $fa-var-hryvnia, + 'pills': $fa-var-pills, + 'face-grin-wide': $fa-var-face-grin-wide, + 'grin-alt': $fa-var-grin-alt, + 'tooth': $fa-var-tooth, + 'v': $fa-var-v, + 'bangladeshi-taka-sign': $fa-var-bangladeshi-taka-sign, + 'bicycle': $fa-var-bicycle, + 'staff-snake': $fa-var-staff-snake, + 'rod-asclepius': $fa-var-rod-asclepius, + 'rod-snake': $fa-var-rod-snake, + 'staff-aesculapius': $fa-var-staff-aesculapius, + 'head-side-cough-slash': $fa-var-head-side-cough-slash, + 'truck-medical': $fa-var-truck-medical, + 'ambulance': $fa-var-ambulance, + 'wheat-awn-circle-exclamation': $fa-var-wheat-awn-circle-exclamation, + 'snowman': $fa-var-snowman, + 'mortar-pestle': $fa-var-mortar-pestle, + 'road-barrier': $fa-var-road-barrier, + 'school': $fa-var-school, + 'igloo': $fa-var-igloo, + 'joint': $fa-var-joint, + 'angle-right': $fa-var-angle-right, + 'horse': $fa-var-horse, + 'q': $fa-var-q, + 'g': $fa-var-g, + 'notes-medical': $fa-var-notes-medical, + 'temperature-half': $fa-var-temperature-half, + 'temperature-2': $fa-var-temperature-2, + 'thermometer-2': $fa-var-thermometer-2, + 'thermometer-half': $fa-var-thermometer-half, + 'dong-sign': $fa-var-dong-sign, + 'capsules': $fa-var-capsules, + 'poo-storm': $fa-var-poo-storm, + 'poo-bolt': $fa-var-poo-bolt, + 'face-frown-open': $fa-var-face-frown-open, + 'frown-open': $fa-var-frown-open, + 'hand-point-up': $fa-var-hand-point-up, + 'money-bill': $fa-var-money-bill, + 'bookmark': $fa-var-bookmark, + 'align-justify': $fa-var-align-justify, + 'umbrella-beach': $fa-var-umbrella-beach, + 'helmet-un': $fa-var-helmet-un, + 'bullseye': $fa-var-bullseye, + 'bacon': $fa-var-bacon, + 'hand-point-down': $fa-var-hand-point-down, + 'arrow-up-from-bracket': $fa-var-arrow-up-from-bracket, + 'folder': $fa-var-folder, + 'folder-blank': $fa-var-folder-blank, + 'file-waveform': $fa-var-file-waveform, + 'file-medical-alt': $fa-var-file-medical-alt, + 'radiation': $fa-var-radiation, + 'chart-simple': $fa-var-chart-simple, + 'mars-stroke': $fa-var-mars-stroke, + 'vial': $fa-var-vial, + 'gauge': $fa-var-gauge, + 'dashboard': $fa-var-dashboard, + 'gauge-med': $fa-var-gauge-med, + 'tachometer-alt-average': $fa-var-tachometer-alt-average, + 'wand-magic-sparkles': $fa-var-wand-magic-sparkles, + 'magic-wand-sparkles': $fa-var-magic-wand-sparkles, + 'e': $fa-var-e, + 'pen-clip': $fa-var-pen-clip, + 'pen-alt': $fa-var-pen-alt, + 'bridge-circle-exclamation': $fa-var-bridge-circle-exclamation, + 'user': $fa-var-user, + 'school-circle-check': $fa-var-school-circle-check, + 'dumpster': $fa-var-dumpster, + 'van-shuttle': $fa-var-van-shuttle, + 'shuttle-van': $fa-var-shuttle-van, + 'building-user': $fa-var-building-user, + 'square-caret-left': $fa-var-square-caret-left, + 'caret-square-left': $fa-var-caret-square-left, + 'highlighter': $fa-var-highlighter, + 'key': $fa-var-key, + 'bullhorn': $fa-var-bullhorn, + 'globe': $fa-var-globe, + 'synagogue': $fa-var-synagogue, + 'person-half-dress': $fa-var-person-half-dress, + 'road-bridge': $fa-var-road-bridge, + 'location-arrow': $fa-var-location-arrow, + 'c': $fa-var-c, + 'tablet-button': $fa-var-tablet-button, + 'building-lock': $fa-var-building-lock, + 'pizza-slice': $fa-var-pizza-slice, + 'money-bill-wave': $fa-var-money-bill-wave, + 'chart-area': $fa-var-chart-area, + 'area-chart': $fa-var-area-chart, + 'house-flag': $fa-var-house-flag, + 'person-circle-minus': $fa-var-person-circle-minus, + 'ban': $fa-var-ban, + 'cancel': $fa-var-cancel, + 'camera-rotate': $fa-var-camera-rotate, + 'spray-can-sparkles': $fa-var-spray-can-sparkles, + 'air-freshener': $fa-var-air-freshener, + 'star': $fa-var-star, + 'repeat': $fa-var-repeat, + 'cross': $fa-var-cross, + 'box': $fa-var-box, + 'venus-mars': $fa-var-venus-mars, + 'arrow-pointer': $fa-var-arrow-pointer, + 'mouse-pointer': $fa-var-mouse-pointer, + 'maximize': $fa-var-maximize, + 'expand-arrows-alt': $fa-var-expand-arrows-alt, + 'charging-station': $fa-var-charging-station, + 'shapes': $fa-var-shapes, + 'triangle-circle-square': $fa-var-triangle-circle-square, + 'shuffle': $fa-var-shuffle, + 'random': $fa-var-random, + 'person-running': $fa-var-person-running, + 'running': $fa-var-running, + 'mobile-retro': $fa-var-mobile-retro, + 'grip-lines-vertical': $fa-var-grip-lines-vertical, + 'spider': $fa-var-spider, + 'hands-bound': $fa-var-hands-bound, + 'file-invoice-dollar': $fa-var-file-invoice-dollar, + 'plane-circle-exclamation': $fa-var-plane-circle-exclamation, + 'x-ray': $fa-var-x-ray, + 'spell-check': $fa-var-spell-check, + 'slash': $fa-var-slash, + 'computer-mouse': $fa-var-computer-mouse, + 'mouse': $fa-var-mouse, + 'arrow-right-to-bracket': $fa-var-arrow-right-to-bracket, + 'sign-in': $fa-var-sign-in, + 'shop-slash': $fa-var-shop-slash, + 'store-alt-slash': $fa-var-store-alt-slash, + 'server': $fa-var-server, + 'virus-covid-slash': $fa-var-virus-covid-slash, + 'shop-lock': $fa-var-shop-lock, + 'hourglass-start': $fa-var-hourglass-start, + 'hourglass-1': $fa-var-hourglass-1, + 'blender-phone': $fa-var-blender-phone, + 'building-wheat': $fa-var-building-wheat, + 'person-breastfeeding': $fa-var-person-breastfeeding, + 'right-to-bracket': $fa-var-right-to-bracket, + 'sign-in-alt': $fa-var-sign-in-alt, + 'venus': $fa-var-venus, + 'passport': $fa-var-passport, + 'thumbtack-slash': $fa-var-thumbtack-slash, + 'thumb-tack-slash': $fa-var-thumb-tack-slash, + 'heart-pulse': $fa-var-heart-pulse, + 'heartbeat': $fa-var-heartbeat, + 'people-carry-box': $fa-var-people-carry-box, + 'people-carry': $fa-var-people-carry, + 'temperature-high': $fa-var-temperature-high, + 'microchip': $fa-var-microchip, + 'crown': $fa-var-crown, + 'weight-hanging': $fa-var-weight-hanging, + 'xmarks-lines': $fa-var-xmarks-lines, + 'file-prescription': $fa-var-file-prescription, + 'weight-scale': $fa-var-weight-scale, + 'weight': $fa-var-weight, + 'user-group': $fa-var-user-group, + 'user-friends': $fa-var-user-friends, + 'arrow-up-a-z': $fa-var-arrow-up-a-z, + 'sort-alpha-up': $fa-var-sort-alpha-up, + 'chess-knight': $fa-var-chess-knight, + 'face-laugh-squint': $fa-var-face-laugh-squint, + 'laugh-squint': $fa-var-laugh-squint, + 'wheelchair': $fa-var-wheelchair, + 'circle-arrow-up': $fa-var-circle-arrow-up, + 'arrow-circle-up': $fa-var-arrow-circle-up, + 'toggle-on': $fa-var-toggle-on, + 'person-walking': $fa-var-person-walking, + 'walking': $fa-var-walking, + 'l': $fa-var-l, + 'fire': $fa-var-fire, + 'bed-pulse': $fa-var-bed-pulse, + 'procedures': $fa-var-procedures, + 'shuttle-space': $fa-var-shuttle-space, + 'space-shuttle': $fa-var-space-shuttle, + 'face-laugh': $fa-var-face-laugh, + 'laugh': $fa-var-laugh, + 'folder-open': $fa-var-folder-open, + 'heart-circle-plus': $fa-var-heart-circle-plus, + 'code-fork': $fa-var-code-fork, + 'city': $fa-var-city, + 'microphone-lines': $fa-var-microphone-lines, + 'microphone-alt': $fa-var-microphone-alt, + 'pepper-hot': $fa-var-pepper-hot, + 'unlock': $fa-var-unlock, + 'colon-sign': $fa-var-colon-sign, + 'headset': $fa-var-headset, + 'store-slash': $fa-var-store-slash, + 'road-circle-xmark': $fa-var-road-circle-xmark, + 'user-minus': $fa-var-user-minus, + 'mars-stroke-up': $fa-var-mars-stroke-up, + 'mars-stroke-v': $fa-var-mars-stroke-v, + 'champagne-glasses': $fa-var-champagne-glasses, + 'glass-cheers': $fa-var-glass-cheers, + 'clipboard': $fa-var-clipboard, + 'house-circle-exclamation': $fa-var-house-circle-exclamation, + 'file-arrow-up': $fa-var-file-arrow-up, + 'file-upload': $fa-var-file-upload, + 'wifi': $fa-var-wifi, + 'wifi-3': $fa-var-wifi-3, + 'wifi-strong': $fa-var-wifi-strong, + 'bath': $fa-var-bath, + 'bathtub': $fa-var-bathtub, + 'underline': $fa-var-underline, + 'user-pen': $fa-var-user-pen, + 'user-edit': $fa-var-user-edit, + 'signature': $fa-var-signature, + 'stroopwafel': $fa-var-stroopwafel, + 'bold': $fa-var-bold, + 'anchor-lock': $fa-var-anchor-lock, + 'building-ngo': $fa-var-building-ngo, + 'manat-sign': $fa-var-manat-sign, + 'not-equal': $fa-var-not-equal, + 'border-top-left': $fa-var-border-top-left, + 'border-style': $fa-var-border-style, + 'map-location-dot': $fa-var-map-location-dot, + 'map-marked-alt': $fa-var-map-marked-alt, + 'jedi': $fa-var-jedi, + 'square-poll-vertical': $fa-var-square-poll-vertical, + 'poll': $fa-var-poll, + 'mug-hot': $fa-var-mug-hot, + 'car-battery': $fa-var-car-battery, + 'battery-car': $fa-var-battery-car, + 'gift': $fa-var-gift, + 'dice-two': $fa-var-dice-two, + 'chess-queen': $fa-var-chess-queen, + 'glasses': $fa-var-glasses, + 'chess-board': $fa-var-chess-board, + 'building-circle-check': $fa-var-building-circle-check, + 'person-chalkboard': $fa-var-person-chalkboard, + 'mars-stroke-right': $fa-var-mars-stroke-right, + 'mars-stroke-h': $fa-var-mars-stroke-h, + 'hand-back-fist': $fa-var-hand-back-fist, + 'hand-rock': $fa-var-hand-rock, + 'square-caret-up': $fa-var-square-caret-up, + 'caret-square-up': $fa-var-caret-square-up, + 'cloud-showers-water': $fa-var-cloud-showers-water, + 'chart-bar': $fa-var-chart-bar, + 'bar-chart': $fa-var-bar-chart, + 'hands-bubbles': $fa-var-hands-bubbles, + 'hands-wash': $fa-var-hands-wash, + 'less-than-equal': $fa-var-less-than-equal, + 'train': $fa-var-train, + 'eye-low-vision': $fa-var-eye-low-vision, + 'low-vision': $fa-var-low-vision, + 'crow': $fa-var-crow, + 'sailboat': $fa-var-sailboat, + 'window-restore': $fa-var-window-restore, + 'square-plus': $fa-var-square-plus, + 'plus-square': $fa-var-plus-square, + 'torii-gate': $fa-var-torii-gate, + 'frog': $fa-var-frog, + 'bucket': $fa-var-bucket, + 'image': $fa-var-image, + 'microphone': $fa-var-microphone, + 'cow': $fa-var-cow, + 'caret-up': $fa-var-caret-up, + 'screwdriver': $fa-var-screwdriver, + 'folder-closed': $fa-var-folder-closed, + 'house-tsunami': $fa-var-house-tsunami, + 'square-nfi': $fa-var-square-nfi, + 'arrow-up-from-ground-water': $fa-var-arrow-up-from-ground-water, + 'martini-glass': $fa-var-martini-glass, + 'glass-martini-alt': $fa-var-glass-martini-alt, + 'square-binary': $fa-var-square-binary, + 'rotate-left': $fa-var-rotate-left, + 'rotate-back': $fa-var-rotate-back, + 'rotate-backward': $fa-var-rotate-backward, + 'undo-alt': $fa-var-undo-alt, + 'table-columns': $fa-var-table-columns, + 'columns': $fa-var-columns, + 'lemon': $fa-var-lemon, + 'head-side-mask': $fa-var-head-side-mask, + 'handshake': $fa-var-handshake, + 'gem': $fa-var-gem, + 'dolly': $fa-var-dolly, + 'dolly-box': $fa-var-dolly-box, + 'smoking': $fa-var-smoking, + 'minimize': $fa-var-minimize, + 'compress-arrows-alt': $fa-var-compress-arrows-alt, + 'monument': $fa-var-monument, + 'snowplow': $fa-var-snowplow, + 'angles-right': $fa-var-angles-right, + 'angle-double-right': $fa-var-angle-double-right, + 'cannabis': $fa-var-cannabis, + 'circle-play': $fa-var-circle-play, + 'play-circle': $fa-var-play-circle, + 'tablets': $fa-var-tablets, + 'ethernet': $fa-var-ethernet, + 'euro-sign': $fa-var-euro-sign, + 'eur': $fa-var-eur, + 'euro': $fa-var-euro, + 'chair': $fa-var-chair, + 'circle-check': $fa-var-circle-check, + 'check-circle': $fa-var-check-circle, + 'circle-stop': $fa-var-circle-stop, + 'stop-circle': $fa-var-stop-circle, + 'compass-drafting': $fa-var-compass-drafting, + 'drafting-compass': $fa-var-drafting-compass, + 'plate-wheat': $fa-var-plate-wheat, + 'icicles': $fa-var-icicles, + 'person-shelter': $fa-var-person-shelter, + 'neuter': $fa-var-neuter, + 'id-badge': $fa-var-id-badge, + 'marker': $fa-var-marker, + 'face-laugh-beam': $fa-var-face-laugh-beam, + 'laugh-beam': $fa-var-laugh-beam, + 'helicopter-symbol': $fa-var-helicopter-symbol, + 'universal-access': $fa-var-universal-access, + 'circle-chevron-up': $fa-var-circle-chevron-up, + 'chevron-circle-up': $fa-var-chevron-circle-up, + 'lari-sign': $fa-var-lari-sign, + 'volcano': $fa-var-volcano, + 'person-walking-dashed-line-arrow-right': + $fa-var-person-walking-dashed-line-arrow-right, + 'sterling-sign': $fa-var-sterling-sign, + 'gbp': $fa-var-gbp, + 'pound-sign': $fa-var-pound-sign, + 'viruses': $fa-var-viruses, + 'square-person-confined': $fa-var-square-person-confined, + 'user-tie': $fa-var-user-tie, + 'arrow-down-long': $fa-var-arrow-down-long, + 'long-arrow-down': $fa-var-long-arrow-down, + 'tent-arrow-down-to-line': $fa-var-tent-arrow-down-to-line, + 'certificate': $fa-var-certificate, + 'reply-all': $fa-var-reply-all, + 'mail-reply-all': $fa-var-mail-reply-all, + 'suitcase': $fa-var-suitcase, + 'person-skating': $fa-var-person-skating, + 'skating': $fa-var-skating, + 'filter-circle-dollar': $fa-var-filter-circle-dollar, + 'funnel-dollar': $fa-var-funnel-dollar, + 'camera-retro': $fa-var-camera-retro, + 'circle-arrow-down': $fa-var-circle-arrow-down, + 'arrow-circle-down': $fa-var-arrow-circle-down, + 'file-import': $fa-var-file-import, + 'arrow-right-to-file': $fa-var-arrow-right-to-file, + 'square-arrow-up-right': $fa-var-square-arrow-up-right, + 'external-link-square': $fa-var-external-link-square, + 'box-open': $fa-var-box-open, + 'scroll': $fa-var-scroll, + 'spa': $fa-var-spa, + 'location-pin-lock': $fa-var-location-pin-lock, + 'pause': $fa-var-pause, + 'hill-avalanche': $fa-var-hill-avalanche, + 'temperature-empty': $fa-var-temperature-empty, + 'temperature-0': $fa-var-temperature-0, + 'thermometer-0': $fa-var-thermometer-0, + 'thermometer-empty': $fa-var-thermometer-empty, + 'bomb': $fa-var-bomb, + 'registered': $fa-var-registered, + 'address-card': $fa-var-address-card, + 'contact-card': $fa-var-contact-card, + 'vcard': $fa-var-vcard, + 'scale-unbalanced-flip': $fa-var-scale-unbalanced-flip, + 'balance-scale-right': $fa-var-balance-scale-right, + 'subscript': $fa-var-subscript, + 'diamond-turn-right': $fa-var-diamond-turn-right, + 'directions': $fa-var-directions, + 'burst': $fa-var-burst, + 'house-laptop': $fa-var-house-laptop, + 'laptop-house': $fa-var-laptop-house, + 'face-tired': $fa-var-face-tired, + 'tired': $fa-var-tired, + 'money-bills': $fa-var-money-bills, + 'smog': $fa-var-smog, + 'crutch': $fa-var-crutch, + 'cloud-arrow-up': $fa-var-cloud-arrow-up, + 'cloud-upload': $fa-var-cloud-upload, + 'cloud-upload-alt': $fa-var-cloud-upload-alt, + 'palette': $fa-var-palette, + 'arrows-turn-right': $fa-var-arrows-turn-right, + 'vest': $fa-var-vest, + 'ferry': $fa-var-ferry, + 'arrows-down-to-people': $fa-var-arrows-down-to-people, + 'seedling': $fa-var-seedling, + 'sprout': $fa-var-sprout, + 'left-right': $fa-var-left-right, + 'arrows-alt-h': $fa-var-arrows-alt-h, + 'boxes-packing': $fa-var-boxes-packing, + 'circle-arrow-left': $fa-var-circle-arrow-left, + 'arrow-circle-left': $fa-var-arrow-circle-left, + 'group-arrows-rotate': $fa-var-group-arrows-rotate, + 'bowl-food': $fa-var-bowl-food, + 'candy-cane': $fa-var-candy-cane, + 'arrow-down-wide-short': $fa-var-arrow-down-wide-short, + 'sort-amount-asc': $fa-var-sort-amount-asc, + 'sort-amount-down': $fa-var-sort-amount-down, + 'cloud-bolt': $fa-var-cloud-bolt, + 'thunderstorm': $fa-var-thunderstorm, + 'text-slash': $fa-var-text-slash, + 'remove-format': $fa-var-remove-format, + 'face-smile-wink': $fa-var-face-smile-wink, + 'smile-wink': $fa-var-smile-wink, + 'file-word': $fa-var-file-word, + 'file-powerpoint': $fa-var-file-powerpoint, + 'arrows-left-right': $fa-var-arrows-left-right, + 'arrows-h': $fa-var-arrows-h, + 'house-lock': $fa-var-house-lock, + 'cloud-arrow-down': $fa-var-cloud-arrow-down, + 'cloud-download': $fa-var-cloud-download, + 'cloud-download-alt': $fa-var-cloud-download-alt, + 'children': $fa-var-children, + 'chalkboard': $fa-var-chalkboard, + 'blackboard': $fa-var-blackboard, + 'user-large-slash': $fa-var-user-large-slash, + 'user-alt-slash': $fa-var-user-alt-slash, + 'envelope-open': $fa-var-envelope-open, + 'handshake-simple-slash': $fa-var-handshake-simple-slash, + 'handshake-alt-slash': $fa-var-handshake-alt-slash, + 'mattress-pillow': $fa-var-mattress-pillow, + 'guarani-sign': $fa-var-guarani-sign, + 'arrows-rotate': $fa-var-arrows-rotate, + 'refresh': $fa-var-refresh, + 'sync': $fa-var-sync, + 'fire-extinguisher': $fa-var-fire-extinguisher, + 'cruzeiro-sign': $fa-var-cruzeiro-sign, + 'greater-than-equal': $fa-var-greater-than-equal, + 'shield-halved': $fa-var-shield-halved, + 'shield-alt': $fa-var-shield-alt, + 'book-atlas': $fa-var-book-atlas, + 'atlas': $fa-var-atlas, + 'virus': $fa-var-virus, + 'envelope-circle-check': $fa-var-envelope-circle-check, + 'layer-group': $fa-var-layer-group, + 'arrows-to-dot': $fa-var-arrows-to-dot, + 'archway': $fa-var-archway, + 'heart-circle-check': $fa-var-heart-circle-check, + 'house-chimney-crack': $fa-var-house-chimney-crack, + 'house-damage': $fa-var-house-damage, + 'file-zipper': $fa-var-file-zipper, + 'file-archive': $fa-var-file-archive, + 'square': $fa-var-square, + 'martini-glass-empty': $fa-var-martini-glass-empty, + 'glass-martini': $fa-var-glass-martini, + 'couch': $fa-var-couch, + 'cedi-sign': $fa-var-cedi-sign, + 'italic': $fa-var-italic, + 'table-cells-column-lock': $fa-var-table-cells-column-lock, + 'church': $fa-var-church, + 'comments-dollar': $fa-var-comments-dollar, + 'democrat': $fa-var-democrat, + 'z': $fa-var-z, + 'person-skiing': $fa-var-person-skiing, + 'skiing': $fa-var-skiing, + 'road-lock': $fa-var-road-lock, + 'a': $fa-var-a, + 'temperature-arrow-down': $fa-var-temperature-arrow-down, + 'temperature-down': $fa-var-temperature-down, + 'feather-pointed': $fa-var-feather-pointed, + 'feather-alt': $fa-var-feather-alt, + 'p': $fa-var-p, + 'snowflake': $fa-var-snowflake, + 'newspaper': $fa-var-newspaper, + 'rectangle-ad': $fa-var-rectangle-ad, + 'ad': $fa-var-ad, + 'circle-arrow-right': $fa-var-circle-arrow-right, + 'arrow-circle-right': $fa-var-arrow-circle-right, + 'filter-circle-xmark': $fa-var-filter-circle-xmark, + 'locust': $fa-var-locust, + 'sort': $fa-var-sort, + 'unsorted': $fa-var-unsorted, + 'list-ol': $fa-var-list-ol, + 'list-1-2': $fa-var-list-1-2, + 'list-numeric': $fa-var-list-numeric, + 'person-dress-burst': $fa-var-person-dress-burst, + 'money-check-dollar': $fa-var-money-check-dollar, + 'money-check-alt': $fa-var-money-check-alt, + 'vector-square': $fa-var-vector-square, + 'bread-slice': $fa-var-bread-slice, + 'language': $fa-var-language, + 'face-kiss-wink-heart': $fa-var-face-kiss-wink-heart, + 'kiss-wink-heart': $fa-var-kiss-wink-heart, + 'filter': $fa-var-filter, + 'question': $fa-var-question, + 'file-signature': $fa-var-file-signature, + 'up-down-left-right': $fa-var-up-down-left-right, + 'arrows-alt': $fa-var-arrows-alt, + 'house-chimney-user': $fa-var-house-chimney-user, + 'hand-holding-heart': $fa-var-hand-holding-heart, + 'puzzle-piece': $fa-var-puzzle-piece, + 'money-check': $fa-var-money-check, + 'star-half-stroke': $fa-var-star-half-stroke, + 'star-half-alt': $fa-var-star-half-alt, + 'code': $fa-var-code, + 'whiskey-glass': $fa-var-whiskey-glass, + 'glass-whiskey': $fa-var-glass-whiskey, + 'building-circle-exclamation': $fa-var-building-circle-exclamation, + 'magnifying-glass-chart': $fa-var-magnifying-glass-chart, + 'arrow-up-right-from-square': $fa-var-arrow-up-right-from-square, + 'external-link': $fa-var-external-link, + 'cubes-stacked': $fa-var-cubes-stacked, + 'won-sign': $fa-var-won-sign, + 'krw': $fa-var-krw, + 'won': $fa-var-won, + 'virus-covid': $fa-var-virus-covid, + 'austral-sign': $fa-var-austral-sign, + 'f': $fa-var-f, + 'leaf': $fa-var-leaf, + 'road': $fa-var-road, + 'taxi': $fa-var-taxi, + 'cab': $fa-var-cab, + 'person-circle-plus': $fa-var-person-circle-plus, + 'chart-pie': $fa-var-chart-pie, + 'pie-chart': $fa-var-pie-chart, + 'bolt-lightning': $fa-var-bolt-lightning, + 'sack-xmark': $fa-var-sack-xmark, + 'file-excel': $fa-var-file-excel, + 'file-contract': $fa-var-file-contract, + 'fish-fins': $fa-var-fish-fins, + 'building-flag': $fa-var-building-flag, + 'face-grin-beam': $fa-var-face-grin-beam, + 'grin-beam': $fa-var-grin-beam, + 'object-ungroup': $fa-var-object-ungroup, + 'poop': $fa-var-poop, + 'location-pin': $fa-var-location-pin, + 'map-marker': $fa-var-map-marker, + 'kaaba': $fa-var-kaaba, + 'toilet-paper': $fa-var-toilet-paper, + 'helmet-safety': $fa-var-helmet-safety, + 'hard-hat': $fa-var-hard-hat, + 'hat-hard': $fa-var-hat-hard, + 'eject': $fa-var-eject, + 'circle-right': $fa-var-circle-right, + 'arrow-alt-circle-right': $fa-var-arrow-alt-circle-right, + 'plane-circle-check': $fa-var-plane-circle-check, + 'face-rolling-eyes': $fa-var-face-rolling-eyes, + 'meh-rolling-eyes': $fa-var-meh-rolling-eyes, + 'object-group': $fa-var-object-group, + 'chart-line': $fa-var-chart-line, + 'line-chart': $fa-var-line-chart, + 'mask-ventilator': $fa-var-mask-ventilator, + 'arrow-right': $fa-var-arrow-right, + 'signs-post': $fa-var-signs-post, + 'map-signs': $fa-var-map-signs, + 'cash-register': $fa-var-cash-register, + 'person-circle-question': $fa-var-person-circle-question, + 'h': $fa-var-h, + 'tarp': $fa-var-tarp, + 'screwdriver-wrench': $fa-var-screwdriver-wrench, + 'tools': $fa-var-tools, + 'arrows-to-eye': $fa-var-arrows-to-eye, + 'plug-circle-bolt': $fa-var-plug-circle-bolt, + 'heart': $fa-var-heart, + 'mars-and-venus': $fa-var-mars-and-venus, + 'house-user': $fa-var-house-user, + 'home-user': $fa-var-home-user, + 'dumpster-fire': $fa-var-dumpster-fire, + 'house-crack': $fa-var-house-crack, + 'martini-glass-citrus': $fa-var-martini-glass-citrus, + 'cocktail': $fa-var-cocktail, + 'face-surprise': $fa-var-face-surprise, + 'surprise': $fa-var-surprise, + 'bottle-water': $fa-var-bottle-water, + 'circle-pause': $fa-var-circle-pause, + 'pause-circle': $fa-var-pause-circle, + 'toilet-paper-slash': $fa-var-toilet-paper-slash, + 'apple-whole': $fa-var-apple-whole, + 'apple-alt': $fa-var-apple-alt, + 'kitchen-set': $fa-var-kitchen-set, + 'r': $fa-var-r, + 'temperature-quarter': $fa-var-temperature-quarter, + 'temperature-1': $fa-var-temperature-1, + 'thermometer-1': $fa-var-thermometer-1, + 'thermometer-quarter': $fa-var-thermometer-quarter, + 'cube': $fa-var-cube, + 'bitcoin-sign': $fa-var-bitcoin-sign, + 'shield-dog': $fa-var-shield-dog, + 'solar-panel': $fa-var-solar-panel, + 'lock-open': $fa-var-lock-open, + 'elevator': $fa-var-elevator, + 'money-bill-transfer': $fa-var-money-bill-transfer, + 'money-bill-trend-up': $fa-var-money-bill-trend-up, + 'house-flood-water-circle-arrow-right': + $fa-var-house-flood-water-circle-arrow-right, + 'square-poll-horizontal': $fa-var-square-poll-horizontal, + 'poll-h': $fa-var-poll-h, + 'circle': $fa-var-circle, + 'backward-fast': $fa-var-backward-fast, + 'fast-backward': $fa-var-fast-backward, + 'recycle': $fa-var-recycle, + 'user-astronaut': $fa-var-user-astronaut, + 'plane-slash': $fa-var-plane-slash, + 'trademark': $fa-var-trademark, + 'basketball': $fa-var-basketball, + 'basketball-ball': $fa-var-basketball-ball, + 'satellite-dish': $fa-var-satellite-dish, + 'circle-up': $fa-var-circle-up, + 'arrow-alt-circle-up': $fa-var-arrow-alt-circle-up, + 'mobile-screen-button': $fa-var-mobile-screen-button, + 'mobile-alt': $fa-var-mobile-alt, + 'volume-high': $fa-var-volume-high, + 'volume-up': $fa-var-volume-up, + 'users-rays': $fa-var-users-rays, + 'wallet': $fa-var-wallet, + 'clipboard-check': $fa-var-clipboard-check, + 'file-audio': $fa-var-file-audio, + 'burger': $fa-var-burger, + 'hamburger': $fa-var-hamburger, + 'wrench': $fa-var-wrench, + 'bugs': $fa-var-bugs, + 'rupee-sign': $fa-var-rupee-sign, + 'rupee': $fa-var-rupee, + 'file-image': $fa-var-file-image, + 'circle-question': $fa-var-circle-question, + 'question-circle': $fa-var-question-circle, + 'plane-departure': $fa-var-plane-departure, + 'handshake-slash': $fa-var-handshake-slash, + 'book-bookmark': $fa-var-book-bookmark, + 'code-branch': $fa-var-code-branch, + 'hat-cowboy': $fa-var-hat-cowboy, + 'bridge': $fa-var-bridge, + 'phone-flip': $fa-var-phone-flip, + 'phone-alt': $fa-var-phone-alt, + 'truck-front': $fa-var-truck-front, + 'cat': $fa-var-cat, + 'anchor-circle-exclamation': $fa-var-anchor-circle-exclamation, + 'truck-field': $fa-var-truck-field, + 'route': $fa-var-route, + 'clipboard-question': $fa-var-clipboard-question, + 'panorama': $fa-var-panorama, + 'comment-medical': $fa-var-comment-medical, + 'teeth-open': $fa-var-teeth-open, + 'file-circle-minus': $fa-var-file-circle-minus, + 'tags': $fa-var-tags, + 'wine-glass': $fa-var-wine-glass, + 'forward-fast': $fa-var-forward-fast, + 'fast-forward': $fa-var-fast-forward, + 'face-meh-blank': $fa-var-face-meh-blank, + 'meh-blank': $fa-var-meh-blank, + 'square-parking': $fa-var-square-parking, + 'parking': $fa-var-parking, + 'house-signal': $fa-var-house-signal, + 'bars-progress': $fa-var-bars-progress, + 'tasks-alt': $fa-var-tasks-alt, + 'faucet-drip': $fa-var-faucet-drip, + 'cart-flatbed': $fa-var-cart-flatbed, + 'dolly-flatbed': $fa-var-dolly-flatbed, + 'ban-smoking': $fa-var-ban-smoking, + 'smoking-ban': $fa-var-smoking-ban, + 'terminal': $fa-var-terminal, + 'mobile-button': $fa-var-mobile-button, + 'house-medical-flag': $fa-var-house-medical-flag, + 'basket-shopping': $fa-var-basket-shopping, + 'shopping-basket': $fa-var-shopping-basket, + 'tape': $fa-var-tape, + 'bus-simple': $fa-var-bus-simple, + 'bus-alt': $fa-var-bus-alt, + 'eye': $fa-var-eye, + 'face-sad-cry': $fa-var-face-sad-cry, + 'sad-cry': $fa-var-sad-cry, + 'audio-description': $fa-var-audio-description, + 'person-military-to-person': $fa-var-person-military-to-person, + 'file-shield': $fa-var-file-shield, + 'user-slash': $fa-var-user-slash, + 'pen': $fa-var-pen, + 'tower-observation': $fa-var-tower-observation, + 'file-code': $fa-var-file-code, + 'signal': $fa-var-signal, + 'signal-5': $fa-var-signal-5, + 'signal-perfect': $fa-var-signal-perfect, + 'bus': $fa-var-bus, + 'heart-circle-xmark': $fa-var-heart-circle-xmark, + 'house-chimney': $fa-var-house-chimney, + 'home-lg': $fa-var-home-lg, + 'window-maximize': $fa-var-window-maximize, + 'face-frown': $fa-var-face-frown, + 'frown': $fa-var-frown, + 'prescription': $fa-var-prescription, + 'shop': $fa-var-shop, + 'store-alt': $fa-var-store-alt, + 'floppy-disk': $fa-var-floppy-disk, + 'save': $fa-var-save, + 'vihara': $fa-var-vihara, + 'scale-unbalanced': $fa-var-scale-unbalanced, + 'balance-scale-left': $fa-var-balance-scale-left, + 'sort-up': $fa-var-sort-up, + 'sort-asc': $fa-var-sort-asc, + 'comment-dots': $fa-var-comment-dots, + 'commenting': $fa-var-commenting, + 'plant-wilt': $fa-var-plant-wilt, + 'diamond': $fa-var-diamond, + 'face-grin-squint': $fa-var-face-grin-squint, + 'grin-squint': $fa-var-grin-squint, + 'hand-holding-dollar': $fa-var-hand-holding-dollar, + 'hand-holding-usd': $fa-var-hand-holding-usd, + 'chart-diagram': $fa-var-chart-diagram, + 'bacterium': $fa-var-bacterium, + 'hand-pointer': $fa-var-hand-pointer, + 'drum-steelpan': $fa-var-drum-steelpan, + 'hand-scissors': $fa-var-hand-scissors, + 'hands-praying': $fa-var-hands-praying, + 'praying-hands': $fa-var-praying-hands, + 'arrow-rotate-right': $fa-var-arrow-rotate-right, + 'arrow-right-rotate': $fa-var-arrow-right-rotate, + 'arrow-rotate-forward': $fa-var-arrow-rotate-forward, + 'redo': $fa-var-redo, + 'biohazard': $fa-var-biohazard, + 'location-crosshairs': $fa-var-location-crosshairs, + 'location': $fa-var-location, + 'mars-double': $fa-var-mars-double, + 'child-dress': $fa-var-child-dress, + 'users-between-lines': $fa-var-users-between-lines, + 'lungs-virus': $fa-var-lungs-virus, + 'face-grin-tears': $fa-var-face-grin-tears, + 'grin-tears': $fa-var-grin-tears, + 'phone': $fa-var-phone, + 'calendar-xmark': $fa-var-calendar-xmark, + 'calendar-times': $fa-var-calendar-times, + 'child-reaching': $fa-var-child-reaching, + 'head-side-virus': $fa-var-head-side-virus, + 'user-gear': $fa-var-user-gear, + 'user-cog': $fa-var-user-cog, + 'arrow-up-1-9': $fa-var-arrow-up-1-9, + 'sort-numeric-up': $fa-var-sort-numeric-up, + 'door-closed': $fa-var-door-closed, + 'shield-virus': $fa-var-shield-virus, + 'dice-six': $fa-var-dice-six, + 'mosquito-net': $fa-var-mosquito-net, + 'file-fragment': $fa-var-file-fragment, + 'bridge-water': $fa-var-bridge-water, + 'person-booth': $fa-var-person-booth, + 'text-width': $fa-var-text-width, + 'hat-wizard': $fa-var-hat-wizard, + 'pen-fancy': $fa-var-pen-fancy, + 'person-digging': $fa-var-person-digging, + 'digging': $fa-var-digging, + 'trash': $fa-var-trash, + 'gauge-simple': $fa-var-gauge-simple, + 'gauge-simple-med': $fa-var-gauge-simple-med, + 'tachometer-average': $fa-var-tachometer-average, + 'book-medical': $fa-var-book-medical, + 'poo': $fa-var-poo, + 'quote-right': $fa-var-quote-right, + 'quote-right-alt': $fa-var-quote-right-alt, + 'shirt': $fa-var-shirt, + 't-shirt': $fa-var-t-shirt, + 'tshirt': $fa-var-tshirt, + 'cubes': $fa-var-cubes, + 'divide': $fa-var-divide, + 'tenge-sign': $fa-var-tenge-sign, + 'tenge': $fa-var-tenge, + 'headphones': $fa-var-headphones, + 'hands-holding': $fa-var-hands-holding, + 'hands-clapping': $fa-var-hands-clapping, + 'republican': $fa-var-republican, + 'arrow-left': $fa-var-arrow-left, + 'person-circle-xmark': $fa-var-person-circle-xmark, + 'ruler': $fa-var-ruler, + 'align-left': $fa-var-align-left, + 'dice-d6': $fa-var-dice-d6, + 'restroom': $fa-var-restroom, + 'j': $fa-var-j, + 'users-viewfinder': $fa-var-users-viewfinder, + 'file-video': $fa-var-file-video, + 'up-right-from-square': $fa-var-up-right-from-square, + 'external-link-alt': $fa-var-external-link-alt, + 'table-cells': $fa-var-table-cells, + 'th': $fa-var-th, + 'file-pdf': $fa-var-file-pdf, + 'book-bible': $fa-var-book-bible, + 'bible': $fa-var-bible, + 'o': $fa-var-o, + 'suitcase-medical': $fa-var-suitcase-medical, + 'medkit': $fa-var-medkit, + 'user-secret': $fa-var-user-secret, + 'otter': $fa-var-otter, + 'person-dress': $fa-var-person-dress, + 'female': $fa-var-female, + 'comment-dollar': $fa-var-comment-dollar, + 'business-time': $fa-var-business-time, + 'briefcase-clock': $fa-var-briefcase-clock, + 'table-cells-large': $fa-var-table-cells-large, + 'th-large': $fa-var-th-large, + 'book-tanakh': $fa-var-book-tanakh, + 'tanakh': $fa-var-tanakh, + 'phone-volume': $fa-var-phone-volume, + 'volume-control-phone': $fa-var-volume-control-phone, + 'hat-cowboy-side': $fa-var-hat-cowboy-side, + 'clipboard-user': $fa-var-clipboard-user, + 'child': $fa-var-child, + 'lira-sign': $fa-var-lira-sign, + 'satellite': $fa-var-satellite, + 'plane-lock': $fa-var-plane-lock, + 'tag': $fa-var-tag, + 'comment': $fa-var-comment, + 'cake-candles': $fa-var-cake-candles, + 'birthday-cake': $fa-var-birthday-cake, + 'cake': $fa-var-cake, + 'envelope': $fa-var-envelope, + 'angles-up': $fa-var-angles-up, + 'angle-double-up': $fa-var-angle-double-up, + 'paperclip': $fa-var-paperclip, + 'arrow-right-to-city': $fa-var-arrow-right-to-city, + 'ribbon': $fa-var-ribbon, + 'lungs': $fa-var-lungs, + 'arrow-up-9-1': $fa-var-arrow-up-9-1, + 'sort-numeric-up-alt': $fa-var-sort-numeric-up-alt, + 'litecoin-sign': $fa-var-litecoin-sign, + 'border-none': $fa-var-border-none, + 'circle-nodes': $fa-var-circle-nodes, + 'parachute-box': $fa-var-parachute-box, + 'indent': $fa-var-indent, + 'truck-field-un': $fa-var-truck-field-un, + 'hourglass': $fa-var-hourglass, + 'hourglass-empty': $fa-var-hourglass-empty, + 'mountain': $fa-var-mountain, + 'user-doctor': $fa-var-user-doctor, + 'user-md': $fa-var-user-md, + 'circle-info': $fa-var-circle-info, + 'info-circle': $fa-var-info-circle, + 'cloud-meatball': $fa-var-cloud-meatball, + 'camera': $fa-var-camera, + 'camera-alt': $fa-var-camera-alt, + 'square-virus': $fa-var-square-virus, + 'meteor': $fa-var-meteor, + 'car-on': $fa-var-car-on, + 'sleigh': $fa-var-sleigh, + 'arrow-down-1-9': $fa-var-arrow-down-1-9, + 'sort-numeric-asc': $fa-var-sort-numeric-asc, + 'sort-numeric-down': $fa-var-sort-numeric-down, + 'hand-holding-droplet': $fa-var-hand-holding-droplet, + 'hand-holding-water': $fa-var-hand-holding-water, + 'water': $fa-var-water, + 'calendar-check': $fa-var-calendar-check, + 'braille': $fa-var-braille, + 'prescription-bottle-medical': $fa-var-prescription-bottle-medical, + 'prescription-bottle-alt': $fa-var-prescription-bottle-alt, + 'landmark': $fa-var-landmark, + 'truck': $fa-var-truck, + 'crosshairs': $fa-var-crosshairs, + 'person-cane': $fa-var-person-cane, + 'tent': $fa-var-tent, + 'vest-patches': $fa-var-vest-patches, + 'check-double': $fa-var-check-double, + 'arrow-down-a-z': $fa-var-arrow-down-a-z, + 'sort-alpha-asc': $fa-var-sort-alpha-asc, + 'sort-alpha-down': $fa-var-sort-alpha-down, + 'money-bill-wheat': $fa-var-money-bill-wheat, + 'cookie': $fa-var-cookie, + 'arrow-rotate-left': $fa-var-arrow-rotate-left, + 'arrow-left-rotate': $fa-var-arrow-left-rotate, + 'arrow-rotate-back': $fa-var-arrow-rotate-back, + 'arrow-rotate-backward': $fa-var-arrow-rotate-backward, + 'undo': $fa-var-undo, + 'hard-drive': $fa-var-hard-drive, + 'hdd': $fa-var-hdd, + 'face-grin-squint-tears': $fa-var-face-grin-squint-tears, + 'grin-squint-tears': $fa-var-grin-squint-tears, + 'dumbbell': $fa-var-dumbbell, + 'rectangle-list': $fa-var-rectangle-list, + 'list-alt': $fa-var-list-alt, + 'tarp-droplet': $fa-var-tarp-droplet, + 'house-medical-circle-check': $fa-var-house-medical-circle-check, + 'person-skiing-nordic': $fa-var-person-skiing-nordic, + 'skiing-nordic': $fa-var-skiing-nordic, + 'calendar-plus': $fa-var-calendar-plus, + 'plane-arrival': $fa-var-plane-arrival, + 'circle-left': $fa-var-circle-left, + 'arrow-alt-circle-left': $fa-var-arrow-alt-circle-left, + 'train-subway': $fa-var-train-subway, + 'subway': $fa-var-subway, + 'chart-gantt': $fa-var-chart-gantt, + 'indian-rupee-sign': $fa-var-indian-rupee-sign, + 'indian-rupee': $fa-var-indian-rupee, + 'inr': $fa-var-inr, + 'crop-simple': $fa-var-crop-simple, + 'crop-alt': $fa-var-crop-alt, + 'money-bill-1': $fa-var-money-bill-1, + 'money-bill-alt': $fa-var-money-bill-alt, + 'left-long': $fa-var-left-long, + 'long-arrow-alt-left': $fa-var-long-arrow-alt-left, + 'dna': $fa-var-dna, + 'virus-slash': $fa-var-virus-slash, + 'minus': $fa-var-minus, + 'subtract': $fa-var-subtract, + 'chess': $fa-var-chess, + 'arrow-left-long': $fa-var-arrow-left-long, + 'long-arrow-left': $fa-var-long-arrow-left, + 'plug-circle-check': $fa-var-plug-circle-check, + 'street-view': $fa-var-street-view, + 'franc-sign': $fa-var-franc-sign, + 'volume-off': $fa-var-volume-off, + 'hands-asl-interpreting': $fa-var-hands-asl-interpreting, + 'american-sign-language-interpreting': + $fa-var-american-sign-language-interpreting, + 'asl-interpreting': $fa-var-asl-interpreting, + 'hands-american-sign-language-interpreting': + $fa-var-hands-american-sign-language-interpreting, + 'gear': $fa-var-gear, + 'cog': $fa-var-cog, + 'droplet-slash': $fa-var-droplet-slash, + 'tint-slash': $fa-var-tint-slash, + 'mosque': $fa-var-mosque, + 'mosquito': $fa-var-mosquito, + 'star-of-david': $fa-var-star-of-david, + 'person-military-rifle': $fa-var-person-military-rifle, + 'cart-shopping': $fa-var-cart-shopping, + 'shopping-cart': $fa-var-shopping-cart, + 'vials': $fa-var-vials, + 'plug-circle-plus': $fa-var-plug-circle-plus, + 'place-of-worship': $fa-var-place-of-worship, + 'grip-vertical': $fa-var-grip-vertical, + 'hexagon-nodes': $fa-var-hexagon-nodes, + 'arrow-turn-up': $fa-var-arrow-turn-up, + 'level-up': $fa-var-level-up, + 'u': $fa-var-u, + 'square-root-variable': $fa-var-square-root-variable, + 'square-root-alt': $fa-var-square-root-alt, + 'clock': $fa-var-clock, + 'clock-four': $fa-var-clock-four, + 'backward-step': $fa-var-backward-step, + 'step-backward': $fa-var-step-backward, + 'pallet': $fa-var-pallet, + 'faucet': $fa-var-faucet, + 'baseball-bat-ball': $fa-var-baseball-bat-ball, + 's': $fa-var-s, + 'timeline': $fa-var-timeline, + 'keyboard': $fa-var-keyboard, + 'caret-down': $fa-var-caret-down, + 'house-chimney-medical': $fa-var-house-chimney-medical, + 'clinic-medical': $fa-var-clinic-medical, + 'temperature-three-quarters': $fa-var-temperature-three-quarters, + 'temperature-3': $fa-var-temperature-3, + 'thermometer-3': $fa-var-thermometer-3, + 'thermometer-three-quarters': $fa-var-thermometer-three-quarters, + 'mobile-screen': $fa-var-mobile-screen, + 'mobile-android-alt': $fa-var-mobile-android-alt, + 'plane-up': $fa-var-plane-up, + 'piggy-bank': $fa-var-piggy-bank, + 'battery-half': $fa-var-battery-half, + 'battery-3': $fa-var-battery-3, + 'mountain-city': $fa-var-mountain-city, + 'coins': $fa-var-coins, + 'khanda': $fa-var-khanda, + 'sliders': $fa-var-sliders, + 'sliders-h': $fa-var-sliders-h, + 'folder-tree': $fa-var-folder-tree, + 'network-wired': $fa-var-network-wired, + 'map-pin': $fa-var-map-pin, + 'hamsa': $fa-var-hamsa, + 'cent-sign': $fa-var-cent-sign, + 'flask': $fa-var-flask, + 'person-pregnant': $fa-var-person-pregnant, + 'wand-sparkles': $fa-var-wand-sparkles, + 'ellipsis-vertical': $fa-var-ellipsis-vertical, + 'ellipsis-v': $fa-var-ellipsis-v, + 'ticket': $fa-var-ticket, + 'power-off': $fa-var-power-off, + 'right-long': $fa-var-right-long, + 'long-arrow-alt-right': $fa-var-long-arrow-alt-right, + 'flag-usa': $fa-var-flag-usa, + 'laptop-file': $fa-var-laptop-file, + 'tty': $fa-var-tty, + 'teletype': $fa-var-teletype, + 'diagram-next': $fa-var-diagram-next, + 'person-rifle': $fa-var-person-rifle, + 'house-medical-circle-exclamation': $fa-var-house-medical-circle-exclamation, + 'closed-captioning': $fa-var-closed-captioning, + 'person-hiking': $fa-var-person-hiking, + 'hiking': $fa-var-hiking, + 'venus-double': $fa-var-venus-double, + 'images': $fa-var-images, + 'calculator': $fa-var-calculator, + 'people-pulling': $fa-var-people-pulling, + 'n': $fa-var-n, + 'cable-car': $fa-var-cable-car, + 'tram': $fa-var-tram, + 'cloud-rain': $fa-var-cloud-rain, + 'building-circle-xmark': $fa-var-building-circle-xmark, + 'ship': $fa-var-ship, + 'arrows-down-to-line': $fa-var-arrows-down-to-line, + 'download': $fa-var-download, + 'face-grin': $fa-var-face-grin, + 'grin': $fa-var-grin, + 'delete-left': $fa-var-delete-left, + 'backspace': $fa-var-backspace, + 'eye-dropper': $fa-var-eye-dropper, + 'eye-dropper-empty': $fa-var-eye-dropper-empty, + 'eyedropper': $fa-var-eyedropper, + 'file-circle-check': $fa-var-file-circle-check, + 'forward': $fa-var-forward, + 'mobile': $fa-var-mobile, + 'mobile-android': $fa-var-mobile-android, + 'mobile-phone': $fa-var-mobile-phone, + 'face-meh': $fa-var-face-meh, + 'meh': $fa-var-meh, + 'align-center': $fa-var-align-center, + 'book-skull': $fa-var-book-skull, + 'book-dead': $fa-var-book-dead, + 'id-card': $fa-var-id-card, + 'drivers-license': $fa-var-drivers-license, + 'outdent': $fa-var-outdent, + 'dedent': $fa-var-dedent, + 'heart-circle-exclamation': $fa-var-heart-circle-exclamation, + 'house': $fa-var-house, + 'home': $fa-var-home, + 'home-alt': $fa-var-home-alt, + 'home-lg-alt': $fa-var-home-lg-alt, + 'calendar-week': $fa-var-calendar-week, + 'laptop-medical': $fa-var-laptop-medical, + 'b': $fa-var-b, + 'file-medical': $fa-var-file-medical, + 'dice-one': $fa-var-dice-one, + 'kiwi-bird': $fa-var-kiwi-bird, + 'arrow-right-arrow-left': $fa-var-arrow-right-arrow-left, + 'exchange': $fa-var-exchange, + 'rotate-right': $fa-var-rotate-right, + 'redo-alt': $fa-var-redo-alt, + 'rotate-forward': $fa-var-rotate-forward, + 'utensils': $fa-var-utensils, + 'cutlery': $fa-var-cutlery, + 'arrow-up-wide-short': $fa-var-arrow-up-wide-short, + 'sort-amount-up': $fa-var-sort-amount-up, + 'mill-sign': $fa-var-mill-sign, + 'bowl-rice': $fa-var-bowl-rice, + 'skull': $fa-var-skull, + 'tower-broadcast': $fa-var-tower-broadcast, + 'broadcast-tower': $fa-var-broadcast-tower, + 'truck-pickup': $fa-var-truck-pickup, + 'up-long': $fa-var-up-long, + 'long-arrow-alt-up': $fa-var-long-arrow-alt-up, + 'stop': $fa-var-stop, + 'code-merge': $fa-var-code-merge, + 'upload': $fa-var-upload, + 'hurricane': $fa-var-hurricane, + 'mound': $fa-var-mound, + 'toilet-portable': $fa-var-toilet-portable, + 'compact-disc': $fa-var-compact-disc, + 'file-arrow-down': $fa-var-file-arrow-down, + 'file-download': $fa-var-file-download, + 'caravan': $fa-var-caravan, + 'shield-cat': $fa-var-shield-cat, + 'bolt': $fa-var-bolt, + 'zap': $fa-var-zap, + 'glass-water': $fa-var-glass-water, + 'oil-well': $fa-var-oil-well, + 'vault': $fa-var-vault, + 'mars': $fa-var-mars, + 'toilet': $fa-var-toilet, + 'plane-circle-xmark': $fa-var-plane-circle-xmark, + 'yen-sign': $fa-var-yen-sign, + 'cny': $fa-var-cny, + 'jpy': $fa-var-jpy, + 'rmb': $fa-var-rmb, + 'yen': $fa-var-yen, + 'ruble-sign': $fa-var-ruble-sign, + 'rouble': $fa-var-rouble, + 'rub': $fa-var-rub, + 'ruble': $fa-var-ruble, + 'sun': $fa-var-sun, + 'guitar': $fa-var-guitar, + 'face-laugh-wink': $fa-var-face-laugh-wink, + 'laugh-wink': $fa-var-laugh-wink, + 'horse-head': $fa-var-horse-head, + 'bore-hole': $fa-var-bore-hole, + 'industry': $fa-var-industry, + 'circle-down': $fa-var-circle-down, + 'arrow-alt-circle-down': $fa-var-arrow-alt-circle-down, + 'arrows-turn-to-dots': $fa-var-arrows-turn-to-dots, + 'florin-sign': $fa-var-florin-sign, + 'arrow-down-short-wide': $fa-var-arrow-down-short-wide, + 'sort-amount-desc': $fa-var-sort-amount-desc, + 'sort-amount-down-alt': $fa-var-sort-amount-down-alt, + 'less-than': $fa-var-less-than, + 'angle-down': $fa-var-angle-down, + 'car-tunnel': $fa-var-car-tunnel, + 'head-side-cough': $fa-var-head-side-cough, + 'grip-lines': $fa-var-grip-lines, + 'thumbs-down': $fa-var-thumbs-down, + 'user-lock': $fa-var-user-lock, + 'arrow-right-long': $fa-var-arrow-right-long, + 'long-arrow-right': $fa-var-long-arrow-right, + 'anchor-circle-xmark': $fa-var-anchor-circle-xmark, + 'ellipsis': $fa-var-ellipsis, + 'ellipsis-h': $fa-var-ellipsis-h, + 'chess-pawn': $fa-var-chess-pawn, + 'kit-medical': $fa-var-kit-medical, + 'first-aid': $fa-var-first-aid, + 'person-through-window': $fa-var-person-through-window, + 'toolbox': $fa-var-toolbox, + 'hands-holding-circle': $fa-var-hands-holding-circle, + 'bug': $fa-var-bug, + 'credit-card': $fa-var-credit-card, + 'credit-card-alt': $fa-var-credit-card-alt, + 'car': $fa-var-car, + 'automobile': $fa-var-automobile, + 'hand-holding-hand': $fa-var-hand-holding-hand, + 'book-open-reader': $fa-var-book-open-reader, + 'book-reader': $fa-var-book-reader, + 'mountain-sun': $fa-var-mountain-sun, + 'arrows-left-right-to-line': $fa-var-arrows-left-right-to-line, + 'dice-d20': $fa-var-dice-d20, + 'truck-droplet': $fa-var-truck-droplet, + 'file-circle-xmark': $fa-var-file-circle-xmark, + 'temperature-arrow-up': $fa-var-temperature-arrow-up, + 'temperature-up': $fa-var-temperature-up, + 'medal': $fa-var-medal, + 'bed': $fa-var-bed, + 'square-h': $fa-var-square-h, + 'h-square': $fa-var-h-square, + 'podcast': $fa-var-podcast, + 'temperature-full': $fa-var-temperature-full, + 'temperature-4': $fa-var-temperature-4, + 'thermometer-4': $fa-var-thermometer-4, + 'thermometer-full': $fa-var-thermometer-full, + 'bell': $fa-var-bell, + 'superscript': $fa-var-superscript, + 'plug-circle-xmark': $fa-var-plug-circle-xmark, + 'star-of-life': $fa-var-star-of-life, + 'phone-slash': $fa-var-phone-slash, + 'paint-roller': $fa-var-paint-roller, + 'handshake-angle': $fa-var-handshake-angle, + 'hands-helping': $fa-var-hands-helping, + 'location-dot': $fa-var-location-dot, + 'map-marker-alt': $fa-var-map-marker-alt, + 'file': $fa-var-file, + 'greater-than': $fa-var-greater-than, + 'person-swimming': $fa-var-person-swimming, + 'swimmer': $fa-var-swimmer, + 'arrow-down': $fa-var-arrow-down, + 'droplet': $fa-var-droplet, + 'tint': $fa-var-tint, + 'eraser': $fa-var-eraser, + 'earth-americas': $fa-var-earth-americas, + 'earth': $fa-var-earth, + 'earth-america': $fa-var-earth-america, + 'globe-americas': $fa-var-globe-americas, + 'person-burst': $fa-var-person-burst, + 'dove': $fa-var-dove, + 'battery-empty': $fa-var-battery-empty, + 'battery-0': $fa-var-battery-0, + 'socks': $fa-var-socks, + 'inbox': $fa-var-inbox, + 'section': $fa-var-section, + 'gauge-high': $fa-var-gauge-high, + 'tachometer-alt': $fa-var-tachometer-alt, + 'tachometer-alt-fast': $fa-var-tachometer-alt-fast, + 'envelope-open-text': $fa-var-envelope-open-text, + 'hospital': $fa-var-hospital, + 'hospital-alt': $fa-var-hospital-alt, + 'hospital-wide': $fa-var-hospital-wide, + 'wine-bottle': $fa-var-wine-bottle, + 'chess-rook': $fa-var-chess-rook, + 'bars-staggered': $fa-var-bars-staggered, + 'reorder': $fa-var-reorder, + 'stream': $fa-var-stream, + 'dharmachakra': $fa-var-dharmachakra, + 'hotdog': $fa-var-hotdog, + 'person-walking-with-cane': $fa-var-person-walking-with-cane, + 'blind': $fa-var-blind, + 'drum': $fa-var-drum, + 'ice-cream': $fa-var-ice-cream, + 'heart-circle-bolt': $fa-var-heart-circle-bolt, + 'fax': $fa-var-fax, + 'paragraph': $fa-var-paragraph, + 'check-to-slot': $fa-var-check-to-slot, + 'vote-yea': $fa-var-vote-yea, + 'star-half': $fa-var-star-half, + 'boxes-stacked': $fa-var-boxes-stacked, + 'boxes': $fa-var-boxes, + 'boxes-alt': $fa-var-boxes-alt, + 'link': $fa-var-link, + 'chain': $fa-var-chain, + 'ear-listen': $fa-var-ear-listen, + 'assistive-listening-systems': $fa-var-assistive-listening-systems, + 'tree-city': $fa-var-tree-city, + 'play': $fa-var-play, + 'font': $fa-var-font, + 'table-cells-row-lock': $fa-var-table-cells-row-lock, + 'rupiah-sign': $fa-var-rupiah-sign, + 'magnifying-glass': $fa-var-magnifying-glass, + 'search': $fa-var-search, + 'table-tennis-paddle-ball': $fa-var-table-tennis-paddle-ball, + 'ping-pong-paddle-ball': $fa-var-ping-pong-paddle-ball, + 'table-tennis': $fa-var-table-tennis, + 'person-dots-from-line': $fa-var-person-dots-from-line, + 'diagnoses': $fa-var-diagnoses, + 'trash-can-arrow-up': $fa-var-trash-can-arrow-up, + 'trash-restore-alt': $fa-var-trash-restore-alt, + 'naira-sign': $fa-var-naira-sign, + 'cart-arrow-down': $fa-var-cart-arrow-down, + 'walkie-talkie': $fa-var-walkie-talkie, + 'file-pen': $fa-var-file-pen, + 'file-edit': $fa-var-file-edit, + 'receipt': $fa-var-receipt, + 'square-pen': $fa-var-square-pen, + 'pen-square': $fa-var-pen-square, + 'pencil-square': $fa-var-pencil-square, + 'suitcase-rolling': $fa-var-suitcase-rolling, + 'person-circle-exclamation': $fa-var-person-circle-exclamation, + 'chevron-down': $fa-var-chevron-down, + 'battery-full': $fa-var-battery-full, + 'battery': $fa-var-battery, + 'battery-5': $fa-var-battery-5, + 'skull-crossbones': $fa-var-skull-crossbones, + 'code-compare': $fa-var-code-compare, + 'list-ul': $fa-var-list-ul, + 'list-dots': $fa-var-list-dots, + 'school-lock': $fa-var-school-lock, + 'tower-cell': $fa-var-tower-cell, + 'down-long': $fa-var-down-long, + 'long-arrow-alt-down': $fa-var-long-arrow-alt-down, + 'ranking-star': $fa-var-ranking-star, + 'chess-king': $fa-var-chess-king, + 'person-harassing': $fa-var-person-harassing, + 'brazilian-real-sign': $fa-var-brazilian-real-sign, + 'landmark-dome': $fa-var-landmark-dome, + 'landmark-alt': $fa-var-landmark-alt, + 'arrow-up': $fa-var-arrow-up, + 'tv': $fa-var-tv, + 'television': $fa-var-television, + 'tv-alt': $fa-var-tv-alt, + 'shrimp': $fa-var-shrimp, + 'list-check': $fa-var-list-check, + 'tasks': $fa-var-tasks, + 'jug-detergent': $fa-var-jug-detergent, + 'circle-user': $fa-var-circle-user, + 'user-circle': $fa-var-user-circle, + 'user-shield': $fa-var-user-shield, + 'wind': $fa-var-wind, + 'car-burst': $fa-var-car-burst, + 'car-crash': $fa-var-car-crash, + 'y': $fa-var-y, + 'person-snowboarding': $fa-var-person-snowboarding, + 'snowboarding': $fa-var-snowboarding, + 'truck-fast': $fa-var-truck-fast, + 'shipping-fast': $fa-var-shipping-fast, + 'fish': $fa-var-fish, + 'user-graduate': $fa-var-user-graduate, + 'circle-half-stroke': $fa-var-circle-half-stroke, + 'adjust': $fa-var-adjust, + 'clapperboard': $fa-var-clapperboard, + 'circle-radiation': $fa-var-circle-radiation, + 'radiation-alt': $fa-var-radiation-alt, + 'baseball': $fa-var-baseball, + 'baseball-ball': $fa-var-baseball-ball, + 'jet-fighter-up': $fa-var-jet-fighter-up, + 'diagram-project': $fa-var-diagram-project, + 'project-diagram': $fa-var-project-diagram, + 'copy': $fa-var-copy, + 'volume-xmark': $fa-var-volume-xmark, + 'volume-mute': $fa-var-volume-mute, + 'volume-times': $fa-var-volume-times, + 'hand-sparkles': $fa-var-hand-sparkles, + 'grip': $fa-var-grip, + 'grip-horizontal': $fa-var-grip-horizontal, + 'share-from-square': $fa-var-share-from-square, + 'share-square': $fa-var-share-square, + 'child-combatant': $fa-var-child-combatant, + 'child-rifle': $fa-var-child-rifle, + 'gun': $fa-var-gun, + 'square-phone': $fa-var-square-phone, + 'phone-square': $fa-var-phone-square, + 'plus': $fa-var-plus, + 'add': $fa-var-add, + 'expand': $fa-var-expand, + 'computer': $fa-var-computer, + 'xmark': $fa-var-xmark, + 'close': $fa-var-close, + 'multiply': $fa-var-multiply, + 'remove': $fa-var-remove, + 'times': $fa-var-times, + 'arrows-up-down-left-right': $fa-var-arrows-up-down-left-right, + 'arrows': $fa-var-arrows, + 'chalkboard-user': $fa-var-chalkboard-user, + 'chalkboard-teacher': $fa-var-chalkboard-teacher, + 'peso-sign': $fa-var-peso-sign, + 'building-shield': $fa-var-building-shield, + 'baby': $fa-var-baby, + 'users-line': $fa-var-users-line, + 'quote-left': $fa-var-quote-left, + 'quote-left-alt': $fa-var-quote-left-alt, + 'tractor': $fa-var-tractor, + 'trash-arrow-up': $fa-var-trash-arrow-up, + 'trash-restore': $fa-var-trash-restore, + 'arrow-down-up-lock': $fa-var-arrow-down-up-lock, + 'lines-leaning': $fa-var-lines-leaning, + 'ruler-combined': $fa-var-ruler-combined, + 'copyright': $fa-var-copyright, + 'equals': $fa-var-equals, + 'blender': $fa-var-blender, + 'teeth': $fa-var-teeth, + 'shekel-sign': $fa-var-shekel-sign, + 'ils': $fa-var-ils, + 'shekel': $fa-var-shekel, + 'sheqel': $fa-var-sheqel, + 'sheqel-sign': $fa-var-sheqel-sign, + 'map': $fa-var-map, + 'rocket': $fa-var-rocket, + 'photo-film': $fa-var-photo-film, + 'photo-video': $fa-var-photo-video, + 'folder-minus': $fa-var-folder-minus, + 'hexagon-nodes-bolt': $fa-var-hexagon-nodes-bolt, + 'store': $fa-var-store, + 'arrow-trend-up': $fa-var-arrow-trend-up, + 'plug-circle-minus': $fa-var-plug-circle-minus, + 'sign-hanging': $fa-var-sign-hanging, + 'sign': $fa-var-sign, + 'bezier-curve': $fa-var-bezier-curve, + 'bell-slash': $fa-var-bell-slash, + 'tablet': $fa-var-tablet, + 'tablet-android': $fa-var-tablet-android, + 'school-flag': $fa-var-school-flag, + 'fill': $fa-var-fill, + 'angle-up': $fa-var-angle-up, + 'drumstick-bite': $fa-var-drumstick-bite, + 'holly-berry': $fa-var-holly-berry, + 'chevron-left': $fa-var-chevron-left, + 'bacteria': $fa-var-bacteria, + 'hand-lizard': $fa-var-hand-lizard, + 'notdef': $fa-var-notdef, + 'disease': $fa-var-disease, + 'briefcase-medical': $fa-var-briefcase-medical, + 'genderless': $fa-var-genderless, + 'chevron-right': $fa-var-chevron-right, + 'retweet': $fa-var-retweet, + 'car-rear': $fa-var-car-rear, + 'car-alt': $fa-var-car-alt, + 'pump-soap': $fa-var-pump-soap, + 'video-slash': $fa-var-video-slash, + 'battery-quarter': $fa-var-battery-quarter, + 'battery-2': $fa-var-battery-2, + 'radio': $fa-var-radio, + 'baby-carriage': $fa-var-baby-carriage, + 'carriage-baby': $fa-var-carriage-baby, + 'traffic-light': $fa-var-traffic-light, + 'thermometer': $fa-var-thermometer, + 'vr-cardboard': $fa-var-vr-cardboard, + 'hand-middle-finger': $fa-var-hand-middle-finger, + 'percent': $fa-var-percent, + 'percentage': $fa-var-percentage, + 'truck-moving': $fa-var-truck-moving, + 'glass-water-droplet': $fa-var-glass-water-droplet, + 'display': $fa-var-display, + 'face-smile': $fa-var-face-smile, + 'smile': $fa-var-smile, + 'thumbtack': $fa-var-thumbtack, + 'thumb-tack': $fa-var-thumb-tack, + 'trophy': $fa-var-trophy, + 'person-praying': $fa-var-person-praying, + 'pray': $fa-var-pray, + 'hammer': $fa-var-hammer, + 'hand-peace': $fa-var-hand-peace, + 'rotate': $fa-var-rotate, + 'sync-alt': $fa-var-sync-alt, + 'spinner': $fa-var-spinner, + 'robot': $fa-var-robot, + 'peace': $fa-var-peace, + 'gears': $fa-var-gears, + 'cogs': $fa-var-cogs, + 'warehouse': $fa-var-warehouse, + 'arrow-up-right-dots': $fa-var-arrow-up-right-dots, + 'splotch': $fa-var-splotch, + 'face-grin-hearts': $fa-var-face-grin-hearts, + 'grin-hearts': $fa-var-grin-hearts, + 'dice-four': $fa-var-dice-four, + 'sim-card': $fa-var-sim-card, + 'transgender': $fa-var-transgender, + 'transgender-alt': $fa-var-transgender-alt, + 'mercury': $fa-var-mercury, + 'arrow-turn-down': $fa-var-arrow-turn-down, + 'level-down': $fa-var-level-down, + 'person-falling-burst': $fa-var-person-falling-burst, + 'award': $fa-var-award, + 'ticket-simple': $fa-var-ticket-simple, + 'ticket-alt': $fa-var-ticket-alt, + 'building': $fa-var-building, + 'angles-left': $fa-var-angles-left, + 'angle-double-left': $fa-var-angle-double-left, + 'qrcode': $fa-var-qrcode, + 'clock-rotate-left': $fa-var-clock-rotate-left, + 'history': $fa-var-history, + 'face-grin-beam-sweat': $fa-var-face-grin-beam-sweat, + 'grin-beam-sweat': $fa-var-grin-beam-sweat, + 'file-export': $fa-var-file-export, + 'arrow-right-from-file': $fa-var-arrow-right-from-file, + 'shield': $fa-var-shield, + 'shield-blank': $fa-var-shield-blank, + 'arrow-up-short-wide': $fa-var-arrow-up-short-wide, + 'sort-amount-up-alt': $fa-var-sort-amount-up-alt, + 'comment-nodes': $fa-var-comment-nodes, + 'house-medical': $fa-var-house-medical, + 'golf-ball-tee': $fa-var-golf-ball-tee, + 'golf-ball': $fa-var-golf-ball, + 'circle-chevron-left': $fa-var-circle-chevron-left, + 'chevron-circle-left': $fa-var-chevron-circle-left, + 'house-chimney-window': $fa-var-house-chimney-window, + 'pen-nib': $fa-var-pen-nib, + 'tent-arrow-turn-left': $fa-var-tent-arrow-turn-left, + 'tents': $fa-var-tents, + 'wand-magic': $fa-var-wand-magic, + 'magic': $fa-var-magic, + 'dog': $fa-var-dog, + 'carrot': $fa-var-carrot, + 'moon': $fa-var-moon, + 'wine-glass-empty': $fa-var-wine-glass-empty, + 'wine-glass-alt': $fa-var-wine-glass-alt, + 'cheese': $fa-var-cheese, + 'yin-yang': $fa-var-yin-yang, + 'music': $fa-var-music, + 'code-commit': $fa-var-code-commit, + 'temperature-low': $fa-var-temperature-low, + 'person-biking': $fa-var-person-biking, + 'biking': $fa-var-biking, + 'broom': $fa-var-broom, + 'shield-heart': $fa-var-shield-heart, + 'gopuram': $fa-var-gopuram, + 'earth-oceania': $fa-var-earth-oceania, + 'globe-oceania': $fa-var-globe-oceania, + 'square-xmark': $fa-var-square-xmark, + 'times-square': $fa-var-times-square, + 'xmark-square': $fa-var-xmark-square, + 'hashtag': $fa-var-hashtag, + 'up-right-and-down-left-from-center': + $fa-var-up-right-and-down-left-from-center, + 'expand-alt': $fa-var-expand-alt, + 'oil-can': $fa-var-oil-can, + 't': $fa-var-t, + 'hippo': $fa-var-hippo, + 'chart-column': $fa-var-chart-column, + 'infinity': $fa-var-infinity, + 'vial-circle-check': $fa-var-vial-circle-check, + 'person-arrow-down-to-line': $fa-var-person-arrow-down-to-line, + 'voicemail': $fa-var-voicemail, + 'fan': $fa-var-fan, + 'person-walking-luggage': $fa-var-person-walking-luggage, + 'up-down': $fa-var-up-down, + 'arrows-alt-v': $fa-var-arrows-alt-v, + 'cloud-moon-rain': $fa-var-cloud-moon-rain, + 'calendar': $fa-var-calendar, + 'trailer': $fa-var-trailer, + 'bahai': $fa-var-bahai, + 'haykal': $fa-var-haykal, + 'sd-card': $fa-var-sd-card, + 'dragon': $fa-var-dragon, + 'shoe-prints': $fa-var-shoe-prints, + 'circle-plus': $fa-var-circle-plus, + 'plus-circle': $fa-var-plus-circle, + 'face-grin-tongue-wink': $fa-var-face-grin-tongue-wink, + 'grin-tongue-wink': $fa-var-grin-tongue-wink, + 'hand-holding': $fa-var-hand-holding, + 'plug-circle-exclamation': $fa-var-plug-circle-exclamation, + 'link-slash': $fa-var-link-slash, + 'chain-broken': $fa-var-chain-broken, + 'chain-slash': $fa-var-chain-slash, + 'unlink': $fa-var-unlink, + 'clone': $fa-var-clone, + 'person-walking-arrow-loop-left': $fa-var-person-walking-arrow-loop-left, + 'arrow-up-z-a': $fa-var-arrow-up-z-a, + 'sort-alpha-up-alt': $fa-var-sort-alpha-up-alt, + 'fire-flame-curved': $fa-var-fire-flame-curved, + 'fire-alt': $fa-var-fire-alt, + 'tornado': $fa-var-tornado, + 'file-circle-plus': $fa-var-file-circle-plus, + 'book-quran': $fa-var-book-quran, + 'quran': $fa-var-quran, + 'anchor': $fa-var-anchor, + 'border-all': $fa-var-border-all, + 'face-angry': $fa-var-face-angry, + 'angry': $fa-var-angry, + 'cookie-bite': $fa-var-cookie-bite, + 'arrow-trend-down': $fa-var-arrow-trend-down, + 'rss': $fa-var-rss, + 'feed': $fa-var-feed, + 'draw-polygon': $fa-var-draw-polygon, + 'scale-balanced': $fa-var-scale-balanced, + 'balance-scale': $fa-var-balance-scale, + 'gauge-simple-high': $fa-var-gauge-simple-high, + 'tachometer': $fa-var-tachometer, + 'tachometer-fast': $fa-var-tachometer-fast, + 'shower': $fa-var-shower, + 'desktop': $fa-var-desktop, + 'desktop-alt': $fa-var-desktop-alt, + 'm': $fa-var-m, + 'table-list': $fa-var-table-list, + 'th-list': $fa-var-th-list, + 'comment-sms': $fa-var-comment-sms, + 'sms': $fa-var-sms, + 'book': $fa-var-book, + 'user-plus': $fa-var-user-plus, + 'check': $fa-var-check, + 'battery-three-quarters': $fa-var-battery-three-quarters, + 'battery-4': $fa-var-battery-4, + 'house-circle-check': $fa-var-house-circle-check, + 'angle-left': $fa-var-angle-left, + 'diagram-successor': $fa-var-diagram-successor, + 'truck-arrow-right': $fa-var-truck-arrow-right, + 'arrows-split-up-and-left': $fa-var-arrows-split-up-and-left, + 'hand-fist': $fa-var-hand-fist, + 'fist-raised': $fa-var-fist-raised, + 'cloud-moon': $fa-var-cloud-moon, + 'briefcase': $fa-var-briefcase, + 'person-falling': $fa-var-person-falling, + 'image-portrait': $fa-var-image-portrait, + 'portrait': $fa-var-portrait, + 'user-tag': $fa-var-user-tag, + 'rug': $fa-var-rug, + 'earth-europe': $fa-var-earth-europe, + 'globe-europe': $fa-var-globe-europe, + 'cart-flatbed-suitcase': $fa-var-cart-flatbed-suitcase, + 'luggage-cart': $fa-var-luggage-cart, + 'rectangle-xmark': $fa-var-rectangle-xmark, + 'rectangle-times': $fa-var-rectangle-times, + 'times-rectangle': $fa-var-times-rectangle, + 'window-close': $fa-var-window-close, + 'baht-sign': $fa-var-baht-sign, + 'book-open': $fa-var-book-open, + 'book-journal-whills': $fa-var-book-journal-whills, + 'journal-whills': $fa-var-journal-whills, + 'handcuffs': $fa-var-handcuffs, + 'triangle-exclamation': $fa-var-triangle-exclamation, + 'exclamation-triangle': $fa-var-exclamation-triangle, + 'warning': $fa-var-warning, + 'database': $fa-var-database, + 'share': $fa-var-share, + 'mail-forward': $fa-var-mail-forward, + 'bottle-droplet': $fa-var-bottle-droplet, + 'mask-face': $fa-var-mask-face, + 'hill-rockslide': $fa-var-hill-rockslide, + 'right-left': $fa-var-right-left, + 'exchange-alt': $fa-var-exchange-alt, + 'paper-plane': $fa-var-paper-plane, + 'road-circle-exclamation': $fa-var-road-circle-exclamation, + 'dungeon': $fa-var-dungeon, + 'align-right': $fa-var-align-right, + 'money-bill-1-wave': $fa-var-money-bill-1-wave, + 'money-bill-wave-alt': $fa-var-money-bill-wave-alt, + 'life-ring': $fa-var-life-ring, + 'hands': $fa-var-hands, + 'sign-language': $fa-var-sign-language, + 'signing': $fa-var-signing, + 'calendar-day': $fa-var-calendar-day, + 'water-ladder': $fa-var-water-ladder, + 'ladder-water': $fa-var-ladder-water, + 'swimming-pool': $fa-var-swimming-pool, + 'arrows-up-down': $fa-var-arrows-up-down, + 'arrows-v': $fa-var-arrows-v, + 'face-grimace': $fa-var-face-grimace, + 'grimace': $fa-var-grimace, + 'wheelchair-move': $fa-var-wheelchair-move, + 'wheelchair-alt': $fa-var-wheelchair-alt, + 'turn-down': $fa-var-turn-down, + 'level-down-alt': $fa-var-level-down-alt, + 'person-walking-arrow-right': $fa-var-person-walking-arrow-right, + 'square-envelope': $fa-var-square-envelope, + 'envelope-square': $fa-var-envelope-square, + 'dice': $fa-var-dice, + 'bowling-ball': $fa-var-bowling-ball, + 'brain': $fa-var-brain, + 'bandage': $fa-var-bandage, + 'band-aid': $fa-var-band-aid, + 'calendar-minus': $fa-var-calendar-minus, + 'circle-xmark': $fa-var-circle-xmark, + 'times-circle': $fa-var-times-circle, + 'xmark-circle': $fa-var-xmark-circle, + 'gifts': $fa-var-gifts, + 'hotel': $fa-var-hotel, + 'earth-asia': $fa-var-earth-asia, + 'globe-asia': $fa-var-globe-asia, + 'id-card-clip': $fa-var-id-card-clip, + 'id-card-alt': $fa-var-id-card-alt, + 'magnifying-glass-plus': $fa-var-magnifying-glass-plus, + 'search-plus': $fa-var-search-plus, + 'thumbs-up': $fa-var-thumbs-up, + 'user-clock': $fa-var-user-clock, + 'hand-dots': $fa-var-hand-dots, + 'allergies': $fa-var-allergies, + 'file-invoice': $fa-var-file-invoice, + 'window-minimize': $fa-var-window-minimize, + 'mug-saucer': $fa-var-mug-saucer, + 'coffee': $fa-var-coffee, + 'brush': $fa-var-brush, + 'file-half-dashed': $fa-var-file-half-dashed, + 'mask': $fa-var-mask, + 'magnifying-glass-minus': $fa-var-magnifying-glass-minus, + 'search-minus': $fa-var-search-minus, + 'ruler-vertical': $fa-var-ruler-vertical, + 'user-large': $fa-var-user-large, + 'user-alt': $fa-var-user-alt, + 'train-tram': $fa-var-train-tram, + 'user-nurse': $fa-var-user-nurse, + 'syringe': $fa-var-syringe, + 'cloud-sun': $fa-var-cloud-sun, + 'stopwatch-20': $fa-var-stopwatch-20, + 'square-full': $fa-var-square-full, + 'magnet': $fa-var-magnet, + 'jar': $fa-var-jar, + 'note-sticky': $fa-var-note-sticky, + 'sticky-note': $fa-var-sticky-note, + 'bug-slash': $fa-var-bug-slash, + 'arrow-up-from-water-pump': $fa-var-arrow-up-from-water-pump, + 'bone': $fa-var-bone, + 'table-cells-row-unlock': $fa-var-table-cells-row-unlock, + 'user-injured': $fa-var-user-injured, + 'face-sad-tear': $fa-var-face-sad-tear, + 'sad-tear': $fa-var-sad-tear, + 'plane': $fa-var-plane, + 'tent-arrows-down': $fa-var-tent-arrows-down, + 'exclamation': $fa-var-exclamation, + 'arrows-spin': $fa-var-arrows-spin, + 'print': $fa-var-print, + 'turkish-lira-sign': $fa-var-turkish-lira-sign, + 'try': $fa-var-try, + 'turkish-lira': $fa-var-turkish-lira, + 'dollar-sign': $fa-var-dollar-sign, + 'dollar': $fa-var-dollar, + 'usd': $fa-var-usd, + 'x': $fa-var-x, + 'magnifying-glass-dollar': $fa-var-magnifying-glass-dollar, + 'search-dollar': $fa-var-search-dollar, + 'users-gear': $fa-var-users-gear, + 'users-cog': $fa-var-users-cog, + 'person-military-pointing': $fa-var-person-military-pointing, + 'building-columns': $fa-var-building-columns, + 'bank': $fa-var-bank, + 'institution': $fa-var-institution, + 'museum': $fa-var-museum, + 'university': $fa-var-university, + 'umbrella': $fa-var-umbrella, + 'trowel': $fa-var-trowel, + 'd': $fa-var-d, + 'stapler': $fa-var-stapler, + 'masks-theater': $fa-var-masks-theater, + 'theater-masks': $fa-var-theater-masks, + 'kip-sign': $fa-var-kip-sign, + 'hand-point-left': $fa-var-hand-point-left, + 'handshake-simple': $fa-var-handshake-simple, + 'handshake-alt': $fa-var-handshake-alt, + 'jet-fighter': $fa-var-jet-fighter, + 'fighter-jet': $fa-var-fighter-jet, + 'square-share-nodes': $fa-var-square-share-nodes, + 'share-alt-square': $fa-var-share-alt-square, + 'barcode': $fa-var-barcode, + 'plus-minus': $fa-var-plus-minus, + 'video': $fa-var-video, + 'video-camera': $fa-var-video-camera, + 'graduation-cap': $fa-var-graduation-cap, + 'mortar-board': $fa-var-mortar-board, + 'hand-holding-medical': $fa-var-hand-holding-medical, + 'person-circle-check': $fa-var-person-circle-check, + 'turn-up': $fa-var-turn-up, + 'level-up-alt': $fa-var-level-up-alt, +); + +$fa-brand-icons: ( + 'monero': $fa-var-monero, + 'hooli': $fa-var-hooli, + 'yelp': $fa-var-yelp, + 'cc-visa': $fa-var-cc-visa, + 'lastfm': $fa-var-lastfm, + 'shopware': $fa-var-shopware, + 'creative-commons-nc': $fa-var-creative-commons-nc, + 'aws': $fa-var-aws, + 'redhat': $fa-var-redhat, + 'yoast': $fa-var-yoast, + 'cloudflare': $fa-var-cloudflare, + 'ups': $fa-var-ups, + 'pixiv': $fa-var-pixiv, + 'wpexplorer': $fa-var-wpexplorer, + 'dyalog': $fa-var-dyalog, + 'bity': $fa-var-bity, + 'stackpath': $fa-var-stackpath, + 'buysellads': $fa-var-buysellads, + 'first-order': $fa-var-first-order, + 'modx': $fa-var-modx, + 'guilded': $fa-var-guilded, + 'vnv': $fa-var-vnv, + 'square-js': $fa-var-square-js, + 'js-square': $fa-var-js-square, + 'microsoft': $fa-var-microsoft, + 'qq': $fa-var-qq, + 'orcid': $fa-var-orcid, + 'java': $fa-var-java, + 'invision': $fa-var-invision, + 'creative-commons-pd-alt': $fa-var-creative-commons-pd-alt, + 'centercode': $fa-var-centercode, + 'glide-g': $fa-var-glide-g, + 'drupal': $fa-var-drupal, + 'jxl': $fa-var-jxl, + 'dart-lang': $fa-var-dart-lang, + 'hire-a-helper': $fa-var-hire-a-helper, + 'creative-commons-by': $fa-var-creative-commons-by, + 'unity': $fa-var-unity, + 'whmcs': $fa-var-whmcs, + 'rocketchat': $fa-var-rocketchat, + 'vk': $fa-var-vk, + 'untappd': $fa-var-untappd, + 'mailchimp': $fa-var-mailchimp, + 'css3-alt': $fa-var-css3-alt, + 'square-reddit': $fa-var-square-reddit, + 'reddit-square': $fa-var-reddit-square, + 'vimeo-v': $fa-var-vimeo-v, + 'contao': $fa-var-contao, + 'square-font-awesome': $fa-var-square-font-awesome, + 'deskpro': $fa-var-deskpro, + 'brave': $fa-var-brave, + 'sistrix': $fa-var-sistrix, + 'square-instagram': $fa-var-square-instagram, + 'instagram-square': $fa-var-instagram-square, + 'battle-net': $fa-var-battle-net, + 'the-red-yeti': $fa-var-the-red-yeti, + 'square-hacker-news': $fa-var-square-hacker-news, + 'hacker-news-square': $fa-var-hacker-news-square, + 'edge': $fa-var-edge, + 'threads': $fa-var-threads, + 'napster': $fa-var-napster, + 'square-snapchat': $fa-var-square-snapchat, + 'snapchat-square': $fa-var-snapchat-square, + 'google-plus-g': $fa-var-google-plus-g, + 'artstation': $fa-var-artstation, + 'markdown': $fa-var-markdown, + 'sourcetree': $fa-var-sourcetree, + 'google-plus': $fa-var-google-plus, + 'diaspora': $fa-var-diaspora, + 'foursquare': $fa-var-foursquare, + 'stack-overflow': $fa-var-stack-overflow, + 'github-alt': $fa-var-github-alt, + 'phoenix-squadron': $fa-var-phoenix-squadron, + 'pagelines': $fa-var-pagelines, + 'algolia': $fa-var-algolia, + 'red-river': $fa-var-red-river, + 'creative-commons-sa': $fa-var-creative-commons-sa, + 'safari': $fa-var-safari, + 'google': $fa-var-google, + 'square-font-awesome-stroke': $fa-var-square-font-awesome-stroke, + 'font-awesome-alt': $fa-var-font-awesome-alt, + 'atlassian': $fa-var-atlassian, + 'linkedin-in': $fa-var-linkedin-in, + 'digital-ocean': $fa-var-digital-ocean, + 'nimblr': $fa-var-nimblr, + 'chromecast': $fa-var-chromecast, + 'evernote': $fa-var-evernote, + 'hacker-news': $fa-var-hacker-news, + 'creative-commons-sampling': $fa-var-creative-commons-sampling, + 'adversal': $fa-var-adversal, + 'creative-commons': $fa-var-creative-commons, + 'watchman-monitoring': $fa-var-watchman-monitoring, + 'fonticons': $fa-var-fonticons, + 'weixin': $fa-var-weixin, + 'shirtsinbulk': $fa-var-shirtsinbulk, + 'codepen': $fa-var-codepen, + 'git-alt': $fa-var-git-alt, + 'lyft': $fa-var-lyft, + 'rev': $fa-var-rev, + 'windows': $fa-var-windows, + 'wizards-of-the-coast': $fa-var-wizards-of-the-coast, + 'square-viadeo': $fa-var-square-viadeo, + 'viadeo-square': $fa-var-viadeo-square, + 'meetup': $fa-var-meetup, + 'centos': $fa-var-centos, + 'adn': $fa-var-adn, + 'cloudsmith': $fa-var-cloudsmith, + 'opensuse': $fa-var-opensuse, + 'pied-piper-alt': $fa-var-pied-piper-alt, + 'square-dribbble': $fa-var-square-dribbble, + 'dribbble-square': $fa-var-dribbble-square, + 'codiepie': $fa-var-codiepie, + 'node': $fa-var-node, + 'mix': $fa-var-mix, + 'steam': $fa-var-steam, + 'cc-apple-pay': $fa-var-cc-apple-pay, + 'scribd': $fa-var-scribd, + 'debian': $fa-var-debian, + 'openid': $fa-var-openid, + 'instalod': $fa-var-instalod, + 'files-pinwheel': $fa-var-files-pinwheel, + 'expeditedssl': $fa-var-expeditedssl, + 'sellcast': $fa-var-sellcast, + 'square-twitter': $fa-var-square-twitter, + 'twitter-square': $fa-var-twitter-square, + 'r-project': $fa-var-r-project, + 'delicious': $fa-var-delicious, + 'freebsd': $fa-var-freebsd, + 'vuejs': $fa-var-vuejs, + 'accusoft': $fa-var-accusoft, + 'ioxhost': $fa-var-ioxhost, + 'fonticons-fi': $fa-var-fonticons-fi, + 'app-store': $fa-var-app-store, + 'cc-mastercard': $fa-var-cc-mastercard, + 'itunes-note': $fa-var-itunes-note, + 'golang': $fa-var-golang, + 'kickstarter': $fa-var-kickstarter, + 'square-kickstarter': $fa-var-square-kickstarter, + 'grav': $fa-var-grav, + 'weibo': $fa-var-weibo, + 'uncharted': $fa-var-uncharted, + 'firstdraft': $fa-var-firstdraft, + 'square-youtube': $fa-var-square-youtube, + 'youtube-square': $fa-var-youtube-square, + 'wikipedia-w': $fa-var-wikipedia-w, + 'wpressr': $fa-var-wpressr, + 'rendact': $fa-var-rendact, + 'angellist': $fa-var-angellist, + 'galactic-republic': $fa-var-galactic-republic, + 'nfc-directional': $fa-var-nfc-directional, + 'skype': $fa-var-skype, + 'joget': $fa-var-joget, + 'fedora': $fa-var-fedora, + 'stripe-s': $fa-var-stripe-s, + 'meta': $fa-var-meta, + 'laravel': $fa-var-laravel, + 'hotjar': $fa-var-hotjar, + 'bluetooth-b': $fa-var-bluetooth-b, + 'square-letterboxd': $fa-var-square-letterboxd, + 'sticker-mule': $fa-var-sticker-mule, + 'creative-commons-zero': $fa-var-creative-commons-zero, + 'hips': $fa-var-hips, + 'css': $fa-var-css, + 'behance': $fa-var-behance, + 'reddit': $fa-var-reddit, + 'discord': $fa-var-discord, + 'chrome': $fa-var-chrome, + 'app-store-ios': $fa-var-app-store-ios, + 'cc-discover': $fa-var-cc-discover, + 'wpbeginner': $fa-var-wpbeginner, + 'confluence': $fa-var-confluence, + 'shoelace': $fa-var-shoelace, + 'mdb': $fa-var-mdb, + 'dochub': $fa-var-dochub, + 'accessible-icon': $fa-var-accessible-icon, + 'ebay': $fa-var-ebay, + 'amazon': $fa-var-amazon, + 'unsplash': $fa-var-unsplash, + 'yarn': $fa-var-yarn, + 'square-steam': $fa-var-square-steam, + 'steam-square': $fa-var-steam-square, + '500px': $fa-var-500px, + 'square-vimeo': $fa-var-square-vimeo, + 'vimeo-square': $fa-var-vimeo-square, + 'asymmetrik': $fa-var-asymmetrik, + 'font-awesome': $fa-var-font-awesome, + 'font-awesome-flag': $fa-var-font-awesome-flag, + 'font-awesome-logo-full': $fa-var-font-awesome-logo-full, + 'gratipay': $fa-var-gratipay, + 'apple': $fa-var-apple, + 'hive': $fa-var-hive, + 'gitkraken': $fa-var-gitkraken, + 'keybase': $fa-var-keybase, + 'apple-pay': $fa-var-apple-pay, + 'padlet': $fa-var-padlet, + 'amazon-pay': $fa-var-amazon-pay, + 'square-github': $fa-var-square-github, + 'github-square': $fa-var-github-square, + 'stumbleupon': $fa-var-stumbleupon, + 'fedex': $fa-var-fedex, + 'phoenix-framework': $fa-var-phoenix-framework, + 'shopify': $fa-var-shopify, + 'neos': $fa-var-neos, + 'square-threads': $fa-var-square-threads, + 'hackerrank': $fa-var-hackerrank, + 'researchgate': $fa-var-researchgate, + 'swift': $fa-var-swift, + 'angular': $fa-var-angular, + 'speakap': $fa-var-speakap, + 'angrycreative': $fa-var-angrycreative, + 'y-combinator': $fa-var-y-combinator, + 'empire': $fa-var-empire, + 'envira': $fa-var-envira, + 'google-scholar': $fa-var-google-scholar, + 'square-gitlab': $fa-var-square-gitlab, + 'gitlab-square': $fa-var-gitlab-square, + 'studiovinari': $fa-var-studiovinari, + 'pied-piper': $fa-var-pied-piper, + 'wordpress': $fa-var-wordpress, + 'product-hunt': $fa-var-product-hunt, + 'firefox': $fa-var-firefox, + 'linode': $fa-var-linode, + 'goodreads': $fa-var-goodreads, + 'square-odnoklassniki': $fa-var-square-odnoklassniki, + 'odnoklassniki-square': $fa-var-odnoklassniki-square, + 'jsfiddle': $fa-var-jsfiddle, + 'sith': $fa-var-sith, + 'themeisle': $fa-var-themeisle, + 'page4': $fa-var-page4, + 'hashnode': $fa-var-hashnode, + 'react': $fa-var-react, + 'cc-paypal': $fa-var-cc-paypal, + 'squarespace': $fa-var-squarespace, + 'cc-stripe': $fa-var-cc-stripe, + 'creative-commons-share': $fa-var-creative-commons-share, + 'bitcoin': $fa-var-bitcoin, + 'keycdn': $fa-var-keycdn, + 'opera': $fa-var-opera, + 'itch-io': $fa-var-itch-io, + 'umbraco': $fa-var-umbraco, + 'galactic-senate': $fa-var-galactic-senate, + 'ubuntu': $fa-var-ubuntu, + 'draft2digital': $fa-var-draft2digital, + 'stripe': $fa-var-stripe, + 'houzz': $fa-var-houzz, + 'gg': $fa-var-gg, + 'dhl': $fa-var-dhl, + 'square-pinterest': $fa-var-square-pinterest, + 'pinterest-square': $fa-var-pinterest-square, + 'xing': $fa-var-xing, + 'blackberry': $fa-var-blackberry, + 'creative-commons-pd': $fa-var-creative-commons-pd, + 'playstation': $fa-var-playstation, + 'quinscape': $fa-var-quinscape, + 'less': $fa-var-less, + 'blogger-b': $fa-var-blogger-b, + 'opencart': $fa-var-opencart, + 'vine': $fa-var-vine, + 'signal-messenger': $fa-var-signal-messenger, + 'paypal': $fa-var-paypal, + 'gitlab': $fa-var-gitlab, + 'typo3': $fa-var-typo3, + 'reddit-alien': $fa-var-reddit-alien, + 'yahoo': $fa-var-yahoo, + 'dailymotion': $fa-var-dailymotion, + 'affiliatetheme': $fa-var-affiliatetheme, + 'pied-piper-pp': $fa-var-pied-piper-pp, + 'bootstrap': $fa-var-bootstrap, + 'odnoklassniki': $fa-var-odnoklassniki, + 'nfc-symbol': $fa-var-nfc-symbol, + 'mintbit': $fa-var-mintbit, + 'ethereum': $fa-var-ethereum, + 'speaker-deck': $fa-var-speaker-deck, + 'creative-commons-nc-eu': $fa-var-creative-commons-nc-eu, + 'patreon': $fa-var-patreon, + 'avianex': $fa-var-avianex, + 'ello': $fa-var-ello, + 'gofore': $fa-var-gofore, + 'bimobject': $fa-var-bimobject, + 'brave-reverse': $fa-var-brave-reverse, + 'facebook-f': $fa-var-facebook-f, + 'square-google-plus': $fa-var-square-google-plus, + 'google-plus-square': $fa-var-google-plus-square, + 'web-awesome': $fa-var-web-awesome, + 'mandalorian': $fa-var-mandalorian, + 'first-order-alt': $fa-var-first-order-alt, + 'osi': $fa-var-osi, + 'google-wallet': $fa-var-google-wallet, + 'd-and-d-beyond': $fa-var-d-and-d-beyond, + 'periscope': $fa-var-periscope, + 'fulcrum': $fa-var-fulcrum, + 'cloudscale': $fa-var-cloudscale, + 'forumbee': $fa-var-forumbee, + 'mizuni': $fa-var-mizuni, + 'schlix': $fa-var-schlix, + 'square-xing': $fa-var-square-xing, + 'xing-square': $fa-var-xing-square, + 'bandcamp': $fa-var-bandcamp, + 'wpforms': $fa-var-wpforms, + 'cloudversify': $fa-var-cloudversify, + 'usps': $fa-var-usps, + 'megaport': $fa-var-megaport, + 'magento': $fa-var-magento, + 'spotify': $fa-var-spotify, + 'optin-monster': $fa-var-optin-monster, + 'fly': $fa-var-fly, + 'square-bluesky': $fa-var-square-bluesky, + 'aviato': $fa-var-aviato, + 'itunes': $fa-var-itunes, + 'cuttlefish': $fa-var-cuttlefish, + 'blogger': $fa-var-blogger, + 'flickr': $fa-var-flickr, + 'viber': $fa-var-viber, + 'soundcloud': $fa-var-soundcloud, + 'digg': $fa-var-digg, + 'tencent-weibo': $fa-var-tencent-weibo, + 'letterboxd': $fa-var-letterboxd, + 'symfony': $fa-var-symfony, + 'maxcdn': $fa-var-maxcdn, + 'etsy': $fa-var-etsy, + 'facebook-messenger': $fa-var-facebook-messenger, + 'audible': $fa-var-audible, + 'think-peaks': $fa-var-think-peaks, + 'bilibili': $fa-var-bilibili, + 'erlang': $fa-var-erlang, + 'x-twitter': $fa-var-x-twitter, + 'cotton-bureau': $fa-var-cotton-bureau, + 'dashcube': $fa-var-dashcube, + '42-group': $fa-var-42-group, + 'innosoft': $fa-var-innosoft, + 'stack-exchange': $fa-var-stack-exchange, + 'elementor': $fa-var-elementor, + 'square-pied-piper': $fa-var-square-pied-piper, + 'pied-piper-square': $fa-var-pied-piper-square, + 'creative-commons-nd': $fa-var-creative-commons-nd, + 'palfed': $fa-var-palfed, + 'superpowers': $fa-var-superpowers, + 'resolving': $fa-var-resolving, + 'xbox': $fa-var-xbox, + 'square-web-awesome-stroke': $fa-var-square-web-awesome-stroke, + 'searchengin': $fa-var-searchengin, + 'tiktok': $fa-var-tiktok, + 'square-facebook': $fa-var-square-facebook, + 'facebook-square': $fa-var-facebook-square, + 'renren': $fa-var-renren, + 'linux': $fa-var-linux, + 'glide': $fa-var-glide, + 'linkedin': $fa-var-linkedin, + 'hubspot': $fa-var-hubspot, + 'deploydog': $fa-var-deploydog, + 'twitch': $fa-var-twitch, + 'flutter': $fa-var-flutter, + 'ravelry': $fa-var-ravelry, + 'mixer': $fa-var-mixer, + 'square-lastfm': $fa-var-square-lastfm, + 'lastfm-square': $fa-var-lastfm-square, + 'vimeo': $fa-var-vimeo, + 'mendeley': $fa-var-mendeley, + 'uniregistry': $fa-var-uniregistry, + 'figma': $fa-var-figma, + 'creative-commons-remix': $fa-var-creative-commons-remix, + 'cc-amazon-pay': $fa-var-cc-amazon-pay, + 'dropbox': $fa-var-dropbox, + 'instagram': $fa-var-instagram, + 'cmplid': $fa-var-cmplid, + 'upwork': $fa-var-upwork, + 'facebook': $fa-var-facebook, + 'gripfire': $fa-var-gripfire, + 'jedi-order': $fa-var-jedi-order, + 'uikit': $fa-var-uikit, + 'fort-awesome-alt': $fa-var-fort-awesome-alt, + 'phabricator': $fa-var-phabricator, + 'ussunnah': $fa-var-ussunnah, + 'earlybirds': $fa-var-earlybirds, + 'trade-federation': $fa-var-trade-federation, + 'autoprefixer': $fa-var-autoprefixer, + 'whatsapp': $fa-var-whatsapp, + 'square-upwork': $fa-var-square-upwork, + 'slideshare': $fa-var-slideshare, + 'google-play': $fa-var-google-play, + 'viadeo': $fa-var-viadeo, + 'line': $fa-var-line, + 'google-drive': $fa-var-google-drive, + 'servicestack': $fa-var-servicestack, + 'simplybuilt': $fa-var-simplybuilt, + 'bitbucket': $fa-var-bitbucket, + 'imdb': $fa-var-imdb, + 'deezer': $fa-var-deezer, + 'raspberry-pi': $fa-var-raspberry-pi, + 'jira': $fa-var-jira, + 'docker': $fa-var-docker, + 'screenpal': $fa-var-screenpal, + 'bluetooth': $fa-var-bluetooth, + 'gitter': $fa-var-gitter, + 'd-and-d': $fa-var-d-and-d, + 'microblog': $fa-var-microblog, + 'cc-diners-club': $fa-var-cc-diners-club, + 'gg-circle': $fa-var-gg-circle, + 'pied-piper-hat': $fa-var-pied-piper-hat, + 'kickstarter-k': $fa-var-kickstarter-k, + 'yandex': $fa-var-yandex, + 'readme': $fa-var-readme, + 'html5': $fa-var-html5, + 'sellsy': $fa-var-sellsy, + 'square-web-awesome': $fa-var-square-web-awesome, + 'sass': $fa-var-sass, + 'wirsindhandwerk': $fa-var-wirsindhandwerk, + 'wsh': $fa-var-wsh, + 'buromobelexperte': $fa-var-buromobelexperte, + 'salesforce': $fa-var-salesforce, + 'octopus-deploy': $fa-var-octopus-deploy, + 'medapps': $fa-var-medapps, + 'ns8': $fa-var-ns8, + 'pinterest-p': $fa-var-pinterest-p, + 'apper': $fa-var-apper, + 'fort-awesome': $fa-var-fort-awesome, + 'waze': $fa-var-waze, + 'bluesky': $fa-var-bluesky, + 'cc-jcb': $fa-var-cc-jcb, + 'snapchat': $fa-var-snapchat, + 'snapchat-ghost': $fa-var-snapchat-ghost, + 'fantasy-flight-games': $fa-var-fantasy-flight-games, + 'rust': $fa-var-rust, + 'wix': $fa-var-wix, + 'square-behance': $fa-var-square-behance, + 'behance-square': $fa-var-behance-square, + 'supple': $fa-var-supple, + 'webflow': $fa-var-webflow, + 'rebel': $fa-var-rebel, + 'css3': $fa-var-css3, + 'staylinked': $fa-var-staylinked, + 'kaggle': $fa-var-kaggle, + 'space-awesome': $fa-var-space-awesome, + 'deviantart': $fa-var-deviantart, + 'cpanel': $fa-var-cpanel, + 'goodreads-g': $fa-var-goodreads-g, + 'square-git': $fa-var-square-git, + 'git-square': $fa-var-git-square, + 'square-tumblr': $fa-var-square-tumblr, + 'tumblr-square': $fa-var-tumblr-square, + 'trello': $fa-var-trello, + 'creative-commons-nc-jp': $fa-var-creative-commons-nc-jp, + 'get-pocket': $fa-var-get-pocket, + 'perbyte': $fa-var-perbyte, + 'grunt': $fa-var-grunt, + 'weebly': $fa-var-weebly, + 'connectdevelop': $fa-var-connectdevelop, + 'leanpub': $fa-var-leanpub, + 'black-tie': $fa-var-black-tie, + 'themeco': $fa-var-themeco, + 'python': $fa-var-python, + 'android': $fa-var-android, + 'bots': $fa-var-bots, + 'free-code-camp': $fa-var-free-code-camp, + 'hornbill': $fa-var-hornbill, + 'js': $fa-var-js, + 'ideal': $fa-var-ideal, + 'git': $fa-var-git, + 'dev': $fa-var-dev, + 'sketch': $fa-var-sketch, + 'yandex-international': $fa-var-yandex-international, + 'cc-amex': $fa-var-cc-amex, + 'uber': $fa-var-uber, + 'github': $fa-var-github, + 'php': $fa-var-php, + 'alipay': $fa-var-alipay, + 'youtube': $fa-var-youtube, + 'skyatlas': $fa-var-skyatlas, + 'firefox-browser': $fa-var-firefox-browser, + 'replyd': $fa-var-replyd, + 'suse': $fa-var-suse, + 'jenkins': $fa-var-jenkins, + 'twitter': $fa-var-twitter, + 'rockrms': $fa-var-rockrms, + 'pinterest': $fa-var-pinterest, + 'buffer': $fa-var-buffer, + 'npm': $fa-var-npm, + 'yammer': $fa-var-yammer, + 'btc': $fa-var-btc, + 'dribbble': $fa-var-dribbble, + 'stumbleupon-circle': $fa-var-stumbleupon-circle, + 'internet-explorer': $fa-var-internet-explorer, + 'stubber': $fa-var-stubber, + 'telegram': $fa-var-telegram, + 'telegram-plane': $fa-var-telegram-plane, + 'old-republic': $fa-var-old-republic, + 'odysee': $fa-var-odysee, + 'square-whatsapp': $fa-var-square-whatsapp, + 'whatsapp-square': $fa-var-whatsapp-square, + 'node-js': $fa-var-node-js, + 'edge-legacy': $fa-var-edge-legacy, + 'slack': $fa-var-slack, + 'slack-hash': $fa-var-slack-hash, + 'medrt': $fa-var-medrt, + 'usb': $fa-var-usb, + 'tumblr': $fa-var-tumblr, + 'vaadin': $fa-var-vaadin, + 'quora': $fa-var-quora, + 'square-x-twitter': $fa-var-square-x-twitter, + 'reacteurope': $fa-var-reacteurope, + 'medium': $fa-var-medium, + 'medium-m': $fa-var-medium-m, + 'amilia': $fa-var-amilia, + 'mixcloud': $fa-var-mixcloud, + 'flipboard': $fa-var-flipboard, + 'viacoin': $fa-var-viacoin, + 'critical-role': $fa-var-critical-role, + 'sitrox': $fa-var-sitrox, + 'discourse': $fa-var-discourse, + 'joomla': $fa-var-joomla, + 'mastodon': $fa-var-mastodon, + 'airbnb': $fa-var-airbnb, + 'wolf-pack-battalion': $fa-var-wolf-pack-battalion, + 'buy-n-large': $fa-var-buy-n-large, + 'gulp': $fa-var-gulp, + 'creative-commons-sampling-plus': $fa-var-creative-commons-sampling-plus, + 'strava': $fa-var-strava, + 'ember': $fa-var-ember, + 'canadian-maple-leaf': $fa-var-canadian-maple-leaf, + 'teamspeak': $fa-var-teamspeak, + 'pushed': $fa-var-pushed, + 'wordpress-simple': $fa-var-wordpress-simple, + 'nutritionix': $fa-var-nutritionix, + 'wodu': $fa-var-wodu, + 'google-pay': $fa-var-google-pay, + 'intercom': $fa-var-intercom, + 'zhihu': $fa-var-zhihu, + 'korvue': $fa-var-korvue, + 'pix': $fa-var-pix, + 'steam-symbol': $fa-var-steam-symbol, +); diff --git a/web/static/css/base.css b/web/static/css/base.css index 6dce241b..3562e218 100644 --- a/web/static/css/base.css +++ b/web/static/css/base.css @@ -1,4 +1,122 @@ -@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:300;unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd;src:url(/static/fonts/inter/files/inter-latin-300-normal.woff2) format("woff2"),url(/static/fonts/inter/files/inter-latin-300-normal.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd;src:url(/static/fonts/inter/files/inter-latin-400-normal.woff2) format("woff2"),url(/static/fonts/inter/files/inter-latin-400-normal.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd;src:url(/static/fonts/inter/files/inter-latin-500-normal.woff2) format("woff2"),url(/static/fonts/inter/files/inter-latin-500-normal.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd;src:url(/static/fonts/inter/files/inter-latin-600-normal.woff2) format("woff2"),url(/static/fonts/inter/files/inter-latin-600-normal.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd;src:url(/static/fonts/inter/files/inter-latin-700-normal.woff2) format("woff2"),url(/static/fonts/inter/files/inter-latin-700-normal.woff) format("woff")}@font-face{font-family:Rasa;font-style:normal;font-display:swap;font-weight:600;unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd;src:url(/static/fonts/rasa/files/rasa-latin-600-normal.woff2) format("woff2"),url(/static/fonts/rasa/files/rasa-latin-600-normal.woff) format("woff")}.is-checkradio[type=checkbox]{outline:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:none;position:absolute;opacity:0}.is-checkradio[type=checkbox]+label{position:relative;display:initial;cursor:pointer;vertical-align:middle;margin:.5em;padding:.2rem .5rem .2rem 0;border-radius:4px}.is-checkradio[type=checkbox]+label:first-of-type{margin-left:0}.is-checkradio[type=checkbox]+label:hover:before{animation-duration:.4s;animation-fill-mode:both;animation-name:hover-color}.is-checkradio[type=checkbox]+label:before{position:absolute;left:0;top:0;content:"";border:.1rem solid #dbdbdb}.is-checkradio[type=checkbox]+label:after{position:absolute;display:none;content:"";top:0}.is-checkradio[type=checkbox]:focus+label:before{outline:1px dotted #b5b5b5}.is-checkradio[type=checkbox]:hover:not([disabled])+label:before{border-color:#00d1b2!important}.is-checkradio[type=checkbox]:checked+label:before{border:.1rem solid #dbdbdb}.is-checkradio[type=checkbox]:checked[disabled]{cursor:not-allowed}.is-checkradio[type=checkbox]:checked[disabled]+label{opacity:.5}.is-checkradio[type=checkbox]:checked+label:before{animation-name:none}.is-checkradio[type=checkbox]:checked+label:after{display:inline-block}.is-checkradio[type=checkbox][disabled]{cursor:not-allowed}.is-checkradio[type=checkbox][disabled]+label{opacity:.5;cursor:not-allowed}.is-checkradio[type=checkbox][disabled]+label:after,.is-checkradio[type=checkbox][disabled]+label:before,.is-checkradio[type=checkbox][disabled]+label:hover,.is-checkradio[type=checkbox][disabled]:hover{cursor:not-allowed}.is-checkradio[type=checkbox][disabled]:hover:before{animation-name:none}.is-checkradio[type=checkbox][disabled]:after,.is-checkradio[type=checkbox][disabled]:before{cursor:not-allowed}.is-checkradio[type=checkbox].is-block{display:none!important}.is-checkradio[type=checkbox].is-block+label{width:100%!important;background:#f5f5f5;color:rgba(0,0,0,.7);padding-right:.75em}.is-checkradio[type=checkbox].is-block:hover:not([disabled])+label{background:#e8e8e8}.is-checkradio[type=checkbox]+label:before{border-radius:4px}.is-checkradio[type=checkbox]+label:after{box-sizing:border-box;transform:translateY(0) rotate(45deg);border:.1rem solid #00d1b2;border-top:0;border-left:0}.is-checkradio[type=checkbox]+label{font-size:1rem;padding-left:2rem}.is-checkradio[type=checkbox]+label:before{width:1.5rem;height:1.5rem}.is-checkradio[type=checkbox]+label:after{width:.375rem;height:.6rem;top:.405rem;left:.6rem}.is-checkradio[type=checkbox].is-block+label:before{width:1.25rem;height:1.25rem;left:.175rem;top:.175rem}.is-checkradio[type=checkbox].is-block+label:after{top:.325rem;left:.65rem}.is-checkradio[type=checkbox].is-small+label{font-size:.75rem;padding-left:1.5rem}.is-checkradio[type=checkbox].is-small+label:before{width:1.125rem;height:1.125rem}.is-checkradio[type=checkbox].is-small+label:after{width:.28125rem;height:.45rem;top:.30375rem;left:.45rem}.is-checkradio[type=checkbox].is-small.is-block+label:before{width:.9375rem;height:.9375rem;left:.175rem;top:.175rem}.is-checkradio[type=checkbox].is-small.is-block+label:after{top:.29375rem;left:.5375rem}.is-checkradio[type=checkbox].is-medium+label{font-size:1.25rem;padding-left:2.5rem}.is-checkradio[type=checkbox].is-medium+label:before{width:1.875rem;height:1.875rem}.is-checkradio[type=checkbox].is-medium+label:after{width:.46875rem;height:.75rem;top:.50625rem;left:.75rem}.is-checkradio[type=checkbox].is-medium.is-block+label:before{width:1.5625rem;height:1.5625rem;left:.175rem;top:.175rem}.is-checkradio[type=checkbox].is-medium.is-block+label:after{top:.35625rem;left:.7625rem}.is-checkradio[type=checkbox].is-large+label{font-size:1.5rem;padding-left:3rem}.is-checkradio[type=checkbox].is-large+label:before{width:2.25rem;height:2.25rem}.is-checkradio[type=checkbox].is-large+label:after{width:.5625rem;height:.9rem;top:.6075rem;left:.9rem}.is-checkradio[type=checkbox].is-large.is-block+label:before{width:1.875rem;height:1.875rem;left:.175rem;top:.175rem}.is-checkradio[type=checkbox].is-large.is-block+label:after{top:.3875rem;left:.875rem}.is-checkradio[type=checkbox].is-light.is-block:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-light.is-block:hover:not([disabled])+label:before,.is-checkradio[type=checkbox].is-light:checked+label:after,.is-checkradio[type=checkbox].is-light:hover:not([disabled])+label:before{border-color:#f5f5f5!important}.is-checkradio[type=checkbox].is-light.is-block:checked+label{color:rgba(0,0,0,.7);border-color:#f5f5f5!important;background:#f5f5f5}.is-checkradio[type=checkbox].is-light.is-block:checked+label:after{border-color:rgba(0,0,0,.7)!important}.is-checkradio[type=checkbox].is-light.is-block:checked:hover:not([disabled])+label{background:#e8e8e8}.is-checkradio[type=checkbox].is-light.is-block:checked:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-light.is-block:checked:hover:not([disabled])+label:before{border-color:rgba(0,0,0,.7)!important}.is-checkradio[type=checkbox].is-primary.is-block:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-primary.is-block:hover:not([disabled])+label:before,.is-checkradio[type=checkbox].is-primary:checked+label:after,.is-checkradio[type=checkbox].is-primary:hover:not([disabled])+label:before{border-color:#00d1b2!important}.is-checkradio[type=checkbox].is-primary.is-block:checked+label{color:#fff;border-color:#00d1b2!important;background:#00d1b2}.is-checkradio[type=checkbox].is-primary.is-block:checked+label:after{border-color:#fff!important}.is-checkradio[type=checkbox].is-primary.is-block:checked:hover:not([disabled])+label{background:#00b89c}.is-checkradio[type=checkbox].is-primary.is-block:checked:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-primary.is-block:checked:hover:not([disabled])+label:before{border-color:#f2f2f2!important}.is-checkradio[type=checkbox].is-info.is-block:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-info.is-block:hover:not([disabled])+label:before,.is-checkradio[type=checkbox].is-info:checked+label:after,.is-checkradio[type=checkbox].is-info:hover:not([disabled])+label:before{border-color:#3e8ed0!important}.is-checkradio[type=checkbox].is-info.is-block:checked+label{color:#fff;border-color:#3e8ed0!important;background:#3e8ed0}.is-checkradio[type=checkbox].is-info.is-block:checked+label:after{border-color:#fff!important}.is-checkradio[type=checkbox].is-info.is-block:checked:hover:not([disabled])+label{background:#3082c5}.is-checkradio[type=checkbox].is-info.is-block:checked:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-info.is-block:checked:hover:not([disabled])+label:before{border-color:#f2f2f2!important}.is-checkradio[type=checkbox].is-success.is-block:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-success.is-block:hover:not([disabled])+label:before,.is-checkradio[type=checkbox].is-success:checked+label:after,.is-checkradio[type=checkbox].is-success:hover:not([disabled])+label:before{border-color:#48c78e!important}.is-checkradio[type=checkbox].is-success.is-block:checked+label{color:#fff;border-color:#48c78e!important;background:#48c78e}.is-checkradio[type=checkbox].is-success.is-block:checked+label:after{border-color:#fff!important}.is-checkradio[type=checkbox].is-success.is-block:checked:hover:not([disabled])+label{background:#3abb81}.is-checkradio[type=checkbox].is-success.is-block:checked:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-success.is-block:checked:hover:not([disabled])+label:before{border-color:#f2f2f2!important}.is-checkradio[type=checkbox].is-warning.is-block:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-warning.is-block:hover:not([disabled])+label:before,.is-checkradio[type=checkbox].is-warning:checked+label:after,.is-checkradio[type=checkbox].is-warning:hover:not([disabled])+label:before{border-color:#ffe08a!important}.is-checkradio[type=checkbox].is-warning.is-block:checked+label{color:rgba(0,0,0,.7);border-color:#ffe08a!important;background:#ffe08a}.is-checkradio[type=checkbox].is-warning.is-block:checked+label:after{border-color:rgba(0,0,0,.7)!important}.is-checkradio[type=checkbox].is-warning.is-block:checked:hover:not([disabled])+label{background:#ffd970}.is-checkradio[type=checkbox].is-warning.is-block:checked:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-warning.is-block:checked:hover:not([disabled])+label:before{border-color:rgba(0,0,0,.7)!important}.is-checkradio[type=checkbox].is-danger.is-block:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-danger.is-block:hover:not([disabled])+label:before,.is-checkradio[type=checkbox].is-danger:checked+label:after,.is-checkradio[type=checkbox].is-danger:hover:not([disabled])+label:before{border-color:#f14668!important}.is-checkradio[type=checkbox].is-danger.is-block:checked+label{color:#fff;border-color:#f14668!important;background:#f14668}.is-checkradio[type=checkbox].is-danger.is-block:checked+label:after{border-color:#fff!important}.is-checkradio[type=checkbox].is-danger.is-block:checked:hover:not([disabled])+label{background:#ef2e55}.is-checkradio[type=checkbox].is-danger.is-block:checked:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-danger.is-block:checked:hover:not([disabled])+label:before{border-color:#f2f2f2!important}.is-checkradio[type=checkbox]:indeterminate+label:after{display:inline-block;transform:rotate(90deg);border-bottom:none}.is-checkradio[type=checkbox]:indeterminate.is-light+label:after{border-color:#f5f5f5}.is-checkradio[type=checkbox]:indeterminate.is-primary+label:after{border-color:#00d1b2}.is-checkradio[type=checkbox]:indeterminate.is-info+label:after{border-color:#3e8ed0}.is-checkradio[type=checkbox]:indeterminate.is-success+label:after{border-color:#48c78e}.is-checkradio[type=checkbox]:indeterminate.is-warning+label:after{border-color:#ffe08a}.is-checkradio[type=checkbox]:indeterminate.is-danger+label:after{border-color:#f14668} +@charset "UTF-8"; +/* Bulma Utilities */:root{--control-radius:var(--radius);--control-radius-small:var(--radius-small);--control-border-width:1px;--control-height:2.5em;--control-line-height:1.5;--control-padding-vertical:calc(0.5em - 1px);--control-padding-horizontal:calc(0.75em - 1px);--control-size:var(--size-normal);--control-focus-shadow-l:50%} -/*! bulma.io v0.9.4 | MIT License | github.com/jgthms/bulma */.button,.input,.pagination-link,.select select,.textarea{-moz-appearance:none;-webkit-appearance:none;-ms-flex-align:center;align-items:center;border:1px solid transparent;border-radius:4px;box-shadow:none;display:-ms-inline-flexbox;display:inline-flex;font-size:1rem;height:2.5em;-ms-flex-pack:start;justify-content:flex-start;line-height:1.5;padding:calc(.5em - 1px) calc(.75em - 1px);position:relative;vertical-align:top}.button:active,.button:focus,.input:active,.input:focus,.is-active.button,.is-active.input,.is-active.pagination-link,.is-active.textarea,.pagination-link:active,.pagination-link:focus,.select select.is-active,.select select:active,.select select:focus,.textarea:active,.textarea:focus{outline:none}.select select[disabled],[disabled].button,[disabled].input,[disabled].pagination-link,[disabled].textarea{cursor:not-allowed}.breadcrumb,.button,.file,.pagination-link,.tabs{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.navbar-link:not(.is-arrowless):after,.select:not(.is-multiple):not(.is-loading):after{border:3px solid transparent;border-radius:2px;border-right:0;border-top:0;content:" ";display:block;height:.625em;margin-top:-.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;width:.625em}.block:not(:last-child),.box:not(:last-child),.breadcrumb:not(:last-child),.content:not(:last-child),.level:not(:last-child),.message:not(:last-child),.notification:not(:last-child),.pagination:not(:last-child),.progress:not(:last-child),.subtitle:not(:last-child),.table-container:not(:last-child),.table:not(:last-child),.tabs:not(:last-child),.title:not(:last-child){margin-bottom:1.5rem}.delete{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-moz-appearance:none;-webkit-appearance:none;background-color:hsla(0,0%,4%,.2);border:none;border-radius:9999px;cursor:pointer;pointer-events:auto;display:inline-block;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:none;position:relative;vertical-align:top;width:20px}.delete:after,.delete:before{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.delete:before{height:2px;width:50%}.delete:after{height:50%;width:2px}.delete:focus,.delete:hover{background-color:hsla(0,0%,4%,.3)}.delete:active{background-color:hsla(0,0%,4%,.4)}.is-small.delete{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}.is-medium.delete{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}.is-large.delete{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}.loader{animation:a .5s infinite linear;border:2px solid #dbdbdb;border-radius:9999px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em}.modal{bottom:0;left:0;position:absolute;right:0;top:0}.navbar-burger{color:currentColor;font-family:inherit;font-size:1em} -/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */.navbar-burger,blockquote,body,dd,figure,h1,h2,h3,h4,h5,hr,html,iframe,li,ol,p,pre,textarea,ul{margin:0;padding:0}h1,h2,h3,h4,h5{font-size:100%;font-weight:400}ul{list-style:none}button,input,select,textarea{margin:0}html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}td:not([align]),th:not([align]){text-align:inherit}html{background-color:#fff;font-size:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:hidden;overflow-y:scroll;text-rendering:optimizeLegibility;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%}article,figure,footer,header,section{display:block}body,button,input,select,textarea{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Lucida Sans Unicode,Lucida Grande,Arial,sans-serif}code,pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:monospace}body{color:#4a4a4a;font-size:1em;font-weight:400;line-height:1.5}a{color:#485fc7;cursor:pointer;text-decoration:none}a strong{color:currentColor}a:hover{color:#363636}code{color:#da1039;font-size:.875em;font-weight:400;padding:.25em .5em}code,hr{background-color:#f5f5f5}hr{border:none;display:block;height:2px;margin:1.5rem 0}img{height:auto;max-width:100%}input[type=checkbox]{vertical-align:baseline}small{font-size:.875em}span{font-style:inherit;font-weight:inherit}strong{color:#363636;font-weight:700}pre{-webkit-overflow-scrolling:touch;background-color:#f5f5f5;color:#4a4a4a;font-size:.875em;overflow-x:auto;padding:1.25rem 1.5rem;white-space:pre;word-wrap:normal}pre code{background-color:transparent;color:currentColor;font-size:1em;padding:0}table td,table th{vertical-align:top}table td:not([align]),table th:not([align]){text-align:inherit}table th{color:#363636}@keyframes a{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}.box{background-color:#fff;border-radius:6px;box-shadow:0 .5em 1em -.125em hsla(0,0%,4%,.1),0 0 0 1px hsla(0,0%,4%,.02);color:#4a4a4a;display:block;padding:1.25rem}a.box:focus,a.box:hover{box-shadow:0 .5em 1em -.125em hsla(0,0%,4%,.1),0 0 0 1px #485fc7}a.box:active{box-shadow:inset 0 1px 2px hsla(0,0%,4%,.2),0 0 0 1px #485fc7}.button{background-color:#fff;border-color:#dbdbdb;border-width:1px;color:#363636;cursor:pointer;-ms-flex-pack:center;justify-content:center;padding:calc(.5em - 1px) 1em;text-align:center;white-space:nowrap}.button strong{color:inherit}.button .icon,.button .icon.is-large,.button .icon.is-medium,.button .icon.is-small{height:1.5em;width:1.5em}.button .icon:first-child:not(:last-child){margin-left:calc(-.5em - 1px);margin-right:.25em}.button .icon:last-child:not(:first-child){margin-left:.25em;margin-right:calc(-.5em - 1px)}.button .icon:first-child:last-child{margin-left:calc(-.5em - 1px);margin-right:calc(-.5em - 1px)}.button:hover{border-color:#b5b5b5;color:#363636}.button:focus{border-color:#485fc7;color:#363636}.button:focus:not(:active){box-shadow:0 0 0 .125em rgba(72,95,199,.25)}.button.is-active,.button:active{border-color:#4a4a4a;color:#363636}.button.is-light{background-color:#f5f5f5}.button.is-light,.button.is-light:hover{border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light:hover{background-color:#eee}.button.is-light:focus{border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light:focus:not(:active){box-shadow:0 0 0 .125em hsla(0,0%,96%,.25)}.button.is-light.is-active,.button.is-light:active{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light[disabled]{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none}.button.is-primary{background-color:#00d1b2;border-color:transparent;color:#fff}.button.is-primary:hover{background-color:#00c4a7}.button.is-primary:focus,.button.is-primary:hover{border-color:transparent;color:#fff}.button.is-primary:focus:not(:active){box-shadow:0 0 0 .125em rgba(0,209,178,.25)}.button.is-primary.is-active,.button.is-primary:active{background-color:#00b89c;border-color:transparent;color:#fff}.button.is-primary[disabled]{background-color:#00d1b2;border-color:#00d1b2;box-shadow:none}.button.is-primary.is-light{background-color:#ebfffc;color:#00947e}.button.is-primary.is-light:hover{background-color:#defffa;border-color:transparent;color:#00947e}.button.is-primary.is-light.is-active,.button.is-primary.is-light:active{background-color:#d1fff8;border-color:transparent;color:#00947e}.button.is-info{background-color:#3e8ed0;border-color:transparent;color:#fff}.button.is-info:hover{background-color:#3488ce}.button.is-info:focus,.button.is-info:hover{border-color:transparent;color:#fff}.button.is-info:focus:not(:active){box-shadow:0 0 0 .125em rgba(62,142,208,.25)}.button.is-info.is-active,.button.is-info:active{background-color:#3082c5;border-color:transparent;color:#fff}.button.is-info[disabled]{background-color:#3e8ed0;border-color:#3e8ed0;box-shadow:none}.button.is-info.is-light{background-color:#eff5fb;color:#296fa8}.button.is-info.is-light:hover{background-color:#e4eff9;border-color:transparent;color:#296fa8}.button.is-info.is-light.is-active,.button.is-info.is-light:active{background-color:#dae9f6;border-color:transparent;color:#296fa8}.button.is-success{background-color:#48c78e;border-color:transparent;color:#fff}.button.is-success:hover{background-color:#3ec487}.button.is-success:focus,.button.is-success:hover{border-color:transparent;color:#fff}.button.is-success:focus:not(:active){box-shadow:0 0 0 .125em rgba(72,199,142,.25)}.button.is-success.is-active,.button.is-success:active{background-color:#3abb81;border-color:transparent;color:#fff}.button.is-success[disabled]{background-color:#48c78e;border-color:#48c78e;box-shadow:none}.button.is-success.is-light{background-color:#effaf5;color:#257953}.button.is-success.is-light:hover{background-color:#e6f7ef;border-color:transparent;color:#257953}.button.is-success.is-light.is-active,.button.is-success.is-light:active{background-color:#dcf4e9;border-color:transparent;color:#257953}.button.is-warning{background-color:#ffe08a}.button.is-warning,.button.is-warning:hover{border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning:hover{background-color:#ffdc7d}.button.is-warning:focus{border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning:focus:not(:active){box-shadow:0 0 0 .125em rgba(255,224,138,.25)}.button.is-warning.is-active,.button.is-warning:active{background-color:#ffd970;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning[disabled]{background-color:#ffe08a;border-color:#ffe08a;box-shadow:none}.button.is-warning.is-light{background-color:#fffaeb;color:#946c00}.button.is-warning.is-light:hover{background-color:#fff6de;border-color:transparent;color:#946c00}.button.is-warning.is-light.is-active,.button.is-warning.is-light:active{background-color:#fff3d1;border-color:transparent;color:#946c00}.button.is-danger{background-color:#f14668;border-color:transparent;color:#fff}.button.is-danger:hover{background-color:#f03a5f}.button.is-danger:focus,.button.is-danger:hover{border-color:transparent;color:#fff}.button.is-danger:focus:not(:active){box-shadow:0 0 0 .125em rgba(241,70,104,.25)}.button.is-danger.is-active,.button.is-danger:active{background-color:#ef2e55;border-color:transparent;color:#fff}.button.is-danger[disabled]{background-color:#f14668;border-color:#f14668;box-shadow:none}.button.is-danger.is-light{background-color:#feecf0;color:#cc0f35}.button.is-danger.is-light:hover{background-color:#fde0e6;border-color:transparent;color:#cc0f35}.button.is-danger.is-light.is-active,.button.is-danger.is-light:active{background-color:#fcd4dc;border-color:transparent;color:#cc0f35}.button.is-small{font-size:.75rem}.button.is-small:not(.is-rounded){border-radius:2px}.button.is-medium{font-size:1.25rem}.button.is-large{font-size:1.5rem}.button[disabled]{background-color:#fff;border-color:#dbdbdb;box-shadow:none;opacity:.5}.button.is-fullwidth{display:-ms-flexbox;display:flex;width:100%}.button.is-rounded{border-radius:9999px;padding-left:1.25em;padding-right:1.25em}.buttons{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.buttons .button{margin-bottom:.5rem}.buttons .button:not(:last-child):not(.is-fullwidth){margin-right:.5rem}.buttons:last-child{margin-bottom:-.5rem}.buttons:not(:last-child){margin-bottom:1rem}.buttons.has-addons .button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.buttons.has-addons .button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.buttons.has-addons .button:last-child{margin-right:0}.buttons.has-addons .button:hover{z-index:2}.buttons.has-addons .button.is-active,.buttons.has-addons .button:active,.buttons.has-addons .button:focus{z-index:3}.buttons.has-addons .button.is-active:hover,.buttons.has-addons .button:active:hover,.buttons.has-addons .button:focus:hover{z-index:4}.buttons.has-addons .button.is-expanded{-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1}.buttons.is-centered{-ms-flex-pack:center;justify-content:center}.buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth){margin-left:.25rem;margin-right:.25rem}.container{-ms-flex-positive:1;flex-grow:1;margin:0 auto;position:relative;width:auto}@media screen and (min-width:1024px){.container{max-width:960px}}@media screen and (min-width:1216px){.container:not(.is-max-desktop){max-width:1152px}}@media screen and (min-width:1408px){.container:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}.content li+li{margin-top:.25em}.content blockquote:not(:last-child),.content ol:not(:last-child),.content p:not(:last-child),.content pre:not(:last-child),.content table:not(:last-child),.content ul:not(:last-child){margin-bottom:1em}.content h1,.content h2,.content h3,.content h4,.content h5{color:#363636;font-weight:600;line-height:1.125}.content h1{font-size:2em;margin-bottom:.5em}.content h1:not(:first-child){margin-top:1em}.content h2{font-size:1.75em;margin-bottom:.5714em}.content h2:not(:first-child){margin-top:1.1428em}.content h3{font-size:1.5em;margin-bottom:.6666em}.content h3:not(:first-child){margin-top:1.3333em}.content h4{font-size:1.25em;margin-bottom:.8em}.content h5{font-size:1.125em;margin-bottom:.8888em}.content blockquote{background-color:#f5f5f5;border-left:5px solid #dbdbdb;padding:1.25em 1.5em}.content ol{list-style-position:outside;margin-left:2em;margin-top:1em}.content ol:not([type]){list-style-type:decimal}.content ul{list-style:disc outside;margin-left:2em;margin-top:1em}.content ul ul{list-style-type:circle;margin-top:.5em}.content ul ul ul{list-style-type:square}.content dd{margin-left:2em}.content figure{margin-left:2em;margin-right:2em;text-align:center}.content figure:not(:first-child){margin-top:2em}.content figure:not(:last-child){margin-bottom:2em}.content figure img{display:inline-block}.content pre{-webkit-overflow-scrolling:touch;overflow-x:auto;padding:1.25em 1.5em;white-space:pre;word-wrap:normal}.content sub{font-size:75%}.content table{width:100%}.content table td,.content table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:.5em .75em;vertical-align:top}.content table th{color:#363636}.content table th:not([align]){text-align:inherit}.content table thead td,.content table thead th{border-width:0 0 2px;color:#363636}.content table tbody tr:last-child td,.content table tbody tr:last-child th{border-bottom-width:0}.content .tabs li+li{margin-top:0}.content.is-small{font-size:.75rem}.content.is-medium{font-size:1.25rem}.content.is-large{font-size:1.5rem}.icon{-ms-flex-align:center;align-items:center;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;height:1.5rem;width:1.5rem}.icon.is-small{height:1rem;width:1rem}.icon.is-medium{height:2rem;width:2rem}.icon.is-large{height:3rem;width:3rem}.icon-text{-ms-flex-align:start;align-items:flex-start;color:inherit;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:wrap;flex-wrap:wrap;line-height:1.5rem;vertical-align:top}.icon-text .icon{-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0}.icon-text .icon:not(:last-child){margin-right:.25em}.icon-text .icon:not(:first-child){margin-left:.25em}div.icon-text{display:-ms-flexbox;display:flex}.image{display:block;position:relative}.image img{display:block;height:auto;width:100%}.image img.is-rounded{border-radius:9999px}.image.is-fullwidth{width:100%}.notification{background-color:#f5f5f5;border-radius:4px;position:relative;padding:1.25rem 2.5rem 1.25rem 1.5rem}.notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}.notification strong{color:currentColor}.notification code,.notification pre{background:#fff}.notification pre code{background:transparent}.notification>.delete{right:.5rem;position:absolute;top:.5rem}.notification .content,.notification .subtitle,.notification .title{color:currentColor}.notification.is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.notification.is-primary{background-color:#00d1b2;color:#fff}.notification.is-primary.is-light{background-color:#ebfffc;color:#00947e}.notification.is-info{background-color:#3e8ed0;color:#fff}.notification.is-info.is-light{background-color:#eff5fb;color:#296fa8}.notification.is-success{background-color:#48c78e;color:#fff}.notification.is-success.is-light{background-color:#effaf5;color:#257953}.notification.is-warning{background-color:#ffe08a;color:rgba(0,0,0,.7)}.notification.is-warning.is-light{background-color:#fffaeb;color:#946c00}.notification.is-danger{background-color:#f14668;color:#fff}.notification.is-danger.is-light{background-color:#feecf0;color:#cc0f35}.progress{-moz-appearance:none;-webkit-appearance:none;border:none;border-radius:9999px;display:block;height:1rem;overflow:hidden;padding:0;width:100%}.progress::-webkit-progress-bar{background-color:#ededed}.progress::-webkit-progress-value{background-color:#4a4a4a}.progress::-moz-progress-bar{background-color:#4a4a4a}.progress::-ms-fill{background-color:#4a4a4a;border:none}.progress.is-light::-webkit-progress-value{background-color:#f5f5f5}.progress.is-light::-moz-progress-bar{background-color:#f5f5f5}.progress.is-light::-ms-fill{background-color:#f5f5f5}.progress.is-light:indeterminate{background-image:linear-gradient(90deg,#f5f5f5 30%,#ededed 0)}.progress.is-primary::-webkit-progress-value{background-color:#00d1b2}.progress.is-primary::-moz-progress-bar{background-color:#00d1b2}.progress.is-primary::-ms-fill{background-color:#00d1b2}.progress.is-primary:indeterminate{background-image:linear-gradient(90deg,#00d1b2 30%,#ededed 0)}.progress.is-info::-webkit-progress-value{background-color:#3e8ed0}.progress.is-info::-moz-progress-bar{background-color:#3e8ed0}.progress.is-info::-ms-fill{background-color:#3e8ed0}.progress.is-info:indeterminate{background-image:linear-gradient(90deg,#3e8ed0 30%,#ededed 0)}.progress.is-success::-webkit-progress-value{background-color:#48c78e}.progress.is-success::-moz-progress-bar{background-color:#48c78e}.progress.is-success::-ms-fill{background-color:#48c78e}.progress.is-success:indeterminate{background-image:linear-gradient(90deg,#48c78e 30%,#ededed 0)}.progress.is-warning::-webkit-progress-value{background-color:#ffe08a}.progress.is-warning::-moz-progress-bar{background-color:#ffe08a}.progress.is-warning::-ms-fill{background-color:#ffe08a}.progress.is-warning:indeterminate{background-image:linear-gradient(90deg,#ffe08a 30%,#ededed 0)}.progress.is-danger::-webkit-progress-value{background-color:#f14668}.progress.is-danger::-moz-progress-bar{background-color:#f14668}.progress.is-danger::-ms-fill{background-color:#f14668}.progress.is-danger:indeterminate{background-image:linear-gradient(90deg,#f14668 30%,#ededed 0)}.progress:indeterminate{animation-duration:1.5s;animation-iteration-count:infinite;animation-name:b;animation-timing-function:linear;background-color:#ededed;background-image:linear-gradient(90deg,#4a4a4a 30%,#ededed 0);background-position:0 0;background-repeat:no-repeat;background-size:150% 150%}.progress:indeterminate::-webkit-progress-bar{background-color:transparent}.progress:indeterminate::-moz-progress-bar{background-color:transparent}.progress:indeterminate::-ms-fill{animation-name:none}.progress.is-small{height:.75rem}.progress.is-medium{height:1.25rem}.progress.is-large{height:1.5rem}@keyframes b{0%{background-position:200% 0}to{background-position:-200% 0}}.table{background-color:#fff;color:#363636}.table td,.table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:.5em .75em;vertical-align:top}.table td.is-light,.table th.is-light{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,.7)}.table td.is-primary,.table th.is-primary{background-color:#00d1b2;border-color:#00d1b2;color:#fff}.table td.is-info,.table th.is-info{background-color:#3e8ed0;border-color:#3e8ed0;color:#fff}.table td.is-success,.table th.is-success{background-color:#48c78e;border-color:#48c78e;color:#fff}.table td.is-warning,.table th.is-warning{background-color:#ffe08a;border-color:#ffe08a;color:rgba(0,0,0,.7)}.table td.is-danger,.table th.is-danger{background-color:#f14668;border-color:#f14668;color:#fff}.table td.is-narrow,.table th.is-narrow{white-space:nowrap;width:1%}.table th{color:#363636}.table th:not([align]){text-align:left}.table thead{background-color:transparent}.table thead td,.table thead th{border-width:0 0 2px;color:#363636}.table tbody{background-color:transparent}.table tbody tr:last-child td,.table tbody tr:last-child th{border-bottom-width:0}.table.is-fullwidth{width:100%}.table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#fafafa}.table.is-narrow td,.table.is-narrow th{padding:.25em .5em}.table-container{-webkit-overflow-scrolling:touch;overflow:auto;overflow-y:hidden;max-width:100%}.tags{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.tags .tag{margin-bottom:.5rem}.tags .tag:not(:last-child){margin-right:.5rem}.tags:last-child{margin-bottom:-.5rem}.tags:not(:last-child){margin-bottom:1rem}.tags.is-centered{-ms-flex-pack:center;justify-content:center}.tags.is-centered .tag{margin-right:.25rem;margin-left:.25rem}.tags.has-addons .tag{margin-right:0}.tags.has-addons .tag:not(:first-child){margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.tags.has-addons .tag:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.tag:not(body){-ms-flex-align:center;align-items:center;background-color:#f5f5f5;border-radius:4px;color:#4a4a4a;display:-ms-inline-flexbox;display:inline-flex;font-size:.75rem;height:2em;-ms-flex-pack:center;justify-content:center;line-height:1.5;padding-left:.75em;padding-right:.75em;white-space:nowrap}.tag:not(body) .delete{margin-left:.25rem;margin-right:-.375rem}.tag:not(body).is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.tag:not(body).is-primary{background-color:#00d1b2;color:#fff}.tag:not(body).is-primary.is-light{background-color:#ebfffc;color:#00947e}.tag:not(body).is-info{background-color:#3e8ed0;color:#fff}.tag:not(body).is-info.is-light{background-color:#eff5fb;color:#296fa8}.tag:not(body).is-success{background-color:#48c78e;color:#fff}.tag:not(body).is-success.is-light{background-color:#effaf5;color:#257953}.tag:not(body).is-warning{background-color:#ffe08a;color:rgba(0,0,0,.7)}.tag:not(body).is-warning.is-light{background-color:#fffaeb;color:#946c00}.tag:not(body).is-danger{background-color:#f14668;color:#fff}.tag:not(body).is-danger.is-light{background-color:#feecf0;color:#cc0f35}.tag:not(body).is-medium{font-size:1rem}.tag:not(body).is-large{font-size:1.25rem}.tag:not(body) .icon:first-child:not(:last-child){margin-left:-.375em;margin-right:.1875em}.tag:not(body) .icon:last-child:not(:first-child){margin-left:.1875em;margin-right:-.375em}.tag:not(body) .icon:first-child:last-child{margin-left:-.375em;margin-right:-.375em}.tag:not(body).is-rounded{border-radius:9999px}a.tag:hover{text-decoration:underline}.subtitle,.title{word-break:break-word}.subtitle em,.subtitle span,.title em,.title span{font-weight:inherit}.subtitle sub,.title sub{font-size:.75em}.subtitle .tag,.title .tag{vertical-align:middle}.title{color:#363636;font-family:Rasa,Georgia,Times New Roman,serif;font-size:2rem;font-weight:600;line-height:1.125}.title strong{color:inherit;font-weight:inherit}.title:not(.is-spaced)+.subtitle{margin-top:-1.25rem}.title.is-1{font-size:3rem}.title.is-2{font-size:2.5rem}.title.is-3{font-size:2rem}.title.is-4{font-size:1.5rem}.title.is-5{font-size:1.25rem}.title.is-6{font-size:1rem}.subtitle{color:#4a4a4a;font-size:1.25rem;font-weight:400;line-height:1.25}.subtitle strong{color:#363636;font-weight:600}.subtitle:not(.is-spaced)+.title{margin-top:-1.25rem}.subtitle.is-1{font-size:3rem}.subtitle.is-2{font-size:2.5rem}.subtitle.is-3{font-size:2rem}.subtitle.is-4{font-size:1.5rem}.subtitle.is-5{font-size:1.25rem}.subtitle.is-6{font-size:1rem}.heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}.number{-ms-flex-align:center;align-items:center;background-color:#f5f5f5;border-radius:9999px;display:-ms-inline-flexbox;display:inline-flex;font-size:1.25rem;height:2em;-ms-flex-pack:center;justify-content:center;margin-right:1.5rem;min-width:2.5em;padding:.25rem .5rem;text-align:center;vertical-align:top}.input,.select select,.textarea{background-color:#fff;border-color:#dbdbdb;border-radius:4px;color:#363636}.input::-moz-placeholder,.select select::-moz-placeholder,.textarea::-moz-placeholder{color:rgba(54,54,54,.3)}.input::-webkit-input-placeholder,.select select::-webkit-input-placeholder,.textarea::-webkit-input-placeholder{color:rgba(54,54,54,.3)}.input:-moz-placeholder,.select select:-moz-placeholder,.textarea:-moz-placeholder{color:rgba(54,54,54,.3)}.input:-ms-input-placeholder,.select select:-ms-input-placeholder,.textarea:-ms-input-placeholder{color:rgba(54,54,54,.3)}.input:hover,.select select:hover,.textarea:hover{border-color:#b5b5b5}.input:active,.input:focus,.is-active.input,.is-active.textarea,.select select.is-active,.select select:active,.select select:focus,.textarea:active,.textarea:focus{border-color:#485fc7;box-shadow:0 0 0 .125em rgba(72,95,199,.25)}.select select[disabled],[disabled].input,[disabled].textarea{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none;color:#7a7a7a}.select select[disabled]::-moz-placeholder,[disabled].input::-moz-placeholder,[disabled].textarea::-moz-placeholder{color:hsla(0,0%,48%,.3)}.select select[disabled]::-webkit-input-placeholder,[disabled].input::-webkit-input-placeholder,[disabled].textarea::-webkit-input-placeholder{color:hsla(0,0%,48%,.3)}.select select[disabled]:-moz-placeholder,[disabled].input:-moz-placeholder,[disabled].textarea:-moz-placeholder{color:hsla(0,0%,48%,.3)}.select select[disabled]:-ms-input-placeholder,[disabled].input:-ms-input-placeholder,[disabled].textarea:-ms-input-placeholder{color:hsla(0,0%,48%,.3)}.input,.textarea{box-shadow:inset 0 .0625em .125em hsla(0,0%,4%,.05);max-width:100%;width:100%}[readonly].input,[readonly].textarea{box-shadow:none}.is-light.input,.is-light.textarea{border-color:#f5f5f5}.is-light.input:active,.is-light.input:focus,.is-light.is-active.input,.is-light.is-active.textarea,.is-light.textarea:active,.is-light.textarea:focus{box-shadow:0 0 0 .125em hsla(0,0%,96%,.25)}.is-primary.input,.is-primary.textarea{border-color:#00d1b2}.is-primary.input:active,.is-primary.input:focus,.is-primary.is-active.input,.is-primary.is-active.textarea,.is-primary.textarea:active,.is-primary.textarea:focus{box-shadow:0 0 0 .125em rgba(0,209,178,.25)}.is-info.input,.is-info.textarea{border-color:#3e8ed0}.is-info.input:active,.is-info.input:focus,.is-info.is-active.input,.is-info.is-active.textarea,.is-info.textarea:active,.is-info.textarea:focus{box-shadow:0 0 0 .125em rgba(62,142,208,.25)}.is-success.input,.is-success.textarea{border-color:#48c78e}.is-success.input:active,.is-success.input:focus,.is-success.is-active.input,.is-success.is-active.textarea,.is-success.textarea:active,.is-success.textarea:focus{box-shadow:0 0 0 .125em rgba(72,199,142,.25)}.is-warning.input,.is-warning.textarea{border-color:#ffe08a}.is-warning.input:active,.is-warning.input:focus,.is-warning.is-active.input,.is-warning.is-active.textarea,.is-warning.textarea:active,.is-warning.textarea:focus{box-shadow:0 0 0 .125em rgba(255,224,138,.25)}.is-danger.input,.is-danger.textarea{border-color:#f14668}.is-danger.input:active,.is-danger.input:focus,.is-danger.is-active.input,.is-danger.is-active.textarea,.is-danger.textarea:active,.is-danger.textarea:focus{box-shadow:0 0 0 .125em rgba(241,70,104,.25)}.is-small.input,.is-small.textarea{border-radius:2px;font-size:.75rem}.is-medium.input,.is-medium.textarea{font-size:1.25rem}.is-large.input,.is-large.textarea{font-size:1.5rem}.is-fullwidth.input,.is-fullwidth.textarea{display:block;width:100%}.is-inline.input,.is-inline.textarea{display:inline;width:auto}.input.is-rounded{border-radius:9999px;padding-left:calc((.75em - 1px) + .375em);padding-right:calc((.75em - 1px) + .375em)}.textarea{display:block;max-width:100%;min-width:100%;padding:calc(.75em - 1px);resize:vertical}.textarea:not([rows]){max-height:40em;min-height:8em}.textarea[rows]{height:auto}.checkbox{display:inline-block;line-height:1.25;position:relative}.checkbox,.checkbox input{cursor:pointer}.checkbox:hover{color:#363636}.checkbox input[disabled],[disabled].checkbox{color:#7a7a7a;cursor:not-allowed}.select{display:inline-block;max-width:100%;position:relative;vertical-align:top}.select:not(.is-multiple){height:2.5em}.select:not(.is-multiple):not(.is-loading):after{border-color:#485fc7;right:1.125em;z-index:4}.select.is-rounded select{border-radius:9999px;padding-left:1em}.select select{cursor:pointer;display:block;font-size:1em;max-width:100%;outline:none}.select select::-ms-expand{display:none}.select select[disabled]:hover{border-color:#f5f5f5}.select select:not([multiple]){padding-right:2.5em}.select select[multiple]{height:auto;padding:0}.select select[multiple] option{padding:.5em 1em}.select:not(.is-multiple):not(.is-loading):hover:after{border-color:#363636}.select.is-light:not(:hover):after,.select.is-light select{border-color:#f5f5f5}.select.is-light select:hover{border-color:#e8e8e8}.select.is-light select.is-active,.select.is-light select:active,.select.is-light select:focus{box-shadow:0 0 0 .125em hsla(0,0%,96%,.25)}.select.is-primary:not(:hover):after,.select.is-primary select{border-color:#00d1b2}.select.is-primary select:hover{border-color:#00b89c}.select.is-primary select.is-active,.select.is-primary select:active,.select.is-primary select:focus{box-shadow:0 0 0 .125em rgba(0,209,178,.25)}.select.is-info:not(:hover):after,.select.is-info select{border-color:#3e8ed0}.select.is-info select:hover{border-color:#3082c5}.select.is-info select.is-active,.select.is-info select:active,.select.is-info select:focus{box-shadow:0 0 0 .125em rgba(62,142,208,.25)}.select.is-success:not(:hover):after,.select.is-success select{border-color:#48c78e}.select.is-success select:hover{border-color:#3abb81}.select.is-success select.is-active,.select.is-success select:active,.select.is-success select:focus{box-shadow:0 0 0 .125em rgba(72,199,142,.25)}.select.is-warning:not(:hover):after,.select.is-warning select{border-color:#ffe08a}.select.is-warning select:hover{border-color:#ffd970}.select.is-warning select.is-active,.select.is-warning select:active,.select.is-warning select:focus{box-shadow:0 0 0 .125em rgba(255,224,138,.25)}.select.is-danger:not(:hover):after,.select.is-danger select{border-color:#f14668}.select.is-danger select:hover{border-color:#ef2e55}.select.is-danger select.is-active,.select.is-danger select:active,.select.is-danger select:focus{box-shadow:0 0 0 .125em rgba(241,70,104,.25)}.select.is-small{border-radius:2px;font-size:.75rem}.select.is-medium{font-size:1.25rem}.select.is-large{font-size:1.5rem}.select.is-disabled:after{border-color:#7a7a7a!important;opacity:.5}.select.is-fullwidth,.select.is-fullwidth select{width:100%}.file{-ms-flex-align:stretch;align-items:stretch;display:-ms-flexbox;display:flex;-ms-flex-pack:start;justify-content:flex-start;position:relative}.file.is-small{font-size:.75rem}.file.is-medium{font-size:1.25rem}.file.is-large{font-size:1.5rem}.file.is-centered{-ms-flex-pack:center;justify-content:center}.label{color:#363636;display:block;font-size:1rem;font-weight:700}.label:not(:last-child){margin-bottom:.5em}.label.is-small{font-size:.75rem}.label.is-medium{font-size:1.25rem}.label.is-large{font-size:1.5rem}.help{display:block;font-size:.75rem;margin-top:.25rem}.help.is-light{color:#f5f5f5}.help.is-primary{color:#00d1b2}.help.is-info{color:#3e8ed0}.help.is-success{color:#48c78e}.help.is-warning{color:#ffe08a}.help.is-danger{color:#f14668}.field:not(:last-child){margin-bottom:.75rem}.field.has-addons{display:-ms-flexbox;display:flex;-ms-flex-pack:start;justify-content:flex-start}.field.has-addons .control:not(:last-child){margin-right:-1px}.field.has-addons .control:not(:first-child):not(:last-child) .button,.field.has-addons .control:not(:first-child):not(:last-child) .input,.field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}.field.has-addons .control:first-child:not(:only-child) .button,.field.has-addons .control:first-child:not(:only-child) .input,.field.has-addons .control:first-child:not(:only-child) .select select{border-bottom-right-radius:0;border-top-right-radius:0}.field.has-addons .control:last-child:not(:only-child) .button,.field.has-addons .control:last-child:not(:only-child) .input,.field.has-addons .control:last-child:not(:only-child) .select select{border-bottom-left-radius:0;border-top-left-radius:0}.field.has-addons .control .button:not([disabled]):hover,.field.has-addons .control .input:not([disabled]):hover,.field.has-addons .control .select select:not([disabled]):hover{z-index:2}.field.has-addons .control .button:not([disabled]).is-active,.field.has-addons .control .button:not([disabled]):active,.field.has-addons .control .button:not([disabled]):focus,.field.has-addons .control .input:not([disabled]).is-active,.field.has-addons .control .input:not([disabled]):active,.field.has-addons .control .input:not([disabled]):focus,.field.has-addons .control .select select:not([disabled]).is-active,.field.has-addons .control .select select:not([disabled]):active,.field.has-addons .control .select select:not([disabled]):focus{z-index:3}.field.has-addons .control .button:not([disabled]).is-active:hover,.field.has-addons .control .button:not([disabled]):active:hover,.field.has-addons .control .button:not([disabled]):focus:hover,.field.has-addons .control .input:not([disabled]).is-active:hover,.field.has-addons .control .input:not([disabled]):active:hover,.field.has-addons .control .input:not([disabled]):focus:hover,.field.has-addons .control .select select:not([disabled]).is-active:hover,.field.has-addons .control .select select:not([disabled]):active:hover,.field.has-addons .control .select select:not([disabled]):focus:hover{z-index:4}.field.has-addons .control.is-expanded{-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1}.field.is-grouped{display:-ms-flexbox;display:flex;-ms-flex-pack:start;justify-content:flex-start}.field.is-grouped>.control{-ms-flex-negative:0;flex-shrink:0}.field.is-grouped>.control:not(:last-child){margin-bottom:0;margin-right:.75rem}.field.is-grouped>.control.is-expanded{-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1}@media print,screen and (min-width:769px){.field.is-horizontal{display:-ms-flexbox;display:flex}}.field-body .field .field{margin-bottom:0}@media print,screen and (min-width:769px){.field-body{display:-ms-flexbox;display:flex;-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:5;flex-grow:5;-ms-flex-negative:1;flex-shrink:1}.field-body .field{margin-bottom:0}.field-body>.field{-ms-flex-negative:1;flex-shrink:1}.field-body>.field:not(.is-narrow){-ms-flex-positive:1;flex-grow:1}.field-body>.field:not(:last-child){margin-right:.75rem}}.control{box-sizing:border-box;clear:both;font-size:1rem;position:relative;text-align:inherit}.control.has-icons-left .input:focus~.icon,.control.has-icons-left .select:focus~.icon{color:#4a4a4a}.control.has-icons-left .input.is-small~.icon,.control.has-icons-left .select.is-small~.icon{font-size:.75rem}.control.has-icons-left .input.is-medium~.icon,.control.has-icons-left .select.is-medium~.icon{font-size:1.25rem}.control.has-icons-left .input.is-large~.icon,.control.has-icons-left .select.is-large~.icon{font-size:1.5rem}.control.has-icons-left .icon{color:#dbdbdb;height:2.5em;pointer-events:none;position:absolute;top:0;width:2.5em;z-index:4}.control.has-icons-left .input,.control.has-icons-left .select select{padding-left:2.5em}.control.has-icons-left .icon.is-left{left:0}.breadcrumb{font-size:1rem;white-space:nowrap}.breadcrumb a{-ms-flex-align:center;align-items:center;color:#485fc7;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding:0 .75em}.breadcrumb a:hover{color:#363636}.breadcrumb li{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex}.breadcrumb li:first-child a{padding-left:0}.breadcrumb li.is-active a{color:#363636;cursor:default;pointer-events:none}.breadcrumb li+li:before{color:#b5b5b5;content:"/"}.breadcrumb ol,.breadcrumb ul{-ms-flex-align:start;align-items:flex-start;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.breadcrumb .icon:first-child{margin-right:.5em}.breadcrumb .icon:last-child{margin-left:.5em}.breadcrumb.is-centered ol,.breadcrumb.is-centered ul{-ms-flex-pack:center;justify-content:center}.breadcrumb.is-small{font-size:.75rem}.breadcrumb.is-medium{font-size:1.25rem}.breadcrumb.is-large{font-size:1.5rem}.dropdown{display:-ms-inline-flexbox;display:inline-flex;position:relative;vertical-align:top}.dropdown-divider{background-color:#ededed;border:none;display:block;height:1px;margin:.5rem 0}.level{-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.level code{border-radius:4px}.level img{display:inline-block;vertical-align:top}@media print,screen and (min-width:769px){.level{display:-ms-flexbox;display:flex}.level>.level-item:not(.is-narrow){-ms-flex-positive:1;flex-grow:1}}.level-item{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-preferred-size:auto;flex-basis:auto;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;-ms-flex-pack:center;justify-content:center}.level-item .subtitle,.level-item .title{margin-bottom:0}@media screen and (max-width:768px){.level-item:not(:last-child){margin-bottom:.75rem}}.level-left,.level-right{-ms-flex-preferred-size:auto;flex-basis:auto;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0}@media print,screen and (min-width:769px){.level-left .level-item:not(:last-child),.level-right .level-item:not(:last-child){margin-right:.75rem}}.level-left{-ms-flex-align:center;align-items:center;-ms-flex-pack:start;justify-content:flex-start}@media screen and (max-width:768px){.level-left+.level-right{margin-top:1.5rem}}@media print,screen and (min-width:769px){.level-left{display:-ms-flexbox;display:flex}}.level-right{-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end}@media print,screen and (min-width:769px){.level-right{display:-ms-flexbox;display:flex}}.menu{font-size:1rem}.menu.is-small{font-size:.75rem}.menu.is-medium{font-size:1.25rem}.menu.is-large{font-size:1.5rem}.message{background-color:#f5f5f5;border-radius:4px;font-size:1rem}.message strong{color:currentColor}.message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}.message.is-small{font-size:.75rem}.message.is-medium{font-size:1.25rem}.message.is-large{font-size:1.5rem}.message.is-light{background-color:#fafafa}.message.is-light .message-header{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.message.is-light .message-body{border-color:#f5f5f5}.message.is-primary{background-color:#ebfffc}.message.is-primary .message-header{background-color:#00d1b2;color:#fff}.message.is-primary .message-body{border-color:#00d1b2;color:#00947e}.message.is-info{background-color:#eff5fb}.message.is-info .message-header{background-color:#3e8ed0;color:#fff}.message.is-info .message-body{border-color:#3e8ed0;color:#296fa8}.message.is-success{background-color:#effaf5}.message.is-success .message-header{background-color:#48c78e;color:#fff}.message.is-success .message-body{border-color:#48c78e;color:#257953}.message.is-warning{background-color:#fffaeb}.message.is-warning .message-header{background-color:#ffe08a;color:rgba(0,0,0,.7)}.message.is-warning .message-body{border-color:#ffe08a;color:#946c00}.message.is-danger{background-color:#feecf0}.message.is-danger .message-header{background-color:#f14668;color:#fff}.message.is-danger .message-body{border-color:#f14668;color:#cc0f35}.message-header{-ms-flex-align:center;align-items:center;background-color:#4a4a4a;border-radius:4px 4px 0 0;color:#fff;display:-ms-flexbox;display:flex;font-weight:700;-ms-flex-pack:justify;justify-content:space-between;line-height:1.25;padding:.75em 1em;position:relative}.message-header .delete{-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;margin-left:.75em}.message-header+.message-body{border-width:0;border-top-left-radius:0;border-top-right-radius:0}.message-body{border-color:#dbdbdb;border-radius:4px;border-style:solid;border-width:0 0 0 4px;color:#4a4a4a;padding:1.25em 1.5em}.message-body code,.message-body pre{background-color:#fff}.message-body pre code{background-color:transparent}.modal{-ms-flex-align:center;align-items:center;display:none;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;overflow:hidden;position:fixed;z-index:10}.modal.is-active{display:-ms-flexbox;display:flex}.navbar{background-color:#fff;min-height:3.25rem;position:relative;z-index:9}.navbar.is-light{background-color:#f5f5f5}.navbar.is-light,.navbar.is-light .navbar-brand .navbar-link,.navbar.is-light .navbar-brand>.navbar-item{color:rgba(0,0,0,.7)}.navbar.is-light .navbar-brand .navbar-link.is-active,.navbar.is-light .navbar-brand .navbar-link:focus,.navbar.is-light .navbar-brand .navbar-link:hover,.navbar.is-light .navbar-brand>a.navbar-item.is-active,.navbar.is-light .navbar-brand>a.navbar-item:focus,.navbar.is-light .navbar-brand>a.navbar-item:hover{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-brand .navbar-link:after{border-color:rgba(0,0,0,.7)}.navbar.is-light .navbar-burger{color:rgba(0,0,0,.7)}@media screen and (min-width:1024px){.navbar.is-light .navbar-end .navbar-link,.navbar.is-light .navbar-end>.navbar-item,.navbar.is-light .navbar-start .navbar-link,.navbar.is-light .navbar-start>.navbar-item{color:rgba(0,0,0,.7)}.navbar.is-light .navbar-end .navbar-link.is-active,.navbar.is-light .navbar-end .navbar-link:focus,.navbar.is-light .navbar-end .navbar-link:hover,.navbar.is-light .navbar-end>a.navbar-item.is-active,.navbar.is-light .navbar-end>a.navbar-item:focus,.navbar.is-light .navbar-end>a.navbar-item:hover,.navbar.is-light .navbar-start .navbar-link.is-active,.navbar.is-light .navbar-start .navbar-link:focus,.navbar.is-light .navbar-start .navbar-link:hover,.navbar.is-light .navbar-start>a.navbar-item.is-active,.navbar.is-light .navbar-start>a.navbar-item:focus,.navbar.is-light .navbar-start>a.navbar-item:hover{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-end .navbar-link:after,.navbar.is-light .navbar-start .navbar-link:after{border-color:rgba(0,0,0,.7)}.navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-light .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-light .navbar-item.has-dropdown:hover .navbar-link{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:rgba(0,0,0,.7)}}.navbar.is-primary{background-color:#00d1b2;color:#fff}.navbar.is-primary .navbar-brand .navbar-link,.navbar.is-primary .navbar-brand>.navbar-item{color:#fff}.navbar.is-primary .navbar-brand .navbar-link.is-active,.navbar.is-primary .navbar-brand .navbar-link:focus,.navbar.is-primary .navbar-brand .navbar-link:hover,.navbar.is-primary .navbar-brand>a.navbar-item.is-active,.navbar.is-primary .navbar-brand>a.navbar-item:focus,.navbar.is-primary .navbar-brand>a.navbar-item:hover{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-brand .navbar-link:after{border-color:#fff}.navbar.is-primary .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-primary .navbar-end .navbar-link,.navbar.is-primary .navbar-end>.navbar-item,.navbar.is-primary .navbar-start .navbar-link,.navbar.is-primary .navbar-start>.navbar-item{color:#fff}.navbar.is-primary .navbar-end .navbar-link.is-active,.navbar.is-primary .navbar-end .navbar-link:focus,.navbar.is-primary .navbar-end .navbar-link:hover,.navbar.is-primary .navbar-end>a.navbar-item.is-active,.navbar.is-primary .navbar-end>a.navbar-item:focus,.navbar.is-primary .navbar-end>a.navbar-item:hover,.navbar.is-primary .navbar-start .navbar-link.is-active,.navbar.is-primary .navbar-start .navbar-link:focus,.navbar.is-primary .navbar-start .navbar-link:hover,.navbar.is-primary .navbar-start>a.navbar-item.is-active,.navbar.is-primary .navbar-start>a.navbar-item:focus,.navbar.is-primary .navbar-start>a.navbar-item:hover{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-end .navbar-link:after,.navbar.is-primary .navbar-start .navbar-link:after{border-color:#fff}.navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-dropdown a.navbar-item.is-active{background-color:#00d1b2;color:#fff}}.navbar.is-info{background-color:#3e8ed0;color:#fff}.navbar.is-info .navbar-brand .navbar-link,.navbar.is-info .navbar-brand>.navbar-item{color:#fff}.navbar.is-info .navbar-brand .navbar-link.is-active,.navbar.is-info .navbar-brand .navbar-link:focus,.navbar.is-info .navbar-brand .navbar-link:hover,.navbar.is-info .navbar-brand>a.navbar-item.is-active,.navbar.is-info .navbar-brand>a.navbar-item:focus,.navbar.is-info .navbar-brand>a.navbar-item:hover{background-color:#3082c5;color:#fff}.navbar.is-info .navbar-brand .navbar-link:after{border-color:#fff}.navbar.is-info .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-info .navbar-end .navbar-link,.navbar.is-info .navbar-end>.navbar-item,.navbar.is-info .navbar-start .navbar-link,.navbar.is-info .navbar-start>.navbar-item{color:#fff}.navbar.is-info .navbar-end .navbar-link.is-active,.navbar.is-info .navbar-end .navbar-link:focus,.navbar.is-info .navbar-end .navbar-link:hover,.navbar.is-info .navbar-end>a.navbar-item.is-active,.navbar.is-info .navbar-end>a.navbar-item:focus,.navbar.is-info .navbar-end>a.navbar-item:hover,.navbar.is-info .navbar-start .navbar-link.is-active,.navbar.is-info .navbar-start .navbar-link:focus,.navbar.is-info .navbar-start .navbar-link:hover,.navbar.is-info .navbar-start>a.navbar-item.is-active,.navbar.is-info .navbar-start>a.navbar-item:focus,.navbar.is-info .navbar-start>a.navbar-item:hover{background-color:#3082c5;color:#fff}.navbar.is-info .navbar-end .navbar-link:after,.navbar.is-info .navbar-start .navbar-link:after{border-color:#fff}.navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-info .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-info .navbar-item.has-dropdown:hover .navbar-link{background-color:#3082c5;color:#fff}.navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#3e8ed0;color:#fff}}.navbar.is-success{background-color:#48c78e;color:#fff}.navbar.is-success .navbar-brand .navbar-link,.navbar.is-success .navbar-brand>.navbar-item{color:#fff}.navbar.is-success .navbar-brand .navbar-link.is-active,.navbar.is-success .navbar-brand .navbar-link:focus,.navbar.is-success .navbar-brand .navbar-link:hover,.navbar.is-success .navbar-brand>a.navbar-item.is-active,.navbar.is-success .navbar-brand>a.navbar-item:focus,.navbar.is-success .navbar-brand>a.navbar-item:hover{background-color:#3abb81;color:#fff}.navbar.is-success .navbar-brand .navbar-link:after{border-color:#fff}.navbar.is-success .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-success .navbar-end .navbar-link,.navbar.is-success .navbar-end>.navbar-item,.navbar.is-success .navbar-start .navbar-link,.navbar.is-success .navbar-start>.navbar-item{color:#fff}.navbar.is-success .navbar-end .navbar-link.is-active,.navbar.is-success .navbar-end .navbar-link:focus,.navbar.is-success .navbar-end .navbar-link:hover,.navbar.is-success .navbar-end>a.navbar-item.is-active,.navbar.is-success .navbar-end>a.navbar-item:focus,.navbar.is-success .navbar-end>a.navbar-item:hover,.navbar.is-success .navbar-start .navbar-link.is-active,.navbar.is-success .navbar-start .navbar-link:focus,.navbar.is-success .navbar-start .navbar-link:hover,.navbar.is-success .navbar-start>a.navbar-item.is-active,.navbar.is-success .navbar-start>a.navbar-item:focus,.navbar.is-success .navbar-start>a.navbar-item:hover{background-color:#3abb81;color:#fff}.navbar.is-success .navbar-end .navbar-link:after,.navbar.is-success .navbar-start .navbar-link:after{border-color:#fff}.navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-success .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-success .navbar-item.has-dropdown:hover .navbar-link{background-color:#3abb81;color:#fff}.navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#48c78e;color:#fff}}.navbar.is-warning{background-color:#ffe08a}.navbar.is-warning,.navbar.is-warning .navbar-brand .navbar-link,.navbar.is-warning .navbar-brand>.navbar-item{color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-brand .navbar-link.is-active,.navbar.is-warning .navbar-brand .navbar-link:focus,.navbar.is-warning .navbar-brand .navbar-link:hover,.navbar.is-warning .navbar-brand>a.navbar-item.is-active,.navbar.is-warning .navbar-brand>a.navbar-item:focus,.navbar.is-warning .navbar-brand>a.navbar-item:hover{background-color:#ffd970;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-brand .navbar-link:after{border-color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-burger{color:rgba(0,0,0,.7)}@media screen and (min-width:1024px){.navbar.is-warning .navbar-end .navbar-link,.navbar.is-warning .navbar-end>.navbar-item,.navbar.is-warning .navbar-start .navbar-link,.navbar.is-warning .navbar-start>.navbar-item{color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-end .navbar-link.is-active,.navbar.is-warning .navbar-end .navbar-link:focus,.navbar.is-warning .navbar-end .navbar-link:hover,.navbar.is-warning .navbar-end>a.navbar-item.is-active,.navbar.is-warning .navbar-end>a.navbar-item:focus,.navbar.is-warning .navbar-end>a.navbar-item:hover,.navbar.is-warning .navbar-start .navbar-link.is-active,.navbar.is-warning .navbar-start .navbar-link:focus,.navbar.is-warning .navbar-start .navbar-link:hover,.navbar.is-warning .navbar-start>a.navbar-item.is-active,.navbar.is-warning .navbar-start>a.navbar-item:focus,.navbar.is-warning .navbar-start>a.navbar-item:hover{background-color:#ffd970;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-end .navbar-link:after,.navbar.is-warning .navbar-start .navbar-link:after{border-color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link{background-color:#ffd970;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#ffe08a;color:rgba(0,0,0,.7)}}.navbar.is-danger{background-color:#f14668;color:#fff}.navbar.is-danger .navbar-brand .navbar-link,.navbar.is-danger .navbar-brand>.navbar-item{color:#fff}.navbar.is-danger .navbar-brand .navbar-link.is-active,.navbar.is-danger .navbar-brand .navbar-link:focus,.navbar.is-danger .navbar-brand .navbar-link:hover,.navbar.is-danger .navbar-brand>a.navbar-item.is-active,.navbar.is-danger .navbar-brand>a.navbar-item:focus,.navbar.is-danger .navbar-brand>a.navbar-item:hover{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-brand .navbar-link:after{border-color:#fff}.navbar.is-danger .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-danger .navbar-end .navbar-link,.navbar.is-danger .navbar-end>.navbar-item,.navbar.is-danger .navbar-start .navbar-link,.navbar.is-danger .navbar-start>.navbar-item{color:#fff}.navbar.is-danger .navbar-end .navbar-link.is-active,.navbar.is-danger .navbar-end .navbar-link:focus,.navbar.is-danger .navbar-end .navbar-link:hover,.navbar.is-danger .navbar-end>a.navbar-item.is-active,.navbar.is-danger .navbar-end>a.navbar-item:focus,.navbar.is-danger .navbar-end>a.navbar-item:hover,.navbar.is-danger .navbar-start .navbar-link.is-active,.navbar.is-danger .navbar-start .navbar-link:focus,.navbar.is-danger .navbar-start .navbar-link:hover,.navbar.is-danger .navbar-start>a.navbar-item.is-active,.navbar.is-danger .navbar-start>a.navbar-item:focus,.navbar.is-danger .navbar-start>a.navbar-item:hover{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-end .navbar-link:after,.navbar.is-danger .navbar-start .navbar-link:after{border-color:#fff}.navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#f14668;color:#fff}}.navbar>.container{-ms-flex-align:stretch;align-items:stretch;display:-ms-flexbox;display:flex;min-height:3.25rem;width:100%}.navbar.has-shadow{box-shadow:0 2px 0 0 #f5f5f5}.navbar-brand{-ms-flex-align:stretch;align-items:stretch;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0;min-height:3.25rem}.navbar-brand a.navbar-item:focus,.navbar-brand a.navbar-item:hover{background-color:transparent}.navbar-burger{color:#4a4a4a;-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;cursor:pointer;display:block;height:3.25rem;position:relative;width:3.25rem;margin-left:auto}.navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;transform-origin:center;transition-duration:86ms;transition-property:background-color,opacity,transform;transition-timing-function:ease-out;width:16px}.navbar-burger span:first-child{top:calc(50% - 6px)}.navbar-burger span:nth-child(2){top:calc(50% - 1px)}.navbar-burger span:nth-child(3){top:calc(50% + 4px)}.navbar-burger:hover{background-color:rgba(0,0,0,.05)}.navbar-burger.is-active span:first-child{transform:translateY(5px) rotate(45deg)}.navbar-burger.is-active span:nth-child(2){opacity:0}.navbar-burger.is-active span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}.navbar-menu{display:none}.navbar-item,.navbar-link{color:#4a4a4a;display:block;line-height:1.5;padding:.5rem .75rem;position:relative}.navbar-item .icon:only-child,.navbar-link .icon:only-child{margin-left:-.25rem;margin-right:-.25rem}.navbar-link,a.navbar-item{cursor:pointer}.navbar-link.is-active,.navbar-link:focus,.navbar-link:focus-within,.navbar-link:hover,a.navbar-item.is-active,a.navbar-item:focus,a.navbar-item:focus-within,a.navbar-item:hover{background-color:#fafafa;color:#485fc7}.navbar-item{-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0}.navbar-item img{max-height:1.75rem}.navbar-item.has-dropdown{padding:0}.navbar-item.is-expanded{-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1}.navbar-link:not(.is-arrowless){padding-right:2.5em}.navbar-link:not(.is-arrowless):after{border-color:#485fc7;margin-top:-.375em;right:1.125em}.navbar-dropdown{font-size:.875rem;padding-bottom:.5rem;padding-top:.5rem}.navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}@media screen and (max-width:1023px){.navbar>.container{display:block}.navbar-brand .navbar-item{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex}.navbar-link:after{display:none}.navbar-menu{background-color:#fff;box-shadow:0 8px 16px hsla(0,0%,4%,.1);padding:.5rem 0}.navbar-menu.is-active{display:block}}@media screen and (min-width:1024px){.navbar,.navbar-end,.navbar-menu,.navbar-start{-ms-flex-align:stretch;align-items:stretch;display:-ms-flexbox;display:flex}.navbar{min-height:3.25rem}.navbar.is-transparent .navbar-link.is-active,.navbar.is-transparent .navbar-link:focus,.navbar.is-transparent .navbar-link:hover,.navbar.is-transparent a.navbar-item.is-active,.navbar.is-transparent a.navbar-item:focus,.navbar.is-transparent a.navbar-item:hover{background-color:transparent!important}.navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link{background-color:transparent!important}.navbar.is-transparent .navbar-dropdown a.navbar-item:focus,.navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#485fc7}.navbar-burger{display:none}.navbar-item,.navbar-link{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex}.navbar-item.has-dropdown{-ms-flex-align:stretch;align-items:stretch}.navbar-item.is-active .navbar-dropdown,.navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar-item.is-hoverable:focus .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar-item.is-active .navbar-dropdown.is-boxed,.navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed{opacity:1;pointer-events:auto;transform:translateY(0)}.navbar-menu{-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0}.navbar-start{-ms-flex-pack:start;justify-content:flex-start;margin-right:auto}.navbar-end{-ms-flex-pack:end;justify-content:flex-end;margin-left:auto}.navbar-dropdown{background-color:#fff;border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top:2px solid #dbdbdb;box-shadow:0 8px 8px hsla(0,0%,4%,.1);display:none;font-size:.875rem;left:0;min-width:100%;position:absolute;top:100%;z-index:8}.navbar-dropdown .navbar-item{padding:.375rem 1rem;white-space:nowrap}.navbar-dropdown a.navbar-item{padding-right:3rem}.navbar-dropdown a.navbar-item:focus,.navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#485fc7}.navbar-dropdown.is-boxed{border-radius:6px;border-top:none;box-shadow:0 8px 8px hsla(0,0%,4%,.1),0 0 0 1px hsla(0,0%,4%,.1);display:block;opacity:0;pointer-events:none;top:calc(100% + -4px);transform:translateY(-5px);transition-duration:86ms;transition-property:opacity,transform}.container>.navbar .navbar-brand,.navbar>.container .navbar-brand{margin-left:-.75rem}.container>.navbar .navbar-menu,.navbar>.container .navbar-menu{margin-right:-.75rem}.navbar-link.is-active,a.navbar-item.is-active{color:#0a0a0a}.navbar-link.is-active:not(:focus):not(:hover),a.navbar-item.is-active:not(:focus):not(:hover){background-color:transparent}.navbar-item.has-dropdown.is-active .navbar-link,.navbar-item.has-dropdown:focus .navbar-link,.navbar-item.has-dropdown:hover .navbar-link{background-color:#fafafa}}.pagination{font-size:1rem;margin:-.25rem}.pagination.is-small{font-size:.75rem}.pagination.is-medium{font-size:1.25rem}.pagination.is-large{font-size:1.5rem}.pagination.is-rounded .pagination-link{border-radius:9999px}.pagination,.pagination-list{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex}.pagination,.pagination-link,.pagination-list{-ms-flex-pack:center;justify-content:center;text-align:center}.pagination-link{font-size:1em;margin:.25rem;padding-left:.5em;padding-right:.5em;border-color:#dbdbdb;color:#363636;min-width:2.5em}.pagination-link:hover{border-color:#b5b5b5;color:#363636}.pagination-link:focus{border-color:#485fc7}.pagination-link:active{box-shadow:inset 0 1px 2px hsla(0,0%,4%,.2)}.pagination-link.is-disabled,.pagination-link[disabled]{background-color:#dbdbdb;border-color:#dbdbdb;box-shadow:none;color:#7a7a7a;opacity:.5}.pagination-link.is-current{background-color:#485fc7;border-color:#485fc7;color:#fff}.pagination-list{-ms-flex-wrap:wrap;flex-wrap:wrap}.pagination-list li{list-style:none}@media screen and (max-width:768px){.pagination{-ms-flex-wrap:wrap;flex-wrap:wrap}.pagination-list li{-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1}}@media print,screen and (min-width:769px){.pagination-list{-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;-ms-flex-pack:start;justify-content:flex-start;-ms-flex-order:1;order:1}.pagination,.pagination-link{margin-bottom:0;margin-top:0}.pagination{-ms-flex-pack:justify;justify-content:space-between}.pagination.is-centered .pagination-list{-ms-flex-pack:center;justify-content:center;-ms-flex-order:2;order:2}}.panel{border-radius:6px;box-shadow:0 .5em 1em -.125em hsla(0,0%,4%,.1),0 0 0 1px hsla(0,0%,4%,.02);font-size:1rem}.panel:not(:last-child){margin-bottom:1.5rem}.panel-block:not(:last-child){border-bottom:1px solid #ededed}.panel-block{-ms-flex-align:center;align-items:center;color:#363636;display:-ms-flexbox;display:flex;-ms-flex-pack:start;justify-content:flex-start;padding:.5em .75em}.panel-block input[type=checkbox]{margin-right:.75em}.panel-block>.control{-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;width:100%}.panel-block.is-active{border-left-color:#485fc7;color:#363636}.panel-block:last-child{border-bottom-left-radius:6px;border-bottom-right-radius:6px}a.panel-block,label.panel-block{cursor:pointer}a.panel-block:hover,label.panel-block:hover{background-color:#f5f5f5}.tabs{-webkit-overflow-scrolling:touch;-ms-flex-align:stretch;align-items:stretch;font-size:1rem;-ms-flex-pack:justify;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}.tabs,.tabs a{display:-ms-flexbox;display:flex}.tabs a{-ms-flex-align:center;align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:1px;color:#4a4a4a;-ms-flex-pack:center;justify-content:center;margin-bottom:-1px;padding:.5em 1em;vertical-align:top}.tabs a:hover{border-bottom-color:#363636;color:#363636}.tabs li{display:block}.tabs li.is-active a{border-bottom-color:#485fc7;color:#485fc7}.tabs ul{-ms-flex-align:center;align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:1px;display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0;-ms-flex-pack:start;justify-content:flex-start}.tabs ul.is-left{padding-right:.75em}.tabs .icon:first-child{margin-right:.5em}.tabs .icon:last-child{margin-left:.5em}.tabs.is-centered ul{-ms-flex-pack:center;justify-content:center}.tabs.is-boxed a{border:1px solid transparent;border-radius:4px 4px 0 0}.tabs.is-boxed a:hover{background-color:#f5f5f5;border-bottom-color:#dbdbdb}.tabs.is-boxed li.is-active a{background-color:#fff;border-color:#dbdbdb;border-bottom-color:transparent!important}.tabs.is-fullwidth li{-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0}.tabs.is-small{font-size:.75rem}.tabs.is-medium{font-size:1.25rem}.tabs.is-large{font-size:1.5rem}.column{display:block;-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;padding:.75rem}@media print,screen and (min-width:769px){.column.is-narrow{-ms-flex:none;flex:none;width:unset}.column.is-1{-ms-flex:none;flex:none;width:8.33333337%}.column.is-2{-ms-flex:none;flex:none;width:16.66666674%}.column.is-3{-ms-flex:none;flex:none;width:25%}.column.is-4{-ms-flex:none;flex:none;width:33.33333337%}.column.is-5{-ms-flex:none;flex:none;width:41.66666674%}.column.is-6{-ms-flex:none;flex:none;width:50%}}.columns{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.columns:last-child{margin-bottom:-.75rem}.columns:not(:last-child){margin-bottom:0.75rem}.columns.is-centered{-ms-flex-pack:center;justify-content:center}@media print,screen and (min-width:769px){.columns:not(.is-desktop){display:-ms-flexbox;display:flex}}.tile{-ms-flex-align:stretch;align-items:stretch;display:block;-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;min-height:-moz-min-content;min-height:min-content}.tile.is-ancestor{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.tile.is-ancestor:last-child{margin-bottom:-.75rem}.tile.is-ancestor:not(:last-child){margin-bottom:.75rem}.tile.is-child{margin:0!important}.tile.is-parent{padding:.75rem}@media print,screen and (min-width:769px){.tile:not(.is-child){display:-ms-flexbox;display:flex}.tile.is-1{width:8.33333337%}.tile.is-1,.tile.is-2{-ms-flex:none;flex:none}.tile.is-2{width:16.66666674%}.tile.is-3{width:25%}.tile.is-3,.tile.is-4{-ms-flex:none;flex:none}.tile.is-4{width:33.33333337%}.tile.is-5{width:41.66666674%}.tile.is-5,.tile.is-6{-ms-flex:none;flex:none}.tile.is-6{width:50%}}.has-background-white{background-color:#fff!important}.has-text-light{color:#f5f5f5!important}a.has-text-light:focus,a.has-text-light:hover{color:#dbdbdb!important}.has-text-dark{color:#363636!important}a.has-text-dark:focus,a.has-text-dark:hover{color:#1c1c1c!important}.has-text-link{color:#485fc7!important}a.has-text-link:focus,a.has-text-link:hover{color:#3449a8!important}.has-text-info{color:#3e8ed0!important}a.has-text-info:focus,a.has-text-info:hover{color:#2b74b1!important}.has-background-info{background-color:#3e8ed0!important}.has-text-success{color:#48c78e!important}a.has-text-success:focus,a.has-text-success:hover{color:#34a873!important}.has-text-warning{color:#ffe08a!important}a.has-text-warning:focus,a.has-text-warning:hover{color:#ffd257!important}.has-text-danger{color:#f14668!important}a.has-text-danger:focus,a.has-text-danger:hover{color:#ee1742!important}.has-background-grey-dark{background-color:#4a4a4a!important}.has-text-grey{color:#7a7a7a!important}.has-text-grey-light{color:#b5b5b5!important}.has-background-white-ter{background-color:#f5f5f5!important}.is-flex-direction-column{-ms-flex-direction:column!important;flex-direction:column!important}.is-justify-content-space-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.is-justify-content-start{-ms-flex-pack:start!important;justify-content:start!important}.is-justify-content-left{-ms-flex-pack:left!important;justify-content:left!important}.is-align-items-center{-ms-flex-align:center!important;align-items:center!important}.is-align-items-start{-ms-flex-align:start!important;align-items:start!important}.is-flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.is-flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.is-flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.is-pulled-right{float:right!important}.is-relative{position:relative!important}.mr-0{margin-right:0!important}.mb-0{margin-bottom:0!important}.mt-1{margin-top:.25rem!important}.mr-1{margin-right:.25rem!important}.mb-1{margin-bottom:.25rem!important}.mt-2{margin-top:.5rem!important}.mb-2{margin-bottom:.5rem!important}.ml-2{margin-left:.5rem!important}.m-3{margin:.75rem!important}.mt-3{margin-top:.75rem!important}.mr-3{margin-right:.75rem!important}.mb-3{margin-bottom:.75rem!important}.ml-3,.mx-3{margin-left:.75rem!important}.mx-3{margin-right:.75rem!important}.my-3{margin-top:.75rem!important;margin-bottom:.75rem!important}.mt-4{margin-top:1rem!important}.mb-4{margin-bottom:1rem!important}.m-5{margin:1.5rem!important}.mt-5{margin-top:1.5rem!important}.mr-5{margin-right:1.5rem!important}.mb-5{margin-bottom:1.5rem!important}.ml-5,.mx-5{margin-left:1.5rem!important}.mx-5{margin-right:1.5rem!important}.my-5{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.p-0{padding:0!important}.px-0{padding-left:0!important;padding-right:0!important}.px-1{padding-left:.25rem!important;padding-right:.25rem!important}.p-3{padding:.75rem!important}.pb-3{padding-bottom:.75rem!important}.px-3{padding-left:.75rem!important;padding-right:.75rem!important}.pt-5{padding-top:1.5rem!important}.pb-5{padding-bottom:1.5rem!important}.has-text-centered{text-align:center!important}.has-text-right{text-align:right!important}.is-italic{font-style:italic!important}.has-text-weight-light{font-weight:300!important}.has-text-weight-normal{font-weight:400!important}.is-family-code{font-family:monospace!important}.is-block{display:block!important}.is-flex{display:-ms-flexbox!important;display:flex!important}.is-inline{display:inline!important}.is-inline-block{display:inline-block!important}.is-hidden{display:none!important}.section{padding:3rem 1.5rem}@media screen and (min-width:1024px){.section{padding:3rem}.section.is-medium{padding:9rem 4.5rem}.section.is-large{padding:18rem 6rem}}.footer{background-color:#fafafa;padding:3rem 1.5rem 6rem}.switch[type=checkbox]{outline:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:inline-block;position:absolute;opacity:0}.switch[type=checkbox]:focus+label:after,.switch[type=checkbox]:focus+label:before{outline:1px dotted #b5b5b5}.switch[type=checkbox][disabled]{cursor:not-allowed}.switch[type=checkbox][disabled]+label,.switch[type=checkbox][disabled]+label:after,.switch[type=checkbox][disabled]+label:before{opacity:.5}.switch[type=checkbox][disabled]+label:hover{cursor:not-allowed}.switch[type=checkbox]+label{position:relative;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:start;justify-content:flex-start;font-size:1rem;height:2.5em;line-height:1.5;padding-left:3.5rem;padding-top:.2rem;cursor:pointer}.switch[type=checkbox]+label:before{position:absolute;display:block;top:calc(50% - 1.5rem * .5);left:0;width:3rem;height:1.5rem;border:.1rem solid transparent;border-radius:4px;background:#b5b5b5;content:""}.switch[type=checkbox]+label:after{display:block;position:absolute;top:calc(50% - 1rem * .5);left:.25rem;width:1rem;height:1rem;transform:translateZ(0);border-radius:4px;background:#fff;transition:all .25s ease-out;content:""}.switch[type=checkbox]:checked+label:before{background:#00d1b2}.switch[type=checkbox]:checked+label:after{left:1.625rem}.switch[type=checkbox].is-rounded+label:before{border-radius:24px}.switch[type=checkbox].is-rounded+label:after{border-radius:50%}.switch[type=checkbox].is-small+label{position:relative;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:start;justify-content:flex-start;font-size:.75rem;height:2.5em;line-height:1.5;padding-left:2.75rem;padding-top:.2rem;cursor:pointer}.switch[type=checkbox].is-small+label:before{position:absolute;display:block;top:calc(50% - 1.125rem * .5);left:0;width:2.25rem;height:1.125rem;border:.1rem solid transparent;border-radius:4px;background:#b5b5b5;content:""}.switch[type=checkbox].is-small+label:after{display:block;position:absolute;top:calc(50% - .625rem * .5);left:.25rem;width:.625rem;height:.625rem;transform:translateZ(0);border-radius:4px;background:#fff;transition:all .25s ease-out;content:""}.switch[type=checkbox].is-small:checked+label:before{background:#00d1b2}.switch[type=checkbox].is-small:checked+label:after{left:1.25rem}.switch[type=checkbox].is-small.is-rounded+label:before{border-radius:24px}.switch[type=checkbox].is-small.is-rounded+label:after{border-radius:50%}.switch[type=checkbox].is-medium+label{position:relative;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:start;justify-content:flex-start;font-size:1.25rem;height:2.5em;line-height:1.5;padding-left:4.25rem;padding-top:.2rem;cursor:pointer}.switch[type=checkbox].is-medium+label:before{position:absolute;display:block;top:calc(50% - 1.875rem * .5);left:0;width:3.75rem;height:1.875rem;border:.1rem solid transparent;border-radius:4px;background:#b5b5b5;content:""}.switch[type=checkbox].is-medium+label:after{display:block;position:absolute;top:calc(50% - 1.375rem * .5);left:.25rem;width:1.375rem;height:1.375rem;transform:translateZ(0);border-radius:4px;background:#fff;transition:all .25s ease-out;content:""}.switch[type=checkbox].is-medium:checked+label:before{background:#00d1b2}.switch[type=checkbox].is-medium:checked+label:after{left:2rem}.switch[type=checkbox].is-medium.is-rounded+label:before{border-radius:24px}.switch[type=checkbox].is-medium.is-rounded+label:after{border-radius:50%}.switch[type=checkbox].is-large+label{position:relative;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:start;justify-content:flex-start;font-size:1.5rem;height:2.5em;line-height:1.5;padding-left:5rem;padding-top:.2rem;cursor:pointer}.switch[type=checkbox].is-large+label:before{position:absolute;display:block;top:calc(50% - 2.25rem * .5);left:0;width:4.5rem;height:2.25rem;border:.1rem solid transparent;border-radius:4px;background:#b5b5b5;content:""}.switch[type=checkbox].is-large+label:after{display:block;position:absolute;top:calc(50% - 1.75rem * .5);left:.25rem;width:1.75rem;height:1.75rem;transform:translateZ(0);border-radius:4px;background:#fff;transition:all .25s ease-out;content:""}.switch[type=checkbox].is-large:checked+label:before{background:#00d1b2}.switch[type=checkbox].is-large:checked+label:after{left:2.375rem}.switch[type=checkbox].is-large.is-rounded+label:before{border-radius:24px}.switch[type=checkbox].is-large.is-rounded+label:after{border-radius:50%}.switch[type=checkbox].is-light:checked+label:before{background:#f5f5f5}.switch[type=checkbox].is-primary:checked+label:before{background:#00d1b2}.switch[type=checkbox].is-info:checked+label:before{background:#3e8ed0}.switch[type=checkbox].is-success:checked+label:before{background:#48c78e}.switch[type=checkbox].is-warning:checked+label:before{background:#ffe08a}.switch[type=checkbox].is-danger:checked+label:before{background:#f14668}.field-body .switch[type=checkbox]+label{margin-top:.375em}[data-tooltip]:not(.is-disabled),[data-tooltip]:not(.is-loading),[data-tooltip]:not([disabled]){cursor:pointer;overflow:visible;position:relative}[data-tooltip]:not(.is-disabled):after,[data-tooltip]:not(.is-disabled):before,[data-tooltip]:not(.is-loading):after,[data-tooltip]:not(.is-loading):before,[data-tooltip]:not([disabled]):after,[data-tooltip]:not([disabled]):before{box-sizing:border-box;color:#fff;display:inline-block;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Lucida Sans Unicode,Lucida Grande,Arial,sans-serif;font-size:.75rem;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;opacity:0;overflow:hidden;pointer-events:none;position:absolute;visibility:hidden;z-index:12}[data-tooltip]:not(.is-disabled):after,[data-tooltip]:not(.is-loading):after,[data-tooltip]:not([disabled]):after{content:"";border-style:solid;border-width:6px;margin-bottom:-5px;top:0;right:auto;bottom:auto;left:50%;margin:-5px auto auto -5px;border-color:rgba(74,74,74,.9) transparent transparent}[data-tooltip]:not(.is-disabled):before,[data-tooltip]:not(.is-loading):before,[data-tooltip]:not([disabled]):before{background:rgba(74,74,74,.9);border-radius:2px;content:attr(data-tooltip);padding:.5rem 1rem;text-overflow:ellipsis;white-space:pre;right:auto;bottom:auto;left:50%;top:0;margin-top:-5px;margin-bottom:auto;transform:translate(-50%,-100%)}[data-tooltip]:not(.is-disabled).has-tooltip-multiline:before,[data-tooltip]:not(.is-loading).has-tooltip-multiline:before,[data-tooltip]:not([disabled]).has-tooltip-multiline:before{height:auto;width:15rem;max-width:15rem;text-overflow:clip;white-space:normal;word-break:keep-all}[data-tooltip]:not(.is-disabled):focus:after,[data-tooltip]:not(.is-disabled):focus:before,[data-tooltip]:not(.is-disabled):hover:after,[data-tooltip]:not(.is-disabled):hover:before,[data-tooltip]:not(.is-loading):focus:after,[data-tooltip]:not(.is-loading):focus:before,[data-tooltip]:not(.is-loading):hover:after,[data-tooltip]:not(.is-loading):hover:before,[data-tooltip]:not([disabled]):focus:after,[data-tooltip]:not([disabled]):focus:before,[data-tooltip]:not([disabled]):hover:after,[data-tooltip]:not([disabled]):hover:before{opacity:1;visibility:visible}.fa{font-family:var(--fa-style-family,"Font Awesome 6 Free");font-weight:var(--fa-style,900)}.fa,.fa-brands,.fa-classic,.fa-regular,.fa-sharp,.fa-solid,.fab,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display,inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-classic,.fa-regular,.fa-solid,.far,.fas{font-family:Font Awesome\ 6 Free}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.0833333337em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.0714285718em;vertical-align:.0535714295em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.0416666682em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}@font-face{font-family:Font Awesome\ 6 Brands;font-style:normal;font-weight:400;font-display:block;src:url(/static/fonts/fontawesome/webfonts/fa-brands-400.woff2) format("woff2"),url(/static/fonts/fontawesome/webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:Font Awesome\ 6 Free;font-style:normal;font-weight:900;font-display:block;src:url(/static/fonts/fontawesome/webfonts/fa-solid-900.woff2) format("woff2"),url(/static/fonts/fontawesome/webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:Font Awesome\ 6 Free;font-style:normal;font-weight:400;font-display:block;src:url(/static/fonts/fontawesome/webfonts/fa-regular-400.woff2) format("woff2"),url(/static/fonts/fontawesome/webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-weight:400}.fa-regular,.fa-solid,.far,.fas{font-family:Font Awesome\ 6 Free}.fa-solid,.fas{font-weight:900}.fa-brands,.fab{font-family:Font Awesome\ 6 Brands;font-weight:400}.fa-2_3x{font-size:2.3em}.fa-magnifying-glass:before{content:"\f002"}.fa-pen-to-square:before{content:"\f044"}.fa-trash:before{content:"\f1f8"}.fa-delete-left:before{content:"\f55a"}.fa-sort:before{content:"\f0dc"}.fa-terminal:before{content:"\f120"}.fa-list:before{content:"\f03a"}.fa-ban:before{content:"\f05e"}.fa-toggle-on:before{content:"\f205"}.fa-toggle-off:before{content:"\f204"}.fa-circle-play:before{content:"\f144"}.fa-plus:before{content:"\+"}.fa-rotate:before{content:"\f2f1"}.fa-copy:before{content:"\f0c5"}.fa-download:before{content:"\f019"}.fa-check:before{content:"\f00c"}.fa-circle-info:before{content:"\f05a"}.fa-file-arrow-down:before{content:"\f56d"}.fa-angle-right:before{content:"\f105"}.fa-circle-check:before{content:"\f058"}.fa-circle-xmark:before{content:"\f057"}.fa-circle-notch:before{content:"\f1ce"}.fa-circle-stop:before{content:"\f28d"}.fa-circle-pause:before{content:"\f28b"}.fa-circle-question:before{content:"\f059"}.fa-calendar:before{content:"\f133"}.fa-arrow-up-right-from-square:before{content:"\f08e"}.fa-eye-slash:before{content:"\f070"}.fa-eye:before{content:"\f06e"}.fa-users:before{content:"\f0c0"}.fa-right-to-bracket:before{content:"\f2f6"}.fa-angle-down:before{content:"\f107"}.fa-triangle-exclamation:before{content:"\f071"}.CodeMirror{font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor-mark{background-color:rgba(20,255,20,.5);animation:c 1.06s steps(1) infinite}.cm-animate-fat-cursor{width:auto;border:0;animation:c 1.06s steps(1) infinite;background-color:#7e7}@keyframes c{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:0;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:blue}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-invalidchar,.cm-s-default .cm-error{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-30px;margin-right:-30px;padding-bottom:30px;height:100%;outline:none;position:relative}.CodeMirror-sizer{position:relative;border-right:30px solid transparent}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{position:absolute;z-index:5;display:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-30px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}.CodeMirror-focused div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:none}.cm-s-ttcn.CodeMirror{background:#f5f2f0;color:#000}.cm-s-ttcn .CodeMirror-overlayscroll-vertical{width:8px;transition:width .15s linear}.cm-s-ttcn .CodeMirror-overlayscroll-vertical>div{background:rgba(0,0,0,.4)}.cm-s-ttcn .CodeMirror-overlayscroll-vertical:hover{width:12px}.cm-s-ttcn .CodeMirror-overlayscroll-vertical:hover>div{border-radius:6px}.cm-s-ttcn .CodeMirror-gutters{border-right:1px solid #999}.cm-s-ttcn .CodeMirror-gutter,.cm-s-ttcn .CodeMirror-linenumbers{width:1.4em;background:#f5f2f0;padding-right:.8em}.cm-s-ttcn pre.CodeMirror-line,.cm-s-ttcn pre.CodeMirror-line-like{padding:0 .8em}.cm-s-ttcn .cm-quote{color:#090}.cm-s-ttcn .cm-header,.cm-strong{font-weight:700}.cm-s-ttcn .cm-header{color:#00f;font-weight:700}.cm-s-ttcn .cm-atom{color:#905}.cm-s-ttcn .cm-attribute{color:#690}.cm-s-ttcn .cm-bracket{color:#997}.cm-s-ttcn .cm-comment{color:#333}.cm-s-ttcn .cm-def{color:#00f}.cm-s-ttcn .cm-em{font-style:italic}.cm-s-ttcn .cm-error{color:red}.cm-s-ttcn .cm-hr{color:#999}.cm-s-ttcn .cm-keyword{color:#07a}.cm-s-ttcn .cm-link{color:#00c;text-decoration:underline}.cm-s-ttcn .cm-meta{color:#555}.cm-s-ttcn .cm-negative{color:#d44}.cm-s-ttcn .cm-positive{color:#292}.cm-s-ttcn .cm-qualifier{color:#555}.cm-s-ttcn .cm-strikethrough{text-decoration:line-through}.cm-s-ttcn .cm-string{color:#690}.cm-s-ttcn .cm-string-2{color:#f50}.cm-s-ttcn .cm-strong{font-weight:700}.cm-s-ttcn .cm-tag{color:#170}.cm-s-ttcn .cm-variable{color:#8b2252}.cm-s-ttcn .cm-variable-2{color:#05a}.cm-s-ttcn .cm-type,.cm-s-ttcn .cm-variable-3{color:#085}.cm-s-ttcn .cm-invalidchar{color:red}.cm-s-ttcn .cm-operator{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.cm-s-ttcn .cm-accessTypes,.cm-s-ttcn .cm-compareTypes{color:#27408b}.cm-s-ttcn .cm-cmipVerbs{color:#8b2252}.cm-s-ttcn .cm-modifier{color:#d2691e}.cm-s-ttcn .cm-status{color:#8b4545}.cm-s-ttcn .cm-storage{color:#a020f0}.cm-s-ttcn .cm-tags{color:#006400}.cm-s-ttcn .cm-externalCommands{color:#8b4545;font-weight:700}.cm-s-ttcn .cm-fileNCtrlMaskOptions,.cm-s-ttcn .cm-sectionTitle{color:#2e8b57;font-weight:700}.cm-s-ttcn .cm-booleanConsts,.cm-s-ttcn .cm-otherConsts,.cm-s-ttcn .cm-verdictConsts{color:#006400}.cm-s-ttcn .cm-configOps,.cm-s-ttcn .cm-functionOps,.cm-s-ttcn .cm-portOps,.cm-s-ttcn .cm-sutOps,.cm-s-ttcn .cm-timerOps,.cm-s-ttcn .cm-verdictOps{color:#00f}.cm-s-ttcn .cm-preprocessor,.cm-s-ttcn .cm-templateMatch,.cm-s-ttcn .cm-ttcn3Macros{color:#27408b}.cm-s-ttcn .cm-types{color:brown;font-weight:700}.cm-s-ttcn .cm-visibilityModifiers{font-weight:700}.CodeMirror-simplescroll-horizontal div,.CodeMirror-simplescroll-vertical div{position:absolute;background:#ccc;box-sizing:border-box;border:1px solid #bbb;border-radius:2px}.CodeMirror-simplescroll-horizontal,.CodeMirror-simplescroll-vertical{position:absolute;z-index:5;background:#eee}.CodeMirror-simplescroll-horizontal{bottom:0;left:0;height:8px}.CodeMirror-simplescroll-horizontal div{bottom:0;height:100%}.CodeMirror-simplescroll-vertical{right:0;top:0;width:8px}.CodeMirror-simplescroll-vertical div{right:0;width:100%}.CodeMirror-overlayscroll .CodeMirror-gutter-filler,.CodeMirror-overlayscroll .CodeMirror-scrollbar-filler{display:none}.CodeMirror-overlayscroll-horizontal div,.CodeMirror-overlayscroll-vertical div{position:absolute;background:#bcd;border-radius:3px}.CodeMirror-overlayscroll-horizontal,.CodeMirror-overlayscroll-vertical{position:absolute;z-index:5}.CodeMirror-overlayscroll-horizontal{bottom:0;left:0;height:6px}.CodeMirror-overlayscroll-horizontal div{bottom:0;height:100%}.CodeMirror-overlayscroll-vertical{right:0;top:0;width:6px}.CodeMirror-overlayscroll-vertical div{right:0;width:100%}.ss-wrapper{overflow:hidden;width:100%;height:100%;position:relative;z-index:1;float:left}.ss-content{height:calc(22px + 100%);width:calc(18px + 100%);padding:0;position:relative;overflow-x:scroll;overflow-y:scroll;box-sizing:border-box}.ss-scroll{top:0;right:0;padding-top:2px}.ss-hscroll,.ss-scroll{position:absolute;padding-right:2px;z-index:2;cursor:pointer;opacity:0;transition:opacity .25s linear .5s;padding-bottom:2px}.ss-hscroll{padding-left:2px;left:0;bottom:0}.ss-liner{background:rgba(0,0,0,.4);transition:background .25s linear;border-radius:4px;height:100%;width:100%}.ss-scroll .ss-liner{width:8px;transition:width .15s linear}.ss-hscroll .ss-liner{height:8px;transition:height .15s linear}.ss-grabbed .ss-liner,.ss-hscroll:hover .ss-liner,.ss-scroll:hover .ss-liner{background:rgba(0,0,0,.5);border-radius:6px}.ss-scroll.ss-grabbed .ss-liner,.ss-scroll:hover .ss-liner{width:12px}.ss-hscroll.ss-grabbed .ss-liner,.ss-hscroll:hover .ss-liner{height:12px}.ss-container.light .ss-liner{background:hsla(0,0%,100%,.4)}.ss-container.light .ss-grabbed .ss-liner,.ss-container.light .ss-hscroll:hover .ss-liner,.ss-container.light .ss-scroll:hover .ss-liner{background:hsla(0,0%,100%,.8)}.ss-hidden{display:none}.ss-container.ss-grabbed>.ss-wrapper>.ss-hscroll,.ss-container.ss-grabbed>.ss-wrapper>.ss-scroll,.ss-container:active>.ss-wrapper>.ss-hscroll,.ss-container:active>.ss-wrapper>.ss-scroll,.ss-container:hover>.ss-wrapper>.ss-hscroll,.ss-container:hover>.ss-wrapper>.ss-scroll{opacity:1;transition:opacity .25s linear 0s}.ss-grabbed{-o-user-select:none}.sp-wrapper,.ss-grabbed{-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none;user-select:none}.sp-wrapper{position:absolute;top:0;right:0;height:100%;width:0;opacity:0;transition:opacity .25s linear .5s}.sp-container:hover .sp-wrapper,.sp-wrapper>.sp-grabbed,.ss-grabbed~.sp-wrapper{opacity:1;transition:opacity .25s linear 0s}.sp-content{transform-origin:0 0}.sp-scroll{position:absolute;width:100%;background-image:linear-gradient(270deg,hsla(0,0%,100%,0),hsla(0,0%,100%,.2));opacity:0;left:-2px;transition:opacity .25s linear .5s;border-left:2px solid #e7db74}.sp-wrapper.sp-hover .sp-scroll,.sp-wrapper .sp-scroll.sp-grabbed,.sp-wrapper:hover .sp-scroll,.ss-scroll.ss-grabbed~.sp-wrapper .sp-scroll,.ss-scroll:hover~.sp-wrapper .sp-scroll{opacity:1;transition:opacity .25s linear 0s}.ss-content::-webkit-scrollbar{background-color:#fff;width:16px}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-]::-moz-selection,code[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}pre[class*=language-].line-numbers{position:relative;padding-left:3.8em;counter-reset:a}pre[class*=language-].line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:0;font-size:100%;left:-3.8em;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.line-numbers-rows>span{display:block;counter-increment:a}.line-numbers-rows>span:before{content:counter(a);color:#999;display:block;padding-right:.8em;text-align:right}.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,.08)}.flatpickr-calendar.inline,.flatpickr-calendar.open{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:13}.flatpickr-calendar.animate.open{animation:d .3s cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:11;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){box-shadow:none!important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasTime .dayContainer,.flatpickr-calendar .hasWeeks .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:after,.flatpickr-calendar:before{position:absolute;display:block;pointer-events:none;border:solid transparent;content:"";height:0;width:0;left:22px}.flatpickr-calendar.rightMost:after,.flatpickr-calendar.rightMost:before{left:auto;right:22px}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:after,.flatpickr-calendar.arrowTop:before{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:after,.flatpickr-calendar.arrowBottom:before{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,.9);fill:rgba(0,0,0,.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-next-month,.flatpickr-months .flatpickr-prev-month{text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,.9);fill:rgba(0,0,0,.9)}.flatpickr-months .flatpickr-next-month.flatpickr-disabled,.flatpickr-months .flatpickr-prev-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-next-month i,.flatpickr-months .flatpickr-prev-month i{position:relative}.flatpickr-months .flatpickr-next-month.flatpickr-prev-month,.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month{left:0}.flatpickr-months .flatpickr-next-month.flatpickr-next-month,.flatpickr-months .flatpickr-prev-month.flatpickr-next-month{right:0}.flatpickr-months .flatpickr-next-month:hover,.flatpickr-months .flatpickr-prev-month:hover{color:#959ea9}.flatpickr-months .flatpickr-next-month:hover svg,.flatpickr-months .flatpickr-prev-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-next-month svg,.flatpickr-months .flatpickr-prev-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-next-month svg path,.flatpickr-months .flatpickr-prev-month svg path{transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-inner-spin-button,.numInputWrapper input::-webkit-outer-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,.15);box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,.1)}.numInputWrapper span:active{background:rgba(0,0,0,.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,.5)}.numInputWrapper:hover{background:rgba(0,0,0,.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0;line-height:1;height:34px;display:inline-block;text-align:center;transform:translateZ(0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,.9)}.flatpickr-current-month input.cur-year{background:transparent;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:active,.flatpickr-current-month .flatpickr-monthDropdown-months:focus{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,.54);line-height:1;margin:0;text-align:center;display:block;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:flex;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;justify-content:space-around;transform:translateZ(0);opacity:1}.dayContainer+.dayContainer{box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day.nextMonthDay:focus,.flatpickr-day.nextMonthDay:hover,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.today.inRange,.flatpickr-day:focus,.flatpickr-day:hover{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:focus,.flatpickr-day.today:hover{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.endRange,.flatpickr-day.endRange.inRange,.flatpickr-day.endRange.nextMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.endRange:focus,.flatpickr-day.endRange:hover,.flatpickr-day.selected,.flatpickr-day.selected.inRange,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.selected:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange,.flatpickr-day.startRange.inRange,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.startRange:focus,.flatpickr-day.startRange:hover{background:#569ff7;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.endRange.startRange,.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.endRange.endRange,.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.endRange.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.selected.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange+.endRange:not(:nth-child(7n+1)){box-shadow:-10px 0 0 #569ff7}.flatpickr-day.endRange.startRange.endRange,.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.nextMonthDay,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.prevMonthDay{color:rgba(57,57,57,.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,.1)}.flatpickr-day.week.selected{border-radius:0;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-ms-flexbox;display:flex;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;box-sizing:border-box;overflow:hidden;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:700}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-am-pm,.flatpickr-time .flatpickr-time-separator{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:700;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time .flatpickr-am-pm:focus,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time input:hover{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@keyframes d{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}.table.sort tr>th{cursor:pointer}.column{min-width:0}.atlas-navbar{padding:16px 0}.atlas-navbar .navbar-brand{margin-left:0!important}.atlas-navbar .navbar-brand a{padding-top:0;padding-bottom:0}.atlas-navbar .navbar-brand a img{max-height:50px;height:50px}.atlas-navbar .has-dropdown .navbar-link:hover,.atlas-navbar a.navbar-item:hover{color:#363636}@media screen and (min-width:1024px){.atlas-navbar .navbar-start{padding-top:0!important}}@media screen and (min-width:1024px){.hide-desktop{display:none!important}}#search-form{position:relative}#search-results{position:absolute;top:50px;left:0;min-width:100%;min-width:max(50vw,100%);max-width:800px;display:none;border-radius:4px;z-index:14;max-height:calc(100vh - 145px);overflow-y:auto}@media screen and (min-width:1024px){#search-results{min-width:max(30vw,100%)}}#search-results:empty{display:none!important}#search-results.search-focus,#search-results:active{display:block;box-shadow:0 .5em 1em -.125em hsla(0,0%,4%,.1),0 0 0 1px hsla(0,0%,4%,.02);border:1px solid #dbdbdb}#search-results .panel-block:first-of-type{border-top-left-radius:inherit;border-top-right-radius:inherit}#search-background{position:fixed;top:0;bottom:0;left:0;right:0;background:transparent;z-index:6;display:none}#search-background.search-focus-background{display:block}#search-background+div{z-index:7}#search-results em{background-color:#eff5fb;color:#3e8ed0}.tab-cnt>.tab-dta:not(.is-active){display:none}.tag:empty{background:transparent}[data-tooltip].has-tooltip-multiline:before{white-space:pre-line!important}[data-tooltip]:before{max-width:21rem!important;width:21rem!important}.is-size-6-5{font-size:.85rem!important}input.transparent{border:transparent!important;background:transparent!important}.pagination.is-close ul li:not(:first-of-type) .pagination-link{margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.pagination.is-close ul li:not(:last-child) .pagination-link{margin-right:-1px;border-top-right-radius:0;border-bottom-right-radius:0}.pagination.is-close ul li:not(:last-child) .pagination-link:hover{margin-right:0;z-index:4}.pagination.is-close ul li:not(:last-child):hover+li .pagination-link{margin-left:-1px}.log-group div[log_id].is-collapsed{height:20px;overflow:hidden;-ms-flex-align:baseline;align-items:baseline}.log-group.first-of-type{margin-top:15px}.em-codeBox{max-height:500px;overflow:hidden}.em-codeBox pre{display:inline-block;min-width:100%;min-height:calc(100% - 1px);padding:1em 0 0 1em;margin:0!important;overflow:hidden!important}.em-codeBox code{padding-right:130px}.em-timelineScale{position:absolute;width:100%;bottom:0;top:0}.em-timelineLiner{padding-left:50px;position:relative}.em-timelineLiner:before{content:"runs/\a time";position:absolute;left:0;bottom:-20px;white-space:pre-wrap}.em-el{height:200px}.em-elBar{position:relative;height:0}.em-elBar:before{content:attr(data-attr);position:absolute;bottom:-30px;background:#fff;right:0;left:0}.em-ScaleBar{height:1px;width:100%;background:#b5b5b5;position:relative;margin-bottom:50px}.em-ScaleBar:before{content:attr(data-attr);position:absolute;top:50%;transform:translateY(-50%);background:#fff;padding-right:10px;color:#4a4a4a}.em-ScaleBar:last-of-type{background:transparent}code .number{all:unset}.is-inlineblock{display:inline-block!important}article.message a{text-decoration:none!important}.em-ajaxContent.is-inline div{display:inline-block} \ No newline at end of file +/* Bulma Elements */.navbar-link:not(.is-arrowless):after,.select:not(.is-multiple):not(.is-loading):after{border:.125em solid var(--arrow-color);border-right:0;border-top:0;content:" ";display:block;height:.625em;margin-top:-.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;transition-duration:var(--duration);transition-property:border-color;width:.625em}.block:not(:last-child),.box:not(:last-child),.breadcrumb:not(:last-child),.buttons:not(:last-child),.content:not(:last-child),.field:not(:last-child),.file:not(:last-child),.level:not(:last-child),.message:not(:last-child),.notification:not(:last-child),.pagination:not(:last-child),.progress:not(:last-child),.subtitle:not(:last-child),.table-container:not(:last-child),.table:not(:last-child),.tabs:not(:last-child),.tags:not(:last-child),.title:not(:last-child){margin-bottom:var(--block-spacing)}.button,.input,.pagination-link,.select select,.textarea{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-color:transparent;border-radius:var(--control-radius);border-style:solid;border-width:var(--control-border-width);box-shadow:none;display:inline-flex;font-size:var(--control-size);height:var(--control-height);justify-content:flex-start;line-height:var(--control-line-height);padding:var(--control-padding-vertical) var(--control-padding-horizontal);position:relative;transition-duration:var(--duration);transition-property:background-color,border-color,box-shadow,color;vertical-align:top}.button:active,.button:focus,.button:focus-visible,.button:focus-within,.input:active,.input:focus,.input:focus-visible,.input:focus-within,.is-active.button,.is-active.input,.is-active.pagination-link,.is-active.textarea,.pagination-link:active,.pagination-link:focus,.pagination-link:focus-visible,.pagination-link:focus-within,.select select.is-active,.select select:active,.select select:focus,.select select:focus-visible,.select select:focus-within,.textarea:active,.textarea:focus,.textarea:focus-visible,.textarea:focus-within{outline:none}.select select[disabled],[disabled].button,[disabled].input,[disabled].pagination-link,[disabled].textarea{cursor:not-allowed}.modal{bottom:0;left:0;position:absolute;right:0;top:0}.navbar-burger{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;color:inherit;font-family:inherit;font-size:1em;margin:0;padding:0}.breadcrumb,.button,.file,.pagination-link,.tabs{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.box{--box-background-color:var(--scheme-main);--box-color:var(--text);--box-radius:var(--radius-large);--box-shadow:var(--shadow);--box-padding:1.25rem;--box-link-hover-shadow:0 0.5em 1em -0.125em hsla(var(--scheme-h),var(--scheme-s),var(--scheme-invert-l),0.1),0 0 0 1px var(--link);--box-link-active-shadow:inset 0 1px 2px hsla(var(--scheme-h),var(--scheme-s),var(--scheme-invert-l),0.2),0 0 0 1px var(--link);background-color:var(--box-background-color);border-radius:var(--box-radius);box-shadow:var(--box-shadow);color:var(--box-color);display:block;padding:var(--box-padding)}a.box:focus,a.box:hover{box-shadow:var(--box-link-hover-shadow)}a.box:active{box-shadow:var(--box-link-active-shadow)}.button{--button-family:false;--button-weight:var(--weight-medium);--button-border-color:var(--border);--button-border-style:solid;--button-border-width:var(--control-border-width);--button-padding-vertical:0.5em;--button-padding-horizontal:1em;--button-focus-border-color:var(--link-focus-border);--button-focus-box-shadow-size:0 0 0 0.125em;--button-focus-box-shadow-color:hsla(var(--link-h),var(--link-s),var(--link-on-scheme-l),0.25);--button-active-color:var(--link-active);--button-active-border-color:var(--link-active-border);--button-text-color:var(--text);--button-text-decoration:underline;--button-text-hover-background-color:var(--background);--button-text-hover-color:var(--text-strong);--button-ghost-background:none;--button-ghost-border-color:transparent;--button-ghost-color:var(--link-text);--button-ghost-decoration:none;--button-ghost-hover-color:var(--link);--button-ghost-hover-decoration:underline;--button-disabled-background-color:var(--scheme-main);--button-disabled-border-color:var(--border);--button-disabled-shadow:none;--button-disabled-opacity:0.5;--button-static-color:var(--text-weak);--button-static-background-color:var(--scheme-main-ter);--button-static-border-color:var(--border);--button-h:var(--scheme-h);--button-s:var(--scheme-s);--button-l:var(--scheme-main-l);--button-background-l:var(--scheme-main-l);--button-background-l-delta:0%;--button-hover-background-l-delta:var(--hover-background-l-delta);--button-active-background-l-delta:var(--active-background-l-delta);--button-color-l:var(--text-strong-l);--button-border-l:var(--border-l);--button-border-l-delta:0%;--button-hover-border-l-delta:var(--hover-border-l-delta);--button-active-border-l-delta:var(--active-border-l-delta);--button-focus-border-l-delta:var(--focus-border-l-delta);--button-outer-shadow-h:0;--button-outer-shadow-s:0%;--button-outer-shadow-l:20%;--button-outer-shadow-a:0.05;--loading-color:hsl(var(--button-h),var(--button-s),var(--button-color-l));background-color:hsl(var(--button-h),var(--button-s),calc(var(--button-background-l) + var(--button-background-l-delta)));border-color:hsl(var(--button-h),var(--button-s),calc(var(--button-border-l) + var(--button-border-l-delta)));border-style:var(--button-border-style);border-width:var(--button-border-width);box-shadow:0 .0625em .125em hsla(var(--button-outer-shadow-h),var(--button-outer-shadow-s),var(--button-outer-shadow-l),var(--button-outer-shadow-a)),0 .125em .25em hsla(var(--button-outer-shadow-h),var(--button-outer-shadow-s),var(--button-outer-shadow-l),var(--button-outer-shadow-a));color:hsl(var(--button-h),var(--button-s),var(--button-color-l));cursor:pointer;font-weight:var(--button-weight);height:auto;justify-content:center;padding:calc(var(--button-padding-vertical) - var(--button-border-width)) calc(var(--button-padding-horizontal) - var(--button-border-width));text-align:center;white-space:nowrap}.button strong{color:inherit}.button .icon,.button .icon.is-large,.button .icon.is-medium,.button .icon.is-small{height:1.5em;width:1.5em}.button .icon:first-child:not(:last-child){margin-inline-end:calc(var(--button-padding-horizontal)*.25);margin-inline-start:calc(var(--button-padding-horizontal)*-.5)}.button .icon:last-child:not(:first-child){margin-inline-end:calc(var(--button-padding-horizontal)*-.5);margin-inline-start:calc(var(--button-padding-horizontal)*.25)}.button .icon:first-child:last-child{margin-inline-end:calc(var(--button-padding-horizontal)*-.5);margin-inline-start:calc(var(--button-padding-horizontal)*-.5)}.button:hover{--button-background-l-delta:var(--button-hover-background-l-delta);--button-border-l-delta:var(--button-hover-border-l-delta)}.button:focus-visible{--button-border-width:1px;border-color:hsl(var(--focus-h),var(--focus-s),var(--focus-l));box-shadow:var(--focus-shadow-size) hsla(var(--focus-h),var(--focus-s),var(--focus-l),var(--focus-shadow-alpha))}.button.is-active,.button:active{--button-background-l-delta:var(--button-active-background-l-delta);--button-border-l-delta:var(--button-active-border-l-delta);--button-outer-shadow-a:0}.button[disabled]{background-color:var(--button-disabled-background-color);border-color:var(--button-disabled-border-color);box-shadow:var(--button-disabled-shadow);opacity:var(--button-disabled-opacity)}.button.is-light{--button-h:var(--light-h);--button-s:var(--light-s);--button-l:var(--light-l);--button-background-l:var(--light-l);--button-border-l:var(--light-l);--button-border-width:0px;--button-color-l:var(--light-invert-l);--button-outer-shadow-a:0}.button.is-light:focus-visible{--button-border-width:1px}.button.is-light[disabled]{background-color:var(--light);border-color:var(--light);box-shadow:none}.button.is-primary{--button-h:var(--primary-h);--button-s:var(--primary-s);--button-l:var(--primary-l);--button-background-l:var(--primary-l);--button-border-l:var(--primary-l);--button-border-width:0px;--button-color-l:var(--primary-invert-l);--button-outer-shadow-a:0}.button.is-primary:focus-visible{--button-border-width:1px}.button.is-primary.is-light{--button-background-l:var(--light-l);--button-color-l:var(--primary-light-invert-l)}.button.is-primary[disabled]{background-color:var(--primary);border-color:var(--primary);box-shadow:none}.button.is-info{--button-h:var(--info-h);--button-s:var(--info-s);--button-l:var(--info-l);--button-background-l:var(--info-l);--button-border-l:var(--info-l);--button-border-width:0px;--button-color-l:var(--info-invert-l);--button-outer-shadow-a:0}.button.is-info:focus-visible{--button-border-width:1px}.button.is-info.is-light{--button-background-l:var(--light-l);--button-color-l:var(--info-light-invert-l)}.button.is-info[disabled]{background-color:var(--info);border-color:var(--info);box-shadow:none}.button.is-success{--button-h:var(--success-h);--button-s:var(--success-s);--button-l:var(--success-l);--button-background-l:var(--success-l);--button-border-l:var(--success-l);--button-border-width:0px;--button-color-l:var(--success-invert-l);--button-outer-shadow-a:0}.button.is-success:focus-visible{--button-border-width:1px}.button.is-success.is-light{--button-background-l:var(--light-l);--button-color-l:var(--success-light-invert-l)}.button.is-success[disabled]{background-color:var(--success);border-color:var(--success);box-shadow:none}.button.is-warning{--button-h:var(--warning-h);--button-s:var(--warning-s);--button-l:var(--warning-l);--button-background-l:var(--warning-l);--button-border-l:var(--warning-l);--button-border-width:0px;--button-color-l:var(--warning-invert-l);--button-outer-shadow-a:0}.button.is-warning:focus-visible{--button-border-width:1px}.button.is-warning.is-light{--button-background-l:var(--light-l);--button-color-l:var(--warning-light-invert-l)}.button.is-warning[disabled]{background-color:var(--warning);border-color:var(--warning);box-shadow:none}.button.is-danger{--button-h:var(--danger-h);--button-s:var(--danger-s);--button-l:var(--danger-l);--button-background-l:var(--danger-l);--button-border-l:var(--danger-l);--button-border-width:0px;--button-color-l:var(--danger-invert-l);--button-outer-shadow-a:0}.button.is-danger:focus-visible{--button-border-width:1px}.button.is-danger.is-light{--button-background-l:var(--light-l);--button-color-l:var(--danger-light-invert-l)}.button.is-danger[disabled]{background-color:var(--danger);border-color:var(--danger);box-shadow:none}.button.is-small{--control-size:var(--size-small);--control-radius:var(--radius-small)}.button.is-medium{--control-size:var(--size-medium);--control-radius:var(--radius-medium)}.button.is-large{--control-size:var(--size-large);--control-radius:var(--radius-medium)}.button.is-fullwidth{display:flex;width:100%}.button.is-rounded{border-radius:var(--radius-rounded);padding-left:calc(var(--button-padding-horizontal) + .25em - var(--button-border-width));padding-right:calc(var(--button-padding-horizontal) + .25em - var(--button-border-width))}.buttons{align-items:center;display:flex;flex-wrap:wrap;gap:.75rem;justify-content:flex-start}.buttons.has-addons{gap:0}.buttons.has-addons .button:not(:first-child){border-end-start-radius:0;border-start-start-radius:0}.buttons.has-addons .button:not(:last-child){border-end-end-radius:0;border-start-end-radius:0;margin-inline-end:-1px}.buttons.has-addons .button:hover{z-index:2}.buttons.has-addons .button.is-active,.buttons.has-addons .button:active,.buttons.has-addons .button:focus{z-index:3}.buttons.has-addons .button.is-active:hover,.buttons.has-addons .button:active:hover,.buttons.has-addons .button:focus:hover{z-index:4}.buttons.has-addons .button.is-expanded{flex-grow:1;flex-shrink:1}.buttons.is-centered{justify-content:center}.content{--content-heading-color:var(--text-strong);--content-heading-weight:var(--weight-extrabold);--content-heading-line-height:1.125;--content-block-margin-bottom:1em;--content-blockquote-background-color:var(--background);--content-blockquote-border-left:5px solid var(--border);--content-blockquote-padding:1.25em 1.5em;--content-pre-padding:1.25em 1.5em;--content-table-cell-border:1px solid var(--border);--content-table-cell-border-width:0 0 1px;--content-table-cell-padding:0.5em 0.75em;--content-table-cell-heading-color:var(--text-strong);--content-table-head-cell-border-width:0 0 2px;--content-table-head-cell-color:var(--text-strong);--content-table-body-last-row-cell-border-bottom-width:0;--content-table-foot-cell-border-width:2px 0 0;--content-table-foot-cell-color:var(--text-strong)}.content li+li{margin-top:.25em}.content blockquote:not(:last-child),.content ol:not(:last-child),.content p:not(:last-child),.content pre:not(:last-child),.content table:not(:last-child),.content ul:not(:last-child){margin-bottom:var(--content-block-margin-bottom)}.content h1,.content h2,.content h3,.content h4,.content h5{color:var(--content-heading-color);font-weight:var(--content-heading-weight);line-height:var(--content-heading-line-height)}.content h1{font-size:2em;margin-bottom:.5em}.content h1:not(:first-child){margin-top:1em}.content h2{font-size:1.75em;margin-bottom:.5714em}.content h2:not(:first-child){margin-top:1.1428em}.content h3{font-size:1.5em;margin-bottom:.6666em}.content h3:not(:first-child){margin-top:1.3333em}.content h4{font-size:1.25em;margin-bottom:.8em}.content h5{font-size:1.125em;margin-bottom:.8888em}.content blockquote{background-color:var(--content-blockquote-background-color);border-inline-start:var(--content-blockquote-border-left);padding:var(--content-blockquote-padding)}.content ol{list-style-position:outside;margin-inline-start:2em}.content ol:not(:first-child){margin-top:1em}.content ol:not([type]){list-style-type:decimal}.content ul{list-style:disc outside;margin-inline-start:2em}.content ul:not(:first-child){margin-top:1em}.content ul ul{list-style-type:circle;margin-bottom:.25em;margin-top:.25em}.content ul ul ul{list-style-type:square}.content dd{margin-inline-start:2em}.content figure:not([class]){margin-left:2em;margin-right:2em;text-align:center}.content figure:not([class]):not(:first-child){margin-top:2em}.content figure:not([class]):not(:last-child){margin-bottom:2em}.content figure:not([class]) img{display:inline-block}.content pre{-webkit-overflow-scrolling:touch;overflow-x:auto;padding:var(--content-pre-padding);white-space:pre;word-wrap:normal}.content sub{font-size:75%}.content table td,.content table th{border:var(--content-table-cell-border);border-width:var(--content-table-cell-border-width);padding:var(--content-table-cell-padding);vertical-align:top}.content table th{color:var(--content-table-cell-heading-color)}.content table th:not([align]){text-align:inherit}.content table thead td,.content table thead th{border-width:var(--content-table-head-cell-border-width);color:var(--content-table-head-cell-color)}.content table tbody tr:last-child td,.content table tbody tr:last-child th{border-bottom-width:var(--content-table-body-last-row-cell-border-bottom-width)}.content .tabs li+li{margin-top:0}.content.is-small{font-size:var(--size-small)}.content.is-medium{font-size:var(--size-medium)}.content.is-large{font-size:var(--size-large)}.delete{--delete-dimensions:1.25rem;--delete-background-l:0%;--delete-background-alpha:0.5;--delete-color:var(--white);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:hsla(var(--scheme-h),var(--scheme-s),var(--delete-background-l),var(--delete-background-alpha));border:none;border-radius:var(--radius-rounded);cursor:pointer;display:inline-flex;flex-grow:0;flex-shrink:0;font-size:1em;height:var(--delete-dimensions);max-height:var(--delete-dimensions);max-width:var(--delete-dimensions);min-height:var(--delete-dimensions);min-width:var(--delete-dimensions);outline:none;pointer-events:auto;position:relative;vertical-align:top;width:var(--delete-dimensions)}.delete:after,.delete:before{background-color:var(--delete-color);content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.delete:before{height:2px;width:50%}.delete:after{height:50%;width:2px}.delete:focus,.delete:hover{--delete-background-alpha:0.4}.delete:active{--delete-background-alpha:0.5}.delete.is-small{--delete-dimensions:1rem}.delete.is-medium{--delete-dimensions:1.5rem}.delete.is-large{--delete-dimensions:2rem}.icon,.icon-text{--icon-dimensions:1.5rem;--icon-dimensions-small:1rem;--icon-dimensions-medium:2rem;--icon-dimensions-large:3rem;--icon-text-spacing:0.25em}.icon{align-items:center;display:inline-flex;flex-shrink:0;height:var(--icon-dimensions);justify-content:center;transition-duration:var(--duration);transition-property:color;width:var(--icon-dimensions)}.icon.is-small{height:var(--icon-dimensions-small);width:var(--icon-dimensions-small)}.icon.is-medium{height:var(--icon-dimensions-medium);width:var(--icon-dimensions-medium)}.icon.is-large{height:var(--icon-dimensions-large);width:var(--icon-dimensions-large)}.icon-text{align-items:flex-start;color:inherit;display:inline-flex;flex-wrap:wrap;gap:var(--icon-text-spacing);line-height:var(--icon-dimensions);vertical-align:top}.icon-text .icon{flex-grow:0;flex-shrink:0}div.icon-text{display:flex}.image{display:block;position:relative}.image img{display:block;height:auto;width:100%}.image img.is-rounded{border-radius:var(--radius-rounded)}.image.is-fullwidth{width:100%}.loader{animation:spinAround .5s linear infinite;border-bottom:2px solid var(--border);border-left:2px solid var(--border);border-radius:var(--radius-rounded);border-right:2px solid transparent;border-top:2px solid transparent;content:"";display:block;height:1em;position:relative;width:1em}.notification{--notification-h:var(--scheme-h);--notification-s:var(--scheme-s);--notification-background-l:var(--background-l);--notification-color-l:var(--text-strong-l);--notification-code-background-color:var(--scheme-main);--notification-radius:var(--radius);--notification-padding:1.375em 1.5em;background-color:hsl(var(--notification-h),var(--notification-s),var(--notification-background-l));border-radius:var(--notification-radius);color:hsl(var(--notification-h),var(--notification-s),var(--notification-color-l));padding:var(--notification-padding);position:relative}.notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}.notification strong{color:currentColor}.notification code,.notification pre{background:var(--notification-code-background-color)}.notification pre code{background:transparent}.notification>.delete{inset-inline-end:1rem;position:absolute;top:1rem}.notification .content,.notification .subtitle,.notification .title{color:currentColor}.notification.is-light{--notification-h:var(--light-h);--notification-s:var(--light-s);--notification-background-l:var(--light-l);--notification-color-l:var(--light-invert-l)}.notification.is-light.is-light{--notification-background-l:90%;--notification-color-l:var(--light-light-invert-l)}.notification.is-primary{--notification-h:var(--primary-h);--notification-s:var(--primary-s);--notification-background-l:var(--primary-l);--notification-color-l:var(--primary-invert-l)}.notification.is-primary.is-light{--notification-background-l:90%;--notification-color-l:var(--primary-light-invert-l)}.notification.is-info{--notification-h:var(--info-h);--notification-s:var(--info-s);--notification-background-l:var(--info-l);--notification-color-l:var(--info-invert-l)}.notification.is-info.is-light{--notification-background-l:90%;--notification-color-l:var(--info-light-invert-l)}.notification.is-success{--notification-h:var(--success-h);--notification-s:var(--success-s);--notification-background-l:var(--success-l);--notification-color-l:var(--success-invert-l)}.notification.is-success.is-light{--notification-background-l:90%;--notification-color-l:var(--success-light-invert-l)}.notification.is-warning{--notification-h:var(--warning-h);--notification-s:var(--warning-s);--notification-background-l:var(--warning-l);--notification-color-l:var(--warning-invert-l)}.notification.is-warning.is-light{--notification-background-l:90%;--notification-color-l:var(--warning-light-invert-l)}.notification.is-danger{--notification-h:var(--danger-h);--notification-s:var(--danger-s);--notification-background-l:var(--danger-l);--notification-color-l:var(--danger-invert-l)}.notification.is-danger.is-light{--notification-background-l:90%;--notification-color-l:var(--danger-light-invert-l)}.progress{--progress-border-radius:var(--radius-rounded);--progress-bar-background-color:var(--border-weak);--progress-value-background-color:var(--text);--progress-indeterminate-duration:1.5s;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-radius:var(--progress-border-radius);display:block;height:var(--size-normal);overflow:hidden;padding:0;width:100%}.progress::-webkit-progress-bar{background-color:var(--progress-bar-background-color)}.progress::-webkit-progress-value{background-color:var(--progress-value-background-color)}.progress::-moz-progress-bar{background-color:var(--progress-value-background-color)}.progress::-ms-fill{background-color:var(--progress-value-background-color);border:none}.progress.is-light{--progress-value-background-color:var(--light)}.progress.is-primary{--progress-value-background-color:var(--primary)}.progress.is-info{--progress-value-background-color:var(--info)}.progress.is-success{--progress-value-background-color:var(--success)}.progress.is-warning{--progress-value-background-color:var(--warning)}.progress.is-danger{--progress-value-background-color:var(--danger)}.progress:indeterminate{animation-duration:var(--progress-indeterminate-duration);animation-iteration-count:infinite;animation-name:moveIndeterminate;animation-timing-function:linear;background-color:var(--progress-bar-background-color);background-image:linear-gradient(to right,var(--progress-value-background-color) 30%,var(--progress-bar-background-color) 30%);background-position:0 0;background-repeat:no-repeat;background-size:150% 150%}.progress:indeterminate::-webkit-progress-bar{background-color:transparent}.progress:indeterminate::-moz-progress-bar{background-color:transparent}.progress:indeterminate::-ms-fill{animation-name:none}.progress.is-small{height:var(--size-small)}.progress.is-medium{height:var(--size-medium)}.progress.is-large{height:var(--size-large)}@keyframes moveIndeterminate{0%{background-position:200% 0}to{background-position:-200% 0}}.table{--table-color:var(--text-strong);--table-background-color:var(--scheme-main);--table-cell-border-color:var(--border);--table-cell-border-style:solid;--table-cell-border-width:0 0 1px;--table-cell-padding:0.5em 0.75em;--table-cell-heading-color:var(--text-strong);--table-cell-text-align:left;--table-head-cell-border-width:0 0 2px;--table-head-cell-color:var(--text-strong);--table-foot-cell-border-width:2px 0 0;--table-foot-cell-color:var(--text-strong);--table-head-background-color:transparent;--table-body-background-color:transparent;--table-foot-background-color:transparent;--table-row-hover-background-color:var(--scheme-main-bis);--table-row-active-background-color:var(--primary);--table-row-active-color:var(--primary-invert);--table-striped-row-even-background-color:var(--scheme-main-bis);--table-striped-row-even-hover-background-color:var(--scheme-main-ter);background-color:var(--table-background-color);color:var(--table-color)}.table td,.table th{background-color:var(--table-cell-background-color);border-color:var(--table-cell-border-color);border-style:var(--table-cell-border-style);border-width:var(--table-cell-border-width);color:var(--table-color);padding:var(--table-cell-padding);vertical-align:top}.table td.is-light,.table th.is-light{--table-color:var(--light-invert);--table-cell-heading-color:var(--light-invert);--table-cell-background-color:var(--light);--table-cell-border-color:var(--light)}.table td.is-primary,.table th.is-primary{--table-color:var(--primary-invert);--table-cell-heading-color:var(--primary-invert);--table-cell-background-color:var(--primary);--table-cell-border-color:var(--primary)}.table td.is-info,.table th.is-info{--table-color:var(--info-invert);--table-cell-heading-color:var(--info-invert);--table-cell-background-color:var(--info);--table-cell-border-color:var(--info)}.table td.is-success,.table th.is-success{--table-color:var(--success-invert);--table-cell-heading-color:var(--success-invert);--table-cell-background-color:var(--success);--table-cell-border-color:var(--success)}.table td.is-warning,.table th.is-warning{--table-color:var(--warning-invert);--table-cell-heading-color:var(--warning-invert);--table-cell-background-color:var(--warning);--table-cell-border-color:var(--warning)}.table td.is-danger,.table th.is-danger{--table-color:var(--danger-invert);--table-cell-heading-color:var(--danger-invert);--table-cell-background-color:var(--danger);--table-cell-border-color:var(--danger)}.table td.is-narrow,.table th.is-narrow{white-space:nowrap;width:1%}.table th{color:var(--table-cell-heading-color)}.table th:not([align]){text-align:var(--table-cell-text-align)}.table tr.is-light{--table-color:var(--light-invert);--table-cell-heading-color:var(--light-invert);--table-cell-background-color:var(--light);--table-cell-border-color:var(--light)}.table tr.is-primary{--table-color:var(--primary-invert);--table-cell-heading-color:var(--primary-invert);--table-cell-background-color:var(--primary);--table-cell-border-color:var(--primary)}.table tr.is-info{--table-color:var(--info-invert);--table-cell-heading-color:var(--info-invert);--table-cell-background-color:var(--info);--table-cell-border-color:var(--info)}.table tr.is-success{--table-color:var(--success-invert);--table-cell-heading-color:var(--success-invert);--table-cell-background-color:var(--success);--table-cell-border-color:var(--success)}.table tr.is-warning{--table-color:var(--warning-invert);--table-cell-heading-color:var(--warning-invert);--table-cell-background-color:var(--warning);--table-cell-border-color:var(--warning)}.table tr.is-danger{--table-color:var(--danger-invert);--table-cell-heading-color:var(--danger-invert);--table-cell-background-color:var(--danger);--table-cell-border-color:var(--danger)}.table thead{background-color:var(--table-head-background-color)}.table thead td,.table thead th{border-width:var(--table-head-cell-border-width);color:var(--table-head-cell-color)}.table tbody{background-color:var(--table-body-background-color)}.table tbody tr:last-child td,.table tbody tr:last-child th{border-bottom-width:0}.table.is-fullwidth{width:100%}.table.is-hoverable tbody tr:not(.is-selected):hover{background-color:var(--table-row-hover-background-color)}.table.is-narrow td,.table.is-narrow th{padding:.25em .5em}.table-container{-webkit-overflow-scrolling:touch;max-width:100%;overflow:auto;overflow-y:hidden}.tags{align-items:center;color:hsl(var(--tag-h),var(--tag-s),var(--tag-color-l));display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-start}.tags.is-centered{gap:.25rem;justify-content:center}.tags.has-addons{gap:0}.tags.has-addons .tag:not(:first-child){border-end-start-radius:0;border-start-start-radius:0}.tags.has-addons .tag:not(:last-child){border-end-end-radius:0;border-start-end-radius:0}.tag{--tag-h:var(--scheme-h);--tag-s:var(--scheme-s);--tag-background-l:var(--background-l);--tag-background-l-delta:0%;--tag-hover-background-l-delta:var(--hover-background-l-delta);--tag-active-background-l-delta:var(--active-background-l-delta);--tag-color-l:var(--text-l);--tag-radius:var(--radius);--tag-delete-margin:1px;align-items:center;background-color:hsl(var(--tag-h),var(--tag-s),calc(var(--tag-background-l) + var(--tag-background-l-delta)));border-radius:var(--radius);color:hsl(var(--tag-h),var(--tag-s),var(--tag-color-l));display:inline-flex;font-size:var(--size-small);height:2em;justify-content:center;line-height:1.5;padding-left:.75em;padding-right:.75em;white-space:nowrap}.tag .delete{margin-inline-end:-.375rem;margin-inline-start:.25rem}.tag.is-light{--tag-h:var(--light-h);--tag-s:var(--light-s);--tag-background-l:var(--light-l);--tag-color-l:var(--light-invert-l)}.tag.is-light.is-light{--tag-background-l:var(--light-l);--tag-color-l:var(--light-light-invert-l)}.tag.is-primary{--tag-h:var(--primary-h);--tag-s:var(--primary-s);--tag-background-l:var(--primary-l);--tag-color-l:var(--primary-invert-l)}.tag.is-primary.is-light{--tag-background-l:var(--light-l);--tag-color-l:var(--primary-light-invert-l)}.tag.is-info{--tag-h:var(--info-h);--tag-s:var(--info-s);--tag-background-l:var(--info-l);--tag-color-l:var(--info-invert-l)}.tag.is-info.is-light{--tag-background-l:var(--light-l);--tag-color-l:var(--info-light-invert-l)}.tag.is-success{--tag-h:var(--success-h);--tag-s:var(--success-s);--tag-background-l:var(--success-l);--tag-color-l:var(--success-invert-l)}.tag.is-success.is-light{--tag-background-l:var(--light-l);--tag-color-l:var(--success-light-invert-l)}.tag.is-warning{--tag-h:var(--warning-h);--tag-s:var(--warning-s);--tag-background-l:var(--warning-l);--tag-color-l:var(--warning-invert-l)}.tag.is-warning.is-light{--tag-background-l:var(--light-l);--tag-color-l:var(--warning-light-invert-l)}.tag.is-danger{--tag-h:var(--danger-h);--tag-s:var(--danger-s);--tag-background-l:var(--danger-l);--tag-color-l:var(--danger-invert-l)}.tag.is-danger.is-light{--tag-background-l:var(--light-l);--tag-color-l:var(--danger-light-invert-l)}.tag.is-medium{font-size:var(--size-normal)}.tag.is-large{font-size:var(--size-medium)}.tag .icon:first-child:not(:last-child){margin-inline-end:.1875em;margin-inline-start:-.375em}.tag .icon:last-child:not(:first-child){margin-inline-end:-.375em;margin-inline-start:.1875em}.tag .icon:first-child:last-child{margin-inline-end:-.375em;margin-inline-start:-.375em}.tag.is-rounded{border-radius:var(--radius-rounded)}.tag.is-hoverable,a.tag,button.tag{cursor:pointer}.tag.is-hoverable:hover,a.tag:hover,button.tag:hover{--tag-background-l-delta:var(--tag-hover-background-l-delta)}.tag.is-hoverable:active,a.tag:active,button.tag:active{--tag-background-l-delta:var(--tag-active-background-l-delta)}.subtitle,.title{--title-color:var(--text-strong);--title-family:Rasa,Georgia,Times New Roman,serif;--title-size:var(--size-3);--title-weight:var(--weight-extrabold);--title-line-height:1.125;--title-strong-color:inherit;--title-strong-weight:inherit;--title-sub-size:0.75em;--title-sup-size:0.75em;--subtitle-color:var(--text);--subtitle-family:false;--subtitle-size:var(--size-5);--subtitle-weight:var(--weight-normal);--subtitle-line-height:1.25;--subtitle-strong-color:var(--text-strong);--subtitle-strong-weight:var(--weight-semibold);word-break:break-word}.subtitle em,.subtitle span,.title em,.title span{font-weight:inherit}.subtitle sub,.title sub{font-size:var(--title-sub-size)}.subtitle .tag,.title .tag{vertical-align:middle}.title{color:var(--title-color);font-family:var(--title-family);font-size:var(--title-size);font-weight:var(--title-weight);line-height:var(--title-line-height)}.title strong{color:var(--title-strong-color);font-weight:var(--title-strong-weight)}.title:not(.is-spaced):has(+.subtitle){margin-bottom:0}.title.is-1{font-size:3rem}.title.is-2{font-size:2.5rem}.title.is-3{font-size:2rem}.title.is-4{font-size:1.5rem}.title.is-5{font-size:1.25rem}.title.is-6{font-size:1rem}.subtitle{color:var(--subtitle-color);font-size:var(--subtitle-size);font-weight:var(--subtitle-weight);line-height:var(--subtitle-line-height)}.subtitle strong{color:var(--subtitle-strong-color);font-weight:var(--subtitle-strong-weight)}.subtitle:not(.is-spaced):has(+.title){margin-bottom:0}.subtitle.is-1{font-size:3rem}.subtitle.is-2{font-size:2.5rem}.subtitle.is-3{font-size:2rem}.subtitle.is-4{font-size:1.5rem}.subtitle.is-5{font-size:1.25rem}.subtitle.is-6{font-size:1rem} + +/* Bulma Base */ +/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */blockquote,body,dd,figure,h1,h2,h3,h4,h5,hr,html,iframe,li,ol,p,pre,textarea,ul{margin:0;padding:0}h1,h2,h3,h4,h5{font-size:100%;font-weight:400}ul{list-style:none}button,input,select,textarea{margin:0}html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}img{height:auto;max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}td:not([align]),th:not([align]){text-align:inherit}:root{--body-background-color:var(--scheme-main);--body-size:1em;--body-min-width:300px;--body-rendering:optimizeLegibility;--body-family:var(--family-primary);--body-overflow-x:hidden;--body-overflow-y:scroll;--body-color:var(--text);--body-font-size:1em;--body-weight:var(--weight-normal);--body-line-height:1.5;--code-family:var(--family-code);--code-padding:0.25em 0.5em 0.25em;--code-weight:normal;--code-size:0.875em;--small-font-size:0.875em;--hr-background-color:var(--background);--hr-height:2px;--hr-margin:1.5rem 0;--strong-color:var(--text-strong);--strong-weight:var(--weight-semibold);--pre-font-size:0.875em;--pre-padding:1.25rem 1.5rem;--pre-code-font-size:1em}html{background-color:var(--body-background-color);font-size:var(--body-size);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:var(--body-min-width);overflow-x:var(--body-overflow-x);overflow-y:var(--body-overflow-y);text-rendering:var(--body-rendering);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}article,figure,footer,header,section{display:block}body,button,input,select,textarea{font-family:var(--body-family)}code,pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:var(--code-family)}body{color:var(--body-color);font-size:var(--body-font-size);font-weight:var(--body-weight);line-height:var(--body-line-height)}a,button{cursor:pointer}a:focus-visible,button:focus-visible{outline-color:hsl(var(--focus-h),var(--focus-s),var(--focus-l));outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}a:focus-visible:active,button:focus-visible:active{outline-width:1px}a:active,button:active{outline-width:1px}a{color:var(--link-text);cursor:pointer;text-decoration:none;transition-duration:var(--duration);transition-property:background-color,border-color,color}a strong{color:currentColor}button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;color:inherit;font-family:inherit;font-size:1em;margin:0;padding:0;transition-duration:var(--duration);transition-property:background-color,border-color,color}code{background-color:var(--code-background);border-radius:.5em;color:var(--code);font-size:var(--code-size);font-weight:var(--code-weight);padding:var(--code-padding)}hr{background-color:var(--hr-background-color);border:none;display:block;height:var(--hr-height);margin:var(--hr-margin)}img{height:auto;max-width:100%}input[type=checkbox]{vertical-align:baseline}small{font-size:var(--small-font-size)}span{font-style:inherit;font-weight:inherit}strong{color:var(--strong-color);font-weight:var(--strong-weight)}svg{height:auto;width:auto}pre{-webkit-overflow-scrolling:touch;background-color:var(--pre-background);color:var(--pre);font-size:var(--pre-font-size);overflow-x:auto;padding:var(--pre-padding);white-space:pre;word-wrap:normal}pre code{background-color:transparent;color:currentColor;font-size:var(--pre-code-font-size);padding:0}table td,table th{vertical-align:top}table td:not([align]),table th:not([align]){text-align:inherit}table th{color:var(--text-strong)}@keyframes spinAround{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}@keyframes pulsate{50%{opacity:.5}} +/* Bulma Components */.breadcrumb{--breadcrumb-item-color:var(--link-text);--breadcrumb-item-hover-color:var(--link-text-hover);--breadcrumb-item-active-color:#363636;--breadcrumb-item-padding-vertical:0;--breadcrumb-item-padding-horizontal:0.75em;--breadcrumb-item-separator-color:var(--border);font-size:var(--size-normal);white-space:nowrap}.breadcrumb a{align-items:center;color:var(--breadcrumb-item-color);display:flex;justify-content:center;padding:var(--breadcrumb-item-padding-vertical) var(--breadcrumb-item-padding-horizontal)}.breadcrumb a:hover{color:var(--breadcrumb-item-hover-color)}.breadcrumb li{align-items:center;display:flex}.breadcrumb li:first-child a{padding-inline-start:0}.breadcrumb li.is-active a{color:var(--breadcrumb-item-active-color);cursor:default;pointer-events:none}.breadcrumb li+li:before{color:var(--breadcrumb-item-separator-color);content:"/"}.breadcrumb ol,.breadcrumb ul{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start}.breadcrumb .icon:first-child{margin-inline-end:.5em}.breadcrumb .icon:last-child{margin-inline-start:.5em}.breadcrumb.is-centered ol,.breadcrumb.is-centered ul{justify-content:center}.breadcrumb.is-small{font-size:var(--size-small)}.breadcrumb.is-medium{font-size:var(--size-medium)}.breadcrumb.is-large{font-size:var(--size-large)}.dropdown{--dropdown-menu-min-width:12rem;--dropdown-content-background-color:var(--scheme-main);--dropdown-content-offset:0.25rem;--dropdown-content-padding-bottom:0.5rem;--dropdown-content-padding-top:0.5rem;--dropdown-content-radius:var(--radius);--dropdown-content-shadow:var(--shadow);--dropdown-content-z:20;--dropdown-item-h:var(--scheme-h);--dropdown-item-s:var(--scheme-s);--dropdown-item-l:var(--scheme-main-l);--dropdown-item-background-l:var(--scheme-main-l);--dropdown-item-background-l-delta:0%;--dropdown-item-hover-background-l-delta:var(--hover-background-l-delta);--dropdown-item-active-background-l-delta:var(--active-background-l-delta);--dropdown-item-color-l:var(--text-strong-l);--dropdown-item-selected-h:var(--link-h);--dropdown-item-selected-s:var(--link-s);--dropdown-item-selected-l:var(--link-l);--dropdown-item-selected-background-l:var(--link-l);--dropdown-item-selected-color-l:var(--link-invert-l);--dropdown-divider-background-color:var(--border-weak);display:inline-flex;position:relative;vertical-align:top}.dropdown-divider{background-color:var(--dropdown-divider-background-color);border:none;display:block;height:1px;margin:.5rem 0}.menu{--menu-item-h:var(--scheme-h);--menu-item-s:var(--scheme-s);--menu-item-l:var(--scheme-main-l);--menu-item-background-l:var(--scheme-main-l);--menu-item-background-l-delta:0%;--menu-item-hover-background-l-delta:var(--hover-background-l-delta);--menu-item-active-background-l-delta:var(--active-background-l-delta);--menu-item-color-l:var(--text-l);--menu-item-radius:var(--radius-small);--menu-item-selected-h:var(--link-h);--menu-item-selected-s:var(--link-s);--menu-item-selected-l:var(--link-l);--menu-item-selected-background-l:var(--link-l);--menu-item-selected-color-l:var(--link-invert-l);--menu-list-border-left:1px solid var(--border);--menu-list-line-height:1.25;--menu-list-link-padding:0.5em 0.75em;--menu-nested-list-margin:0.75em;--menu-nested-list-padding-left:0.75em;--menu-label-color:var(--text-weak);--menu-label-font-size:0.75em;--menu-label-letter-spacing:0.1em;--menu-label-spacing:1em;font-size:var(--size-normal)}.menu.is-small{font-size:var(--size-small)}.menu.is-medium{font-size:var(--size-medium)}.menu.is-large{font-size:var(--size-large)}.message{--message-border-l-delta:-20%;--message-radius:var(--radius);--message-header-weight:var(--weight-semibold);--message-header-padding:1em 1.25em;--message-header-radius:var(--radius);--message-body-border-width:0 0 0 4px;--message-body-color:var(--text);--message-body-padding:1.25em 1.5em;--message-body-radius:var(--radius-small);--message-body-pre-code-background-color:transparent;--message-header-body-border-width:0;--message-h:var(--scheme-h);--message-s:var(--scheme-s);--message-background-l:var(--background-l);--message-border-l:var(--border-l);--message-border-style:solid;--message-border-width:0.25em;--message-color-l:var(--text-l);--message-header-background-l:var(--dark-l);--message-header-color-l:var(--text-dark-invert-l);border-radius:var(--message-radius);color:hsl(var(--message-h),var(--message-s),var(--message-color-l));font-size:var(--size-normal)}.message strong{color:currentColor}.message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}.message.is-small{font-size:var(--size-small)}.message.is-medium{font-size:var(--size-medium)}.message.is-large{font-size:var(--size-large)}.message.is-light{--message-h:var(--light-h);--message-s:var(--light-s);--message-border-l:calc(var(--light-l) + var(--message-border-l-delta));--message-color-l:var(--light-on-scheme-l);--message-header-background-l:var(--light-l);--message-header-color-l:var(--light-invert-l)}.message.is-primary{--message-h:var(--primary-h);--message-s:var(--primary-s);--message-border-l:calc(var(--primary-l) + var(--message-border-l-delta));--message-color-l:var(--primary-on-scheme-l);--message-header-background-l:var(--primary-l);--message-header-color-l:var(--primary-invert-l)}.message.is-info{--message-h:var(--info-h);--message-s:var(--info-s);--message-border-l:calc(var(--info-l) + var(--message-border-l-delta));--message-color-l:var(--info-on-scheme-l);--message-header-background-l:var(--info-l);--message-header-color-l:var(--info-invert-l)}.message.is-success{--message-h:var(--success-h);--message-s:var(--success-s);--message-border-l:calc(var(--success-l) + var(--message-border-l-delta));--message-color-l:var(--success-on-scheme-l);--message-header-background-l:var(--success-l);--message-header-color-l:var(--success-invert-l)}.message.is-warning{--message-h:var(--warning-h);--message-s:var(--warning-s);--message-border-l:calc(var(--warning-l) + var(--message-border-l-delta));--message-color-l:var(--warning-on-scheme-l);--message-header-background-l:var(--warning-l);--message-header-color-l:var(--warning-invert-l)}.message.is-danger{--message-h:var(--danger-h);--message-s:var(--danger-s);--message-border-l:calc(var(--danger-l) + var(--message-border-l-delta));--message-color-l:var(--danger-on-scheme-l);--message-header-background-l:var(--danger-l);--message-header-color-l:var(--danger-invert-l)}.message-header{align-items:center;background-color:hsl(var(--message-h),var(--message-s),var(--message-header-background-l));border-start-end-radius:var(--message-header-radius);border-start-start-radius:var(--message-header-radius);color:hsl(var(--message-h),var(--message-s),var(--message-header-color-l));display:flex;font-weight:var(--message-header-weight);justify-content:space-between;line-height:1.25;padding:var(--message-header-padding);position:relative}.message-header .delete{flex-grow:0;flex-shrink:0;margin-inline-start:.75em}.message-header+.message-body{border-start-end-radius:0;border-start-start-radius:0;border-width:var(--message-header-body-border-width)}.message-body{background-color:hsl(var(--message-h),var(--message-s),var(--message-background-l));border-inline-start-color:hsl(var(--message-h),var(--message-s),var(--message-border-l));border-inline-start-style:var(--message-border-style);border-inline-start-width:var(--message-border-width);border-radius:var(--message-body-radius);padding:var(--message-body-padding)}.message-body code,.message-body pre{background-color:hsl(var(--message-h),var(--message-s),var(--message-header-color-l));color:hsl(var(--message-h),var(--message-s),var(--message-header-background-l))}.message-body pre code{background-color:var(--message-body-pre-code-background-color)}.modal{--modal-z:40;--modal-background-background-color:hsla(var(--scheme-h),var(--scheme-s),var(--scheme-invert-l),0.86);--modal-content-width:40rem;--modal-content-margin-mobile:1.25rem;--modal-content-spacing-mobile:10rem;--modal-content-spacing-tablet:2.5rem;--modal-close-dimensions:2.5rem;--modal-close-right:1.25rem;--modal-close-top:1.25rem;--modal-card-spacing:2.5rem;--modal-card-head-background-color:var(--scheme-main);--modal-card-head-padding:2rem;--modal-card-head-radius:var(--radius-large);--modal-card-title-color:var(--text-strong);--modal-card-title-line-height:1;--modal-card-title-size:var(--size-4);--modal-card-foot-background-color:var(--scheme-main-bis);--modal-card-foot-radius:var(--radius-large);--modal-card-body-background-color:var(--scheme-main);--modal-card-body-padding:2rem;align-items:center;display:none;flex-direction:column;justify-content:center;overflow:hidden;position:fixed;z-index:var(--modal-z)}.modal.is-active{display:flex}:root{--navbar-height:3.25rem}.navbar{--navbar-h:var(--scheme-h);--navbar-s:var(--scheme-s);--navbar-l:var(--scheme-main-l);--navbar-background-color:var(--scheme-main);--navbar-box-shadow-size:0 0.125em 0 0;--navbar-box-shadow-color:var(--background);--navbar-padding-vertical:1rem;--navbar-padding-horizontal:2rem;--navbar-z:30;--navbar-fixed-z:30;--navbar-item-background-a:0;--navbar-item-background-l:var(--scheme-main-l);--navbar-item-background-l-delta:0%;--navbar-item-hover-background-l-delta:var(--hover-background-l-delta);--navbar-item-active-background-l-delta:var(--active-background-l-delta);--navbar-item-color-l:var(--text-l);--navbar-item-color:hsl(var(--navbar-h),var(--navbar-s),var(--navbar-item-color-l));--navbar-item-selected-h:var(--link-h);--navbar-item-selected-s:var(--link-s);--navbar-item-selected-l:var(--link-l);--navbar-item-selected-background-l:var(--link-l);--navbar-item-selected-color-l:var(--link-invert-l);--navbar-item-img-max-height:1.75rem;--navbar-burger-color:var(--link);--navbar-tab-hover-background-color:transparent;--navbar-tab-hover-border-bottom-color:var(--link);--navbar-tab-active-color:var(--link);--navbar-tab-active-background-color:transparent;--navbar-tab-active-border-bottom-color:var(--link);--navbar-tab-active-border-bottom-style:solid;--navbar-tab-active-border-bottom-width:0.1875em;--navbar-dropdown-background-color:var(--scheme-main);--navbar-dropdown-border-l:var(--border-l);--navbar-dropdown-border-color:hsl(var(--navbar-h),var(--navbar-s),var(--navbar-dropdown-border-l));--navbar-dropdown-border-style:solid;--navbar-dropdown-border-width:0.125em;--navbar-dropdown-offset:-0.25em;--navbar-dropdown-arrow:var(--link);--navbar-dropdown-radius:var(--radius-large);--navbar-dropdown-z:20;--navbar-dropdown-boxed-radius:var(--radius-large);--navbar-dropdown-boxed-shadow:0 0.5em 0.5em hsla(var(--scheme-h),var(--scheme-s),var(--scheme-invert-l),0.1),0 0 0 1px hsla(var(--scheme-h),var(--scheme-s),var(--scheme-invert-l),0.1);--navbar-dropdown-item-h:var(--scheme-h);--navbar-dropdown-item-s:var(--scheme-s);--navbar-dropdown-item-l:var(--scheme-main-l);--navbar-dropdown-item-background-l:var(--scheme-main-l);--navbar-dropdown-item-color-l:var(--text-l);--navbar-divider-background-l:var(--background-l);--navbar-divider-height:0.125em;--navbar-bottom-box-shadow-size:0 -0.125em 0 0;background-color:var(--navbar-background-color);min-height:var(--navbar-height);position:relative;z-index:var(--navbar-z)}.navbar.is-light{--navbar-h:var(--light-h);--navbar-s:var(--light-s);--navbar-l:var(--light-l);--burger-h:var(--light-h);--burger-s:var(--light-s);--burger-l:var(--light-invert-l);--navbar-background-color:var(--light);--navbar-item-background-l:var(--light-l);--navbar-item-color-l:var(--light-invert-l);--navbar-item-selected-h:var(--light-h);--navbar-item-selected-s:var(--light-s);--navbar-item-selected-l:var(--light-l);--navbar-item-selected-background-l:var(--light-l);--navbar-item-selected-color-l:var(--light-invert-l);--navbar-dropdown-arrow:var(--light-invert-l);--navbar-dropdown-background-color:hsl(var(--light-h),var(--light-s),var(--navbar-dropdown-item-background-l));--navbar-dropdown-item-h:var(--light-h);--navbar-dropdown-item-s:var(--light-s)}.navbar.is-primary{--navbar-h:var(--primary-h);--navbar-s:var(--primary-s);--navbar-l:var(--primary-l);--burger-h:var(--primary-h);--burger-s:var(--primary-s);--burger-l:var(--primary-invert-l);--navbar-background-color:var(--primary);--navbar-item-background-l:var(--primary-l);--navbar-item-color-l:var(--primary-invert-l);--navbar-item-selected-h:var(--primary-h);--navbar-item-selected-s:var(--primary-s);--navbar-item-selected-l:var(--primary-l);--navbar-item-selected-background-l:var(--primary-l);--navbar-item-selected-color-l:var(--primary-invert-l);--navbar-dropdown-arrow:var(--primary-invert-l);--navbar-dropdown-background-color:hsl(var(--primary-h),var(--primary-s),var(--navbar-dropdown-item-background-l));--navbar-dropdown-item-h:var(--primary-h);--navbar-dropdown-item-s:var(--primary-s)}.navbar.is-info{--navbar-h:var(--info-h);--navbar-s:var(--info-s);--navbar-l:var(--info-l);--burger-h:var(--info-h);--burger-s:var(--info-s);--burger-l:var(--info-invert-l);--navbar-background-color:var(--info);--navbar-item-background-l:var(--info-l);--navbar-item-color-l:var(--info-invert-l);--navbar-item-selected-h:var(--info-h);--navbar-item-selected-s:var(--info-s);--navbar-item-selected-l:var(--info-l);--navbar-item-selected-background-l:var(--info-l);--navbar-item-selected-color-l:var(--info-invert-l);--navbar-dropdown-arrow:var(--info-invert-l);--navbar-dropdown-background-color:hsl(var(--info-h),var(--info-s),var(--navbar-dropdown-item-background-l));--navbar-dropdown-item-h:var(--info-h);--navbar-dropdown-item-s:var(--info-s)}.navbar.is-success{--navbar-h:var(--success-h);--navbar-s:var(--success-s);--navbar-l:var(--success-l);--burger-h:var(--success-h);--burger-s:var(--success-s);--burger-l:var(--success-invert-l);--navbar-background-color:var(--success);--navbar-item-background-l:var(--success-l);--navbar-item-color-l:var(--success-invert-l);--navbar-item-selected-h:var(--success-h);--navbar-item-selected-s:var(--success-s);--navbar-item-selected-l:var(--success-l);--navbar-item-selected-background-l:var(--success-l);--navbar-item-selected-color-l:var(--success-invert-l);--navbar-dropdown-arrow:var(--success-invert-l);--navbar-dropdown-background-color:hsl(var(--success-h),var(--success-s),var(--navbar-dropdown-item-background-l));--navbar-dropdown-item-h:var(--success-h);--navbar-dropdown-item-s:var(--success-s)}.navbar.is-warning{--navbar-h:var(--warning-h);--navbar-s:var(--warning-s);--navbar-l:var(--warning-l);--burger-h:var(--warning-h);--burger-s:var(--warning-s);--burger-l:var(--warning-invert-l);--navbar-background-color:var(--warning);--navbar-item-background-l:var(--warning-l);--navbar-item-color-l:var(--warning-invert-l);--navbar-item-selected-h:var(--warning-h);--navbar-item-selected-s:var(--warning-s);--navbar-item-selected-l:var(--warning-l);--navbar-item-selected-background-l:var(--warning-l);--navbar-item-selected-color-l:var(--warning-invert-l);--navbar-dropdown-arrow:var(--warning-invert-l);--navbar-dropdown-background-color:hsl(var(--warning-h),var(--warning-s),var(--navbar-dropdown-item-background-l));--navbar-dropdown-item-h:var(--warning-h);--navbar-dropdown-item-s:var(--warning-s)}.navbar.is-danger{--navbar-h:var(--danger-h);--navbar-s:var(--danger-s);--navbar-l:var(--danger-l);--burger-h:var(--danger-h);--burger-s:var(--danger-s);--burger-l:var(--danger-invert-l);--navbar-background-color:var(--danger);--navbar-item-background-l:var(--danger-l);--navbar-item-color-l:var(--danger-invert-l);--navbar-item-selected-h:var(--danger-h);--navbar-item-selected-s:var(--danger-s);--navbar-item-selected-l:var(--danger-l);--navbar-item-selected-background-l:var(--danger-l);--navbar-item-selected-color-l:var(--danger-invert-l);--navbar-dropdown-arrow:var(--danger-invert-l);--navbar-dropdown-background-color:hsl(var(--danger-h),var(--danger-s),var(--navbar-dropdown-item-background-l));--navbar-dropdown-item-h:var(--danger-h);--navbar-dropdown-item-s:var(--danger-s)}.navbar>.container{align-items:stretch;display:flex;min-height:var(--navbar-height);width:100%}.navbar.has-shadow{box-shadow:var(--navbar-box-shadow-size) var(--navbar-box-shadow-color)}.navbar-brand{align-items:stretch;display:flex;flex-shrink:0;min-height:var(--navbar-height)}.navbar-burger{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;border-radius:var(--burger-border-radius);color:hsl(var(--burger-h),var(--burger-s),var(--burger-l));cursor:pointer;display:inline-flex;flex-direction:column;flex-shrink:0;height:2.5rem;justify-content:center;position:relative;vertical-align:top;width:2.5rem}.navbar-burger span{background-color:currentColor;display:block;height:var(--burger-item-height);left:calc(50% - (var(--burger-item-width))/2);position:absolute;transform-origin:center;transition-duration:var(--duration);transition-property:background-color,color,opacity,transform;transition-timing-function:var(--easing);width:var(--burger-item-width)}.navbar-burger span:first-child,.navbar-burger span:nth-child(2){top:calc(50% - (var(--burger-item-height))/2)}.navbar-burger span:nth-child(3){bottom:calc(50% + var(--burger-gap))}.navbar-burger span:nth-child(4){top:calc(50% + var(--burger-gap))}.navbar-burger:hover{background-color:hsla(var(--burger-h),var(--burger-s),var(--burger-l),.1)}.navbar-burger:active{background-color:hsla(var(--burger-h),var(--burger-s),var(--burger-l),.2)}.navbar-burger.is-active span:first-child{transform:rotate(-45deg)}.navbar-burger.is-active span:nth-child(2){transform:rotate(45deg)}.navbar-burger.is-active span:nth-child(3),.navbar-burger.is-active span:nth-child(4){opacity:0}.navbar-burger{align-self:center;color:var(--navbar-burger-color);margin-inline-end:.375rem;margin-inline-start:auto}.navbar-menu{display:none}.navbar-item,.navbar-link{color:var(--navbar-item-color);display:block;gap:.75rem;line-height:1.5;padding:.5rem .75rem;position:relative}.navbar-item .icon:only-child,.navbar-link .icon:only-child{margin-left:-.25rem;margin-right:-.25rem}.navbar-link,a.navbar-item{background-color:hsla(var(--navbar-h),var(--navbar-s),calc(var(--navbar-item-background-l) + var(--navbar-item-background-l-delta)),var(--navbar-item-background-a));cursor:pointer}.navbar-link:focus,.navbar-link:focus-within,.navbar-link:hover,a.navbar-item:focus,a.navbar-item:focus-within,a.navbar-item:hover{--navbar-item-background-l-delta:var(--navbar-item-hover-background-l-delta);--navbar-item-background-a:1}.navbar-link:active,a.navbar-item:active{--navbar-item-background-l-delta:var(--navbar-item-active-background-l-delta);--navbar-item-background-a:1}.navbar-link.is-active,a.navbar-item.is-active{--navbar-h:var(--navbar-item-selected-h);--navbar-s:var(--navbar-item-selected-s);--navbar-l:var(--navbar-item-selected-l);--navbar-item-background-l:var(--navbar-item-selected-background-l);--navbar-item-background-a:1;--navbar-item-color-l:var(--navbar-item-selected-color-l)}.navbar-item{flex-grow:0;flex-shrink:0}.navbar-item img,.navbar-item svg{max-height:var(--navbar-item-img-max-height)}.navbar-item.has-dropdown{padding:0}.navbar-item.is-expanded{flex-grow:1;flex-shrink:1}.navbar-link:not(.is-arrowless){padding-inline-end:2.5em}.navbar-link:not(.is-arrowless):after{border-color:var(--navbar-dropdown-arrow);inset-inline-end:1.125em;margin-top:-.375em}.navbar-dropdown{font-size:.875rem;padding-bottom:.75rem;padding-top:.5rem}.navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}.navbar-dropdown .navbar-item:not(.is-active,.is-selected){background-color:hsl(var(--navbar-dropdown-item-h),var(--navbar-dropdown-item-s),calc(var(--navbar-dropdown-item-background-l) + var(--navbar-item-background-l-delta)));color:hsl(var(--navbar-dropdown-item-h),var(--navbar-dropdown-item-s),var(--navbar-dropdown-item-color-l))}@media screen and (max-width:1023px){.navbar>.container{display:block}.navbar-brand .navbar-item{align-items:center;display:flex}.navbar-link:after{display:none}.navbar-menu{background-color:var(--navbar-background-color);box-shadow:0 .5em 1em hsla(var(--scheme-h),var(--scheme-s),var(--scheme-invert-l),.1);padding:.5rem 0}.navbar-menu.is-active{display:block}}@media screen and (min-width:1024px){.navbar,.navbar-end,.navbar-menu,.navbar-start{align-items:stretch;display:flex}.navbar{min-height:var(--navbar-height)}.navbar.is-transparent{--navbar-item-background-a:0}.navbar.is-transparent .navbar-dropdown a.navbar-item{background-color:hsl(var(--navbar-h),var(--navbar-s),calc(var(--navbar-item-background-l) + var(--navbar-item-background-l-delta)))}.navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{--navbar-h:var(--navbar-item-selected-h);--navbar-s:var(--navbar-item-selected-s);--navbar-l:var(--navbar-item-selected-l);--navbar-item-background-l:var(--navbar-item-selected-background-l);--navbar-item-color-l:var(--navbar-item-selected-color-l)}.navbar-burger{display:none}.navbar-item,.navbar-link{align-items:center;display:flex}.navbar-item.has-dropdown{align-items:stretch}.navbar-item.is-active .navbar-dropdown,.navbar-item.is-hoverable:focus .navbar-dropdown,.navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar-item.is-active .navbar-dropdown.is-boxed,.navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed{opacity:1;pointer-events:auto;transform:translateY(0)}.navbar-menu{flex-grow:1;flex-shrink:0}.navbar-start{justify-content:flex-start;margin-inline-end:auto}.navbar-end{justify-content:flex-end;margin-inline-start:auto}.navbar-dropdown{background-color:var(--navbar-dropdown-background-color);border-end-end-radius:var(--navbar-dropdown-radius);border-end-start-radius:var(--navbar-dropdown-radius);border-top:var(--navbar-dropdown-border-width) var(--navbar-dropdown-border-style) var(--navbar-dropdown-border-color);box-shadow:0 .5em .5em hsla(var(--scheme-h),var(--scheme-s),var(--scheme-invert-l),.1);display:none;font-size:.875rem;inset-inline-start:0;min-width:100%;position:absolute;top:100%;z-index:var(--navbar-dropdown-z)}.navbar-dropdown .navbar-item{padding:.375rem 1rem;white-space:nowrap}.navbar-dropdown a.navbar-item{padding-inline-end:3rem}.navbar-dropdown a.navbar-item:not(.is-active,.is-selected){background-color:hsl(var(--navbar-dropdown-item-h),var(--navbar-dropdown-item-s),calc(var(--navbar-dropdown-item-background-l) + var(--navbar-item-background-l-delta)));color:hsl(var(--navbar-dropdown-item-h),var(--navbar-dropdown-item-s),var(--navbar-dropdown-item-color-l))}.navbar-dropdown.is-boxed{border-radius:var(--navbar-dropdown-boxed-radius);border-top:none;box-shadow:var(--navbar-dropdown-boxed-shadow);display:block;opacity:0;pointer-events:none;top:calc(100% + var(--navbar-dropdown-offset));transform:translateY(-5px);transition-duration:var(--duration);transition-property:opacity,transform}.container>.navbar .navbar-brand,.navbar>.container .navbar-brand{margin-inline-start:-.75rem}.container>.navbar .navbar-menu,.navbar>.container .navbar-menu{margin-inline-end:-.75rem}}.pagination{--pagination-margin:-0.25rem;--pagination-min-width:var(--control-height);--pagination-item-h:var(--scheme-h);--pagination-item-s:var(--scheme-s);--pagination-item-l:var(--scheme-main-l);--pagination-item-background-l-delta:0%;--pagination-item-hover-background-l-delta:var(--hover-background-l-delta);--pagination-item-active-background-l-delta:var(--active-background-l-delta);--pagination-item-border-style:solid;--pagination-item-border-width:var(--control-border-width);--pagination-item-border-l:var(--border-l);--pagination-item-border-l-delta:0%;--pagination-item-hover-border-l-delta:var(--hover-border-l-delta);--pagination-item-active-border-l-delta:var(--active-border-l-delta);--pagination-item-focus-border-l-delta:var(--focus-border-l-delta);--pagination-item-color-l:var(--text-strong-l);--pagination-item-font-size:1em;--pagination-item-margin:0.25rem;--pagination-item-padding-left:0.5em;--pagination-item-padding-right:0.5em;--pagination-item-outer-shadow-h:0;--pagination-item-outer-shadow-s:0%;--pagination-item-outer-shadow-l:20%;--pagination-item-outer-shadow-a:0.05;--pagination-nav-padding-left:0.75em;--pagination-nav-padding-right:0.75em;--pagination-disabled-color:var(--text-weak);--pagination-disabled-background-color:var(--border);--pagination-disabled-border-color:var(--border);--pagination-current-color:var(--link-invert);--pagination-current-background-color:var(--link);--pagination-current-border-color:var(--link);--pagination-ellipsis-color:var(--text-weak);--pagination-shadow-inset:inset 0 0.0625em 0.125em hsla(var(--scheme-h),var(--scheme-s),var(--scheme-invert-l),0.2);--pagination-selected-item-h:var(--link-h);--pagination-selected-item-s:var(--link-s);--pagination-selected-item-l:var(--link-l);--pagination-selected-item-background-l:var(--link-l);--pagination-selected-item-border-l:var(--link-l);--pagination-selected-item-color-l:var(--link-invert-l);font-size:var(--size-normal);margin:var(--pagination-margin)}.pagination.is-small{font-size:var(--size-small)}.pagination.is-medium{font-size:var(--size-medium)}.pagination.is-large{font-size:var(--size-large)}.pagination.is-rounded .pagination-link{border-radius:var(--radius-rounded)}.pagination,.pagination-list{align-items:center;display:flex;justify-content:center;text-align:center}.pagination-link{color:hsl(var(--pagination-item-h),var(--pagination-item-s),var(--pagination-item-color-l));font-size:var(--pagination-item-font-size);justify-content:center;margin:var(--pagination-item-margin);padding-left:var(--pagination-item-padding-left);padding-right:var(--pagination-item-padding-right);text-align:center}.pagination-link{background-color:hsl(var(--pagination-item-h),var(--pagination-item-s),calc(var(--pagination-item-background-l) + var(--pagination-item-background-l-delta)));border-color:hsl(var(--pagination-item-h),var(--pagination-item-s),calc(var(--pagination-item-border-l) + var(--pagination-item-border-l-delta)));border-style:var(--pagination-item-border-style);border-width:var(--pagination-item-border-width);box-shadow:0 .0625em .125em hsla(var(--pagination-item-outer-shadow-h),var(--pagination-item-outer-shadow-s),var(--pagination-item-outer-shadow-l),var(--pagination-item-outer-shadow-a)),0 .125em .25em hsla(var(--pagination-item-outer-shadow-h),var(--pagination-item-outer-shadow-s),var(--pagination-item-outer-shadow-l),var(--pagination-item-outer-shadow-a));color:hsl(var(--pagination-item-h),var(--pagination-item-s),var(--pagination-item-color-l));min-width:var(--pagination-min-width);transition-duration:var(--duration);transition-property:background-color,border-color,box-shadow,color}.pagination-link:focus,.pagination-link:hover{--pagination-item-background-l-delta:var(--pagination-item-hover-background-l-delta);--pagination-item-border-l-delta:var(--pagination-item-hover-border-l-delta)}.pagination-link:active{box-shadow:var(--pagination-shadow-inset)}.pagination-link.is-disabled,.pagination-link[disabled]{background-color:var(--pagination-disabled-background-color);border-color:var(--pagination-disabled-border-color);box-shadow:none;color:var(--pagination-disabled-color);opacity:.5}.pagination-link.is-current{--pagination-item-h:var(--pagination-selected-item-h);--pagination-item-s:var(--pagination-selected-item-s);--pagination-item-l:var(--pagination-selected-item-l);--pagination-item-background-l:var(--pagination-selected-item-background-l);--pagination-item-border-l:var(--pagination-selected-item-border-l);--pagination-item-color-l:var(--pagination-selected-item-color-l)}.pagination-list{flex-wrap:wrap}.pagination-list li{list-style:none}@media screen and (max-width:768px){.pagination{flex-wrap:wrap}.pagination-list li{flex-grow:1;flex-shrink:1}}@media print,screen and (min-width:769px){.pagination-list{flex-grow:1;flex-shrink:1;justify-content:flex-start;order:1}.pagination-link{margin-bottom:0;margin-top:0}.pagination{justify-content:space-between;margin-bottom:0;margin-top:0}.pagination.is-centered .pagination-list{justify-content:center;order:2}}.panel{--panel-margin:var(--block-spacing);--panel-item-border:1px solid var(--border-weak);--panel-radius:var(--radius-large);--panel-shadow:var(--shadow);--panel-heading-line-height:1.25;--panel-heading-padding:1em 1.25em;--panel-heading-radius:var(--radius);--panel-heading-size:1.25em;--panel-heading-weight:var(--weight-bold);--panel-tabs-font-size:1em;--panel-tab-border-bottom-color:var(--border);--panel-tab-border-bottom-style:solid;--panel-tab-border-bottom-width:1px;--panel-tab-active-color:var(--link-active);--panel-list-item-color:var(--text);--panel-list-item-hover-color:var(--link);--panel-block-color:var(--text-strong);--panel-block-hover-background-color:var(--background);--panel-block-active-border-left-color:var(--link);--panel-block-active-color:var(--link-active);--panel-block-active-icon-color:var(--link);--panel-icon-color:var(--text-weak);--panel-h:var(--scheme-h);--panel-s:var(--scheme-s);--panel-color-l:var(--text-l);--panel-heading-background-l:var(--text-l);--panel-heading-color-l:var(--text-invert-l);border-radius:var(--panel-radius);box-shadow:var(--panel-shadow);font-size:var(--size-normal)}.panel:not(:last-child){margin-bottom:var(--panel-margin)}.panel.is-light{--panel-h:var(--light-h);--panel-s:var(--light-s);--panel-color-l:var(--light-l);--panel-heading-background-l:var(--light-l);--panel-heading-color-l:var(--light-invert-l)}.panel.is-primary{--panel-h:var(--primary-h);--panel-s:var(--primary-s);--panel-color-l:var(--primary-l);--panel-heading-background-l:var(--primary-l);--panel-heading-color-l:var(--primary-invert-l)}.panel.is-info{--panel-h:var(--info-h);--panel-s:var(--info-s);--panel-color-l:var(--info-l);--panel-heading-background-l:var(--info-l);--panel-heading-color-l:var(--info-invert-l)}.panel.is-success{--panel-h:var(--success-h);--panel-s:var(--success-s);--panel-color-l:var(--success-l);--panel-heading-background-l:var(--success-l);--panel-heading-color-l:var(--success-invert-l)}.panel.is-warning{--panel-h:var(--warning-h);--panel-s:var(--warning-s);--panel-color-l:var(--warning-l);--panel-heading-background-l:var(--warning-l);--panel-heading-color-l:var(--warning-invert-l)}.panel.is-danger{--panel-h:var(--danger-h);--panel-s:var(--danger-s);--panel-color-l:var(--danger-l);--panel-heading-background-l:var(--danger-l);--panel-heading-color-l:var(--danger-invert-l)}.panel-block:not(:last-child){border-bottom:var(--panel-item-border)}.panel-block{align-items:center;color:var(--panel-block-color);display:flex;justify-content:flex-start;padding:.75em 1em}.panel-block input[type=checkbox]{margin-inline-end:.75em}.panel-block>.control{flex-grow:1;flex-shrink:1;width:100%}.panel-block.is-active{border-left-color:var(--panel-block-active-border-left-color);color:var(--panel-block-active-color)}.panel-block:last-child{border-end-end-radius:var(--panel-radius);border-end-start-radius:var(--panel-radius)}a.panel-block,label.panel-block{cursor:pointer}a.panel-block:hover,label.panel-block:hover{background-color:var(--panel-block-hover-background-color)}.tabs{--tabs-border-bottom-color:var(--border);--tabs-border-bottom-style:solid;--tabs-border-bottom-width:1px;--tabs-link-color:var(--text);--tabs-link-hover-border-bottom-color:var(--text-strong);--tabs-link-hover-color:var(--text-strong);--tabs-link-active-border-bottom-color:var(--link-text);--tabs-link-active-color:var(--link-text);--tabs-link-padding:0.5em 1em;--tabs-boxed-link-radius:var(--radius);--tabs-boxed-link-hover-background-color:var(--background);--tabs-boxed-link-hover-border-bottom-color:var(--border);--tabs-boxed-link-active-background-color:var(--scheme-main);--tabs-boxed-link-active-border-color:var(--border);--tabs-boxed-link-active-border-bottom-color:transparent;--tabs-toggle-link-border-color:var(--border);--tabs-toggle-link-border-style:solid;--tabs-toggle-link-border-width:1px;--tabs-toggle-link-hover-background-color:var(--background);--tabs-toggle-link-hover-border-color:var(--border-hover);--tabs-toggle-link-radius:var(--radius);--tabs-toggle-link-active-background-color:var(--link);--tabs-toggle-link-active-border-color:var(--link);--tabs-toggle-link-active-color:var(--link-invert);-webkit-overflow-scrolling:touch;align-items:stretch;display:flex;font-size:var(--size-normal);justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}.tabs a{align-items:center;border-bottom:var(--tabs-border-bottom-width) var(--tabs-border-bottom-style) var(--tabs-border-bottom-color);color:var(--tabs-link-color);display:flex;justify-content:center;margin-bottom:calc(var(--tabs-border-bottom-width)*-1);padding:var(--tabs-link-padding);transition-duration:var(--duration);transition-property:background-color,border-color,color;vertical-align:top}.tabs a:hover{border-bottom-color:var(--tabs-link-hover-border-bottom-color);color:var(--tabs-link-hover-color)}.tabs li{display:block}.tabs li.is-active a{border-bottom-color:var(--tabs-link-active-border-bottom-color);color:var(--tabs-link-active-color)}.tabs ul{align-items:center;border-bottom:var(--tabs-border-bottom-width) var(--tabs-border-bottom-style) var(--tabs-border-bottom-color);display:flex;flex-grow:1;flex-shrink:0;justify-content:flex-start}.tabs ul.is-left{padding-right:.75em}.tabs .icon:first-child{margin-inline-end:.5em}.tabs .icon:last-child{margin-inline-start:.5em}.tabs.is-centered ul{justify-content:center}.tabs.is-boxed a{border:1px solid transparent;border-start-end-radius:var(--tabs-boxed-link-radius);border-start-start-radius:var(--tabs-boxed-link-radius)}.tabs.is-boxed a:hover{background-color:var(--tabs-boxed-link-hover-background-color);border-bottom-color:var(--tabs-boxed-link-hover-border-bottom-color)}.tabs.is-boxed li.is-active a{background-color:var(--tabs-boxed-link-active-background-color);border-color:var(--tabs-boxed-link-active-border-color);border-bottom-color:var(--tabs-boxed-link-active-border-bottom-color)!important}.tabs.is-fullwidth li{flex-grow:1;flex-shrink:0}.tabs.is-small{font-size:var(--size-small)}.tabs.is-medium{font-size:var(--size-medium)}.tabs.is-large{font-size:var(--size-large)} + +/* Bulma Components */.container{flex-grow:1;margin:0 auto;position:relative;width:100%}@media screen and (min-width:1024px){.container{max-width:960px}}@media screen and (min-width:1216px){.container:not(.is-max-tablet):not(.is-max-desktop){max-width:1152px}}@media screen and (min-width:1408px){.container:not(.is-max-tablet):not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}.footer{--footer-background-color:var(--scheme-main-bis);--footer-color:false;--footer-padding:3rem 1.5rem 6rem;background-color:var(--footer-background-color);padding:var(--footer-padding)}.level{--level-item-spacing:calc(var(--block-spacing)*0.5);align-items:center;display:flex;flex-direction:column;gap:var(--level-item-spacing);justify-content:space-between}.level code{border-radius:var(--radius)}.level img{display:inline-block;vertical-align:top}@media print,screen and (min-width:769px){.level{display:flex;flex-direction:row}.level>.level-item:not(.is-narrow){flex-grow:1}}.level-item{align-items:center;display:flex;flex-basis:auto;flex-grow:0;flex-shrink:0;justify-content:center}.level-item .subtitle,.level-item .title{margin-bottom:0}.level-left,.level-right{flex-basis:auto;flex-grow:0;flex-shrink:0;gap:calc(var(--block-spacing)*.5)}.level-left{align-items:center;display:flex;flex-direction:column;justify-content:flex-start}@media print,screen and (min-width:769px){.level-left{flex-direction:row}}.level-right{align-items:center;display:flex;flex-direction:column;justify-content:flex-end}@media print,screen and (min-width:769px){.level-right{flex-direction:row}}.section{--section-padding:3rem 1.5rem;--section-padding-desktop:3rem 3rem;--section-padding-medium:9rem 4.5rem;--section-padding-large:18rem 6rem;padding:var(--section-padding)}@media screen and (min-width:1024px){.section{padding:var(--section-padding-desktop)}.section.is-medium{padding:var(--section-padding-medium)}.section.is-large{padding:var(--section-padding-large)}} + +/* Bulma Form */.control,.input,.select,.textarea{--input-h:var(--scheme-h);--input-s:var(--scheme-s);--input-l:var(--scheme-main-l);--input-border-style:solid;--input-border-width:var(--control-border-width);--input-border-l:var(--border-l);--input-border-l-delta:0%;--input-border-color:hsl(var(--input-h),var(--input-s),calc(var(--input-border-l) + var(--input-border-l-delta)));--input-hover-border-l-delta:var(--hover-border-l-delta);--input-active-border-l-delta:var(--active-border-l-delta);--input-focus-h:var(--focus-h);--input-focus-s:var(--focus-s);--input-focus-l:var(--focus-l);--input-focus-shadow-size:var(--focus-shadow-size);--input-focus-shadow-alpha:var(--focus-shadow-alpha);--input-color-l:var(--text-strong-l);--input-background-l:var(--scheme-main-l);--input-background-l-delta:0%;--input-height:var(--control-height);--input-shadow:inset 0 0.0625em 0.125em hsla(var(--scheme-h),var(--scheme-s),var(--scheme-invert-l),0.05);--input-placeholder-color:hsla(var(--text-h),var(--text-s),var(--text-strong-l),0.3);--input-disabled-color:var(--text-weak);--input-disabled-background-color:var(--background);--input-disabled-border-color:var(--background);--input-disabled-placeholder-color:hsla(var(--text-h),var(--text-s),var(--text-weak-l),0.3);--input-arrow:var(--link);--input-icon-color:var(--text-light);--input-icon-hover-color:var(--text-weak);--input-icon-focus-color:var(--link);--input-radius:var(--radius)}.input,.select select,.textarea{background-color:hsl(var(--input-h),var(--input-s),calc(var(--input-background-l) + var(--input-background-l-delta)));border-color:var(--input-border-color);border-radius:var(--input-radius);color:hsl(var(--input-h),var(--input-s),var(--input-color-l))}.input::-moz-placeholder,.select select::-moz-placeholder,.textarea::-moz-placeholder{color:var(--input-placeholder-color)}.input::-webkit-input-placeholder,.select select::-webkit-input-placeholder,.textarea::-webkit-input-placeholder{color:var(--input-placeholder-color)}.input:-moz-placeholder,.select select:-moz-placeholder,.textarea:-moz-placeholder{color:var(--input-placeholder-color)}.input:-ms-input-placeholder,.select select:-ms-input-placeholder,.textarea:-ms-input-placeholder{color:var(--input-placeholder-color)}.input:hover,.select select:hover,.textarea:hover{--input-border-l-delta:var(--input-hover-border-l-delta)}.input:active,.is-active.input,.is-active.textarea,.select select.is-active,.select select:active,.textarea:active{--input-border-l-delta:var(--input-active-border-l-delta)}.input:focus,.input:focus-within,.select select:focus,.select select:focus-within,.textarea:focus,.textarea:focus-within{border-color:hsl(var(--input-focus-h),var(--input-focus-s),var(--input-focus-l));box-shadow:var(--input-focus-shadow-size) hsla(var(--input-focus-h),var(--input-focus-s),var(--input-focus-l),var(--input-focus-shadow-alpha))}.select select[disabled],[disabled].input,[disabled].textarea{background-color:var(--input-disabled-background-color);border-color:var(--input-disabled-border-color);box-shadow:none;color:var(--input-disabled-color)}.select select[disabled]::-moz-placeholder,[disabled].input::-moz-placeholder,[disabled].textarea::-moz-placeholder{color:var(--input-disabled-placeholder-color)}.select select[disabled]::-webkit-input-placeholder,[disabled].input::-webkit-input-placeholder,[disabled].textarea::-webkit-input-placeholder{color:var(--input-disabled-placeholder-color)}.select select[disabled]:-moz-placeholder,[disabled].input:-moz-placeholder,[disabled].textarea:-moz-placeholder{color:var(--input-disabled-placeholder-color)}.select select[disabled]:-ms-input-placeholder,[disabled].input:-ms-input-placeholder,[disabled].textarea:-ms-input-placeholder{color:var(--input-disabled-placeholder-color)} + +/* Bulma Form */.input,.textarea{box-shadow:inset 0 .0625em .125em hsla(var(--scheme-h),var(--scheme-s),var(--scheme-invert-l),.05);max-width:100%;width:100%}[readonly].input,[readonly].textarea{box-shadow:none}.is-light.input,.is-light.textarea{--input-h:var(--light-h);--input-s:var(--light-s);--input-l:var(--light-l);--input-focus-h:var(--light-h);--input-focus-s:var(--light-s);--input-focus-l:var(--light-l);--input-border-l:var(--light-l)}.is-primary.input,.is-primary.textarea{--input-h:var(--primary-h);--input-s:var(--primary-s);--input-l:var(--primary-l);--input-focus-h:var(--primary-h);--input-focus-s:var(--primary-s);--input-focus-l:var(--primary-l);--input-border-l:var(--primary-l)}.is-info.input,.is-info.textarea{--input-h:var(--info-h);--input-s:var(--info-s);--input-l:var(--info-l);--input-focus-h:var(--info-h);--input-focus-s:var(--info-s);--input-focus-l:var(--info-l);--input-border-l:var(--info-l)}.is-success.input,.is-success.textarea{--input-h:var(--success-h);--input-s:var(--success-s);--input-l:var(--success-l);--input-focus-h:var(--success-h);--input-focus-s:var(--success-s);--input-focus-l:var(--success-l);--input-border-l:var(--success-l)}.is-warning.input,.is-warning.textarea{--input-h:var(--warning-h);--input-s:var(--warning-s);--input-l:var(--warning-l);--input-focus-h:var(--warning-h);--input-focus-s:var(--warning-s);--input-focus-l:var(--warning-l);--input-border-l:var(--warning-l)}.is-danger.input,.is-danger.textarea{--input-h:var(--danger-h);--input-s:var(--danger-s);--input-l:var(--danger-l);--input-focus-h:var(--danger-h);--input-focus-s:var(--danger-s);--input-focus-l:var(--danger-l);--input-border-l:var(--danger-l)}.is-small.input,.is-small.textarea{border-radius:var(--radius-small);font-size:var(--size-small)}.is-medium.input,.is-medium.textarea{font-size:var(--size-medium)}.is-large.input,.is-large.textarea{font-size:var(--size-large)}.is-fullwidth.input,.is-fullwidth.textarea{display:block;width:100%}.is-inline.input,.is-inline.textarea{display:inline;width:auto}.input.is-rounded{border-radius:var(--radius-rounded);padding-left:calc(1.125em - 1px);padding-right:calc(1.125em - 1px)}.textarea{--textarea-padding:var(--control-padding-horizontal);--textarea-max-height:40em;--textarea-min-height:8em;display:block;max-width:100%;min-width:100%;padding:var(--textarea-padding);resize:vertical}.textarea:not([rows]){max-height:var(--textarea-max-height);min-height:var(--textarea-min-height)}.textarea[rows]{height:auto} + +/* Bulma Form */.checkbox{cursor:pointer;display:inline-block;line-height:1.25;position:relative}.checkbox input{cursor:pointer}.checkbox input[disabled],[disabled].checkbox{color:var(--text-weak);cursor:not-allowed} + +/* Bulma Form */.select{--input-h:var(--scheme-h);--input-s:var(--scheme-s);--input-border-style:solid;--input-border-width:1px;--input-border-l:var(--border-l);display:inline-block;max-width:100%;position:relative;vertical-align:top}.select:not(.is-multiple){height:var(--control-height)}.select:not(.is-multiple):not(.is-loading):after{inset-inline-end:1.125em;z-index:4}.select.is-rounded select{border-radius:var(--radius-rounded);padding-inline-start:1em}.select select{cursor:pointer;display:block;font-size:1em;max-width:100%;outline:none}.select select::-ms-expand{display:none}.select select[disabled]:hover{border-color:var(--background)}.select select:not([multiple]){padding-inline-end:2.5em}.select select[multiple]{height:auto;padding:0}.select select[multiple] option{padding:.5em 1em}.select.is-light{--input-h:var(--light-h);--input-s:var(--light-s);--input-l:var(--light-l);--input-focus-h:var(--light-h);--input-focus-s:var(--light-s);--input-focus-l:var(--light-l);--input-border-l:var(--light-l);--arrow-color:var(--light)}.select.is-primary{--input-h:var(--primary-h);--input-s:var(--primary-s);--input-l:var(--primary-l);--input-focus-h:var(--primary-h);--input-focus-s:var(--primary-s);--input-focus-l:var(--primary-l);--input-border-l:var(--primary-l);--arrow-color:var(--primary)}.select.is-info{--input-h:var(--info-h);--input-s:var(--info-s);--input-l:var(--info-l);--input-focus-h:var(--info-h);--input-focus-s:var(--info-s);--input-focus-l:var(--info-l);--input-border-l:var(--info-l);--arrow-color:var(--info)}.select.is-success{--input-h:var(--success-h);--input-s:var(--success-s);--input-l:var(--success-l);--input-focus-h:var(--success-h);--input-focus-s:var(--success-s);--input-focus-l:var(--success-l);--input-border-l:var(--success-l);--arrow-color:var(--success)}.select.is-warning{--input-h:var(--warning-h);--input-s:var(--warning-s);--input-l:var(--warning-l);--input-focus-h:var(--warning-h);--input-focus-s:var(--warning-s);--input-focus-l:var(--warning-l);--input-border-l:var(--warning-l);--arrow-color:var(--warning)}.select.is-danger{--input-h:var(--danger-h);--input-s:var(--danger-s);--input-l:var(--danger-l);--input-focus-h:var(--danger-h);--input-focus-s:var(--danger-s);--input-focus-l:var(--danger-l);--input-border-l:var(--danger-l);--arrow-color:var(--danger)}.select.is-small{border-radius:var(--radius-small);font-size:var(--size-small)}.select.is-medium{font-size:var(--size-medium)}.select.is-large{font-size:var(--size-large)}.select.is-disabled:after{border-color:var(--text-weak)!important;opacity:.5}.select.is-fullwidth,.select.is-fullwidth select{width:100%} + +/* Bulma Form */.file{--file-radius:var(--radius);--file-name-border-color:var(--border);--file-name-border-style:solid;--file-name-border-width:1px 1px 1px 0;--file-name-max-width:16em;--file-h:var(--scheme-h);--file-s:var(--scheme-s);--file-background-l:var(--scheme-main-ter-l);--file-background-l-delta:0%;--file-hover-background-l-delta:-5%;--file-active-background-l-delta:-10%;--file-border-l:var(--border-l);--file-border-l-delta:0%;--file-hover-border-l-delta:-10%;--file-active-border-l-delta:-20%;--file-cta-color-l:var(--text-strong-l);--file-name-color-l:var(--text-strong-l);--file-color-l-delta:0%;--file-hover-color-l-delta:-5%;--file-active-color-l-delta:-10%;align-items:stretch;display:flex;justify-content:flex-start;position:relative}.file.is-light{--file-h:var(--light-h);--file-s:var(--light-s);--file-background-l:var(--light-l);--file-border-l:var(--light-l);--file-cta-color-l:var(--light-invert-l);--file-name-color-l:var(--light-on-scheme-l)}.file.is-primary{--file-h:var(--primary-h);--file-s:var(--primary-s);--file-background-l:var(--primary-l);--file-border-l:var(--primary-l);--file-cta-color-l:var(--primary-invert-l);--file-name-color-l:var(--primary-on-scheme-l)}.file.is-info{--file-h:var(--info-h);--file-s:var(--info-s);--file-background-l:var(--info-l);--file-border-l:var(--info-l);--file-cta-color-l:var(--info-invert-l);--file-name-color-l:var(--info-on-scheme-l)}.file.is-success{--file-h:var(--success-h);--file-s:var(--success-s);--file-background-l:var(--success-l);--file-border-l:var(--success-l);--file-cta-color-l:var(--success-invert-l);--file-name-color-l:var(--success-on-scheme-l)}.file.is-warning{--file-h:var(--warning-h);--file-s:var(--warning-s);--file-background-l:var(--warning-l);--file-border-l:var(--warning-l);--file-cta-color-l:var(--warning-invert-l);--file-name-color-l:var(--warning-on-scheme-l)}.file.is-danger{--file-h:var(--danger-h);--file-s:var(--danger-s);--file-background-l:var(--danger-l);--file-border-l:var(--danger-l);--file-cta-color-l:var(--danger-invert-l);--file-name-color-l:var(--danger-on-scheme-l)}.file.is-small{font-size:var(--size-small)}.file.is-medium{font-size:var(--size-medium)}.file.is-large{font-size:var(--size-large)}.file.is-centered{justify-content:center} + +/* Bulma Form */:root{--label-color:var(--text-strong);--label-spacing:0.5em;--label-weight:var(--weight-semibold);--help-size:var(--size-small);--field-block-spacing:0.75rem}.label{color:var(--label-color);display:block;font-size:var(--size-normal);font-weight:var(--weight-semibold)}.label:not(:last-child){margin-bottom:var(--label-spacing)}.label.is-small{font-size:var(--size-small)}.label.is-medium{font-size:var(--size-medium)}.label.is-large{font-size:var(--size-large)}.help{display:block;font-size:var(--help-size);margin-top:.25rem}.help.is-light{color:hsl(var(--light-h),var(--light-s),var(--light-on-scheme-l))}.help.is-primary{color:hsl(var(--primary-h),var(--primary-s),var(--primary-on-scheme-l))}.help.is-info{color:hsl(var(--info-h),var(--info-s),var(--info-on-scheme-l))}.help.is-success{color:hsl(var(--success-h),var(--success-s),var(--success-on-scheme-l))}.help.is-warning{color:hsl(var(--warning-h),var(--warning-s),var(--warning-on-scheme-l))}.help.is-danger{color:hsl(var(--danger-h),var(--danger-s),var(--danger-on-scheme-l))}.field{--block-spacing:var(--field-block-spacing)}.field.has-addons{display:flex;justify-content:flex-start}.field.has-addons .control:not(:last-child){margin-inline-end:-1px}.field.has-addons .control:not(:first-child):not(:last-child) .button,.field.has-addons .control:not(:first-child):not(:last-child) .input,.field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}.field.has-addons .control:first-child:not(:only-child) .button,.field.has-addons .control:first-child:not(:only-child) .input,.field.has-addons .control:first-child:not(:only-child) .select select{border-end-end-radius:0;border-start-end-radius:0}.field.has-addons .control:last-child:not(:only-child) .button,.field.has-addons .control:last-child:not(:only-child) .input,.field.has-addons .control:last-child:not(:only-child) .select select{border-end-start-radius:0;border-start-start-radius:0}.field.has-addons .control .button:not([disabled]):hover,.field.has-addons .control .input:not([disabled]):hover,.field.has-addons .control .select select:not([disabled]):hover{z-index:2}.field.has-addons .control .button:not([disabled]).is-active,.field.has-addons .control .button:not([disabled]):active,.field.has-addons .control .button:not([disabled]):focus,.field.has-addons .control .input:not([disabled]).is-active,.field.has-addons .control .input:not([disabled]):active,.field.has-addons .control .input:not([disabled]):focus,.field.has-addons .control .select select:not([disabled]).is-active,.field.has-addons .control .select select:not([disabled]):active,.field.has-addons .control .select select:not([disabled]):focus{z-index:3}.field.has-addons .control .button:not([disabled]).is-active:hover,.field.has-addons .control .button:not([disabled]):active:hover,.field.has-addons .control .button:not([disabled]):focus:hover,.field.has-addons .control .input:not([disabled]).is-active:hover,.field.has-addons .control .input:not([disabled]):active:hover,.field.has-addons .control .input:not([disabled]):focus:hover,.field.has-addons .control .select select:not([disabled]).is-active:hover,.field.has-addons .control .select select:not([disabled]):active:hover,.field.has-addons .control .select select:not([disabled]):focus:hover{z-index:4}.field.has-addons .control.is-expanded{flex-grow:1;flex-shrink:1}.field.is-grouped{display:flex;gap:.75rem;justify-content:flex-start}.field.is-grouped>.control{flex-shrink:0}.field.is-grouped>.control.is-expanded{flex-grow:1;flex-shrink:1}@media print,screen and (min-width:769px){.field.is-horizontal{display:flex}}.field-body .field .field{margin-bottom:0}@media print,screen and (min-width:769px){.field-body{display:flex;flex-basis:0;flex-grow:5;flex-shrink:1}.field-body .field{margin-bottom:0}.field-body>.field{flex-shrink:1}.field-body>.field:not(.is-narrow){flex-grow:1}.field-body>.field:not(:last-child){margin-inline-end:.75rem}}.control{box-sizing:border-box;clear:both;font-size:var(--size-normal);position:relative;text-align:inherit}.control.has-icons-left .input:hover~.icon,.control.has-icons-left .select:hover~.icon{color:var(--input-icon-hover-color)}.control.has-icons-left .input:focus~.icon,.control.has-icons-left .select:focus~.icon{color:var(--input-icon-focus-color)}.control.has-icons-left .input.is-small~.icon,.control.has-icons-left .select.is-small~.icon{font-size:var(--size-small)}.control.has-icons-left .input.is-medium~.icon,.control.has-icons-left .select.is-medium~.icon{font-size:var(--size-medium)}.control.has-icons-left .input.is-large~.icon,.control.has-icons-left .select.is-large~.icon{font-size:var(--size-large)}.control.has-icons-left .icon{color:var(--input-icon-color);height:var(--input-height);pointer-events:none;position:absolute;top:0;width:var(--input-height);z-index:4}.control.has-icons-left .input,.control.has-icons-left .select select{padding-left:var(--input-height)}.control.has-icons-left .icon.is-left{left:0} + +/* Bulma Grid */:root{--column-gap:0.75rem}.column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:var(--column-gap)}@media print,screen and (min-width:769px){.column.is-narrow{flex:none;width:unset}.column.is-1{flex:none;width:8.3333333333%}.column.is-2{flex:none;width:16.6666666667%}.column.is-3{flex:none;width:25%}.column.is-4{flex:none;width:33.3333333333%}.column.is-5{flex:none;width:41.6666666667%}.column.is-6{flex:none;width:50%}}.columns{margin-inline-end:calc(var(--column-gap)*-1);margin-inline-start:calc(var(--column-gap)*-1);margin-top:calc(var(--column-gap)*-1)}.columns:last-child{margin-bottom:calc(var(--column-gap)*-1)}.columns:not(:last-child){margin-bottom:calc(var(--block-spacing) - var(--column-gap))}.columns.is-centered{justify-content:center}@media print,screen and (min-width:769px){.columns:not(.is-desktop){display:flex}}.columns.is-1{--column-gap:0.25rem}.columns.is-2{--column-gap:0.5rem}.columns.is-3{--column-gap:0.75rem}.columns.is-4{--column-gap:1rem}.columns.is-5{--column-gap:1.25rem}.columns.is-6{--column-gap:1.5rem}.cell{grid-column-end:span var(--grid-cell-column-span);grid-column-start:var(--grid-cell-column-start);grid-row-end:span var(--grid-cell-row-span);grid-row-start:var(--grid-cell-row-start)} + +/* Bulma Helpers */.has-text-white{color:hsl(var(--white-h),var(--white-s),var(--white-l))!important}.has-background-white{background-color:hsl(var(--white-h),var(--white-s),var(--white-l))!important}a.has-text-white:focus-visible,a.has-text-white:hover,button.has-text-white:focus-visible,button.has-text-white:hover,has-text-white.is-hoverable:focus-visible,has-text-white.is-hoverable:hover{color:hsl(var(--white-h),var(--white-s),calc(var(--white-l) + var(--hover-color-l-delta)))!important}a.has-text-white:active,button.has-text-white:active,has-text-white.is-hoverable:active{color:hsl(var(--white-h),var(--white-s),calc(var(--white-l) + var(--active-color-l-delta)))!important}a.has-background-white:focus-visible,a.has-background-white:hover,button.has-background-white:focus-visible,button.has-background-white:hover,has-background-white.is-hoverable:focus-visible,has-background-white.is-hoverable:hover{background-color:hsl(var(--white-h),var(--white-s),calc(var(--white-l) + var(--hover-background-l-delta)))!important}a.has-background-white:active,button.has-background-white:active,has-background-white.is-hoverable:active{background-color:hsl(var(--white-h),var(--white-s),calc(var(--white-l) + var(--active-background-l-delta)))!important}.has-text-light{color:hsl(var(--light-h),var(--light-s),var(--light-l))!important}a.has-text-light:focus-visible,a.has-text-light:hover,button.has-text-light:focus-visible,button.has-text-light:hover,has-text-light.is-hoverable:focus-visible,has-text-light.is-hoverable:hover{color:hsl(var(--light-h),var(--light-s),calc(var(--light-l) + var(--hover-color-l-delta)))!important}a.has-text-light:active,button.has-text-light:active,has-text-light.is-hoverable:active{color:hsl(var(--light-h),var(--light-s),calc(var(--light-l) + var(--active-color-l-delta)))!important}.has-text-dark{color:hsl(var(--dark-h),var(--dark-s),var(--dark-l))!important}a.has-text-dark:focus-visible,a.has-text-dark:hover,button.has-text-dark:focus-visible,button.has-text-dark:hover,has-text-dark.is-hoverable:focus-visible,has-text-dark.is-hoverable:hover{color:hsl(var(--dark-h),var(--dark-s),calc(var(--dark-l) + var(--hover-color-l-delta)))!important}a.has-text-dark:active,button.has-text-dark:active,has-text-dark.is-hoverable:active{color:hsl(var(--dark-h),var(--dark-s),calc(var(--dark-l) + var(--active-color-l-delta)))!important}.has-text-link{color:hsl(var(--link-h),var(--link-s),var(--link-l))!important}a.has-text-link:focus-visible,a.has-text-link:hover,button.has-text-link:focus-visible,button.has-text-link:hover,has-text-link.is-hoverable:focus-visible,has-text-link.is-hoverable:hover{color:hsl(var(--link-h),var(--link-s),calc(var(--link-l) + var(--hover-color-l-delta)))!important}a.has-text-link:active,button.has-text-link:active,has-text-link.is-hoverable:active{color:hsl(var(--link-h),var(--link-s),calc(var(--link-l) + var(--active-color-l-delta)))!important}.has-text-info{color:hsl(var(--info-h),var(--info-s),var(--info-l))!important}.has-background-info{background-color:hsl(var(--info-h),var(--info-s),var(--info-l))!important}a.has-text-info:focus-visible,a.has-text-info:hover,button.has-text-info:focus-visible,button.has-text-info:hover,has-text-info.is-hoverable:focus-visible,has-text-info.is-hoverable:hover{color:hsl(var(--info-h),var(--info-s),calc(var(--info-l) + var(--hover-color-l-delta)))!important}a.has-text-info:active,button.has-text-info:active,has-text-info.is-hoverable:active{color:hsl(var(--info-h),var(--info-s),calc(var(--info-l) + var(--active-color-l-delta)))!important}a.has-background-info:focus-visible,a.has-background-info:hover,button.has-background-info:focus-visible,button.has-background-info:hover,has-background-info.is-hoverable:focus-visible,has-background-info.is-hoverable:hover{background-color:hsl(var(--info-h),var(--info-s),calc(var(--info-l) + var(--hover-background-l-delta)))!important}a.has-background-info:active,button.has-background-info:active,has-background-info.is-hoverable:active{background-color:hsl(var(--info-h),var(--info-s),calc(var(--info-l) + var(--active-background-l-delta)))!important}.has-text-success{color:hsl(var(--success-h),var(--success-s),var(--success-l))!important}a.has-text-success:focus-visible,a.has-text-success:hover,button.has-text-success:focus-visible,button.has-text-success:hover,has-text-success.is-hoverable:focus-visible,has-text-success.is-hoverable:hover{color:hsl(var(--success-h),var(--success-s),calc(var(--success-l) + var(--hover-color-l-delta)))!important}a.has-text-success:active,button.has-text-success:active,has-text-success.is-hoverable:active{color:hsl(var(--success-h),var(--success-s),calc(var(--success-l) + var(--active-color-l-delta)))!important}.has-text-warning{color:hsl(var(--warning-h),var(--warning-s),var(--warning-l))!important}a.has-text-warning:focus-visible,a.has-text-warning:hover,button.has-text-warning:focus-visible,button.has-text-warning:hover,has-text-warning.is-hoverable:focus-visible,has-text-warning.is-hoverable:hover{color:hsl(var(--warning-h),var(--warning-s),calc(var(--warning-l) + var(--hover-color-l-delta)))!important}a.has-text-warning:active,button.has-text-warning:active,has-text-warning.is-hoverable:active{color:hsl(var(--warning-h),var(--warning-s),calc(var(--warning-l) + var(--active-color-l-delta)))!important}.has-text-danger{color:hsl(var(--danger-h),var(--danger-s),var(--danger-l))!important}a.has-text-danger:focus-visible,a.has-text-danger:hover,button.has-text-danger:focus-visible,button.has-text-danger:hover,has-text-danger.is-hoverable:focus-visible,has-text-danger.is-hoverable:hover{color:hsl(var(--danger-h),var(--danger-s),calc(var(--danger-l) + var(--hover-color-l-delta)))!important}a.has-text-danger:active,button.has-text-danger:active,has-text-danger.is-hoverable:active{color:hsl(var(--danger-h),var(--danger-s),calc(var(--danger-l) + var(--active-color-l-delta)))!important}.has-background-grey-dark{background-color:#404654!important}.has-text-grey{color:#69748c!important}.has-text-grey-light{color:#abb1bf!important}.has-background-white-ter{background-color:#f3f4f6!important}.is-flex-direction-column{flex-direction:column!important}.is-justify-content-space-between{justify-content:space-between!important}.is-justify-content-start{justify-content:start!important}.is-justify-content-left{justify-content:left!important}.is-align-items-center{align-items:center!important}.is-align-items-start{align-items:start!important}.is-flex-grow-0{flex-grow:0!important}.is-flex-grow-1{flex-grow:1!important}.is-flex-shrink-1{flex-shrink:1!important}.is-pulled-right{float:right!important}.is-relative{position:relative!important}.mr-0{margin-right:0!important}.mb-0{margin-bottom:0!important}.ml-0{margin-left:0!important}.mt-1{margin-top:.25rem!important}.mr-1{margin-right:.25rem!important}.mb-1{margin-bottom:.25rem!important}.mt-2{margin-top:.5rem!important}.mr-2{margin-right:.5rem!important}.mb-2{margin-bottom:.5rem!important}.ml-2{margin-left:.5rem!important}.m-3{margin:.75rem!important}.mt-3{margin-top:.75rem!important}.mr-3{margin-right:.75rem!important}.mb-3{margin-bottom:.75rem!important}.ml-3,.mx-3{margin-left:.75rem!important}.mx-3{margin-right:.75rem!important}.my-3{margin-bottom:.75rem!important;margin-top:.75rem!important}.mt-4{margin-top:1rem!important}.mb-4{margin-bottom:1rem!important}.m-5{margin:1.5rem!important}.mt-5{margin-top:1.5rem!important}.mr-5{margin-right:1.5rem!important}.mb-5{margin-bottom:1.5rem!important}.ml-5,.mx-5{margin-left:1.5rem!important}.mx-5{margin-right:1.5rem!important}.my-5{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.p-0{padding:0!important}.px-0{padding-left:0!important}.px-0{padding-right:0!important}.px-1{padding-left:.25rem!important}.px-1{padding-right:.25rem!important}.p-3{padding:.75rem!important}.pb-3{padding-bottom:.75rem!important}.px-3{padding-left:.75rem!important}.px-3{padding-right:.75rem!important}.py-3{padding-bottom:.75rem!important;padding-top:.75rem!important}.px-4{padding-left:1rem!important}.px-4{padding-right:1rem!important}.pt-5{padding-top:1.5rem!important}.pb-5{padding-bottom:1.5rem!important}.has-text-centered{text-align:center!important}.has-text-right{text-align:right!important}.is-italic{font-style:italic!important}.has-text-weight-light{font-weight:300!important}.has-text-weight-normal{font-weight:400!important}.has-text-weight-semibold{font-weight:600!important}.is-family-code{font-family:Inconsolata,Hack,SF Mono,Roboto Mono,Source Code Pro,Ubuntu Mono,monospace!important}.is-hidden{display:none!important}.is-block{display:block!important}.is-flex{display:flex!important}.is-inline{display:inline!important}.is-inline-block{display:inline-block!important} + +/* Bulma Themes */:root{--scheme-h:221;--scheme-s:14%;--light-l:90%;--light-invert-l:20%;--dark-l:20%;--dark-invert-l:90%;--soft-l:90%;--bold-l:20%;--soft-invert-l:20%;--bold-invert-l:90%;--hover-background-l-delta:-5%;--active-background-l-delta:-10%;--hover-border-l-delta:-10%;--active-border-l-delta:-20%;--hover-color-l-delta:-5%;--active-color-l-delta:-10%;--hover-shadow-a-delta:-0.05;--active-shadow-a-delta:-0.1;--scheme-brightness:light;--scheme-main-l:100%;--scheme-main-bis-l:98%;--scheme-main-ter-l:96%;--background-l:96%;--border-weak-l:93%;--border-l:86%;--text-weak-l:48%;--text-strong-l:21%;--text-title-l:14%;--scheme-invert-ter-l:14%;--scheme-invert-bis-l:7%;--scheme-invert-l:4%;--family-primary:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Lucida Sans Unicode,Lucida Grande,Arial,sans-serif;--family-secondary:Inter,SF Pro,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Helvetica,Arial,sans-serif;--family-code:Inconsolata,Hack,SF Mono,Roboto Mono,Source Code Pro,Ubuntu Mono,monospace;--size-small:0.75rem;--size-normal:1rem;--size-medium:1.25rem;--size-large:1.5rem;--weight-light:300;--weight-normal:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--weight-extrabold:800;--block-spacing:1.5rem;--duration:294ms;--easing:ease-out;--radius-small:0.25rem;--radius:0.375rem;--radius-medium:0.5em;--radius-large:0.75rem;--radius-rounded:9999px;--speed:86ms;--arrow-color:var(--link);--loading-color:var(--border);--burger-h:var(--link-h);--burger-s:var(--link-s);--burger-l:var(--link-l);--burger-border-radius:0.5em;--burger-gap:5px;--burger-item-height:2px;--burger-item-width:20px;--white:hsla(var(--white-h),var(--white-s),var(--white-l),1);--white-base:hsla(var(--white-h),var(--white-s),var(--white-l),1);--white-rgb:255,255,255;--white-h:221deg;--white-s:14%;--white-l:100%;--white-invert-l:4%;--white-invert:#090a0c;--white-on-scheme-l:35%;--white-on-scheme:hsla(var(--white-h),var(--white-s),var(--white-on-scheme-l),1);--black:hsla(var(--black-h),var(--black-s),var(--black-l),1);--black-base:hsla(var(--black-h),var(--black-s),var(--black-l),1);--black-rgb:8.772,9.6764,11.628;--black-h:221deg;--black-s:14%;--black-l:4%;--black-invert-l:100%;--black-invert:#fff;--black-on-scheme-l:4%;--black-on-scheme:hsla(var(--black-h),var(--black-s),var(--black-on-scheme-l),1);--light:hsla(var(--light-h),var(--light-s),var(--light-l),1);--light-base:hsla(var(--light-h),var(--light-s),var(--light-l),1);--light-rgb:243.372,244.2764,246.228;--light-h:221deg;--light-s:14%;--light-l:96%;--light-invert-l:21%;--light-invert:#2e333d;--light-on-scheme-l:36%;--light-on-scheme:hsla(var(--light-h),var(--light-s),var(--light-on-scheme-l),1);--dark:hsla(var(--dark-h),var(--dark-s),var(--dark-l),1);--dark-base:hsla(var(--dark-h),var(--dark-s),var(--dark-l),1);--dark-rgb:46.053,50.8011,61.047;--dark-h:221deg;--dark-s:14%;--dark-l:21%;--dark-invert-l:96%;--dark-invert:#f3f4f6;--dark-on-scheme-l:21%;--dark-on-scheme:hsla(var(--dark-h),var(--dark-s),var(--dark-on-scheme-l),1);--text:hsla(var(--text-h),var(--text-s),var(--text-l),1);--text-base:hsla(var(--text-h),var(--text-s),var(--text-l),1);--text-rgb:63.597,70.1539,84.303;--text-h:221deg;--text-s:14%;--text-l:29%;--text-00-l:0%;--text-05-l:4%;--text-10-l:9%;--text-15-l:14%;--text-20-l:19%;--text-25-l:24%;--text-30-l:29%;--text-35-l:34%;--text-40-l:39%;--text-45-l:44%;--text-50-l:49%;--text-55-l:54%;--text-60-l:59%;--text-65-l:64%;--text-70-l:69%;--text-75-l:74%;--text-80-l:79%;--text-85-l:84%;--text-90-l:89%;--text-95-l:94%;--text-100-l:99%;--text-00:hsla(var(--text-h),var(--text-s),var(--text-00-l),1);--text-00-invert-l:var(--text-60-l);--text-00-invert:hsla(var(--text-h),var(--text-s),var(--text-00-invert-l),1);--text-05:hsla(var(--text-h),var(--text-s),var(--text-05-l),1);--text-05-invert-l:var(--text-60-l);--text-05-invert:hsla(var(--text-h),var(--text-s),var(--text-05-invert-l),1);--text-10:hsla(var(--text-h),var(--text-s),var(--text-10-l),1);--text-10-invert-l:var(--text-70-l);--text-10-invert:hsla(var(--text-h),var(--text-s),var(--text-10-invert-l),1);--text-15:hsla(var(--text-h),var(--text-s),var(--text-15-l),1);--text-15-invert-l:var(--text-75-l);--text-15-invert:hsla(var(--text-h),var(--text-s),var(--text-15-invert-l),1);--text-20:hsla(var(--text-h),var(--text-s),var(--text-20-l),1);--text-20-invert-l:var(--text-85-l);--text-20-invert:hsla(var(--text-h),var(--text-s),var(--text-20-invert-l),1);--text-25:hsla(var(--text-h),var(--text-s),var(--text-25-l),1);--text-25-invert-l:var(--text-95-l);--text-25-invert:hsla(var(--text-h),var(--text-s),var(--text-25-invert-l),1);--text-30:hsla(var(--text-h),var(--text-s),var(--text-30-l),1);--text-30-invert-l:var(--text-100-l);--text-30-invert:hsla(var(--text-h),var(--text-s),var(--text-30-invert-l),1);--text-35:hsla(var(--text-h),var(--text-s),var(--text-35-l),1);--text-35-invert-l:var(--text-100-l);--text-35-invert:hsla(var(--text-h),var(--text-s),var(--text-35-invert-l),1);--text-40:hsla(var(--text-h),var(--text-s),var(--text-40-l),1);--text-40-invert-l:var(--text-100-l);--text-40-invert:hsla(var(--text-h),var(--text-s),var(--text-40-invert-l),1);--text-45:hsla(var(--text-h),var(--text-s),var(--text-45-l),1);--text-45-invert-l:var(--text-100-l);--text-45-invert:hsla(var(--text-h),var(--text-s),var(--text-45-invert-l),1);--text-50:hsla(var(--text-h),var(--text-s),var(--text-50-l),1);--text-50-invert-l:var(--text-100-l);--text-50-invert:hsla(var(--text-h),var(--text-s),var(--text-50-invert-l),1);--text-55:hsla(var(--text-h),var(--text-s),var(--text-55-l),1);--text-55-invert-l:var(--text-100-l);--text-55-invert:hsla(var(--text-h),var(--text-s),var(--text-55-invert-l),1);--text-60:hsla(var(--text-h),var(--text-s),var(--text-60-l),1);--text-60-invert-l:var(--text-05-l);--text-60-invert:hsla(var(--text-h),var(--text-s),var(--text-60-invert-l),1);--text-65:hsla(var(--text-h),var(--text-s),var(--text-65-l),1);--text-65-invert-l:var(--text-05-l);--text-65-invert:hsla(var(--text-h),var(--text-s),var(--text-65-invert-l),1);--text-70:hsla(var(--text-h),var(--text-s),var(--text-70-l),1);--text-70-invert-l:var(--text-10-l);--text-70-invert:hsla(var(--text-h),var(--text-s),var(--text-70-invert-l),1);--text-75:hsla(var(--text-h),var(--text-s),var(--text-75-l),1);--text-75-invert-l:var(--text-15-l);--text-75-invert:hsla(var(--text-h),var(--text-s),var(--text-75-invert-l),1);--text-80:hsla(var(--text-h),var(--text-s),var(--text-80-l),1);--text-80-invert-l:var(--text-15-l);--text-80-invert:hsla(var(--text-h),var(--text-s),var(--text-80-invert-l),1);--text-85:hsla(var(--text-h),var(--text-s),var(--text-85-l),1);--text-85-invert-l:var(--text-20-l);--text-85-invert:hsla(var(--text-h),var(--text-s),var(--text-85-invert-l),1);--text-90:hsla(var(--text-h),var(--text-s),var(--text-90-l),1);--text-90-invert-l:var(--text-20-l);--text-90-invert:hsla(var(--text-h),var(--text-s),var(--text-90-invert-l),1);--text-95:hsla(var(--text-h),var(--text-s),var(--text-95-l),1);--text-95-invert-l:var(--text-25-l);--text-95-invert:hsla(var(--text-h),var(--text-s),var(--text-95-invert-l),1);--text-100:hsla(var(--text-h),var(--text-s),var(--text-100-l),1);--text-100-invert-l:var(--text-25-l);--text-100-invert:hsla(var(--text-h),var(--text-s),var(--text-100-invert-l),1);--text-invert-l:var(--text-100-l);--text-invert:hsla(var(--text-h),var(--text-s),var(--text-invert-l),1);--text-light-l:var(--text-90-l);--text-light:hsla(var(--text-h),var(--text-s),var(--text-light-l),1);--text-light-invert-l:var(--text-20-l);--text-light-invert:hsla(var(--text-h),var(--text-s),var(--text-light-invert-l),1);--text-dark-l:var(--text-10-l);--text-dark:hsla(var(--text-h),var(--text-s),var(--text-dark-l),1);--text-dark-invert-l:var(--text-70-l);--text-dark-invert:hsla(var(--text-h),var(--text-s),var(--text-dark-invert-l),1);--text-soft:hsla(var(--text-h),var(--text-s),var(--soft-l),1);--text-bold:hsla(var(--text-h),var(--text-s),var(--bold-l),1);--text-soft-invert:hsla(var(--text-h),var(--text-s),var(--soft-invert-l),1);--text-bold-invert:hsla(var(--text-h),var(--text-s),var(--bold-invert-l),1);--text-on-scheme-l:29%;--text-on-scheme:hsla(var(--text-h),var(--text-s),var(--text-on-scheme-l),1);--primary:hsla(var(--primary-h),var(--primary-s),var(--primary-l),1);--primary-base:hsla(var(--primary-h),var(--primary-s),var(--primary-l),1);--primary-rgb:0,209.1,177.735;--primary-h:171deg;--primary-s:100%;--primary-l:41%;--primary-00-l:1%;--primary-05-l:6%;--primary-10-l:11%;--primary-15-l:16%;--primary-20-l:21%;--primary-25-l:26%;--primary-30-l:31%;--primary-35-l:36%;--primary-40-l:41%;--primary-45-l:46%;--primary-50-l:51%;--primary-55-l:56%;--primary-60-l:61%;--primary-65-l:66%;--primary-70-l:71%;--primary-75-l:76%;--primary-80-l:81%;--primary-85-l:86%;--primary-90-l:91%;--primary-95-l:96%;--primary-100-l:100%;--primary-00:hsla(var(--primary-h),var(--primary-s),var(--primary-00-l),1);--primary-00-invert-l:var(--primary-30-l);--primary-00-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-00-invert-l),1);--primary-05:hsla(var(--primary-h),var(--primary-s),var(--primary-05-l),1);--primary-05-invert-l:var(--primary-40-l);--primary-05-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-05-invert-l),1);--primary-10:hsla(var(--primary-h),var(--primary-s),var(--primary-10-l),1);--primary-10-invert-l:var(--primary-50-l);--primary-10-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-10-invert-l),1);--primary-15:hsla(var(--primary-h),var(--primary-s),var(--primary-15-l),1);--primary-15-invert-l:var(--primary-100-l);--primary-15-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-15-invert-l),1);--primary-20:hsla(var(--primary-h),var(--primary-s),var(--primary-20-l),1);--primary-20-invert-l:var(--primary-100-l);--primary-20-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-20-invert-l),1);--primary-25:hsla(var(--primary-h),var(--primary-s),var(--primary-25-l),1);--primary-25-invert-l:var(--primary-100-l);--primary-25-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-25-invert-l),1);--primary-30:hsla(var(--primary-h),var(--primary-s),var(--primary-30-l),1);--primary-30-invert-l:var(--primary-00-l);--primary-30-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-30-invert-l),1);--primary-35:hsla(var(--primary-h),var(--primary-s),var(--primary-35-l),1);--primary-35-invert-l:var(--primary-00-l);--primary-35-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-35-invert-l),1);--primary-40:hsla(var(--primary-h),var(--primary-s),var(--primary-40-l),1);--primary-40-invert-l:var(--primary-05-l);--primary-40-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-40-invert-l),1);--primary-45:hsla(var(--primary-h),var(--primary-s),var(--primary-45-l),1);--primary-45-invert-l:var(--primary-05-l);--primary-45-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-45-invert-l),1);--primary-50:hsla(var(--primary-h),var(--primary-s),var(--primary-50-l),1);--primary-50-invert-l:var(--primary-10-l);--primary-50-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-50-invert-l),1);--primary-55:hsla(var(--primary-h),var(--primary-s),var(--primary-55-l),1);--primary-55-invert-l:var(--primary-10-l);--primary-55-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-55-invert-l),1);--primary-60:hsla(var(--primary-h),var(--primary-s),var(--primary-60-l),1);--primary-60-invert-l:var(--primary-10-l);--primary-60-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-60-invert-l),1);--primary-65:hsla(var(--primary-h),var(--primary-s),var(--primary-65-l),1);--primary-65-invert-l:var(--primary-10-l);--primary-65-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-65-invert-l),1);--primary-70:hsla(var(--primary-h),var(--primary-s),var(--primary-70-l),1);--primary-70-invert-l:var(--primary-10-l);--primary-70-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-70-invert-l),1);--primary-75:hsla(var(--primary-h),var(--primary-s),var(--primary-75-l),1);--primary-75-invert-l:var(--primary-10-l);--primary-75-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-75-invert-l),1);--primary-80:hsla(var(--primary-h),var(--primary-s),var(--primary-80-l),1);--primary-80-invert-l:var(--primary-10-l);--primary-80-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-80-invert-l),1);--primary-85:hsla(var(--primary-h),var(--primary-s),var(--primary-85-l),1);--primary-85-invert-l:var(--primary-10-l);--primary-85-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-85-invert-l),1);--primary-90:hsla(var(--primary-h),var(--primary-s),var(--primary-90-l),1);--primary-90-invert-l:var(--primary-10-l);--primary-90-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-90-invert-l),1);--primary-95:hsla(var(--primary-h),var(--primary-s),var(--primary-95-l),1);--primary-95-invert-l:var(--primary-10-l);--primary-95-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-95-invert-l),1);--primary-100:hsla(var(--primary-h),var(--primary-s),var(--primary-100-l),1);--primary-100-invert-l:var(--primary-15-l);--primary-100-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-100-invert-l),1);--primary-invert-l:var(--primary-05-l);--primary-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-invert-l),1);--primary-light-l:var(--primary-90-l);--primary-light:hsla(var(--primary-h),var(--primary-s),var(--primary-light-l),1);--primary-light-invert-l:var(--primary-10-l);--primary-light-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-light-invert-l),1);--primary-dark-l:var(--primary-10-l);--primary-dark:hsla(var(--primary-h),var(--primary-s),var(--primary-dark-l),1);--primary-dark-invert-l:var(--primary-50-l);--primary-dark-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-dark-invert-l),1);--primary-soft:hsla(var(--primary-h),var(--primary-s),var(--soft-l),1);--primary-bold:hsla(var(--primary-h),var(--primary-s),var(--bold-l),1);--primary-soft-invert:hsla(var(--primary-h),var(--primary-s),var(--soft-invert-l),1);--primary-bold-invert:hsla(var(--primary-h),var(--primary-s),var(--bold-invert-l),1);--primary-on-scheme-l:21%;--primary-on-scheme:hsla(var(--primary-h),var(--primary-s),var(--primary-on-scheme-l),1);--link:hsla(var(--link-h),var(--link-s),var(--link-l),1);--link-base:hsla(var(--link-h),var(--link-s),var(--link-l),1);--link-rgb:66.3,88.315,255;--link-h:233deg;--link-s:100%;--link-l:63%;--link-00-l:0%;--link-05-l:3%;--link-10-l:8%;--link-15-l:13%;--link-20-l:18%;--link-25-l:23%;--link-30-l:28%;--link-35-l:33%;--link-40-l:38%;--link-45-l:43%;--link-50-l:48%;--link-55-l:53%;--link-60-l:58%;--link-65-l:63%;--link-70-l:68%;--link-75-l:73%;--link-80-l:78%;--link-85-l:83%;--link-90-l:88%;--link-95-l:93%;--link-100-l:98%;--link-00:hsla(var(--link-h),var(--link-s),var(--link-00-l),1);--link-00-invert-l:var(--link-75-l);--link-00-invert:hsla(var(--link-h),var(--link-s),var(--link-00-invert-l),1);--link-05:hsla(var(--link-h),var(--link-s),var(--link-05-l),1);--link-05-invert-l:var(--link-75-l);--link-05-invert:hsla(var(--link-h),var(--link-s),var(--link-05-invert-l),1);--link-10:hsla(var(--link-h),var(--link-s),var(--link-10-l),1);--link-10-invert-l:var(--link-75-l);--link-10-invert:hsla(var(--link-h),var(--link-s),var(--link-10-invert-l),1);--link-15:hsla(var(--link-h),var(--link-s),var(--link-15-l),1);--link-15-invert-l:var(--link-80-l);--link-15-invert:hsla(var(--link-h),var(--link-s),var(--link-15-invert-l),1);--link-20:hsla(var(--link-h),var(--link-s),var(--link-20-l),1);--link-20-invert-l:var(--link-80-l);--link-20-invert:hsla(var(--link-h),var(--link-s),var(--link-20-invert-l),1);--link-25:hsla(var(--link-h),var(--link-s),var(--link-25-l),1);--link-25-invert-l:var(--link-85-l);--link-25-invert:hsla(var(--link-h),var(--link-s),var(--link-25-invert-l),1);--link-30:hsla(var(--link-h),var(--link-s),var(--link-30-l),1);--link-30-invert-l:var(--link-90-l);--link-30-invert:hsla(var(--link-h),var(--link-s),var(--link-30-invert-l),1);--link-35:hsla(var(--link-h),var(--link-s),var(--link-35-l),1);--link-35-invert-l:var(--link-90-l);--link-35-invert:hsla(var(--link-h),var(--link-s),var(--link-35-invert-l),1);--link-40:hsla(var(--link-h),var(--link-s),var(--link-40-l),1);--link-40-invert-l:var(--link-95-l);--link-40-invert:hsla(var(--link-h),var(--link-s),var(--link-40-invert-l),1);--link-45:hsla(var(--link-h),var(--link-s),var(--link-45-l),1);--link-45-invert-l:var(--link-95-l);--link-45-invert:hsla(var(--link-h),var(--link-s),var(--link-45-invert-l),1);--link-50:hsla(var(--link-h),var(--link-s),var(--link-50-l),1);--link-50-invert-l:var(--link-100-l);--link-50-invert:hsla(var(--link-h),var(--link-s),var(--link-50-invert-l),1);--link-55:hsla(var(--link-h),var(--link-s),var(--link-55-l),1);--link-55-invert-l:var(--link-100-l);--link-55-invert:hsla(var(--link-h),var(--link-s),var(--link-55-invert-l),1);--link-60:hsla(var(--link-h),var(--link-s),var(--link-60-l),1);--link-60-invert-l:var(--link-100-l);--link-60-invert:hsla(var(--link-h),var(--link-s),var(--link-60-invert-l),1);--link-65:hsla(var(--link-h),var(--link-s),var(--link-65-l),1);--link-65-invert-l:var(--link-100-l);--link-65-invert:hsla(var(--link-h),var(--link-s),var(--link-65-invert-l),1);--link-70:hsla(var(--link-h),var(--link-s),var(--link-70-l),1);--link-70-invert-l:var(--link-100-l);--link-70-invert:hsla(var(--link-h),var(--link-s),var(--link-70-invert-l),1);--link-75:hsla(var(--link-h),var(--link-s),var(--link-75-l),1);--link-75-invert-l:var(--link-10-l);--link-75-invert:hsla(var(--link-h),var(--link-s),var(--link-75-invert-l),1);--link-80:hsla(var(--link-h),var(--link-s),var(--link-80-l),1);--link-80-invert-l:var(--link-20-l);--link-80-invert:hsla(var(--link-h),var(--link-s),var(--link-80-invert-l),1);--link-85:hsla(var(--link-h),var(--link-s),var(--link-85-l),1);--link-85-invert-l:var(--link-25-l);--link-85-invert:hsla(var(--link-h),var(--link-s),var(--link-85-invert-l),1);--link-90:hsla(var(--link-h),var(--link-s),var(--link-90-l),1);--link-90-invert-l:var(--link-35-l);--link-90-invert:hsla(var(--link-h),var(--link-s),var(--link-90-invert-l),1);--link-95:hsla(var(--link-h),var(--link-s),var(--link-95-l),1);--link-95-invert-l:var(--link-45-l);--link-95-invert:hsla(var(--link-h),var(--link-s),var(--link-95-invert-l),1);--link-100:hsla(var(--link-h),var(--link-s),var(--link-100-l),1);--link-100-invert-l:var(--link-50-l);--link-100-invert:hsla(var(--link-h),var(--link-s),var(--link-100-invert-l),1);--link-invert-l:var(--link-100-l);--link-invert:hsla(var(--link-h),var(--link-s),var(--link-invert-l),1);--link-light-l:var(--link-90-l);--link-light:hsla(var(--link-h),var(--link-s),var(--link-light-l),1);--link-light-invert-l:var(--link-35-l);--link-light-invert:hsla(var(--link-h),var(--link-s),var(--link-light-invert-l),1);--link-dark-l:var(--link-10-l);--link-dark:hsla(var(--link-h),var(--link-s),var(--link-dark-l),1);--link-dark-invert-l:var(--link-75-l);--link-dark-invert:hsla(var(--link-h),var(--link-s),var(--link-dark-invert-l),1);--link-soft:hsla(var(--link-h),var(--link-s),var(--soft-l),1);--link-bold:hsla(var(--link-h),var(--link-s),var(--bold-l),1);--link-soft-invert:hsla(var(--link-h),var(--link-s),var(--soft-invert-l),1);--link-bold-invert:hsla(var(--link-h),var(--link-s),var(--bold-invert-l),1);--link-on-scheme-l:58%;--link-on-scheme:hsla(var(--link-h),var(--link-s),var(--link-on-scheme-l),1);--info:hsla(var(--info-h),var(--info-s),var(--info-l),1);--info-base:hsla(var(--info-h),var(--info-s),var(--info-l),1);--info-rgb:102,209.1,255;--info-h:198deg;--info-s:100%;--info-l:70%;--info-00-l:0%;--info-05-l:5%;--info-10-l:10%;--info-15-l:15%;--info-20-l:20%;--info-25-l:25%;--info-30-l:30%;--info-35-l:35%;--info-40-l:40%;--info-45-l:45%;--info-50-l:50%;--info-55-l:55%;--info-60-l:60%;--info-65-l:65%;--info-70-l:70%;--info-75-l:75%;--info-80-l:80%;--info-85-l:85%;--info-90-l:90%;--info-95-l:95%;--info-100-l:100%;--info-00:hsla(var(--info-h),var(--info-s),var(--info-00-l),1);--info-00-invert-l:var(--info-45-l);--info-00-invert:hsla(var(--info-h),var(--info-s),var(--info-00-invert-l),1);--info-05:hsla(var(--info-h),var(--info-s),var(--info-05-l),1);--info-05-invert-l:var(--info-50-l);--info-05-invert:hsla(var(--info-h),var(--info-s),var(--info-05-invert-l),1);--info-10:hsla(var(--info-h),var(--info-s),var(--info-10-l),1);--info-10-invert-l:var(--info-60-l);--info-10-invert:hsla(var(--info-h),var(--info-s),var(--info-10-invert-l),1);--info-15:hsla(var(--info-h),var(--info-s),var(--info-15-l),1);--info-15-invert-l:var(--info-80-l);--info-15-invert:hsla(var(--info-h),var(--info-s),var(--info-15-invert-l),1);--info-20:hsla(var(--info-h),var(--info-s),var(--info-20-l),1);--info-20-invert-l:var(--info-95-l);--info-20-invert:hsla(var(--info-h),var(--info-s),var(--info-20-invert-l),1);--info-25:hsla(var(--info-h),var(--info-s),var(--info-25-l),1);--info-25-invert-l:var(--info-100-l);--info-25-invert:hsla(var(--info-h),var(--info-s),var(--info-25-invert-l),1);--info-30:hsla(var(--info-h),var(--info-s),var(--info-30-l),1);--info-30-invert-l:var(--info-100-l);--info-30-invert:hsla(var(--info-h),var(--info-s),var(--info-30-invert-l),1);--info-35:hsla(var(--info-h),var(--info-s),var(--info-35-l),1);--info-35-invert-l:var(--info-100-l);--info-35-invert:hsla(var(--info-h),var(--info-s),var(--info-35-invert-l),1);--info-40:hsla(var(--info-h),var(--info-s),var(--info-40-l),1);--info-40-invert-l:var(--info-100-l);--info-40-invert:hsla(var(--info-h),var(--info-s),var(--info-40-invert-l),1);--info-45:hsla(var(--info-h),var(--info-s),var(--info-45-l),1);--info-45-invert-l:var(--info-00-l);--info-45-invert:hsla(var(--info-h),var(--info-s),var(--info-45-invert-l),1);--info-50:hsla(var(--info-h),var(--info-s),var(--info-50-l),1);--info-50-invert-l:var(--info-05-l);--info-50-invert:hsla(var(--info-h),var(--info-s),var(--info-50-invert-l),1);--info-55:hsla(var(--info-h),var(--info-s),var(--info-55-l),1);--info-55-invert-l:var(--info-05-l);--info-55-invert:hsla(var(--info-h),var(--info-s),var(--info-55-invert-l),1);--info-60:hsla(var(--info-h),var(--info-s),var(--info-60-l),1);--info-60-invert-l:var(--info-10-l);--info-60-invert:hsla(var(--info-h),var(--info-s),var(--info-60-invert-l),1);--info-65:hsla(var(--info-h),var(--info-s),var(--info-65-l),1);--info-65-invert-l:var(--info-10-l);--info-65-invert:hsla(var(--info-h),var(--info-s),var(--info-65-invert-l),1);--info-70:hsla(var(--info-h),var(--info-s),var(--info-70-l),1);--info-70-invert-l:var(--info-10-l);--info-70-invert:hsla(var(--info-h),var(--info-s),var(--info-70-invert-l),1);--info-75:hsla(var(--info-h),var(--info-s),var(--info-75-l),1);--info-75-invert-l:var(--info-10-l);--info-75-invert:hsla(var(--info-h),var(--info-s),var(--info-75-invert-l),1);--info-80:hsla(var(--info-h),var(--info-s),var(--info-80-l),1);--info-80-invert-l:var(--info-15-l);--info-80-invert:hsla(var(--info-h),var(--info-s),var(--info-80-invert-l),1);--info-85:hsla(var(--info-h),var(--info-s),var(--info-85-l),1);--info-85-invert-l:var(--info-15-l);--info-85-invert:hsla(var(--info-h),var(--info-s),var(--info-85-invert-l),1);--info-90:hsla(var(--info-h),var(--info-s),var(--info-90-l),1);--info-90-invert-l:var(--info-15-l);--info-90-invert:hsla(var(--info-h),var(--info-s),var(--info-90-invert-l),1);--info-95:hsla(var(--info-h),var(--info-s),var(--info-95-l),1);--info-95-invert-l:var(--info-20-l);--info-95-invert:hsla(var(--info-h),var(--info-s),var(--info-95-invert-l),1);--info-100:hsla(var(--info-h),var(--info-s),var(--info-100-l),1);--info-100-invert-l:var(--info-20-l);--info-100-invert:hsla(var(--info-h),var(--info-s),var(--info-100-invert-l),1);--info-invert-l:var(--info-10-l);--info-invert:hsla(var(--info-h),var(--info-s),var(--info-invert-l),1);--info-light-l:var(--info-90-l);--info-light:hsla(var(--info-h),var(--info-s),var(--info-light-l),1);--info-light-invert-l:var(--info-15-l);--info-light-invert:hsla(var(--info-h),var(--info-s),var(--info-light-invert-l),1);--info-dark-l:var(--info-10-l);--info-dark:hsla(var(--info-h),var(--info-s),var(--info-dark-l),1);--info-dark-invert-l:var(--info-60-l);--info-dark-invert:hsla(var(--info-h),var(--info-s),var(--info-dark-invert-l),1);--info-soft:hsla(var(--info-h),var(--info-s),var(--soft-l),1);--info-bold:hsla(var(--info-h),var(--info-s),var(--bold-l),1);--info-soft-invert:hsla(var(--info-h),var(--info-s),var(--soft-invert-l),1);--info-bold-invert:hsla(var(--info-h),var(--info-s),var(--bold-invert-l),1);--info-on-scheme-l:25%;--info-on-scheme:hsla(var(--info-h),var(--info-s),var(--info-on-scheme-l),1);--success:hsla(var(--success-h),var(--success-s),var(--success-l),1);--success-base:hsla(var(--success-h),var(--success-s),var(--success-l),1);--success-rgb:71.6295,198.6705,141.50205;--success-h:153deg;--success-s:53%;--success-l:53%;--success-00-l:0%;--success-05-l:3%;--success-10-l:8%;--success-15-l:13%;--success-20-l:18%;--success-25-l:23%;--success-30-l:28%;--success-35-l:33%;--success-40-l:38%;--success-45-l:43%;--success-50-l:48%;--success-55-l:53%;--success-60-l:58%;--success-65-l:63%;--success-70-l:68%;--success-75-l:73%;--success-80-l:78%;--success-85-l:83%;--success-90-l:88%;--success-95-l:93%;--success-100-l:98%;--success-00:hsla(var(--success-h),var(--success-s),var(--success-00-l),1);--success-00-invert-l:var(--success-45-l);--success-00-invert:hsla(var(--success-h),var(--success-s),var(--success-00-invert-l),1);--success-05:hsla(var(--success-h),var(--success-s),var(--success-05-l),1);--success-05-invert-l:var(--success-45-l);--success-05-invert:hsla(var(--success-h),var(--success-s),var(--success-05-invert-l),1);--success-10:hsla(var(--success-h),var(--success-s),var(--success-10-l),1);--success-10-invert-l:var(--success-55-l);--success-10-invert:hsla(var(--success-h),var(--success-s),var(--success-10-invert-l),1);--success-15:hsla(var(--success-h),var(--success-s),var(--success-15-l),1);--success-15-invert-l:var(--success-75-l);--success-15-invert:hsla(var(--success-h),var(--success-s),var(--success-15-invert-l),1);--success-20:hsla(var(--success-h),var(--success-s),var(--success-20-l),1);--success-20-invert-l:var(--success-95-l);--success-20-invert:hsla(var(--success-h),var(--success-s),var(--success-20-invert-l),1);--success-25:hsla(var(--success-h),var(--success-s),var(--success-25-l),1);--success-25-invert-l:var(--success-100-l);--success-25-invert:hsla(var(--success-h),var(--success-s),var(--success-25-invert-l),1);--success-30:hsla(var(--success-h),var(--success-s),var(--success-30-l),1);--success-30-invert-l:var(--success-100-l);--success-30-invert:hsla(var(--success-h),var(--success-s),var(--success-30-invert-l),1);--success-35:hsla(var(--success-h),var(--success-s),var(--success-35-l),1);--success-35-invert-l:var(--success-100-l);--success-35-invert:hsla(var(--success-h),var(--success-s),var(--success-35-invert-l),1);--success-40:hsla(var(--success-h),var(--success-s),var(--success-40-l),1);--success-40-invert-l:var(--success-100-l);--success-40-invert:hsla(var(--success-h),var(--success-s),var(--success-40-invert-l),1);--success-45:hsla(var(--success-h),var(--success-s),var(--success-45-l),1);--success-45-invert-l:var(--success-05-l);--success-45-invert:hsla(var(--success-h),var(--success-s),var(--success-45-invert-l),1);--success-50:hsla(var(--success-h),var(--success-s),var(--success-50-l),1);--success-50-invert-l:var(--success-05-l);--success-50-invert:hsla(var(--success-h),var(--success-s),var(--success-50-invert-l),1);--success-55:hsla(var(--success-h),var(--success-s),var(--success-55-l),1);--success-55-invert-l:var(--success-10-l);--success-55-invert:hsla(var(--success-h),var(--success-s),var(--success-55-invert-l),1);--success-60:hsla(var(--success-h),var(--success-s),var(--success-60-l),1);--success-60-invert-l:var(--success-10-l);--success-60-invert:hsla(var(--success-h),var(--success-s),var(--success-60-invert-l),1);--success-65:hsla(var(--success-h),var(--success-s),var(--success-65-l),1);--success-65-invert-l:var(--success-10-l);--success-65-invert:hsla(var(--success-h),var(--success-s),var(--success-65-invert-l),1);--success-70:hsla(var(--success-h),var(--success-s),var(--success-70-l),1);--success-70-invert-l:var(--success-10-l);--success-70-invert:hsla(var(--success-h),var(--success-s),var(--success-70-invert-l),1);--success-75:hsla(var(--success-h),var(--success-s),var(--success-75-l),1);--success-75-invert-l:var(--success-15-l);--success-75-invert:hsla(var(--success-h),var(--success-s),var(--success-75-invert-l),1);--success-80:hsla(var(--success-h),var(--success-s),var(--success-80-l),1);--success-80-invert-l:var(--success-15-l);--success-80-invert:hsla(var(--success-h),var(--success-s),var(--success-80-invert-l),1);--success-85:hsla(var(--success-h),var(--success-s),var(--success-85-l),1);--success-85-invert-l:var(--success-15-l);--success-85-invert:hsla(var(--success-h),var(--success-s),var(--success-85-invert-l),1);--success-90:hsla(var(--success-h),var(--success-s),var(--success-90-l),1);--success-90-invert-l:var(--success-15-l);--success-90-invert:hsla(var(--success-h),var(--success-s),var(--success-90-invert-l),1);--success-95:hsla(var(--success-h),var(--success-s),var(--success-95-l),1);--success-95-invert-l:var(--success-20-l);--success-95-invert:hsla(var(--success-h),var(--success-s),var(--success-95-invert-l),1);--success-100:hsla(var(--success-h),var(--success-s),var(--success-100-l),1);--success-100-invert-l:var(--success-20-l);--success-100-invert:hsla(var(--success-h),var(--success-s),var(--success-100-invert-l),1);--success-invert-l:var(--success-10-l);--success-invert:hsla(var(--success-h),var(--success-s),var(--success-invert-l),1);--success-light-l:var(--success-90-l);--success-light:hsla(var(--success-h),var(--success-s),var(--success-light-l),1);--success-light-invert-l:var(--success-15-l);--success-light-invert:hsla(var(--success-h),var(--success-s),var(--success-light-invert-l),1);--success-dark-l:var(--success-10-l);--success-dark:hsla(var(--success-h),var(--success-s),var(--success-dark-l),1);--success-dark-invert-l:var(--success-55-l);--success-dark-invert:hsla(var(--success-h),var(--success-s),var(--success-dark-invert-l),1);--success-soft:hsla(var(--success-h),var(--success-s),var(--soft-l),1);--success-bold:hsla(var(--success-h),var(--success-s),var(--bold-l),1);--success-soft-invert:hsla(var(--success-h),var(--success-s),var(--soft-invert-l),1);--success-bold-invert:hsla(var(--success-h),var(--success-s),var(--bold-invert-l),1);--success-on-scheme-l:23%;--success-on-scheme:hsla(var(--success-h),var(--success-s),var(--success-on-scheme-l),1);--warning:hsla(var(--warning-h),var(--warning-s),var(--warning-l),1);--warning-base:hsla(var(--warning-h),var(--warning-s),var(--warning-l),1);--warning-rgb:255,183.09,15.3;--warning-h:42deg;--warning-s:100%;--warning-l:53%;--warning-00-l:0%;--warning-05-l:3%;--warning-10-l:8%;--warning-15-l:13%;--warning-20-l:18%;--warning-25-l:23%;--warning-30-l:28%;--warning-35-l:33%;--warning-40-l:38%;--warning-45-l:43%;--warning-50-l:48%;--warning-55-l:53%;--warning-60-l:58%;--warning-65-l:63%;--warning-70-l:68%;--warning-75-l:73%;--warning-80-l:78%;--warning-85-l:83%;--warning-90-l:88%;--warning-95-l:93%;--warning-100-l:98%;--warning-00:hsla(var(--warning-h),var(--warning-s),var(--warning-00-l),1);--warning-00-invert-l:var(--warning-40-l);--warning-00-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-00-invert-l),1);--warning-05:hsla(var(--warning-h),var(--warning-s),var(--warning-05-l),1);--warning-05-invert-l:var(--warning-45-l);--warning-05-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-05-invert-l),1);--warning-10:hsla(var(--warning-h),var(--warning-s),var(--warning-10-l),1);--warning-10-invert-l:var(--warning-50-l);--warning-10-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-10-invert-l),1);--warning-15:hsla(var(--warning-h),var(--warning-s),var(--warning-15-l),1);--warning-15-invert-l:var(--warning-70-l);--warning-15-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-15-invert-l),1);--warning-20:hsla(var(--warning-h),var(--warning-s),var(--warning-20-l),1);--warning-20-invert-l:var(--warning-100-l);--warning-20-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-20-invert-l),1);--warning-25:hsla(var(--warning-h),var(--warning-s),var(--warning-25-l),1);--warning-25-invert-l:var(--warning-100-l);--warning-25-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-25-invert-l),1);--warning-30:hsla(var(--warning-h),var(--warning-s),var(--warning-30-l),1);--warning-30-invert-l:var(--warning-100-l);--warning-30-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-30-invert-l),1);--warning-35:hsla(var(--warning-h),var(--warning-s),var(--warning-35-l),1);--warning-35-invert-l:var(--warning-100-l);--warning-35-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-35-invert-l),1);--warning-40:hsla(var(--warning-h),var(--warning-s),var(--warning-40-l),1);--warning-40-invert-l:var(--warning-00-l);--warning-40-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-40-invert-l),1);--warning-45:hsla(var(--warning-h),var(--warning-s),var(--warning-45-l),1);--warning-45-invert-l:var(--warning-05-l);--warning-45-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-45-invert-l),1);--warning-50:hsla(var(--warning-h),var(--warning-s),var(--warning-50-l),1);--warning-50-invert-l:var(--warning-10-l);--warning-50-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-50-invert-l),1);--warning-55:hsla(var(--warning-h),var(--warning-s),var(--warning-55-l),1);--warning-55-invert-l:var(--warning-10-l);--warning-55-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-55-invert-l),1);--warning-60:hsla(var(--warning-h),var(--warning-s),var(--warning-60-l),1);--warning-60-invert-l:var(--warning-10-l);--warning-60-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-60-invert-l),1);--warning-65:hsla(var(--warning-h),var(--warning-s),var(--warning-65-l),1);--warning-65-invert-l:var(--warning-10-l);--warning-65-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-65-invert-l),1);--warning-70:hsla(var(--warning-h),var(--warning-s),var(--warning-70-l),1);--warning-70-invert-l:var(--warning-15-l);--warning-70-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-70-invert-l),1);--warning-75:hsla(var(--warning-h),var(--warning-s),var(--warning-75-l),1);--warning-75-invert-l:var(--warning-15-l);--warning-75-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-75-invert-l),1);--warning-80:hsla(var(--warning-h),var(--warning-s),var(--warning-80-l),1);--warning-80-invert-l:var(--warning-15-l);--warning-80-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-80-invert-l),1);--warning-85:hsla(var(--warning-h),var(--warning-s),var(--warning-85-l),1);--warning-85-invert-l:var(--warning-15-l);--warning-85-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-85-invert-l),1);--warning-90:hsla(var(--warning-h),var(--warning-s),var(--warning-90-l),1);--warning-90-invert-l:var(--warning-15-l);--warning-90-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-90-invert-l),1);--warning-95:hsla(var(--warning-h),var(--warning-s),var(--warning-95-l),1);--warning-95-invert-l:var(--warning-15-l);--warning-95-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-95-invert-l),1);--warning-100:hsla(var(--warning-h),var(--warning-s),var(--warning-100-l),1);--warning-100-invert-l:var(--warning-20-l);--warning-100-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-100-invert-l),1);--warning-invert-l:var(--warning-10-l);--warning-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-invert-l),1);--warning-light-l:var(--warning-90-l);--warning-light:hsla(var(--warning-h),var(--warning-s),var(--warning-light-l),1);--warning-light-invert-l:var(--warning-15-l);--warning-light-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-light-invert-l),1);--warning-dark-l:var(--warning-10-l);--warning-dark:hsla(var(--warning-h),var(--warning-s),var(--warning-dark-l),1);--warning-dark-invert-l:var(--warning-50-l);--warning-dark-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-dark-invert-l),1);--warning-soft:hsla(var(--warning-h),var(--warning-s),var(--soft-l),1);--warning-bold:hsla(var(--warning-h),var(--warning-s),var(--bold-l),1);--warning-soft-invert:hsla(var(--warning-h),var(--warning-s),var(--soft-invert-l),1);--warning-bold-invert:hsla(var(--warning-h),var(--warning-s),var(--bold-invert-l),1);--warning-on-scheme-l:23%;--warning-on-scheme:hsla(var(--warning-h),var(--warning-s),var(--warning-on-scheme-l),1);--danger:hsla(var(--danger-h),var(--danger-s),var(--danger-l),1);--danger-base:hsla(var(--danger-h),var(--danger-s),var(--danger-l),1);--danger-rgb:255,102,132.6;--danger-h:348deg;--danger-s:100%;--danger-l:70%;--danger-00-l:0%;--danger-05-l:5%;--danger-10-l:10%;--danger-15-l:15%;--danger-20-l:20%;--danger-25-l:25%;--danger-30-l:30%;--danger-35-l:35%;--danger-40-l:40%;--danger-45-l:45%;--danger-50-l:50%;--danger-55-l:55%;--danger-60-l:60%;--danger-65-l:65%;--danger-70-l:70%;--danger-75-l:75%;--danger-80-l:80%;--danger-85-l:85%;--danger-90-l:90%;--danger-95-l:95%;--danger-100-l:100%;--danger-00:hsla(var(--danger-h),var(--danger-s),var(--danger-00-l),1);--danger-00-invert-l:var(--danger-65-l);--danger-00-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-00-invert-l),1);--danger-05:hsla(var(--danger-h),var(--danger-s),var(--danger-05-l),1);--danger-05-invert-l:var(--danger-70-l);--danger-05-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-05-invert-l),1);--danger-10:hsla(var(--danger-h),var(--danger-s),var(--danger-10-l),1);--danger-10-invert-l:var(--danger-75-l);--danger-10-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-10-invert-l),1);--danger-15:hsla(var(--danger-h),var(--danger-s),var(--danger-15-l),1);--danger-15-invert-l:var(--danger-80-l);--danger-15-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-15-invert-l),1);--danger-20:hsla(var(--danger-h),var(--danger-s),var(--danger-20-l),1);--danger-20-invert-l:var(--danger-85-l);--danger-20-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-20-invert-l),1);--danger-25:hsla(var(--danger-h),var(--danger-s),var(--danger-25-l),1);--danger-25-invert-l:var(--danger-90-l);--danger-25-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-25-invert-l),1);--danger-30:hsla(var(--danger-h),var(--danger-s),var(--danger-30-l),1);--danger-30-invert-l:var(--danger-100-l);--danger-30-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-30-invert-l),1);--danger-35:hsla(var(--danger-h),var(--danger-s),var(--danger-35-l),1);--danger-35-invert-l:var(--danger-100-l);--danger-35-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-35-invert-l),1);--danger-40:hsla(var(--danger-h),var(--danger-s),var(--danger-40-l),1);--danger-40-invert-l:var(--danger-100-l);--danger-40-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-40-invert-l),1);--danger-45:hsla(var(--danger-h),var(--danger-s),var(--danger-45-l),1);--danger-45-invert-l:var(--danger-100-l);--danger-45-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-45-invert-l),1);--danger-50:hsla(var(--danger-h),var(--danger-s),var(--danger-50-l),1);--danger-50-invert-l:var(--danger-100-l);--danger-50-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-50-invert-l),1);--danger-55:hsla(var(--danger-h),var(--danger-s),var(--danger-55-l),1);--danger-55-invert-l:var(--danger-100-l);--danger-55-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-55-invert-l),1);--danger-60:hsla(var(--danger-h),var(--danger-s),var(--danger-60-l),1);--danger-60-invert-l:var(--danger-100-l);--danger-60-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-60-invert-l),1);--danger-65:hsla(var(--danger-h),var(--danger-s),var(--danger-65-l),1);--danger-65-invert-l:var(--danger-00-l);--danger-65-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-65-invert-l),1);--danger-70:hsla(var(--danger-h),var(--danger-s),var(--danger-70-l),1);--danger-70-invert-l:var(--danger-05-l);--danger-70-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-70-invert-l),1);--danger-75:hsla(var(--danger-h),var(--danger-s),var(--danger-75-l),1);--danger-75-invert-l:var(--danger-10-l);--danger-75-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-75-invert-l),1);--danger-80:hsla(var(--danger-h),var(--danger-s),var(--danger-80-l),1);--danger-80-invert-l:var(--danger-15-l);--danger-80-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-80-invert-l),1);--danger-85:hsla(var(--danger-h),var(--danger-s),var(--danger-85-l),1);--danger-85-invert-l:var(--danger-20-l);--danger-85-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-85-invert-l),1);--danger-90:hsla(var(--danger-h),var(--danger-s),var(--danger-90-l),1);--danger-90-invert-l:var(--danger-25-l);--danger-90-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-90-invert-l),1);--danger-95:hsla(var(--danger-h),var(--danger-s),var(--danger-95-l),1);--danger-95-invert-l:var(--danger-25-l);--danger-95-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-95-invert-l),1);--danger-100:hsla(var(--danger-h),var(--danger-s),var(--danger-100-l),1);--danger-100-invert-l:var(--danger-30-l);--danger-100-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-100-invert-l),1);--danger-invert-l:var(--danger-05-l);--danger-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-invert-l),1);--danger-light-l:var(--danger-90-l);--danger-light:hsla(var(--danger-h),var(--danger-s),var(--danger-light-l),1);--danger-light-invert-l:var(--danger-25-l);--danger-light-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-light-invert-l),1);--danger-dark-l:var(--danger-10-l);--danger-dark:hsla(var(--danger-h),var(--danger-s),var(--danger-dark-l),1);--danger-dark-invert-l:var(--danger-75-l);--danger-dark-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-dark-invert-l),1);--danger-soft:hsla(var(--danger-h),var(--danger-s),var(--soft-l),1);--danger-bold:hsla(var(--danger-h),var(--danger-s),var(--bold-l),1);--danger-soft-invert:hsla(var(--danger-h),var(--danger-s),var(--soft-invert-l),1);--danger-bold-invert:hsla(var(--danger-h),var(--danger-s),var(--bold-invert-l),1);--danger-on-scheme-l:40%;--danger-on-scheme:hsla(var(--danger-h),var(--danger-s),var(--danger-on-scheme-l),1);--black-bis:#14161a;--black-ter:#1f2229;--grey-darker:#2e333d;--grey-dark:#404654;--grey:#69748c;--grey-light:#abb1bf;--grey-lighter:#d6d9e0;--white-ter:#f3f4f6;--white-bis:#f9fafb;--shadow-h:221deg;--shadow-s:14%;--shadow-l:4%;--size-1:3rem;--size-2:2.5rem;--size-3:2rem;--size-4:1.5rem;--size-5:1.25rem;--size-6:1rem;--size-7:0.75rem;--scheme-main:hsl(var(--scheme-h),var(--scheme-s),var(--scheme-main-l));--scheme-main-bis:hsl(var(--scheme-h),var(--scheme-s),var(--scheme-main-bis-l));--scheme-main-ter:hsl(var(--scheme-h),var(--scheme-s),var(--scheme-main-ter-l));--background:hsl(var(--scheme-h),var(--scheme-s),var(--background-l));--background-hover:hsl(var(--scheme-h),var(--scheme-s),calc(var(--background-l) + var(--hover-background-l-delta)));--background-active:hsl(var(--scheme-h),var(--scheme-s),calc(var(--background-l) + var(--active-background-l-delta)));--border-weak:hsl(var(--scheme-h),var(--scheme-s),var(--border-weak-l));--border:hsl(var(--scheme-h),var(--scheme-s),var(--border-l));--border-hover:hsl(var(--scheme-h),var(--scheme-s),calc(var(--border-l) + var(--hover-border-l-delta)));--border-active:hsl(var(--scheme-h),var(--scheme-s),calc(var(--border-l) + var(--active-border-l-delta)));--text-weak:hsl(var(--text-h),var(--text-s),var(--text-weak-l));--text:hsl(var(--text-h),var(--text-s),var(--text-l));--text-strong:hsl(var(--text-h),var(--text-s),var(--text-strong-l));--scheme-invert-ter:hsl(var(--scheme-h),var(--scheme-s),var(--scheme-invert-ter-l));--scheme-invert-bis:hsl(var(--scheme-h),var(--scheme-s),var(--scheme-invert-bis-l));--scheme-invert:hsl(var(--scheme-h),var(--scheme-s),var(--scheme-invert-l));--link:hsl(var(--link-h),var(--link-s),var(--link-l));--link-text:hsl(var(--link-h),var(--link-s),var(--link-on-scheme-l));--link-text-hover:hsl(var(--link-h),var(--link-s),calc(var(--link-on-scheme-l) + var(--hover-color-l-delta)));--link-text-active:hsl(var(--link-h),var(--link-s),calc(var(--link-on-scheme-l) + var(--active-color-l-delta)));--focus-h:var(--link-h);--focus-s:var(--link-s);--focus-l:var(--link-l);--focus-offset:1px;--focus-style:solid;--focus-width:2px;--focus-shadow-size:0 0 0 0.1875em;--focus-shadow-alpha:0.25;--code:hsl(var(--danger-h),var(--danger-s),var(--danger-on-scheme-l));--code-background:var(--background);--pre:var(--text);--pre-background:var(--background);--shadow:0 0.5em 1em -0.125em hsla(var(--shadow-h),var(--shadow-s),var(--shadow-l),0.1),0 0px 0 1px hsla(var(--shadow-h),var(--shadow-s),var(--shadow-l),0.02)}@media (prefers-color-scheme:light){:root{--scheme-h:221;--scheme-s:14%;--light-l:90%;--light-invert-l:20%;--dark-l:20%;--dark-invert-l:90%;--soft-l:90%;--bold-l:20%;--soft-invert-l:20%;--bold-invert-l:90%;--hover-background-l-delta:-5%;--active-background-l-delta:-10%;--hover-border-l-delta:-10%;--active-border-l-delta:-20%;--hover-color-l-delta:-5%;--active-color-l-delta:-10%;--hover-shadow-a-delta:-0.05;--active-shadow-a-delta:-0.1;--scheme-brightness:light;--scheme-main-l:100%;--scheme-main-bis-l:98%;--scheme-main-ter-l:96%;--background-l:96%;--border-weak-l:93%;--border-l:86%;--text-weak-l:48%;--text-strong-l:21%;--text-title-l:14%;--scheme-invert-ter-l:14%;--scheme-invert-bis-l:7%;--scheme-invert-l:4%;--family-primary:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Lucida Sans Unicode,Lucida Grande,Arial,sans-serif;--family-secondary:Inter,SF Pro,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Helvetica,Arial,sans-serif;--family-code:Inconsolata,Hack,SF Mono,Roboto Mono,Source Code Pro,Ubuntu Mono,monospace;--size-small:0.75rem;--size-normal:1rem;--size-medium:1.25rem;--size-large:1.5rem;--weight-light:300;--weight-normal:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--weight-extrabold:800;--block-spacing:1.5rem;--duration:294ms;--easing:ease-out;--radius-small:0.25rem;--radius:0.375rem;--radius-medium:0.5em;--radius-large:0.75rem;--radius-rounded:9999px;--speed:86ms;--arrow-color:var(--link);--loading-color:var(--border);--burger-h:var(--link-h);--burger-s:var(--link-s);--burger-l:var(--link-l);--burger-border-radius:0.5em;--burger-gap:5px;--burger-item-height:2px;--burger-item-width:20px;--white:hsla(var(--white-h),var(--white-s),var(--white-l),1);--white-base:hsla(var(--white-h),var(--white-s),var(--white-l),1);--white-rgb:255,255,255;--white-h:221deg;--white-s:14%;--white-l:100%;--white-invert-l:4%;--white-invert:#090a0c;--white-on-scheme-l:35%;--white-on-scheme:hsla(var(--white-h),var(--white-s),var(--white-on-scheme-l),1);--black:hsla(var(--black-h),var(--black-s),var(--black-l),1);--black-base:hsla(var(--black-h),var(--black-s),var(--black-l),1);--black-rgb:8.772,9.6764,11.628;--black-h:221deg;--black-s:14%;--black-l:4%;--black-invert-l:100%;--black-invert:#fff;--black-on-scheme-l:4%;--black-on-scheme:hsla(var(--black-h),var(--black-s),var(--black-on-scheme-l),1);--light:hsla(var(--light-h),var(--light-s),var(--light-l),1);--light-base:hsla(var(--light-h),var(--light-s),var(--light-l),1);--light-rgb:243.372,244.2764,246.228;--light-h:221deg;--light-s:14%;--light-l:96%;--light-invert-l:21%;--light-invert:#2e333d;--light-on-scheme-l:36%;--light-on-scheme:hsla(var(--light-h),var(--light-s),var(--light-on-scheme-l),1);--dark:hsla(var(--dark-h),var(--dark-s),var(--dark-l),1);--dark-base:hsla(var(--dark-h),var(--dark-s),var(--dark-l),1);--dark-rgb:46.053,50.8011,61.047;--dark-h:221deg;--dark-s:14%;--dark-l:21%;--dark-invert-l:96%;--dark-invert:#f3f4f6;--dark-on-scheme-l:21%;--dark-on-scheme:hsla(var(--dark-h),var(--dark-s),var(--dark-on-scheme-l),1);--text:hsla(var(--text-h),var(--text-s),var(--text-l),1);--text-base:hsla(var(--text-h),var(--text-s),var(--text-l),1);--text-rgb:63.597,70.1539,84.303;--text-h:221deg;--text-s:14%;--text-l:29%;--text-00-l:0%;--text-05-l:4%;--text-10-l:9%;--text-15-l:14%;--text-20-l:19%;--text-25-l:24%;--text-30-l:29%;--text-35-l:34%;--text-40-l:39%;--text-45-l:44%;--text-50-l:49%;--text-55-l:54%;--text-60-l:59%;--text-65-l:64%;--text-70-l:69%;--text-75-l:74%;--text-80-l:79%;--text-85-l:84%;--text-90-l:89%;--text-95-l:94%;--text-100-l:99%;--text-00:hsla(var(--text-h),var(--text-s),var(--text-00-l),1);--text-00-invert-l:var(--text-60-l);--text-00-invert:hsla(var(--text-h),var(--text-s),var(--text-00-invert-l),1);--text-05:hsla(var(--text-h),var(--text-s),var(--text-05-l),1);--text-05-invert-l:var(--text-60-l);--text-05-invert:hsla(var(--text-h),var(--text-s),var(--text-05-invert-l),1);--text-10:hsla(var(--text-h),var(--text-s),var(--text-10-l),1);--text-10-invert-l:var(--text-70-l);--text-10-invert:hsla(var(--text-h),var(--text-s),var(--text-10-invert-l),1);--text-15:hsla(var(--text-h),var(--text-s),var(--text-15-l),1);--text-15-invert-l:var(--text-75-l);--text-15-invert:hsla(var(--text-h),var(--text-s),var(--text-15-invert-l),1);--text-20:hsla(var(--text-h),var(--text-s),var(--text-20-l),1);--text-20-invert-l:var(--text-85-l);--text-20-invert:hsla(var(--text-h),var(--text-s),var(--text-20-invert-l),1);--text-25:hsla(var(--text-h),var(--text-s),var(--text-25-l),1);--text-25-invert-l:var(--text-95-l);--text-25-invert:hsla(var(--text-h),var(--text-s),var(--text-25-invert-l),1);--text-30:hsla(var(--text-h),var(--text-s),var(--text-30-l),1);--text-30-invert-l:var(--text-100-l);--text-30-invert:hsla(var(--text-h),var(--text-s),var(--text-30-invert-l),1);--text-35:hsla(var(--text-h),var(--text-s),var(--text-35-l),1);--text-35-invert-l:var(--text-100-l);--text-35-invert:hsla(var(--text-h),var(--text-s),var(--text-35-invert-l),1);--text-40:hsla(var(--text-h),var(--text-s),var(--text-40-l),1);--text-40-invert-l:var(--text-100-l);--text-40-invert:hsla(var(--text-h),var(--text-s),var(--text-40-invert-l),1);--text-45:hsla(var(--text-h),var(--text-s),var(--text-45-l),1);--text-45-invert-l:var(--text-100-l);--text-45-invert:hsla(var(--text-h),var(--text-s),var(--text-45-invert-l),1);--text-50:hsla(var(--text-h),var(--text-s),var(--text-50-l),1);--text-50-invert-l:var(--text-100-l);--text-50-invert:hsla(var(--text-h),var(--text-s),var(--text-50-invert-l),1);--text-55:hsla(var(--text-h),var(--text-s),var(--text-55-l),1);--text-55-invert-l:var(--text-100-l);--text-55-invert:hsla(var(--text-h),var(--text-s),var(--text-55-invert-l),1);--text-60:hsla(var(--text-h),var(--text-s),var(--text-60-l),1);--text-60-invert-l:var(--text-05-l);--text-60-invert:hsla(var(--text-h),var(--text-s),var(--text-60-invert-l),1);--text-65:hsla(var(--text-h),var(--text-s),var(--text-65-l),1);--text-65-invert-l:var(--text-05-l);--text-65-invert:hsla(var(--text-h),var(--text-s),var(--text-65-invert-l),1);--text-70:hsla(var(--text-h),var(--text-s),var(--text-70-l),1);--text-70-invert-l:var(--text-10-l);--text-70-invert:hsla(var(--text-h),var(--text-s),var(--text-70-invert-l),1);--text-75:hsla(var(--text-h),var(--text-s),var(--text-75-l),1);--text-75-invert-l:var(--text-15-l);--text-75-invert:hsla(var(--text-h),var(--text-s),var(--text-75-invert-l),1);--text-80:hsla(var(--text-h),var(--text-s),var(--text-80-l),1);--text-80-invert-l:var(--text-15-l);--text-80-invert:hsla(var(--text-h),var(--text-s),var(--text-80-invert-l),1);--text-85:hsla(var(--text-h),var(--text-s),var(--text-85-l),1);--text-85-invert-l:var(--text-20-l);--text-85-invert:hsla(var(--text-h),var(--text-s),var(--text-85-invert-l),1);--text-90:hsla(var(--text-h),var(--text-s),var(--text-90-l),1);--text-90-invert-l:var(--text-20-l);--text-90-invert:hsla(var(--text-h),var(--text-s),var(--text-90-invert-l),1);--text-95:hsla(var(--text-h),var(--text-s),var(--text-95-l),1);--text-95-invert-l:var(--text-25-l);--text-95-invert:hsla(var(--text-h),var(--text-s),var(--text-95-invert-l),1);--text-100:hsla(var(--text-h),var(--text-s),var(--text-100-l),1);--text-100-invert-l:var(--text-25-l);--text-100-invert:hsla(var(--text-h),var(--text-s),var(--text-100-invert-l),1);--text-invert-l:var(--text-100-l);--text-invert:hsla(var(--text-h),var(--text-s),var(--text-invert-l),1);--text-light-l:var(--text-90-l);--text-light:hsla(var(--text-h),var(--text-s),var(--text-light-l),1);--text-light-invert-l:var(--text-20-l);--text-light-invert:hsla(var(--text-h),var(--text-s),var(--text-light-invert-l),1);--text-dark-l:var(--text-10-l);--text-dark:hsla(var(--text-h),var(--text-s),var(--text-dark-l),1);--text-dark-invert-l:var(--text-70-l);--text-dark-invert:hsla(var(--text-h),var(--text-s),var(--text-dark-invert-l),1);--text-soft:hsla(var(--text-h),var(--text-s),var(--soft-l),1);--text-bold:hsla(var(--text-h),var(--text-s),var(--bold-l),1);--text-soft-invert:hsla(var(--text-h),var(--text-s),var(--soft-invert-l),1);--text-bold-invert:hsla(var(--text-h),var(--text-s),var(--bold-invert-l),1);--text-on-scheme-l:29%;--text-on-scheme:hsla(var(--text-h),var(--text-s),var(--text-on-scheme-l),1);--primary:hsla(var(--primary-h),var(--primary-s),var(--primary-l),1);--primary-base:hsla(var(--primary-h),var(--primary-s),var(--primary-l),1);--primary-rgb:0,209.1,177.735;--primary-h:171deg;--primary-s:100%;--primary-l:41%;--primary-00-l:1%;--primary-05-l:6%;--primary-10-l:11%;--primary-15-l:16%;--primary-20-l:21%;--primary-25-l:26%;--primary-30-l:31%;--primary-35-l:36%;--primary-40-l:41%;--primary-45-l:46%;--primary-50-l:51%;--primary-55-l:56%;--primary-60-l:61%;--primary-65-l:66%;--primary-70-l:71%;--primary-75-l:76%;--primary-80-l:81%;--primary-85-l:86%;--primary-90-l:91%;--primary-95-l:96%;--primary-100-l:100%;--primary-00:hsla(var(--primary-h),var(--primary-s),var(--primary-00-l),1);--primary-00-invert-l:var(--primary-30-l);--primary-00-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-00-invert-l),1);--primary-05:hsla(var(--primary-h),var(--primary-s),var(--primary-05-l),1);--primary-05-invert-l:var(--primary-40-l);--primary-05-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-05-invert-l),1);--primary-10:hsla(var(--primary-h),var(--primary-s),var(--primary-10-l),1);--primary-10-invert-l:var(--primary-50-l);--primary-10-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-10-invert-l),1);--primary-15:hsla(var(--primary-h),var(--primary-s),var(--primary-15-l),1);--primary-15-invert-l:var(--primary-100-l);--primary-15-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-15-invert-l),1);--primary-20:hsla(var(--primary-h),var(--primary-s),var(--primary-20-l),1);--primary-20-invert-l:var(--primary-100-l);--primary-20-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-20-invert-l),1);--primary-25:hsla(var(--primary-h),var(--primary-s),var(--primary-25-l),1);--primary-25-invert-l:var(--primary-100-l);--primary-25-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-25-invert-l),1);--primary-30:hsla(var(--primary-h),var(--primary-s),var(--primary-30-l),1);--primary-30-invert-l:var(--primary-00-l);--primary-30-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-30-invert-l),1);--primary-35:hsla(var(--primary-h),var(--primary-s),var(--primary-35-l),1);--primary-35-invert-l:var(--primary-00-l);--primary-35-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-35-invert-l),1);--primary-40:hsla(var(--primary-h),var(--primary-s),var(--primary-40-l),1);--primary-40-invert-l:var(--primary-05-l);--primary-40-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-40-invert-l),1);--primary-45:hsla(var(--primary-h),var(--primary-s),var(--primary-45-l),1);--primary-45-invert-l:var(--primary-05-l);--primary-45-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-45-invert-l),1);--primary-50:hsla(var(--primary-h),var(--primary-s),var(--primary-50-l),1);--primary-50-invert-l:var(--primary-10-l);--primary-50-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-50-invert-l),1);--primary-55:hsla(var(--primary-h),var(--primary-s),var(--primary-55-l),1);--primary-55-invert-l:var(--primary-10-l);--primary-55-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-55-invert-l),1);--primary-60:hsla(var(--primary-h),var(--primary-s),var(--primary-60-l),1);--primary-60-invert-l:var(--primary-10-l);--primary-60-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-60-invert-l),1);--primary-65:hsla(var(--primary-h),var(--primary-s),var(--primary-65-l),1);--primary-65-invert-l:var(--primary-10-l);--primary-65-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-65-invert-l),1);--primary-70:hsla(var(--primary-h),var(--primary-s),var(--primary-70-l),1);--primary-70-invert-l:var(--primary-10-l);--primary-70-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-70-invert-l),1);--primary-75:hsla(var(--primary-h),var(--primary-s),var(--primary-75-l),1);--primary-75-invert-l:var(--primary-10-l);--primary-75-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-75-invert-l),1);--primary-80:hsla(var(--primary-h),var(--primary-s),var(--primary-80-l),1);--primary-80-invert-l:var(--primary-10-l);--primary-80-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-80-invert-l),1);--primary-85:hsla(var(--primary-h),var(--primary-s),var(--primary-85-l),1);--primary-85-invert-l:var(--primary-10-l);--primary-85-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-85-invert-l),1);--primary-90:hsla(var(--primary-h),var(--primary-s),var(--primary-90-l),1);--primary-90-invert-l:var(--primary-10-l);--primary-90-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-90-invert-l),1);--primary-95:hsla(var(--primary-h),var(--primary-s),var(--primary-95-l),1);--primary-95-invert-l:var(--primary-10-l);--primary-95-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-95-invert-l),1);--primary-100:hsla(var(--primary-h),var(--primary-s),var(--primary-100-l),1);--primary-100-invert-l:var(--primary-15-l);--primary-100-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-100-invert-l),1);--primary-invert-l:var(--primary-05-l);--primary-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-invert-l),1);--primary-light-l:var(--primary-90-l);--primary-light:hsla(var(--primary-h),var(--primary-s),var(--primary-light-l),1);--primary-light-invert-l:var(--primary-10-l);--primary-light-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-light-invert-l),1);--primary-dark-l:var(--primary-10-l);--primary-dark:hsla(var(--primary-h),var(--primary-s),var(--primary-dark-l),1);--primary-dark-invert-l:var(--primary-50-l);--primary-dark-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-dark-invert-l),1);--primary-soft:hsla(var(--primary-h),var(--primary-s),var(--soft-l),1);--primary-bold:hsla(var(--primary-h),var(--primary-s),var(--bold-l),1);--primary-soft-invert:hsla(var(--primary-h),var(--primary-s),var(--soft-invert-l),1);--primary-bold-invert:hsla(var(--primary-h),var(--primary-s),var(--bold-invert-l),1);--primary-on-scheme-l:21%;--primary-on-scheme:hsla(var(--primary-h),var(--primary-s),var(--primary-on-scheme-l),1);--link:hsla(var(--link-h),var(--link-s),var(--link-l),1);--link-base:hsla(var(--link-h),var(--link-s),var(--link-l),1);--link-rgb:66.3,88.315,255;--link-h:233deg;--link-s:100%;--link-l:63%;--link-00-l:0%;--link-05-l:3%;--link-10-l:8%;--link-15-l:13%;--link-20-l:18%;--link-25-l:23%;--link-30-l:28%;--link-35-l:33%;--link-40-l:38%;--link-45-l:43%;--link-50-l:48%;--link-55-l:53%;--link-60-l:58%;--link-65-l:63%;--link-70-l:68%;--link-75-l:73%;--link-80-l:78%;--link-85-l:83%;--link-90-l:88%;--link-95-l:93%;--link-100-l:98%;--link-00:hsla(var(--link-h),var(--link-s),var(--link-00-l),1);--link-00-invert-l:var(--link-75-l);--link-00-invert:hsla(var(--link-h),var(--link-s),var(--link-00-invert-l),1);--link-05:hsla(var(--link-h),var(--link-s),var(--link-05-l),1);--link-05-invert-l:var(--link-75-l);--link-05-invert:hsla(var(--link-h),var(--link-s),var(--link-05-invert-l),1);--link-10:hsla(var(--link-h),var(--link-s),var(--link-10-l),1);--link-10-invert-l:var(--link-75-l);--link-10-invert:hsla(var(--link-h),var(--link-s),var(--link-10-invert-l),1);--link-15:hsla(var(--link-h),var(--link-s),var(--link-15-l),1);--link-15-invert-l:var(--link-80-l);--link-15-invert:hsla(var(--link-h),var(--link-s),var(--link-15-invert-l),1);--link-20:hsla(var(--link-h),var(--link-s),var(--link-20-l),1);--link-20-invert-l:var(--link-80-l);--link-20-invert:hsla(var(--link-h),var(--link-s),var(--link-20-invert-l),1);--link-25:hsla(var(--link-h),var(--link-s),var(--link-25-l),1);--link-25-invert-l:var(--link-85-l);--link-25-invert:hsla(var(--link-h),var(--link-s),var(--link-25-invert-l),1);--link-30:hsla(var(--link-h),var(--link-s),var(--link-30-l),1);--link-30-invert-l:var(--link-90-l);--link-30-invert:hsla(var(--link-h),var(--link-s),var(--link-30-invert-l),1);--link-35:hsla(var(--link-h),var(--link-s),var(--link-35-l),1);--link-35-invert-l:var(--link-90-l);--link-35-invert:hsla(var(--link-h),var(--link-s),var(--link-35-invert-l),1);--link-40:hsla(var(--link-h),var(--link-s),var(--link-40-l),1);--link-40-invert-l:var(--link-95-l);--link-40-invert:hsla(var(--link-h),var(--link-s),var(--link-40-invert-l),1);--link-45:hsla(var(--link-h),var(--link-s),var(--link-45-l),1);--link-45-invert-l:var(--link-95-l);--link-45-invert:hsla(var(--link-h),var(--link-s),var(--link-45-invert-l),1);--link-50:hsla(var(--link-h),var(--link-s),var(--link-50-l),1);--link-50-invert-l:var(--link-100-l);--link-50-invert:hsla(var(--link-h),var(--link-s),var(--link-50-invert-l),1);--link-55:hsla(var(--link-h),var(--link-s),var(--link-55-l),1);--link-55-invert-l:var(--link-100-l);--link-55-invert:hsla(var(--link-h),var(--link-s),var(--link-55-invert-l),1);--link-60:hsla(var(--link-h),var(--link-s),var(--link-60-l),1);--link-60-invert-l:var(--link-100-l);--link-60-invert:hsla(var(--link-h),var(--link-s),var(--link-60-invert-l),1);--link-65:hsla(var(--link-h),var(--link-s),var(--link-65-l),1);--link-65-invert-l:var(--link-100-l);--link-65-invert:hsla(var(--link-h),var(--link-s),var(--link-65-invert-l),1);--link-70:hsla(var(--link-h),var(--link-s),var(--link-70-l),1);--link-70-invert-l:var(--link-100-l);--link-70-invert:hsla(var(--link-h),var(--link-s),var(--link-70-invert-l),1);--link-75:hsla(var(--link-h),var(--link-s),var(--link-75-l),1);--link-75-invert-l:var(--link-10-l);--link-75-invert:hsla(var(--link-h),var(--link-s),var(--link-75-invert-l),1);--link-80:hsla(var(--link-h),var(--link-s),var(--link-80-l),1);--link-80-invert-l:var(--link-20-l);--link-80-invert:hsla(var(--link-h),var(--link-s),var(--link-80-invert-l),1);--link-85:hsla(var(--link-h),var(--link-s),var(--link-85-l),1);--link-85-invert-l:var(--link-25-l);--link-85-invert:hsla(var(--link-h),var(--link-s),var(--link-85-invert-l),1);--link-90:hsla(var(--link-h),var(--link-s),var(--link-90-l),1);--link-90-invert-l:var(--link-35-l);--link-90-invert:hsla(var(--link-h),var(--link-s),var(--link-90-invert-l),1);--link-95:hsla(var(--link-h),var(--link-s),var(--link-95-l),1);--link-95-invert-l:var(--link-45-l);--link-95-invert:hsla(var(--link-h),var(--link-s),var(--link-95-invert-l),1);--link-100:hsla(var(--link-h),var(--link-s),var(--link-100-l),1);--link-100-invert-l:var(--link-50-l);--link-100-invert:hsla(var(--link-h),var(--link-s),var(--link-100-invert-l),1);--link-invert-l:var(--link-100-l);--link-invert:hsla(var(--link-h),var(--link-s),var(--link-invert-l),1);--link-light-l:var(--link-90-l);--link-light:hsla(var(--link-h),var(--link-s),var(--link-light-l),1);--link-light-invert-l:var(--link-35-l);--link-light-invert:hsla(var(--link-h),var(--link-s),var(--link-light-invert-l),1);--link-dark-l:var(--link-10-l);--link-dark:hsla(var(--link-h),var(--link-s),var(--link-dark-l),1);--link-dark-invert-l:var(--link-75-l);--link-dark-invert:hsla(var(--link-h),var(--link-s),var(--link-dark-invert-l),1);--link-soft:hsla(var(--link-h),var(--link-s),var(--soft-l),1);--link-bold:hsla(var(--link-h),var(--link-s),var(--bold-l),1);--link-soft-invert:hsla(var(--link-h),var(--link-s),var(--soft-invert-l),1);--link-bold-invert:hsla(var(--link-h),var(--link-s),var(--bold-invert-l),1);--link-on-scheme-l:58%;--link-on-scheme:hsla(var(--link-h),var(--link-s),var(--link-on-scheme-l),1);--info:hsla(var(--info-h),var(--info-s),var(--info-l),1);--info-base:hsla(var(--info-h),var(--info-s),var(--info-l),1);--info-rgb:102,209.1,255;--info-h:198deg;--info-s:100%;--info-l:70%;--info-00-l:0%;--info-05-l:5%;--info-10-l:10%;--info-15-l:15%;--info-20-l:20%;--info-25-l:25%;--info-30-l:30%;--info-35-l:35%;--info-40-l:40%;--info-45-l:45%;--info-50-l:50%;--info-55-l:55%;--info-60-l:60%;--info-65-l:65%;--info-70-l:70%;--info-75-l:75%;--info-80-l:80%;--info-85-l:85%;--info-90-l:90%;--info-95-l:95%;--info-100-l:100%;--info-00:hsla(var(--info-h),var(--info-s),var(--info-00-l),1);--info-00-invert-l:var(--info-45-l);--info-00-invert:hsla(var(--info-h),var(--info-s),var(--info-00-invert-l),1);--info-05:hsla(var(--info-h),var(--info-s),var(--info-05-l),1);--info-05-invert-l:var(--info-50-l);--info-05-invert:hsla(var(--info-h),var(--info-s),var(--info-05-invert-l),1);--info-10:hsla(var(--info-h),var(--info-s),var(--info-10-l),1);--info-10-invert-l:var(--info-60-l);--info-10-invert:hsla(var(--info-h),var(--info-s),var(--info-10-invert-l),1);--info-15:hsla(var(--info-h),var(--info-s),var(--info-15-l),1);--info-15-invert-l:var(--info-80-l);--info-15-invert:hsla(var(--info-h),var(--info-s),var(--info-15-invert-l),1);--info-20:hsla(var(--info-h),var(--info-s),var(--info-20-l),1);--info-20-invert-l:var(--info-95-l);--info-20-invert:hsla(var(--info-h),var(--info-s),var(--info-20-invert-l),1);--info-25:hsla(var(--info-h),var(--info-s),var(--info-25-l),1);--info-25-invert-l:var(--info-100-l);--info-25-invert:hsla(var(--info-h),var(--info-s),var(--info-25-invert-l),1);--info-30:hsla(var(--info-h),var(--info-s),var(--info-30-l),1);--info-30-invert-l:var(--info-100-l);--info-30-invert:hsla(var(--info-h),var(--info-s),var(--info-30-invert-l),1);--info-35:hsla(var(--info-h),var(--info-s),var(--info-35-l),1);--info-35-invert-l:var(--info-100-l);--info-35-invert:hsla(var(--info-h),var(--info-s),var(--info-35-invert-l),1);--info-40:hsla(var(--info-h),var(--info-s),var(--info-40-l),1);--info-40-invert-l:var(--info-100-l);--info-40-invert:hsla(var(--info-h),var(--info-s),var(--info-40-invert-l),1);--info-45:hsla(var(--info-h),var(--info-s),var(--info-45-l),1);--info-45-invert-l:var(--info-00-l);--info-45-invert:hsla(var(--info-h),var(--info-s),var(--info-45-invert-l),1);--info-50:hsla(var(--info-h),var(--info-s),var(--info-50-l),1);--info-50-invert-l:var(--info-05-l);--info-50-invert:hsla(var(--info-h),var(--info-s),var(--info-50-invert-l),1);--info-55:hsla(var(--info-h),var(--info-s),var(--info-55-l),1);--info-55-invert-l:var(--info-05-l);--info-55-invert:hsla(var(--info-h),var(--info-s),var(--info-55-invert-l),1);--info-60:hsla(var(--info-h),var(--info-s),var(--info-60-l),1);--info-60-invert-l:var(--info-10-l);--info-60-invert:hsla(var(--info-h),var(--info-s),var(--info-60-invert-l),1);--info-65:hsla(var(--info-h),var(--info-s),var(--info-65-l),1);--info-65-invert-l:var(--info-10-l);--info-65-invert:hsla(var(--info-h),var(--info-s),var(--info-65-invert-l),1);--info-70:hsla(var(--info-h),var(--info-s),var(--info-70-l),1);--info-70-invert-l:var(--info-10-l);--info-70-invert:hsla(var(--info-h),var(--info-s),var(--info-70-invert-l),1);--info-75:hsla(var(--info-h),var(--info-s),var(--info-75-l),1);--info-75-invert-l:var(--info-10-l);--info-75-invert:hsla(var(--info-h),var(--info-s),var(--info-75-invert-l),1);--info-80:hsla(var(--info-h),var(--info-s),var(--info-80-l),1);--info-80-invert-l:var(--info-15-l);--info-80-invert:hsla(var(--info-h),var(--info-s),var(--info-80-invert-l),1);--info-85:hsla(var(--info-h),var(--info-s),var(--info-85-l),1);--info-85-invert-l:var(--info-15-l);--info-85-invert:hsla(var(--info-h),var(--info-s),var(--info-85-invert-l),1);--info-90:hsla(var(--info-h),var(--info-s),var(--info-90-l),1);--info-90-invert-l:var(--info-15-l);--info-90-invert:hsla(var(--info-h),var(--info-s),var(--info-90-invert-l),1);--info-95:hsla(var(--info-h),var(--info-s),var(--info-95-l),1);--info-95-invert-l:var(--info-20-l);--info-95-invert:hsla(var(--info-h),var(--info-s),var(--info-95-invert-l),1);--info-100:hsla(var(--info-h),var(--info-s),var(--info-100-l),1);--info-100-invert-l:var(--info-20-l);--info-100-invert:hsla(var(--info-h),var(--info-s),var(--info-100-invert-l),1);--info-invert-l:var(--info-10-l);--info-invert:hsla(var(--info-h),var(--info-s),var(--info-invert-l),1);--info-light-l:var(--info-90-l);--info-light:hsla(var(--info-h),var(--info-s),var(--info-light-l),1);--info-light-invert-l:var(--info-15-l);--info-light-invert:hsla(var(--info-h),var(--info-s),var(--info-light-invert-l),1);--info-dark-l:var(--info-10-l);--info-dark:hsla(var(--info-h),var(--info-s),var(--info-dark-l),1);--info-dark-invert-l:var(--info-60-l);--info-dark-invert:hsla(var(--info-h),var(--info-s),var(--info-dark-invert-l),1);--info-soft:hsla(var(--info-h),var(--info-s),var(--soft-l),1);--info-bold:hsla(var(--info-h),var(--info-s),var(--bold-l),1);--info-soft-invert:hsla(var(--info-h),var(--info-s),var(--soft-invert-l),1);--info-bold-invert:hsla(var(--info-h),var(--info-s),var(--bold-invert-l),1);--info-on-scheme-l:25%;--info-on-scheme:hsla(var(--info-h),var(--info-s),var(--info-on-scheme-l),1);--success:hsla(var(--success-h),var(--success-s),var(--success-l),1);--success-base:hsla(var(--success-h),var(--success-s),var(--success-l),1);--success-rgb:71.6295,198.6705,141.50205;--success-h:153deg;--success-s:53%;--success-l:53%;--success-00-l:0%;--success-05-l:3%;--success-10-l:8%;--success-15-l:13%;--success-20-l:18%;--success-25-l:23%;--success-30-l:28%;--success-35-l:33%;--success-40-l:38%;--success-45-l:43%;--success-50-l:48%;--success-55-l:53%;--success-60-l:58%;--success-65-l:63%;--success-70-l:68%;--success-75-l:73%;--success-80-l:78%;--success-85-l:83%;--success-90-l:88%;--success-95-l:93%;--success-100-l:98%;--success-00:hsla(var(--success-h),var(--success-s),var(--success-00-l),1);--success-00-invert-l:var(--success-45-l);--success-00-invert:hsla(var(--success-h),var(--success-s),var(--success-00-invert-l),1);--success-05:hsla(var(--success-h),var(--success-s),var(--success-05-l),1);--success-05-invert-l:var(--success-45-l);--success-05-invert:hsla(var(--success-h),var(--success-s),var(--success-05-invert-l),1);--success-10:hsla(var(--success-h),var(--success-s),var(--success-10-l),1);--success-10-invert-l:var(--success-55-l);--success-10-invert:hsla(var(--success-h),var(--success-s),var(--success-10-invert-l),1);--success-15:hsla(var(--success-h),var(--success-s),var(--success-15-l),1);--success-15-invert-l:var(--success-75-l);--success-15-invert:hsla(var(--success-h),var(--success-s),var(--success-15-invert-l),1);--success-20:hsla(var(--success-h),var(--success-s),var(--success-20-l),1);--success-20-invert-l:var(--success-95-l);--success-20-invert:hsla(var(--success-h),var(--success-s),var(--success-20-invert-l),1);--success-25:hsla(var(--success-h),var(--success-s),var(--success-25-l),1);--success-25-invert-l:var(--success-100-l);--success-25-invert:hsla(var(--success-h),var(--success-s),var(--success-25-invert-l),1);--success-30:hsla(var(--success-h),var(--success-s),var(--success-30-l),1);--success-30-invert-l:var(--success-100-l);--success-30-invert:hsla(var(--success-h),var(--success-s),var(--success-30-invert-l),1);--success-35:hsla(var(--success-h),var(--success-s),var(--success-35-l),1);--success-35-invert-l:var(--success-100-l);--success-35-invert:hsla(var(--success-h),var(--success-s),var(--success-35-invert-l),1);--success-40:hsla(var(--success-h),var(--success-s),var(--success-40-l),1);--success-40-invert-l:var(--success-100-l);--success-40-invert:hsla(var(--success-h),var(--success-s),var(--success-40-invert-l),1);--success-45:hsla(var(--success-h),var(--success-s),var(--success-45-l),1);--success-45-invert-l:var(--success-05-l);--success-45-invert:hsla(var(--success-h),var(--success-s),var(--success-45-invert-l),1);--success-50:hsla(var(--success-h),var(--success-s),var(--success-50-l),1);--success-50-invert-l:var(--success-05-l);--success-50-invert:hsla(var(--success-h),var(--success-s),var(--success-50-invert-l),1);--success-55:hsla(var(--success-h),var(--success-s),var(--success-55-l),1);--success-55-invert-l:var(--success-10-l);--success-55-invert:hsla(var(--success-h),var(--success-s),var(--success-55-invert-l),1);--success-60:hsla(var(--success-h),var(--success-s),var(--success-60-l),1);--success-60-invert-l:var(--success-10-l);--success-60-invert:hsla(var(--success-h),var(--success-s),var(--success-60-invert-l),1);--success-65:hsla(var(--success-h),var(--success-s),var(--success-65-l),1);--success-65-invert-l:var(--success-10-l);--success-65-invert:hsla(var(--success-h),var(--success-s),var(--success-65-invert-l),1);--success-70:hsla(var(--success-h),var(--success-s),var(--success-70-l),1);--success-70-invert-l:var(--success-10-l);--success-70-invert:hsla(var(--success-h),var(--success-s),var(--success-70-invert-l),1);--success-75:hsla(var(--success-h),var(--success-s),var(--success-75-l),1);--success-75-invert-l:var(--success-15-l);--success-75-invert:hsla(var(--success-h),var(--success-s),var(--success-75-invert-l),1);--success-80:hsla(var(--success-h),var(--success-s),var(--success-80-l),1);--success-80-invert-l:var(--success-15-l);--success-80-invert:hsla(var(--success-h),var(--success-s),var(--success-80-invert-l),1);--success-85:hsla(var(--success-h),var(--success-s),var(--success-85-l),1);--success-85-invert-l:var(--success-15-l);--success-85-invert:hsla(var(--success-h),var(--success-s),var(--success-85-invert-l),1);--success-90:hsla(var(--success-h),var(--success-s),var(--success-90-l),1);--success-90-invert-l:var(--success-15-l);--success-90-invert:hsla(var(--success-h),var(--success-s),var(--success-90-invert-l),1);--success-95:hsla(var(--success-h),var(--success-s),var(--success-95-l),1);--success-95-invert-l:var(--success-20-l);--success-95-invert:hsla(var(--success-h),var(--success-s),var(--success-95-invert-l),1);--success-100:hsla(var(--success-h),var(--success-s),var(--success-100-l),1);--success-100-invert-l:var(--success-20-l);--success-100-invert:hsla(var(--success-h),var(--success-s),var(--success-100-invert-l),1);--success-invert-l:var(--success-10-l);--success-invert:hsla(var(--success-h),var(--success-s),var(--success-invert-l),1);--success-light-l:var(--success-90-l);--success-light:hsla(var(--success-h),var(--success-s),var(--success-light-l),1);--success-light-invert-l:var(--success-15-l);--success-light-invert:hsla(var(--success-h),var(--success-s),var(--success-light-invert-l),1);--success-dark-l:var(--success-10-l);--success-dark:hsla(var(--success-h),var(--success-s),var(--success-dark-l),1);--success-dark-invert-l:var(--success-55-l);--success-dark-invert:hsla(var(--success-h),var(--success-s),var(--success-dark-invert-l),1);--success-soft:hsla(var(--success-h),var(--success-s),var(--soft-l),1);--success-bold:hsla(var(--success-h),var(--success-s),var(--bold-l),1);--success-soft-invert:hsla(var(--success-h),var(--success-s),var(--soft-invert-l),1);--success-bold-invert:hsla(var(--success-h),var(--success-s),var(--bold-invert-l),1);--success-on-scheme-l:23%;--success-on-scheme:hsla(var(--success-h),var(--success-s),var(--success-on-scheme-l),1);--warning:hsla(var(--warning-h),var(--warning-s),var(--warning-l),1);--warning-base:hsla(var(--warning-h),var(--warning-s),var(--warning-l),1);--warning-rgb:255,183.09,15.3;--warning-h:42deg;--warning-s:100%;--warning-l:53%;--warning-00-l:0%;--warning-05-l:3%;--warning-10-l:8%;--warning-15-l:13%;--warning-20-l:18%;--warning-25-l:23%;--warning-30-l:28%;--warning-35-l:33%;--warning-40-l:38%;--warning-45-l:43%;--warning-50-l:48%;--warning-55-l:53%;--warning-60-l:58%;--warning-65-l:63%;--warning-70-l:68%;--warning-75-l:73%;--warning-80-l:78%;--warning-85-l:83%;--warning-90-l:88%;--warning-95-l:93%;--warning-100-l:98%;--warning-00:hsla(var(--warning-h),var(--warning-s),var(--warning-00-l),1);--warning-00-invert-l:var(--warning-40-l);--warning-00-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-00-invert-l),1);--warning-05:hsla(var(--warning-h),var(--warning-s),var(--warning-05-l),1);--warning-05-invert-l:var(--warning-45-l);--warning-05-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-05-invert-l),1);--warning-10:hsla(var(--warning-h),var(--warning-s),var(--warning-10-l),1);--warning-10-invert-l:var(--warning-50-l);--warning-10-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-10-invert-l),1);--warning-15:hsla(var(--warning-h),var(--warning-s),var(--warning-15-l),1);--warning-15-invert-l:var(--warning-70-l);--warning-15-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-15-invert-l),1);--warning-20:hsla(var(--warning-h),var(--warning-s),var(--warning-20-l),1);--warning-20-invert-l:var(--warning-100-l);--warning-20-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-20-invert-l),1);--warning-25:hsla(var(--warning-h),var(--warning-s),var(--warning-25-l),1);--warning-25-invert-l:var(--warning-100-l);--warning-25-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-25-invert-l),1);--warning-30:hsla(var(--warning-h),var(--warning-s),var(--warning-30-l),1);--warning-30-invert-l:var(--warning-100-l);--warning-30-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-30-invert-l),1);--warning-35:hsla(var(--warning-h),var(--warning-s),var(--warning-35-l),1);--warning-35-invert-l:var(--warning-100-l);--warning-35-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-35-invert-l),1);--warning-40:hsla(var(--warning-h),var(--warning-s),var(--warning-40-l),1);--warning-40-invert-l:var(--warning-00-l);--warning-40-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-40-invert-l),1);--warning-45:hsla(var(--warning-h),var(--warning-s),var(--warning-45-l),1);--warning-45-invert-l:var(--warning-05-l);--warning-45-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-45-invert-l),1);--warning-50:hsla(var(--warning-h),var(--warning-s),var(--warning-50-l),1);--warning-50-invert-l:var(--warning-10-l);--warning-50-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-50-invert-l),1);--warning-55:hsla(var(--warning-h),var(--warning-s),var(--warning-55-l),1);--warning-55-invert-l:var(--warning-10-l);--warning-55-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-55-invert-l),1);--warning-60:hsla(var(--warning-h),var(--warning-s),var(--warning-60-l),1);--warning-60-invert-l:var(--warning-10-l);--warning-60-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-60-invert-l),1);--warning-65:hsla(var(--warning-h),var(--warning-s),var(--warning-65-l),1);--warning-65-invert-l:var(--warning-10-l);--warning-65-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-65-invert-l),1);--warning-70:hsla(var(--warning-h),var(--warning-s),var(--warning-70-l),1);--warning-70-invert-l:var(--warning-15-l);--warning-70-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-70-invert-l),1);--warning-75:hsla(var(--warning-h),var(--warning-s),var(--warning-75-l),1);--warning-75-invert-l:var(--warning-15-l);--warning-75-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-75-invert-l),1);--warning-80:hsla(var(--warning-h),var(--warning-s),var(--warning-80-l),1);--warning-80-invert-l:var(--warning-15-l);--warning-80-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-80-invert-l),1);--warning-85:hsla(var(--warning-h),var(--warning-s),var(--warning-85-l),1);--warning-85-invert-l:var(--warning-15-l);--warning-85-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-85-invert-l),1);--warning-90:hsla(var(--warning-h),var(--warning-s),var(--warning-90-l),1);--warning-90-invert-l:var(--warning-15-l);--warning-90-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-90-invert-l),1);--warning-95:hsla(var(--warning-h),var(--warning-s),var(--warning-95-l),1);--warning-95-invert-l:var(--warning-15-l);--warning-95-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-95-invert-l),1);--warning-100:hsla(var(--warning-h),var(--warning-s),var(--warning-100-l),1);--warning-100-invert-l:var(--warning-20-l);--warning-100-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-100-invert-l),1);--warning-invert-l:var(--warning-10-l);--warning-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-invert-l),1);--warning-light-l:var(--warning-90-l);--warning-light:hsla(var(--warning-h),var(--warning-s),var(--warning-light-l),1);--warning-light-invert-l:var(--warning-15-l);--warning-light-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-light-invert-l),1);--warning-dark-l:var(--warning-10-l);--warning-dark:hsla(var(--warning-h),var(--warning-s),var(--warning-dark-l),1);--warning-dark-invert-l:var(--warning-50-l);--warning-dark-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-dark-invert-l),1);--warning-soft:hsla(var(--warning-h),var(--warning-s),var(--soft-l),1);--warning-bold:hsla(var(--warning-h),var(--warning-s),var(--bold-l),1);--warning-soft-invert:hsla(var(--warning-h),var(--warning-s),var(--soft-invert-l),1);--warning-bold-invert:hsla(var(--warning-h),var(--warning-s),var(--bold-invert-l),1);--warning-on-scheme-l:23%;--warning-on-scheme:hsla(var(--warning-h),var(--warning-s),var(--warning-on-scheme-l),1);--danger:hsla(var(--danger-h),var(--danger-s),var(--danger-l),1);--danger-base:hsla(var(--danger-h),var(--danger-s),var(--danger-l),1);--danger-rgb:255,102,132.6;--danger-h:348deg;--danger-s:100%;--danger-l:70%;--danger-00-l:0%;--danger-05-l:5%;--danger-10-l:10%;--danger-15-l:15%;--danger-20-l:20%;--danger-25-l:25%;--danger-30-l:30%;--danger-35-l:35%;--danger-40-l:40%;--danger-45-l:45%;--danger-50-l:50%;--danger-55-l:55%;--danger-60-l:60%;--danger-65-l:65%;--danger-70-l:70%;--danger-75-l:75%;--danger-80-l:80%;--danger-85-l:85%;--danger-90-l:90%;--danger-95-l:95%;--danger-100-l:100%;--danger-00:hsla(var(--danger-h),var(--danger-s),var(--danger-00-l),1);--danger-00-invert-l:var(--danger-65-l);--danger-00-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-00-invert-l),1);--danger-05:hsla(var(--danger-h),var(--danger-s),var(--danger-05-l),1);--danger-05-invert-l:var(--danger-70-l);--danger-05-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-05-invert-l),1);--danger-10:hsla(var(--danger-h),var(--danger-s),var(--danger-10-l),1);--danger-10-invert-l:var(--danger-75-l);--danger-10-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-10-invert-l),1);--danger-15:hsla(var(--danger-h),var(--danger-s),var(--danger-15-l),1);--danger-15-invert-l:var(--danger-80-l);--danger-15-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-15-invert-l),1);--danger-20:hsla(var(--danger-h),var(--danger-s),var(--danger-20-l),1);--danger-20-invert-l:var(--danger-85-l);--danger-20-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-20-invert-l),1);--danger-25:hsla(var(--danger-h),var(--danger-s),var(--danger-25-l),1);--danger-25-invert-l:var(--danger-90-l);--danger-25-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-25-invert-l),1);--danger-30:hsla(var(--danger-h),var(--danger-s),var(--danger-30-l),1);--danger-30-invert-l:var(--danger-100-l);--danger-30-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-30-invert-l),1);--danger-35:hsla(var(--danger-h),var(--danger-s),var(--danger-35-l),1);--danger-35-invert-l:var(--danger-100-l);--danger-35-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-35-invert-l),1);--danger-40:hsla(var(--danger-h),var(--danger-s),var(--danger-40-l),1);--danger-40-invert-l:var(--danger-100-l);--danger-40-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-40-invert-l),1);--danger-45:hsla(var(--danger-h),var(--danger-s),var(--danger-45-l),1);--danger-45-invert-l:var(--danger-100-l);--danger-45-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-45-invert-l),1);--danger-50:hsla(var(--danger-h),var(--danger-s),var(--danger-50-l),1);--danger-50-invert-l:var(--danger-100-l);--danger-50-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-50-invert-l),1);--danger-55:hsla(var(--danger-h),var(--danger-s),var(--danger-55-l),1);--danger-55-invert-l:var(--danger-100-l);--danger-55-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-55-invert-l),1);--danger-60:hsla(var(--danger-h),var(--danger-s),var(--danger-60-l),1);--danger-60-invert-l:var(--danger-100-l);--danger-60-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-60-invert-l),1);--danger-65:hsla(var(--danger-h),var(--danger-s),var(--danger-65-l),1);--danger-65-invert-l:var(--danger-00-l);--danger-65-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-65-invert-l),1);--danger-70:hsla(var(--danger-h),var(--danger-s),var(--danger-70-l),1);--danger-70-invert-l:var(--danger-05-l);--danger-70-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-70-invert-l),1);--danger-75:hsla(var(--danger-h),var(--danger-s),var(--danger-75-l),1);--danger-75-invert-l:var(--danger-10-l);--danger-75-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-75-invert-l),1);--danger-80:hsla(var(--danger-h),var(--danger-s),var(--danger-80-l),1);--danger-80-invert-l:var(--danger-15-l);--danger-80-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-80-invert-l),1);--danger-85:hsla(var(--danger-h),var(--danger-s),var(--danger-85-l),1);--danger-85-invert-l:var(--danger-20-l);--danger-85-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-85-invert-l),1);--danger-90:hsla(var(--danger-h),var(--danger-s),var(--danger-90-l),1);--danger-90-invert-l:var(--danger-25-l);--danger-90-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-90-invert-l),1);--danger-95:hsla(var(--danger-h),var(--danger-s),var(--danger-95-l),1);--danger-95-invert-l:var(--danger-25-l);--danger-95-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-95-invert-l),1);--danger-100:hsla(var(--danger-h),var(--danger-s),var(--danger-100-l),1);--danger-100-invert-l:var(--danger-30-l);--danger-100-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-100-invert-l),1);--danger-invert-l:var(--danger-05-l);--danger-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-invert-l),1);--danger-light-l:var(--danger-90-l);--danger-light:hsla(var(--danger-h),var(--danger-s),var(--danger-light-l),1);--danger-light-invert-l:var(--danger-25-l);--danger-light-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-light-invert-l),1);--danger-dark-l:var(--danger-10-l);--danger-dark:hsla(var(--danger-h),var(--danger-s),var(--danger-dark-l),1);--danger-dark-invert-l:var(--danger-75-l);--danger-dark-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-dark-invert-l),1);--danger-soft:hsla(var(--danger-h),var(--danger-s),var(--soft-l),1);--danger-bold:hsla(var(--danger-h),var(--danger-s),var(--bold-l),1);--danger-soft-invert:hsla(var(--danger-h),var(--danger-s),var(--soft-invert-l),1);--danger-bold-invert:hsla(var(--danger-h),var(--danger-s),var(--bold-invert-l),1);--danger-on-scheme-l:40%;--danger-on-scheme:hsla(var(--danger-h),var(--danger-s),var(--danger-on-scheme-l),1);--black-bis:#14161a;--black-ter:#1f2229;--grey-darker:#2e333d;--grey-dark:#404654;--grey:#69748c;--grey-light:#abb1bf;--grey-lighter:#d6d9e0;--white-ter:#f3f4f6;--white-bis:#f9fafb;--shadow-h:221deg;--shadow-s:14%;--shadow-l:4%;--size-1:3rem;--size-2:2.5rem;--size-3:2rem;--size-4:1.5rem;--size-5:1.25rem;--size-6:1rem;--size-7:0.75rem}}@media (prefers-color-scheme:dark){:root{--white-on-scheme-l:100%;--white-on-scheme:hsla(var(--white-h),var(--white-s),var(--white-on-scheme-l),1);--black-on-scheme-l:-51%;--black-on-scheme:hsla(var(--black-h),var(--black-s),var(--black-on-scheme-l),1);--light-on-scheme-l:96%;--light-on-scheme:hsla(var(--light-h),var(--light-s),var(--light-on-scheme-l),1);--dark-on-scheme-l:56%;--dark-on-scheme:hsla(var(--dark-h),var(--dark-s),var(--dark-on-scheme-l),1);--text-on-scheme-l:54%;--text-on-scheme:hsla(var(--text-h),var(--text-s),var(--text-on-scheme-l),1);--primary-on-scheme-l:41%;--primary-on-scheme:hsla(var(--primary-h),var(--primary-s),var(--primary-on-scheme-l),1);--link-on-scheme-l:73%;--link-on-scheme:hsla(var(--link-h),var(--link-s),var(--link-on-scheme-l),1);--info-on-scheme-l:70%;--info-on-scheme:hsla(var(--info-h),var(--info-s),var(--info-on-scheme-l),1);--success-on-scheme-l:53%;--success-on-scheme:hsla(var(--success-h),var(--success-s),var(--success-on-scheme-l),1);--warning-on-scheme-l:53%;--warning-on-scheme:hsla(var(--warning-h),var(--warning-s),var(--warning-on-scheme-l),1);--danger-on-scheme-l:70%;--danger-on-scheme:hsla(var(--danger-h),var(--danger-s),var(--danger-on-scheme-l),1);--scheme-brightness:dark;--scheme-main-l:9%;--scheme-main-bis-l:11%;--scheme-main-ter-l:13%;--soft-l:20%;--bold-l:90%;--soft-invert-l:90%;--bold-invert-l:20%;--background-l:14%;--border-weak-l:21%;--border-l:24%;--text-weak-l:53%;--text-l:71%;--text-strong-l:93%;--text-title-l:100%;--hover-background-l-delta:5%;--active-background-l-delta:10%;--hover-border-l-delta:10%;--active-border-l-delta:20%;--hover-color-l-delta:5%;--active-color-l-delta:10%;--shadow-h:0deg;--shadow-s:0%;--shadow-l:100%}}[data-theme=light]{--scheme-h:221;--scheme-s:14%;--light-l:90%;--light-invert-l:20%;--dark-l:20%;--dark-invert-l:90%;--soft-l:90%;--bold-l:20%;--soft-invert-l:20%;--bold-invert-l:90%;--hover-background-l-delta:-5%;--active-background-l-delta:-10%;--hover-border-l-delta:-10%;--active-border-l-delta:-20%;--hover-color-l-delta:-5%;--active-color-l-delta:-10%;--hover-shadow-a-delta:-0.05;--active-shadow-a-delta:-0.1;--scheme-brightness:light;--scheme-main-l:100%;--scheme-main-bis-l:98%;--scheme-main-ter-l:96%;--background-l:96%;--border-weak-l:93%;--border-l:86%;--text-weak-l:48%;--text-strong-l:21%;--text-title-l:14%;--scheme-invert-ter-l:14%;--scheme-invert-bis-l:7%;--scheme-invert-l:4%;--family-primary:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Lucida Sans Unicode,Lucida Grande,Arial,sans-serif;--family-secondary:Inter,SF Pro,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Helvetica,Arial,sans-serif;--family-code:Inconsolata,Hack,SF Mono,Roboto Mono,Source Code Pro,Ubuntu Mono,monospace;--size-small:0.75rem;--size-normal:1rem;--size-medium:1.25rem;--size-large:1.5rem;--weight-light:300;--weight-normal:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--weight-extrabold:800;--block-spacing:1.5rem;--duration:294ms;--easing:ease-out;--radius-small:0.25rem;--radius:0.375rem;--radius-medium:0.5em;--radius-large:0.75rem;--radius-rounded:9999px;--speed:86ms;--arrow-color:var(--link);--loading-color:var(--border);--burger-h:var(--link-h);--burger-s:var(--link-s);--burger-l:var(--link-l);--burger-border-radius:0.5em;--burger-gap:5px;--burger-item-height:2px;--burger-item-width:20px;--white:hsla(var(--white-h),var(--white-s),var(--white-l),1);--white-base:hsla(var(--white-h),var(--white-s),var(--white-l),1);--white-rgb:255,255,255;--white-h:221deg;--white-s:14%;--white-l:100%;--white-invert-l:4%;--white-invert:#090a0c;--white-on-scheme-l:35%;--white-on-scheme:hsla(var(--white-h),var(--white-s),var(--white-on-scheme-l),1);--black:hsla(var(--black-h),var(--black-s),var(--black-l),1);--black-base:hsla(var(--black-h),var(--black-s),var(--black-l),1);--black-rgb:8.772,9.6764,11.628;--black-h:221deg;--black-s:14%;--black-l:4%;--black-invert-l:100%;--black-invert:#fff;--black-on-scheme-l:4%;--black-on-scheme:hsla(var(--black-h),var(--black-s),var(--black-on-scheme-l),1);--light:hsla(var(--light-h),var(--light-s),var(--light-l),1);--light-base:hsla(var(--light-h),var(--light-s),var(--light-l),1);--light-rgb:243.372,244.2764,246.228;--light-h:221deg;--light-s:14%;--light-l:96%;--light-invert-l:21%;--light-invert:#2e333d;--light-on-scheme-l:36%;--light-on-scheme:hsla(var(--light-h),var(--light-s),var(--light-on-scheme-l),1);--dark:hsla(var(--dark-h),var(--dark-s),var(--dark-l),1);--dark-base:hsla(var(--dark-h),var(--dark-s),var(--dark-l),1);--dark-rgb:46.053,50.8011,61.047;--dark-h:221deg;--dark-s:14%;--dark-l:21%;--dark-invert-l:96%;--dark-invert:#f3f4f6;--dark-on-scheme-l:21%;--dark-on-scheme:hsla(var(--dark-h),var(--dark-s),var(--dark-on-scheme-l),1);--text:hsla(var(--text-h),var(--text-s),var(--text-l),1);--text-base:hsla(var(--text-h),var(--text-s),var(--text-l),1);--text-rgb:63.597,70.1539,84.303;--text-h:221deg;--text-s:14%;--text-l:29%;--text-00-l:0%;--text-05-l:4%;--text-10-l:9%;--text-15-l:14%;--text-20-l:19%;--text-25-l:24%;--text-30-l:29%;--text-35-l:34%;--text-40-l:39%;--text-45-l:44%;--text-50-l:49%;--text-55-l:54%;--text-60-l:59%;--text-65-l:64%;--text-70-l:69%;--text-75-l:74%;--text-80-l:79%;--text-85-l:84%;--text-90-l:89%;--text-95-l:94%;--text-100-l:99%;--text-00:hsla(var(--text-h),var(--text-s),var(--text-00-l),1);--text-00-invert-l:var(--text-60-l);--text-00-invert:hsla(var(--text-h),var(--text-s),var(--text-00-invert-l),1);--text-05:hsla(var(--text-h),var(--text-s),var(--text-05-l),1);--text-05-invert-l:var(--text-60-l);--text-05-invert:hsla(var(--text-h),var(--text-s),var(--text-05-invert-l),1);--text-10:hsla(var(--text-h),var(--text-s),var(--text-10-l),1);--text-10-invert-l:var(--text-70-l);--text-10-invert:hsla(var(--text-h),var(--text-s),var(--text-10-invert-l),1);--text-15:hsla(var(--text-h),var(--text-s),var(--text-15-l),1);--text-15-invert-l:var(--text-75-l);--text-15-invert:hsla(var(--text-h),var(--text-s),var(--text-15-invert-l),1);--text-20:hsla(var(--text-h),var(--text-s),var(--text-20-l),1);--text-20-invert-l:var(--text-85-l);--text-20-invert:hsla(var(--text-h),var(--text-s),var(--text-20-invert-l),1);--text-25:hsla(var(--text-h),var(--text-s),var(--text-25-l),1);--text-25-invert-l:var(--text-95-l);--text-25-invert:hsla(var(--text-h),var(--text-s),var(--text-25-invert-l),1);--text-30:hsla(var(--text-h),var(--text-s),var(--text-30-l),1);--text-30-invert-l:var(--text-100-l);--text-30-invert:hsla(var(--text-h),var(--text-s),var(--text-30-invert-l),1);--text-35:hsla(var(--text-h),var(--text-s),var(--text-35-l),1);--text-35-invert-l:var(--text-100-l);--text-35-invert:hsla(var(--text-h),var(--text-s),var(--text-35-invert-l),1);--text-40:hsla(var(--text-h),var(--text-s),var(--text-40-l),1);--text-40-invert-l:var(--text-100-l);--text-40-invert:hsla(var(--text-h),var(--text-s),var(--text-40-invert-l),1);--text-45:hsla(var(--text-h),var(--text-s),var(--text-45-l),1);--text-45-invert-l:var(--text-100-l);--text-45-invert:hsla(var(--text-h),var(--text-s),var(--text-45-invert-l),1);--text-50:hsla(var(--text-h),var(--text-s),var(--text-50-l),1);--text-50-invert-l:var(--text-100-l);--text-50-invert:hsla(var(--text-h),var(--text-s),var(--text-50-invert-l),1);--text-55:hsla(var(--text-h),var(--text-s),var(--text-55-l),1);--text-55-invert-l:var(--text-100-l);--text-55-invert:hsla(var(--text-h),var(--text-s),var(--text-55-invert-l),1);--text-60:hsla(var(--text-h),var(--text-s),var(--text-60-l),1);--text-60-invert-l:var(--text-05-l);--text-60-invert:hsla(var(--text-h),var(--text-s),var(--text-60-invert-l),1);--text-65:hsla(var(--text-h),var(--text-s),var(--text-65-l),1);--text-65-invert-l:var(--text-05-l);--text-65-invert:hsla(var(--text-h),var(--text-s),var(--text-65-invert-l),1);--text-70:hsla(var(--text-h),var(--text-s),var(--text-70-l),1);--text-70-invert-l:var(--text-10-l);--text-70-invert:hsla(var(--text-h),var(--text-s),var(--text-70-invert-l),1);--text-75:hsla(var(--text-h),var(--text-s),var(--text-75-l),1);--text-75-invert-l:var(--text-15-l);--text-75-invert:hsla(var(--text-h),var(--text-s),var(--text-75-invert-l),1);--text-80:hsla(var(--text-h),var(--text-s),var(--text-80-l),1);--text-80-invert-l:var(--text-15-l);--text-80-invert:hsla(var(--text-h),var(--text-s),var(--text-80-invert-l),1);--text-85:hsla(var(--text-h),var(--text-s),var(--text-85-l),1);--text-85-invert-l:var(--text-20-l);--text-85-invert:hsla(var(--text-h),var(--text-s),var(--text-85-invert-l),1);--text-90:hsla(var(--text-h),var(--text-s),var(--text-90-l),1);--text-90-invert-l:var(--text-20-l);--text-90-invert:hsla(var(--text-h),var(--text-s),var(--text-90-invert-l),1);--text-95:hsla(var(--text-h),var(--text-s),var(--text-95-l),1);--text-95-invert-l:var(--text-25-l);--text-95-invert:hsla(var(--text-h),var(--text-s),var(--text-95-invert-l),1);--text-100:hsla(var(--text-h),var(--text-s),var(--text-100-l),1);--text-100-invert-l:var(--text-25-l);--text-100-invert:hsla(var(--text-h),var(--text-s),var(--text-100-invert-l),1);--text-invert-l:var(--text-100-l);--text-invert:hsla(var(--text-h),var(--text-s),var(--text-invert-l),1);--text-light-l:var(--text-90-l);--text-light:hsla(var(--text-h),var(--text-s),var(--text-light-l),1);--text-light-invert-l:var(--text-20-l);--text-light-invert:hsla(var(--text-h),var(--text-s),var(--text-light-invert-l),1);--text-dark-l:var(--text-10-l);--text-dark:hsla(var(--text-h),var(--text-s),var(--text-dark-l),1);--text-dark-invert-l:var(--text-70-l);--text-dark-invert:hsla(var(--text-h),var(--text-s),var(--text-dark-invert-l),1);--text-soft:hsla(var(--text-h),var(--text-s),var(--soft-l),1);--text-bold:hsla(var(--text-h),var(--text-s),var(--bold-l),1);--text-soft-invert:hsla(var(--text-h),var(--text-s),var(--soft-invert-l),1);--text-bold-invert:hsla(var(--text-h),var(--text-s),var(--bold-invert-l),1);--text-on-scheme-l:29%;--text-on-scheme:hsla(var(--text-h),var(--text-s),var(--text-on-scheme-l),1);--primary:hsla(var(--primary-h),var(--primary-s),var(--primary-l),1);--primary-base:hsla(var(--primary-h),var(--primary-s),var(--primary-l),1);--primary-rgb:0,209.1,177.735;--primary-h:171deg;--primary-s:100%;--primary-l:41%;--primary-00-l:1%;--primary-05-l:6%;--primary-10-l:11%;--primary-15-l:16%;--primary-20-l:21%;--primary-25-l:26%;--primary-30-l:31%;--primary-35-l:36%;--primary-40-l:41%;--primary-45-l:46%;--primary-50-l:51%;--primary-55-l:56%;--primary-60-l:61%;--primary-65-l:66%;--primary-70-l:71%;--primary-75-l:76%;--primary-80-l:81%;--primary-85-l:86%;--primary-90-l:91%;--primary-95-l:96%;--primary-100-l:100%;--primary-00:hsla(var(--primary-h),var(--primary-s),var(--primary-00-l),1);--primary-00-invert-l:var(--primary-30-l);--primary-00-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-00-invert-l),1);--primary-05:hsla(var(--primary-h),var(--primary-s),var(--primary-05-l),1);--primary-05-invert-l:var(--primary-40-l);--primary-05-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-05-invert-l),1);--primary-10:hsla(var(--primary-h),var(--primary-s),var(--primary-10-l),1);--primary-10-invert-l:var(--primary-50-l);--primary-10-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-10-invert-l),1);--primary-15:hsla(var(--primary-h),var(--primary-s),var(--primary-15-l),1);--primary-15-invert-l:var(--primary-100-l);--primary-15-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-15-invert-l),1);--primary-20:hsla(var(--primary-h),var(--primary-s),var(--primary-20-l),1);--primary-20-invert-l:var(--primary-100-l);--primary-20-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-20-invert-l),1);--primary-25:hsla(var(--primary-h),var(--primary-s),var(--primary-25-l),1);--primary-25-invert-l:var(--primary-100-l);--primary-25-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-25-invert-l),1);--primary-30:hsla(var(--primary-h),var(--primary-s),var(--primary-30-l),1);--primary-30-invert-l:var(--primary-00-l);--primary-30-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-30-invert-l),1);--primary-35:hsla(var(--primary-h),var(--primary-s),var(--primary-35-l),1);--primary-35-invert-l:var(--primary-00-l);--primary-35-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-35-invert-l),1);--primary-40:hsla(var(--primary-h),var(--primary-s),var(--primary-40-l),1);--primary-40-invert-l:var(--primary-05-l);--primary-40-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-40-invert-l),1);--primary-45:hsla(var(--primary-h),var(--primary-s),var(--primary-45-l),1);--primary-45-invert-l:var(--primary-05-l);--primary-45-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-45-invert-l),1);--primary-50:hsla(var(--primary-h),var(--primary-s),var(--primary-50-l),1);--primary-50-invert-l:var(--primary-10-l);--primary-50-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-50-invert-l),1);--primary-55:hsla(var(--primary-h),var(--primary-s),var(--primary-55-l),1);--primary-55-invert-l:var(--primary-10-l);--primary-55-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-55-invert-l),1);--primary-60:hsla(var(--primary-h),var(--primary-s),var(--primary-60-l),1);--primary-60-invert-l:var(--primary-10-l);--primary-60-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-60-invert-l),1);--primary-65:hsla(var(--primary-h),var(--primary-s),var(--primary-65-l),1);--primary-65-invert-l:var(--primary-10-l);--primary-65-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-65-invert-l),1);--primary-70:hsla(var(--primary-h),var(--primary-s),var(--primary-70-l),1);--primary-70-invert-l:var(--primary-10-l);--primary-70-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-70-invert-l),1);--primary-75:hsla(var(--primary-h),var(--primary-s),var(--primary-75-l),1);--primary-75-invert-l:var(--primary-10-l);--primary-75-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-75-invert-l),1);--primary-80:hsla(var(--primary-h),var(--primary-s),var(--primary-80-l),1);--primary-80-invert-l:var(--primary-10-l);--primary-80-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-80-invert-l),1);--primary-85:hsla(var(--primary-h),var(--primary-s),var(--primary-85-l),1);--primary-85-invert-l:var(--primary-10-l);--primary-85-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-85-invert-l),1);--primary-90:hsla(var(--primary-h),var(--primary-s),var(--primary-90-l),1);--primary-90-invert-l:var(--primary-10-l);--primary-90-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-90-invert-l),1);--primary-95:hsla(var(--primary-h),var(--primary-s),var(--primary-95-l),1);--primary-95-invert-l:var(--primary-10-l);--primary-95-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-95-invert-l),1);--primary-100:hsla(var(--primary-h),var(--primary-s),var(--primary-100-l),1);--primary-100-invert-l:var(--primary-15-l);--primary-100-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-100-invert-l),1);--primary-invert-l:var(--primary-05-l);--primary-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-invert-l),1);--primary-light-l:var(--primary-90-l);--primary-light:hsla(var(--primary-h),var(--primary-s),var(--primary-light-l),1);--primary-light-invert-l:var(--primary-10-l);--primary-light-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-light-invert-l),1);--primary-dark-l:var(--primary-10-l);--primary-dark:hsla(var(--primary-h),var(--primary-s),var(--primary-dark-l),1);--primary-dark-invert-l:var(--primary-50-l);--primary-dark-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-dark-invert-l),1);--primary-soft:hsla(var(--primary-h),var(--primary-s),var(--soft-l),1);--primary-bold:hsla(var(--primary-h),var(--primary-s),var(--bold-l),1);--primary-soft-invert:hsla(var(--primary-h),var(--primary-s),var(--soft-invert-l),1);--primary-bold-invert:hsla(var(--primary-h),var(--primary-s),var(--bold-invert-l),1);--primary-on-scheme-l:21%;--primary-on-scheme:hsla(var(--primary-h),var(--primary-s),var(--primary-on-scheme-l),1);--link:hsla(var(--link-h),var(--link-s),var(--link-l),1);--link-base:hsla(var(--link-h),var(--link-s),var(--link-l),1);--link-rgb:66.3,88.315,255;--link-h:233deg;--link-s:100%;--link-l:63%;--link-00-l:0%;--link-05-l:3%;--link-10-l:8%;--link-15-l:13%;--link-20-l:18%;--link-25-l:23%;--link-30-l:28%;--link-35-l:33%;--link-40-l:38%;--link-45-l:43%;--link-50-l:48%;--link-55-l:53%;--link-60-l:58%;--link-65-l:63%;--link-70-l:68%;--link-75-l:73%;--link-80-l:78%;--link-85-l:83%;--link-90-l:88%;--link-95-l:93%;--link-100-l:98%;--link-00:hsla(var(--link-h),var(--link-s),var(--link-00-l),1);--link-00-invert-l:var(--link-75-l);--link-00-invert:hsla(var(--link-h),var(--link-s),var(--link-00-invert-l),1);--link-05:hsla(var(--link-h),var(--link-s),var(--link-05-l),1);--link-05-invert-l:var(--link-75-l);--link-05-invert:hsla(var(--link-h),var(--link-s),var(--link-05-invert-l),1);--link-10:hsla(var(--link-h),var(--link-s),var(--link-10-l),1);--link-10-invert-l:var(--link-75-l);--link-10-invert:hsla(var(--link-h),var(--link-s),var(--link-10-invert-l),1);--link-15:hsla(var(--link-h),var(--link-s),var(--link-15-l),1);--link-15-invert-l:var(--link-80-l);--link-15-invert:hsla(var(--link-h),var(--link-s),var(--link-15-invert-l),1);--link-20:hsla(var(--link-h),var(--link-s),var(--link-20-l),1);--link-20-invert-l:var(--link-80-l);--link-20-invert:hsla(var(--link-h),var(--link-s),var(--link-20-invert-l),1);--link-25:hsla(var(--link-h),var(--link-s),var(--link-25-l),1);--link-25-invert-l:var(--link-85-l);--link-25-invert:hsla(var(--link-h),var(--link-s),var(--link-25-invert-l),1);--link-30:hsla(var(--link-h),var(--link-s),var(--link-30-l),1);--link-30-invert-l:var(--link-90-l);--link-30-invert:hsla(var(--link-h),var(--link-s),var(--link-30-invert-l),1);--link-35:hsla(var(--link-h),var(--link-s),var(--link-35-l),1);--link-35-invert-l:var(--link-90-l);--link-35-invert:hsla(var(--link-h),var(--link-s),var(--link-35-invert-l),1);--link-40:hsla(var(--link-h),var(--link-s),var(--link-40-l),1);--link-40-invert-l:var(--link-95-l);--link-40-invert:hsla(var(--link-h),var(--link-s),var(--link-40-invert-l),1);--link-45:hsla(var(--link-h),var(--link-s),var(--link-45-l),1);--link-45-invert-l:var(--link-95-l);--link-45-invert:hsla(var(--link-h),var(--link-s),var(--link-45-invert-l),1);--link-50:hsla(var(--link-h),var(--link-s),var(--link-50-l),1);--link-50-invert-l:var(--link-100-l);--link-50-invert:hsla(var(--link-h),var(--link-s),var(--link-50-invert-l),1);--link-55:hsla(var(--link-h),var(--link-s),var(--link-55-l),1);--link-55-invert-l:var(--link-100-l);--link-55-invert:hsla(var(--link-h),var(--link-s),var(--link-55-invert-l),1);--link-60:hsla(var(--link-h),var(--link-s),var(--link-60-l),1);--link-60-invert-l:var(--link-100-l);--link-60-invert:hsla(var(--link-h),var(--link-s),var(--link-60-invert-l),1);--link-65:hsla(var(--link-h),var(--link-s),var(--link-65-l),1);--link-65-invert-l:var(--link-100-l);--link-65-invert:hsla(var(--link-h),var(--link-s),var(--link-65-invert-l),1);--link-70:hsla(var(--link-h),var(--link-s),var(--link-70-l),1);--link-70-invert-l:var(--link-100-l);--link-70-invert:hsla(var(--link-h),var(--link-s),var(--link-70-invert-l),1);--link-75:hsla(var(--link-h),var(--link-s),var(--link-75-l),1);--link-75-invert-l:var(--link-10-l);--link-75-invert:hsla(var(--link-h),var(--link-s),var(--link-75-invert-l),1);--link-80:hsla(var(--link-h),var(--link-s),var(--link-80-l),1);--link-80-invert-l:var(--link-20-l);--link-80-invert:hsla(var(--link-h),var(--link-s),var(--link-80-invert-l),1);--link-85:hsla(var(--link-h),var(--link-s),var(--link-85-l),1);--link-85-invert-l:var(--link-25-l);--link-85-invert:hsla(var(--link-h),var(--link-s),var(--link-85-invert-l),1);--link-90:hsla(var(--link-h),var(--link-s),var(--link-90-l),1);--link-90-invert-l:var(--link-35-l);--link-90-invert:hsla(var(--link-h),var(--link-s),var(--link-90-invert-l),1);--link-95:hsla(var(--link-h),var(--link-s),var(--link-95-l),1);--link-95-invert-l:var(--link-45-l);--link-95-invert:hsla(var(--link-h),var(--link-s),var(--link-95-invert-l),1);--link-100:hsla(var(--link-h),var(--link-s),var(--link-100-l),1);--link-100-invert-l:var(--link-50-l);--link-100-invert:hsla(var(--link-h),var(--link-s),var(--link-100-invert-l),1);--link-invert-l:var(--link-100-l);--link-invert:hsla(var(--link-h),var(--link-s),var(--link-invert-l),1);--link-light-l:var(--link-90-l);--link-light:hsla(var(--link-h),var(--link-s),var(--link-light-l),1);--link-light-invert-l:var(--link-35-l);--link-light-invert:hsla(var(--link-h),var(--link-s),var(--link-light-invert-l),1);--link-dark-l:var(--link-10-l);--link-dark:hsla(var(--link-h),var(--link-s),var(--link-dark-l),1);--link-dark-invert-l:var(--link-75-l);--link-dark-invert:hsla(var(--link-h),var(--link-s),var(--link-dark-invert-l),1);--link-soft:hsla(var(--link-h),var(--link-s),var(--soft-l),1);--link-bold:hsla(var(--link-h),var(--link-s),var(--bold-l),1);--link-soft-invert:hsla(var(--link-h),var(--link-s),var(--soft-invert-l),1);--link-bold-invert:hsla(var(--link-h),var(--link-s),var(--bold-invert-l),1);--link-on-scheme-l:58%;--link-on-scheme:hsla(var(--link-h),var(--link-s),var(--link-on-scheme-l),1);--info:hsla(var(--info-h),var(--info-s),var(--info-l),1);--info-base:hsla(var(--info-h),var(--info-s),var(--info-l),1);--info-rgb:102,209.1,255;--info-h:198deg;--info-s:100%;--info-l:70%;--info-00-l:0%;--info-05-l:5%;--info-10-l:10%;--info-15-l:15%;--info-20-l:20%;--info-25-l:25%;--info-30-l:30%;--info-35-l:35%;--info-40-l:40%;--info-45-l:45%;--info-50-l:50%;--info-55-l:55%;--info-60-l:60%;--info-65-l:65%;--info-70-l:70%;--info-75-l:75%;--info-80-l:80%;--info-85-l:85%;--info-90-l:90%;--info-95-l:95%;--info-100-l:100%;--info-00:hsla(var(--info-h),var(--info-s),var(--info-00-l),1);--info-00-invert-l:var(--info-45-l);--info-00-invert:hsla(var(--info-h),var(--info-s),var(--info-00-invert-l),1);--info-05:hsla(var(--info-h),var(--info-s),var(--info-05-l),1);--info-05-invert-l:var(--info-50-l);--info-05-invert:hsla(var(--info-h),var(--info-s),var(--info-05-invert-l),1);--info-10:hsla(var(--info-h),var(--info-s),var(--info-10-l),1);--info-10-invert-l:var(--info-60-l);--info-10-invert:hsla(var(--info-h),var(--info-s),var(--info-10-invert-l),1);--info-15:hsla(var(--info-h),var(--info-s),var(--info-15-l),1);--info-15-invert-l:var(--info-80-l);--info-15-invert:hsla(var(--info-h),var(--info-s),var(--info-15-invert-l),1);--info-20:hsla(var(--info-h),var(--info-s),var(--info-20-l),1);--info-20-invert-l:var(--info-95-l);--info-20-invert:hsla(var(--info-h),var(--info-s),var(--info-20-invert-l),1);--info-25:hsla(var(--info-h),var(--info-s),var(--info-25-l),1);--info-25-invert-l:var(--info-100-l);--info-25-invert:hsla(var(--info-h),var(--info-s),var(--info-25-invert-l),1);--info-30:hsla(var(--info-h),var(--info-s),var(--info-30-l),1);--info-30-invert-l:var(--info-100-l);--info-30-invert:hsla(var(--info-h),var(--info-s),var(--info-30-invert-l),1);--info-35:hsla(var(--info-h),var(--info-s),var(--info-35-l),1);--info-35-invert-l:var(--info-100-l);--info-35-invert:hsla(var(--info-h),var(--info-s),var(--info-35-invert-l),1);--info-40:hsla(var(--info-h),var(--info-s),var(--info-40-l),1);--info-40-invert-l:var(--info-100-l);--info-40-invert:hsla(var(--info-h),var(--info-s),var(--info-40-invert-l),1);--info-45:hsla(var(--info-h),var(--info-s),var(--info-45-l),1);--info-45-invert-l:var(--info-00-l);--info-45-invert:hsla(var(--info-h),var(--info-s),var(--info-45-invert-l),1);--info-50:hsla(var(--info-h),var(--info-s),var(--info-50-l),1);--info-50-invert-l:var(--info-05-l);--info-50-invert:hsla(var(--info-h),var(--info-s),var(--info-50-invert-l),1);--info-55:hsla(var(--info-h),var(--info-s),var(--info-55-l),1);--info-55-invert-l:var(--info-05-l);--info-55-invert:hsla(var(--info-h),var(--info-s),var(--info-55-invert-l),1);--info-60:hsla(var(--info-h),var(--info-s),var(--info-60-l),1);--info-60-invert-l:var(--info-10-l);--info-60-invert:hsla(var(--info-h),var(--info-s),var(--info-60-invert-l),1);--info-65:hsla(var(--info-h),var(--info-s),var(--info-65-l),1);--info-65-invert-l:var(--info-10-l);--info-65-invert:hsla(var(--info-h),var(--info-s),var(--info-65-invert-l),1);--info-70:hsla(var(--info-h),var(--info-s),var(--info-70-l),1);--info-70-invert-l:var(--info-10-l);--info-70-invert:hsla(var(--info-h),var(--info-s),var(--info-70-invert-l),1);--info-75:hsla(var(--info-h),var(--info-s),var(--info-75-l),1);--info-75-invert-l:var(--info-10-l);--info-75-invert:hsla(var(--info-h),var(--info-s),var(--info-75-invert-l),1);--info-80:hsla(var(--info-h),var(--info-s),var(--info-80-l),1);--info-80-invert-l:var(--info-15-l);--info-80-invert:hsla(var(--info-h),var(--info-s),var(--info-80-invert-l),1);--info-85:hsla(var(--info-h),var(--info-s),var(--info-85-l),1);--info-85-invert-l:var(--info-15-l);--info-85-invert:hsla(var(--info-h),var(--info-s),var(--info-85-invert-l),1);--info-90:hsla(var(--info-h),var(--info-s),var(--info-90-l),1);--info-90-invert-l:var(--info-15-l);--info-90-invert:hsla(var(--info-h),var(--info-s),var(--info-90-invert-l),1);--info-95:hsla(var(--info-h),var(--info-s),var(--info-95-l),1);--info-95-invert-l:var(--info-20-l);--info-95-invert:hsla(var(--info-h),var(--info-s),var(--info-95-invert-l),1);--info-100:hsla(var(--info-h),var(--info-s),var(--info-100-l),1);--info-100-invert-l:var(--info-20-l);--info-100-invert:hsla(var(--info-h),var(--info-s),var(--info-100-invert-l),1);--info-invert-l:var(--info-10-l);--info-invert:hsla(var(--info-h),var(--info-s),var(--info-invert-l),1);--info-light-l:var(--info-90-l);--info-light:hsla(var(--info-h),var(--info-s),var(--info-light-l),1);--info-light-invert-l:var(--info-15-l);--info-light-invert:hsla(var(--info-h),var(--info-s),var(--info-light-invert-l),1);--info-dark-l:var(--info-10-l);--info-dark:hsla(var(--info-h),var(--info-s),var(--info-dark-l),1);--info-dark-invert-l:var(--info-60-l);--info-dark-invert:hsla(var(--info-h),var(--info-s),var(--info-dark-invert-l),1);--info-soft:hsla(var(--info-h),var(--info-s),var(--soft-l),1);--info-bold:hsla(var(--info-h),var(--info-s),var(--bold-l),1);--info-soft-invert:hsla(var(--info-h),var(--info-s),var(--soft-invert-l),1);--info-bold-invert:hsla(var(--info-h),var(--info-s),var(--bold-invert-l),1);--info-on-scheme-l:25%;--info-on-scheme:hsla(var(--info-h),var(--info-s),var(--info-on-scheme-l),1);--success:hsla(var(--success-h),var(--success-s),var(--success-l),1);--success-base:hsla(var(--success-h),var(--success-s),var(--success-l),1);--success-rgb:71.6295,198.6705,141.50205;--success-h:153deg;--success-s:53%;--success-l:53%;--success-00-l:0%;--success-05-l:3%;--success-10-l:8%;--success-15-l:13%;--success-20-l:18%;--success-25-l:23%;--success-30-l:28%;--success-35-l:33%;--success-40-l:38%;--success-45-l:43%;--success-50-l:48%;--success-55-l:53%;--success-60-l:58%;--success-65-l:63%;--success-70-l:68%;--success-75-l:73%;--success-80-l:78%;--success-85-l:83%;--success-90-l:88%;--success-95-l:93%;--success-100-l:98%;--success-00:hsla(var(--success-h),var(--success-s),var(--success-00-l),1);--success-00-invert-l:var(--success-45-l);--success-00-invert:hsla(var(--success-h),var(--success-s),var(--success-00-invert-l),1);--success-05:hsla(var(--success-h),var(--success-s),var(--success-05-l),1);--success-05-invert-l:var(--success-45-l);--success-05-invert:hsla(var(--success-h),var(--success-s),var(--success-05-invert-l),1);--success-10:hsla(var(--success-h),var(--success-s),var(--success-10-l),1);--success-10-invert-l:var(--success-55-l);--success-10-invert:hsla(var(--success-h),var(--success-s),var(--success-10-invert-l),1);--success-15:hsla(var(--success-h),var(--success-s),var(--success-15-l),1);--success-15-invert-l:var(--success-75-l);--success-15-invert:hsla(var(--success-h),var(--success-s),var(--success-15-invert-l),1);--success-20:hsla(var(--success-h),var(--success-s),var(--success-20-l),1);--success-20-invert-l:var(--success-95-l);--success-20-invert:hsla(var(--success-h),var(--success-s),var(--success-20-invert-l),1);--success-25:hsla(var(--success-h),var(--success-s),var(--success-25-l),1);--success-25-invert-l:var(--success-100-l);--success-25-invert:hsla(var(--success-h),var(--success-s),var(--success-25-invert-l),1);--success-30:hsla(var(--success-h),var(--success-s),var(--success-30-l),1);--success-30-invert-l:var(--success-100-l);--success-30-invert:hsla(var(--success-h),var(--success-s),var(--success-30-invert-l),1);--success-35:hsla(var(--success-h),var(--success-s),var(--success-35-l),1);--success-35-invert-l:var(--success-100-l);--success-35-invert:hsla(var(--success-h),var(--success-s),var(--success-35-invert-l),1);--success-40:hsla(var(--success-h),var(--success-s),var(--success-40-l),1);--success-40-invert-l:var(--success-100-l);--success-40-invert:hsla(var(--success-h),var(--success-s),var(--success-40-invert-l),1);--success-45:hsla(var(--success-h),var(--success-s),var(--success-45-l),1);--success-45-invert-l:var(--success-05-l);--success-45-invert:hsla(var(--success-h),var(--success-s),var(--success-45-invert-l),1);--success-50:hsla(var(--success-h),var(--success-s),var(--success-50-l),1);--success-50-invert-l:var(--success-05-l);--success-50-invert:hsla(var(--success-h),var(--success-s),var(--success-50-invert-l),1);--success-55:hsla(var(--success-h),var(--success-s),var(--success-55-l),1);--success-55-invert-l:var(--success-10-l);--success-55-invert:hsla(var(--success-h),var(--success-s),var(--success-55-invert-l),1);--success-60:hsla(var(--success-h),var(--success-s),var(--success-60-l),1);--success-60-invert-l:var(--success-10-l);--success-60-invert:hsla(var(--success-h),var(--success-s),var(--success-60-invert-l),1);--success-65:hsla(var(--success-h),var(--success-s),var(--success-65-l),1);--success-65-invert-l:var(--success-10-l);--success-65-invert:hsla(var(--success-h),var(--success-s),var(--success-65-invert-l),1);--success-70:hsla(var(--success-h),var(--success-s),var(--success-70-l),1);--success-70-invert-l:var(--success-10-l);--success-70-invert:hsla(var(--success-h),var(--success-s),var(--success-70-invert-l),1);--success-75:hsla(var(--success-h),var(--success-s),var(--success-75-l),1);--success-75-invert-l:var(--success-15-l);--success-75-invert:hsla(var(--success-h),var(--success-s),var(--success-75-invert-l),1);--success-80:hsla(var(--success-h),var(--success-s),var(--success-80-l),1);--success-80-invert-l:var(--success-15-l);--success-80-invert:hsla(var(--success-h),var(--success-s),var(--success-80-invert-l),1);--success-85:hsla(var(--success-h),var(--success-s),var(--success-85-l),1);--success-85-invert-l:var(--success-15-l);--success-85-invert:hsla(var(--success-h),var(--success-s),var(--success-85-invert-l),1);--success-90:hsla(var(--success-h),var(--success-s),var(--success-90-l),1);--success-90-invert-l:var(--success-15-l);--success-90-invert:hsla(var(--success-h),var(--success-s),var(--success-90-invert-l),1);--success-95:hsla(var(--success-h),var(--success-s),var(--success-95-l),1);--success-95-invert-l:var(--success-20-l);--success-95-invert:hsla(var(--success-h),var(--success-s),var(--success-95-invert-l),1);--success-100:hsla(var(--success-h),var(--success-s),var(--success-100-l),1);--success-100-invert-l:var(--success-20-l);--success-100-invert:hsla(var(--success-h),var(--success-s),var(--success-100-invert-l),1);--success-invert-l:var(--success-10-l);--success-invert:hsla(var(--success-h),var(--success-s),var(--success-invert-l),1);--success-light-l:var(--success-90-l);--success-light:hsla(var(--success-h),var(--success-s),var(--success-light-l),1);--success-light-invert-l:var(--success-15-l);--success-light-invert:hsla(var(--success-h),var(--success-s),var(--success-light-invert-l),1);--success-dark-l:var(--success-10-l);--success-dark:hsla(var(--success-h),var(--success-s),var(--success-dark-l),1);--success-dark-invert-l:var(--success-55-l);--success-dark-invert:hsla(var(--success-h),var(--success-s),var(--success-dark-invert-l),1);--success-soft:hsla(var(--success-h),var(--success-s),var(--soft-l),1);--success-bold:hsla(var(--success-h),var(--success-s),var(--bold-l),1);--success-soft-invert:hsla(var(--success-h),var(--success-s),var(--soft-invert-l),1);--success-bold-invert:hsla(var(--success-h),var(--success-s),var(--bold-invert-l),1);--success-on-scheme-l:23%;--success-on-scheme:hsla(var(--success-h),var(--success-s),var(--success-on-scheme-l),1);--warning:hsla(var(--warning-h),var(--warning-s),var(--warning-l),1);--warning-base:hsla(var(--warning-h),var(--warning-s),var(--warning-l),1);--warning-rgb:255,183.09,15.3;--warning-h:42deg;--warning-s:100%;--warning-l:53%;--warning-00-l:0%;--warning-05-l:3%;--warning-10-l:8%;--warning-15-l:13%;--warning-20-l:18%;--warning-25-l:23%;--warning-30-l:28%;--warning-35-l:33%;--warning-40-l:38%;--warning-45-l:43%;--warning-50-l:48%;--warning-55-l:53%;--warning-60-l:58%;--warning-65-l:63%;--warning-70-l:68%;--warning-75-l:73%;--warning-80-l:78%;--warning-85-l:83%;--warning-90-l:88%;--warning-95-l:93%;--warning-100-l:98%;--warning-00:hsla(var(--warning-h),var(--warning-s),var(--warning-00-l),1);--warning-00-invert-l:var(--warning-40-l);--warning-00-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-00-invert-l),1);--warning-05:hsla(var(--warning-h),var(--warning-s),var(--warning-05-l),1);--warning-05-invert-l:var(--warning-45-l);--warning-05-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-05-invert-l),1);--warning-10:hsla(var(--warning-h),var(--warning-s),var(--warning-10-l),1);--warning-10-invert-l:var(--warning-50-l);--warning-10-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-10-invert-l),1);--warning-15:hsla(var(--warning-h),var(--warning-s),var(--warning-15-l),1);--warning-15-invert-l:var(--warning-70-l);--warning-15-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-15-invert-l),1);--warning-20:hsla(var(--warning-h),var(--warning-s),var(--warning-20-l),1);--warning-20-invert-l:var(--warning-100-l);--warning-20-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-20-invert-l),1);--warning-25:hsla(var(--warning-h),var(--warning-s),var(--warning-25-l),1);--warning-25-invert-l:var(--warning-100-l);--warning-25-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-25-invert-l),1);--warning-30:hsla(var(--warning-h),var(--warning-s),var(--warning-30-l),1);--warning-30-invert-l:var(--warning-100-l);--warning-30-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-30-invert-l),1);--warning-35:hsla(var(--warning-h),var(--warning-s),var(--warning-35-l),1);--warning-35-invert-l:var(--warning-100-l);--warning-35-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-35-invert-l),1);--warning-40:hsla(var(--warning-h),var(--warning-s),var(--warning-40-l),1);--warning-40-invert-l:var(--warning-00-l);--warning-40-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-40-invert-l),1);--warning-45:hsla(var(--warning-h),var(--warning-s),var(--warning-45-l),1);--warning-45-invert-l:var(--warning-05-l);--warning-45-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-45-invert-l),1);--warning-50:hsla(var(--warning-h),var(--warning-s),var(--warning-50-l),1);--warning-50-invert-l:var(--warning-10-l);--warning-50-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-50-invert-l),1);--warning-55:hsla(var(--warning-h),var(--warning-s),var(--warning-55-l),1);--warning-55-invert-l:var(--warning-10-l);--warning-55-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-55-invert-l),1);--warning-60:hsla(var(--warning-h),var(--warning-s),var(--warning-60-l),1);--warning-60-invert-l:var(--warning-10-l);--warning-60-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-60-invert-l),1);--warning-65:hsla(var(--warning-h),var(--warning-s),var(--warning-65-l),1);--warning-65-invert-l:var(--warning-10-l);--warning-65-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-65-invert-l),1);--warning-70:hsla(var(--warning-h),var(--warning-s),var(--warning-70-l),1);--warning-70-invert-l:var(--warning-15-l);--warning-70-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-70-invert-l),1);--warning-75:hsla(var(--warning-h),var(--warning-s),var(--warning-75-l),1);--warning-75-invert-l:var(--warning-15-l);--warning-75-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-75-invert-l),1);--warning-80:hsla(var(--warning-h),var(--warning-s),var(--warning-80-l),1);--warning-80-invert-l:var(--warning-15-l);--warning-80-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-80-invert-l),1);--warning-85:hsla(var(--warning-h),var(--warning-s),var(--warning-85-l),1);--warning-85-invert-l:var(--warning-15-l);--warning-85-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-85-invert-l),1);--warning-90:hsla(var(--warning-h),var(--warning-s),var(--warning-90-l),1);--warning-90-invert-l:var(--warning-15-l);--warning-90-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-90-invert-l),1);--warning-95:hsla(var(--warning-h),var(--warning-s),var(--warning-95-l),1);--warning-95-invert-l:var(--warning-15-l);--warning-95-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-95-invert-l),1);--warning-100:hsla(var(--warning-h),var(--warning-s),var(--warning-100-l),1);--warning-100-invert-l:var(--warning-20-l);--warning-100-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-100-invert-l),1);--warning-invert-l:var(--warning-10-l);--warning-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-invert-l),1);--warning-light-l:var(--warning-90-l);--warning-light:hsla(var(--warning-h),var(--warning-s),var(--warning-light-l),1);--warning-light-invert-l:var(--warning-15-l);--warning-light-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-light-invert-l),1);--warning-dark-l:var(--warning-10-l);--warning-dark:hsla(var(--warning-h),var(--warning-s),var(--warning-dark-l),1);--warning-dark-invert-l:var(--warning-50-l);--warning-dark-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-dark-invert-l),1);--warning-soft:hsla(var(--warning-h),var(--warning-s),var(--soft-l),1);--warning-bold:hsla(var(--warning-h),var(--warning-s),var(--bold-l),1);--warning-soft-invert:hsla(var(--warning-h),var(--warning-s),var(--soft-invert-l),1);--warning-bold-invert:hsla(var(--warning-h),var(--warning-s),var(--bold-invert-l),1);--warning-on-scheme-l:23%;--warning-on-scheme:hsla(var(--warning-h),var(--warning-s),var(--warning-on-scheme-l),1);--danger:hsla(var(--danger-h),var(--danger-s),var(--danger-l),1);--danger-base:hsla(var(--danger-h),var(--danger-s),var(--danger-l),1);--danger-rgb:255,102,132.6;--danger-h:348deg;--danger-s:100%;--danger-l:70%;--danger-00-l:0%;--danger-05-l:5%;--danger-10-l:10%;--danger-15-l:15%;--danger-20-l:20%;--danger-25-l:25%;--danger-30-l:30%;--danger-35-l:35%;--danger-40-l:40%;--danger-45-l:45%;--danger-50-l:50%;--danger-55-l:55%;--danger-60-l:60%;--danger-65-l:65%;--danger-70-l:70%;--danger-75-l:75%;--danger-80-l:80%;--danger-85-l:85%;--danger-90-l:90%;--danger-95-l:95%;--danger-100-l:100%;--danger-00:hsla(var(--danger-h),var(--danger-s),var(--danger-00-l),1);--danger-00-invert-l:var(--danger-65-l);--danger-00-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-00-invert-l),1);--danger-05:hsla(var(--danger-h),var(--danger-s),var(--danger-05-l),1);--danger-05-invert-l:var(--danger-70-l);--danger-05-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-05-invert-l),1);--danger-10:hsla(var(--danger-h),var(--danger-s),var(--danger-10-l),1);--danger-10-invert-l:var(--danger-75-l);--danger-10-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-10-invert-l),1);--danger-15:hsla(var(--danger-h),var(--danger-s),var(--danger-15-l),1);--danger-15-invert-l:var(--danger-80-l);--danger-15-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-15-invert-l),1);--danger-20:hsla(var(--danger-h),var(--danger-s),var(--danger-20-l),1);--danger-20-invert-l:var(--danger-85-l);--danger-20-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-20-invert-l),1);--danger-25:hsla(var(--danger-h),var(--danger-s),var(--danger-25-l),1);--danger-25-invert-l:var(--danger-90-l);--danger-25-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-25-invert-l),1);--danger-30:hsla(var(--danger-h),var(--danger-s),var(--danger-30-l),1);--danger-30-invert-l:var(--danger-100-l);--danger-30-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-30-invert-l),1);--danger-35:hsla(var(--danger-h),var(--danger-s),var(--danger-35-l),1);--danger-35-invert-l:var(--danger-100-l);--danger-35-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-35-invert-l),1);--danger-40:hsla(var(--danger-h),var(--danger-s),var(--danger-40-l),1);--danger-40-invert-l:var(--danger-100-l);--danger-40-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-40-invert-l),1);--danger-45:hsla(var(--danger-h),var(--danger-s),var(--danger-45-l),1);--danger-45-invert-l:var(--danger-100-l);--danger-45-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-45-invert-l),1);--danger-50:hsla(var(--danger-h),var(--danger-s),var(--danger-50-l),1);--danger-50-invert-l:var(--danger-100-l);--danger-50-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-50-invert-l),1);--danger-55:hsla(var(--danger-h),var(--danger-s),var(--danger-55-l),1);--danger-55-invert-l:var(--danger-100-l);--danger-55-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-55-invert-l),1);--danger-60:hsla(var(--danger-h),var(--danger-s),var(--danger-60-l),1);--danger-60-invert-l:var(--danger-100-l);--danger-60-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-60-invert-l),1);--danger-65:hsla(var(--danger-h),var(--danger-s),var(--danger-65-l),1);--danger-65-invert-l:var(--danger-00-l);--danger-65-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-65-invert-l),1);--danger-70:hsla(var(--danger-h),var(--danger-s),var(--danger-70-l),1);--danger-70-invert-l:var(--danger-05-l);--danger-70-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-70-invert-l),1);--danger-75:hsla(var(--danger-h),var(--danger-s),var(--danger-75-l),1);--danger-75-invert-l:var(--danger-10-l);--danger-75-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-75-invert-l),1);--danger-80:hsla(var(--danger-h),var(--danger-s),var(--danger-80-l),1);--danger-80-invert-l:var(--danger-15-l);--danger-80-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-80-invert-l),1);--danger-85:hsla(var(--danger-h),var(--danger-s),var(--danger-85-l),1);--danger-85-invert-l:var(--danger-20-l);--danger-85-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-85-invert-l),1);--danger-90:hsla(var(--danger-h),var(--danger-s),var(--danger-90-l),1);--danger-90-invert-l:var(--danger-25-l);--danger-90-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-90-invert-l),1);--danger-95:hsla(var(--danger-h),var(--danger-s),var(--danger-95-l),1);--danger-95-invert-l:var(--danger-25-l);--danger-95-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-95-invert-l),1);--danger-100:hsla(var(--danger-h),var(--danger-s),var(--danger-100-l),1);--danger-100-invert-l:var(--danger-30-l);--danger-100-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-100-invert-l),1);--danger-invert-l:var(--danger-05-l);--danger-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-invert-l),1);--danger-light-l:var(--danger-90-l);--danger-light:hsla(var(--danger-h),var(--danger-s),var(--danger-light-l),1);--danger-light-invert-l:var(--danger-25-l);--danger-light-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-light-invert-l),1);--danger-dark-l:var(--danger-10-l);--danger-dark:hsla(var(--danger-h),var(--danger-s),var(--danger-dark-l),1);--danger-dark-invert-l:var(--danger-75-l);--danger-dark-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-dark-invert-l),1);--danger-soft:hsla(var(--danger-h),var(--danger-s),var(--soft-l),1);--danger-bold:hsla(var(--danger-h),var(--danger-s),var(--bold-l),1);--danger-soft-invert:hsla(var(--danger-h),var(--danger-s),var(--soft-invert-l),1);--danger-bold-invert:hsla(var(--danger-h),var(--danger-s),var(--bold-invert-l),1);--danger-on-scheme-l:40%;--danger-on-scheme:hsla(var(--danger-h),var(--danger-s),var(--danger-on-scheme-l),1);--black-bis:#14161a;--black-ter:#1f2229;--grey-darker:#2e333d;--grey-dark:#404654;--grey:#69748c;--grey-light:#abb1bf;--grey-lighter:#d6d9e0;--white-ter:#f3f4f6;--white-bis:#f9fafb;--shadow-h:221deg;--shadow-s:14%;--shadow-l:4%;--size-1:3rem;--size-2:2.5rem;--size-3:2rem;--size-4:1.5rem;--size-5:1.25rem;--size-6:1rem;--size-7:0.75rem;--scheme-main:hsl(var(--scheme-h),var(--scheme-s),var(--scheme-main-l));--scheme-main-bis:hsl(var(--scheme-h),var(--scheme-s),var(--scheme-main-bis-l));--scheme-main-ter:hsl(var(--scheme-h),var(--scheme-s),var(--scheme-main-ter-l));--background:hsl(var(--scheme-h),var(--scheme-s),var(--background-l));--background-hover:hsl(var(--scheme-h),var(--scheme-s),calc(var(--background-l) + var(--hover-background-l-delta)));--background-active:hsl(var(--scheme-h),var(--scheme-s),calc(var(--background-l) + var(--active-background-l-delta)));--border-weak:hsl(var(--scheme-h),var(--scheme-s),var(--border-weak-l));--border:hsl(var(--scheme-h),var(--scheme-s),var(--border-l));--border-hover:hsl(var(--scheme-h),var(--scheme-s),calc(var(--border-l) + var(--hover-border-l-delta)));--border-active:hsl(var(--scheme-h),var(--scheme-s),calc(var(--border-l) + var(--active-border-l-delta)));--text-weak:hsl(var(--text-h),var(--text-s),var(--text-weak-l));--text:hsl(var(--text-h),var(--text-s),var(--text-l));--text-strong:hsl(var(--text-h),var(--text-s),var(--text-strong-l));--scheme-invert-ter:hsl(var(--scheme-h),var(--scheme-s),var(--scheme-invert-ter-l));--scheme-invert-bis:hsl(var(--scheme-h),var(--scheme-s),var(--scheme-invert-bis-l));--scheme-invert:hsl(var(--scheme-h),var(--scheme-s),var(--scheme-invert-l));--link:hsl(var(--link-h),var(--link-s),var(--link-l));--link-text:hsl(var(--link-h),var(--link-s),var(--link-on-scheme-l));--link-text-hover:hsl(var(--link-h),var(--link-s),calc(var(--link-on-scheme-l) + var(--hover-color-l-delta)));--link-text-active:hsl(var(--link-h),var(--link-s),calc(var(--link-on-scheme-l) + var(--active-color-l-delta)));--focus-h:var(--link-h);--focus-s:var(--link-s);--focus-l:var(--link-l);--focus-offset:1px;--focus-style:solid;--focus-width:2px;--focus-shadow-size:0 0 0 0.1875em;--focus-shadow-alpha:0.25;--code:hsl(var(--danger-h),var(--danger-s),var(--danger-on-scheme-l));--code-background:var(--background);--pre:var(--text);--pre-background:var(--background);--shadow:0 0.5em 1em -0.125em hsla(var(--shadow-h),var(--shadow-s),var(--shadow-l),0.1),0 0px 0 1px hsla(var(--shadow-h),var(--shadow-s),var(--shadow-l),0.02)}:root{--skeleton-background:var(--border);--skeleton-radius:var(--radius-small);--skeleton-block-min-height:4.5em;--skeleton-lines-gap:0.75em;--skeleton-line-height:0.75em}.switch[type=checkbox]{display:inline-block;opacity:0;outline:0;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none}.switch[type=checkbox]:focus+label:after,.switch[type=checkbox]:focus+label:before{outline:1px dotted #abb1bf}.switch[type=checkbox][disabled]{cursor:not-allowed}.switch[type=checkbox][disabled]+label,.switch[type=checkbox][disabled]+label:after,.switch[type=checkbox][disabled]+label:before{opacity:.5}.switch[type=checkbox][disabled]+label:hover{cursor:not-allowed}.switch[type=checkbox]+label{align-items:center;cursor:pointer;display:inline-flex;font-size:1rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding-left:3.5rem;padding-top:.2rem;position:relative}.switch[type=checkbox]+label:before{background:#abb1bf;border:.1rem solid transparent;border-radius:.375rem;content:"";display:block;height:1.5rem;left:0;position:absolute;top:calc(50% - .75rem);width:3rem}.switch[type=checkbox]+label:after{background:#fff;border-radius:.375rem;content:"";display:block;height:1rem;left:.25rem;position:absolute;top:calc(50% - .5rem);transform:translateZ(0);transition:all .25s ease-out;width:1rem}.switch[type=checkbox]:checked+label:before{background:#00d1b2}.switch[type=checkbox]:checked+label:after{left:1.625rem}.switch[type=checkbox].is-rounded+label:before{border-radius:3rem}.switch[type=checkbox].is-rounded+label:after{border-radius:50%}.switch[type=checkbox].is-small+label{align-items:center;cursor:pointer;display:inline-flex;font-size:.75rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding-left:2.75rem;padding-top:.2rem;position:relative}.switch[type=checkbox].is-small+label:before{background:#abb1bf;border:.1rem solid transparent;border-radius:.375rem;content:"";display:block;height:1.125rem;left:0;position:absolute;top:calc(50% - .5625rem);width:2.25rem}.switch[type=checkbox].is-small+label:after{background:#fff;border-radius:.375rem;content:"";display:block;height:.625rem;left:.25rem;position:absolute;top:calc(50% - .3125rem);transform:translateZ(0);transition:all .25s ease-out;width:.625rem}.switch[type=checkbox].is-small:checked+label:before{background:#00d1b2}.switch[type=checkbox].is-small:checked+label:after{left:1.25rem}.switch[type=checkbox].is-small.is-rounded+label:before{border-radius:3rem}.switch[type=checkbox].is-small.is-rounded+label:after{border-radius:50%}.switch[type=checkbox].is-medium+label{align-items:center;cursor:pointer;display:inline-flex;font-size:1.25rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding-left:4.25rem;padding-top:.2rem;position:relative}.switch[type=checkbox].is-medium+label:before{background:#abb1bf;border:.1rem solid transparent;border-radius:.375rem;content:"";display:block;height:1.875rem;left:0;position:absolute;top:calc(50% - .9375rem);width:3.75rem}.switch[type=checkbox].is-medium+label:after{background:#fff;border-radius:.375rem;content:"";display:block;height:1.375rem;left:.25rem;position:absolute;top:calc(50% - .6875rem);transform:translateZ(0);transition:all .25s ease-out;width:1.375rem}.switch[type=checkbox].is-medium:checked+label:before{background:#00d1b2}.switch[type=checkbox].is-medium:checked+label:after{left:2rem}.switch[type=checkbox].is-medium.is-rounded+label:before{border-radius:3rem}.switch[type=checkbox].is-medium.is-rounded+label:after{border-radius:50%}.switch[type=checkbox].is-large+label{align-items:center;cursor:pointer;display:inline-flex;font-size:1.5rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding-left:5rem;padding-top:.2rem;position:relative}.switch[type=checkbox].is-large+label:before{background:#abb1bf;border:.1rem solid transparent;border-radius:.375rem;content:"";display:block;height:2.25rem;left:0;position:absolute;top:calc(50% - 1.125rem);width:4.5rem}.switch[type=checkbox].is-large+label:after{background:#fff;border-radius:.375rem;content:"";display:block;height:1.75rem;left:.25rem;position:absolute;top:calc(50% - .875rem);transform:translateZ(0);transition:all .25s ease-out;width:1.75rem}.switch[type=checkbox].is-large:checked+label:before{background:#00d1b2}.switch[type=checkbox].is-large:checked+label:after{left:2.375rem}.switch[type=checkbox].is-large.is-rounded+label:before{border-radius:3rem}.switch[type=checkbox].is-large.is-rounded+label:after{border-radius:50%}.switch[type=checkbox].is-light:checked+label:before{background:#f3f4f6}.switch[type=checkbox].is-primary:checked+label:before{background:#00d1b2}.switch[type=checkbox].is-info:checked+label:before{background:#66d1ff}.switch[type=checkbox].is-success:checked+label:before{background:#48c78e}.switch[type=checkbox].is-warning:checked+label:before{background:#ffb70f}.switch[type=checkbox].is-danger:checked+label:before{background:#ff6685}.field-body .switch[type=checkbox]+label{margin-top:.375em}[data-tooltip]:not(.is-disabled),[data-tooltip]:not(.is-loading),[data-tooltip]:not([disabled]){cursor:pointer;overflow:visible;position:relative}[data-tooltip]:not(.is-disabled):after,[data-tooltip]:not(.is-disabled):before,[data-tooltip]:not(.is-loading):after,[data-tooltip]:not(.is-loading):before,[data-tooltip]:not([disabled]):after,[data-tooltip]:not([disabled]):before{box-sizing:border-box;color:#fff;display:inline-block;font-family:"Inter, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Lucida Sans Unicode, Lucida Grande, Arial, sans-serif";font-size:.75rem;-webkit-hyphens:auto;hyphens:auto;opacity:0;overflow:hidden;pointer-events:none;position:absolute;visibility:hidden;z-index:1020}[data-tooltip]:not(.is-disabled):after,[data-tooltip]:not(.is-loading):after,[data-tooltip]:not([disabled]):after{border:6px solid transparent;border-top-color:rgba(64,70,84,.9);border-color:rgba(64,70,84,.9) transparent transparent;bottom:auto;content:"";left:50%;margin-bottom:-5px;margin:-5px auto auto -5px;right:auto;top:0}[data-tooltip]:not(.is-disabled):before,[data-tooltip]:not(.is-loading):before,[data-tooltip]:not([disabled]):before{background:rgba(64,70,84,.9);border-radius:.25rem;bottom:auto;content:attr(data-tooltip);left:50%;margin-bottom:auto;margin-top:-5px;padding:.5rem 1rem;right:auto;text-overflow:ellipsis;top:0;transform:translate(-50%,-100%);white-space:pre}[data-tooltip]:not(.is-disabled).has-tooltip-right:after,[data-tooltip]:not(.is-loading).has-tooltip-right:after,[data-tooltip]:not([disabled]).has-tooltip-right:after{border-color:transparent rgba(64,70,84,.9) transparent transparent;bottom:50%;left:auto;margin:auto -11px -6px auto;right:0;top:auto}[data-tooltip]:not(.is-disabled).has-tooltip-right:before,[data-tooltip]:not(.is-loading).has-tooltip-right:before,[data-tooltip]:not([disabled]).has-tooltip-right:before{bottom:50%;left:auto;margin-top:auto;right:-11px;top:auto;transform:translate(100%,50%)}[data-tooltip]:not(.is-disabled).has-tooltip-multiline:before,[data-tooltip]:not(.is-loading).has-tooltip-multiline:before,[data-tooltip]:not([disabled]).has-tooltip-multiline:before{height:auto;max-width:15rem;text-overflow:clip;white-space:normal;width:15rem;word-break:keep-all}[data-tooltip]:not(.is-disabled):focus:after,[data-tooltip]:not(.is-disabled):focus:before,[data-tooltip]:not(.is-disabled):hover:after,[data-tooltip]:not(.is-disabled):hover:before,[data-tooltip]:not(.is-loading):focus:after,[data-tooltip]:not(.is-loading):focus:before,[data-tooltip]:not(.is-loading):hover:after,[data-tooltip]:not(.is-loading):hover:before,[data-tooltip]:not([disabled]):focus:after,[data-tooltip]:not([disabled]):focus:before,[data-tooltip]:not([disabled]):hover:after,[data-tooltip]:not([disabled]):hover:before{opacity:1;visibility:visible}.is-checkradio[type=checkbox]{display:none;opacity:0;outline:0;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none}.is-checkradio[type=checkbox]+label{border-radius:.375rem;cursor:pointer;display:initial;margin:.5em;padding:.2rem .5rem .2rem 0;position:relative;vertical-align:middle}.is-checkradio[type=checkbox]+label:first-of-type{margin-left:0}.is-checkradio[type=checkbox]+label:hover:before{animation-duration:.4s;animation-fill-mode:both;animation-name:hover-color}.is-checkradio[type=checkbox]+label:before{border:.1rem solid #d6d9e0;content:"";left:0;position:absolute;top:0}.is-checkradio[type=checkbox]+label:after{content:"";display:none;position:absolute;top:0}.is-checkradio[type=checkbox]:focus+label:before{outline:1px dotted #abb1bf}.is-checkradio[type=checkbox]:hover:not([disabled])+label:before{border-color:#00d1b2!important}.is-checkradio[type=checkbox]:checked+label:before{border:.1rem solid #d6d9e0}.is-checkradio[type=checkbox]:checked[disabled]{cursor:not-allowed}.is-checkradio[type=checkbox]:checked[disabled]+label{opacity:.5}.is-checkradio[type=checkbox]:checked+label:before{animation-name:none}.is-checkradio[type=checkbox]:checked+label:after{display:inline-block}.is-checkradio[type=checkbox][disabled]{cursor:not-allowed}.is-checkradio[type=checkbox][disabled]+label{cursor:not-allowed;opacity:.5}.is-checkradio[type=checkbox][disabled]+label:after,.is-checkradio[type=checkbox][disabled]+label:before,.is-checkradio[type=checkbox][disabled]+label:hover,.is-checkradio[type=checkbox][disabled]:hover{cursor:not-allowed}.is-checkradio[type=checkbox][disabled]:hover:before{animation-name:none}.is-checkradio[type=checkbox][disabled]:after,.is-checkradio[type=checkbox][disabled]:before{cursor:not-allowed}.is-checkradio[type=checkbox].is-block{display:none!important}.is-checkradio[type=checkbox].is-block+label{background:#f3f4f6;color:findColorInvert(#f3f4f6);padding-right:.75em;width:100%!important}.is-checkradio[type=checkbox].is-block:hover:not([disabled])+label{background:#e5e7eb}.is-checkradio[type=checkbox]+label:before{border-radius:.375rem}.is-checkradio[type=checkbox]+label:after{border:.1rem solid #00d1b2;border-left:0;border-top:0;box-sizing:border-box;transform:translateY(0) rotate(45deg)}.is-checkradio[type=checkbox]+label{font-size:1rem;padding-left:2rem}.is-checkradio[type=checkbox]+label:before{height:1.5rem;width:1.5rem}.is-checkradio[type=checkbox]+label:after{height:.6rem;left:.6rem;top:.405rem;width:.375rem}.is-checkradio[type=checkbox].is-block+label:before{height:1.25rem;left:.175rem;top:.175rem;width:1.25rem}.is-checkradio[type=checkbox].is-block+label:after{left:.65rem;top:.325rem}.is-checkradio[type=checkbox].is-small+label{font-size:.75rem;padding-left:1.5rem}.is-checkradio[type=checkbox].is-small+label:before{height:1.125rem;width:1.125rem}.is-checkradio[type=checkbox].is-small+label:after{height:.45rem;left:.45rem;top:.30375rem;width:.28125rem}.is-checkradio[type=checkbox].is-small.is-block+label:before{height:.9375rem;left:.175rem;top:.175rem;width:.9375rem}.is-checkradio[type=checkbox].is-small.is-block+label:after{left:.5375rem;top:.29375rem}.is-checkradio[type=checkbox].is-medium+label{font-size:1.25rem;padding-left:2.5rem}.is-checkradio[type=checkbox].is-medium+label:before{height:1.875rem;width:1.875rem}.is-checkradio[type=checkbox].is-medium+label:after{height:.75rem;left:.75rem;top:.50625rem;width:.46875rem}.is-checkradio[type=checkbox].is-medium.is-block+label:before{height:1.5625rem;left:.175rem;top:.175rem;width:1.5625rem}.is-checkradio[type=checkbox].is-medium.is-block+label:after{left:.7625rem;top:.35625rem}.is-checkradio[type=checkbox].is-large+label{font-size:1.5rem;padding-left:3rem}.is-checkradio[type=checkbox].is-large+label:before{height:2.25rem;width:2.25rem}.is-checkradio[type=checkbox].is-large+label:after{height:.9rem;left:.9rem;top:.6075rem;width:.5625rem}.is-checkradio[type=checkbox].is-large.is-block+label:before{height:1.875rem;left:.175rem;top:.175rem;width:1.875rem}.is-checkradio[type=checkbox].is-large.is-block+label:after{left:.875rem;top:.3875rem}.is-checkradio[type=checkbox].is-light:checked+label:after,.is-checkradio[type=checkbox].is-light:hover:not([disabled])+label:before{border-color:#f3f4f6!important}.is-checkradio[type=checkbox].is-light.is-block:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-light.is-block:hover:not([disabled])+label:before{border-color:#f3f4f6!important}.is-checkradio[type=checkbox].is-light.is-block:checked+label{background:#f3f4f6;border-color:#f3f4f6!important;color:#2e333d}.is-checkradio[type=checkbox].is-light.is-block:checked+label:after{border-color:#2e333d!important}.is-checkradio[type=checkbox].is-light.is-block:checked+label:hover:not([disabled])+label{background:#e5e7eb}.is-checkradio[type=checkbox].is-light.is-block:checked+label:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-light.is-block:checked+label:hover:not([disabled])+label:before{border-color:#23272f!important}.is-checkradio[type=checkbox].is-primary:checked+label:after,.is-checkradio[type=checkbox].is-primary:hover:not([disabled])+label:before{border-color:#00d1b2!important}.is-checkradio[type=checkbox].is-primary.is-block:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-primary.is-block:hover:not([disabled])+label:before{border-color:#00d1b2!important}.is-checkradio[type=checkbox].is-primary.is-block:checked+label{background:#00d1b2;border-color:#00d1b2!important;color:#00d1b2}.is-checkradio[type=checkbox].is-primary.is-block:checked+label:after{border-color:#00d1b2!important}.is-checkradio[type=checkbox].is-primary.is-block:checked+label:hover:not([disabled])+label{background:#00b89c}.is-checkradio[type=checkbox].is-primary.is-block:checked+label:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-primary.is-block:checked+label:hover:not([disabled])+label:before{border-color:#00d1b2!important}.is-checkradio[type=checkbox].is-info:checked+label:after,.is-checkradio[type=checkbox].is-info:hover:not([disabled])+label:before{border-color:#66d1ff!important}.is-checkradio[type=checkbox].is-info.is-block:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-info.is-block:hover:not([disabled])+label:before{border-color:#66d1ff!important}.is-checkradio[type=checkbox].is-info.is-block:checked+label{background:#66d1ff;border-color:#66d1ff!important;color:#66d1ff}.is-checkradio[type=checkbox].is-info.is-block:checked+label:after{border-color:#66d1ff!important}.is-checkradio[type=checkbox].is-info.is-block:checked+label:hover:not([disabled])+label{background:#4dc9ff}.is-checkradio[type=checkbox].is-info.is-block:checked+label:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-info.is-block:checked+label:hover:not([disabled])+label:before{border-color:#66d1ff!important}.is-checkradio[type=checkbox].is-success:checked+label:after,.is-checkradio[type=checkbox].is-success:hover:not([disabled])+label:before{border-color:#48c78e!important}.is-checkradio[type=checkbox].is-success.is-block:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-success.is-block:hover:not([disabled])+label:before{border-color:#48c78e!important}.is-checkradio[type=checkbox].is-success.is-block:checked+label{background:#48c78e;border-color:#48c78e!important;color:#48c78e}.is-checkradio[type=checkbox].is-success.is-block:checked+label:after{border-color:#48c78e!important}.is-checkradio[type=checkbox].is-success.is-block:checked+label:hover:not([disabled])+label{background:#3abb81}.is-checkradio[type=checkbox].is-success.is-block:checked+label:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-success.is-block:checked+label:hover:not([disabled])+label:before{border-color:#48c78e!important}.is-checkradio[type=checkbox].is-warning:checked+label:after,.is-checkradio[type=checkbox].is-warning:hover:not([disabled])+label:before{border-color:#ffb70f!important}.is-checkradio[type=checkbox].is-warning.is-block:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-warning.is-block:hover:not([disabled])+label:before{border-color:#ffb70f!important}.is-checkradio[type=checkbox].is-warning.is-block:checked+label{background:#ffb70f;border-color:#ffb70f!important;color:#ffb70f}.is-checkradio[type=checkbox].is-warning.is-block:checked+label:after{border-color:#ffb70f!important}.is-checkradio[type=checkbox].is-warning.is-block:checked+label:hover:not([disabled])+label{background:#f5ab00}.is-checkradio[type=checkbox].is-warning.is-block:checked+label:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-warning.is-block:checked+label:hover:not([disabled])+label:before{border-color:#ffb70f!important}.is-checkradio[type=checkbox].is-danger:checked+label:after,.is-checkradio[type=checkbox].is-danger:hover:not([disabled])+label:before{border-color:#ff6685!important}.is-checkradio[type=checkbox].is-danger.is-block:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-danger.is-block:hover:not([disabled])+label:before{border-color:#ff6685!important}.is-checkradio[type=checkbox].is-danger.is-block:checked+label{background:#ff6685;border-color:#ff6685!important;color:#ff6685}.is-checkradio[type=checkbox].is-danger.is-block:checked+label:after{border-color:#ff6685!important}.is-checkradio[type=checkbox].is-danger.is-block:checked+label:hover:not([disabled])+label{background:#ff4d70}.is-checkradio[type=checkbox].is-danger.is-block:checked+label:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-danger.is-block:checked+label:hover:not([disabled])+label:before{border-color:#ff6685!important}.is-checkradio[type=checkbox]:indeterminate+label:after{border-bottom:none;display:inline-block;transform:rotate(90deg)}.is-checkradio[type=checkbox]:indeterminate.is-light+label:after{border-color:#f3f4f6}.is-checkradio[type=checkbox]:indeterminate.is-primary+label:after{border-color:#00d1b2}.is-checkradio[type=checkbox]:indeterminate.is-info+label:after{border-color:#66d1ff}.is-checkradio[type=checkbox]:indeterminate.is-success+label:after{border-color:#48c78e}.is-checkradio[type=checkbox]:indeterminate.is-warning+label:after{border-color:#ffb70f}.is-checkradio[type=checkbox]:indeterminate.is-danger+label:after{border-color:#ff6685}.fa-beat{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-beat;animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-bounce;animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-fade;animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-beat-fade;animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-flip;animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-shake;animation-timing-function:var(--fa-animation-timing,linear)}.fa-shake,.fa-spin{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal)}.fa-spin{animation-duration:var(--fa-animation-duration,2s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-spin;animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-spin;animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{animation-delay:-1ms;animation-duration:1ms;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@keyframes fa-beat{0%,90%{transform:scale(1)}45%{transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-bounce{0%{transform:scale(1) translateY(0)}10%{transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{transform:scale(1) translateY(0)}to{transform:scale(1) translateY(0)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);transform:scale(1)}50%{opacity:1;transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-flip{50%{transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-shake{0%{transform:rotate(-15deg)}4%{transform:rotate(15deg)}24%,8%{transform:rotate(-18deg)}12%,28%{transform:rotate(18deg)}16%{transform:rotate(-22deg)}20%{transform:rotate(22deg)}32%{transform:rotate(-12deg)}36%{transform:rotate(12deg)}40%,to{transform:rotate(0deg)}}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@font-face{font-display:block;font-family:Font Awesome\ 6 Brands;font-style:normal;font-weight:400;src:url(/static/fonts/fontawesome/webfonts/fa-brands-400.woff2) format("woff2"),url(/static/fonts/fontawesome/webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-display:block;font-family:Font Awesome\ 6 Free;font-style:normal;font-weight:900;src:url(/static/fonts/fontawesome/webfonts/fa-solid-900.woff2) format("woff2"),url(/static/fonts/fontawesome/webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-display:block;font-family:Font Awesome\ 6 Free;font-style:normal;font-weight:400;src:url(/static/fonts/fontawesome/webfonts/fa-regular-400.woff2) format("woff2"),url(/static/fonts/fontawesome/webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-weight:400}.fa-regular,.fa-solid,.far,.fas{font-family:Font Awesome\ 6 Free}.fa-solid,.fas{font-weight:900}.fa-brands,.fab{font-family:Font Awesome\ 6 Brands;font-weight:400}.fa-2_3x{font-size:2.3em} + +/* build icon list */.fa-magnifying-glass:before{content:"\f002"}.fa-pen-to-square:before{content:"\f044"}.fa-trash:before{content:"\f1f8"}.fa-delete-left:before{content:"\f55a"}.fa-sort:before{content:"\f0dc"}.fa-terminal:before{content:"\f120"}.fa-list:before{content:"\f03a"}.fa-ban:before{content:"\f05e"}.fa-toggle-on:before{content:"\f205"}.fa-toggle-off:before{content:"\f204"}.fa-circle-play:before{content:"\f144"}.fa-plus:before{content:"\+"}.fa-rotate:before{content:"\f2f1"}.fa-copy:before{content:"\f0c5"}.fa-download:before{content:"\f019"}.fa-check:before{content:"\f00c"}.fa-circle-info:before{content:"\f05a"}.fa-file-arrow-down:before{content:"\f56d"}.fa-angle-right:before{content:"\f105"}.fa-circle-check:before{content:"\f058"}.fa-circle-xmark:before{content:"\f057"}.fa-circle-notch:before{content:"\f1ce"}.fa-circle-stop:before{content:"\f28d"}.fa-circle-pause:before{content:"\f28b"}.fa-circle-question:before{content:"\f059"}.fa-calendar:before{content:"\f133"}.fa-arrow-up-right-from-square:before{content:"\f08e"}.fa-eye-slash:before{content:"\f070"}.fa-eye:before{content:"\f06e"}.fa-users:before{content:"\f0c0"}.fa-right-to-bracket:before{content:"\f2f6"}.fa-angle-down:before{content:"\f107"}.fa-triangle-exclamation:before{content:"\f071"} + +/* BASICS */.CodeMirror{color:#000;direction:ltr; + /* Set height, width, borders, and global font properties here */font-family:monospace;height:300px} + +/* PADDING */.CodeMirror-lines{padding:4px 0 /* Vertical padding around content */}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px /* Horizontal padding of content */}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff /* The little square between H and V scrollbars */} + +/* GUTTER */.CodeMirror-gutters{background-color:#f7f7f7;border-right:1px solid #ddd;white-space:nowrap}.CodeMirror-linenumber{color:#999;min-width:20px;padding:0 3px 0 5px;text-align:right;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999} + +/* CURSOR */.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0} + +/* Shown when moving in bi-directional text */.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{background:#7e7;border:0!important;width:auto}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor .CodeMirror-line::-moz-selection, .cm-fat-cursor .CodeMirror-line>span::-moz-selection, .cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:transparent}.cm-fat-cursor .CodeMirror-line::selection,.cm-fat-cursor .CodeMirror-line>span::selection,.cm-fat-cursor .CodeMirror-line>span>span::selection{background:transparent}.cm-fat-cursor .CodeMirror-line::-moz-selection,.cm-fat-cursor .CodeMirror-line>span::-moz-selection,.cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:transparent}.cm-fat-cursor{caret-color:transparent}@keyframes blink{50%{background-color:transparent}} +/* Can style cursor different in overwrite (non-insert) mode */.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{bottom:0;left:0;overflow:hidden;position:absolute;right:0;top:-50px}.CodeMirror-ruler{border-left:1px solid #ccc;bottom:0;position:absolute;top:0} + +/* DEFAULT THEME */.cm-s-default .cm-header{color:blue}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-invalidchar,.cm-s-default .cm-error{color:red}.CodeMirror-composing{border-bottom:2px solid} + +/* Default styles for common addons */div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff} + +/* STOP */ +/* The rest of this file contains styles related to the mechanics of + the editor. You probably shouldn't touch them. */.CodeMirror{background:#fff;overflow:hidden;position:relative}.CodeMirror-scroll{height:100%; + /* 50px is the magic margin used to hide the element's real scrollbars */ + /* See overflow: hidden in .CodeMirror */margin-bottom:-50px;margin-right:-50px;outline:none; /* Prevent dragging from highlighting the element */overflow:scroll!important; /* Things will break if this is overridden */padding-bottom:50px;position:relative;z-index:0}.CodeMirror-sizer{border-right:50px solid transparent;position:relative} + +/* The fake, visible scrollbars. Used to force redraw during scrolling + before actual scrolling happens, thus preventing shaking and + flickering artifacts. */.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{display:none;outline:none;position:absolute;z-index:6}.CodeMirror-vscrollbar{overflow-x:hidden;overflow-y:scroll;right:0;top:0}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-x:scroll;overflow-y:hidden}.CodeMirror-scrollbar-filler{bottom:0;right:0}.CodeMirror-gutter-filler{bottom:0;left:0}.CodeMirror-gutters{left:0;min-height:100%;position:absolute;top:0;z-index:3}.CodeMirror-gutter{display:inline-block;height:100%;margin-bottom:-50px;vertical-align:top;white-space:normal}.CodeMirror-gutter-wrapper{background:none!important;border:none!important;position:absolute;z-index:4}.CodeMirror-gutter-background{bottom:0;position:absolute;top:0;z-index:4}.CodeMirror-gutter-elt{cursor:default;position:absolute;z-index:4}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px /* prevents collapsing before first draw */}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{background:transparent; + /* Reset some styles that the rest of the page might have set */border-radius:0;border-width:0;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;color:inherit;line-height:inherit;overflow:visible;position:relative;z-index:2;-webkit-tap-highlight-color:transparent;font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{bottom:0;left:0;position:absolute;right:0;top:0;z-index:0}.CodeMirror-linewidget{padding:.1px; /* Force widget margins to stay inside of the container */position:relative;z-index:2}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none} + +/* Force content-box sizing for the elements where we expect it */.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{box-sizing:content-box}.CodeMirror-measure{height:0;overflow:hidden;position:absolute;visibility:hidden;width:100%}.CodeMirror-cursor{pointer-events:none;position:absolute}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{position:relative;visibility:hidden;z-index:3}.CodeMirror-focused div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::-moz-selection, .CodeMirror-line>span::-moz-selection, .CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255,255,0,.4)} + +/* Used to force a border model for a node */.cm-force-border{padding-right:.1px}@media print{ + /* Hide the cursor when printing */.CodeMirror div.CodeMirror-cursors{visibility:hidden}} +/* See issue #2901 */.cm-tab-wrap-hack:after{content:""} + +/* Help users use markselection to safely style text background */span.CodeMirror-selectedtext{background:none}.cm-s-ttcn .cm-quote{color:#090}.cm-s-ttcn .cm-negative{color:#d44}.cm-s-ttcn .cm-positive{color:#292}.cm-s-ttcn .cm-header,.cm-strong{font-weight:700}.cm-s-ttcn .cm-em{font-style:italic}.cm-s-ttcn .cm-strikethrough{text-decoration:line-through}.cm-s-ttcn .cm-header{color:#00f;font-weight:700}.cm-s-ttcn .cm-atom{color:#219}.cm-s-ttcn .cm-attribute{color:#00c}.cm-s-ttcn .cm-bracket{color:#997}.cm-s-ttcn .cm-comment{color:#333}.cm-s-ttcn .cm-def{color:#00f}.cm-s-ttcn .cm-error{color:red}.cm-s-ttcn .cm-hr{color:#999}.cm-s-ttcn .cm-invalidchar{color:red}.cm-s-ttcn .cm-keyword{font-weight:700}.cm-s-ttcn .cm-link{color:#00c;text-decoration:underline}.cm-s-ttcn .cm-meta,.cm-s-ttcn .cm-qualifier{color:#555}.cm-s-ttcn .cm-string{color:#006400}.cm-s-ttcn .cm-string-2{color:#f50}.cm-s-ttcn .cm-strong{font-weight:700}.cm-s-ttcn .cm-tag{color:#170}.cm-s-ttcn .cm-variable{color:#8b2252}.cm-s-ttcn .cm-variable-2{color:#05a}.cm-s-ttcn .cm-type,.cm-s-ttcn .cm-variable-3{color:#085} + +/* ASN */.cm-s-ttcn .cm-accessTypes,.cm-s-ttcn .cm-compareTypes{color:#27408b}.cm-s-ttcn .cm-cmipVerbs{color:#8b2252}.cm-s-ttcn .cm-modifier{color:#d2691e}.cm-s-ttcn .cm-status{color:#8b4545}.cm-s-ttcn .cm-storage{color:#a020f0}.cm-s-ttcn .cm-tags{color:#006400} + +/* CFG */.cm-s-ttcn .cm-externalCommands{color:#8b4545;font-weight:700}.cm-s-ttcn .cm-fileNCtrlMaskOptions,.cm-s-ttcn .cm-sectionTitle{color:#2e8b57;font-weight:700} + +/* TTCN */.cm-s-ttcn .cm-booleanConsts,.cm-s-ttcn .cm-otherConsts,.cm-s-ttcn .cm-verdictConsts{color:#006400}.cm-s-ttcn .cm-configOps,.cm-s-ttcn .cm-functionOps,.cm-s-ttcn .cm-portOps,.cm-s-ttcn .cm-sutOps,.cm-s-ttcn .cm-timerOps,.cm-s-ttcn .cm-verdictOps{color:#00f}.cm-s-ttcn .cm-preprocessor,.cm-s-ttcn .cm-templateMatch,.cm-s-ttcn .cm-ttcn3Macros{color:#27408b}.cm-s-ttcn .cm-types{color:brown;font-weight:700}.cm-s-ttcn .cm-visibilityModifiers{font-weight:700}.CodeMirror-simplescroll-horizontal div,.CodeMirror-simplescroll-vertical div{background:#ccc;border:1px solid #bbb;border-radius:2px;box-sizing:border-box;position:absolute}.CodeMirror-simplescroll-horizontal,.CodeMirror-simplescroll-vertical{background:#eee;position:absolute;z-index:6}.CodeMirror-simplescroll-horizontal{bottom:0;height:8px;left:0}.CodeMirror-simplescroll-horizontal div{bottom:0;height:100%}.CodeMirror-simplescroll-vertical{right:0;top:0;width:8px}.CodeMirror-simplescroll-vertical div{right:0;width:100%}.CodeMirror-overlayscroll .CodeMirror-gutter-filler,.CodeMirror-overlayscroll .CodeMirror-scrollbar-filler{display:none}.CodeMirror-overlayscroll-horizontal div,.CodeMirror-overlayscroll-vertical div{background:#bcd;border-radius:3px;position:absolute}.CodeMirror-overlayscroll-horizontal,.CodeMirror-overlayscroll-vertical{position:absolute;z-index:6}.CodeMirror-overlayscroll-horizontal{bottom:0;height:6px;left:0}.CodeMirror-overlayscroll-horizontal div{bottom:0;height:100%}.CodeMirror-overlayscroll-vertical{right:0;top:0;width:6px}.CodeMirror-overlayscroll-vertical div{right:0;width:100%}.ss-wrapper{float:left;height:100%;overflow:hidden;position:relative;width:100%;z-index:1}.ss-content{box-sizing:border-box;height:calc(22px + 100%);overflow-x:scroll;overflow-y:scroll;padding:0;position:relative;width:calc(18px + 100%)}.ss-scroll{padding-top:2px;right:0;top:0}.ss-hscroll,.ss-scroll{cursor:pointer;opacity:0;padding-bottom:2px;padding-right:2px;position:absolute;transition:opacity .25s linear .5s;z-index:2}.ss-hscroll{bottom:0;left:0;padding-left:2px}.ss-liner{background:rgba(0,0,0,.4);border-radius:4px;height:100%;transition:background .25s linear;width:100%}.ss-scroll .ss-liner{transition:width .15s linear;width:8px}.ss-hscroll .ss-liner{height:8px;transition:height .15s linear}.ss-grabbed .ss-liner,.ss-hscroll:hover .ss-liner,.ss-scroll:hover .ss-liner{background:rgba(0,0,0,.5);border-radius:6px}.ss-scroll.ss-grabbed .ss-liner,.ss-scroll:hover .ss-liner{width:12px}.ss-hscroll.ss-grabbed .ss-liner,.ss-hscroll:hover .ss-liner{height:12px}.ss-container.light .ss-liner{background:hsla(0,0%,100%,.4)}.ss-container.light .ss-grabbed .ss-liner,.ss-container.light .ss-hscroll:hover .ss-liner,.ss-container.light .ss-scroll:hover .ss-liner{background:hsla(0,0%,100%,.8)}.ss-hidden{display:none}.ss-container.ss-grabbed>.ss-wrapper>.ss-hscroll,.ss-container.ss-grabbed>.ss-wrapper>.ss-scroll,.ss-container:active>.ss-wrapper>.ss-hscroll,.ss-container:active>.ss-wrapper>.ss-scroll,.ss-container:hover>.ss-wrapper>.ss-hscroll,.ss-container:hover>.ss-wrapper>.ss-scroll{opacity:1;transition:opacity .25s linear 0s}.ss-grabbed{-o-user-select:none;-moz-user-select:none;-webkit-user-select:none;user-select:none} + +/*********** scroll preview **************/.sp-wrapper{height:100%;opacity:0;position:absolute;right:0;top:0;transition:opacity .25s linear .5s;-moz-user-select:none;-webkit-user-select:none;user-select:none;width:0}.sp-container:hover .sp-wrapper,.sp-wrapper>.sp-grabbed,.ss-grabbed~.sp-wrapper{opacity:1;transition:opacity .25s linear 0s}.sp-content{transform-origin:0 0}.sp-scroll{background-image:linear-gradient(270deg,hsla(0,0%,100%,0),hsla(0,0%,100%,.2));border-left:2px solid #e7db74;left:-2px;opacity:0;position:absolute;transition:opacity .25s linear .5s;width:100%}.sp-wrapper .sp-scroll.sp-grabbed,.sp-wrapper.sp-hover .sp-scroll,.sp-wrapper:hover .sp-scroll,.ss-scroll.ss-grabbed~.sp-wrapper .sp-scroll,.ss-scroll:hover~.sp-wrapper .sp-scroll{opacity:1;transition:opacity .25s linear 0s}.ss-content::-webkit-scrollbar{background-color:#fff;width:16px} + +/* PrismJS 1.30.0 +https://prismjs.com/download.html#themes=prism&languages=markup+css+bash+ini+properties+python+sql */ +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */code[class*=language-],pre[class*=language-]{background:none;color:#000;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;text-shadow:0 1px #fff;white-space:pre;word-break:normal;word-spacing:normal;word-wrap:normal;-webkit-hyphens:none;hyphens:none;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{background:#b3d4fc;text-shadow:none}code[class*=language-] ::-moz-selection, code[class*=language-]::-moz-selection, pre[class*=language-] ::-moz-selection, pre[class*=language-]::-moz-selection{background:#b3d4fc;text-shadow:none}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{background:#b3d4fc;text-shadow:none}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}} +/* Code blocks */pre[class*=language-]{margin:.5em 0;overflow:auto;padding:1em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0} + +/* Inline code */:not(pre)>code[class*=language-]{border-radius:.3em;padding:.1em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{ + /* This background color was intended by the author of this theme. */background:hsla(0,0%,100%,.5);color:#9a6e3a}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.table.sort tr>th{cursor:pointer}pre[class*=language-].line-numbers{counter-reset:linenumber;padding-left:3.8em;position:relative}pre[class*=language-].line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{border-right:1px solid #999;font-size:100%;left:-3.8em;letter-spacing:-1px;pointer-events:none;position:absolute;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:3em /* works for line-numbers below 1000 lines */}.line-numbers-rows>span{counter-increment:linenumber;display:block}.line-numbers-rows>span:before{color:#999;content:counter(linenumber);display:block;padding-right:.8em;text-align:right}.flatpickr-calendar{animation:none;background:transparent;background:#fff;border:0;border-radius:5px;box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,.08);box-sizing:border-box;direction:ltr;display:none;font-size:14px;line-height:24px;opacity:0;padding:0;position:absolute;text-align:center;touch-action:manipulation;visibility:hidden;width:307.875px}.flatpickr-calendar.inline,.flatpickr-calendar.open{max-height:640px;opacity:1;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{animation:fpFadeInDown .3s cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{display:block;z-index:999}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){box-shadow:none!important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasTime .dayContainer,.flatpickr-calendar .hasWeeks .dayContainer{border-bottom:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time{border-top:1px solid #e6e6e6;height:40px}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:after,.flatpickr-calendar:before{border:solid transparent;content:"";display:block;height:0;left:22px;pointer-events:none;position:absolute;width:0}.flatpickr-calendar.rightMost:after,.flatpickr-calendar.rightMost:before{left:auto;right:22px}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:after,.flatpickr-calendar.arrowTop:before{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:after,.flatpickr-calendar.arrowBottom:before{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{display:inline-block;position:relative}.flatpickr-months{display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,.9);fill:rgba(0,0,0,.9);height:34px;line-height:1;overflow:hidden;position:relative;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex:1}.flatpickr-months .flatpickr-next-month,.flatpickr-months .flatpickr-prev-month{color:rgba(0,0,0,.9);cursor:pointer;height:34px;padding:10px;position:absolute;text-decoration:none;top:0;z-index:3;fill:rgba(0,0,0,.9)}.flatpickr-months .flatpickr-next-month.flatpickr-disabled,.flatpickr-months .flatpickr-prev-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-next-month i,.flatpickr-months .flatpickr-prev-month i{position:relative}.flatpickr-months .flatpickr-next-month.flatpickr-prev-month,.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month{ + /* + /*rtl:begin:ignore*/left:0 /* +/*rtl:end:ignore*/} /* + /*rtl:begin:ignore*/ +/* + /*rtl:end:ignore*/.flatpickr-months .flatpickr-next-month.flatpickr-next-month,.flatpickr-months .flatpickr-prev-month.flatpickr-next-month{ + /* + /*rtl:begin:ignore*/right:0 /* +/*rtl:end:ignore*/} /* + /*rtl:begin:ignore*/ +/* + /*rtl:end:ignore*/.flatpickr-months .flatpickr-next-month:hover,.flatpickr-months .flatpickr-prev-month:hover{color:#959ea9}.flatpickr-months .flatpickr-next-month:hover svg,.flatpickr-months .flatpickr-prev-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-next-month svg,.flatpickr-months .flatpickr-prev-month svg{height:14px;width:14px}.flatpickr-months .flatpickr-next-month svg path,.flatpickr-months .flatpickr-prev-month svg path{transition:fill .1s;fill:inherit}.numInputWrapper{height:auto;position:relative}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-inner-spin-button,.numInputWrapper input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.numInputWrapper span{border:1px solid rgba(57,57,57,.15);box-sizing:border-box;cursor:pointer;height:50%;line-height:50%;opacity:0;padding:0 4px 0 2px;position:absolute;right:0;width:14px}.numInputWrapper span:hover{background:rgba(0,0,0,.1)}.numInputWrapper span:active{background:rgba(0,0,0,.2)}.numInputWrapper span:after{content:"";display:block;position:absolute}.numInputWrapper span.arrowUp{border-bottom:0;top:0}.numInputWrapper span.arrowUp:after{border-bottom:4px solid rgba(57,57,57,.6);border-left:4px solid transparent;border-right:4px solid transparent;top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,.6);top:40%}.numInputWrapper span svg{height:auto;width:inherit}.numInputWrapper span svg path{fill:rgba(0,0,0,.5)}.numInputWrapper:hover{background:rgba(0,0,0,.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{color:inherit;display:inline-block;font-size:135%;font-weight:300;height:34px;left:12.5%;line-height:inherit;line-height:1;padding:7.48px 0 0;position:absolute;text-align:center;transform:translateZ(0);width:75%}.flatpickr-current-month span.cur-month{color:inherit;display:inline-block;font-family:inherit;font-weight:700;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .numInputWrapper{display:inline-block;width:6ch;width:7ch\0 }.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,.9)}.flatpickr-current-month input.cur-year{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield;background:transparent;border:0;border-radius:0;box-sizing:border-box;color:inherit;cursor:text;display:inline-block;font-family:inherit;font-size:inherit;font-weight:300;height:auto;line-height:inherit;margin:0;padding:0 0 0 .5ch;vertical-align:initial}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{background:transparent;color:rgba(0,0,0,.5);font-size:100%;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;-webkit-appearance:menulist;-moz-appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;-webkit-box-sizing:border-box;color:inherit;cursor:pointer;font-family:inherit;font-size:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:active,.flatpickr-current-month .flatpickr-monthDropdown-months:focus{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;overflow:hidden;text-align:center;width:100%;align-items:center;height:28px}.flatpickr-weekdays,.flatpickr-weekdays .flatpickr-weekdaycontainer{display:flex}.flatpickr-weekdays .flatpickr-weekdaycontainer,span.flatpickr-weekday{flex:1}span.flatpickr-weekday{background:transparent;color:rgba(0,0,0,.54);cursor:default;display:block;font-size:90%;font-weight:bolder;line-height:1;margin:0;text-align:center}.dayContainer,.flatpickr-weeks{padding:1px 0 0}.flatpickr-days{display:flex;overflow:hidden;position:relative;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{box-sizing:border-box;display:inline-block;display:flex;flex-wrap:wrap;-ms-flex-wrap:wrap;max-width:307.875px;min-width:307.875px;outline:0;padding:0;text-align:left;width:307.875px;justify-content:space-around;opacity:1;transform:translateZ(0)}.dayContainer+.dayContainer{box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;box-sizing:border-box;color:#393939;cursor:pointer;-webkit-flex-basis:14.2857143%;font-weight:400;width:14.2857143%;-ms-flex-preferred-size:14.2857143%;display:inline-block;flex-basis:14.2857143%;height:39px;line-height:39px;margin:0;max-width:39px;position:relative;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day.nextMonthDay:focus,.flatpickr-day.nextMonthDay:hover,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.today.inRange,.flatpickr-day:focus,.flatpickr-day:hover{background:#e6e6e6;border-color:#e6e6e6;cursor:pointer;outline:0}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:focus,.flatpickr-day.today:hover{background:#959ea9;border-color:#959ea9;color:#fff}.flatpickr-day.endRange,.flatpickr-day.endRange.inRange,.flatpickr-day.endRange.nextMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.endRange:focus,.flatpickr-day.endRange:hover,.flatpickr-day.selected,.flatpickr-day.selected.inRange,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.selected:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange,.flatpickr-day.startRange.inRange,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.startRange:focus,.flatpickr-day.startRange:hover{background:#569ff7;border-color:#569ff7;box-shadow:none;color:#fff}.flatpickr-day.endRange.startRange,.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.endRange.endRange,.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.endRange.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.selected.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange+.endRange:not(:nth-child(7n+1)){box-shadow:-10px 0 0 #569ff7}.flatpickr-day.endRange.startRange.endRange,.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.nextMonthDay,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.prevMonthDay{background:transparent;border-color:transparent;color:rgba(57,57,57,.3);cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{color:rgba(57,57,57,.1);cursor:not-allowed}.flatpickr-day.week.selected{border-radius:0;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{box-shadow:1px 0 0 #e6e6e6;padding:0 12px}.flatpickr-weekwrapper .flatpickr-weekday{float:none;line-height:28px;width:100%}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{background:transparent;border:none;color:rgba(57,57,57,.3);cursor:default;display:block;max-width:none;width:100%}.flatpickr-innerContainer{display:block;display:flex;overflow:hidden}.flatpickr-innerContainer,.flatpickr-rContainer{box-sizing:border-box}.flatpickr-rContainer{display:inline-block;padding:0}.flatpickr-time{box-sizing:border-box;display:block;display:flex;height:0;line-height:40px;max-height:40px;outline:0;overflow:hidden;text-align:center}.flatpickr-time:after{clear:both;content:"";display:table}.flatpickr-time .numInputWrapper{flex:1;float:left;height:40px;width:40%}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield;background:transparent;border:0;border-radius:0;box-shadow:none;box-sizing:border-box;color:#393939;font-size:14px;height:inherit;line-height:inherit;margin:0;padding:0;position:relative;text-align:center}.flatpickr-time input.flatpickr-hour{font-weight:700}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{border:0;outline:0}.flatpickr-time .flatpickr-am-pm,.flatpickr-time .flatpickr-time-separator{-webkit-align-self:center;color:#393939;float:left;font-weight:700;height:inherit;line-height:inherit;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:2%;align-self:center}.flatpickr-time .flatpickr-am-pm{cursor:pointer;font-weight:400;outline:0;text-align:center;width:18%}.flatpickr-time .flatpickr-am-pm:focus,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time input:hover{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@keyframes fpFadeInDown{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}} +/* inter-latin-wght-normal */@font-face{font-display:swap;font-family:Inter;font-style:normal;font-weight:100 900;src:url(/static/fonts/inter/files/inter-latin-wght-normal.woff2) format("woff2-variations");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd} +/* rasa-latin-wght-normal */@font-face{font-display:swap;font-family:Rasa;font-style:normal;font-weight:300 700;src:url(/static/fonts/rasa/files/rasa-latin-wght-normal.woff2) format("woff2-variations");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}.column{min-width:0}.atlas-navbar{padding:16px 0}.atlas-navbar .navbar-brand{margin-left:0!important}.atlas-navbar .navbar-brand a{padding-bottom:0;padding-top:0}.atlas-navbar .navbar-brand a img{height:50px;max-height:50px}.atlas-navbar .has-dropdown .navbar-link:hover,.atlas-navbar a.navbar-item:hover{color:#2e333d}@media screen and (min-width:1024px){.atlas-navbar .navbar-start{padding-top:0!important}.hide-desktop{display:none!important}} +/* search */#search-form{position:relative}#search-results{border-radius:.375rem;display:none;left:0;max-height:calc(100vh - 145px);max-width:800px;min-width:100%;min-width:max(50vw,100%);overflow-y:auto;position:absolute;top:50px;z-index:999999}@media screen and (min-width:1024px){#search-results{min-width:max(30vw,100%)}}#search-results:empty{display:none!important}#search-results.search-focus,#search-results:active{border:1px solid #d6d9e0;display:block}#search-results .panel-block:first-of-type{border-top-left-radius:inherit;border-top-right-radius:inherit}#search-background{background:transparent;bottom:0;display:none;left:0;position:fixed;right:0;top:0;z-index:10}#search-background.search-focus-background{display:block}#search-background+div{z-index:11}#search-results em{background-color:#eff5fb;color:#3e8ed0} + +/*** tabs ***/.tab-cnt>.tab-dta:not(.is-active){display:none} + +/*** tags ***/.tag:empty{background:transparent} + +/*** multiline tooltip ***/[data-tooltip].has-tooltip-multiline:before{white-space:pre-line!important}[data-tooltip]:before{max-width:21rem!important;width:21rem!important} + +/* font */.is-size-6-5{font-size:.85rem!important} + +/* input */input.transparent{background:transparent!important;border:transparent!important} + +/* pagination */.pagination.is-close ul li:not(:first-of-type) .pagination-link{border-bottom-left-radius:0;border-top-left-radius:0;margin-left:0}.pagination.is-close ul li:not(:last-child) .pagination-link{border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.pagination.is-close ul li:not(:last-child) .pagination-link:hover{margin-right:0;z-index:4}.pagination.is-close ul li:not(:last-child):hover+li .pagination-link{margin-left:-1px} + +/* logs */.log-group div[log_id].is-collapsed{align-items:baseline;height:20px;overflow:hidden}.log-group.first-of-type{margin-top:15px}.em-codeBox{max-height:500px;overflow:hidden}.em-codeBox pre{display:inline-block;margin:0!important;min-height:calc(100% - 1px);min-width:100%;overflow:hidden!important;padding:1em 0 0 1em}.em-codeBox code{padding-right:130px}.em-timelineScale{bottom:0;position:absolute;top:0;width:100%}.em-timelineLiner{padding-left:50px;position:relative}.em-timelineLiner:before{bottom:-20px;content:"runs/\a time";left:0;position:absolute;white-space:pre-wrap}.em-el{height:200px}.em-elBar{height:0;position:relative}.em-elBar:before{background:#fff;bottom:-30px;content:attr(data-attr);left:0;position:absolute;right:0}.em-ScaleBar{background:#abb1bf;height:1px;margin-bottom:50px;position:relative;width:100%}.em-ScaleBar:before{background:#fff;color:#404654;content:attr(data-attr);padding-right:10px;position:absolute;top:50%;transform:translateY(-50%)}.em-ScaleBar:last-of-type{background:transparent} + +/* fix bulma + prism */code .number{all:unset}.is-inlineblock{display:inline-block!important} + +/* links in message */article.message a{text-decoration:none!important} + +/* ajax loader */.em-ajaxContent.is-inline div{display:inline-block} + +/* sticky task header */#sticky-task-header{box-shadow:0 2px 4px rgba(0,0,0,.1);left:0;opacity:0;position:fixed;right:0;top:0;transform:translateY(-100%);transition:all .3s ease;z-index:1000}#sticky-task-header.is-visible{opacity:1;transform:translateY(0)} \ No newline at end of file diff --git a/web/static/fonts/fontawesome/stylesheet.scss b/web/static/fonts/fontawesome/stylesheet.scss index be1cb611..cf5bb462 100644 --- a/web/static/fonts/fontawesome/stylesheet.scss +++ b/web/static/fonts/fontawesome/stylesheet.scss @@ -1,101 +1,101 @@ @use "sass:math"; +@use '../../assets/fontawesome/_functions'; +@use '../../assets/fontawesome/_variables'; +@forward '../../assets/fontawesome/_animated'; -@import '../../../../node_modules/@fortawesome/fontawesome-free/scss/_functions'; -@import '../../../../node_modules/@fortawesome/fontawesome-free/scss/_variables'; -@import '../../../../node_modules/@fortawesome/fontawesome-free/scss/_mixins'; -@import '../../../../node_modules/@fortawesome/fontawesome-free/scss/_core'; -@import '../../../../node_modules/@fortawesome/fontawesome-free/scss/_sizing'; - -$fa-font-path: '/static/fonts/fontawesome/webfonts'; +variables.$fa-font-path: '/static/fonts/fontawesome/webfonts'; @font-face { font-family: 'Font Awesome 6 Brands'; font-style: normal; font-weight: 400; - font-display: $fa-font-display; - src: url('#{$fa-font-path}/fa-brands-400.woff2') format('woff2'), - url('#{$fa-font-path}/fa-brands-400.ttf') format('truetype'); + font-display: variables.$fa-font-display; + src: + url('#{variables.$fa-font-path}/fa-brands-400.woff2') format('woff2'), + url('#{variables.$fa-font-path}/fa-brands-400.ttf') format('truetype'); } @font-face { font-family: 'Font Awesome 6 Free'; font-style: normal; font-weight: 900; - font-display: $fa-font-display; - src: url('#{$fa-font-path}/fa-solid-900.woff2') format('woff2'), - url('#{$fa-font-path}/fa-solid-900.ttf') format('truetype'); + font-display: variables.$fa-font-display; + src: + url('#{variables.$fa-font-path}/fa-solid-900.woff2') format('woff2'), + url('#{variables.$fa-font-path}/fa-solid-900.ttf') format('truetype'); } @font-face { font-family: 'Font Awesome 6 Free'; font-style: normal; font-weight: 400; - font-display: $fa-font-display; - src: url('#{$fa-font-path}/fa-regular-400.woff2') format('woff2'), - url('#{$fa-font-path}/fa-regular-400.ttf') format('truetype'); + font-display: variables.$fa-font-display; + src: + url('#{variables.$fa-font-path}/fa-regular-400.woff2') format('woff2'), + url('#{variables.$fa-font-path}/fa-regular-400.ttf') format('truetype'); } .far, -.#{$fa-css-prefix}-regular { +.#{variables.$fa-css-prefix}-regular { font-family: 'Font Awesome 6 Free'; font-weight: 400; } .fas, -.#{$fa-css-prefix}-solid { +.#{variables.$fa-css-prefix}-solid { font-family: 'Font Awesome 6 Free'; font-weight: 900; } .fab, -.#{$fa-css-prefix}-brands { +.#{variables.$fa-css-prefix}-brands { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}-2_3x { +.#{variables.$fa-css-prefix}-2_3x { font-size: 2.3em; } /* build icon list */ $icons: ( - magnifying-glass: $fa-var-magnifying-glass, - pen-to-square: $fa-var-pen-to-square, - trash: $fa-var-trash, - delete-left: $fa-var-delete-left, - sort: $fa-var-sort, - terminal: $fa-var-terminal, - list: $fa-var-list, - ban: $fa-var-ban, - toggle-on: $fa-var-toggle-on, - toggle-off: $fa-var-toggle-off, - circle-play: $fa-var-circle-play, - plus: $fa-var-plus, - rotate: $fa-var-rotate, - copy: $fa-var-copy, - download: $fa-var-download, - check: $fa-var-check, - circle-info: $fa-var-circle-info, - file-arrow-down: $fa-var-file-arrow-down, - angle-right: $fa-var-angle-right, - circle-check: $fa-var-circle-check, - circle-xmark: $fa-var-circle-xmark, - circle-notch: $fa-var-circle-notch, - circle-stop: $fa-var-circle-stop, - circle-pause: $fa-var-circle-pause, - circle-question: $fa-var-circle-question, - calendar: $fa-var-calendar, - arrow-up-right-from-square: $fa-var-arrow-up-right-from-square, - eye-slash: $fa-var-eye-slash, - eye: $fa-var-eye, - users: $fa-var-users, - right-to-bracket: $fa-var-right-to-bracket, - angle-down: $fa-var-angle-down, - triangle-exclamation: $fa-var-triangle-exclamation, + magnifying-glass: variables.$fa-var-magnifying-glass, + pen-to-square: variables.$fa-var-pen-to-square, + trash: variables.$fa-var-trash, + delete-left: variables.$fa-var-delete-left, + sort: variables.$fa-var-sort, + terminal: variables.$fa-var-terminal, + list: variables.$fa-var-list, + ban: variables.$fa-var-ban, + toggle-on: variables.$fa-var-toggle-on, + toggle-off: variables.$fa-var-toggle-off, + circle-play: variables.$fa-var-circle-play, + plus: variables.$fa-var-plus, + rotate: variables.$fa-var-rotate, + copy: variables.$fa-var-copy, + download: variables.$fa-var-download, + check: variables.$fa-var-check, + circle-info: variables.$fa-var-circle-info, + file-arrow-down: variables.$fa-var-file-arrow-down, + angle-right: variables.$fa-var-angle-right, + circle-check: variables.$fa-var-circle-check, + circle-xmark: variables.$fa-var-circle-xmark, + circle-notch: variables.$fa-var-circle-notch, + circle-stop: variables.$fa-var-circle-stop, + circle-pause: variables.$fa-var-circle-pause, + circle-question: variables.$fa-var-circle-question, + calendar: variables.$fa-var-calendar, + arrow-up-right-from-square: variables.$fa-var-arrow-up-right-from-square, + eye-slash: variables.$fa-var-eye-slash, + eye: variables.$fa-var-eye, + users: variables.$fa-var-users, + right-to-bracket: variables.$fa-var-right-to-bracket, + angle-down: variables.$fa-var-angle-down, + triangle-exclamation: variables.$fa-var-triangle-exclamation, ); @each $key, $value in $icons { - .#{$fa-css-prefix}-#{$key}:before { - content: fa-content($value); + .#{variables.$fa-css-prefix}-#{$key}:before { + content: functions.fa-content($value); } } diff --git a/web/static/fonts/fontawesome/webfonts/fa-regular-400.ttf b/web/static/fonts/fontawesome/webfonts/fa-regular-400.ttf index f015bb6a..380361db 100644 Binary files a/web/static/fonts/fontawesome/webfonts/fa-regular-400.ttf and b/web/static/fonts/fontawesome/webfonts/fa-regular-400.ttf differ diff --git a/web/static/fonts/fontawesome/webfonts/fa-regular-400.woff2 b/web/static/fonts/fontawesome/webfonts/fa-regular-400.woff2 index 3d7babfe..2baf71bd 100644 Binary files a/web/static/fonts/fontawesome/webfonts/fa-regular-400.woff2 and b/web/static/fonts/fontawesome/webfonts/fa-regular-400.woff2 differ diff --git a/web/static/fonts/fontawesome/webfonts/fa-solid-900.ttf b/web/static/fonts/fontawesome/webfonts/fa-solid-900.ttf index 65a54780..aaf4c8cf 100644 Binary files a/web/static/fonts/fontawesome/webfonts/fa-solid-900.ttf and b/web/static/fonts/fontawesome/webfonts/fa-solid-900.ttf differ diff --git a/web/static/fonts/fontawesome/webfonts/fa-solid-900.woff2 b/web/static/fonts/fontawesome/webfonts/fa-solid-900.woff2 index 9d444e48..0a81628f 100644 Binary files a/web/static/fonts/fontawesome/webfonts/fa-solid-900.woff2 and b/web/static/fonts/fontawesome/webfonts/fa-solid-900.woff2 differ diff --git a/web/static/fonts/inter/100.css b/web/static/fonts/inter/100.css deleted file mode 100644 index e7c37f51..00000000 --- a/web/static/fonts/inter/100.css +++ /dev/null @@ -1,69 +0,0 @@ -/* inter-cyrillic-ext-100-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 100; - src: url(/static/fonts/inter/files/inter-cyrillic-ext-100-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-100-normal.woff) format('woff'); - unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; -} - -/* inter-cyrillic-100-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 100; - src: url(/static/fonts/inter/files/inter-cyrillic-100-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-100-normal.woff) format('woff'); - unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; -} - -/* inter-greek-ext-100-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 100; - src: url(/static/fonts/inter/files/inter-greek-ext-100-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-100-normal.woff) format('woff'); - unicode-range: U+1F00-1FFF; -} - -/* inter-greek-100-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 100; - src: url(/static/fonts/inter/files/inter-greek-100-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-100-normal.woff) format('woff'); - unicode-range: U+0370-03FF; -} - -/* inter-vietnamese-100-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 100; - src: url(/static/fonts/inter/files/inter-vietnamese-100-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-100-normal.woff) format('woff'); - unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; -} - -/* inter-latin-ext-100-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 100; - src: url(/static/fonts/inter/files/inter-latin-ext-100-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-100-normal.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; -} - -/* inter-latin-100-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 100; - src: url(/static/fonts/inter/files/inter-latin-100-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-100-normal.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; -} \ No newline at end of file diff --git a/web/static/fonts/inter/200.css b/web/static/fonts/inter/200.css deleted file mode 100644 index 51c094b6..00000000 --- a/web/static/fonts/inter/200.css +++ /dev/null @@ -1,69 +0,0 @@ -/* inter-cyrillic-ext-200-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 200; - src: url(/static/fonts/inter/files/inter-cyrillic-ext-200-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-200-normal.woff) format('woff'); - unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; -} - -/* inter-cyrillic-200-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 200; - src: url(/static/fonts/inter/files/inter-cyrillic-200-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-200-normal.woff) format('woff'); - unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; -} - -/* inter-greek-ext-200-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 200; - src: url(/static/fonts/inter/files/inter-greek-ext-200-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-200-normal.woff) format('woff'); - unicode-range: U+1F00-1FFF; -} - -/* inter-greek-200-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 200; - src: url(/static/fonts/inter/files/inter-greek-200-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-200-normal.woff) format('woff'); - unicode-range: U+0370-03FF; -} - -/* inter-vietnamese-200-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 200; - src: url(/static/fonts/inter/files/inter-vietnamese-200-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-200-normal.woff) format('woff'); - unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; -} - -/* inter-latin-ext-200-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 200; - src: url(/static/fonts/inter/files/inter-latin-ext-200-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-200-normal.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; -} - -/* inter-latin-200-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 200; - src: url(/static/fonts/inter/files/inter-latin-200-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-200-normal.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; -} \ No newline at end of file diff --git a/web/static/fonts/inter/300.css b/web/static/fonts/inter/300.css deleted file mode 100644 index b8805c75..00000000 --- a/web/static/fonts/inter/300.css +++ /dev/null @@ -1,69 +0,0 @@ -/* inter-cyrillic-ext-300-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/inter/files/inter-cyrillic-ext-300-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-300-normal.woff) format('woff'); - unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; -} - -/* inter-cyrillic-300-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/inter/files/inter-cyrillic-300-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-300-normal.woff) format('woff'); - unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; -} - -/* inter-greek-ext-300-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/inter/files/inter-greek-ext-300-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-300-normal.woff) format('woff'); - unicode-range: U+1F00-1FFF; -} - -/* inter-greek-300-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/inter/files/inter-greek-300-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-300-normal.woff) format('woff'); - unicode-range: U+0370-03FF; -} - -/* inter-vietnamese-300-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/inter/files/inter-vietnamese-300-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-300-normal.woff) format('woff'); - unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; -} - -/* inter-latin-ext-300-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/inter/files/inter-latin-ext-300-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-300-normal.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; -} - -/* inter-latin-300-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/inter/files/inter-latin-300-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-300-normal.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; -} \ No newline at end of file diff --git a/web/static/fonts/inter/400.css b/web/static/fonts/inter/400.css deleted file mode 100644 index 15f91ed0..00000000 --- a/web/static/fonts/inter/400.css +++ /dev/null @@ -1,69 +0,0 @@ -/* inter-cyrillic-ext-400-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/inter/files/inter-cyrillic-ext-400-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-400-normal.woff) format('woff'); - unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; -} - -/* inter-cyrillic-400-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/inter/files/inter-cyrillic-400-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-400-normal.woff) format('woff'); - unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; -} - -/* inter-greek-ext-400-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/inter/files/inter-greek-ext-400-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-400-normal.woff) format('woff'); - unicode-range: U+1F00-1FFF; -} - -/* inter-greek-400-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/inter/files/inter-greek-400-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-400-normal.woff) format('woff'); - unicode-range: U+0370-03FF; -} - -/* inter-vietnamese-400-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/inter/files/inter-vietnamese-400-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-400-normal.woff) format('woff'); - unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; -} - -/* inter-latin-ext-400-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/inter/files/inter-latin-ext-400-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-400-normal.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; -} - -/* inter-latin-400-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/inter/files/inter-latin-400-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-400-normal.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; -} \ No newline at end of file diff --git a/web/static/fonts/inter/500.css b/web/static/fonts/inter/500.css deleted file mode 100644 index b5abebc0..00000000 --- a/web/static/fonts/inter/500.css +++ /dev/null @@ -1,69 +0,0 @@ -/* inter-cyrillic-ext-500-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/inter/files/inter-cyrillic-ext-500-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-500-normal.woff) format('woff'); - unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; -} - -/* inter-cyrillic-500-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/inter/files/inter-cyrillic-500-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-500-normal.woff) format('woff'); - unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; -} - -/* inter-greek-ext-500-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/inter/files/inter-greek-ext-500-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-500-normal.woff) format('woff'); - unicode-range: U+1F00-1FFF; -} - -/* inter-greek-500-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/inter/files/inter-greek-500-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-500-normal.woff) format('woff'); - unicode-range: U+0370-03FF; -} - -/* inter-vietnamese-500-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/inter/files/inter-vietnamese-500-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-500-normal.woff) format('woff'); - unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; -} - -/* inter-latin-ext-500-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/inter/files/inter-latin-ext-500-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-500-normal.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; -} - -/* inter-latin-500-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/inter/files/inter-latin-500-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-500-normal.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; -} \ No newline at end of file diff --git a/web/static/fonts/inter/600.css b/web/static/fonts/inter/600.css deleted file mode 100644 index ad4eda2b..00000000 --- a/web/static/fonts/inter/600.css +++ /dev/null @@ -1,69 +0,0 @@ -/* inter-cyrillic-ext-600-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/inter/files/inter-cyrillic-ext-600-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-600-normal.woff) format('woff'); - unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; -} - -/* inter-cyrillic-600-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/inter/files/inter-cyrillic-600-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-600-normal.woff) format('woff'); - unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; -} - -/* inter-greek-ext-600-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/inter/files/inter-greek-ext-600-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-600-normal.woff) format('woff'); - unicode-range: U+1F00-1FFF; -} - -/* inter-greek-600-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/inter/files/inter-greek-600-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-600-normal.woff) format('woff'); - unicode-range: U+0370-03FF; -} - -/* inter-vietnamese-600-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/inter/files/inter-vietnamese-600-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-600-normal.woff) format('woff'); - unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; -} - -/* inter-latin-ext-600-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/inter/files/inter-latin-ext-600-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-600-normal.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; -} - -/* inter-latin-600-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/inter/files/inter-latin-600-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-600-normal.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; -} \ No newline at end of file diff --git a/web/static/fonts/inter/700.css b/web/static/fonts/inter/700.css deleted file mode 100644 index 8111fad5..00000000 --- a/web/static/fonts/inter/700.css +++ /dev/null @@ -1,69 +0,0 @@ -/* inter-cyrillic-ext-700-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/inter/files/inter-cyrillic-ext-700-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-700-normal.woff) format('woff'); - unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; -} - -/* inter-cyrillic-700-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/inter/files/inter-cyrillic-700-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-700-normal.woff) format('woff'); - unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; -} - -/* inter-greek-ext-700-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/inter/files/inter-greek-ext-700-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-700-normal.woff) format('woff'); - unicode-range: U+1F00-1FFF; -} - -/* inter-greek-700-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/inter/files/inter-greek-700-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-700-normal.woff) format('woff'); - unicode-range: U+0370-03FF; -} - -/* inter-vietnamese-700-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/inter/files/inter-vietnamese-700-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-700-normal.woff) format('woff'); - unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; -} - -/* inter-latin-ext-700-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/inter/files/inter-latin-ext-700-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-700-normal.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; -} - -/* inter-latin-700-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/inter/files/inter-latin-700-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-700-normal.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; -} \ No newline at end of file diff --git a/web/static/fonts/inter/800.css b/web/static/fonts/inter/800.css deleted file mode 100644 index 42435bce..00000000 --- a/web/static/fonts/inter/800.css +++ /dev/null @@ -1,69 +0,0 @@ -/* inter-cyrillic-ext-800-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 800; - src: url(/static/fonts/inter/files/inter-cyrillic-ext-800-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-800-normal.woff) format('woff'); - unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; -} - -/* inter-cyrillic-800-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 800; - src: url(/static/fonts/inter/files/inter-cyrillic-800-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-800-normal.woff) format('woff'); - unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; -} - -/* inter-greek-ext-800-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 800; - src: url(/static/fonts/inter/files/inter-greek-ext-800-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-800-normal.woff) format('woff'); - unicode-range: U+1F00-1FFF; -} - -/* inter-greek-800-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 800; - src: url(/static/fonts/inter/files/inter-greek-800-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-800-normal.woff) format('woff'); - unicode-range: U+0370-03FF; -} - -/* inter-vietnamese-800-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 800; - src: url(/static/fonts/inter/files/inter-vietnamese-800-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-800-normal.woff) format('woff'); - unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; -} - -/* inter-latin-ext-800-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 800; - src: url(/static/fonts/inter/files/inter-latin-ext-800-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-800-normal.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; -} - -/* inter-latin-800-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 800; - src: url(/static/fonts/inter/files/inter-latin-800-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-800-normal.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; -} \ No newline at end of file diff --git a/web/static/fonts/inter/900.css b/web/static/fonts/inter/900.css deleted file mode 100644 index 012fba83..00000000 --- a/web/static/fonts/inter/900.css +++ /dev/null @@ -1,69 +0,0 @@ -/* inter-cyrillic-ext-900-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 900; - src: url(/static/fonts/inter/files/inter-cyrillic-ext-900-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-900-normal.woff) format('woff'); - unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; -} - -/* inter-cyrillic-900-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 900; - src: url(/static/fonts/inter/files/inter-cyrillic-900-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-900-normal.woff) format('woff'); - unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; -} - -/* inter-greek-ext-900-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 900; - src: url(/static/fonts/inter/files/inter-greek-ext-900-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-900-normal.woff) format('woff'); - unicode-range: U+1F00-1FFF; -} - -/* inter-greek-900-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 900; - src: url(/static/fonts/inter/files/inter-greek-900-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-900-normal.woff) format('woff'); - unicode-range: U+0370-03FF; -} - -/* inter-vietnamese-900-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 900; - src: url(/static/fonts/inter/files/inter-vietnamese-900-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-900-normal.woff) format('woff'); - unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; -} - -/* inter-latin-ext-900-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 900; - src: url(/static/fonts/inter/files/inter-latin-ext-900-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-900-normal.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; -} - -/* inter-latin-900-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 900; - src: url(/static/fonts/inter/files/inter-latin-900-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-900-normal.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; -} \ No newline at end of file diff --git a/web/static/fonts/inter/Inter-Black.woff b/web/static/fonts/inter/Inter-Black.woff deleted file mode 100644 index b6dcbf08..00000000 Binary files a/web/static/fonts/inter/Inter-Black.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-Black.woff2 b/web/static/fonts/inter/Inter-Black.woff2 deleted file mode 100644 index 5b3c5bf9..00000000 Binary files a/web/static/fonts/inter/Inter-Black.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/Inter-BlackItalic.woff b/web/static/fonts/inter/Inter-BlackItalic.woff deleted file mode 100644 index 6c3ad3a3..00000000 Binary files a/web/static/fonts/inter/Inter-BlackItalic.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-Bold.woff b/web/static/fonts/inter/Inter-Bold.woff deleted file mode 100644 index 827d6d0a..00000000 Binary files a/web/static/fonts/inter/Inter-Bold.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-Bold.woff2 b/web/static/fonts/inter/Inter-Bold.woff2 deleted file mode 100644 index 2532ddd0..00000000 Binary files a/web/static/fonts/inter/Inter-Bold.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/Inter-BoldItalic.woff b/web/static/fonts/inter/Inter-BoldItalic.woff deleted file mode 100644 index 38083c95..00000000 Binary files a/web/static/fonts/inter/Inter-BoldItalic.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-ExtraBold.woff b/web/static/fonts/inter/Inter-ExtraBold.woff deleted file mode 100644 index eb21edc5..00000000 Binary files a/web/static/fonts/inter/Inter-ExtraBold.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-ExtraBold.woff2 b/web/static/fonts/inter/Inter-ExtraBold.woff2 deleted file mode 100644 index 1e54fb56..00000000 Binary files a/web/static/fonts/inter/Inter-ExtraBold.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/Inter-ExtraBoldItalic.woff b/web/static/fonts/inter/Inter-ExtraBoldItalic.woff deleted file mode 100644 index 55059620..00000000 Binary files a/web/static/fonts/inter/Inter-ExtraBoldItalic.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-ExtraLight-BETA.woff b/web/static/fonts/inter/Inter-ExtraLight-BETA.woff deleted file mode 100644 index af4caf5b..00000000 Binary files a/web/static/fonts/inter/Inter-ExtraLight-BETA.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-ExtraLight.woff b/web/static/fonts/inter/Inter-ExtraLight.woff deleted file mode 100644 index 4e25f3d7..00000000 Binary files a/web/static/fonts/inter/Inter-ExtraLight.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-ExtraLight.woff2 b/web/static/fonts/inter/Inter-ExtraLight.woff2 deleted file mode 100644 index 3ff56188..00000000 Binary files a/web/static/fonts/inter/Inter-ExtraLight.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/Inter-ExtraLightItalic-BETA.woff b/web/static/fonts/inter/Inter-ExtraLightItalic-BETA.woff deleted file mode 100644 index d02e8691..00000000 Binary files a/web/static/fonts/inter/Inter-ExtraLightItalic-BETA.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-Italic.woff b/web/static/fonts/inter/Inter-Italic.woff deleted file mode 100644 index b2ec2f64..00000000 Binary files a/web/static/fonts/inter/Inter-Italic.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-Light-BETA.woff b/web/static/fonts/inter/Inter-Light-BETA.woff deleted file mode 100644 index cede0bfd..00000000 Binary files a/web/static/fonts/inter/Inter-Light-BETA.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-Light.woff b/web/static/fonts/inter/Inter-Light.woff deleted file mode 100644 index c9a59434..00000000 Binary files a/web/static/fonts/inter/Inter-Light.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-Light.woff2 b/web/static/fonts/inter/Inter-Light.woff2 deleted file mode 100644 index c90308af..00000000 Binary files a/web/static/fonts/inter/Inter-Light.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/Inter-LightItalic-BETA.woff b/web/static/fonts/inter/Inter-LightItalic-BETA.woff deleted file mode 100644 index 87314393..00000000 Binary files a/web/static/fonts/inter/Inter-LightItalic-BETA.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-Medium.woff b/web/static/fonts/inter/Inter-Medium.woff deleted file mode 100644 index 51450d34..00000000 Binary files a/web/static/fonts/inter/Inter-Medium.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-Medium.woff2 b/web/static/fonts/inter/Inter-Medium.woff2 deleted file mode 100644 index 12454556..00000000 Binary files a/web/static/fonts/inter/Inter-Medium.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/Inter-MediumItalic.woff b/web/static/fonts/inter/Inter-MediumItalic.woff deleted file mode 100644 index 49a27e75..00000000 Binary files a/web/static/fonts/inter/Inter-MediumItalic.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-Regular.woff b/web/static/fonts/inter/Inter-Regular.woff deleted file mode 100644 index 749f8636..00000000 Binary files a/web/static/fonts/inter/Inter-Regular.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-Regular.woff2 b/web/static/fonts/inter/Inter-Regular.woff2 deleted file mode 100644 index 598e7611..00000000 Binary files a/web/static/fonts/inter/Inter-Regular.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/Inter-SemiBold.woff b/web/static/fonts/inter/Inter-SemiBold.woff deleted file mode 100644 index b804c345..00000000 Binary files a/web/static/fonts/inter/Inter-SemiBold.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-SemiBold.woff2 b/web/static/fonts/inter/Inter-SemiBold.woff2 deleted file mode 100644 index 6a73b9f7..00000000 Binary files a/web/static/fonts/inter/Inter-SemiBold.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/Inter-SemiBoldItalic.woff b/web/static/fonts/inter/Inter-SemiBoldItalic.woff deleted file mode 100644 index 9390f0c0..00000000 Binary files a/web/static/fonts/inter/Inter-SemiBoldItalic.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-Thin-BETA.woff b/web/static/fonts/inter/Inter-Thin-BETA.woff deleted file mode 100644 index 32e52e05..00000000 Binary files a/web/static/fonts/inter/Inter-Thin-BETA.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-Thin.woff b/web/static/fonts/inter/Inter-Thin.woff deleted file mode 100644 index ed6979d1..00000000 Binary files a/web/static/fonts/inter/Inter-Thin.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-Thin.woff2 b/web/static/fonts/inter/Inter-Thin.woff2 deleted file mode 100644 index e4982d90..00000000 Binary files a/web/static/fonts/inter/Inter-Thin.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/Inter-ThinItalic-BETA.woff b/web/static/fonts/inter/Inter-ThinItalic-BETA.woff deleted file mode 100644 index 15a7a37b..00000000 Binary files a/web/static/fonts/inter/Inter-ThinItalic-BETA.woff and /dev/null differ diff --git a/web/static/fonts/inter/LICENSE b/web/static/fonts/inter/LICENSE index 00287df1..046fc664 100644 --- a/web/static/fonts/inter/LICENSE +++ b/web/static/fonts/inter/LICENSE @@ -1,4 +1,4 @@ -Copyright 2020 The Inter Project Authors (https://github.com/rsms/inter) +Google Inc. This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: diff --git a/web/static/fonts/inter/README.md b/web/static/fonts/inter/README.md index 6fa8fc21..ba41817c 100644 --- a/web/static/fonts/inter/README.md +++ b/web/static/fonts/inter/README.md @@ -1,47 +1,48 @@ # Fontsource Inter -[![npm (scoped)](https://img.shields.io/npm/v/@fontsource/inter?color=brightgreen)](https://www.npmjs.com/package/@fontsource/inter) [![Generic badge](https://img.shields.io/badge/fontsource-passing-brightgreen)](https://github.com/fontsource/fontsource) [![Monthly downloads](https://badgen.net/npm/dm/@fontsource/inter)](https://github.com/fontsource/fontsource) [![Total downloads](https://badgen.net/npm/dt/@fontsource/inter)](https://github.com/fontsource/fontsource) [![GitHub stars](https://img.shields.io/github/stars/fontsource/fontsource.svg?style=social&label=Star)](https://github.com/fontsource/fontsource/stargazers) +[![npm (scoped)](https://img.shields.io/npm/v/@fontsource-variable/inter?color=brightgreen)](https://www.npmjs.com/package/@fontsource-variable/inter) [![Generic badge](https://img.shields.io/badge/fontsource-passing-brightgreen)](https://github.com/fontsource/fontsource) [![Monthly downloads](https://badgen.net/npm/dm/@fontsource-variable/inter)](https://github.com/fontsource/fontsource) [![Total downloads](https://badgen.net/npm/dt/@fontsource-variable/inter)](https://github.com/fontsource/fontsource) [![GitHub stars](https://img.shields.io/github/stars/fontsource/fontsource.svg?style=social&label=Star)](https://github.com/fontsource/fontsource/stargazers) -The CSS and web font files to easily self-host the “Inter” font. Please visit the main [Fontsource website](https://fontsource.org/fonts/inter) to view more details on this package. +The CSS and web font files to easily self-host the “Inter” variable font. Please visit the main [Fontsource website](https://fontsource.org/fonts/inter) to view more details on this package. ## Quick Installation Fontsource offers multiple methods to import the CSS, including using a bundler like Vite or using SASS. You can find full documentation [here](https://fontsource.org/docs/getting-started/introduction). ```javascript -npm install @fontsource/inter +npm install @fontsource-variable/inter ``` Within your app entry file or site component, import it in. ```javascript -import "@fontsource/inter"; // Defaults to weight 400 -import "@fontsource/inter/400.css"; // Specify weight -import "@fontsource/inter/400-italic.css"; // Specify weight and style +import "@fontsource-variable/inter"; // Defaults to wght axis +import "@fontsource-variable/inter/wght.css"; // Specify axis +import "@fontsource-variable/inter/wght-italic.css"; // Specify axis and style ``` Supported variables: - Weights: `[100,200,300,400,500,600,700,800,900]` -- Styles: `[normal]` +- Styles: `[italic,normal]` - Subsets: `[cyrillic,cyrillic-ext,greek,greek-ext,latin,latin-ext,vietnamese]` +- Axes: `[opsz,wght]` -> Note: `italic` may not be supported by all fonts. To learn more about what weights and styles are supported, please visit the [Fontsource website](https://fontsource.org/fonts/inter). +> Note: `italic` may not be supported by all fonts. To learn more about what axes and styles are supported, please visit the [Fontsource website](https://fontsource.org/fonts/inter). Finally, you can reference the font name in a CSS stylesheet, CSS Module, or CSS-in-JS. ```css body { - font-family: "Inter"; + font-family: "Inter Variable"; } ``` ## Licensing Always make sure to read the license for each font you use. Most of the fonts in the collection use the SIL Open Font License, v1.1. Some fonts use the Apache 2 license. The Ubuntu fonts use the Ubuntu Font License v1.0. -Copyright 2020 The Inter Project Authors (https://github.com/rsms/inter) +Google Inc. [OFL-1.1](http://scripts.sil.org/OFL) ## Other Notes -Font version (provided by source): `v12`. +Font version (provided by source): `v19`. If you have any suggestions or ideas to improve the performance of font loading or expand the existing library, feel free to star and contribute to this repository. You can share your suggestions or ideas by creating an [issue](https://github.com/fontsource/fontsource/issues). \ No newline at end of file diff --git a/web/static/fonts/inter/README.txt b/web/static/fonts/inter/README.txt deleted file mode 100644 index b621edf7..00000000 --- a/web/static/fonts/inter/README.txt +++ /dev/null @@ -1,72 +0,0 @@ -Inter Variable Font -=================== - -This download contains Inter as both a variable font and static fonts. - -Inter is a variable font with these axes: - slnt - wght - -This means all the styles are contained in a single file: - Inter-VariableFont_slnt,wght.ttf - -If your app fully supports variable fonts, you can now pick intermediate styles -that aren’t available as static fonts. Not all apps support variable fonts, and -in those cases you can use the static font files for Inter: - static/Inter-Thin.ttf - static/Inter-ExtraLight.ttf - static/Inter-Light.ttf - static/Inter-Regular.ttf - static/Inter-Medium.ttf - static/Inter-SemiBold.ttf - static/Inter-Bold.ttf - static/Inter-ExtraBold.ttf - static/Inter-Black.ttf - -Get started ------------ - -1. Install the font files you want to use - -2. Use your app's font picker to view the font family and all the -available styles - -Learn more about variable fonts -------------------------------- - - https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts - https://variablefonts.typenetwork.com - https://medium.com/variable-fonts - -In desktop apps - - https://theblog.adobe.com/can-variable-fonts-illustrator-cc - https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts - -Online - - https://developers.google.com/fonts/docs/getting_started - https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide - https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts - -Installing fonts - - MacOS: https://support.apple.com/en-us/HT201749 - Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux - Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows - -Android Apps - - https://developers.google.com/fonts/docs/android - https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts - -License -------- -Please read the full license text (OFL.txt) to understand the permissions, -restrictions and requirements for usage, redistribution, and modification. - -You can use them freely in your products & projects - print or digital, -commercial or otherwise. However, you can't sell the fonts on their own. - -This isn't legal advice, please consider consulting a lawyer and see the full -license for all details. diff --git a/web/static/fonts/inter/cyrillic-100.css b/web/static/fonts/inter/cyrillic-100.css deleted file mode 100644 index 4d3738ca..00000000 --- a/web/static/fonts/inter/cyrillic-100.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-cyrillic-100-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 100; - src: url(/static/fonts/inter/files/inter-cyrillic-100-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-100-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-200.css b/web/static/fonts/inter/cyrillic-200.css deleted file mode 100644 index 4362d43e..00000000 --- a/web/static/fonts/inter/cyrillic-200.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-cyrillic-200-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 200; - src: url(/static/fonts/inter/files/inter-cyrillic-200-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-200-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-300.css b/web/static/fonts/inter/cyrillic-300.css deleted file mode 100644 index f2545b8b..00000000 --- a/web/static/fonts/inter/cyrillic-300.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-cyrillic-300-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/inter/files/inter-cyrillic-300-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-300-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-400.css b/web/static/fonts/inter/cyrillic-400.css deleted file mode 100644 index 2365e312..00000000 --- a/web/static/fonts/inter/cyrillic-400.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-cyrillic-400-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/inter/files/inter-cyrillic-400-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-400-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-500.css b/web/static/fonts/inter/cyrillic-500.css deleted file mode 100644 index 2f7b200a..00000000 --- a/web/static/fonts/inter/cyrillic-500.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-cyrillic-500-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/inter/files/inter-cyrillic-500-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-500-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-600.css b/web/static/fonts/inter/cyrillic-600.css deleted file mode 100644 index 2fb402f5..00000000 --- a/web/static/fonts/inter/cyrillic-600.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-cyrillic-600-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/inter/files/inter-cyrillic-600-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-600-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-700.css b/web/static/fonts/inter/cyrillic-700.css deleted file mode 100644 index 2bcb2d6f..00000000 --- a/web/static/fonts/inter/cyrillic-700.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-cyrillic-700-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/inter/files/inter-cyrillic-700-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-700-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-800.css b/web/static/fonts/inter/cyrillic-800.css deleted file mode 100644 index 6f933514..00000000 --- a/web/static/fonts/inter/cyrillic-800.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-cyrillic-800-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 800; - src: url(/static/fonts/inter/files/inter-cyrillic-800-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-800-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-900.css b/web/static/fonts/inter/cyrillic-900.css deleted file mode 100644 index c785f8f9..00000000 --- a/web/static/fonts/inter/cyrillic-900.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-cyrillic-900-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 900; - src: url(/static/fonts/inter/files/inter-cyrillic-900-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-900-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-ext-100.css b/web/static/fonts/inter/cyrillic-ext-100.css deleted file mode 100644 index 8c697a94..00000000 --- a/web/static/fonts/inter/cyrillic-ext-100.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-cyrillic-ext-100-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 100; - src: url(/static/fonts/inter/files/inter-cyrillic-ext-100-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-100-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-ext-200.css b/web/static/fonts/inter/cyrillic-ext-200.css deleted file mode 100644 index 93ca2244..00000000 --- a/web/static/fonts/inter/cyrillic-ext-200.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-cyrillic-ext-200-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 200; - src: url(/static/fonts/inter/files/inter-cyrillic-ext-200-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-200-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-ext-300.css b/web/static/fonts/inter/cyrillic-ext-300.css deleted file mode 100644 index 52e4221f..00000000 --- a/web/static/fonts/inter/cyrillic-ext-300.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-cyrillic-ext-300-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/inter/files/inter-cyrillic-ext-300-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-300-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-ext-400.css b/web/static/fonts/inter/cyrillic-ext-400.css deleted file mode 100644 index 4ee1afc2..00000000 --- a/web/static/fonts/inter/cyrillic-ext-400.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-cyrillic-ext-400-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/inter/files/inter-cyrillic-ext-400-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-400-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-ext-500.css b/web/static/fonts/inter/cyrillic-ext-500.css deleted file mode 100644 index b3b8f684..00000000 --- a/web/static/fonts/inter/cyrillic-ext-500.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-cyrillic-ext-500-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/inter/files/inter-cyrillic-ext-500-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-500-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-ext-600.css b/web/static/fonts/inter/cyrillic-ext-600.css deleted file mode 100644 index 0c0de752..00000000 --- a/web/static/fonts/inter/cyrillic-ext-600.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-cyrillic-ext-600-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/inter/files/inter-cyrillic-ext-600-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-600-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-ext-700.css b/web/static/fonts/inter/cyrillic-ext-700.css deleted file mode 100644 index fa8b8f12..00000000 --- a/web/static/fonts/inter/cyrillic-ext-700.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-cyrillic-ext-700-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/inter/files/inter-cyrillic-ext-700-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-700-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-ext-800.css b/web/static/fonts/inter/cyrillic-ext-800.css deleted file mode 100644 index 2db9ac62..00000000 --- a/web/static/fonts/inter/cyrillic-ext-800.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-cyrillic-ext-800-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 800; - src: url(/static/fonts/inter/files/inter-cyrillic-ext-800-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-800-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-ext-900.css b/web/static/fonts/inter/cyrillic-ext-900.css deleted file mode 100644 index fba6adf8..00000000 --- a/web/static/fonts/inter/cyrillic-ext-900.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-cyrillic-ext-900-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 900; - src: url(/static/fonts/inter/files/inter-cyrillic-ext-900-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-900-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-ext.css b/web/static/fonts/inter/cyrillic-ext.css deleted file mode 100644 index 492b32a2..00000000 --- a/web/static/fonts/inter/cyrillic-ext.css +++ /dev/null @@ -1,80 +0,0 @@ -/* inter-cyrillic-ext-100-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 100; - src: url(/static/fonts/inter/files/inter-cyrillic-ext-100-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-100-normal.woff) format('woff'); -} - -/* inter-cyrillic-ext-200-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 200; - src: url(/static/fonts/inter/files/inter-cyrillic-ext-200-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-200-normal.woff) format('woff'); -} - -/* inter-cyrillic-ext-300-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/inter/files/inter-cyrillic-ext-300-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-300-normal.woff) format('woff'); -} - -/* inter-cyrillic-ext-400-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/inter/files/inter-cyrillic-ext-400-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-400-normal.woff) format('woff'); -} - -/* inter-cyrillic-ext-500-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/inter/files/inter-cyrillic-ext-500-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-500-normal.woff) format('woff'); -} - -/* inter-cyrillic-ext-600-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/inter/files/inter-cyrillic-ext-600-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-600-normal.woff) format('woff'); -} - -/* inter-cyrillic-ext-700-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/inter/files/inter-cyrillic-ext-700-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-700-normal.woff) format('woff'); -} - -/* inter-cyrillic-ext-800-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 800; - src: url(/static/fonts/inter/files/inter-cyrillic-ext-800-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-800-normal.woff) format('woff'); -} - -/* inter-cyrillic-ext-900-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 900; - src: url(/static/fonts/inter/files/inter-cyrillic-ext-900-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-900-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic.css b/web/static/fonts/inter/cyrillic.css deleted file mode 100644 index 6cc29a4e..00000000 --- a/web/static/fonts/inter/cyrillic.css +++ /dev/null @@ -1,80 +0,0 @@ -/* inter-cyrillic-100-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 100; - src: url(/static/fonts/inter/files/inter-cyrillic-100-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-100-normal.woff) format('woff'); -} - -/* inter-cyrillic-200-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 200; - src: url(/static/fonts/inter/files/inter-cyrillic-200-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-200-normal.woff) format('woff'); -} - -/* inter-cyrillic-300-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/inter/files/inter-cyrillic-300-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-300-normal.woff) format('woff'); -} - -/* inter-cyrillic-400-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/inter/files/inter-cyrillic-400-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-400-normal.woff) format('woff'); -} - -/* inter-cyrillic-500-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/inter/files/inter-cyrillic-500-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-500-normal.woff) format('woff'); -} - -/* inter-cyrillic-600-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/inter/files/inter-cyrillic-600-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-600-normal.woff) format('woff'); -} - -/* inter-cyrillic-700-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/inter/files/inter-cyrillic-700-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-700-normal.woff) format('woff'); -} - -/* inter-cyrillic-800-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 800; - src: url(/static/fonts/inter/files/inter-cyrillic-800-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-800-normal.woff) format('woff'); -} - -/* inter-cyrillic-900-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 900; - src: url(/static/fonts/inter/files/inter-cyrillic-900-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-900-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/example.html b/web/static/fonts/inter/example.html deleted file mode 100644 index d6202a6a..00000000 --- a/web/static/fonts/inter/example.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - -

Generated from: http://www.cufonfonts.com

-
-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

- - diff --git a/web/static/fonts/inter/files/file-list.json b/web/static/fonts/inter/files/file-list.json deleted file mode 100644 index fb1a8aeb..00000000 --- a/web/static/fonts/inter/files/file-list.json +++ /dev/null @@ -1,151 +0,0 @@ -[ - "./fonts/google/inter/files/inter-cyrillic-100-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-ext-100-normal.woff", - "./fonts/google/inter/files/inter-greek-100-normal.woff", - "./fonts/google/inter/files/inter-greek-ext-100-normal.woff", - "./fonts/google/inter/files/inter-latin-100-normal.woff", - "./fonts/google/inter/files/inter-latin-ext-100-normal.woff", - "./fonts/google/inter/files/inter-vietnamese-100-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-200-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-ext-200-normal.woff", - "./fonts/google/inter/files/inter-greek-200-normal.woff", - "./fonts/google/inter/files/inter-greek-ext-200-normal.woff", - "./fonts/google/inter/files/inter-latin-200-normal.woff", - "./fonts/google/inter/files/inter-latin-ext-200-normal.woff", - "./fonts/google/inter/files/inter-vietnamese-200-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-300-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-ext-300-normal.woff", - "./fonts/google/inter/files/inter-greek-300-normal.woff", - "./fonts/google/inter/files/inter-greek-ext-300-normal.woff", - "./fonts/google/inter/files/inter-latin-300-normal.woff", - "./fonts/google/inter/files/inter-latin-ext-300-normal.woff", - "./fonts/google/inter/files/inter-vietnamese-300-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-400-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-ext-400-normal.woff", - "./fonts/google/inter/files/inter-greek-400-normal.woff", - "./fonts/google/inter/files/inter-greek-ext-400-normal.woff", - "./fonts/google/inter/files/inter-latin-400-normal.woff", - "./fonts/google/inter/files/inter-latin-ext-400-normal.woff", - "./fonts/google/inter/files/inter-vietnamese-400-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-500-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-ext-500-normal.woff", - "./fonts/google/inter/files/inter-greek-500-normal.woff", - "./fonts/google/inter/files/inter-greek-ext-500-normal.woff", - "./fonts/google/inter/files/inter-latin-500-normal.woff", - "./fonts/google/inter/files/inter-latin-ext-500-normal.woff", - "./fonts/google/inter/files/inter-vietnamese-500-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-600-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-ext-600-normal.woff", - "./fonts/google/inter/files/inter-greek-600-normal.woff", - "./fonts/google/inter/files/inter-greek-ext-600-normal.woff", - "./fonts/google/inter/files/inter-latin-600-normal.woff", - "./fonts/google/inter/files/inter-latin-ext-600-normal.woff", - "./fonts/google/inter/files/inter-vietnamese-600-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-700-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-ext-700-normal.woff", - "./fonts/google/inter/files/inter-greek-700-normal.woff", - "./fonts/google/inter/files/inter-greek-ext-700-normal.woff", - "./fonts/google/inter/files/inter-latin-700-normal.woff", - "./fonts/google/inter/files/inter-latin-ext-700-normal.woff", - "./fonts/google/inter/files/inter-vietnamese-700-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-800-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-ext-800-normal.woff", - "./fonts/google/inter/files/inter-greek-800-normal.woff", - "./fonts/google/inter/files/inter-greek-ext-800-normal.woff", - "./fonts/google/inter/files/inter-latin-800-normal.woff", - "./fonts/google/inter/files/inter-latin-ext-800-normal.woff", - "./fonts/google/inter/files/inter-vietnamese-800-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-900-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-ext-900-normal.woff", - "./fonts/google/inter/files/inter-greek-900-normal.woff", - "./fonts/google/inter/files/inter-greek-ext-900-normal.woff", - "./fonts/google/inter/files/inter-latin-900-normal.woff", - "./fonts/google/inter/files/inter-latin-ext-900-normal.woff", - "./fonts/google/inter/files/inter-vietnamese-900-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-ext-100-normal.woff2", - "./fonts/google/inter/files/inter-all-100-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-100-normal.woff2", - "./fonts/google/inter/files/inter-greek-ext-100-normal.woff2", - "./fonts/google/inter/files/inter-greek-100-normal.woff2", - "./fonts/google/inter/files/inter-vietnamese-100-normal.woff2", - "./fonts/google/inter/files/inter-latin-ext-100-normal.woff2", - "./fonts/google/inter/files/inter-latin-100-normal.woff2", - "./fonts/google/inter/files/inter-cyrillic-ext-200-normal.woff2", - "./fonts/google/inter/files/inter-all-200-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-200-normal.woff2", - "./fonts/google/inter/files/inter-greek-ext-200-normal.woff2", - "./fonts/google/inter/files/inter-greek-200-normal.woff2", - "./fonts/google/inter/files/inter-vietnamese-200-normal.woff2", - "./fonts/google/inter/files/inter-latin-ext-200-normal.woff2", - "./fonts/google/inter/files/inter-latin-200-normal.woff2", - "./fonts/google/inter/files/inter-cyrillic-ext-300-normal.woff2", - "./fonts/google/inter/files/inter-all-300-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-300-normal.woff2", - "./fonts/google/inter/files/inter-greek-ext-300-normal.woff2", - "./fonts/google/inter/files/inter-greek-300-normal.woff2", - "./fonts/google/inter/files/inter-vietnamese-300-normal.woff2", - "./fonts/google/inter/files/inter-latin-ext-300-normal.woff2", - "./fonts/google/inter/files/inter-latin-300-normal.woff2", - "./fonts/google/inter/files/inter-cyrillic-ext-400-normal.woff2", - "./fonts/google/inter/files/inter-all-400-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-400-normal.woff2", - "./fonts/google/inter/files/inter-greek-ext-400-normal.woff2", - "./fonts/google/inter/files/inter-greek-400-normal.woff2", - "./fonts/google/inter/files/inter-vietnamese-400-normal.woff2", - "./fonts/google/inter/files/inter-latin-ext-400-normal.woff2", - "./fonts/google/inter/files/inter-latin-400-normal.woff2", - "./fonts/google/inter/files/inter-cyrillic-ext-500-normal.woff2", - "./fonts/google/inter/files/inter-all-500-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-500-normal.woff2", - "./fonts/google/inter/files/inter-greek-ext-500-normal.woff2", - "./fonts/google/inter/files/inter-greek-500-normal.woff2", - "./fonts/google/inter/files/inter-vietnamese-500-normal.woff2", - "./fonts/google/inter/files/inter-latin-ext-500-normal.woff2", - "./fonts/google/inter/files/inter-latin-500-normal.woff2", - "./fonts/google/inter/files/inter-cyrillic-ext-600-normal.woff2", - "./fonts/google/inter/files/inter-all-600-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-600-normal.woff2", - "./fonts/google/inter/files/inter-greek-ext-600-normal.woff2", - "./fonts/google/inter/files/inter-greek-600-normal.woff2", - "./fonts/google/inter/files/inter-vietnamese-600-normal.woff2", - "./fonts/google/inter/files/inter-latin-ext-600-normal.woff2", - "./fonts/google/inter/files/inter-latin-600-normal.woff2", - "./fonts/google/inter/files/inter-cyrillic-ext-700-normal.woff2", - "./fonts/google/inter/files/inter-all-700-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-700-normal.woff2", - "./fonts/google/inter/files/inter-greek-ext-700-normal.woff2", - "./fonts/google/inter/files/inter-greek-700-normal.woff2", - "./fonts/google/inter/files/inter-vietnamese-700-normal.woff2", - "./fonts/google/inter/files/inter-latin-ext-700-normal.woff2", - "./fonts/google/inter/files/inter-latin-700-normal.woff2", - "./fonts/google/inter/files/inter-cyrillic-ext-800-normal.woff2", - "./fonts/google/inter/files/inter-all-800-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-800-normal.woff2", - "./fonts/google/inter/files/inter-greek-ext-800-normal.woff2", - "./fonts/google/inter/files/inter-greek-800-normal.woff2", - "./fonts/google/inter/files/inter-vietnamese-800-normal.woff2", - "./fonts/google/inter/files/inter-latin-ext-800-normal.woff2", - "./fonts/google/inter/files/inter-latin-800-normal.woff2", - "./fonts/google/inter/files/inter-cyrillic-ext-900-normal.woff2", - "./fonts/google/inter/files/inter-all-900-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-900-normal.woff2", - "./fonts/google/inter/files/inter-greek-ext-900-normal.woff2", - "./fonts/google/inter/files/inter-greek-900-normal.woff2", - "./fonts/google/inter/files/inter-vietnamese-900-normal.woff2", - "./fonts/google/inter/files/inter-latin-ext-900-normal.woff2", - "./fonts/google/inter/files/inter-latin-900-normal.woff2", - "./fonts/google/inter/files/inter-cyrillic-ext-variable-wghtOnly-normal.woff2", - "./fonts/google/inter/files/inter-cyrillic-variable-wghtOnly-normal.woff2", - "./fonts/google/inter/files/inter-greek-ext-variable-wghtOnly-normal.woff2", - "./fonts/google/inter/files/inter-greek-variable-wghtOnly-normal.woff2", - "./fonts/google/inter/files/inter-vietnamese-variable-wghtOnly-normal.woff2", - "./fonts/google/inter/files/inter-latin-ext-variable-wghtOnly-normal.woff2", - "./fonts/google/inter/files/inter-latin-variable-wghtOnly-normal.woff2", - "./fonts/google/inter/files/inter-cyrillic-ext-variable-full-normal.woff2", - "./fonts/google/inter/files/inter-cyrillic-variable-full-normal.woff2", - "./fonts/google/inter/files/inter-greek-ext-variable-full-normal.woff2", - "./fonts/google/inter/files/inter-greek-variable-full-normal.woff2", - "./fonts/google/inter/files/inter-vietnamese-variable-full-normal.woff2", - "./fonts/google/inter/files/inter-latin-ext-variable-full-normal.woff2", - "./fonts/google/inter/files/inter-latin-variable-full-normal.woff2" -] diff --git a/web/static/fonts/inter/files/inter-all-100-normal.woff b/web/static/fonts/inter/files/inter-all-100-normal.woff deleted file mode 100644 index 0306d1d7..00000000 Binary files a/web/static/fonts/inter/files/inter-all-100-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-all-200-normal.woff b/web/static/fonts/inter/files/inter-all-200-normal.woff deleted file mode 100644 index 9245b8f0..00000000 Binary files a/web/static/fonts/inter/files/inter-all-200-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-all-300-normal.woff b/web/static/fonts/inter/files/inter-all-300-normal.woff deleted file mode 100644 index 8b700d7c..00000000 Binary files a/web/static/fonts/inter/files/inter-all-300-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-all-400-normal.woff b/web/static/fonts/inter/files/inter-all-400-normal.woff deleted file mode 100644 index db0f8d1c..00000000 Binary files a/web/static/fonts/inter/files/inter-all-400-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-all-500-normal.woff b/web/static/fonts/inter/files/inter-all-500-normal.woff deleted file mode 100644 index ec2c08d3..00000000 Binary files a/web/static/fonts/inter/files/inter-all-500-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-all-600-normal.woff b/web/static/fonts/inter/files/inter-all-600-normal.woff deleted file mode 100644 index 8c99dc81..00000000 Binary files a/web/static/fonts/inter/files/inter-all-600-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-all-700-normal.woff b/web/static/fonts/inter/files/inter-all-700-normal.woff deleted file mode 100644 index 7248f274..00000000 Binary files a/web/static/fonts/inter/files/inter-all-700-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-all-800-normal.woff b/web/static/fonts/inter/files/inter-all-800-normal.woff deleted file mode 100644 index 241bb64d..00000000 Binary files a/web/static/fonts/inter/files/inter-all-800-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-all-900-normal.woff b/web/static/fonts/inter/files/inter-all-900-normal.woff deleted file mode 100644 index cc3405d5..00000000 Binary files a/web/static/fonts/inter/files/inter-all-900-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-100-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-100-normal.woff deleted file mode 100644 index 0b328f0e..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-100-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-100-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-100-normal.woff2 deleted file mode 100644 index 519ef27e..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-100-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-200-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-200-normal.woff deleted file mode 100644 index 4bd3fc3b..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-200-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-200-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-200-normal.woff2 deleted file mode 100644 index d94f792f..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-200-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-300-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-300-normal.woff deleted file mode 100644 index cbfcc5d4..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-300-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-300-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-300-normal.woff2 deleted file mode 100644 index f98e5b23..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-300-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-400-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-400-normal.woff deleted file mode 100644 index 3dcb4ecc..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-400-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-400-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-400-normal.woff2 deleted file mode 100644 index c1c57683..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-400-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-500-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-500-normal.woff deleted file mode 100644 index 7803e79b..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-500-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-500-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-500-normal.woff2 deleted file mode 100644 index d1518426..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-500-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-600-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-600-normal.woff deleted file mode 100644 index 0dbbbcf9..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-600-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-600-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-600-normal.woff2 deleted file mode 100644 index b0f0af58..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-600-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-700-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-700-normal.woff deleted file mode 100644 index c2d977ff..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-700-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-700-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-700-normal.woff2 deleted file mode 100644 index 22a09b0b..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-700-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-800-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-800-normal.woff deleted file mode 100644 index 19f9d557..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-800-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-800-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-800-normal.woff2 deleted file mode 100644 index cad49b63..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-800-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-900-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-900-normal.woff deleted file mode 100644 index 730baf7b..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-900-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-900-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-900-normal.woff2 deleted file mode 100644 index d1133f54..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-900-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-100-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-ext-100-normal.woff deleted file mode 100644 index 26d00510..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-100-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-100-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-100-normal.woff2 deleted file mode 100644 index 878765a5..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-100-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-200-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-ext-200-normal.woff deleted file mode 100644 index 3940678e..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-200-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-200-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-200-normal.woff2 deleted file mode 100644 index eb020032..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-200-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-300-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-ext-300-normal.woff deleted file mode 100644 index 186e4977..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-300-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-300-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-300-normal.woff2 deleted file mode 100644 index 294c7ff8..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-300-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-400-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-ext-400-normal.woff deleted file mode 100644 index 4017466b..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-400-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-400-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-400-normal.woff2 deleted file mode 100644 index da834bb8..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-400-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-500-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-ext-500-normal.woff deleted file mode 100644 index 1c047a5b..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-500-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-500-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-500-normal.woff2 deleted file mode 100644 index 5a1646bc..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-500-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-600-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-ext-600-normal.woff deleted file mode 100644 index 8d6489d7..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-600-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-600-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-600-normal.woff2 deleted file mode 100644 index 3b4d7f4b..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-600-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-700-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-ext-700-normal.woff deleted file mode 100644 index cb714dfa..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-700-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-700-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-700-normal.woff2 deleted file mode 100644 index 7e52d98c..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-700-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-800-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-ext-800-normal.woff deleted file mode 100644 index d8f99045..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-800-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-800-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-800-normal.woff2 deleted file mode 100644 index f9a1a8cd..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-800-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-900-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-ext-900-normal.woff deleted file mode 100644 index 8919d091..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-900-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-900-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-900-normal.woff2 deleted file mode 100644 index 160f0fff..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-900-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-opsz-italic.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-opsz-italic.woff2 new file mode 100644 index 00000000..57fdf367 Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-ext-opsz-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-opsz-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-opsz-normal.woff2 new file mode 100644 index 00000000..2f90b7d7 Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-ext-opsz-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-standard-italic.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-standard-italic.woff2 new file mode 100644 index 00000000..57fdf367 Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-ext-standard-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-standard-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-standard-normal.woff2 new file mode 100644 index 00000000..2f90b7d7 Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-ext-standard-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-variable-full-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-variable-full-normal.woff2 deleted file mode 100644 index a81001a8..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-variable-full-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-variable-wghtOnly-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-variable-wghtOnly-normal.woff2 deleted file mode 100644 index f6aa9988..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-variable-wghtOnly-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-wght-italic.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-wght-italic.woff2 new file mode 100644 index 00000000..5cf80d19 Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-ext-wght-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-wght-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-wght-normal.woff2 new file mode 100644 index 00000000..0ba164bb Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-ext-wght-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-opsz-italic.woff2 b/web/static/fonts/inter/files/inter-cyrillic-opsz-italic.woff2 new file mode 100644 index 00000000..6c2ce2d1 Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-opsz-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-opsz-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-opsz-normal.woff2 new file mode 100644 index 00000000..17ec069d Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-opsz-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-standard-italic.woff2 b/web/static/fonts/inter/files/inter-cyrillic-standard-italic.woff2 new file mode 100644 index 00000000..6c2ce2d1 Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-standard-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-standard-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-standard-normal.woff2 new file mode 100644 index 00000000..17ec069d Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-standard-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-variable-full-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-variable-full-normal.woff2 deleted file mode 100644 index 1b65cd9f..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-variable-full-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-variable-wghtOnly-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-variable-wghtOnly-normal.woff2 deleted file mode 100644 index 87445437..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-variable-wghtOnly-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-wght-italic.woff2 b/web/static/fonts/inter/files/inter-cyrillic-wght-italic.woff2 new file mode 100644 index 00000000..363a9cc8 Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-wght-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-wght-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-wght-normal.woff2 new file mode 100644 index 00000000..83a6f10f Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-wght-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-100-normal.woff b/web/static/fonts/inter/files/inter-greek-100-normal.woff deleted file mode 100644 index 9d9fa7af..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-100-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-100-normal.woff2 b/web/static/fonts/inter/files/inter-greek-100-normal.woff2 deleted file mode 100644 index bbff286c..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-100-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-200-normal.woff b/web/static/fonts/inter/files/inter-greek-200-normal.woff deleted file mode 100644 index c7a5b0a8..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-200-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-200-normal.woff2 b/web/static/fonts/inter/files/inter-greek-200-normal.woff2 deleted file mode 100644 index 8041bcbf..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-200-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-300-normal.woff b/web/static/fonts/inter/files/inter-greek-300-normal.woff deleted file mode 100644 index cd730de5..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-300-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-300-normal.woff2 b/web/static/fonts/inter/files/inter-greek-300-normal.woff2 deleted file mode 100644 index e96490ff..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-300-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-400-normal.woff b/web/static/fonts/inter/files/inter-greek-400-normal.woff deleted file mode 100644 index d293f1fc..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-400-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-400-normal.woff2 b/web/static/fonts/inter/files/inter-greek-400-normal.woff2 deleted file mode 100644 index 143a941b..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-400-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-500-normal.woff b/web/static/fonts/inter/files/inter-greek-500-normal.woff deleted file mode 100644 index a450fa7a..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-500-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-500-normal.woff2 b/web/static/fonts/inter/files/inter-greek-500-normal.woff2 deleted file mode 100644 index 5c986382..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-500-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-600-normal.woff b/web/static/fonts/inter/files/inter-greek-600-normal.woff deleted file mode 100644 index 39f5ccbf..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-600-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-600-normal.woff2 b/web/static/fonts/inter/files/inter-greek-600-normal.woff2 deleted file mode 100644 index f4f0a5eb..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-600-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-700-normal.woff b/web/static/fonts/inter/files/inter-greek-700-normal.woff deleted file mode 100644 index 5eac98ec..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-700-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-700-normal.woff2 b/web/static/fonts/inter/files/inter-greek-700-normal.woff2 deleted file mode 100644 index 140147ef..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-700-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-800-normal.woff b/web/static/fonts/inter/files/inter-greek-800-normal.woff deleted file mode 100644 index 69c7296b..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-800-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-800-normal.woff2 b/web/static/fonts/inter/files/inter-greek-800-normal.woff2 deleted file mode 100644 index 544d5835..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-800-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-900-normal.woff b/web/static/fonts/inter/files/inter-greek-900-normal.woff deleted file mode 100644 index 747d9ef8..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-900-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-900-normal.woff2 b/web/static/fonts/inter/files/inter-greek-900-normal.woff2 deleted file mode 100644 index ab3f1c08..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-900-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-100-normal.woff b/web/static/fonts/inter/files/inter-greek-ext-100-normal.woff deleted file mode 100644 index 435f25c1..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-ext-100-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-100-normal.woff2 b/web/static/fonts/inter/files/inter-greek-ext-100-normal.woff2 deleted file mode 100644 index 4f023ac3..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-ext-100-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-200-normal.woff b/web/static/fonts/inter/files/inter-greek-ext-200-normal.woff deleted file mode 100644 index e6c8949d..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-ext-200-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-200-normal.woff2 b/web/static/fonts/inter/files/inter-greek-ext-200-normal.woff2 deleted file mode 100644 index 8fa4e472..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-ext-200-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-300-normal.woff b/web/static/fonts/inter/files/inter-greek-ext-300-normal.woff deleted file mode 100644 index 57b76f71..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-ext-300-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-300-normal.woff2 b/web/static/fonts/inter/files/inter-greek-ext-300-normal.woff2 deleted file mode 100644 index 97e45aae..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-ext-300-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-400-normal.woff b/web/static/fonts/inter/files/inter-greek-ext-400-normal.woff deleted file mode 100644 index 1fe94089..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-ext-400-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-400-normal.woff2 b/web/static/fonts/inter/files/inter-greek-ext-400-normal.woff2 deleted file mode 100644 index 5f4ae923..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-ext-400-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-500-normal.woff b/web/static/fonts/inter/files/inter-greek-ext-500-normal.woff deleted file mode 100644 index e61572c2..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-ext-500-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-500-normal.woff2 b/web/static/fonts/inter/files/inter-greek-ext-500-normal.woff2 deleted file mode 100644 index aec20f61..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-ext-500-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-600-normal.woff b/web/static/fonts/inter/files/inter-greek-ext-600-normal.woff deleted file mode 100644 index b2e6a573..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-ext-600-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-600-normal.woff2 b/web/static/fonts/inter/files/inter-greek-ext-600-normal.woff2 deleted file mode 100644 index 0fee707f..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-ext-600-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-700-normal.woff b/web/static/fonts/inter/files/inter-greek-ext-700-normal.woff deleted file mode 100644 index 0410e226..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-ext-700-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-700-normal.woff2 b/web/static/fonts/inter/files/inter-greek-ext-700-normal.woff2 deleted file mode 100644 index 3a44ec36..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-ext-700-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-800-normal.woff b/web/static/fonts/inter/files/inter-greek-ext-800-normal.woff deleted file mode 100644 index 7e5cc6e9..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-ext-800-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-800-normal.woff2 b/web/static/fonts/inter/files/inter-greek-ext-800-normal.woff2 deleted file mode 100644 index 3d281d00..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-ext-800-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-900-normal.woff b/web/static/fonts/inter/files/inter-greek-ext-900-normal.woff deleted file mode 100644 index 7d81a8b3..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-ext-900-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-900-normal.woff2 b/web/static/fonts/inter/files/inter-greek-ext-900-normal.woff2 deleted file mode 100644 index c23b86f1..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-ext-900-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-opsz-italic.woff2 b/web/static/fonts/inter/files/inter-greek-ext-opsz-italic.woff2 new file mode 100644 index 00000000..2be522a0 Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-ext-opsz-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-opsz-normal.woff2 b/web/static/fonts/inter/files/inter-greek-ext-opsz-normal.woff2 new file mode 100644 index 00000000..afb0394d Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-ext-opsz-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-standard-italic.woff2 b/web/static/fonts/inter/files/inter-greek-ext-standard-italic.woff2 new file mode 100644 index 00000000..2be522a0 Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-ext-standard-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-standard-normal.woff2 b/web/static/fonts/inter/files/inter-greek-ext-standard-normal.woff2 new file mode 100644 index 00000000..afb0394d Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-ext-standard-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-variable-full-normal.woff2 b/web/static/fonts/inter/files/inter-greek-ext-variable-full-normal.woff2 deleted file mode 100644 index ec02a600..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-ext-variable-full-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-variable-wghtOnly-normal.woff2 b/web/static/fonts/inter/files/inter-greek-ext-variable-wghtOnly-normal.woff2 deleted file mode 100644 index 28a2d3a4..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-ext-variable-wghtOnly-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-wght-italic.woff2 b/web/static/fonts/inter/files/inter-greek-ext-wght-italic.woff2 new file mode 100644 index 00000000..08f3533e Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-ext-wght-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-wght-normal.woff2 b/web/static/fonts/inter/files/inter-greek-ext-wght-normal.woff2 new file mode 100644 index 00000000..cf56a71f Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-ext-wght-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-opsz-italic.woff2 b/web/static/fonts/inter/files/inter-greek-opsz-italic.woff2 new file mode 100644 index 00000000..e8b4994a Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-opsz-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-opsz-normal.woff2 b/web/static/fonts/inter/files/inter-greek-opsz-normal.woff2 new file mode 100644 index 00000000..612258da Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-opsz-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-standard-italic.woff2 b/web/static/fonts/inter/files/inter-greek-standard-italic.woff2 new file mode 100644 index 00000000..e8b4994a Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-standard-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-standard-normal.woff2 b/web/static/fonts/inter/files/inter-greek-standard-normal.woff2 new file mode 100644 index 00000000..612258da Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-standard-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-variable-full-normal.woff2 b/web/static/fonts/inter/files/inter-greek-variable-full-normal.woff2 deleted file mode 100644 index c824651a..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-variable-full-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-variable-wghtOnly-normal.woff2 b/web/static/fonts/inter/files/inter-greek-variable-wghtOnly-normal.woff2 deleted file mode 100644 index 53f099f8..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-variable-wghtOnly-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-wght-italic.woff2 b/web/static/fonts/inter/files/inter-greek-wght-italic.woff2 new file mode 100644 index 00000000..338ab0b2 Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-wght-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-wght-normal.woff2 b/web/static/fonts/inter/files/inter-greek-wght-normal.woff2 new file mode 100644 index 00000000..907b4a4d Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-wght-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-100-normal.woff b/web/static/fonts/inter/files/inter-latin-100-normal.woff deleted file mode 100644 index f6317807..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-100-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-100-normal.woff2 b/web/static/fonts/inter/files/inter-latin-100-normal.woff2 deleted file mode 100644 index 1ef23573..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-100-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-200-normal.woff b/web/static/fonts/inter/files/inter-latin-200-normal.woff deleted file mode 100644 index e7f01535..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-200-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-200-normal.woff2 b/web/static/fonts/inter/files/inter-latin-200-normal.woff2 deleted file mode 100644 index ca591ae7..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-200-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-300-normal.woff b/web/static/fonts/inter/files/inter-latin-300-normal.woff deleted file mode 100644 index f9a5dd91..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-300-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-300-normal.woff2 b/web/static/fonts/inter/files/inter-latin-300-normal.woff2 deleted file mode 100644 index e085aa82..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-300-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-400-normal.woff b/web/static/fonts/inter/files/inter-latin-400-normal.woff deleted file mode 100644 index b3db3063..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-400-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-400-normal.woff2 b/web/static/fonts/inter/files/inter-latin-400-normal.woff2 deleted file mode 100644 index c659f5e4..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-400-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-500-normal.woff b/web/static/fonts/inter/files/inter-latin-500-normal.woff deleted file mode 100644 index ee274431..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-500-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-500-normal.woff2 b/web/static/fonts/inter/files/inter-latin-500-normal.woff2 deleted file mode 100644 index 6fc94ad0..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-500-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-600-normal.woff b/web/static/fonts/inter/files/inter-latin-600-normal.woff deleted file mode 100644 index 8ce08d36..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-600-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-600-normal.woff2 b/web/static/fonts/inter/files/inter-latin-600-normal.woff2 deleted file mode 100644 index bc76d107..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-600-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-700-normal.woff b/web/static/fonts/inter/files/inter-latin-700-normal.woff deleted file mode 100644 index c2cd54d8..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-700-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-700-normal.woff2 b/web/static/fonts/inter/files/inter-latin-700-normal.woff2 deleted file mode 100644 index 8fcc4321..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-700-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-800-normal.woff b/web/static/fonts/inter/files/inter-latin-800-normal.woff deleted file mode 100644 index 5a05354c..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-800-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-800-normal.woff2 b/web/static/fonts/inter/files/inter-latin-800-normal.woff2 deleted file mode 100644 index 27db0546..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-800-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-900-normal.woff b/web/static/fonts/inter/files/inter-latin-900-normal.woff deleted file mode 100644 index 2da3cacd..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-900-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-900-normal.woff2 b/web/static/fonts/inter/files/inter-latin-900-normal.woff2 deleted file mode 100644 index b1c208a1..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-900-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-100-normal.woff b/web/static/fonts/inter/files/inter-latin-ext-100-normal.woff deleted file mode 100644 index cc721fa0..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-ext-100-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-100-normal.woff2 b/web/static/fonts/inter/files/inter-latin-ext-100-normal.woff2 deleted file mode 100644 index 9982f5f6..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-ext-100-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-200-normal.woff b/web/static/fonts/inter/files/inter-latin-ext-200-normal.woff deleted file mode 100644 index cdf55aa0..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-ext-200-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-200-normal.woff2 b/web/static/fonts/inter/files/inter-latin-ext-200-normal.woff2 deleted file mode 100644 index a822063f..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-ext-200-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-300-normal.woff b/web/static/fonts/inter/files/inter-latin-ext-300-normal.woff deleted file mode 100644 index 2ee09656..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-ext-300-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-300-normal.woff2 b/web/static/fonts/inter/files/inter-latin-ext-300-normal.woff2 deleted file mode 100644 index 25be677c..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-ext-300-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-400-normal.woff b/web/static/fonts/inter/files/inter-latin-ext-400-normal.woff deleted file mode 100644 index f7197314..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-ext-400-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-400-normal.woff2 b/web/static/fonts/inter/files/inter-latin-ext-400-normal.woff2 deleted file mode 100644 index b0d08940..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-ext-400-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-500-normal.woff b/web/static/fonts/inter/files/inter-latin-ext-500-normal.woff deleted file mode 100644 index cfbd116b..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-ext-500-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-500-normal.woff2 b/web/static/fonts/inter/files/inter-latin-ext-500-normal.woff2 deleted file mode 100644 index e7872918..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-ext-500-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-600-normal.woff b/web/static/fonts/inter/files/inter-latin-ext-600-normal.woff deleted file mode 100644 index cedbd7f9..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-ext-600-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-600-normal.woff2 b/web/static/fonts/inter/files/inter-latin-ext-600-normal.woff2 deleted file mode 100644 index 8ff1de2f..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-ext-600-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-700-normal.woff b/web/static/fonts/inter/files/inter-latin-ext-700-normal.woff deleted file mode 100644 index de34917d..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-ext-700-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-700-normal.woff2 b/web/static/fonts/inter/files/inter-latin-ext-700-normal.woff2 deleted file mode 100644 index d8c5665e..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-ext-700-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-800-normal.woff b/web/static/fonts/inter/files/inter-latin-ext-800-normal.woff deleted file mode 100644 index 0e991970..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-ext-800-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-800-normal.woff2 b/web/static/fonts/inter/files/inter-latin-ext-800-normal.woff2 deleted file mode 100644 index 1a2cf496..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-ext-800-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-900-normal.woff b/web/static/fonts/inter/files/inter-latin-ext-900-normal.woff deleted file mode 100644 index e35faf7f..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-ext-900-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-900-normal.woff2 b/web/static/fonts/inter/files/inter-latin-ext-900-normal.woff2 deleted file mode 100644 index 2d12b583..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-ext-900-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-opsz-italic.woff2 b/web/static/fonts/inter/files/inter-latin-ext-opsz-italic.woff2 new file mode 100644 index 00000000..fb8e67ed Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-ext-opsz-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-opsz-normal.woff2 b/web/static/fonts/inter/files/inter-latin-ext-opsz-normal.woff2 new file mode 100644 index 00000000..a0125fa0 Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-ext-opsz-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-standard-italic.woff2 b/web/static/fonts/inter/files/inter-latin-ext-standard-italic.woff2 new file mode 100644 index 00000000..fb8e67ed Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-ext-standard-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-standard-normal.woff2 b/web/static/fonts/inter/files/inter-latin-ext-standard-normal.woff2 new file mode 100644 index 00000000..a0125fa0 Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-ext-standard-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-variable-full-normal.woff2 b/web/static/fonts/inter/files/inter-latin-ext-variable-full-normal.woff2 deleted file mode 100644 index f92fc165..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-ext-variable-full-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-variable-wghtOnly-normal.woff2 b/web/static/fonts/inter/files/inter-latin-ext-variable-wghtOnly-normal.woff2 deleted file mode 100644 index 80b17cbf..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-ext-variable-wghtOnly-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-wght-italic.woff2 b/web/static/fonts/inter/files/inter-latin-ext-wght-italic.woff2 new file mode 100644 index 00000000..7bf20e12 Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-ext-wght-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-wght-normal.woff2 b/web/static/fonts/inter/files/inter-latin-ext-wght-normal.woff2 new file mode 100644 index 00000000..479d010d Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-ext-wght-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-opsz-italic.woff2 b/web/static/fonts/inter/files/inter-latin-opsz-italic.woff2 new file mode 100644 index 00000000..39eb6367 Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-opsz-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-opsz-normal.woff2 b/web/static/fonts/inter/files/inter-latin-opsz-normal.woff2 new file mode 100644 index 00000000..b0d0e2e5 Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-opsz-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-standard-italic.woff2 b/web/static/fonts/inter/files/inter-latin-standard-italic.woff2 new file mode 100644 index 00000000..39eb6367 Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-standard-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-standard-normal.woff2 b/web/static/fonts/inter/files/inter-latin-standard-normal.woff2 new file mode 100644 index 00000000..b0d0e2e5 Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-standard-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-variable-full-normal.woff2 b/web/static/fonts/inter/files/inter-latin-variable-full-normal.woff2 deleted file mode 100644 index 3d422a1f..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-variable-full-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-variable-wghtOnly-normal.woff2 b/web/static/fonts/inter/files/inter-latin-variable-wghtOnly-normal.woff2 deleted file mode 100644 index fff3df96..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-variable-wghtOnly-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-wght-italic.woff2 b/web/static/fonts/inter/files/inter-latin-wght-italic.woff2 new file mode 100644 index 00000000..2f06c651 Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-wght-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-wght-normal.woff2 b/web/static/fonts/inter/files/inter-latin-wght-normal.woff2 new file mode 100644 index 00000000..d15208de Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-wght-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-100-normal.woff b/web/static/fonts/inter/files/inter-vietnamese-100-normal.woff deleted file mode 100644 index 75c85d80..00000000 Binary files a/web/static/fonts/inter/files/inter-vietnamese-100-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-100-normal.woff2 b/web/static/fonts/inter/files/inter-vietnamese-100-normal.woff2 deleted file mode 100644 index 1e01e432..00000000 Binary files a/web/static/fonts/inter/files/inter-vietnamese-100-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-200-normal.woff b/web/static/fonts/inter/files/inter-vietnamese-200-normal.woff deleted file mode 100644 index 259d7a53..00000000 Binary files a/web/static/fonts/inter/files/inter-vietnamese-200-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-200-normal.woff2 b/web/static/fonts/inter/files/inter-vietnamese-200-normal.woff2 deleted file mode 100644 index 49bf2d61..00000000 Binary files a/web/static/fonts/inter/files/inter-vietnamese-200-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-300-normal.woff b/web/static/fonts/inter/files/inter-vietnamese-300-normal.woff deleted file mode 100644 index 7a070346..00000000 Binary files a/web/static/fonts/inter/files/inter-vietnamese-300-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-300-normal.woff2 b/web/static/fonts/inter/files/inter-vietnamese-300-normal.woff2 deleted file mode 100644 index c75e79a6..00000000 Binary files a/web/static/fonts/inter/files/inter-vietnamese-300-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-400-normal.woff b/web/static/fonts/inter/files/inter-vietnamese-400-normal.woff deleted file mode 100644 index 4f2b3b5a..00000000 Binary files a/web/static/fonts/inter/files/inter-vietnamese-400-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-400-normal.woff2 b/web/static/fonts/inter/files/inter-vietnamese-400-normal.woff2 deleted file mode 100644 index b9cb104b..00000000 Binary files a/web/static/fonts/inter/files/inter-vietnamese-400-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-500-normal.woff b/web/static/fonts/inter/files/inter-vietnamese-500-normal.woff deleted file mode 100644 index 6d8f9f2d..00000000 Binary files a/web/static/fonts/inter/files/inter-vietnamese-500-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-500-normal.woff2 b/web/static/fonts/inter/files/inter-vietnamese-500-normal.woff2 deleted file mode 100644 index 73c7d0f3..00000000 Binary files a/web/static/fonts/inter/files/inter-vietnamese-500-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-600-normal.woff b/web/static/fonts/inter/files/inter-vietnamese-600-normal.woff deleted file mode 100644 index b6e89fb4..00000000 Binary files a/web/static/fonts/inter/files/inter-vietnamese-600-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-600-normal.woff2 b/web/static/fonts/inter/files/inter-vietnamese-600-normal.woff2 deleted file mode 100644 index 0f59ce62..00000000 Binary files a/web/static/fonts/inter/files/inter-vietnamese-600-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-700-normal.woff b/web/static/fonts/inter/files/inter-vietnamese-700-normal.woff deleted file mode 100644 index 4906979d..00000000 Binary files a/web/static/fonts/inter/files/inter-vietnamese-700-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-700-normal.woff2 b/web/static/fonts/inter/files/inter-vietnamese-700-normal.woff2 deleted file mode 100644 index a9a5314a..00000000 Binary files a/web/static/fonts/inter/files/inter-vietnamese-700-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-800-normal.woff b/web/static/fonts/inter/files/inter-vietnamese-800-normal.woff deleted file mode 100644 index f08df88d..00000000 Binary files a/web/static/fonts/inter/files/inter-vietnamese-800-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-800-normal.woff2 b/web/static/fonts/inter/files/inter-vietnamese-800-normal.woff2 deleted file mode 100644 index 56b1f464..00000000 Binary files a/web/static/fonts/inter/files/inter-vietnamese-800-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-900-normal.woff b/web/static/fonts/inter/files/inter-vietnamese-900-normal.woff deleted file mode 100644 index bf4cad4d..00000000 Binary files a/web/static/fonts/inter/files/inter-vietnamese-900-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-900-normal.woff2 b/web/static/fonts/inter/files/inter-vietnamese-900-normal.woff2 deleted file mode 100644 index 27eadde3..00000000 Binary files a/web/static/fonts/inter/files/inter-vietnamese-900-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-opsz-italic.woff2 b/web/static/fonts/inter/files/inter-vietnamese-opsz-italic.woff2 new file mode 100644 index 00000000..db254575 Binary files /dev/null and b/web/static/fonts/inter/files/inter-vietnamese-opsz-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-opsz-normal.woff2 b/web/static/fonts/inter/files/inter-vietnamese-opsz-normal.woff2 new file mode 100644 index 00000000..79ac1ef3 Binary files /dev/null and b/web/static/fonts/inter/files/inter-vietnamese-opsz-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-standard-italic.woff2 b/web/static/fonts/inter/files/inter-vietnamese-standard-italic.woff2 new file mode 100644 index 00000000..db254575 Binary files /dev/null and b/web/static/fonts/inter/files/inter-vietnamese-standard-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-standard-normal.woff2 b/web/static/fonts/inter/files/inter-vietnamese-standard-normal.woff2 new file mode 100644 index 00000000..79ac1ef3 Binary files /dev/null and b/web/static/fonts/inter/files/inter-vietnamese-standard-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-variable-full-normal.woff2 b/web/static/fonts/inter/files/inter-vietnamese-variable-full-normal.woff2 deleted file mode 100644 index 0ebcbbf5..00000000 Binary files a/web/static/fonts/inter/files/inter-vietnamese-variable-full-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-variable-wghtOnly-normal.woff2 b/web/static/fonts/inter/files/inter-vietnamese-variable-wghtOnly-normal.woff2 deleted file mode 100644 index 7ee67fb2..00000000 Binary files a/web/static/fonts/inter/files/inter-vietnamese-variable-wghtOnly-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-wght-italic.woff2 b/web/static/fonts/inter/files/inter-vietnamese-wght-italic.woff2 new file mode 100644 index 00000000..9bfdda9e Binary files /dev/null and b/web/static/fonts/inter/files/inter-vietnamese-wght-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-wght-normal.woff2 b/web/static/fonts/inter/files/inter-vietnamese-wght-normal.woff2 new file mode 100644 index 00000000..a40c4699 Binary files /dev/null and b/web/static/fonts/inter/files/inter-vietnamese-wght-normal.woff2 differ diff --git a/web/static/fonts/inter/greek-100.css b/web/static/fonts/inter/greek-100.css deleted file mode 100644 index e5283968..00000000 --- a/web/static/fonts/inter/greek-100.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-greek-100-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 100; - src: url(/static/fonts/inter/files/inter-greek-100-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-100-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-200.css b/web/static/fonts/inter/greek-200.css deleted file mode 100644 index 591aae4d..00000000 --- a/web/static/fonts/inter/greek-200.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-greek-200-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 200; - src: url(/static/fonts/inter/files/inter-greek-200-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-200-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-300.css b/web/static/fonts/inter/greek-300.css deleted file mode 100644 index 0380236e..00000000 --- a/web/static/fonts/inter/greek-300.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-greek-300-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/inter/files/inter-greek-300-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-300-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-400.css b/web/static/fonts/inter/greek-400.css deleted file mode 100644 index 62102537..00000000 --- a/web/static/fonts/inter/greek-400.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-greek-400-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/inter/files/inter-greek-400-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-400-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-500.css b/web/static/fonts/inter/greek-500.css deleted file mode 100644 index 2a6a5a7e..00000000 --- a/web/static/fonts/inter/greek-500.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-greek-500-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/inter/files/inter-greek-500-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-500-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-600.css b/web/static/fonts/inter/greek-600.css deleted file mode 100644 index 9d4b3efe..00000000 --- a/web/static/fonts/inter/greek-600.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-greek-600-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/inter/files/inter-greek-600-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-600-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-700.css b/web/static/fonts/inter/greek-700.css deleted file mode 100644 index 9bcce4f4..00000000 --- a/web/static/fonts/inter/greek-700.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-greek-700-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/inter/files/inter-greek-700-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-700-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-800.css b/web/static/fonts/inter/greek-800.css deleted file mode 100644 index c461fc8b..00000000 --- a/web/static/fonts/inter/greek-800.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-greek-800-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 800; - src: url(/static/fonts/inter/files/inter-greek-800-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-800-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-900.css b/web/static/fonts/inter/greek-900.css deleted file mode 100644 index 06c13248..00000000 --- a/web/static/fonts/inter/greek-900.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-greek-900-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 900; - src: url(/static/fonts/inter/files/inter-greek-900-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-900-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-ext-100.css b/web/static/fonts/inter/greek-ext-100.css deleted file mode 100644 index f8edb803..00000000 --- a/web/static/fonts/inter/greek-ext-100.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-greek-ext-100-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 100; - src: url(/static/fonts/inter/files/inter-greek-ext-100-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-100-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-ext-200.css b/web/static/fonts/inter/greek-ext-200.css deleted file mode 100644 index bccd33f8..00000000 --- a/web/static/fonts/inter/greek-ext-200.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-greek-ext-200-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 200; - src: url(/static/fonts/inter/files/inter-greek-ext-200-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-200-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-ext-300.css b/web/static/fonts/inter/greek-ext-300.css deleted file mode 100644 index bc7f1f8e..00000000 --- a/web/static/fonts/inter/greek-ext-300.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-greek-ext-300-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/inter/files/inter-greek-ext-300-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-300-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-ext-400.css b/web/static/fonts/inter/greek-ext-400.css deleted file mode 100644 index 8d92ad3c..00000000 --- a/web/static/fonts/inter/greek-ext-400.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-greek-ext-400-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/inter/files/inter-greek-ext-400-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-400-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-ext-500.css b/web/static/fonts/inter/greek-ext-500.css deleted file mode 100644 index 20e5715e..00000000 --- a/web/static/fonts/inter/greek-ext-500.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-greek-ext-500-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/inter/files/inter-greek-ext-500-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-500-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-ext-600.css b/web/static/fonts/inter/greek-ext-600.css deleted file mode 100644 index c3ab1e56..00000000 --- a/web/static/fonts/inter/greek-ext-600.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-greek-ext-600-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/inter/files/inter-greek-ext-600-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-600-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-ext-700.css b/web/static/fonts/inter/greek-ext-700.css deleted file mode 100644 index f1d9e9e6..00000000 --- a/web/static/fonts/inter/greek-ext-700.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-greek-ext-700-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/inter/files/inter-greek-ext-700-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-700-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-ext-800.css b/web/static/fonts/inter/greek-ext-800.css deleted file mode 100644 index bb2e85aa..00000000 --- a/web/static/fonts/inter/greek-ext-800.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-greek-ext-800-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 800; - src: url(/static/fonts/inter/files/inter-greek-ext-800-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-800-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-ext-900.css b/web/static/fonts/inter/greek-ext-900.css deleted file mode 100644 index 8d5ab2e5..00000000 --- a/web/static/fonts/inter/greek-ext-900.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-greek-ext-900-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 900; - src: url(/static/fonts/inter/files/inter-greek-ext-900-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-900-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-ext.css b/web/static/fonts/inter/greek-ext.css deleted file mode 100644 index 021b612e..00000000 --- a/web/static/fonts/inter/greek-ext.css +++ /dev/null @@ -1,80 +0,0 @@ -/* inter-greek-ext-100-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 100; - src: url(/static/fonts/inter/files/inter-greek-ext-100-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-100-normal.woff) format('woff'); -} - -/* inter-greek-ext-200-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 200; - src: url(/static/fonts/inter/files/inter-greek-ext-200-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-200-normal.woff) format('woff'); -} - -/* inter-greek-ext-300-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/inter/files/inter-greek-ext-300-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-300-normal.woff) format('woff'); -} - -/* inter-greek-ext-400-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/inter/files/inter-greek-ext-400-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-400-normal.woff) format('woff'); -} - -/* inter-greek-ext-500-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/inter/files/inter-greek-ext-500-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-500-normal.woff) format('woff'); -} - -/* inter-greek-ext-600-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/inter/files/inter-greek-ext-600-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-600-normal.woff) format('woff'); -} - -/* inter-greek-ext-700-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/inter/files/inter-greek-ext-700-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-700-normal.woff) format('woff'); -} - -/* inter-greek-ext-800-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 800; - src: url(/static/fonts/inter/files/inter-greek-ext-800-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-800-normal.woff) format('woff'); -} - -/* inter-greek-ext-900-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 900; - src: url(/static/fonts/inter/files/inter-greek-ext-900-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-900-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/greek.css b/web/static/fonts/inter/greek.css deleted file mode 100644 index 20449cf6..00000000 --- a/web/static/fonts/inter/greek.css +++ /dev/null @@ -1,80 +0,0 @@ -/* inter-greek-100-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 100; - src: url(/static/fonts/inter/files/inter-greek-100-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-100-normal.woff) format('woff'); -} - -/* inter-greek-200-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 200; - src: url(/static/fonts/inter/files/inter-greek-200-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-200-normal.woff) format('woff'); -} - -/* inter-greek-300-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/inter/files/inter-greek-300-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-300-normal.woff) format('woff'); -} - -/* inter-greek-400-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/inter/files/inter-greek-400-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-400-normal.woff) format('woff'); -} - -/* inter-greek-500-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/inter/files/inter-greek-500-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-500-normal.woff) format('woff'); -} - -/* inter-greek-600-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/inter/files/inter-greek-600-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-600-normal.woff) format('woff'); -} - -/* inter-greek-700-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/inter/files/inter-greek-700-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-700-normal.woff) format('woff'); -} - -/* inter-greek-800-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 800; - src: url(/static/fonts/inter/files/inter-greek-800-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-800-normal.woff) format('woff'); -} - -/* inter-greek-900-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 900; - src: url(/static/fonts/inter/files/inter-greek-900-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-900-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/index.css b/web/static/fonts/inter/index.css index 15f91ed0..550e9435 100644 --- a/web/static/fonts/inter/index.css +++ b/web/static/fonts/inter/index.css @@ -1,69 +1,69 @@ -/* inter-cyrillic-ext-400-normal */ +/* inter-cyrillic-ext-wght-normal */ @font-face { - font-family: 'Inter'; + font-family: 'Inter Variable'; font-style: normal; font-display: swap; - font-weight: 400; - src: url(/static/fonts/inter/files/inter-cyrillic-ext-400-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-400-normal.woff) format('woff'); - unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-cyrillic-ext-wght-normal.woff2) format('woff2-variations'); + unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; } -/* inter-cyrillic-400-normal */ +/* inter-cyrillic-wght-normal */ @font-face { - font-family: 'Inter'; + font-family: 'Inter Variable'; font-style: normal; font-display: swap; - font-weight: 400; - src: url(/static/fonts/inter/files/inter-cyrillic-400-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-400-normal.woff) format('woff'); + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-cyrillic-wght-normal.woff2) format('woff2-variations'); unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; } -/* inter-greek-ext-400-normal */ +/* inter-greek-ext-wght-normal */ @font-face { - font-family: 'Inter'; + font-family: 'Inter Variable'; font-style: normal; font-display: swap; - font-weight: 400; - src: url(/static/fonts/inter/files/inter-greek-ext-400-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-400-normal.woff) format('woff'); + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-greek-ext-wght-normal.woff2) format('woff2-variations'); unicode-range: U+1F00-1FFF; } -/* inter-greek-400-normal */ +/* inter-greek-wght-normal */ @font-face { - font-family: 'Inter'; + font-family: 'Inter Variable'; font-style: normal; font-display: swap; - font-weight: 400; - src: url(/static/fonts/inter/files/inter-greek-400-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-400-normal.woff) format('woff'); - unicode-range: U+0370-03FF; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-greek-wght-normal.woff2) format('woff2-variations'); + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; } -/* inter-vietnamese-400-normal */ +/* inter-vietnamese-wght-normal */ @font-face { - font-family: 'Inter'; + font-family: 'Inter Variable'; font-style: normal; font-display: swap; - font-weight: 400; - src: url(/static/fonts/inter/files/inter-vietnamese-400-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-400-normal.woff) format('woff'); + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-vietnamese-wght-normal.woff2) format('woff2-variations'); unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; } -/* inter-latin-ext-400-normal */ +/* inter-latin-ext-wght-normal */ @font-face { - font-family: 'Inter'; + font-family: 'Inter Variable'; font-style: normal; font-display: swap; - font-weight: 400; - src: url(/static/fonts/inter/files/inter-latin-ext-400-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-400-normal.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-latin-ext-wght-normal.woff2) format('woff2-variations'); + unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; } -/* inter-latin-400-normal */ +/* inter-latin-wght-normal */ @font-face { - font-family: 'Inter'; + font-family: 'Inter Variable'; font-style: normal; font-display: swap; - font-weight: 400; - src: url(/static/fonts/inter/files/inter-latin-400-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-400-normal.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-latin-wght-normal.woff2) format('woff2-variations'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; } \ No newline at end of file diff --git a/web/static/fonts/inter/latin-100.css b/web/static/fonts/inter/latin-100.css deleted file mode 100644 index 6e3d921b..00000000 --- a/web/static/fonts/inter/latin-100.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-latin-100-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 100; - src: url(/static/fonts/inter/files/inter-latin-100-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-100-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-200.css b/web/static/fonts/inter/latin-200.css deleted file mode 100644 index d8ff3b0d..00000000 --- a/web/static/fonts/inter/latin-200.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-latin-200-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 200; - src: url(/static/fonts/inter/files/inter-latin-200-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-200-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-300.css b/web/static/fonts/inter/latin-300.css deleted file mode 100644 index 69446c76..00000000 --- a/web/static/fonts/inter/latin-300.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-latin-300-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/inter/files/inter-latin-300-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-300-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-400.css b/web/static/fonts/inter/latin-400.css deleted file mode 100644 index a750f6c0..00000000 --- a/web/static/fonts/inter/latin-400.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-latin-400-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/inter/files/inter-latin-400-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-400-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-500.css b/web/static/fonts/inter/latin-500.css deleted file mode 100644 index bdbb0cad..00000000 --- a/web/static/fonts/inter/latin-500.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-latin-500-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/inter/files/inter-latin-500-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-500-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-600.css b/web/static/fonts/inter/latin-600.css deleted file mode 100644 index 7c7d1ccf..00000000 --- a/web/static/fonts/inter/latin-600.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-latin-600-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/inter/files/inter-latin-600-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-600-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-700.css b/web/static/fonts/inter/latin-700.css deleted file mode 100644 index 0011b076..00000000 --- a/web/static/fonts/inter/latin-700.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-latin-700-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/inter/files/inter-latin-700-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-700-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-800.css b/web/static/fonts/inter/latin-800.css deleted file mode 100644 index aff25f16..00000000 --- a/web/static/fonts/inter/latin-800.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-latin-800-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 800; - src: url(/static/fonts/inter/files/inter-latin-800-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-800-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-900.css b/web/static/fonts/inter/latin-900.css deleted file mode 100644 index 0d35a81c..00000000 --- a/web/static/fonts/inter/latin-900.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-latin-900-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 900; - src: url(/static/fonts/inter/files/inter-latin-900-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-900-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-ext-100.css b/web/static/fonts/inter/latin-ext-100.css deleted file mode 100644 index 89a25cfa..00000000 --- a/web/static/fonts/inter/latin-ext-100.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-latin-ext-100-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 100; - src: url(/static/fonts/inter/files/inter-latin-ext-100-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-100-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-ext-200.css b/web/static/fonts/inter/latin-ext-200.css deleted file mode 100644 index 857ef30d..00000000 --- a/web/static/fonts/inter/latin-ext-200.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-latin-ext-200-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 200; - src: url(/static/fonts/inter/files/inter-latin-ext-200-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-200-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-ext-300.css b/web/static/fonts/inter/latin-ext-300.css deleted file mode 100644 index 7d7fa8cf..00000000 --- a/web/static/fonts/inter/latin-ext-300.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-latin-ext-300-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/inter/files/inter-latin-ext-300-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-300-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-ext-400.css b/web/static/fonts/inter/latin-ext-400.css deleted file mode 100644 index 176aa775..00000000 --- a/web/static/fonts/inter/latin-ext-400.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-latin-ext-400-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/inter/files/inter-latin-ext-400-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-400-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-ext-500.css b/web/static/fonts/inter/latin-ext-500.css deleted file mode 100644 index c561d0d0..00000000 --- a/web/static/fonts/inter/latin-ext-500.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-latin-ext-500-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/inter/files/inter-latin-ext-500-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-500-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-ext-600.css b/web/static/fonts/inter/latin-ext-600.css deleted file mode 100644 index b5d48602..00000000 --- a/web/static/fonts/inter/latin-ext-600.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-latin-ext-600-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/inter/files/inter-latin-ext-600-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-600-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-ext-700.css b/web/static/fonts/inter/latin-ext-700.css deleted file mode 100644 index 63ea9ab8..00000000 --- a/web/static/fonts/inter/latin-ext-700.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-latin-ext-700-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/inter/files/inter-latin-ext-700-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-700-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-ext-800.css b/web/static/fonts/inter/latin-ext-800.css deleted file mode 100644 index cf7cf59a..00000000 --- a/web/static/fonts/inter/latin-ext-800.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-latin-ext-800-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 800; - src: url(/static/fonts/inter/files/inter-latin-ext-800-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-800-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-ext-900.css b/web/static/fonts/inter/latin-ext-900.css deleted file mode 100644 index 92e67507..00000000 --- a/web/static/fonts/inter/latin-ext-900.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-latin-ext-900-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 900; - src: url(/static/fonts/inter/files/inter-latin-ext-900-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-900-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-ext.css b/web/static/fonts/inter/latin-ext.css deleted file mode 100644 index a5350e4d..00000000 --- a/web/static/fonts/inter/latin-ext.css +++ /dev/null @@ -1,80 +0,0 @@ -/* inter-latin-ext-100-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 100; - src: url(/static/fonts/inter/files/inter-latin-ext-100-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-100-normal.woff) format('woff'); -} - -/* inter-latin-ext-200-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 200; - src: url(/static/fonts/inter/files/inter-latin-ext-200-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-200-normal.woff) format('woff'); -} - -/* inter-latin-ext-300-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/inter/files/inter-latin-ext-300-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-300-normal.woff) format('woff'); -} - -/* inter-latin-ext-400-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/inter/files/inter-latin-ext-400-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-400-normal.woff) format('woff'); -} - -/* inter-latin-ext-500-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/inter/files/inter-latin-ext-500-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-500-normal.woff) format('woff'); -} - -/* inter-latin-ext-600-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/inter/files/inter-latin-ext-600-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-600-normal.woff) format('woff'); -} - -/* inter-latin-ext-700-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/inter/files/inter-latin-ext-700-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-700-normal.woff) format('woff'); -} - -/* inter-latin-ext-800-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 800; - src: url(/static/fonts/inter/files/inter-latin-ext-800-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-800-normal.woff) format('woff'); -} - -/* inter-latin-ext-900-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 900; - src: url(/static/fonts/inter/files/inter-latin-ext-900-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-900-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/latin.css b/web/static/fonts/inter/latin.css deleted file mode 100644 index bdd937f4..00000000 --- a/web/static/fonts/inter/latin.css +++ /dev/null @@ -1,80 +0,0 @@ -/* inter-latin-100-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 100; - src: url(/static/fonts/inter/files/inter-latin-100-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-100-normal.woff) format('woff'); -} - -/* inter-latin-200-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 200; - src: url(/static/fonts/inter/files/inter-latin-200-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-200-normal.woff) format('woff'); -} - -/* inter-latin-300-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/inter/files/inter-latin-300-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-300-normal.woff) format('woff'); -} - -/* inter-latin-400-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/inter/files/inter-latin-400-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-400-normal.woff) format('woff'); -} - -/* inter-latin-500-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/inter/files/inter-latin-500-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-500-normal.woff) format('woff'); -} - -/* inter-latin-600-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/inter/files/inter-latin-600-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-600-normal.woff) format('woff'); -} - -/* inter-latin-700-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/inter/files/inter-latin-700-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-700-normal.woff) format('woff'); -} - -/* inter-latin-800-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 800; - src: url(/static/fonts/inter/files/inter-latin-800-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-800-normal.woff) format('woff'); -} - -/* inter-latin-900-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 900; - src: url(/static/fonts/inter/files/inter-latin-900-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-900-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/metadata.json b/web/static/fonts/inter/metadata.json index c3d6d0e6..966f78b4 100644 --- a/web/static/fonts/inter/metadata.json +++ b/web/static/fonts/inter/metadata.json @@ -11,19 +11,20 @@ "vietnamese" ], "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], - "styles": ["normal"], + "styles": ["italic", "normal"], "defSubset": "latin", "variable": { - "slnt": {"default": "0", "min": "-10", "max": "0", "step": "1"}, + "ital": {"default": "0", "min": "0", "max": "1", "step": "1"}, + "opsz": {"default": "14", "min": "14", "max": "32", "step": "0.1"}, "wght": {"default": "400", "min": "100", "max": "900", "step": "1"} }, - "lastModified": "2022-09-22", - "version": "v12", + "lastModified": "2025-05-29", + "version": "v19", "category": "sans-serif", "license": { "type": "OFL-1.1", "url": "http://scripts.sil.org/OFL", - "attribution": "Copyright 2020 The Inter Project Authors (https://github.com/rsms/inter)" + "attribution": "Google Inc." }, "source": "https://github.com/google/fonts", "type": "google" diff --git a/web/static/fonts/inter/opsz-italic.css b/web/static/fonts/inter/opsz-italic.css new file mode 100644 index 00000000..fc03301a --- /dev/null +++ b/web/static/fonts/inter/opsz-italic.css @@ -0,0 +1,69 @@ +/* inter-cyrillic-ext-opsz-italic */ +@font-face { + font-family: 'Inter Variable'; + font-style: italic; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-cyrillic-ext-opsz-italic.woff2) format('woff2-variations'); + unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* inter-cyrillic-opsz-italic */ +@font-face { + font-family: 'Inter Variable'; + font-style: italic; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-cyrillic-opsz-italic.woff2) format('woff2-variations'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* inter-greek-ext-opsz-italic */ +@font-face { + font-family: 'Inter Variable'; + font-style: italic; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-greek-ext-opsz-italic.woff2) format('woff2-variations'); + unicode-range: U+1F00-1FFF; +} + +/* inter-greek-opsz-italic */ +@font-face { + font-family: 'Inter Variable'; + font-style: italic; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-greek-opsz-italic.woff2) format('woff2-variations'); + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; +} + +/* inter-vietnamese-opsz-italic */ +@font-face { + font-family: 'Inter Variable'; + font-style: italic; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-vietnamese-opsz-italic.woff2) format('woff2-variations'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* inter-latin-ext-opsz-italic */ +@font-face { + font-family: 'Inter Variable'; + font-style: italic; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-latin-ext-opsz-italic.woff2) format('woff2-variations'); + unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* inter-latin-opsz-italic */ +@font-face { + font-family: 'Inter Variable'; + font-style: italic; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-latin-opsz-italic.woff2) format('woff2-variations'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/web/static/fonts/inter/opsz.css b/web/static/fonts/inter/opsz.css new file mode 100644 index 00000000..1716439c --- /dev/null +++ b/web/static/fonts/inter/opsz.css @@ -0,0 +1,69 @@ +/* inter-cyrillic-ext-opsz-normal */ +@font-face { + font-family: 'Inter Variable'; + font-style: normal; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-cyrillic-ext-opsz-normal.woff2) format('woff2-variations'); + unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* inter-cyrillic-opsz-normal */ +@font-face { + font-family: 'Inter Variable'; + font-style: normal; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-cyrillic-opsz-normal.woff2) format('woff2-variations'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* inter-greek-ext-opsz-normal */ +@font-face { + font-family: 'Inter Variable'; + font-style: normal; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-greek-ext-opsz-normal.woff2) format('woff2-variations'); + unicode-range: U+1F00-1FFF; +} + +/* inter-greek-opsz-normal */ +@font-face { + font-family: 'Inter Variable'; + font-style: normal; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-greek-opsz-normal.woff2) format('woff2-variations'); + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; +} + +/* inter-vietnamese-opsz-normal */ +@font-face { + font-family: 'Inter Variable'; + font-style: normal; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-vietnamese-opsz-normal.woff2) format('woff2-variations'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* inter-latin-ext-opsz-normal */ +@font-face { + font-family: 'Inter Variable'; + font-style: normal; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-latin-ext-opsz-normal.woff2) format('woff2-variations'); + unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* inter-latin-opsz-normal */ +@font-face { + font-family: 'Inter Variable'; + font-style: normal; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-latin-opsz-normal.woff2) format('woff2-variations'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/web/static/fonts/inter/package.json b/web/static/fonts/inter/package.json index 4ff29193..52dff7bf 100644 --- a/web/static/fonts/inter/package.json +++ b/web/static/fonts/inter/package.json @@ -1,6 +1,6 @@ { - "name": "@fontsource/inter", - "version": "5.0.3", + "name": "@fontsource-variable/inter", + "version": "5.2.6", "description": "Self-host the Inter font in a neatly bundled NPM package.", "main": "index.css", "publishConfig": {"access": "public"}, @@ -18,13 +18,30 @@ "typeface", "variable" ], + "exports": { + ".": {"sass": "./index.css", "default": "./index.css"}, + "./LICENSE": "./LICENSE", + "./*": {"sass": "./*.css", "default": "./*.css"}, + "./*.css": {"sass": "./*.css", "default": "./*.css"}, + "/static/fonts/inter/files/*": {"sass": "/static/fonts/inter/files/*", "default": "/static/fonts/inter/files/*"}, + "/static/fonts/inter/files/*.woff": {"sass": "/static/fonts/inter/files/*.woff", "default": "/static/fonts/inter/files/*.woff"}, + "/static/fonts/inter/files/*.woff2": { + "sass": "/static/fonts/inter/files/*.woff2", + "default": "/static/fonts/inter/files/*.woff2" + }, + "./package.json": "./package.json", + "./metadata.json": "./metadata.json", + "./unicode.json": "./unicode.json", + "./scss": {"sass": "./scss/metadata.scss"} + }, "author": "Google Inc.", "license": "OFL-1.1", "homepage": "https://fontsource.org/fonts/inter", + "funding": "https://github.com/sponsors/ayuhito", "repository": { "type": "git", - "url": "https://github.com/fontsource/font-files.git", - "directory": "fonts/google/inter" + "url": "git+https://github.com/fontsource/font-files.git", + "directory": "fonts/variable/inter" }, - "publishHash": "f30be48934c43ab4" + "publishHash": "f7aa6aea83271740" } \ No newline at end of file diff --git a/web/static/fonts/inter/scss/metadata.scss b/web/static/fonts/inter/scss/metadata.scss index 24fe7b1c..93afc473 100644 --- a/web/static/fonts/inter/scss/metadata.scss +++ b/web/static/fonts/inter/scss/metadata.scss @@ -1,22 +1,53 @@ -$id: 'inter' !default; -$family: 'Inter' !default; -$category: sans-serif !default; -$subsets: (cyrillic, cyrillic-ext, greek, greek-ext, latin, latin-ext, vietnamese) !default; -$weights: (100, 200, 300, 400, 500, 600, 700, 800, 900) !default; -$styles: (normal) !default; -$axes: null !default; +$id: 'inter'; +$family: 'Inter'; +$category: sans-serif; +$subsets: (cyrillic, cyrillic-ext, greek, greek-ext, latin, latin-ext, vietnamese); +$weights: (100, 200, 300, 400, 500, 600, 700, 800, 900); +$styles: (italic, normal); +$axes: ( + ital: ( + default: 0, + min: 0, + max: 1, + step: 1, + ), + opsz: ( + default: 14, + min: 14, + max: 32, + step: 0.1, + ), + wght: ( + default: 400, + min: 100, + max: 900, + step: 1, + ), +); $defaults: ( - subset: latin, - weight: 400, - style: normal, - axis: null, -) !default; + subset: latin, + weight: 400, + style: normal, + axis: wght, +); $unicode: ( - cyrillic-ext: (U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F), - cyrillic: (U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116), - greek-ext: (U+1F00-1FFF), - greek: (U+0370-03FF), - vietnamese: (U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB), - latin-ext: (U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF), - latin: (U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD), -) !default; + cyrillic-ext: (U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F), + cyrillic: (U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116), + greek-ext: (U+1F00-1FFF), + greek: (U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF), + vietnamese: (U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB), + latin-ext: (U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF), + latin: (U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD), + ); + +$metadata: ( + id: $id, + family: $family, + category: $category, + subsets: $subsets, + weights: $weights, + styles: $styles, + axes: $axes, + defaults: $defaults, + unicode: $unicode, +) !default; \ No newline at end of file diff --git a/web/static/fonts/inter/scss/mixins.scss b/web/static/fonts/inter/scss/mixins.scss index 4d1c6c3a..8388db5a 100644 --- a/web/static/fonts/inter/scss/mixins.scss +++ b/web/static/fonts/inter/scss/mixins.scss @@ -6,7 +6,7 @@ @use 'metadata'; -$metadata: meta.module-variables(metadata) !default; +$metadata: metadata.$metadata !default; $directory: null !default; $family: null !default; @@ -34,6 +34,8 @@ $displayVar: null !default; // Deprecated $displayVar: $displayVar ) { + @warn "Importing mixins via the fontsource package is deprecated and will be removed in the next major release. Please use the @fontsource-utils/scss package instead."; + @if $displayVar != null { @warn "$displayVar is deprecated due to the limitation of using css variables in @font-face (https://github.com/fontsource/fontsource/issues/726)."; } @@ -52,7 +54,7 @@ $displayVar: null !default; $subsets: if( $subsets, if($subsets == all, map.get($metadata, subsets), $subsets), - map.get($metadata, defaults, subset) + map.get($metadata, subsets) ); $weights: if( $weights, @@ -72,13 +74,20 @@ $displayVar: null !default; @each $subset in $subsets { @each $unicodeSubset, $unicodeRange in map.get($metadata, unicode) { + // If condition is true, generate faces for the current subset @if ( - ($subset == $unicodeSubset) or - ( - // Is numeric subset - ($subset == map.get($metadata, defaults, subset)) and not - list.index(map.get($metadata, subsets), $unicodeSubset) - ) + // If there is no unicode information for the font or + ($unicodeSubset == null) or + // If the subset match a unicode subset or + ($subset == $unicodeSubset) or + ( + // If $unicodeSubset is a numeric unicode subset + // and current subset exists in the list of font subsets but does not match any unicode subset + // then generate faces for this numeric unicode subset as it is representing part of the current subset + list.index(map.get($metadata, subsets), $subset) and not + map.has-key($metadata, unicode, $subset) and not + list.index(map.get($metadata, subsets), $unicodeSubset) + ) ) { @each $weight in if($axes, null, $weights) { @each $axis in $axes { @@ -87,7 +96,7 @@ $displayVar: null !default; $src: (); @each $format in $formats { - $src: append( + $src: list.append( $src, url('#{$directory}/#{$variant}.#{$format}') format('#{$format}#{if($axis, '-variations', '')}'), diff --git a/web/static/fonts/inter/standard-italic.css b/web/static/fonts/inter/standard-italic.css new file mode 100644 index 00000000..3d87b5dc --- /dev/null +++ b/web/static/fonts/inter/standard-italic.css @@ -0,0 +1,69 @@ +/* inter-cyrillic-ext-standard-italic */ +@font-face { + font-family: 'Inter Variable'; + font-style: italic; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-cyrillic-ext-standard-italic.woff2) format('woff2-variations'); + unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* inter-cyrillic-standard-italic */ +@font-face { + font-family: 'Inter Variable'; + font-style: italic; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-cyrillic-standard-italic.woff2) format('woff2-variations'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* inter-greek-ext-standard-italic */ +@font-face { + font-family: 'Inter Variable'; + font-style: italic; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-greek-ext-standard-italic.woff2) format('woff2-variations'); + unicode-range: U+1F00-1FFF; +} + +/* inter-greek-standard-italic */ +@font-face { + font-family: 'Inter Variable'; + font-style: italic; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-greek-standard-italic.woff2) format('woff2-variations'); + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; +} + +/* inter-vietnamese-standard-italic */ +@font-face { + font-family: 'Inter Variable'; + font-style: italic; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-vietnamese-standard-italic.woff2) format('woff2-variations'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* inter-latin-ext-standard-italic */ +@font-face { + font-family: 'Inter Variable'; + font-style: italic; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-latin-ext-standard-italic.woff2) format('woff2-variations'); + unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* inter-latin-standard-italic */ +@font-face { + font-family: 'Inter Variable'; + font-style: italic; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-latin-standard-italic.woff2) format('woff2-variations'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/web/static/fonts/inter/standard.css b/web/static/fonts/inter/standard.css new file mode 100644 index 00000000..34a057b8 --- /dev/null +++ b/web/static/fonts/inter/standard.css @@ -0,0 +1,69 @@ +/* inter-cyrillic-ext-standard-normal */ +@font-face { + font-family: 'Inter Variable'; + font-style: normal; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-cyrillic-ext-standard-normal.woff2) format('woff2-variations'); + unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* inter-cyrillic-standard-normal */ +@font-face { + font-family: 'Inter Variable'; + font-style: normal; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-cyrillic-standard-normal.woff2) format('woff2-variations'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* inter-greek-ext-standard-normal */ +@font-face { + font-family: 'Inter Variable'; + font-style: normal; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-greek-ext-standard-normal.woff2) format('woff2-variations'); + unicode-range: U+1F00-1FFF; +} + +/* inter-greek-standard-normal */ +@font-face { + font-family: 'Inter Variable'; + font-style: normal; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-greek-standard-normal.woff2) format('woff2-variations'); + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; +} + +/* inter-vietnamese-standard-normal */ +@font-face { + font-family: 'Inter Variable'; + font-style: normal; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-vietnamese-standard-normal.woff2) format('woff2-variations'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* inter-latin-ext-standard-normal */ +@font-face { + font-family: 'Inter Variable'; + font-style: normal; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-latin-ext-standard-normal.woff2) format('woff2-variations'); + unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* inter-latin-standard-normal */ +@font-face { + font-family: 'Inter Variable'; + font-style: normal; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-latin-standard-normal.woff2) format('woff2-variations'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/web/static/fonts/inter/stylesheet.css b/web/static/fonts/inter/stylesheet.css deleted file mode 100644 index cb8f23bf..00000000 --- a/web/static/fonts/inter/stylesheet.css +++ /dev/null @@ -1,80 +0,0 @@ -@font-face { - font-family: 'Inter'; - src: url('/static/fonts/Inter/Inter-Black.woff2') format('woff2'), - url('/static/fonts/Inter/Inter-Black.woff') format('woff'); - font-weight: 900; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: 'Inter'; - src: url('/static/fonts/Inter/Inter-ExtraBold.woff2') format('woff2'), - url('/static/fonts/Inter/Inter-ExtraBold.woff') format('woff'); - font-weight: 800; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: 'Inter'; - src: url('/static/fonts/Inter/Inter-Bold.woff2') format('woff2'), - url('/static/fonts/Inter/Inter-Bold.woff') format('woff'); - font-weight: bold; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: 'Inter'; - src: url('/static/fonts/Inter/Inter-Light.woff2') format('woff2'), - url('/static/fonts/Inter/Inter-Light.woff') format('woff'); - font-weight: 300; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: 'Inter'; - src: url('/static/fonts/Inter/Inter-ExtraLight.woff2') format('woff2'), - url('/static/fonts/Inter/Inter-ExtraLight.woff') format('woff'); - font-weight: 200; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: 'Inter'; - src: url('/static/fonts/Inter/Inter-Medium.woff2') format('woff2'), - url('/static/fonts/Inter/Inter-Medium.woff') format('woff'); - font-weight: normal; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: 'Inter'; - src: url('/static/fonts/Inter/Inter-Regular.woff2') format('woff2'), - url('/static/fonts/Inter/Inter-Regular.woff') format('woff'); - font-weight: 400; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: 'Inter'; - src: url('/static/fonts/Inter/Inter-Thin.woff2') format('woff2'), - url('/static/fonts/Inter/Inter-Thin.woff') format('woff'); - font-weight: 100; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: 'Inter'; - src: url('/static/fonts/Inter/Inter-SemiBold.woff2') format('woff2'), - url('/static/fonts/Inter/Inter-SemiBold.woff') format('woff'); - font-weight: 600; - font-style: normal; - font-display: swap; -} diff --git a/web/static/fonts/inter/unicode.json b/web/static/fonts/inter/unicode.json index 0cd6dc4b..52bf564e 100644 --- a/web/static/fonts/inter/unicode.json +++ b/web/static/fonts/inter/unicode.json @@ -1,9 +1,9 @@ { - "cyrillic-ext": "U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F", + "cyrillic-ext": "U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F", "cyrillic": "U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116", "greek-ext": "U+1F00-1FFF", - "greek": "U+0370-03FF", + "greek": "U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF", "vietnamese": "U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB", - "latin-ext": "U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF", - "latin": "U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD" + "latin-ext": "U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF", + "latin": "U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD" } \ No newline at end of file diff --git a/web/static/fonts/inter/variable-full.css b/web/static/fonts/inter/variable-full.css deleted file mode 100644 index 01894e25..00000000 --- a/web/static/fonts/inter/variable-full.css +++ /dev/null @@ -1,63 +0,0 @@ -/* inter-cyrillic-variable-full-oblique 0deg 10deg */ -@font-face { - font-family: 'InterVariable'; - font-style: oblique 0deg 10deg; - font-display: swap; - font-weight: 100 900; - src: url('/static/fonts/inter/files/inter-cyrillic-variable-full-normal.woff2') format('woff2'); - unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; -} -/* inter-cyrillic-ext-variable-full-oblique 0deg 10deg */ -@font-face { - font-family: 'InterVariable'; - font-style: oblique 0deg 10deg; - font-display: swap; - font-weight: 100 900; - src: url('/static/fonts/inter/files/inter-cyrillic-ext-variable-full-normal.woff2') format('woff2'); - unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; -} -/* inter-greek-variable-full-oblique 0deg 10deg */ -@font-face { - font-family: 'InterVariable'; - font-style: oblique 0deg 10deg; - font-display: swap; - font-weight: 100 900; - src: url('/static/fonts/inter/files/inter-greek-variable-full-normal.woff2') format('woff2'); - unicode-range: U+0370-03FF; -} -/* inter-greek-ext-variable-full-oblique 0deg 10deg */ -@font-face { - font-family: 'InterVariable'; - font-style: oblique 0deg 10deg; - font-display: swap; - font-weight: 100 900; - src: url('/static/fonts/inter/files/inter-greek-ext-variable-full-normal.woff2') format('woff2'); - unicode-range: U+1F00-1FFF; -} -/* inter-latin-variable-full-oblique 0deg 10deg */ -@font-face { - font-family: 'InterVariable'; - font-style: oblique 0deg 10deg; - font-display: swap; - font-weight: 100 900; - src: url('/static/fonts/inter/files/inter-latin-variable-full-normal.woff2') format('woff2'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; -} -/* inter-latin-ext-variable-full-oblique 0deg 10deg */ -@font-face { - font-family: 'InterVariable'; - font-style: oblique 0deg 10deg; - font-display: swap; - font-weight: 100 900; - src: url('/static/fonts/inter/files/inter-latin-ext-variable-full-normal.woff2') format('woff2'); - unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; -} -/* inter-vietnamese-variable-full-oblique 0deg 10deg */ -@font-face { - font-family: 'InterVariable'; - font-style: oblique 0deg 10deg; - font-display: swap; - font-weight: 100 900; - src: url('/static/fonts/inter/files/inter-vietnamese-variable-full-normal.woff2') format('woff2'); - unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB; -} diff --git a/web/static/fonts/inter/variable.css b/web/static/fonts/inter/variable.css deleted file mode 100644 index f0400af1..00000000 --- a/web/static/fonts/inter/variable.css +++ /dev/null @@ -1,63 +0,0 @@ -/* inter-cyrillic-variable-wghtOnly-normal */ -@font-face { - font-family: 'InterVariable'; - font-style: normal; - font-display: swap; - font-weight: 100 900; - src: url('/static/fonts/inter/files/inter-cyrillic-variable-wghtOnly-normal.woff2') format('woff2'); - unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; -} -/* inter-cyrillic-ext-variable-wghtOnly-normal */ -@font-face { - font-family: 'InterVariable'; - font-style: normal; - font-display: swap; - font-weight: 100 900; - src: url('/static/fonts/inter/files/inter-cyrillic-ext-variable-wghtOnly-normal.woff2') format('woff2'); - unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; -} -/* inter-greek-variable-wghtOnly-normal */ -@font-face { - font-family: 'InterVariable'; - font-style: normal; - font-display: swap; - font-weight: 100 900; - src: url('/static/fonts/inter/files/inter-greek-variable-wghtOnly-normal.woff2') format('woff2'); - unicode-range: U+0370-03FF; -} -/* inter-greek-ext-variable-wghtOnly-normal */ -@font-face { - font-family: 'InterVariable'; - font-style: normal; - font-display: swap; - font-weight: 100 900; - src: url('/static/fonts/inter/files/inter-greek-ext-variable-wghtOnly-normal.woff2') format('woff2'); - unicode-range: U+1F00-1FFF; -} -/* inter-latin-variable-wghtOnly-normal */ -@font-face { - font-family: 'InterVariable'; - font-style: normal; - font-display: swap; - font-weight: 100 900; - src: url('/static/fonts/inter/files/inter-latin-variable-wghtOnly-normal.woff2') format('woff2'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; -} -/* inter-latin-ext-variable-wghtOnly-normal */ -@font-face { - font-family: 'InterVariable'; - font-style: normal; - font-display: swap; - font-weight: 100 900; - src: url('/static/fonts/inter/files/inter-latin-ext-variable-wghtOnly-normal.woff2') format('woff2'); - unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; -} -/* inter-vietnamese-variable-wghtOnly-normal */ -@font-face { - font-family: 'InterVariable'; - font-style: normal; - font-display: swap; - font-weight: 100 900; - src: url('/static/fonts/inter/files/inter-vietnamese-variable-wghtOnly-normal.woff2') format('woff2'); - unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB; -} diff --git a/web/static/fonts/inter/vietnamese-100.css b/web/static/fonts/inter/vietnamese-100.css deleted file mode 100644 index a1e549b4..00000000 --- a/web/static/fonts/inter/vietnamese-100.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-vietnamese-100-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 100; - src: url(/static/fonts/inter/files/inter-vietnamese-100-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-100-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/vietnamese-200.css b/web/static/fonts/inter/vietnamese-200.css deleted file mode 100644 index db496d56..00000000 --- a/web/static/fonts/inter/vietnamese-200.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-vietnamese-200-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 200; - src: url(/static/fonts/inter/files/inter-vietnamese-200-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-200-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/vietnamese-300.css b/web/static/fonts/inter/vietnamese-300.css deleted file mode 100644 index 93bb0d46..00000000 --- a/web/static/fonts/inter/vietnamese-300.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-vietnamese-300-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/inter/files/inter-vietnamese-300-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-300-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/vietnamese-400.css b/web/static/fonts/inter/vietnamese-400.css deleted file mode 100644 index 6d104760..00000000 --- a/web/static/fonts/inter/vietnamese-400.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-vietnamese-400-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/inter/files/inter-vietnamese-400-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-400-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/vietnamese-500.css b/web/static/fonts/inter/vietnamese-500.css deleted file mode 100644 index ec3ff31e..00000000 --- a/web/static/fonts/inter/vietnamese-500.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-vietnamese-500-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/inter/files/inter-vietnamese-500-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-500-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/vietnamese-600.css b/web/static/fonts/inter/vietnamese-600.css deleted file mode 100644 index a4ee9b4b..00000000 --- a/web/static/fonts/inter/vietnamese-600.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-vietnamese-600-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/inter/files/inter-vietnamese-600-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-600-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/vietnamese-700.css b/web/static/fonts/inter/vietnamese-700.css deleted file mode 100644 index 3aaa353c..00000000 --- a/web/static/fonts/inter/vietnamese-700.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-vietnamese-700-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/inter/files/inter-vietnamese-700-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-700-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/vietnamese-800.css b/web/static/fonts/inter/vietnamese-800.css deleted file mode 100644 index a3ea3a13..00000000 --- a/web/static/fonts/inter/vietnamese-800.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-vietnamese-800-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 800; - src: url(/static/fonts/inter/files/inter-vietnamese-800-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-800-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/vietnamese-900.css b/web/static/fonts/inter/vietnamese-900.css deleted file mode 100644 index 562d8bb0..00000000 --- a/web/static/fonts/inter/vietnamese-900.css +++ /dev/null @@ -1,8 +0,0 @@ -/* inter-vietnamese-900-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 900; - src: url(/static/fonts/inter/files/inter-vietnamese-900-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-900-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/vietnamese.css b/web/static/fonts/inter/vietnamese.css deleted file mode 100644 index 1313a2a4..00000000 --- a/web/static/fonts/inter/vietnamese.css +++ /dev/null @@ -1,80 +0,0 @@ -/* inter-vietnamese-100-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 100; - src: url(/static/fonts/inter/files/inter-vietnamese-100-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-100-normal.woff) format('woff'); -} - -/* inter-vietnamese-200-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 200; - src: url(/static/fonts/inter/files/inter-vietnamese-200-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-200-normal.woff) format('woff'); -} - -/* inter-vietnamese-300-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/inter/files/inter-vietnamese-300-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-300-normal.woff) format('woff'); -} - -/* inter-vietnamese-400-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/inter/files/inter-vietnamese-400-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-400-normal.woff) format('woff'); -} - -/* inter-vietnamese-500-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/inter/files/inter-vietnamese-500-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-500-normal.woff) format('woff'); -} - -/* inter-vietnamese-600-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/inter/files/inter-vietnamese-600-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-600-normal.woff) format('woff'); -} - -/* inter-vietnamese-700-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/inter/files/inter-vietnamese-700-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-700-normal.woff) format('woff'); -} - -/* inter-vietnamese-800-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 800; - src: url(/static/fonts/inter/files/inter-vietnamese-800-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-800-normal.woff) format('woff'); -} - -/* inter-vietnamese-900-normal */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-display: swap; - font-weight: 900; - src: url(/static/fonts/inter/files/inter-vietnamese-900-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-900-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/inter/wght-italic.css b/web/static/fonts/inter/wght-italic.css new file mode 100644 index 00000000..81cd3886 --- /dev/null +++ b/web/static/fonts/inter/wght-italic.css @@ -0,0 +1,69 @@ +/* inter-cyrillic-ext-wght-italic */ +@font-face { + font-family: 'Inter Variable'; + font-style: italic; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-cyrillic-ext-wght-italic.woff2) format('woff2-variations'); + unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* inter-cyrillic-wght-italic */ +@font-face { + font-family: 'Inter Variable'; + font-style: italic; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-cyrillic-wght-italic.woff2) format('woff2-variations'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* inter-greek-ext-wght-italic */ +@font-face { + font-family: 'Inter Variable'; + font-style: italic; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-greek-ext-wght-italic.woff2) format('woff2-variations'); + unicode-range: U+1F00-1FFF; +} + +/* inter-greek-wght-italic */ +@font-face { + font-family: 'Inter Variable'; + font-style: italic; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-greek-wght-italic.woff2) format('woff2-variations'); + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; +} + +/* inter-vietnamese-wght-italic */ +@font-face { + font-family: 'Inter Variable'; + font-style: italic; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-vietnamese-wght-italic.woff2) format('woff2-variations'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* inter-latin-ext-wght-italic */ +@font-face { + font-family: 'Inter Variable'; + font-style: italic; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-latin-ext-wght-italic.woff2) format('woff2-variations'); + unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* inter-latin-wght-italic */ +@font-face { + font-family: 'Inter Variable'; + font-style: italic; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-latin-wght-italic.woff2) format('woff2-variations'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/web/static/fonts/inter/wght.css b/web/static/fonts/inter/wght.css new file mode 100644 index 00000000..550e9435 --- /dev/null +++ b/web/static/fonts/inter/wght.css @@ -0,0 +1,69 @@ +/* inter-cyrillic-ext-wght-normal */ +@font-face { + font-family: 'Inter Variable'; + font-style: normal; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-cyrillic-ext-wght-normal.woff2) format('woff2-variations'); + unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* inter-cyrillic-wght-normal */ +@font-face { + font-family: 'Inter Variable'; + font-style: normal; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-cyrillic-wght-normal.woff2) format('woff2-variations'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* inter-greek-ext-wght-normal */ +@font-face { + font-family: 'Inter Variable'; + font-style: normal; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-greek-ext-wght-normal.woff2) format('woff2-variations'); + unicode-range: U+1F00-1FFF; +} + +/* inter-greek-wght-normal */ +@font-face { + font-family: 'Inter Variable'; + font-style: normal; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-greek-wght-normal.woff2) format('woff2-variations'); + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; +} + +/* inter-vietnamese-wght-normal */ +@font-face { + font-family: 'Inter Variable'; + font-style: normal; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-vietnamese-wght-normal.woff2) format('woff2-variations'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* inter-latin-ext-wght-normal */ +@font-face { + font-family: 'Inter Variable'; + font-style: normal; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-latin-ext-wght-normal.woff2) format('woff2-variations'); + unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* inter-latin-wght-normal */ +@font-face { + font-family: 'Inter Variable'; + font-style: normal; + font-display: swap; + font-weight: 100 900; + src: url(/static/fonts/inter/files/inter-latin-wght-normal.woff2) format('woff2-variations'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/web/static/fonts/rasa/300-italic.css b/web/static/fonts/rasa/300-italic.css deleted file mode 100644 index 191aeba5..00000000 --- a/web/static/fonts/rasa/300-italic.css +++ /dev/null @@ -1,39 +0,0 @@ -/* rasa-gujarati-300-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/rasa/files/rasa-gujarati-300-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-300-italic.woff) format('woff'); - unicode-range: U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; -} - -/* rasa-vietnamese-300-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/rasa/files/rasa-vietnamese-300-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-vietnamese-300-italic.woff) format('woff'); - unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; -} - -/* rasa-latin-ext-300-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/rasa/files/rasa-latin-ext-300-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-300-italic.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; -} - -/* rasa-latin-300-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/rasa/files/rasa-latin-300-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-300-italic.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; -} \ No newline at end of file diff --git a/web/static/fonts/rasa/300.css b/web/static/fonts/rasa/300.css deleted file mode 100644 index 639ebb93..00000000 --- a/web/static/fonts/rasa/300.css +++ /dev/null @@ -1,39 +0,0 @@ -/* rasa-gujarati-300-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/rasa/files/rasa-gujarati-300-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-300-normal.woff) format('woff'); - unicode-range: U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; -} - -/* rasa-vietnamese-300-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/rasa/files/rasa-vietnamese-300-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-vietnamese-300-normal.woff) format('woff'); - unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; -} - -/* rasa-latin-ext-300-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/rasa/files/rasa-latin-ext-300-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-300-normal.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; -} - -/* rasa-latin-300-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/rasa/files/rasa-latin-300-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-300-normal.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; -} \ No newline at end of file diff --git a/web/static/fonts/rasa/400-italic.css b/web/static/fonts/rasa/400-italic.css deleted file mode 100644 index b34137bc..00000000 --- a/web/static/fonts/rasa/400-italic.css +++ /dev/null @@ -1,39 +0,0 @@ -/* rasa-gujarati-400-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/rasa/files/rasa-gujarati-400-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-400-italic.woff) format('woff'); - unicode-range: U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; -} - -/* rasa-vietnamese-400-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/rasa/files/rasa-vietnamese-400-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-vietnamese-400-italic.woff) format('woff'); - unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; -} - -/* rasa-latin-ext-400-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/rasa/files/rasa-latin-ext-400-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-400-italic.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; -} - -/* rasa-latin-400-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/rasa/files/rasa-latin-400-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-400-italic.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; -} \ No newline at end of file diff --git a/web/static/fonts/rasa/400.css b/web/static/fonts/rasa/400.css deleted file mode 100644 index b0e5b63a..00000000 --- a/web/static/fonts/rasa/400.css +++ /dev/null @@ -1,39 +0,0 @@ -/* rasa-gujarati-400-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/rasa/files/rasa-gujarati-400-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-400-normal.woff) format('woff'); - unicode-range: U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; -} - -/* rasa-vietnamese-400-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/rasa/files/rasa-vietnamese-400-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-vietnamese-400-normal.woff) format('woff'); - unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; -} - -/* rasa-latin-ext-400-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/rasa/files/rasa-latin-ext-400-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-400-normal.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; -} - -/* rasa-latin-400-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/rasa/files/rasa-latin-400-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-400-normal.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; -} \ No newline at end of file diff --git a/web/static/fonts/rasa/500-italic.css b/web/static/fonts/rasa/500-italic.css deleted file mode 100644 index 601efbd8..00000000 --- a/web/static/fonts/rasa/500-italic.css +++ /dev/null @@ -1,39 +0,0 @@ -/* rasa-gujarati-500-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/rasa/files/rasa-gujarati-500-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-500-italic.woff) format('woff'); - unicode-range: U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; -} - -/* rasa-vietnamese-500-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/rasa/files/rasa-vietnamese-500-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-vietnamese-500-italic.woff) format('woff'); - unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; -} - -/* rasa-latin-ext-500-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/rasa/files/rasa-latin-ext-500-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-500-italic.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; -} - -/* rasa-latin-500-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/rasa/files/rasa-latin-500-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-500-italic.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; -} \ No newline at end of file diff --git a/web/static/fonts/rasa/500.css b/web/static/fonts/rasa/500.css deleted file mode 100644 index b66d30d0..00000000 --- a/web/static/fonts/rasa/500.css +++ /dev/null @@ -1,39 +0,0 @@ -/* rasa-gujarati-500-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/rasa/files/rasa-gujarati-500-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-500-normal.woff) format('woff'); - unicode-range: U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; -} - -/* rasa-vietnamese-500-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/rasa/files/rasa-vietnamese-500-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-vietnamese-500-normal.woff) format('woff'); - unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; -} - -/* rasa-latin-ext-500-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/rasa/files/rasa-latin-ext-500-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-500-normal.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; -} - -/* rasa-latin-500-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/rasa/files/rasa-latin-500-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-500-normal.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; -} \ No newline at end of file diff --git a/web/static/fonts/rasa/600-italic.css b/web/static/fonts/rasa/600-italic.css deleted file mode 100644 index 864d61c1..00000000 --- a/web/static/fonts/rasa/600-italic.css +++ /dev/null @@ -1,39 +0,0 @@ -/* rasa-gujarati-600-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/rasa/files/rasa-gujarati-600-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-600-italic.woff) format('woff'); - unicode-range: U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; -} - -/* rasa-vietnamese-600-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/rasa/files/rasa-vietnamese-600-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-vietnamese-600-italic.woff) format('woff'); - unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; -} - -/* rasa-latin-ext-600-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/rasa/files/rasa-latin-ext-600-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-600-italic.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; -} - -/* rasa-latin-600-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/rasa/files/rasa-latin-600-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-600-italic.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; -} \ No newline at end of file diff --git a/web/static/fonts/rasa/600.css b/web/static/fonts/rasa/600.css deleted file mode 100644 index daa9cfd7..00000000 --- a/web/static/fonts/rasa/600.css +++ /dev/null @@ -1,39 +0,0 @@ -/* rasa-gujarati-600-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/rasa/files/rasa-gujarati-600-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-600-normal.woff) format('woff'); - unicode-range: U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; -} - -/* rasa-vietnamese-600-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/rasa/files/rasa-vietnamese-600-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-vietnamese-600-normal.woff) format('woff'); - unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; -} - -/* rasa-latin-ext-600-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/rasa/files/rasa-latin-ext-600-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-600-normal.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; -} - -/* rasa-latin-600-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/rasa/files/rasa-latin-600-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-600-normal.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; -} \ No newline at end of file diff --git a/web/static/fonts/rasa/700-italic.css b/web/static/fonts/rasa/700-italic.css deleted file mode 100644 index d32e2900..00000000 --- a/web/static/fonts/rasa/700-italic.css +++ /dev/null @@ -1,39 +0,0 @@ -/* rasa-gujarati-700-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/rasa/files/rasa-gujarati-700-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-700-italic.woff) format('woff'); - unicode-range: U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; -} - -/* rasa-vietnamese-700-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/rasa/files/rasa-vietnamese-700-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-vietnamese-700-italic.woff) format('woff'); - unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; -} - -/* rasa-latin-ext-700-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/rasa/files/rasa-latin-ext-700-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-700-italic.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; -} - -/* rasa-latin-700-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/rasa/files/rasa-latin-700-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-700-italic.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; -} \ No newline at end of file diff --git a/web/static/fonts/rasa/700.css b/web/static/fonts/rasa/700.css deleted file mode 100644 index aede24d8..00000000 --- a/web/static/fonts/rasa/700.css +++ /dev/null @@ -1,39 +0,0 @@ -/* rasa-gujarati-700-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/rasa/files/rasa-gujarati-700-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-700-normal.woff) format('woff'); - unicode-range: U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; -} - -/* rasa-vietnamese-700-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/rasa/files/rasa-vietnamese-700-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-vietnamese-700-normal.woff) format('woff'); - unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; -} - -/* rasa-latin-ext-700-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/rasa/files/rasa-latin-ext-700-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-700-normal.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; -} - -/* rasa-latin-700-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/rasa/files/rasa-latin-700-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-700-normal.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; -} \ No newline at end of file diff --git a/web/static/fonts/rasa/LICENSE b/web/static/fonts/rasa/LICENSE index 44183bf4..046fc664 100644 --- a/web/static/fonts/rasa/LICENSE +++ b/web/static/fonts/rasa/LICENSE @@ -1,4 +1,4 @@ -Copyright 2015 The Yrsa-Rasa Project Authors (https://github.com/rosettatype/yrsa-rasa/) +Google Inc. This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: diff --git a/web/static/fonts/rasa/README.md b/web/static/fonts/rasa/README.md index e76d551e..0d1d1865 100644 --- a/web/static/fonts/rasa/README.md +++ b/web/static/fonts/rasa/README.md @@ -1,47 +1,48 @@ # Fontsource Rasa -[![npm (scoped)](https://img.shields.io/npm/v/@fontsource/rasa?color=brightgreen)](https://www.npmjs.com/package/@fontsource/rasa) [![Generic badge](https://img.shields.io/badge/fontsource-passing-brightgreen)](https://github.com/fontsource/fontsource) [![Monthly downloads](https://badgen.net/npm/dm/@fontsource/rasa)](https://github.com/fontsource/fontsource) [![Total downloads](https://badgen.net/npm/dt/@fontsource/rasa)](https://github.com/fontsource/fontsource) [![GitHub stars](https://img.shields.io/github/stars/fontsource/fontsource.svg?style=social&label=Star)](https://github.com/fontsource/fontsource/stargazers) +[![npm (scoped)](https://img.shields.io/npm/v/@fontsource-variable/rasa?color=brightgreen)](https://www.npmjs.com/package/@fontsource-variable/rasa) [![Generic badge](https://img.shields.io/badge/fontsource-passing-brightgreen)](https://github.com/fontsource/fontsource) [![Monthly downloads](https://badgen.net/npm/dm/@fontsource-variable/rasa)](https://github.com/fontsource/fontsource) [![Total downloads](https://badgen.net/npm/dt/@fontsource-variable/rasa)](https://github.com/fontsource/fontsource) [![GitHub stars](https://img.shields.io/github/stars/fontsource/fontsource.svg?style=social&label=Star)](https://github.com/fontsource/fontsource/stargazers) -The CSS and web font files to easily self-host the “Rasa” font. Please visit the main [Fontsource website](https://fontsource.org/fonts/rasa) to view more details on this package. +The CSS and web font files to easily self-host the “Rasa” variable font. Please visit the main [Fontsource website](https://fontsource.org/fonts/rasa) to view more details on this package. ## Quick Installation Fontsource offers multiple methods to import the CSS, including using a bundler like Vite or using SASS. You can find full documentation [here](https://fontsource.org/docs/getting-started/introduction). ```javascript -npm install @fontsource/rasa +npm install @fontsource-variable/rasa ``` Within your app entry file or site component, import it in. ```javascript -import "@fontsource/rasa"; // Defaults to weight 400 -import "@fontsource/rasa/400.css"; // Specify weight -import "@fontsource/rasa/400-italic.css"; // Specify weight and style +import "@fontsource-variable/rasa"; // Defaults to wght axis +import "@fontsource-variable/rasa/wght.css"; // Specify axis +import "@fontsource-variable/rasa/wght-italic.css"; // Specify axis and style ``` Supported variables: - Weights: `[300,400,500,600,700]` - Styles: `[italic,normal]` - Subsets: `[gujarati,latin,latin-ext,vietnamese]` +- Axes: `[wght]` -> Note: `italic` may not be supported by all fonts. To learn more about what weights and styles are supported, please visit the [Fontsource website](https://fontsource.org/fonts/rasa). +> Note: `italic` may not be supported by all fonts. To learn more about what axes and styles are supported, please visit the [Fontsource website](https://fontsource.org/fonts/rasa). Finally, you can reference the font name in a CSS stylesheet, CSS Module, or CSS-in-JS. ```css body { - font-family: "Rasa"; + font-family: "Rasa Variable"; } ``` ## Licensing Always make sure to read the license for each font you use. Most of the fonts in the collection use the SIL Open Font License, v1.1. Some fonts use the Apache 2 license. The Ubuntu fonts use the Ubuntu Font License v1.0. -Copyright 2015 The Yrsa-Rasa Project Authors (https://github.com/rosettatype/yrsa-rasa/) +Google Inc. [OFL-1.1](http://scripts.sil.org/OFL) ## Other Notes -Font version (provided by source): `v19`. +Font version (provided by source): `v26`. If you have any suggestions or ideas to improve the performance of font loading or expand the existing library, feel free to star and contribute to this repository. You can share your suggestions or ideas by creating an [issue](https://github.com/fontsource/fontsource/issues). \ No newline at end of file diff --git a/web/static/fonts/rasa/files/file-list.json b/web/static/fonts/rasa/files/file-list.json deleted file mode 100644 index dc782f6b..00000000 --- a/web/static/fonts/rasa/files/file-list.json +++ /dev/null @@ -1,100 +0,0 @@ -[ - "./fonts/google/rasa/files/rasa-gujarati-300-italic.woff", - "./fonts/google/rasa/files/rasa-latin-300-italic.woff", - "./fonts/google/rasa/files/rasa-latin-ext-300-italic.woff", - "./fonts/google/rasa/files/rasa-vietnamese-300-italic.woff", - "./fonts/google/rasa/files/rasa-gujarati-300-normal.woff", - "./fonts/google/rasa/files/rasa-latin-300-normal.woff", - "./fonts/google/rasa/files/rasa-latin-ext-300-normal.woff", - "./fonts/google/rasa/files/rasa-vietnamese-300-normal.woff", - "./fonts/google/rasa/files/rasa-gujarati-400-italic.woff", - "./fonts/google/rasa/files/rasa-latin-400-italic.woff", - "./fonts/google/rasa/files/rasa-latin-ext-400-italic.woff", - "./fonts/google/rasa/files/rasa-vietnamese-400-italic.woff", - "./fonts/google/rasa/files/rasa-gujarati-400-normal.woff", - "./fonts/google/rasa/files/rasa-latin-400-normal.woff", - "./fonts/google/rasa/files/rasa-latin-ext-400-normal.woff", - "./fonts/google/rasa/files/rasa-vietnamese-400-normal.woff", - "./fonts/google/rasa/files/rasa-gujarati-500-italic.woff", - "./fonts/google/rasa/files/rasa-latin-500-italic.woff", - "./fonts/google/rasa/files/rasa-latin-ext-500-italic.woff", - "./fonts/google/rasa/files/rasa-vietnamese-500-italic.woff", - "./fonts/google/rasa/files/rasa-gujarati-500-normal.woff", - "./fonts/google/rasa/files/rasa-latin-500-normal.woff", - "./fonts/google/rasa/files/rasa-latin-ext-500-normal.woff", - "./fonts/google/rasa/files/rasa-vietnamese-500-normal.woff", - "./fonts/google/rasa/files/rasa-gujarati-600-italic.woff", - "./fonts/google/rasa/files/rasa-latin-600-italic.woff", - "./fonts/google/rasa/files/rasa-latin-ext-600-italic.woff", - "./fonts/google/rasa/files/rasa-vietnamese-600-italic.woff", - "./fonts/google/rasa/files/rasa-gujarati-600-normal.woff", - "./fonts/google/rasa/files/rasa-latin-600-normal.woff", - "./fonts/google/rasa/files/rasa-latin-ext-600-normal.woff", - "./fonts/google/rasa/files/rasa-vietnamese-600-normal.woff", - "./fonts/google/rasa/files/rasa-gujarati-700-italic.woff", - "./fonts/google/rasa/files/rasa-latin-700-italic.woff", - "./fonts/google/rasa/files/rasa-latin-ext-700-italic.woff", - "./fonts/google/rasa/files/rasa-vietnamese-700-italic.woff", - "./fonts/google/rasa/files/rasa-gujarati-700-normal.woff", - "./fonts/google/rasa/files/rasa-latin-700-normal.woff", - "./fonts/google/rasa/files/rasa-latin-ext-700-normal.woff", - "./fonts/google/rasa/files/rasa-vietnamese-700-normal.woff", - "./fonts/google/rasa/files/rasa-gujarati-300-italic.woff2", - "./fonts/google/rasa/files/rasa-all-300-italic.woff", - "./fonts/google/rasa/files/rasa-vietnamese-300-italic.woff2", - "./fonts/google/rasa/files/rasa-latin-ext-300-italic.woff2", - "./fonts/google/rasa/files/rasa-latin-300-italic.woff2", - "./fonts/google/rasa/files/rasa-gujarati-300-normal.woff2", - "./fonts/google/rasa/files/rasa-all-300-normal.woff", - "./fonts/google/rasa/files/rasa-vietnamese-300-normal.woff2", - "./fonts/google/rasa/files/rasa-latin-ext-300-normal.woff2", - "./fonts/google/rasa/files/rasa-latin-300-normal.woff2", - "./fonts/google/rasa/files/rasa-gujarati-400-italic.woff2", - "./fonts/google/rasa/files/rasa-all-400-italic.woff", - "./fonts/google/rasa/files/rasa-vietnamese-400-italic.woff2", - "./fonts/google/rasa/files/rasa-latin-ext-400-italic.woff2", - "./fonts/google/rasa/files/rasa-latin-400-italic.woff2", - "./fonts/google/rasa/files/rasa-gujarati-400-normal.woff2", - "./fonts/google/rasa/files/rasa-all-400-normal.woff", - "./fonts/google/rasa/files/rasa-vietnamese-400-normal.woff2", - "./fonts/google/rasa/files/rasa-latin-ext-400-normal.woff2", - "./fonts/google/rasa/files/rasa-latin-400-normal.woff2", - "./fonts/google/rasa/files/rasa-gujarati-500-italic.woff2", - "./fonts/google/rasa/files/rasa-all-500-italic.woff", - "./fonts/google/rasa/files/rasa-vietnamese-500-italic.woff2", - "./fonts/google/rasa/files/rasa-latin-ext-500-italic.woff2", - "./fonts/google/rasa/files/rasa-latin-500-italic.woff2", - "./fonts/google/rasa/files/rasa-gujarati-500-normal.woff2", - "./fonts/google/rasa/files/rasa-all-500-normal.woff", - "./fonts/google/rasa/files/rasa-vietnamese-500-normal.woff2", - "./fonts/google/rasa/files/rasa-latin-ext-500-normal.woff2", - "./fonts/google/rasa/files/rasa-latin-500-normal.woff2", - "./fonts/google/rasa/files/rasa-gujarati-600-italic.woff2", - "./fonts/google/rasa/files/rasa-all-600-italic.woff", - "./fonts/google/rasa/files/rasa-vietnamese-600-italic.woff2", - "./fonts/google/rasa/files/rasa-latin-ext-600-italic.woff2", - "./fonts/google/rasa/files/rasa-latin-600-italic.woff2", - "./fonts/google/rasa/files/rasa-gujarati-600-normal.woff2", - "./fonts/google/rasa/files/rasa-all-600-normal.woff", - "./fonts/google/rasa/files/rasa-vietnamese-600-normal.woff2", - "./fonts/google/rasa/files/rasa-latin-ext-600-normal.woff2", - "./fonts/google/rasa/files/rasa-latin-600-normal.woff2", - "./fonts/google/rasa/files/rasa-gujarati-700-italic.woff2", - "./fonts/google/rasa/files/rasa-all-700-italic.woff", - "./fonts/google/rasa/files/rasa-vietnamese-700-italic.woff2", - "./fonts/google/rasa/files/rasa-latin-ext-700-italic.woff2", - "./fonts/google/rasa/files/rasa-latin-700-italic.woff2", - "./fonts/google/rasa/files/rasa-gujarati-700-normal.woff2", - "./fonts/google/rasa/files/rasa-all-700-normal.woff", - "./fonts/google/rasa/files/rasa-vietnamese-700-normal.woff2", - "./fonts/google/rasa/files/rasa-latin-ext-700-normal.woff2", - "./fonts/google/rasa/files/rasa-latin-700-normal.woff2", - "./fonts/google/rasa/files/rasa-gujarati-variable-wghtOnly-normal.woff2", - "./fonts/google/rasa/files/rasa-vietnamese-variable-wghtOnly-normal.woff2", - "./fonts/google/rasa/files/rasa-latin-ext-variable-wghtOnly-normal.woff2", - "./fonts/google/rasa/files/rasa-latin-variable-wghtOnly-normal.woff2", - "./fonts/google/rasa/files/rasa-gujarati-variable-wghtOnly-italic.woff2", - "./fonts/google/rasa/files/rasa-vietnamese-variable-wghtOnly-italic.woff2", - "./fonts/google/rasa/files/rasa-latin-ext-variable-wghtOnly-italic.woff2", - "./fonts/google/rasa/files/rasa-latin-variable-wghtOnly-italic.woff2" -] diff --git a/web/static/fonts/rasa/files/rasa-all-300-italic.woff b/web/static/fonts/rasa/files/rasa-all-300-italic.woff deleted file mode 100644 index 04f98a16..00000000 Binary files a/web/static/fonts/rasa/files/rasa-all-300-italic.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-all-300-normal.woff b/web/static/fonts/rasa/files/rasa-all-300-normal.woff deleted file mode 100644 index 9f40d9a8..00000000 Binary files a/web/static/fonts/rasa/files/rasa-all-300-normal.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-all-400-italic.woff b/web/static/fonts/rasa/files/rasa-all-400-italic.woff deleted file mode 100644 index 825127dc..00000000 Binary files a/web/static/fonts/rasa/files/rasa-all-400-italic.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-all-400-normal.woff b/web/static/fonts/rasa/files/rasa-all-400-normal.woff deleted file mode 100644 index 2b186c81..00000000 Binary files a/web/static/fonts/rasa/files/rasa-all-400-normal.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-all-500-italic.woff b/web/static/fonts/rasa/files/rasa-all-500-italic.woff deleted file mode 100644 index bd7b5007..00000000 Binary files a/web/static/fonts/rasa/files/rasa-all-500-italic.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-all-500-normal.woff b/web/static/fonts/rasa/files/rasa-all-500-normal.woff deleted file mode 100644 index f659f7fc..00000000 Binary files a/web/static/fonts/rasa/files/rasa-all-500-normal.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-all-600-italic.woff b/web/static/fonts/rasa/files/rasa-all-600-italic.woff deleted file mode 100644 index d0f2c37f..00000000 Binary files a/web/static/fonts/rasa/files/rasa-all-600-italic.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-all-600-normal.woff b/web/static/fonts/rasa/files/rasa-all-600-normal.woff deleted file mode 100644 index b14d21ee..00000000 Binary files a/web/static/fonts/rasa/files/rasa-all-600-normal.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-all-700-italic.woff b/web/static/fonts/rasa/files/rasa-all-700-italic.woff deleted file mode 100644 index dedddfe3..00000000 Binary files a/web/static/fonts/rasa/files/rasa-all-700-italic.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-all-700-normal.woff b/web/static/fonts/rasa/files/rasa-all-700-normal.woff deleted file mode 100644 index a6fe2a3c..00000000 Binary files a/web/static/fonts/rasa/files/rasa-all-700-normal.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-300-italic.woff b/web/static/fonts/rasa/files/rasa-gujarati-300-italic.woff deleted file mode 100644 index afdba6b5..00000000 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-300-italic.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-300-italic.woff2 b/web/static/fonts/rasa/files/rasa-gujarati-300-italic.woff2 deleted file mode 100644 index a7dd76d3..00000000 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-300-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-300-normal.woff b/web/static/fonts/rasa/files/rasa-gujarati-300-normal.woff deleted file mode 100644 index 85853b87..00000000 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-300-normal.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-300-normal.woff2 b/web/static/fonts/rasa/files/rasa-gujarati-300-normal.woff2 deleted file mode 100644 index 3a8fcd9d..00000000 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-300-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-400-italic.woff b/web/static/fonts/rasa/files/rasa-gujarati-400-italic.woff deleted file mode 100644 index 6e25866b..00000000 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-400-italic.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-400-italic.woff2 b/web/static/fonts/rasa/files/rasa-gujarati-400-italic.woff2 deleted file mode 100644 index 1f1acd94..00000000 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-400-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-400-normal.woff b/web/static/fonts/rasa/files/rasa-gujarati-400-normal.woff deleted file mode 100644 index f29a56be..00000000 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-400-normal.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-400-normal.woff2 b/web/static/fonts/rasa/files/rasa-gujarati-400-normal.woff2 deleted file mode 100644 index f327220d..00000000 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-400-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-500-italic.woff b/web/static/fonts/rasa/files/rasa-gujarati-500-italic.woff deleted file mode 100644 index 66cf9c70..00000000 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-500-italic.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-500-italic.woff2 b/web/static/fonts/rasa/files/rasa-gujarati-500-italic.woff2 deleted file mode 100644 index 87ac5d19..00000000 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-500-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-500-normal.woff b/web/static/fonts/rasa/files/rasa-gujarati-500-normal.woff deleted file mode 100644 index f1f9cc30..00000000 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-500-normal.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-500-normal.woff2 b/web/static/fonts/rasa/files/rasa-gujarati-500-normal.woff2 deleted file mode 100644 index 7154ba75..00000000 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-500-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-600-italic.woff b/web/static/fonts/rasa/files/rasa-gujarati-600-italic.woff deleted file mode 100644 index 0ced6470..00000000 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-600-italic.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-600-italic.woff2 b/web/static/fonts/rasa/files/rasa-gujarati-600-italic.woff2 deleted file mode 100644 index 93c9e5d3..00000000 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-600-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-600-normal.woff b/web/static/fonts/rasa/files/rasa-gujarati-600-normal.woff deleted file mode 100644 index 98de4bf1..00000000 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-600-normal.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-600-normal.woff2 b/web/static/fonts/rasa/files/rasa-gujarati-600-normal.woff2 deleted file mode 100644 index 0919b20c..00000000 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-600-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-700-italic.woff b/web/static/fonts/rasa/files/rasa-gujarati-700-italic.woff deleted file mode 100644 index b158aa07..00000000 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-700-italic.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-700-italic.woff2 b/web/static/fonts/rasa/files/rasa-gujarati-700-italic.woff2 deleted file mode 100644 index 17a7982e..00000000 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-700-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-700-normal.woff b/web/static/fonts/rasa/files/rasa-gujarati-700-normal.woff deleted file mode 100644 index aa35a0ed..00000000 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-700-normal.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-700-normal.woff2 b/web/static/fonts/rasa/files/rasa-gujarati-700-normal.woff2 deleted file mode 100644 index 45e5a232..00000000 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-700-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-variable-full-italic.woff2 b/web/static/fonts/rasa/files/rasa-gujarati-variable-full-italic.woff2 deleted file mode 100644 index d466a2a1..00000000 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-variable-full-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-variable-full-normal.woff2 b/web/static/fonts/rasa/files/rasa-gujarati-variable-full-normal.woff2 deleted file mode 100644 index 6a63dd52..00000000 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-variable-full-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-variable-wghtOnly-italic.woff2 b/web/static/fonts/rasa/files/rasa-gujarati-variable-wghtOnly-italic.woff2 deleted file mode 100644 index d466a2a1..00000000 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-variable-wghtOnly-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-variable-wghtOnly-normal.woff2 b/web/static/fonts/rasa/files/rasa-gujarati-variable-wghtOnly-normal.woff2 deleted file mode 100644 index 6a63dd52..00000000 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-variable-wghtOnly-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-wght-italic.woff2 b/web/static/fonts/rasa/files/rasa-gujarati-wght-italic.woff2 new file mode 100644 index 00000000..779beb7c Binary files /dev/null and b/web/static/fonts/rasa/files/rasa-gujarati-wght-italic.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-wght-normal.woff2 b/web/static/fonts/rasa/files/rasa-gujarati-wght-normal.woff2 new file mode 100644 index 00000000..ac35f564 Binary files /dev/null and b/web/static/fonts/rasa/files/rasa-gujarati-wght-normal.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-latin-300-italic.woff b/web/static/fonts/rasa/files/rasa-latin-300-italic.woff deleted file mode 100644 index a5166364..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-300-italic.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-300-italic.woff2 b/web/static/fonts/rasa/files/rasa-latin-300-italic.woff2 deleted file mode 100644 index ef2dce6e..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-300-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-300-normal.woff b/web/static/fonts/rasa/files/rasa-latin-300-normal.woff deleted file mode 100644 index 84d80025..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-300-normal.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-300-normal.woff2 b/web/static/fonts/rasa/files/rasa-latin-300-normal.woff2 deleted file mode 100644 index e435acd9..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-300-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-400-italic.woff b/web/static/fonts/rasa/files/rasa-latin-400-italic.woff deleted file mode 100644 index 3b3eb846..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-400-italic.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-400-italic.woff2 b/web/static/fonts/rasa/files/rasa-latin-400-italic.woff2 deleted file mode 100644 index c762ac19..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-400-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-400-normal.woff b/web/static/fonts/rasa/files/rasa-latin-400-normal.woff deleted file mode 100644 index 2049a57d..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-400-normal.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-400-normal.woff2 b/web/static/fonts/rasa/files/rasa-latin-400-normal.woff2 deleted file mode 100644 index 1685742e..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-400-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-500-italic.woff b/web/static/fonts/rasa/files/rasa-latin-500-italic.woff deleted file mode 100644 index 6e8ac351..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-500-italic.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-500-italic.woff2 b/web/static/fonts/rasa/files/rasa-latin-500-italic.woff2 deleted file mode 100644 index a8cd687d..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-500-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-500-normal.woff b/web/static/fonts/rasa/files/rasa-latin-500-normal.woff deleted file mode 100644 index 8afe4d73..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-500-normal.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-500-normal.woff2 b/web/static/fonts/rasa/files/rasa-latin-500-normal.woff2 deleted file mode 100644 index 717cae5e..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-500-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-600-italic.woff b/web/static/fonts/rasa/files/rasa-latin-600-italic.woff deleted file mode 100644 index 0eb880b6..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-600-italic.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-600-italic.woff2 b/web/static/fonts/rasa/files/rasa-latin-600-italic.woff2 deleted file mode 100644 index 148baaf2..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-600-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-600-normal.woff b/web/static/fonts/rasa/files/rasa-latin-600-normal.woff deleted file mode 100644 index dbbf0a24..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-600-normal.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-600-normal.woff2 b/web/static/fonts/rasa/files/rasa-latin-600-normal.woff2 deleted file mode 100644 index 16298a38..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-600-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-700-italic.woff b/web/static/fonts/rasa/files/rasa-latin-700-italic.woff deleted file mode 100644 index a06eb36b..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-700-italic.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-700-italic.woff2 b/web/static/fonts/rasa/files/rasa-latin-700-italic.woff2 deleted file mode 100644 index 8501886f..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-700-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-700-normal.woff b/web/static/fonts/rasa/files/rasa-latin-700-normal.woff deleted file mode 100644 index 9d5da2c9..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-700-normal.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-700-normal.woff2 b/web/static/fonts/rasa/files/rasa-latin-700-normal.woff2 deleted file mode 100644 index b8a1018d..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-700-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-300-italic.woff b/web/static/fonts/rasa/files/rasa-latin-ext-300-italic.woff deleted file mode 100644 index 4a45ffc0..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-300-italic.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-300-italic.woff2 b/web/static/fonts/rasa/files/rasa-latin-ext-300-italic.woff2 deleted file mode 100644 index 64a6d0b2..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-300-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-300-normal.woff b/web/static/fonts/rasa/files/rasa-latin-ext-300-normal.woff deleted file mode 100644 index f9159b9c..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-300-normal.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-300-normal.woff2 b/web/static/fonts/rasa/files/rasa-latin-ext-300-normal.woff2 deleted file mode 100644 index ad817dc1..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-300-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-400-italic.woff b/web/static/fonts/rasa/files/rasa-latin-ext-400-italic.woff deleted file mode 100644 index 4396bc5b..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-400-italic.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-400-italic.woff2 b/web/static/fonts/rasa/files/rasa-latin-ext-400-italic.woff2 deleted file mode 100644 index 4788f1dc..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-400-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-400-normal.woff b/web/static/fonts/rasa/files/rasa-latin-ext-400-normal.woff deleted file mode 100644 index fbebf6a4..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-400-normal.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-400-normal.woff2 b/web/static/fonts/rasa/files/rasa-latin-ext-400-normal.woff2 deleted file mode 100644 index 4811e8bd..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-400-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-500-italic.woff b/web/static/fonts/rasa/files/rasa-latin-ext-500-italic.woff deleted file mode 100644 index 7745d901..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-500-italic.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-500-italic.woff2 b/web/static/fonts/rasa/files/rasa-latin-ext-500-italic.woff2 deleted file mode 100644 index e232b0ec..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-500-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-500-normal.woff b/web/static/fonts/rasa/files/rasa-latin-ext-500-normal.woff deleted file mode 100644 index ada25205..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-500-normal.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-500-normal.woff2 b/web/static/fonts/rasa/files/rasa-latin-ext-500-normal.woff2 deleted file mode 100644 index 9cef214d..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-500-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-600-italic.woff b/web/static/fonts/rasa/files/rasa-latin-ext-600-italic.woff deleted file mode 100644 index 9be62af6..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-600-italic.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-600-italic.woff2 b/web/static/fonts/rasa/files/rasa-latin-ext-600-italic.woff2 deleted file mode 100644 index ed56c8f1..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-600-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-600-normal.woff b/web/static/fonts/rasa/files/rasa-latin-ext-600-normal.woff deleted file mode 100644 index fdd35a60..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-600-normal.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-600-normal.woff2 b/web/static/fonts/rasa/files/rasa-latin-ext-600-normal.woff2 deleted file mode 100644 index 29ffcff2..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-600-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-700-italic.woff b/web/static/fonts/rasa/files/rasa-latin-ext-700-italic.woff deleted file mode 100644 index 106de17e..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-700-italic.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-700-italic.woff2 b/web/static/fonts/rasa/files/rasa-latin-ext-700-italic.woff2 deleted file mode 100644 index 1553a454..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-700-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-700-normal.woff b/web/static/fonts/rasa/files/rasa-latin-ext-700-normal.woff deleted file mode 100644 index f6b1429b..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-700-normal.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-700-normal.woff2 b/web/static/fonts/rasa/files/rasa-latin-ext-700-normal.woff2 deleted file mode 100644 index c8ef8f9c..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-700-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-variable-full-italic.woff2 b/web/static/fonts/rasa/files/rasa-latin-ext-variable-full-italic.woff2 deleted file mode 100644 index 8a1bdc49..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-variable-full-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-variable-full-normal.woff2 b/web/static/fonts/rasa/files/rasa-latin-ext-variable-full-normal.woff2 deleted file mode 100644 index 85b975e3..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-variable-full-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-variable-wghtOnly-italic.woff2 b/web/static/fonts/rasa/files/rasa-latin-ext-variable-wghtOnly-italic.woff2 deleted file mode 100644 index 8a1bdc49..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-variable-wghtOnly-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-variable-wghtOnly-normal.woff2 b/web/static/fonts/rasa/files/rasa-latin-ext-variable-wghtOnly-normal.woff2 deleted file mode 100644 index 85b975e3..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-variable-wghtOnly-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-wght-italic.woff2 b/web/static/fonts/rasa/files/rasa-latin-ext-wght-italic.woff2 new file mode 100644 index 00000000..0797930b Binary files /dev/null and b/web/static/fonts/rasa/files/rasa-latin-ext-wght-italic.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-wght-normal.woff2 b/web/static/fonts/rasa/files/rasa-latin-ext-wght-normal.woff2 new file mode 100644 index 00000000..2bdbc524 Binary files /dev/null and b/web/static/fonts/rasa/files/rasa-latin-ext-wght-normal.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-latin-variable-full-italic.woff2 b/web/static/fonts/rasa/files/rasa-latin-variable-full-italic.woff2 deleted file mode 100644 index f96a9935..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-variable-full-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-variable-full-normal.woff2 b/web/static/fonts/rasa/files/rasa-latin-variable-full-normal.woff2 deleted file mode 100644 index 2b5046b2..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-variable-full-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-variable-wghtOnly-italic.woff2 b/web/static/fonts/rasa/files/rasa-latin-variable-wghtOnly-italic.woff2 deleted file mode 100644 index f96a9935..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-variable-wghtOnly-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-variable-wghtOnly-normal.woff2 b/web/static/fonts/rasa/files/rasa-latin-variable-wghtOnly-normal.woff2 deleted file mode 100644 index 2b5046b2..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-variable-wghtOnly-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-wght-italic.woff2 b/web/static/fonts/rasa/files/rasa-latin-wght-italic.woff2 new file mode 100644 index 00000000..7985e729 Binary files /dev/null and b/web/static/fonts/rasa/files/rasa-latin-wght-italic.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-latin-wght-normal.woff2 b/web/static/fonts/rasa/files/rasa-latin-wght-normal.woff2 new file mode 100644 index 00000000..4fce6cfe Binary files /dev/null and b/web/static/fonts/rasa/files/rasa-latin-wght-normal.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-300-italic.woff b/web/static/fonts/rasa/files/rasa-vietnamese-300-italic.woff deleted file mode 100644 index 18468c23..00000000 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-300-italic.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-300-italic.woff2 b/web/static/fonts/rasa/files/rasa-vietnamese-300-italic.woff2 deleted file mode 100644 index b6a56be9..00000000 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-300-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-300-normal.woff b/web/static/fonts/rasa/files/rasa-vietnamese-300-normal.woff deleted file mode 100644 index 13adce02..00000000 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-300-normal.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-300-normal.woff2 b/web/static/fonts/rasa/files/rasa-vietnamese-300-normal.woff2 deleted file mode 100644 index a5898fed..00000000 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-300-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-400-italic.woff b/web/static/fonts/rasa/files/rasa-vietnamese-400-italic.woff deleted file mode 100644 index 4f788084..00000000 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-400-italic.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-400-italic.woff2 b/web/static/fonts/rasa/files/rasa-vietnamese-400-italic.woff2 deleted file mode 100644 index 551610f3..00000000 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-400-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-400-normal.woff b/web/static/fonts/rasa/files/rasa-vietnamese-400-normal.woff deleted file mode 100644 index 6621d0c4..00000000 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-400-normal.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-400-normal.woff2 b/web/static/fonts/rasa/files/rasa-vietnamese-400-normal.woff2 deleted file mode 100644 index b229ef43..00000000 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-400-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-500-italic.woff b/web/static/fonts/rasa/files/rasa-vietnamese-500-italic.woff deleted file mode 100644 index f5646f95..00000000 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-500-italic.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-500-italic.woff2 b/web/static/fonts/rasa/files/rasa-vietnamese-500-italic.woff2 deleted file mode 100644 index d9b8042e..00000000 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-500-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-500-normal.woff b/web/static/fonts/rasa/files/rasa-vietnamese-500-normal.woff deleted file mode 100644 index 2843439e..00000000 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-500-normal.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-500-normal.woff2 b/web/static/fonts/rasa/files/rasa-vietnamese-500-normal.woff2 deleted file mode 100644 index a73cedd9..00000000 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-500-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-600-italic.woff b/web/static/fonts/rasa/files/rasa-vietnamese-600-italic.woff deleted file mode 100644 index 9d1630e2..00000000 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-600-italic.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-600-italic.woff2 b/web/static/fonts/rasa/files/rasa-vietnamese-600-italic.woff2 deleted file mode 100644 index f558d42a..00000000 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-600-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-600-normal.woff b/web/static/fonts/rasa/files/rasa-vietnamese-600-normal.woff deleted file mode 100644 index cd28b296..00000000 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-600-normal.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-600-normal.woff2 b/web/static/fonts/rasa/files/rasa-vietnamese-600-normal.woff2 deleted file mode 100644 index 7db47e76..00000000 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-600-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-700-italic.woff b/web/static/fonts/rasa/files/rasa-vietnamese-700-italic.woff deleted file mode 100644 index c7721c0e..00000000 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-700-italic.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-700-italic.woff2 b/web/static/fonts/rasa/files/rasa-vietnamese-700-italic.woff2 deleted file mode 100644 index 0d004930..00000000 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-700-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-700-normal.woff b/web/static/fonts/rasa/files/rasa-vietnamese-700-normal.woff deleted file mode 100644 index f956340c..00000000 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-700-normal.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-700-normal.woff2 b/web/static/fonts/rasa/files/rasa-vietnamese-700-normal.woff2 deleted file mode 100644 index db0e194b..00000000 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-700-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-variable-full-italic.woff2 b/web/static/fonts/rasa/files/rasa-vietnamese-variable-full-italic.woff2 deleted file mode 100644 index 8287b330..00000000 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-variable-full-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-variable-full-normal.woff2 b/web/static/fonts/rasa/files/rasa-vietnamese-variable-full-normal.woff2 deleted file mode 100644 index 2d3049ac..00000000 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-variable-full-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-variable-wghtOnly-italic.woff2 b/web/static/fonts/rasa/files/rasa-vietnamese-variable-wghtOnly-italic.woff2 deleted file mode 100644 index 8287b330..00000000 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-variable-wghtOnly-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-variable-wghtOnly-normal.woff2 b/web/static/fonts/rasa/files/rasa-vietnamese-variable-wghtOnly-normal.woff2 deleted file mode 100644 index 2d3049ac..00000000 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-variable-wghtOnly-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-wght-italic.woff2 b/web/static/fonts/rasa/files/rasa-vietnamese-wght-italic.woff2 new file mode 100644 index 00000000..6ab8906a Binary files /dev/null and b/web/static/fonts/rasa/files/rasa-vietnamese-wght-italic.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-wght-normal.woff2 b/web/static/fonts/rasa/files/rasa-vietnamese-wght-normal.woff2 new file mode 100644 index 00000000..ad633d46 Binary files /dev/null and b/web/static/fonts/rasa/files/rasa-vietnamese-wght-normal.woff2 differ diff --git a/web/static/fonts/rasa/gujarati-300-italic.css b/web/static/fonts/rasa/gujarati-300-italic.css deleted file mode 100644 index 9c4c5412..00000000 --- a/web/static/fonts/rasa/gujarati-300-italic.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-gujarati-300-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/rasa/files/rasa-gujarati-300-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-300-italic.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/gujarati-300.css b/web/static/fonts/rasa/gujarati-300.css deleted file mode 100644 index 5d5348e1..00000000 --- a/web/static/fonts/rasa/gujarati-300.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-gujarati-300-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/rasa/files/rasa-gujarati-300-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-300-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/gujarati-400-italic.css b/web/static/fonts/rasa/gujarati-400-italic.css deleted file mode 100644 index a4121553..00000000 --- a/web/static/fonts/rasa/gujarati-400-italic.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-gujarati-400-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/rasa/files/rasa-gujarati-400-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-400-italic.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/gujarati-400.css b/web/static/fonts/rasa/gujarati-400.css deleted file mode 100644 index a1ddf863..00000000 --- a/web/static/fonts/rasa/gujarati-400.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-gujarati-400-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/rasa/files/rasa-gujarati-400-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-400-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/gujarati-500-italic.css b/web/static/fonts/rasa/gujarati-500-italic.css deleted file mode 100644 index 97905aea..00000000 --- a/web/static/fonts/rasa/gujarati-500-italic.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-gujarati-500-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/rasa/files/rasa-gujarati-500-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-500-italic.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/gujarati-500.css b/web/static/fonts/rasa/gujarati-500.css deleted file mode 100644 index cf863684..00000000 --- a/web/static/fonts/rasa/gujarati-500.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-gujarati-500-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/rasa/files/rasa-gujarati-500-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-500-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/gujarati-600-italic.css b/web/static/fonts/rasa/gujarati-600-italic.css deleted file mode 100644 index 1cd1800a..00000000 --- a/web/static/fonts/rasa/gujarati-600-italic.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-gujarati-600-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/rasa/files/rasa-gujarati-600-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-600-italic.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/gujarati-600.css b/web/static/fonts/rasa/gujarati-600.css deleted file mode 100644 index e6176e51..00000000 --- a/web/static/fonts/rasa/gujarati-600.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-gujarati-600-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/rasa/files/rasa-gujarati-600-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-600-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/gujarati-700-italic.css b/web/static/fonts/rasa/gujarati-700-italic.css deleted file mode 100644 index cd3bbee9..00000000 --- a/web/static/fonts/rasa/gujarati-700-italic.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-gujarati-700-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/rasa/files/rasa-gujarati-700-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-700-italic.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/gujarati-700.css b/web/static/fonts/rasa/gujarati-700.css deleted file mode 100644 index 67373ca6..00000000 --- a/web/static/fonts/rasa/gujarati-700.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-gujarati-700-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/rasa/files/rasa-gujarati-700-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-700-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/gujarati-italic.css b/web/static/fonts/rasa/gujarati-italic.css deleted file mode 100644 index 915de434..00000000 --- a/web/static/fonts/rasa/gujarati-italic.css +++ /dev/null @@ -1,44 +0,0 @@ -/* rasa-gujarati-300-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/rasa/files/rasa-gujarati-300-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-300-italic.woff) format('woff'); -} - -/* rasa-gujarati-400-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/rasa/files/rasa-gujarati-400-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-400-italic.woff) format('woff'); -} - -/* rasa-gujarati-500-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/rasa/files/rasa-gujarati-500-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-500-italic.woff) format('woff'); -} - -/* rasa-gujarati-600-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/rasa/files/rasa-gujarati-600-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-600-italic.woff) format('woff'); -} - -/* rasa-gujarati-700-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/rasa/files/rasa-gujarati-700-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-700-italic.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/gujarati.css b/web/static/fonts/rasa/gujarati.css deleted file mode 100644 index bd456491..00000000 --- a/web/static/fonts/rasa/gujarati.css +++ /dev/null @@ -1,44 +0,0 @@ -/* rasa-gujarati-300-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/rasa/files/rasa-gujarati-300-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-300-normal.woff) format('woff'); -} - -/* rasa-gujarati-400-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/rasa/files/rasa-gujarati-400-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-400-normal.woff) format('woff'); -} - -/* rasa-gujarati-500-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/rasa/files/rasa-gujarati-500-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-500-normal.woff) format('woff'); -} - -/* rasa-gujarati-600-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/rasa/files/rasa-gujarati-600-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-600-normal.woff) format('woff'); -} - -/* rasa-gujarati-700-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/rasa/files/rasa-gujarati-700-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-700-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/index.css b/web/static/fonts/rasa/index.css index b0e5b63a..ab3f4399 100644 --- a/web/static/fonts/rasa/index.css +++ b/web/static/fonts/rasa/index.css @@ -1,39 +1,39 @@ -/* rasa-gujarati-400-normal */ +/* rasa-gujarati-wght-normal */ @font-face { - font-family: 'Rasa'; + font-family: 'Rasa Variable'; font-style: normal; font-display: swap; - font-weight: 400; - src: url(/static/fonts/rasa/files/rasa-gujarati-400-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-400-normal.woff) format('woff'); - unicode-range: U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; + font-weight: 300 700; + src: url(/static/fonts/rasa/files/rasa-gujarati-wght-normal.woff2) format('woff2-variations'); + unicode-range: U+0951-0952,U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; } -/* rasa-vietnamese-400-normal */ +/* rasa-vietnamese-wght-normal */ @font-face { - font-family: 'Rasa'; + font-family: 'Rasa Variable'; font-style: normal; font-display: swap; - font-weight: 400; - src: url(/static/fonts/rasa/files/rasa-vietnamese-400-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-vietnamese-400-normal.woff) format('woff'); + font-weight: 300 700; + src: url(/static/fonts/rasa/files/rasa-vietnamese-wght-normal.woff2) format('woff2-variations'); unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; } -/* rasa-latin-ext-400-normal */ +/* rasa-latin-ext-wght-normal */ @font-face { - font-family: 'Rasa'; + font-family: 'Rasa Variable'; font-style: normal; font-display: swap; - font-weight: 400; - src: url(/static/fonts/rasa/files/rasa-latin-ext-400-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-400-normal.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; + font-weight: 300 700; + src: url(/static/fonts/rasa/files/rasa-latin-ext-wght-normal.woff2) format('woff2-variations'); + unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; } -/* rasa-latin-400-normal */ +/* rasa-latin-wght-normal */ @font-face { - font-family: 'Rasa'; + font-family: 'Rasa Variable'; font-style: normal; font-display: swap; - font-weight: 400; - src: url(/static/fonts/rasa/files/rasa-latin-400-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-400-normal.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; + font-weight: 300 700; + src: url(/static/fonts/rasa/files/rasa-latin-wght-normal.woff2) format('woff2-variations'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; } \ No newline at end of file diff --git a/web/static/fonts/rasa/latin-300-italic.css b/web/static/fonts/rasa/latin-300-italic.css deleted file mode 100644 index 51eed83b..00000000 --- a/web/static/fonts/rasa/latin-300-italic.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-latin-300-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/rasa/files/rasa-latin-300-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-300-italic.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/latin-300.css b/web/static/fonts/rasa/latin-300.css deleted file mode 100644 index 495f4255..00000000 --- a/web/static/fonts/rasa/latin-300.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-latin-300-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/rasa/files/rasa-latin-300-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-300-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/latin-400-italic.css b/web/static/fonts/rasa/latin-400-italic.css deleted file mode 100644 index bc33f92c..00000000 --- a/web/static/fonts/rasa/latin-400-italic.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-latin-400-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/rasa/files/rasa-latin-400-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-400-italic.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/latin-400.css b/web/static/fonts/rasa/latin-400.css deleted file mode 100644 index 9a0ff284..00000000 --- a/web/static/fonts/rasa/latin-400.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-latin-400-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/rasa/files/rasa-latin-400-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-400-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/latin-500-italic.css b/web/static/fonts/rasa/latin-500-italic.css deleted file mode 100644 index dfff6408..00000000 --- a/web/static/fonts/rasa/latin-500-italic.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-latin-500-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/rasa/files/rasa-latin-500-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-500-italic.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/latin-500.css b/web/static/fonts/rasa/latin-500.css deleted file mode 100644 index f488608c..00000000 --- a/web/static/fonts/rasa/latin-500.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-latin-500-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/rasa/files/rasa-latin-500-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-500-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/latin-600-italic.css b/web/static/fonts/rasa/latin-600-italic.css deleted file mode 100644 index 90251a23..00000000 --- a/web/static/fonts/rasa/latin-600-italic.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-latin-600-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/rasa/files/rasa-latin-600-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-600-italic.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/latin-600.css b/web/static/fonts/rasa/latin-600.css deleted file mode 100644 index 452123a1..00000000 --- a/web/static/fonts/rasa/latin-600.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-latin-600-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/rasa/files/rasa-latin-600-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-600-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/latin-700-italic.css b/web/static/fonts/rasa/latin-700-italic.css deleted file mode 100644 index ad820e78..00000000 --- a/web/static/fonts/rasa/latin-700-italic.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-latin-700-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/rasa/files/rasa-latin-700-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-700-italic.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/latin-700.css b/web/static/fonts/rasa/latin-700.css deleted file mode 100644 index e7577fce..00000000 --- a/web/static/fonts/rasa/latin-700.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-latin-700-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/rasa/files/rasa-latin-700-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-700-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/latin-ext-300-italic.css b/web/static/fonts/rasa/latin-ext-300-italic.css deleted file mode 100644 index 6fc61e3a..00000000 --- a/web/static/fonts/rasa/latin-ext-300-italic.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-latin-ext-300-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/rasa/files/rasa-latin-ext-300-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-300-italic.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/latin-ext-300.css b/web/static/fonts/rasa/latin-ext-300.css deleted file mode 100644 index 63c6d776..00000000 --- a/web/static/fonts/rasa/latin-ext-300.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-latin-ext-300-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/rasa/files/rasa-latin-ext-300-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-300-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/latin-ext-400-italic.css b/web/static/fonts/rasa/latin-ext-400-italic.css deleted file mode 100644 index 11be1af3..00000000 --- a/web/static/fonts/rasa/latin-ext-400-italic.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-latin-ext-400-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/rasa/files/rasa-latin-ext-400-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-400-italic.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/latin-ext-400.css b/web/static/fonts/rasa/latin-ext-400.css deleted file mode 100644 index 45b6af65..00000000 --- a/web/static/fonts/rasa/latin-ext-400.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-latin-ext-400-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/rasa/files/rasa-latin-ext-400-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-400-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/latin-ext-500-italic.css b/web/static/fonts/rasa/latin-ext-500-italic.css deleted file mode 100644 index 80434cfe..00000000 --- a/web/static/fonts/rasa/latin-ext-500-italic.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-latin-ext-500-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/rasa/files/rasa-latin-ext-500-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-500-italic.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/latin-ext-500.css b/web/static/fonts/rasa/latin-ext-500.css deleted file mode 100644 index eb01cb93..00000000 --- a/web/static/fonts/rasa/latin-ext-500.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-latin-ext-500-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/rasa/files/rasa-latin-ext-500-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-500-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/latin-ext-600-italic.css b/web/static/fonts/rasa/latin-ext-600-italic.css deleted file mode 100644 index 135abdec..00000000 --- a/web/static/fonts/rasa/latin-ext-600-italic.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-latin-ext-600-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/rasa/files/rasa-latin-ext-600-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-600-italic.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/latin-ext-600.css b/web/static/fonts/rasa/latin-ext-600.css deleted file mode 100644 index 3a51f2db..00000000 --- a/web/static/fonts/rasa/latin-ext-600.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-latin-ext-600-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/rasa/files/rasa-latin-ext-600-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-600-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/latin-ext-700-italic.css b/web/static/fonts/rasa/latin-ext-700-italic.css deleted file mode 100644 index 871a03f8..00000000 --- a/web/static/fonts/rasa/latin-ext-700-italic.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-latin-ext-700-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/rasa/files/rasa-latin-ext-700-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-700-italic.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/latin-ext-700.css b/web/static/fonts/rasa/latin-ext-700.css deleted file mode 100644 index 0a6721ef..00000000 --- a/web/static/fonts/rasa/latin-ext-700.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-latin-ext-700-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/rasa/files/rasa-latin-ext-700-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-700-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/latin-ext-italic.css b/web/static/fonts/rasa/latin-ext-italic.css deleted file mode 100644 index 0ac43407..00000000 --- a/web/static/fonts/rasa/latin-ext-italic.css +++ /dev/null @@ -1,44 +0,0 @@ -/* rasa-latin-ext-300-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/rasa/files/rasa-latin-ext-300-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-300-italic.woff) format('woff'); -} - -/* rasa-latin-ext-400-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/rasa/files/rasa-latin-ext-400-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-400-italic.woff) format('woff'); -} - -/* rasa-latin-ext-500-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/rasa/files/rasa-latin-ext-500-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-500-italic.woff) format('woff'); -} - -/* rasa-latin-ext-600-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/rasa/files/rasa-latin-ext-600-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-600-italic.woff) format('woff'); -} - -/* rasa-latin-ext-700-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/rasa/files/rasa-latin-ext-700-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-700-italic.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/latin-ext.css b/web/static/fonts/rasa/latin-ext.css deleted file mode 100644 index 16b754e0..00000000 --- a/web/static/fonts/rasa/latin-ext.css +++ /dev/null @@ -1,44 +0,0 @@ -/* rasa-latin-ext-300-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/rasa/files/rasa-latin-ext-300-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-300-normal.woff) format('woff'); -} - -/* rasa-latin-ext-400-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/rasa/files/rasa-latin-ext-400-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-400-normal.woff) format('woff'); -} - -/* rasa-latin-ext-500-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/rasa/files/rasa-latin-ext-500-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-500-normal.woff) format('woff'); -} - -/* rasa-latin-ext-600-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/rasa/files/rasa-latin-ext-600-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-600-normal.woff) format('woff'); -} - -/* rasa-latin-ext-700-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/rasa/files/rasa-latin-ext-700-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-700-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/latin-italic.css b/web/static/fonts/rasa/latin-italic.css deleted file mode 100644 index c5f09f01..00000000 --- a/web/static/fonts/rasa/latin-italic.css +++ /dev/null @@ -1,44 +0,0 @@ -/* rasa-latin-300-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/rasa/files/rasa-latin-300-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-300-italic.woff) format('woff'); -} - -/* rasa-latin-400-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/rasa/files/rasa-latin-400-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-400-italic.woff) format('woff'); -} - -/* rasa-latin-500-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/rasa/files/rasa-latin-500-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-500-italic.woff) format('woff'); -} - -/* rasa-latin-600-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/rasa/files/rasa-latin-600-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-600-italic.woff) format('woff'); -} - -/* rasa-latin-700-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/rasa/files/rasa-latin-700-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-700-italic.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/latin.css b/web/static/fonts/rasa/latin.css deleted file mode 100644 index 06a28e89..00000000 --- a/web/static/fonts/rasa/latin.css +++ /dev/null @@ -1,44 +0,0 @@ -/* rasa-latin-300-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/rasa/files/rasa-latin-300-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-300-normal.woff) format('woff'); -} - -/* rasa-latin-400-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/rasa/files/rasa-latin-400-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-400-normal.woff) format('woff'); -} - -/* rasa-latin-500-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/rasa/files/rasa-latin-500-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-500-normal.woff) format('woff'); -} - -/* rasa-latin-600-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/rasa/files/rasa-latin-600-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-600-normal.woff) format('woff'); -} - -/* rasa-latin-700-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/rasa/files/rasa-latin-700-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-700-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/metadata.json b/web/static/fonts/rasa/metadata.json index a439ee9a..0abc79b0 100644 --- a/web/static/fonts/rasa/metadata.json +++ b/web/static/fonts/rasa/metadata.json @@ -9,13 +9,13 @@ "ital": {"default": "0", "min": "0", "max": "1", "step": "1"}, "wght": {"default": "400", "min": "300", "max": "700", "step": "1"} }, - "lastModified": "2023-03-21", - "version": "v19", + "lastModified": "2025-06-02", + "version": "v26", "category": "serif", "license": { "type": "OFL-1.1", "url": "http://scripts.sil.org/OFL", - "attribution": "Copyright 2015 The Yrsa-Rasa Project Authors (https://github.com/rosettatype/yrsa-rasa/)" + "attribution": "Google Inc." }, "source": "https://github.com/google/fonts", "type": "google" diff --git a/web/static/fonts/rasa/package.json b/web/static/fonts/rasa/package.json index 2d0fe9e6..a2f23833 100644 --- a/web/static/fonts/rasa/package.json +++ b/web/static/fonts/rasa/package.json @@ -1,6 +1,6 @@ { - "name": "@fontsource/rasa", - "version": "5.0.3", + "name": "@fontsource-variable/rasa", + "version": "5.2.7", "description": "Self-host the Rasa font in a neatly bundled NPM package.", "main": "index.css", "publishConfig": {"access": "public"}, @@ -18,13 +18,30 @@ "typeface", "variable" ], + "exports": { + ".": {"sass": "./index.css", "default": "./index.css"}, + "./LICENSE": "./LICENSE", + "./*": {"sass": "./*.css", "default": "./*.css"}, + "./*.css": {"sass": "./*.css", "default": "./*.css"}, + "/static/fonts/rasa/files/*": {"sass": "/static/fonts/rasa/files/*", "default": "/static/fonts/rasa/files/*"}, + "/static/fonts/rasa/files/*.woff": {"sass": "/static/fonts/rasa/files/*.woff", "default": "/static/fonts/rasa/files/*.woff"}, + "/static/fonts/rasa/files/*.woff2": { + "sass": "/static/fonts/rasa/files/*.woff2", + "default": "/static/fonts/rasa/files/*.woff2" + }, + "./package.json": "./package.json", + "./metadata.json": "./metadata.json", + "./unicode.json": "./unicode.json", + "./scss": {"sass": "./scss/metadata.scss"} + }, "author": "Google Inc.", "license": "OFL-1.1", "homepage": "https://fontsource.org/fonts/rasa", + "funding": "https://github.com/sponsors/ayuhito", "repository": { "type": "git", - "url": "https://github.com/fontsource/font-files.git", - "directory": "fonts/google/rasa" + "url": "git+https://github.com/fontsource/font-files.git", + "directory": "fonts/variable/rasa" }, - "publishHash": "d06bed800a4e0ec6" + "publishHash": "3e21bb5d0c17b797" } \ No newline at end of file diff --git a/web/static/fonts/rasa/scss/metadata.scss b/web/static/fonts/rasa/scss/metadata.scss index 9254c4f5..c6ca04bc 100644 --- a/web/static/fonts/rasa/scss/metadata.scss +++ b/web/static/fonts/rasa/scss/metadata.scss @@ -1,19 +1,44 @@ -$id: 'rasa' !default; -$family: 'Rasa' !default; -$category: serif !default; -$subsets: (gujarati, latin, latin-ext, vietnamese) !default; -$weights: (300, 400, 500, 600, 700) !default; -$styles: (italic, normal) !default; -$axes: null !default; +$id: 'rasa'; +$family: 'Rasa'; +$category: serif; +$subsets: (gujarati, latin, latin-ext, vietnamese); +$weights: (300, 400, 500, 600, 700); +$styles: (italic, normal); +$axes: ( + ital: ( + default: 0, + min: 0, + max: 1, + step: 1, + ), + wght: ( + default: 400, + min: 300, + max: 700, + step: 1, + ), +); $defaults: ( - subset: latin, - weight: 400, - style: normal, - axis: null, -) !default; + subset: latin, + weight: 400, + style: normal, + axis: wght, +); $unicode: ( - gujarati: (U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839), - vietnamese: (U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB), - latin-ext: (U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF), - latin: (U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD), -) !default; + gujarati: (U+0951-0952,U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839), + vietnamese: (U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB), + latin-ext: (U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF), + latin: (U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD), + ); + +$metadata: ( + id: $id, + family: $family, + category: $category, + subsets: $subsets, + weights: $weights, + styles: $styles, + axes: $axes, + defaults: $defaults, + unicode: $unicode, +) !default; \ No newline at end of file diff --git a/web/static/fonts/rasa/scss/mixins.scss b/web/static/fonts/rasa/scss/mixins.scss index 4d1c6c3a..8388db5a 100644 --- a/web/static/fonts/rasa/scss/mixins.scss +++ b/web/static/fonts/rasa/scss/mixins.scss @@ -6,7 +6,7 @@ @use 'metadata'; -$metadata: meta.module-variables(metadata) !default; +$metadata: metadata.$metadata !default; $directory: null !default; $family: null !default; @@ -34,6 +34,8 @@ $displayVar: null !default; // Deprecated $displayVar: $displayVar ) { + @warn "Importing mixins via the fontsource package is deprecated and will be removed in the next major release. Please use the @fontsource-utils/scss package instead."; + @if $displayVar != null { @warn "$displayVar is deprecated due to the limitation of using css variables in @font-face (https://github.com/fontsource/fontsource/issues/726)."; } @@ -52,7 +54,7 @@ $displayVar: null !default; $subsets: if( $subsets, if($subsets == all, map.get($metadata, subsets), $subsets), - map.get($metadata, defaults, subset) + map.get($metadata, subsets) ); $weights: if( $weights, @@ -72,13 +74,20 @@ $displayVar: null !default; @each $subset in $subsets { @each $unicodeSubset, $unicodeRange in map.get($metadata, unicode) { + // If condition is true, generate faces for the current subset @if ( - ($subset == $unicodeSubset) or - ( - // Is numeric subset - ($subset == map.get($metadata, defaults, subset)) and not - list.index(map.get($metadata, subsets), $unicodeSubset) - ) + // If there is no unicode information for the font or + ($unicodeSubset == null) or + // If the subset match a unicode subset or + ($subset == $unicodeSubset) or + ( + // If $unicodeSubset is a numeric unicode subset + // and current subset exists in the list of font subsets but does not match any unicode subset + // then generate faces for this numeric unicode subset as it is representing part of the current subset + list.index(map.get($metadata, subsets), $subset) and not + map.has-key($metadata, unicode, $subset) and not + list.index(map.get($metadata, subsets), $unicodeSubset) + ) ) { @each $weight in if($axes, null, $weights) { @each $axis in $axes { @@ -87,7 +96,7 @@ $displayVar: null !default; $src: (); @each $format in $formats { - $src: append( + $src: list.append( $src, url('#{$directory}/#{$variant}.#{$format}') format('#{$format}#{if($axis, '-variations', '')}'), diff --git a/web/static/fonts/rasa/unicode.json b/web/static/fonts/rasa/unicode.json index 6852d6c0..59b42902 100644 --- a/web/static/fonts/rasa/unicode.json +++ b/web/static/fonts/rasa/unicode.json @@ -1,6 +1,6 @@ { - "gujarati": "U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839", + "gujarati": "U+0951-0952,U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839", "vietnamese": "U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB", - "latin-ext": "U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF", - "latin": "U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD" + "latin-ext": "U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF", + "latin": "U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD" } \ No newline at end of file diff --git a/web/static/fonts/rasa/variable-full-italic.css b/web/static/fonts/rasa/variable-full-italic.css deleted file mode 100644 index d6077502..00000000 --- a/web/static/fonts/rasa/variable-full-italic.css +++ /dev/null @@ -1,36 +0,0 @@ -/* rasa-gujarati-variable-full-italic */ -@font-face { - font-family: 'RasaVariable'; - font-style: italic; - font-display: swap; - font-weight: 300 700; - src: url('/static/fonts/rasa/files/rasa-gujarati-variable-full-italic.woff2') format('woff2'); - unicode-range: U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; -} -/* rasa-latin-variable-full-italic */ -@font-face { - font-family: 'RasaVariable'; - font-style: italic; - font-display: swap; - font-weight: 300 700; - src: url('/static/fonts/rasa/files/rasa-latin-variable-full-italic.woff2') format('woff2'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; -} -/* rasa-latin-ext-variable-full-italic */ -@font-face { - font-family: 'RasaVariable'; - font-style: italic; - font-display: swap; - font-weight: 300 700; - src: url('/static/fonts/rasa/files/rasa-latin-ext-variable-full-italic.woff2') format('woff2'); - unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; -} -/* rasa-vietnamese-variable-full-italic */ -@font-face { - font-family: 'RasaVariable'; - font-style: italic; - font-display: swap; - font-weight: 300 700; - src: url('/static/fonts/rasa/files/rasa-vietnamese-variable-full-italic.woff2') format('woff2'); - unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB; -} diff --git a/web/static/fonts/rasa/variable-full.css b/web/static/fonts/rasa/variable-full.css deleted file mode 100644 index 36841b9c..00000000 --- a/web/static/fonts/rasa/variable-full.css +++ /dev/null @@ -1,36 +0,0 @@ -/* rasa-gujarati-variable-full-normal */ -@font-face { - font-family: 'RasaVariable'; - font-style: normal; - font-display: swap; - font-weight: 300 700; - src: url('/static/fonts/rasa/files/rasa-gujarati-variable-full-normal.woff2') format('woff2'); - unicode-range: U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; -} -/* rasa-latin-variable-full-normal */ -@font-face { - font-family: 'RasaVariable'; - font-style: normal; - font-display: swap; - font-weight: 300 700; - src: url('/static/fonts/rasa/files/rasa-latin-variable-full-normal.woff2') format('woff2'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; -} -/* rasa-latin-ext-variable-full-normal */ -@font-face { - font-family: 'RasaVariable'; - font-style: normal; - font-display: swap; - font-weight: 300 700; - src: url('/static/fonts/rasa/files/rasa-latin-ext-variable-full-normal.woff2') format('woff2'); - unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; -} -/* rasa-vietnamese-variable-full-normal */ -@font-face { - font-family: 'RasaVariable'; - font-style: normal; - font-display: swap; - font-weight: 300 700; - src: url('/static/fonts/rasa/files/rasa-vietnamese-variable-full-normal.woff2') format('woff2'); - unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB; -} diff --git a/web/static/fonts/rasa/variable-italic.css b/web/static/fonts/rasa/variable-italic.css deleted file mode 100644 index ca4ac9c3..00000000 --- a/web/static/fonts/rasa/variable-italic.css +++ /dev/null @@ -1,36 +0,0 @@ -/* rasa-gujarati-variable-wghtOnly-italic */ -@font-face { - font-family: 'RasaVariable'; - font-style: italic; - font-display: swap; - font-weight: 300 700; - src: url('/static/fonts/rasa/files/rasa-gujarati-variable-wghtOnly-italic.woff2') format('woff2'); - unicode-range: U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; -} -/* rasa-latin-variable-wghtOnly-italic */ -@font-face { - font-family: 'RasaVariable'; - font-style: italic; - font-display: swap; - font-weight: 300 700; - src: url('/static/fonts/rasa/files/rasa-latin-variable-wghtOnly-italic.woff2') format('woff2'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; -} -/* rasa-latin-ext-variable-wghtOnly-italic */ -@font-face { - font-family: 'RasaVariable'; - font-style: italic; - font-display: swap; - font-weight: 300 700; - src: url('/static/fonts/rasa/files/rasa-latin-ext-variable-wghtOnly-italic.woff2') format('woff2'); - unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; -} -/* rasa-vietnamese-variable-wghtOnly-italic */ -@font-face { - font-family: 'RasaVariable'; - font-style: italic; - font-display: swap; - font-weight: 300 700; - src: url('/static/fonts/rasa/files/rasa-vietnamese-variable-wghtOnly-italic.woff2') format('woff2'); - unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB; -} diff --git a/web/static/fonts/rasa/variable.css b/web/static/fonts/rasa/variable.css deleted file mode 100644 index cb40a862..00000000 --- a/web/static/fonts/rasa/variable.css +++ /dev/null @@ -1,36 +0,0 @@ -/* rasa-gujarati-variable-wghtOnly-normal */ -@font-face { - font-family: 'RasaVariable'; - font-style: normal; - font-display: swap; - font-weight: 300 700; - src: url('/static/fonts/rasa/files/rasa-gujarati-variable-wghtOnly-normal.woff2') format('woff2'); - unicode-range: U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; -} -/* rasa-latin-variable-wghtOnly-normal */ -@font-face { - font-family: 'RasaVariable'; - font-style: normal; - font-display: swap; - font-weight: 300 700; - src: url('/static/fonts/rasa/files/rasa-latin-variable-wghtOnly-normal.woff2') format('woff2'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; -} -/* rasa-latin-ext-variable-wghtOnly-normal */ -@font-face { - font-family: 'RasaVariable'; - font-style: normal; - font-display: swap; - font-weight: 300 700; - src: url('/static/fonts/rasa/files/rasa-latin-ext-variable-wghtOnly-normal.woff2') format('woff2'); - unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; -} -/* rasa-vietnamese-variable-wghtOnly-normal */ -@font-face { - font-family: 'RasaVariable'; - font-style: normal; - font-display: swap; - font-weight: 300 700; - src: url('/static/fonts/rasa/files/rasa-vietnamese-variable-wghtOnly-normal.woff2') format('woff2'); - unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB; -} diff --git a/web/static/fonts/rasa/vietnamese-300-italic.css b/web/static/fonts/rasa/vietnamese-300-italic.css deleted file mode 100644 index 0e14a9e5..00000000 --- a/web/static/fonts/rasa/vietnamese-300-italic.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-vietnamese-300-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/rasa/files/rasa-vietnamese-300-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-vietnamese-300-italic.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/vietnamese-300.css b/web/static/fonts/rasa/vietnamese-300.css deleted file mode 100644 index cf56822f..00000000 --- a/web/static/fonts/rasa/vietnamese-300.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-vietnamese-300-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/rasa/files/rasa-vietnamese-300-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-vietnamese-300-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/vietnamese-400-italic.css b/web/static/fonts/rasa/vietnamese-400-italic.css deleted file mode 100644 index 3dfc3caa..00000000 --- a/web/static/fonts/rasa/vietnamese-400-italic.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-vietnamese-400-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/rasa/files/rasa-vietnamese-400-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-vietnamese-400-italic.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/vietnamese-400.css b/web/static/fonts/rasa/vietnamese-400.css deleted file mode 100644 index 70044c40..00000000 --- a/web/static/fonts/rasa/vietnamese-400.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-vietnamese-400-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/rasa/files/rasa-vietnamese-400-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-vietnamese-400-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/vietnamese-500-italic.css b/web/static/fonts/rasa/vietnamese-500-italic.css deleted file mode 100644 index f1bfe1b3..00000000 --- a/web/static/fonts/rasa/vietnamese-500-italic.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-vietnamese-500-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/rasa/files/rasa-vietnamese-500-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-vietnamese-500-italic.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/vietnamese-500.css b/web/static/fonts/rasa/vietnamese-500.css deleted file mode 100644 index cd72e3a0..00000000 --- a/web/static/fonts/rasa/vietnamese-500.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-vietnamese-500-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/rasa/files/rasa-vietnamese-500-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-vietnamese-500-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/vietnamese-600-italic.css b/web/static/fonts/rasa/vietnamese-600-italic.css deleted file mode 100644 index c46ba027..00000000 --- a/web/static/fonts/rasa/vietnamese-600-italic.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-vietnamese-600-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/rasa/files/rasa-vietnamese-600-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-vietnamese-600-italic.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/vietnamese-600.css b/web/static/fonts/rasa/vietnamese-600.css deleted file mode 100644 index 51c01611..00000000 --- a/web/static/fonts/rasa/vietnamese-600.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-vietnamese-600-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/rasa/files/rasa-vietnamese-600-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-vietnamese-600-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/vietnamese-700-italic.css b/web/static/fonts/rasa/vietnamese-700-italic.css deleted file mode 100644 index e234d505..00000000 --- a/web/static/fonts/rasa/vietnamese-700-italic.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-vietnamese-700-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/rasa/files/rasa-vietnamese-700-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-vietnamese-700-italic.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/vietnamese-700.css b/web/static/fonts/rasa/vietnamese-700.css deleted file mode 100644 index d3b8f752..00000000 --- a/web/static/fonts/rasa/vietnamese-700.css +++ /dev/null @@ -1,8 +0,0 @@ -/* rasa-vietnamese-700-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/rasa/files/rasa-vietnamese-700-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-vietnamese-700-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/vietnamese-italic.css b/web/static/fonts/rasa/vietnamese-italic.css deleted file mode 100644 index 5e0d7d24..00000000 --- a/web/static/fonts/rasa/vietnamese-italic.css +++ /dev/null @@ -1,44 +0,0 @@ -/* rasa-vietnamese-300-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/rasa/files/rasa-vietnamese-300-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-vietnamese-300-italic.woff) format('woff'); -} - -/* rasa-vietnamese-400-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/rasa/files/rasa-vietnamese-400-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-vietnamese-400-italic.woff) format('woff'); -} - -/* rasa-vietnamese-500-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/rasa/files/rasa-vietnamese-500-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-vietnamese-500-italic.woff) format('woff'); -} - -/* rasa-vietnamese-600-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/rasa/files/rasa-vietnamese-600-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-vietnamese-600-italic.woff) format('woff'); -} - -/* rasa-vietnamese-700-italic */ -@font-face { - font-family: 'Rasa'; - font-style: italic; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/rasa/files/rasa-vietnamese-700-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-vietnamese-700-italic.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/vietnamese.css b/web/static/fonts/rasa/vietnamese.css deleted file mode 100644 index 699fff26..00000000 --- a/web/static/fonts/rasa/vietnamese.css +++ /dev/null @@ -1,44 +0,0 @@ -/* rasa-vietnamese-300-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 300; - src: url(/static/fonts/rasa/files/rasa-vietnamese-300-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-vietnamese-300-normal.woff) format('woff'); -} - -/* rasa-vietnamese-400-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 400; - src: url(/static/fonts/rasa/files/rasa-vietnamese-400-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-vietnamese-400-normal.woff) format('woff'); -} - -/* rasa-vietnamese-500-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 500; - src: url(/static/fonts/rasa/files/rasa-vietnamese-500-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-vietnamese-500-normal.woff) format('woff'); -} - -/* rasa-vietnamese-600-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 600; - src: url(/static/fonts/rasa/files/rasa-vietnamese-600-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-vietnamese-600-normal.woff) format('woff'); -} - -/* rasa-vietnamese-700-normal */ -@font-face { - font-family: 'Rasa'; - font-style: normal; - font-display: swap; - font-weight: 700; - src: url(/static/fonts/rasa/files/rasa-vietnamese-700-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-vietnamese-700-normal.woff) format('woff'); -} \ No newline at end of file diff --git a/web/static/fonts/rasa/wght-italic.css b/web/static/fonts/rasa/wght-italic.css new file mode 100644 index 00000000..bee9dd37 --- /dev/null +++ b/web/static/fonts/rasa/wght-italic.css @@ -0,0 +1,39 @@ +/* rasa-gujarati-wght-italic */ +@font-face { + font-family: 'Rasa Variable'; + font-style: italic; + font-display: swap; + font-weight: 300 700; + src: url(/static/fonts/rasa/files/rasa-gujarati-wght-italic.woff2) format('woff2-variations'); + unicode-range: U+0951-0952,U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; +} + +/* rasa-vietnamese-wght-italic */ +@font-face { + font-family: 'Rasa Variable'; + font-style: italic; + font-display: swap; + font-weight: 300 700; + src: url(/static/fonts/rasa/files/rasa-vietnamese-wght-italic.woff2) format('woff2-variations'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* rasa-latin-ext-wght-italic */ +@font-face { + font-family: 'Rasa Variable'; + font-style: italic; + font-display: swap; + font-weight: 300 700; + src: url(/static/fonts/rasa/files/rasa-latin-ext-wght-italic.woff2) format('woff2-variations'); + unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* rasa-latin-wght-italic */ +@font-face { + font-family: 'Rasa Variable'; + font-style: italic; + font-display: swap; + font-weight: 300 700; + src: url(/static/fonts/rasa/files/rasa-latin-wght-italic.woff2) format('woff2-variations'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/web/static/fonts/rasa/wght.css b/web/static/fonts/rasa/wght.css new file mode 100644 index 00000000..ab3f4399 --- /dev/null +++ b/web/static/fonts/rasa/wght.css @@ -0,0 +1,39 @@ +/* rasa-gujarati-wght-normal */ +@font-face { + font-family: 'Rasa Variable'; + font-style: normal; + font-display: swap; + font-weight: 300 700; + src: url(/static/fonts/rasa/files/rasa-gujarati-wght-normal.woff2) format('woff2-variations'); + unicode-range: U+0951-0952,U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; +} + +/* rasa-vietnamese-wght-normal */ +@font-face { + font-family: 'Rasa Variable'; + font-style: normal; + font-display: swap; + font-weight: 300 700; + src: url(/static/fonts/rasa/files/rasa-vietnamese-wght-normal.woff2) format('woff2-variations'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* rasa-latin-ext-wght-normal */ +@font-face { + font-family: 'Rasa Variable'; + font-style: normal; + font-display: swap; + font-weight: 300 700; + src: url(/static/fonts/rasa/files/rasa-latin-ext-wght-normal.woff2) format('woff2-variations'); + unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* rasa-latin-wght-normal */ +@font-face { + font-family: 'Rasa Variable'; + font-style: normal; + font-display: swap; + font-weight: 300 700; + src: url(/static/fonts/rasa/files/rasa-latin-wght-normal.woff2) format('woff2-variations'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/web/static/js/connection.js b/web/static/js/connection.js index 2c7a74d5..89f8bf50 100644 --- a/web/static/js/connection.js +++ b/web/static/js/connection.js @@ -2,7 +2,7 @@ var myTextArea = document.querySelectorAll('textarea.connection_string'); for (var x = 0; x < myTextArea.length; x++) { if (myTextArea[x]) { - // eslint-disable-next-line no-undef,no-unused-vars + // eslint-disable-next-line no-unused-vars var myCodeMirror = CodeMirror.fromTextArea(myTextArea[x], { theme: 'ttcn', mode: 'sql', diff --git a/web/static/js/functions.js b/web/static/js/functions.js index d5f5127f..03368a8e 100644 --- a/web/static/js/functions.js +++ b/web/static/js/functions.js @@ -24,7 +24,7 @@ ` - + `; } })(); diff --git a/web/static/js/password.js b/web/static/js/password.js index de9ca1ee..b63c080b 100644 --- a/web/static/js/password.js +++ b/web/static/js/password.js @@ -3,7 +3,7 @@ if (e.target.closest('.toggle-pass')) { var target = e.target.closest('.toggle-pass'), input = target.parentElement.parentElement.querySelector('input'), - icon = target.querySelector('i.fas'), + icon = target.querySelector('span.fas'), sensitive_input = target.querySelector('input'); input.type = input.type === 'text' ? 'password' : 'text'; diff --git a/web/static/js/project.js b/web/static/js/project.js index 2dd5993b..a76989b3 100644 --- a/web/static/js/project.js +++ b/web/static/js/project.js @@ -35,7 +35,7 @@ } var projectGlobalParams = d.querySelector('textarea[name="globalParams"]'); if (projectGlobalParams) { - // eslint-disable-next-line no-undef,no-unused-vars + // eslint-disable-next-line no-unused-vars var myprojectGlobalParams = CodeMirror.fromTextArea(projectGlobalParams, { theme: 'ttcn', mode: 'sql', @@ -51,7 +51,7 @@ } var projectTaskParams = d.querySelector('textarea[name="taskParams"]'); if (projectTaskParams) { - // eslint-disable-next-line no-undef,no-unused-vars + // eslint-disable-next-line no-unused-vars var myprojectTaskParams = CodeMirror.fromTextArea(projectTaskParams, { theme: 'ttcn', mode: 'sql', @@ -684,10 +684,14 @@ t = e.target.closest('select[name="fileType"]'); p = t.closest('body'); p.querySelector('.task-delimiter').style.display = 'none'; + p.querySelector('.File-information').style.display = 'none'; if (t.value === '2' || t.value === '4') { p.querySelector('.task-delimiter').style.removeProperty('display'); } + if (t.value != '5') { + p.querySelector('.File-information').style.removeProperty('display'); + } } if (typeof mySourceCodeMirror != 'undefined') mySourceCodeMirror.refresh(); if (typeof myProcessingCodeMirror != 'undefined') @@ -725,6 +729,7 @@ weekNumbers: true, time_24hr: true, }); + /*eslint no-unused-vars: ["error", { "caughtErrors": "none" }]*/ } catch (e) { // nothing } diff --git a/web/static/js/search.js b/web/static/js/search.js index 2c36cc49..7dca9966 100644 --- a/web/static/js/search.js +++ b/web/static/js/search.js @@ -75,39 +75,39 @@ if (search_text.length === 0) { searchResultsContainer.innerHTML = ''; - } else { - var regex = new RegExp(search_text.replace(' ', '.* .*'), 'gmi'), - output = '', - count = 0; - for (var key in search_data) { - for (var subkey in search_data[key]) { - // if we have a match - var sMatch = search_data[key][subkey].match(regex); - if (sMatch) { - output += - '

' + - search_data[key][subkey].replace(regex, function (m) { - return '' + m + ''; - }) + - "

" + - key + - ''; - ('
'); - count += 1; - } + return; + } + var safeText = search_text.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + var regex = new RegExp(safeText.replace(' ', '.* .*'), 'gmi'); + let output = ''; + let count = 0; + for (var key in search_data) { + for (var subkey in search_data[key]) { + // if we have a match + var sMatch = search_data[key][subkey].match(regex); + if (sMatch) { + output += + '

' + + search_data[key][subkey].replace(regex, function (m) { + return '' + m + ''; + }) + + "

" + + key + + '
'; + count++; } } + } - if (count === 0) { - output += "
Nothing found.
"; - } - - searchResultsContainer.innerHTML = output; - searchResultsContainer.classList.add('search-focus'); - document.getElementById('search-background').style.display = 'block'; + if (count === 0) { + output = "
Nothing found.
"; } + + searchResultsContainer.innerHTML = output; + searchResultsContainer.classList.add('search-focus'); + document.getElementById('search-background').style.display = 'block'; } function closeSearch() { @@ -120,16 +120,12 @@ document .getElementById('search-background') - .addEventListener('click', function () { - closeSearch(); - }); + .addEventListener('click', closeSearch); // do search as a modal as search-focus and links doesn't work well on safari :( // Add a keyboard event to close all modals document.addEventListener('keydown', function (event) { - var e = event || window.event; - if (e.keyCode === 27) { - // Escape key + if (event.key === 'Escape' || event.keyCode === 27) { closeSearch(); } }); diff --git a/web/static/js/task.js b/web/static/js/task.js index 73ac4bfb..d7fe49cb 100644 --- a/web/static/js/task.js +++ b/web/static/js/task.js @@ -52,6 +52,49 @@ }, 3000); } + // NEW: Sticky header functionality for task editing pages + function initStickyTaskHeader() { + const stickyHeader = document.getElementById('sticky-task-header'); + if (!stickyHeader) return; // Only run if sticky header exists + + const mainTitle = document.querySelector('h1.title'); + if (!mainTitle) return; + + const titleBottom = mainTitle.offsetTop + mainTitle.offsetHeight; + let isVisible = false; + + function updateStickyHeader() { + const scrollTop = window.pageYOffset || document.documentElement.scrollTop; + + if (scrollTop > titleBottom + 50 && !isVisible) { + // Show sticky header + stickyHeader.classList.add('is-visible'); + isVisible = true; + } else if (scrollTop <= titleBottom + 50 && isVisible) { + // Hide sticky header + stickyHeader.classList.remove('is-visible'); + isVisible = false; + } + } + + // Throttled scroll event for better performance + let ticking = false; + function onScroll() { + if (!ticking) { + requestAnimationFrame(function () { + updateStickyHeader(); + ticking = false; + }); + ticking = true; + } + } + + window.addEventListener('scroll', onScroll); + + // Initial check + updateStickyHeader(); + } + document.addEventListener('click', function (element) { // add a parameter input if (element.target.closest('button.new-parameter')) { @@ -71,7 +114,7 @@
- + @@ -102,4 +145,9 @@ } } }); + + // NEW: Initialize sticky header when DOM is ready + document.addEventListener('DOMContentLoaded', function () { + initStickyTaskHeader(); + }); })(); diff --git a/web/static/lib/codemirror/autorefresh.js b/web/static/lib/codemirror/autorefresh.js index b0d75853..b5e6ab0a 100644 --- a/web/static/lib/codemirror/autorefresh.js +++ b/web/static/lib/codemirror/autorefresh.js @@ -1,49 +1,47 @@ // CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: https://codemirror.net/LICENSE +// Distributed under an MIT license: https://codemirror.net/5/LICENSE -(function (mod) { - if (typeof exports == 'object' && typeof module == 'object') - // CommonJS - mod(require('../../lib/codemirror')); - else if (typeof define == 'function' && define.amd) - // AMD - define(['../../lib/codemirror'], mod); - // Plain browser env - else mod(CodeMirror); -})(function (CodeMirror) { - 'use strict'; +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")) + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod) + else // Plain browser env + mod(CodeMirror) +})(function(CodeMirror) { + "use strict" - CodeMirror.defineOption('autoRefresh', false, function (cm, val) { + CodeMirror.defineOption("autoRefresh", false, function(cm, val) { if (cm.state.autoRefresh) { - stopListening(cm, cm.state.autoRefresh); - cm.state.autoRefresh = null; + stopListening(cm, cm.state.autoRefresh) + cm.state.autoRefresh = null } if (val && cm.display.wrapper.offsetHeight == 0) - startListening(cm, (cm.state.autoRefresh = { delay: val.delay || 250 })); - }); + startListening(cm, cm.state.autoRefresh = {delay: val.delay || 250}) + }) function startListening(cm, state) { function check() { if (cm.display.wrapper.offsetHeight) { - stopListening(cm, state); + stopListening(cm, state) if (cm.display.lastWrapHeight != cm.display.wrapper.clientHeight) - cm.refresh(); + cm.refresh() } else { - state.timeout = setTimeout(check, state.delay); + state.timeout = setTimeout(check, state.delay) } } - state.timeout = setTimeout(check, state.delay); - state.hurry = function () { - clearTimeout(state.timeout); - state.timeout = setTimeout(check, 50); - }; - CodeMirror.on(window, 'mouseup', state.hurry); - CodeMirror.on(window, 'keyup', state.hurry); + state.timeout = setTimeout(check, state.delay) + state.hurry = function() { + clearTimeout(state.timeout) + state.timeout = setTimeout(check, 50) + } + CodeMirror.on(window, "mouseup", state.hurry) + CodeMirror.on(window, "keyup", state.hurry) } function stopListening(_cm, state) { - clearTimeout(state.timeout); - CodeMirror.off(window, 'mouseup', state.hurry); - CodeMirror.off(window, 'keyup', state.hurry); + clearTimeout(state.timeout) + CodeMirror.off(window, "mouseup", state.hurry) + CodeMirror.off(window, "keyup", state.hurry) } }); diff --git a/web/static/lib/codemirror/codemirror.js b/web/static/lib/codemirror/codemirror.js index 69aa3cfb..f4f5ec9d 100644 --- a/web/static/lib/codemirror/codemirror.js +++ b/web/static/lib/codemirror/codemirror.js @@ -1,20 +1,17 @@ // CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: https://codemirror.net/LICENSE +// Distributed under an MIT license: https://codemirror.net/5/LICENSE -// This is CodeMirror (https://codemirror.net), a code editor +// This is CodeMirror (https://codemirror.net/5), a code editor // implemented in JavaScript on top of the browser's DOM. // // You can find some technical background for some of the code below // at http://marijnhaverbeke.nl/blog/#cm-internals . (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' - ? (module.exports = factory()) - : typeof define === 'function' && define.amd - ? define(factory) - : (global.CodeMirror = factory()); -})(this, function () { - 'use strict'; + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = global || self, global.CodeMirror = factory()); +}(this, (function () { 'use strict'; // Kludges for bugs and behavior differences that can't be feature // detected are enabled based on userAgent etc sniffing. @@ -26,207 +23,152 @@ var ie_11up = /Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(userAgent); var edge = /Edge\/(\d+)/.exec(userAgent); var ie = ie_upto10 || ie_11up || edge; - var ie_version = - ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]); + var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]); var webkit = !edge && /WebKit\//.test(userAgent); var qtwebkit = webkit && /Qt\/\d+\.\d+/.test(userAgent); - var chrome = !edge && /Chrome\//.test(userAgent); + var chrome = !edge && /Chrome\/(\d+)/.exec(userAgent); + var chrome_version = chrome && +chrome[1]; var presto = /Opera\//.test(userAgent); var safari = /Apple Computer/.test(navigator.vendor); var mac_geMountainLion = /Mac OS X 1\d\D([8-9]|\d\d)\D/.test(userAgent); var phantom = /PhantomJS/.test(userAgent); - var ios = - !edge && /AppleWebKit/.test(userAgent) && /Mobile\/\w+/.test(userAgent); + var ios = safari && (/Mobile\/\w+/.test(userAgent) || navigator.maxTouchPoints > 2); var android = /Android/.test(userAgent); // This is woefully incomplete. Suggestions for alternative methods welcome. - var mobile = - ios || - android || - /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent); + var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent); var mac = ios || /Mac/.test(platform); var chromeOS = /\bCrOS\b/.test(userAgent); var windows = /win/i.test(platform); var presto_version = presto && userAgent.match(/Version\/(\d*\.\d*)/); - if (presto_version) { - presto_version = Number(presto_version[1]); - } - if (presto_version && presto_version >= 15) { - presto = false; - webkit = true; - } + if (presto_version) { presto_version = Number(presto_version[1]); } + if (presto_version && presto_version >= 15) { presto = false; webkit = true; } // Some browsers use the wrong event properties to signal cmd/ctrl on OS X - var flipCtrlCmd = - mac && - (qtwebkit || - (presto && (presto_version == null || presto_version < 12.11))); + var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11)); var captureRightClick = gecko || (ie && ie_version >= 9); - function classTest(cls) { - return new RegExp('(^|\\s)' + cls + '(?:$|\\s)\\s*'); - } + function classTest(cls) { return new RegExp("(^|\\s)" + cls + "(?:$|\\s)\\s*") } - var rmClass = function (node, cls) { + var rmClass = function(node, cls) { var current = node.className; var match = classTest(cls).exec(current); if (match) { var after = current.slice(match.index + match[0].length); - node.className = - current.slice(0, match.index) + (after ? match[1] + after : ''); + node.className = current.slice(0, match.index) + (after ? match[1] + after : ""); } }; function removeChildren(e) { - for (var count = e.childNodes.length; count > 0; --count) { - e.removeChild(e.firstChild); - } - return e; + for (var count = e.childNodes.length; count > 0; --count) + { e.removeChild(e.firstChild); } + return e } function removeChildrenAndAdd(parent, e) { - return removeChildren(parent).appendChild(e); + return removeChildren(parent).appendChild(e) } function elt(tag, content, className, style) { var e = document.createElement(tag); - if (className) { - e.className = className; - } - if (style) { - e.style.cssText = style; - } - if (typeof content == 'string') { - e.appendChild(document.createTextNode(content)); - } else if (content) { - for (var i = 0; i < content.length; ++i) { - e.appendChild(content[i]); - } - } - return e; + if (className) { e.className = className; } + if (style) { e.style.cssText = style; } + if (typeof content == "string") { e.appendChild(document.createTextNode(content)); } + else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]); } } + return e } // wrapper for elt, which removes the elt from the accessibility tree function eltP(tag, content, className, style) { var e = elt(tag, content, className, style); - e.setAttribute('role', 'presentation'); - return e; + e.setAttribute("role", "presentation"); + return e } var range; - if (document.createRange) { - range = function (node, start, end, endNode) { - var r = document.createRange(); - r.setEnd(endNode || node, end); - r.setStart(node, start); - return r; - }; - } else { - range = function (node, start, end) { - var r = document.body.createTextRange(); - try { - r.moveToElementText(node.parentNode); - } catch (e) { - return r; - } - r.collapse(true); - r.moveEnd('character', end); - r.moveStart('character', start); - return r; - }; - } + if (document.createRange) { range = function(node, start, end, endNode) { + var r = document.createRange(); + r.setEnd(endNode || node, end); + r.setStart(node, start); + return r + }; } + else { range = function(node, start, end) { + var r = document.body.createTextRange(); + try { r.moveToElementText(node.parentNode); } + catch(e) { return r } + r.collapse(true); + r.moveEnd("character", end); + r.moveStart("character", start); + return r + }; } function contains(parent, child) { - if (child.nodeType == 3) { - // Android browser always returns false when child is a textnode - child = child.parentNode; - } - if (parent.contains) { - return parent.contains(child); - } + if (child.nodeType == 3) // Android browser always returns false when child is a textnode + { child = child.parentNode; } + if (parent.contains) + { return parent.contains(child) } do { - if (child.nodeType == 11) { - child = child.host; - } - if (child == parent) { - return true; - } - } while ((child = child.parentNode)); + if (child.nodeType == 11) { child = child.host; } + if (child == parent) { return true } + } while (child = child.parentNode) } - function activeElt() { + function activeElt(rootNode) { // IE and Edge may throw an "Unspecified Error" when accessing document.activeElement. // IE < 10 will throw when accessed while the page is loading or in an iframe. // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable. + var doc = rootNode.ownerDocument || rootNode; var activeElement; try { - activeElement = document.activeElement; - } catch (e) { - activeElement = document.body || null; + activeElement = rootNode.activeElement; + } catch(e) { + activeElement = doc.body || null; } - while ( - activeElement && - activeElement.shadowRoot && - activeElement.shadowRoot.activeElement - ) { - activeElement = activeElement.shadowRoot.activeElement; - } - return activeElement; + while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement) + { activeElement = activeElement.shadowRoot.activeElement; } + return activeElement } function addClass(node, cls) { var current = node.className; - if (!classTest(cls).test(current)) { - node.className += (current ? ' ' : '') + cls; - } + if (!classTest(cls).test(current)) { node.className += (current ? " " : "") + cls; } } function joinClasses(a, b) { - var as = a.split(' '); - for (var i = 0; i < as.length; i++) { - if (as[i] && !classTest(as[i]).test(b)) { - b += ' ' + as[i]; - } - } - return b; + var as = a.split(" "); + for (var i = 0; i < as.length; i++) + { if (as[i] && !classTest(as[i]).test(b)) { b += " " + as[i]; } } + return b } - var selectInput = function (node) { - node.select(); - }; - if (ios) { - // Mobile Safari apparently has a bug where select() is broken. - selectInput = function (node) { - node.selectionStart = 0; - node.selectionEnd = node.value.length; - }; - } else if (ie) { - // Suppress mysterious IE10 errors - selectInput = function (node) { - try { - node.select(); - } catch (_e) {} - }; + var selectInput = function(node) { node.select(); }; + if (ios) // Mobile Safari apparently has a bug where select() is broken. + { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; } + else if (ie) // Suppress mysterious IE10 errors + { selectInput = function(node) { try { node.select(); } catch(_e) {} }; } + + function doc(cm) { return cm.display.wrapper.ownerDocument } + + function root(cm) { + return rootNode(cm.display.wrapper) + } + + function rootNode(element) { + // Detect modern browsers (2017+). + return element.getRootNode ? element.getRootNode() : element.ownerDocument } + function win(cm) { return doc(cm).defaultView } + function bind(f) { var args = Array.prototype.slice.call(arguments, 1); - return function () { - return f.apply(null, args); - }; + return function(){return f.apply(null, args)} } function copyObj(obj, target, overwrite) { - if (!target) { - target = {}; - } - for (var prop in obj) { - if ( - obj.hasOwnProperty(prop) && - (overwrite !== false || !target.hasOwnProperty(prop)) - ) { - target[prop] = obj[prop]; - } - } - return target; + if (!target) { target = {}; } + for (var prop in obj) + { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop))) + { target[prop] = obj[prop]; } } + return target } // Counts the column offset in a string, taking tabs into account. @@ -234,22 +176,19 @@ function countColumn(string, end, tabSize, startIndex, startValue) { if (end == null) { end = string.search(/[^\s\u00a0]/); - if (end == -1) { - end = string.length; - } + if (end == -1) { end = string.length; } } - for (var i = startIndex || 0, n = startValue || 0; ; ) { - var nextTab = string.indexOf('\t', i); - if (nextTab < 0 || nextTab >= end) { - return n + (end - i); - } + for (var i = startIndex || 0, n = startValue || 0;;) { + var nextTab = string.indexOf("\t", i); + if (nextTab < 0 || nextTab >= end) + { return n + (end - i) } n += nextTab - i; n += tabSize - (n % tabSize); i = nextTab + 1; } } - var Delayed = function () { + var Delayed = function() { this.id = null; this.f = null; this.time = 0; @@ -257,15 +196,15 @@ }; Delayed.prototype.onTimeout = function (self) { self.id = 0; - if (self.time <= +new Date()) { + if (self.time <= +new Date) { self.f(); } else { - setTimeout(self.handler, self.time - +new Date()); + setTimeout(self.handler, self.time - +new Date); } }; Delayed.prototype.set = function (ms, f) { this.f = f; - var time = +new Date() + ms; + var time = +new Date + ms; if (!this.id || time < this.time) { clearTimeout(this.id); this.id = setTimeout(this.handler, ms); @@ -274,77 +213,55 @@ }; function indexOf(array, elt) { - for (var i = 0; i < array.length; ++i) { - if (array[i] == elt) { - return i; - } - } - return -1; + for (var i = 0; i < array.length; ++i) + { if (array[i] == elt) { return i } } + return -1 } // Number of pixels added to scroller and sizer to hide scrollbar - var scrollerGap = 30; + var scrollerGap = 50; // Returned or thrown by various protocols to signal 'I'm not // handling this'. - var Pass = { - toString: function () { - return 'CodeMirror.Pass'; - }, - }; + var Pass = {toString: function(){return "CodeMirror.Pass"}}; // Reused option objects for setSelection & friends - var sel_dontScroll = { scroll: false }, - sel_mouse = { origin: '*mouse' }, - sel_move = { origin: '+move' }; + var sel_dontScroll = {scroll: false}, sel_mouse = {origin: "*mouse"}, sel_move = {origin: "+move"}; // The inverse of countColumn -- find the offset that corresponds to // a particular column. function findColumn(string, goal, tabSize) { - for (var pos = 0, col = 0; ; ) { - var nextTab = string.indexOf('\t', pos); - if (nextTab == -1) { - nextTab = string.length; - } + for (var pos = 0, col = 0;;) { + var nextTab = string.indexOf("\t", pos); + if (nextTab == -1) { nextTab = string.length; } var skipped = nextTab - pos; - if (nextTab == string.length || col + skipped >= goal) { - return pos + Math.min(skipped, goal - col); - } + if (nextTab == string.length || col + skipped >= goal) + { return pos + Math.min(skipped, goal - col) } col += nextTab - pos; col += tabSize - (col % tabSize); pos = nextTab + 1; - if (col >= goal) { - return pos; - } + if (col >= goal) { return pos } } } - var spaceStrs = ['']; + var spaceStrs = [""]; function spaceStr(n) { - while (spaceStrs.length <= n) { - spaceStrs.push(lst(spaceStrs) + ' '); - } - return spaceStrs[n]; + while (spaceStrs.length <= n) + { spaceStrs.push(lst(spaceStrs) + " "); } + return spaceStrs[n] } - function lst(arr) { - return arr[arr.length - 1]; - } + function lst(arr) { return arr[arr.length-1] } function map(array, f) { var out = []; - for (var i = 0; i < array.length; i++) { - out[i] = f(array[i], i); - } - return out; + for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i); } + return out } function insertSorted(array, value, score) { - var pos = 0, - priority = score(value); - while (pos < array.length && score(array[pos]) <= priority) { - pos++; - } + var pos = 0, priority = score(value); + while (pos < array.length && score(array[pos]) <= priority) { pos++; } array.splice(pos, 0, value); } @@ -358,39 +275,24 @@ nothing.prototype = base; inst = new nothing(); } - if (props) { - copyObj(props, inst); - } - return inst; + if (props) { copyObj(props, inst); } + return inst } - var nonASCIISingleCaseWordChar = - /[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/; + var nonASCIISingleCaseWordChar = /[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/; function isWordCharBasic(ch) { - return ( - /\w/.test(ch) || - (ch > '\x80' && - (ch.toUpperCase() != ch.toLowerCase() || - nonASCIISingleCaseWordChar.test(ch))) - ); + return /\w/.test(ch) || ch > "\x80" && + (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch)) } function isWordChar(ch, helper) { - if (!helper) { - return isWordCharBasic(ch); - } - if (helper.source.indexOf('\\w') > -1 && isWordCharBasic(ch)) { - return true; - } - return helper.test(ch); + if (!helper) { return isWordCharBasic(ch) } + if (helper.source.indexOf("\\w") > -1 && isWordCharBasic(ch)) { return true } + return helper.test(ch) } function isEmpty(obj) { - for (var n in obj) { - if (obj.hasOwnProperty(n) && obj[n]) { - return false; - } - } - return true; + for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } } + return true } // Extending unicode characters. A series of a non-extending char + @@ -398,21 +300,13 @@ // as editing and measuring is concerned. This is not fully correct, // since some scripts/fonts/browsers also treat other configurations // of code points as a group. - var extendingChars = - /[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/; - function isExtendingChar(ch) { - return ch.charCodeAt(0) >= 768 && extendingChars.test(ch); - } + var extendingChars = /[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/; + function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) } // Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range. function skipExtendingChars(str, pos, dir) { - while ( - (dir < 0 ? pos > 0 : pos < str.length) && - isExtendingChar(str.charAt(pos)) - ) { - pos += dir; - } - return pos; + while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir; } + return pos } // Returns the value from the range [`from`; `to`] that satisfies @@ -423,47 +317,27 @@ // whether `from` does. var dir = from > to ? -1 : 1; for (;;) { - if (from == to) { - return from; - } - var midF = (from + to) / 2, - mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF); - if (mid == from) { - return pred(mid) ? from : to; - } - if (pred(mid)) { - to = mid; - } else { - from = mid + dir; - } + if (from == to) { return from } + var midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF); + if (mid == from) { return pred(mid) ? from : to } + if (pred(mid)) { to = mid; } + else { from = mid + dir; } } } // BIDI HELPERS function iterateBidiSections(order, from, to, f) { - if (!order) { - return f(from, to, 'ltr', 0); - } + if (!order) { return f(from, to, "ltr", 0) } var found = false; for (var i = 0; i < order.length; ++i) { var part = order[i]; - if ( - (part.from < to && part.to > from) || - (from == to && part.to == from) - ) { - f( - Math.max(part.from, from), - Math.min(part.to, to), - part.level == 1 ? 'rtl' : 'ltr', - i, - ); + if (part.from < to && part.to > from || from == to && part.to == from) { + f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? "rtl" : "ltr", i); found = true; } } - if (!found) { - f(from, to, 'ltr'); - } + if (!found) { f(from, to, "ltr"); } } var bidiOther = null; @@ -472,25 +346,17 @@ bidiOther = null; for (var i = 0; i < order.length; ++i) { var cur = order[i]; - if (cur.from < ch && cur.to > ch) { - return i; - } + if (cur.from < ch && cur.to > ch) { return i } if (cur.to == ch) { - if (cur.from != cur.to && sticky == 'before') { - found = i; - } else { - bidiOther = i; - } + if (cur.from != cur.to && sticky == "before") { found = i; } + else { bidiOther = i; } } if (cur.from == ch) { - if (cur.from != cur.to && sticky != 'before') { - found = i; - } else { - bidiOther = i; - } + if (cur.from != cur.to && sticky != "before") { found = i; } + else { bidiOther = i; } } } - return found != null ? found : bidiOther; + return found != null ? found : bidiOther } // Bidirectional ordering algorithm @@ -516,54 +382,36 @@ // Returns null if characters are ordered as they appear // (left-to-right), or an array of sections ({from, to, level} // objects) in the order in which they occur visually. - var bidiOrdering = (function () { + var bidiOrdering = (function() { // Character types for codepoints 0 to 0xff - var lowTypes = - 'bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN'; + var lowTypes = "bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN"; // Character types for codepoints 0x600 to 0x6f9 - var arabicTypes = - 'nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111'; + var arabicTypes = "nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111"; function charType(code) { - if (code <= 0xf7) { - return lowTypes.charAt(code); - } else if (0x590 <= code && code <= 0x5f4) { - return 'R'; - } else if (0x600 <= code && code <= 0x6f9) { - return arabicTypes.charAt(code - 0x600); - } else if (0x6ee <= code && code <= 0x8ac) { - return 'r'; - } else if (0x2000 <= code && code <= 0x200b) { - return 'w'; - } else if (code == 0x200c) { - return 'b'; - } else { - return 'L'; - } + if (code <= 0xf7) { return lowTypes.charAt(code) } + else if (0x590 <= code && code <= 0x5f4) { return "R" } + else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) } + else if (0x6ee <= code && code <= 0x8ac) { return "r" } + else if (0x2000 <= code && code <= 0x200b) { return "w" } + else if (code == 0x200c) { return "b" } + else { return "L" } } var bidiRE = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/; - var isNeutral = /[stwN]/, - isStrong = /[LRr]/, - countsAsLeft = /[Lb1n]/, - countsAsNum = /[1n]/; + var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/; function BidiSpan(level, from, to) { this.level = level; - this.from = from; - this.to = to; + this.from = from; this.to = to; } - return function (str, direction) { - var outerType = direction == 'ltr' ? 'L' : 'R'; + return function(str, direction) { + var outerType = direction == "ltr" ? "L" : "R"; - if (str.length == 0 || (direction == 'ltr' && !bidiRE.test(str))) { - return false; - } - var len = str.length, - types = []; - for (var i = 0; i < len; ++i) { - types.push(charType(str.charCodeAt(i))); - } + if (str.length == 0 || direction == "ltr" && !bidiRE.test(str)) { return false } + var len = str.length, types = []; + for (var i = 0; i < len; ++i) + { types.push(charType(str.charCodeAt(i))); } // W1. Examine each non-spacing mark (NSM) in the level run, and // change the type of the NSM to the type of the previous @@ -571,11 +419,8 @@ // get the type of sor. for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) { var type = types[i$1]; - if (type == 'm') { - types[i$1] = prev; - } else { - prev = type; - } + if (type == "m") { types[i$1] = prev; } + else { prev = type; } } // W2. Search backwards from each instance of a European number @@ -585,14 +430,8 @@ // W3. Change all ALs to R. for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) { var type$1 = types[i$2]; - if (type$1 == '1' && cur == 'r') { - types[i$2] = 'n'; - } else if (isStrong.test(type$1)) { - cur = type$1; - if (type$1 == 'r') { - types[i$2] = 'R'; - } - } + if (type$1 == "1" && cur == "r") { types[i$2] = "n"; } + else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == "r") { types[i$2] = "R"; } } } // W4. A single European separator between two European numbers @@ -600,15 +439,9 @@ // two numbers of the same type changes to that type. for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) { var type$2 = types[i$3]; - if (type$2 == '+' && prev$1 == '1' && types[i$3 + 1] == '1') { - types[i$3] = '1'; - } else if ( - type$2 == ',' && - prev$1 == types[i$3 + 1] && - (prev$1 == '1' || prev$1 == 'n') - ) { - types[i$3] = prev$1; - } + if (type$2 == "+" && prev$1 == "1" && types[i$3+1] == "1") { types[i$3] = "1"; } + else if (type$2 == "," && prev$1 == types[i$3+1] && + (prev$1 == "1" || prev$1 == "n")) { types[i$3] = prev$1; } prev$1 = type$2; } @@ -618,18 +451,12 @@ // Neutral. for (var i$4 = 0; i$4 < len; ++i$4) { var type$3 = types[i$4]; - if (type$3 == ',') { - types[i$4] = 'N'; - } else if (type$3 == '%') { - var end = void 0; - for (end = i$4 + 1; end < len && types[end] == '%'; ++end) {} - var replace = - (i$4 && types[i$4 - 1] == '!') || (end < len && types[end] == '1') - ? '1' - : 'N'; - for (var j = i$4; j < end; ++j) { - types[j] = replace; - } + if (type$3 == ",") { types[i$4] = "N"; } + else if (type$3 == "%") { + var end = (void 0); + for (end = i$4 + 1; end < len && types[end] == "%"; ++end) {} + var replace = (i$4 && types[i$4-1] == "!") || (end < len && types[end] == "1") ? "1" : "N"; + for (var j = i$4; j < end; ++j) { types[j] = replace; } i$4 = end - 1; } } @@ -639,11 +466,8 @@ // found, then change the type of the European number to L. for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) { var type$4 = types[i$5]; - if (cur$1 == 'L' && type$4 == '1') { - types[i$5] = 'L'; - } else if (isStrong.test(type$4)) { - cur$1 = type$4; - } + if (cur$1 == "L" && type$4 == "1") { types[i$5] = "L"; } + else if (isStrong.test(type$4)) { cur$1 = type$4; } } // N1. A sequence of neutrals takes the direction of the @@ -654,18 +478,12 @@ // N2. Any remaining neutrals take the embedding direction. for (var i$6 = 0; i$6 < len; ++i$6) { if (isNeutral.test(types[i$6])) { - var end$1 = void 0; - for ( - end$1 = i$6 + 1; - end$1 < len && isNeutral.test(types[end$1]); - ++end$1 - ) {} - var before = (i$6 ? types[i$6 - 1] : outerType) == 'L'; - var after = (end$1 < len ? types[end$1] : outerType) == 'L'; - var replace$1 = before == after ? (before ? 'L' : 'R') : outerType; - for (var j$1 = i$6; j$1 < end$1; ++j$1) { - types[j$1] = replace$1; - } + var end$1 = (void 0); + for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {} + var before = (i$6 ? types[i$6-1] : outerType) == "L"; + var after = (end$1 < len ? types[end$1] : outerType) == "L"; + var replace$1 = before == after ? (before ? "L" : "R") : outerType; + for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1; } i$6 = end$1 - 1; } } @@ -675,36 +493,29 @@ // levels (0, 1, 2) in an implementation that doesn't take // explicit embedding into account, we can build up the order on // the fly, without following the level-based algorithm. - var order = [], - m; - for (var i$7 = 0; i$7 < len; ) { + var order = [], m; + for (var i$7 = 0; i$7 < len;) { if (countsAsLeft.test(types[i$7])) { var start = i$7; for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {} order.push(new BidiSpan(0, start, i$7)); } else { - var pos = i$7, - at = order.length; - for (++i$7; i$7 < len && types[i$7] != 'L'; ++i$7) {} - for (var j$2 = pos; j$2 < i$7; ) { + var pos = i$7, at = order.length, isRTL = direction == "rtl" ? 1 : 0; + for (++i$7; i$7 < len && types[i$7] != "L"; ++i$7) {} + for (var j$2 = pos; j$2 < i$7;) { if (countsAsNum.test(types[j$2])) { - if (pos < j$2) { - order.splice(at, 0, new BidiSpan(1, pos, j$2)); - } + if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)); at += isRTL; } var nstart = j$2; for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {} order.splice(at, 0, new BidiSpan(2, nstart, j$2)); + at += isRTL; pos = j$2; - } else { - ++j$2; - } - } - if (pos < i$7) { - order.splice(at, 0, new BidiSpan(1, pos, i$7)); + } else { ++j$2; } } + if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)); } } } - if (direction == 'ltr') { + if (direction == "ltr") { if (order[0].level == 1 && (m = str.match(/^\s+/))) { order[0].from = m[0].length; order.unshift(new BidiSpan(0, 0, m[0].length)); @@ -715,8 +526,8 @@ } } - return direction == 'rtl' ? order.reverse() : order; - }; + return direction == "rtl" ? order.reverse() : order + } })(); // Get the bidi ordering for the given line (and cache it). Returns @@ -724,10 +535,8 @@ // BidiSpan objects otherwise. function getOrder(line, direction) { var order = line.order; - if (order == null) { - order = line.order = bidiOrdering(line.text, direction); - } - return order; + if (order == null) { order = line.order = bidiOrdering(line.text, direction); } + return order } // EVENT HANDLING @@ -737,280 +546,191 @@ var noHandlers = []; - var on = function (emitter, type, f) { + var on = function(emitter, type, f) { if (emitter.addEventListener) { emitter.addEventListener(type, f, false); } else if (emitter.attachEvent) { - emitter.attachEvent('on' + type, f); + emitter.attachEvent("on" + type, f); } else { - var map$$1 = emitter._handlers || (emitter._handlers = {}); - map$$1[type] = (map$$1[type] || noHandlers).concat(f); + var map = emitter._handlers || (emitter._handlers = {}); + map[type] = (map[type] || noHandlers).concat(f); } }; function getHandlers(emitter, type) { - return (emitter._handlers && emitter._handlers[type]) || noHandlers; + return emitter._handlers && emitter._handlers[type] || noHandlers } function off(emitter, type, f) { if (emitter.removeEventListener) { emitter.removeEventListener(type, f, false); } else if (emitter.detachEvent) { - emitter.detachEvent('on' + type, f); + emitter.detachEvent("on" + type, f); } else { - var map$$1 = emitter._handlers, - arr = map$$1 && map$$1[type]; + var map = emitter._handlers, arr = map && map[type]; if (arr) { var index = indexOf(arr, f); - if (index > -1) { - map$$1[type] = arr.slice(0, index).concat(arr.slice(index + 1)); - } + if (index > -1) + { map[type] = arr.slice(0, index).concat(arr.slice(index + 1)); } } } } function signal(emitter, type /*, values...*/) { var handlers = getHandlers(emitter, type); - if (!handlers.length) { - return; - } + if (!handlers.length) { return } var args = Array.prototype.slice.call(arguments, 2); - for (var i = 0; i < handlers.length; ++i) { - handlers[i].apply(null, args); - } + for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args); } } // The DOM events that CodeMirror handles can be overridden by // registering a (non-DOM) handler on the editor for the event name, // and preventDefault-ing the event in that handler. function signalDOMEvent(cm, e, override) { - if (typeof e == 'string') { - e = { - type: e, - preventDefault: function () { - this.defaultPrevented = true; - }, - }; - } + if (typeof e == "string") + { e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; } signal(cm, override || e.type, cm, e); - return e_defaultPrevented(e) || e.codemirrorIgnore; + return e_defaultPrevented(e) || e.codemirrorIgnore } function signalCursorActivity(cm) { var arr = cm._handlers && cm._handlers.cursorActivity; - if (!arr) { - return; - } - var set = - cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []); - for (var i = 0; i < arr.length; ++i) { - if (indexOf(set, arr[i]) == -1) { - set.push(arr[i]); - } - } + if (!arr) { return } + var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []); + for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1) + { set.push(arr[i]); } } } function hasHandler(emitter, type) { - return getHandlers(emitter, type).length > 0; + return getHandlers(emitter, type).length > 0 } // Add on and off methods to a constructor's prototype, to make // registering events on such objects more convenient. function eventMixin(ctor) { - ctor.prototype.on = function (type, f) { - on(this, type, f); - }; - ctor.prototype.off = function (type, f) { - off(this, type, f); - }; + ctor.prototype.on = function(type, f) {on(this, type, f);}; + ctor.prototype.off = function(type, f) {off(this, type, f);}; } // Due to the fact that we still support jurassic IE versions, some // compatibility wrappers are needed. function e_preventDefault(e) { - if (e.preventDefault) { - e.preventDefault(); - } else { - e.returnValue = false; - } + if (e.preventDefault) { e.preventDefault(); } + else { e.returnValue = false; } } function e_stopPropagation(e) { - if (e.stopPropagation) { - e.stopPropagation(); - } else { - e.cancelBubble = true; - } + if (e.stopPropagation) { e.stopPropagation(); } + else { e.cancelBubble = true; } } function e_defaultPrevented(e) { - return e.defaultPrevented != null - ? e.defaultPrevented - : e.returnValue == false; - } - function e_stop(e) { - e_preventDefault(e); - e_stopPropagation(e); + return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false } + function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);} - function e_target(e) { - return e.target || e.srcElement; - } + function e_target(e) {return e.target || e.srcElement} function e_button(e) { var b = e.which; if (b == null) { - if (e.button & 1) { - b = 1; - } else if (e.button & 2) { - b = 3; - } else if (e.button & 4) { - b = 2; - } + if (e.button & 1) { b = 1; } + else if (e.button & 2) { b = 3; } + else if (e.button & 4) { b = 2; } } - if (mac && e.ctrlKey && b == 1) { - b = 3; - } - return b; + if (mac && e.ctrlKey && b == 1) { b = 3; } + return b } // Detect drag-and-drop - var dragAndDrop = (function () { + var dragAndDrop = function() { // There is *some* kind of drag-and-drop support in IE6-8, but I // couldn't get it to work yet. - if (ie && ie_version < 9) { - return false; - } + if (ie && ie_version < 9) { return false } var div = elt('div'); - return 'draggable' in div || 'dragDrop' in div; - })(); + return "draggable" in div || "dragDrop" in div + }(); var zwspSupported; function zeroWidthElement(measure) { if (zwspSupported == null) { - var test = elt('span', '\u200b'); - removeChildrenAndAdd( - measure, - elt('span', [test, document.createTextNode('x')]), - ); - if (measure.firstChild.offsetHeight != 0) { - zwspSupported = - test.offsetWidth <= 1 && - test.offsetHeight > 2 && - !(ie && ie_version < 8); - } - } - var node = zwspSupported - ? elt('span', '\u200b') - : elt( - 'span', - '\u00a0', - null, - 'display: inline-block; width: 1px; margin-right: -1px', - ); - node.setAttribute('cm-text', ''); - return node; + var test = elt("span", "\u200b"); + removeChildrenAndAdd(measure, elt("span", [test, document.createTextNode("x")])); + if (measure.firstChild.offsetHeight != 0) + { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); } + } + var node = zwspSupported ? elt("span", "\u200b") : + elt("span", "\u00a0", null, "display: inline-block; width: 1px; margin-right: -1px"); + node.setAttribute("cm-text", ""); + return node } // Feature-detect IE's crummy client rect reporting for bidi text var badBidiRects; function hasBadBidiRects(measure) { - if (badBidiRects != null) { - return badBidiRects; - } - var txt = removeChildrenAndAdd( - measure, - document.createTextNode('A\u062eA'), - ); + if (badBidiRects != null) { return badBidiRects } + var txt = removeChildrenAndAdd(measure, document.createTextNode("A\u062eA")); var r0 = range(txt, 0, 1).getBoundingClientRect(); var r1 = range(txt, 1, 2).getBoundingClientRect(); removeChildren(measure); - if (!r0 || r0.left == r0.right) { - return false; - } // Safari returns null in some cases (#2780) - return (badBidiRects = r1.right - r0.right < 3); + if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780) + return badBidiRects = (r1.right - r0.right < 3) } // See if "".split is the broken IE version, if so, provide an // alternative way to split lines. - var splitLinesAuto = - '\n\nb'.split(/\n/).length != 3 - ? function (string) { - var pos = 0, - result = [], - l = string.length; - while (pos <= l) { - var nl = string.indexOf('\n', pos); - if (nl == -1) { - nl = string.length; - } - var line = string.slice( - pos, - string.charAt(nl - 1) == '\r' ? nl - 1 : nl, - ); - var rt = line.indexOf('\r'); - if (rt != -1) { - result.push(line.slice(0, rt)); - pos += rt + 1; - } else { - result.push(line); - pos = nl + 1; - } - } - return result; - } - : function (string) { - return string.split(/\r\n?|\n/); - }; - - var hasSelection = window.getSelection - ? function (te) { - try { - return te.selectionStart != te.selectionEnd; - } catch (e) { - return false; - } + var splitLinesAuto = "\n\nb".split(/\n/).length != 3 ? function (string) { + var pos = 0, result = [], l = string.length; + while (pos <= l) { + var nl = string.indexOf("\n", pos); + if (nl == -1) { nl = string.length; } + var line = string.slice(pos, string.charAt(nl - 1) == "\r" ? nl - 1 : nl); + var rt = line.indexOf("\r"); + if (rt != -1) { + result.push(line.slice(0, rt)); + pos += rt + 1; + } else { + result.push(line); + pos = nl + 1; } - : function (te) { - var range$$1; - try { - range$$1 = te.ownerDocument.selection.createRange(); - } catch (e) {} - if (!range$$1 || range$$1.parentElement() != te) { - return false; - } - return range$$1.compareEndPoints('StartToEnd', range$$1) != 0; - }; + } + return result + } : function (string) { return string.split(/\r\n?|\n/); }; + + var hasSelection = window.getSelection ? function (te) { + try { return te.selectionStart != te.selectionEnd } + catch(e) { return false } + } : function (te) { + var range; + try {range = te.ownerDocument.selection.createRange();} + catch(e) {} + if (!range || range.parentElement() != te) { return false } + return range.compareEndPoints("StartToEnd", range) != 0 + }; var hasCopyEvent = (function () { - var e = elt('div'); - if ('oncopy' in e) { - return true; - } - e.setAttribute('oncopy', 'return;'); - return typeof e.oncopy == 'function'; + var e = elt("div"); + if ("oncopy" in e) { return true } + e.setAttribute("oncopy", "return;"); + return typeof e.oncopy == "function" })(); var badZoomedRects = null; function hasBadZoomedRects(measure) { - if (badZoomedRects != null) { - return badZoomedRects; - } - var node = removeChildrenAndAdd(measure, elt('span', 'x')); + if (badZoomedRects != null) { return badZoomedRects } + var node = removeChildrenAndAdd(measure, elt("span", "x")); var normal = node.getBoundingClientRect(); var fromRange = range(node, 0, 1).getBoundingClientRect(); - return (badZoomedRects = Math.abs(normal.left - fromRange.left) > 1); + return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1 } // Known modes, by name and by MIME - var modes = {}, - mimeModes = {}; + var modes = {}, mimeModes = {}; // Extra arguments are stored as the mode's dependencies, which is // used by (legacy) mechanisms like loadmode.js to automatically // load a mode. (Preferred mechanism is the require/define calls.) function defineMode(name, mode) { - if (arguments.length > 2) { - mode.dependencies = Array.prototype.slice.call(arguments, 2); - } + if (arguments.length > 2) + { mode.dependencies = Array.prototype.slice.call(arguments, 2); } modes[name] = mode; } @@ -1021,35 +741,20 @@ // Given a MIME type, a {name, ...options} config object, or a name // string, return a mode config object. function resolveMode(spec) { - if (typeof spec == 'string' && mimeModes.hasOwnProperty(spec)) { + if (typeof spec == "string" && mimeModes.hasOwnProperty(spec)) { spec = mimeModes[spec]; - } else if ( - spec && - typeof spec.name == 'string' && - mimeModes.hasOwnProperty(spec.name) - ) { + } else if (spec && typeof spec.name == "string" && mimeModes.hasOwnProperty(spec.name)) { var found = mimeModes[spec.name]; - if (typeof found == 'string') { - found = { name: found }; - } + if (typeof found == "string") { found = {name: found}; } spec = createObj(found, spec); spec.name = found.name; - } else if ( - typeof spec == 'string' && - /^[\w\-]+\/[\w\-]+\+xml$/.test(spec) - ) { - return resolveMode('application/xml'); - } else if ( - typeof spec == 'string' && - /^[\w\-]+\/[\w\-]+\+json$/.test(spec) - ) { - return resolveMode('application/json'); - } - if (typeof spec == 'string') { - return { name: spec }; - } else { - return spec || { name: 'null' }; + } else if (typeof spec == "string" && /^[\w\-]+\/[\w\-]+\+xml$/.test(spec)) { + return resolveMode("application/xml") + } else if (typeof spec == "string" && /^[\w\-]+\/[\w\-]+\+json$/.test(spec)) { + return resolveMode("application/json") } + if (typeof spec == "string") { return {name: spec} } + else { return spec || {name: "null"} } } // Given a mode spec (anything that resolveMode accepts), find and @@ -1057,61 +762,42 @@ function getMode(options, spec) { spec = resolveMode(spec); var mfactory = modes[spec.name]; - if (!mfactory) { - return getMode(options, 'text/plain'); - } + if (!mfactory) { return getMode(options, "text/plain") } var modeObj = mfactory(options, spec); if (modeExtensions.hasOwnProperty(spec.name)) { var exts = modeExtensions[spec.name]; for (var prop in exts) { - if (!exts.hasOwnProperty(prop)) { - continue; - } - if (modeObj.hasOwnProperty(prop)) { - modeObj['_' + prop] = modeObj[prop]; - } + if (!exts.hasOwnProperty(prop)) { continue } + if (modeObj.hasOwnProperty(prop)) { modeObj["_" + prop] = modeObj[prop]; } modeObj[prop] = exts[prop]; } } modeObj.name = spec.name; - if (spec.helperType) { - modeObj.helperType = spec.helperType; - } - if (spec.modeProps) { - for (var prop$1 in spec.modeProps) { - modeObj[prop$1] = spec.modeProps[prop$1]; - } - } + if (spec.helperType) { modeObj.helperType = spec.helperType; } + if (spec.modeProps) { for (var prop$1 in spec.modeProps) + { modeObj[prop$1] = spec.modeProps[prop$1]; } } - return modeObj; + return modeObj } // This can be used to attach properties to mode objects from // outside the actual mode definition. var modeExtensions = {}; function extendMode(mode, properties) { - var exts = modeExtensions.hasOwnProperty(mode) - ? modeExtensions[mode] - : (modeExtensions[mode] = {}); + var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {}); copyObj(properties, exts); } function copyState(mode, state) { - if (state === true) { - return state; - } - if (mode.copyState) { - return mode.copyState(state); - } + if (state === true) { return state } + if (mode.copyState) { return mode.copyState(state) } var nstate = {}; for (var n in state) { var val = state[n]; - if (val instanceof Array) { - val = val.concat([]); - } + if (val instanceof Array) { val = val.concat([]); } nstate[n] = val; } - return nstate; + return nstate } // Given a mode and a state (for that mode), find the inner mode and @@ -1120,17 +806,15 @@ var info; while (mode.innerMode) { info = mode.innerMode(state); - if (!info || info.mode == mode) { - break; - } + if (!info || info.mode == mode) { break } state = info.state; mode = info.mode; } - return info || { mode: mode, state: state }; + return info || {mode: mode, state: state} } function startState(mode, a1, a2) { - return mode.startState ? mode.startState(a1, a2) : true; + return mode.startState ? mode.startState(a1, a2) : true } // STRING STREAM @@ -1138,7 +822,7 @@ // Fed to the mode parsers, provides helper functions to make // parsers more succinct. - var StringStream = function (string, tabSize, lineOracle) { + var StringStream = function(string, tabSize, lineOracle) { this.pos = this.start = 0; this.string = string; this.tabSize = tabSize || 8; @@ -1147,207 +831,131 @@ this.lineOracle = lineOracle; }; - StringStream.prototype.eol = function () { - return this.pos >= this.string.length; - }; - StringStream.prototype.sol = function () { - return this.pos == this.lineStart; - }; - StringStream.prototype.peek = function () { - return this.string.charAt(this.pos) || undefined; - }; + StringStream.prototype.eol = function () {return this.pos >= this.string.length}; + StringStream.prototype.sol = function () {return this.pos == this.lineStart}; + StringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined}; StringStream.prototype.next = function () { - if (this.pos < this.string.length) { - return this.string.charAt(this.pos++); - } + if (this.pos < this.string.length) + { return this.string.charAt(this.pos++) } }; StringStream.prototype.eat = function (match) { var ch = this.string.charAt(this.pos); var ok; - if (typeof match == 'string') { - ok = ch == match; - } else { - ok = ch && (match.test ? match.test(ch) : match(ch)); - } - if (ok) { - ++this.pos; - return ch; - } + if (typeof match == "string") { ok = ch == match; } + else { ok = ch && (match.test ? match.test(ch) : match(ch)); } + if (ok) {++this.pos; return ch} }; StringStream.prototype.eatWhile = function (match) { var start = this.pos; - while (this.eat(match)) {} - return this.pos > start; + while (this.eat(match)){} + return this.pos > start }; StringStream.prototype.eatSpace = function () { - var this$1 = this; - var start = this.pos; - while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) { - ++this$1.pos; - } - return this.pos > start; - }; - StringStream.prototype.skipToEnd = function () { - this.pos = this.string.length; + while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) { ++this.pos; } + return this.pos > start }; + StringStream.prototype.skipToEnd = function () {this.pos = this.string.length;}; StringStream.prototype.skipTo = function (ch) { var found = this.string.indexOf(ch, this.pos); - if (found > -1) { - this.pos = found; - return true; - } - }; - StringStream.prototype.backUp = function (n) { - this.pos -= n; + if (found > -1) {this.pos = found; return true} }; + StringStream.prototype.backUp = function (n) {this.pos -= n;}; StringStream.prototype.column = function () { if (this.lastColumnPos < this.start) { - this.lastColumnValue = countColumn( - this.string, - this.start, - this.tabSize, - this.lastColumnPos, - this.lastColumnValue, - ); + this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue); this.lastColumnPos = this.start; } - return ( - this.lastColumnValue - - (this.lineStart - ? countColumn(this.string, this.lineStart, this.tabSize) - : 0) - ); + return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0) }; StringStream.prototype.indentation = function () { - return ( - countColumn(this.string, null, this.tabSize) - - (this.lineStart - ? countColumn(this.string, this.lineStart, this.tabSize) - : 0) - ); + return countColumn(this.string, null, this.tabSize) - + (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0) }; StringStream.prototype.match = function (pattern, consume, caseInsensitive) { - if (typeof pattern == 'string') { - var cased = function (str) { - return caseInsensitive ? str.toLowerCase() : str; - }; + if (typeof pattern == "string") { + var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; }; var substr = this.string.substr(this.pos, pattern.length); if (cased(substr) == cased(pattern)) { - if (consume !== false) { - this.pos += pattern.length; - } - return true; + if (consume !== false) { this.pos += pattern.length; } + return true } } else { var match = this.string.slice(this.pos).match(pattern); - if (match && match.index > 0) { - return null; - } - if (match && consume !== false) { - this.pos += match[0].length; - } - return match; + if (match && match.index > 0) { return null } + if (match && consume !== false) { this.pos += match[0].length; } + return match } }; - StringStream.prototype.current = function () { - return this.string.slice(this.start, this.pos); - }; + StringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)}; StringStream.prototype.hideFirstChars = function (n, inner) { this.lineStart += n; - try { - return inner(); - } finally { - this.lineStart -= n; - } + try { return inner() } + finally { this.lineStart -= n; } }; StringStream.prototype.lookAhead = function (n) { var oracle = this.lineOracle; - return oracle && oracle.lookAhead(n); + return oracle && oracle.lookAhead(n) }; StringStream.prototype.baseToken = function () { var oracle = this.lineOracle; - return oracle && oracle.baseToken(this.pos); + return oracle && oracle.baseToken(this.pos) }; // Find the line object corresponding to the given line number. function getLine(doc, n) { n -= doc.first; - if (n < 0 || n >= doc.size) { - throw new Error( - 'There is no line ' + (n + doc.first) + ' in the document.', - ); - } + if (n < 0 || n >= doc.size) { throw new Error("There is no line " + (n + doc.first) + " in the document.") } var chunk = doc; while (!chunk.lines) { - for (var i = 0; ; ++i) { - var child = chunk.children[i], - sz = child.chunkSize(); - if (n < sz) { - chunk = child; - break; - } + for (var i = 0;; ++i) { + var child = chunk.children[i], sz = child.chunkSize(); + if (n < sz) { chunk = child; break } n -= sz; } } - return chunk.lines[n]; + return chunk.lines[n] } // Get the part of a document between two positions, as an array of // strings. function getBetween(doc, start, end) { - var out = [], - n = start.line; + var out = [], n = start.line; doc.iter(start.line, end.line + 1, function (line) { var text = line.text; - if (n == end.line) { - text = text.slice(0, end.ch); - } - if (n == start.line) { - text = text.slice(start.ch); - } + if (n == end.line) { text = text.slice(0, end.ch); } + if (n == start.line) { text = text.slice(start.ch); } out.push(text); ++n; }); - return out; + return out } // Get the lines between from and to, as array of strings. function getLines(doc, from, to) { var out = []; - doc.iter(from, to, function (line) { - out.push(line.text); - }); // iter aborts when callback returns truthy value - return out; + doc.iter(from, to, function (line) { out.push(line.text); }); // iter aborts when callback returns truthy value + return out } // Update the height of a line, propagating the height change // upwards to parent nodes. function updateLineHeight(line, height) { var diff = height - line.height; - if (diff) { - for (var n = line; n; n = n.parent) { - n.height += diff; - } - } + if (diff) { for (var n = line; n; n = n.parent) { n.height += diff; } } } // Given a line object, find its line number by walking up through // its parent links. function lineNo(line) { - if (line.parent == null) { - return null; - } - var cur = line.parent, - no = indexOf(cur.lines, line); + if (line.parent == null) { return null } + var cur = line.parent, no = indexOf(cur.lines, line); for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) { - for (var i = 0; ; ++i) { - if (chunk.children[i] == cur) { - break; - } + for (var i = 0;; ++i) { + if (chunk.children[i] == cur) { break } no += chunk.children[i].chunkSize(); } } - return no + cur.first; + return no + cur.first } // Find the line at the given vertical position, using the height @@ -1356,44 +964,33 @@ var n = chunk.first; outer: do { for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) { - var child = chunk.children[i$1], - ch = child.height; - if (h < ch) { - chunk = child; - continue outer; - } + var child = chunk.children[i$1], ch = child.height; + if (h < ch) { chunk = child; continue outer } h -= ch; n += child.chunkSize(); } - return n; - } while (!chunk.lines); + return n + } while (!chunk.lines) var i = 0; for (; i < chunk.lines.length; ++i) { - var line = chunk.lines[i], - lh = line.height; - if (h < lh) { - break; - } + var line = chunk.lines[i], lh = line.height; + if (h < lh) { break } h -= lh; } - return n + i; + return n + i } - function isLine(doc, l) { - return l >= doc.first && l < doc.first + doc.size; - } + function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size} function lineNumberFor(options, i) { - return String(options.lineNumberFormatter(i + options.firstLineNumber)); + return String(options.lineNumberFormatter(i + options.firstLineNumber)) } // A Pos instance represents a position within the text. function Pos(line, ch, sticky) { - if (sticky === void 0) sticky = null; + if ( sticky === void 0 ) sticky = null; - if (!(this instanceof Pos)) { - return new Pos(line, ch, sticky); - } + if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) } this.line = line; this.ch = ch; this.sticky = sticky; @@ -1401,63 +998,41 @@ // Compare two positions, return 0 if they are the same, a negative // number when a is less, and a positive number otherwise. - function cmp(a, b) { - return a.line - b.line || a.ch - b.ch; - } + function cmp(a, b) { return a.line - b.line || a.ch - b.ch } - function equalCursorPos(a, b) { - return a.sticky == b.sticky && cmp(a, b) == 0; - } + function equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 } - function copyPos(x) { - return Pos(x.line, x.ch); - } - function maxPos(a, b) { - return cmp(a, b) < 0 ? b : a; - } - function minPos(a, b) { - return cmp(a, b) < 0 ? a : b; - } + function copyPos(x) {return Pos(x.line, x.ch)} + function maxPos(a, b) { return cmp(a, b) < 0 ? b : a } + function minPos(a, b) { return cmp(a, b) < 0 ? a : b } // Most of the external API clips given positions to make sure they // actually exist within the document. - function clipLine(doc, n) { - return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1)); - } + function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))} function clipPos(doc, pos) { - if (pos.line < doc.first) { - return Pos(doc.first, 0); - } + if (pos.line < doc.first) { return Pos(doc.first, 0) } var last = doc.first + doc.size - 1; - if (pos.line > last) { - return Pos(last, getLine(doc, last).text.length); - } - return clipToLen(pos, getLine(doc, pos.line).text.length); + if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) } + return clipToLen(pos, getLine(doc, pos.line).text.length) } function clipToLen(pos, linelen) { var ch = pos.ch; - if (ch == null || ch > linelen) { - return Pos(pos.line, linelen); - } else if (ch < 0) { - return Pos(pos.line, 0); - } else { - return pos; - } + if (ch == null || ch > linelen) { return Pos(pos.line, linelen) } + else if (ch < 0) { return Pos(pos.line, 0) } + else { return pos } } function clipPosArray(doc, array) { var out = []; - for (var i = 0; i < array.length; i++) { - out[i] = clipPos(doc, array[i]); - } - return out; + for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]); } + return out } - var SavedContext = function (state, lookAhead) { + var SavedContext = function(state, lookAhead) { this.state = state; this.lookAhead = lookAhead; }; - var Context = function (doc, state, line, lookAhead) { + var Context = function(doc, state, line, lookAhead) { this.state = state; this.doc = doc; this.line = line; @@ -1468,56 +1043,37 @@ Context.prototype.lookAhead = function (n) { var line = this.doc.getLine(this.line + n); - if (line != null && n > this.maxLookAhead) { - this.maxLookAhead = n; - } - return line; + if (line != null && n > this.maxLookAhead) { this.maxLookAhead = n; } + return line }; Context.prototype.baseToken = function (n) { - var this$1 = this; - - if (!this.baseTokens) { - return null; - } - while (this.baseTokens[this.baseTokenPos] <= n) { - this$1.baseTokenPos += 2; - } + if (!this.baseTokens) { return null } + while (this.baseTokens[this.baseTokenPos] <= n) + { this.baseTokenPos += 2; } var type = this.baseTokens[this.baseTokenPos + 1]; - return { - type: type && type.replace(/( |^)overlay .*/, ''), - size: this.baseTokens[this.baseTokenPos] - n, - }; + return {type: type && type.replace(/( |^)overlay .*/, ""), + size: this.baseTokens[this.baseTokenPos] - n} }; Context.prototype.nextLine = function () { this.line++; - if (this.maxLookAhead > 0) { - this.maxLookAhead--; - } + if (this.maxLookAhead > 0) { this.maxLookAhead--; } }; Context.fromSaved = function (doc, saved, line) { - if (saved instanceof SavedContext) { - return new Context( - doc, - copyState(doc.mode, saved.state), - line, - saved.lookAhead, - ); - } else { - return new Context(doc, copyState(doc.mode, saved), line); - } + if (saved instanceof SavedContext) + { return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead) } + else + { return new Context(doc, copyState(doc.mode, saved), line) } }; Context.prototype.save = function (copy) { - var state = - copy !== false ? copyState(this.doc.mode, this.state) : this.state; - return this.maxLookAhead > 0 - ? new SavedContext(state, this.maxLookAhead) - : state; + var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state; + return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state }; + // Compute a style array (an array starting with a mode generation // -- for invalidation -- followed by pairs of end positions and // style strings), which is used to highlight the tokens on the @@ -1525,128 +1081,79 @@ function highlightLine(cm, line, context, forceToEnd) { // A styles array always starts with a number identifying the // mode/overlays that it is based on (for easy invalidation). - var st = [cm.state.modeGen], - lineClasses = {}; + var st = [cm.state.modeGen], lineClasses = {}; // Compute the base array of styles - runMode( - cm, - line.text, - cm.doc.mode, - context, - function (end, style) { - return st.push(end, style); - }, - lineClasses, - forceToEnd, - ); + runMode(cm, line.text, cm.doc.mode, context, function (end, style) { return st.push(end, style); }, + lineClasses, forceToEnd); var state = context.state; // Run overlays, adjust style array. - var loop = function (o) { + var loop = function ( o ) { context.baseTokens = st; - var overlay = cm.state.overlays[o], - i = 1, - at = 0; + var overlay = cm.state.overlays[o], i = 1, at = 0; context.state = true; - runMode( - cm, - line.text, - overlay.mode, - context, - function (end, style) { - var start = i; - // Ensure there's a token end at the current position, and that i points at it - while (at < end) { - var i_end = st[i]; - if (i_end > end) { - st.splice(i, 1, end, st[i + 1], i_end); - } - i += 2; - at = Math.min(end, i_end); - } - if (!style) { - return; - } - if (overlay.opaque) { - st.splice(start, i - start, end, 'overlay ' + style); - i = start + 2; - } else { - for (; start < i; start += 2) { - var cur = st[start + 1]; - st[start + 1] = (cur ? cur + ' ' : '') + 'overlay ' + style; - } + runMode(cm, line.text, overlay.mode, context, function (end, style) { + var start = i; + // Ensure there's a token end at the current position, and that i points at it + while (at < end) { + var i_end = st[i]; + if (i_end > end) + { st.splice(i, 1, end, st[i+1], i_end); } + i += 2; + at = Math.min(end, i_end); + } + if (!style) { return } + if (overlay.opaque) { + st.splice(start, i - start, end, "overlay " + style); + i = start + 2; + } else { + for (; start < i; start += 2) { + var cur = st[start+1]; + st[start+1] = (cur ? cur + " " : "") + "overlay " + style; } - }, - lineClasses, - ); + } + }, lineClasses); context.state = state; context.baseTokens = null; context.baseTokenPos = 1; }; - for (var o = 0; o < cm.state.overlays.length; ++o) loop(o); + for (var o = 0; o < cm.state.overlays.length; ++o) loop( o ); - return { - styles: st, - classes: - lineClasses.bgClass || lineClasses.textClass ? lineClasses : null, - }; + return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null} } function getLineStyles(cm, line, updateFrontier) { if (!line.styles || line.styles[0] != cm.state.modeGen) { var context = getContextBefore(cm, lineNo(line)); - var resetState = - line.text.length > cm.options.maxHighlightLength && - copyState(cm.doc.mode, context.state); + var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state); var result = highlightLine(cm, line, context); - if (resetState) { - context.state = resetState; - } + if (resetState) { context.state = resetState; } line.stateAfter = context.save(!resetState); line.styles = result.styles; - if (result.classes) { - line.styleClasses = result.classes; - } else if (line.styleClasses) { - line.styleClasses = null; - } - if (updateFrontier === cm.doc.highlightFrontier) { - cm.doc.modeFrontier = Math.max( - cm.doc.modeFrontier, - ++cm.doc.highlightFrontier, - ); - } + if (result.classes) { line.styleClasses = result.classes; } + else if (line.styleClasses) { line.styleClasses = null; } + if (updateFrontier === cm.doc.highlightFrontier) + { cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier); } } - return line.styles; + return line.styles } function getContextBefore(cm, n, precise) { - var doc = cm.doc, - display = cm.display; - if (!doc.mode.startState) { - return new Context(doc, true, n); - } + var doc = cm.doc, display = cm.display; + if (!doc.mode.startState) { return new Context(doc, true, n) } var start = findStartLine(cm, n, precise); var saved = start > doc.first && getLine(doc, start - 1).stateAfter; - var context = saved - ? Context.fromSaved(doc, saved, start) - : new Context(doc, startState(doc.mode), start); + var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start); doc.iter(start, n, function (line) { processLine(cm, line.text, context); var pos = context.line; - line.stateAfter = - pos == n - 1 || - pos % 5 == 0 || - (pos >= display.viewFrom && pos < display.viewTo) - ? context.save() - : null; + line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null; context.nextLine(); }); - if (precise) { - doc.modeFrontier = context.line; - } - return context; + if (precise) { doc.modeFrontier = context.line; } + return context } // Lightweight form of highlight -- proceed over this line and @@ -1656,9 +1163,7 @@ var mode = cm.doc.mode; var stream = new StringStream(text, cm.options.tabSize, context); stream.start = stream.pos = startAt || 0; - if (text == '') { - callBlankLine(mode, context.state); - } + if (text == "") { callBlankLine(mode, context.state); } while (!stream.eol()) { readToken(mode, stream, context.state); stream.start = stream.pos; @@ -1666,34 +1171,23 @@ } function callBlankLine(mode, state) { - if (mode.blankLine) { - return mode.blankLine(state); - } - if (!mode.innerMode) { - return; - } + if (mode.blankLine) { return mode.blankLine(state) } + if (!mode.innerMode) { return } var inner = innerMode(mode, state); - if (inner.mode.blankLine) { - return inner.mode.blankLine(inner.state); - } + if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) } } function readToken(mode, stream, state, inner) { for (var i = 0; i < 10; i++) { - if (inner) { - inner[0] = innerMode(mode, state).mode; - } + if (inner) { inner[0] = innerMode(mode, state).mode; } var style = mode.token(stream, state); - if (stream.pos > stream.start) { - return style; - } + if (stream.pos > stream.start) { return style } } - throw new Error('Mode ' + mode.name + ' failed to advance stream.'); + throw new Error("Mode " + mode.name + " failed to advance stream.") } - var Token = function (stream, type, state) { - this.start = stream.start; - this.end = stream.pos; + var Token = function(stream, type, state) { + this.start = stream.start; this.end = stream.pos; this.string = stream.current(); this.type = type || null; this.state = state; @@ -1701,85 +1195,53 @@ // Utility for getTokenAt and getLineTokens function takeToken(cm, pos, precise, asArray) { - var doc = cm.doc, - mode = doc.mode, - style; + var doc = cm.doc, mode = doc.mode, style; pos = clipPos(doc, pos); - var line = getLine(doc, pos.line), - context = getContextBefore(cm, pos.line, precise); - var stream = new StringStream(line.text, cm.options.tabSize, context), - tokens; - if (asArray) { - tokens = []; - } + var line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise); + var stream = new StringStream(line.text, cm.options.tabSize, context), tokens; + if (asArray) { tokens = []; } while ((asArray || stream.pos < pos.ch) && !stream.eol()) { stream.start = stream.pos; style = readToken(mode, stream, context.state); - if (asArray) { - tokens.push( - new Token(stream, style, copyState(doc.mode, context.state)), - ); - } + if (asArray) { tokens.push(new Token(stream, style, copyState(doc.mode, context.state))); } } - return asArray ? tokens : new Token(stream, style, context.state); + return asArray ? tokens : new Token(stream, style, context.state) } function extractLineClasses(type, output) { - if (type) { - for (;;) { - var lineClass = type.match(/(?:^|\s+)line-(background-)?(\S+)/); - if (!lineClass) { - break; - } - type = - type.slice(0, lineClass.index) + - type.slice(lineClass.index + lineClass[0].length); - var prop = lineClass[1] ? 'bgClass' : 'textClass'; - if (output[prop] == null) { - output[prop] = lineClass[2]; - } else if ( - !new RegExp('(?:^|s)' + lineClass[2] + '(?:$|s)').test(output[prop]) - ) { - output[prop] += ' ' + lineClass[2]; - } - } - } - return type; + if (type) { for (;;) { + var lineClass = type.match(/(?:^|\s+)line-(background-)?(\S+)/); + if (!lineClass) { break } + type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length); + var prop = lineClass[1] ? "bgClass" : "textClass"; + if (output[prop] == null) + { output[prop] = lineClass[2]; } + else if (!(new RegExp("(?:^|\\s)" + lineClass[2] + "(?:$|\\s)")).test(output[prop])) + { output[prop] += " " + lineClass[2]; } + } } + return type } // Run the given mode's parser over a line, calling f for each token. function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) { var flattenSpans = mode.flattenSpans; - if (flattenSpans == null) { - flattenSpans = cm.options.flattenSpans; - } - var curStart = 0, - curStyle = null; - var stream = new StringStream(text, cm.options.tabSize, context), - style; + if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans; } + var curStart = 0, curStyle = null; + var stream = new StringStream(text, cm.options.tabSize, context), style; var inner = cm.options.addModeClass && [null]; - if (text == '') { - extractLineClasses(callBlankLine(mode, context.state), lineClasses); - } + if (text == "") { extractLineClasses(callBlankLine(mode, context.state), lineClasses); } while (!stream.eol()) { if (stream.pos > cm.options.maxHighlightLength) { flattenSpans = false; - if (forceToEnd) { - processLine(cm, text, context, stream.pos); - } + if (forceToEnd) { processLine(cm, text, context, stream.pos); } stream.pos = text.length; style = null; } else { - style = extractLineClasses( - readToken(mode, stream, context.state, inner), - lineClasses, - ); + style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses); } if (inner) { var mName = inner[0].name; - if (mName) { - style = 'm-' + (style ? mName + ' ' + style : mName); - } + if (mName) { style = "m-" + (style ? mName + " " + style : mName); } } if (!flattenSpans || curStyle != style) { while (curStart < stream.start) { @@ -1806,58 +1268,41 @@ // smallest indentation, which tends to need the least context to // parse correctly. function findStartLine(cm, n, precise) { - var minindent, - minline, - doc = cm.doc; + var minindent, minline, doc = cm.doc; var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100); for (var search = n; search > lim; --search) { - if (search <= doc.first) { - return doc.first; - } - var line = getLine(doc, search - 1), - after = line.stateAfter; - if ( - after && - (!precise || - search + (after instanceof SavedContext ? after.lookAhead : 0) <= - doc.modeFrontier) - ) { - return search; - } + if (search <= doc.first) { return doc.first } + var line = getLine(doc, search - 1), after = line.stateAfter; + if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier)) + { return search } var indented = countColumn(line.text, null, cm.options.tabSize); if (minline == null || minindent > indented) { minline = search - 1; minindent = indented; } } - return minline; + return minline } function retreatFrontier(doc, n) { doc.modeFrontier = Math.min(doc.modeFrontier, n); - if (doc.highlightFrontier < n - 10) { - return; - } + if (doc.highlightFrontier < n - 10) { return } var start = doc.first; for (var line = n - 1; line > start; line--) { var saved = getLine(doc, line).stateAfter; // change is on 3 // state on line 1 looked ahead 2 -- so saw 3 // test 1 + 2 < 3 should cover this - if ( - saved && - (!(saved instanceof SavedContext) || line + saved.lookAhead < n) - ) { + if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) { start = line + 1; - break; + break } } doc.highlightFrontier = Math.min(doc.highlightFrontier, start); } // Optimize some code when these features are not used. - var sawReadOnlySpans = false, - sawCollapsedSpans = false; + var sawReadOnlySpans = false, sawCollapsedSpans = false; function seeReadOnlySpans() { sawReadOnlySpans = true; @@ -1871,37 +1316,35 @@ function MarkedSpan(marker, from, to) { this.marker = marker; - this.from = from; - this.to = to; + this.from = from; this.to = to; } // Search an array of spans for a span matching the given marker. function getMarkedSpanFor(spans, marker) { - if (spans) { - for (var i = 0; i < spans.length; ++i) { - var span = spans[i]; - if (span.marker == marker) { - return span; - } - } - } + if (spans) { for (var i = 0; i < spans.length; ++i) { + var span = spans[i]; + if (span.marker == marker) { return span } + } } } + // Remove a span from an array, returning undefined if no spans are // left (we don't store arrays for lines without spans). function removeMarkedSpan(spans, span) { var r; - for (var i = 0; i < spans.length; ++i) { - if (spans[i] != span) { - (r || (r = [])).push(spans[i]); - } - } - return r; + for (var i = 0; i < spans.length; ++i) + { if (spans[i] != span) { (r || (r = [])).push(spans[i]); } } + return r } + // Add a span to a line. - function addMarkedSpan(line, span) { - line.markedSpans = line.markedSpans - ? line.markedSpans.concat([span]) - : [span]; + function addMarkedSpan(line, span, op) { + var inThisOp = op && window.WeakSet && (op.markedSpans || (op.markedSpans = new WeakSet)); + if (inThisOp && line.markedSpans && inThisOp.has(line.markedSpans)) { + line.markedSpans.push(span); + } else { + line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span]; + if (inThisOp) { inThisOp.add(line.markedSpans); } + } span.marker.attachLine(line); } @@ -1911,59 +1354,28 @@ // undefined if nothing remains). function markedSpansBefore(old, startCh, isInsert) { var nw; - if (old) { - for (var i = 0; i < old.length; ++i) { - var span = old[i], - marker = span.marker; - var startsBefore = - span.from == null || - (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh); - if ( - startsBefore || - (span.from == startCh && - marker.type == 'bookmark' && - (!isInsert || !span.marker.insertLeft)) - ) { - var endsAfter = - span.to == null || - (marker.inclusiveRight ? span.to >= startCh : span.to > startCh); - (nw || (nw = [])).push( - new MarkedSpan(marker, span.from, endsAfter ? null : span.to), - ); - } + if (old) { for (var i = 0; i < old.length; ++i) { + var span = old[i], marker = span.marker; + var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh); + if (startsBefore || span.from == startCh && marker.type == "bookmark" && (!isInsert || !span.marker.insertLeft)) { + var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh) + ;(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to)); } - } - return nw; + } } + return nw } function markedSpansAfter(old, endCh, isInsert) { var nw; - if (old) { - for (var i = 0; i < old.length; ++i) { - var span = old[i], - marker = span.marker; - var endsAfter = - span.to == null || - (marker.inclusiveRight ? span.to >= endCh : span.to > endCh); - if ( - endsAfter || - (span.from == endCh && - marker.type == 'bookmark' && - (!isInsert || span.marker.insertLeft)) - ) { - var startsBefore = - span.from == null || - (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh); - (nw || (nw = [])).push( - new MarkedSpan( - marker, - startsBefore ? null : span.from - endCh, - span.to == null ? null : span.to - endCh, - ), - ); - } + if (old) { for (var i = 0; i < old.length; ++i) { + var span = old[i], marker = span.marker; + var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh); + if (endsAfter || span.from == endCh && marker.type == "bookmark" && (!isInsert || span.marker.insertLeft)) { + var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh) + ;(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh, + span.to == null ? null : span.to - endCh)); } - } - return nw; + } } + return nw } // Given a change object, compute the new set of marker spans that @@ -1973,39 +1385,26 @@ // spans partially within the change. Returns an array of span // arrays with one element for each line in (after) the change. function stretchSpansOverChange(doc, change) { - if (change.full) { - return null; - } - var oldFirst = - isLine(doc, change.from.line) && - getLine(doc, change.from.line).markedSpans; - var oldLast = - isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans; - if (!oldFirst && !oldLast) { - return null; - } + if (change.full) { return null } + var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans; + var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans; + if (!oldFirst && !oldLast) { return null } - var startCh = change.from.ch, - endCh = change.to.ch, - isInsert = cmp(change.from, change.to) == 0; + var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0; // Get the spans that 'stick out' on both sides var first = markedSpansBefore(oldFirst, startCh, isInsert); var last = markedSpansAfter(oldLast, endCh, isInsert); // Next, merge those two ends - var sameLine = change.text.length == 1, - offset = lst(change.text).length + (sameLine ? startCh : 0); + var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0); if (first) { // Fix up .to properties of first for (var i = 0; i < first.length; ++i) { var span = first[i]; if (span.to == null) { var found = getMarkedSpanFor(last, span.marker); - if (!found) { - span.to = startCh; - } else if (sameLine) { - span.to = found.to == null ? null : found.to + offset; - } + if (!found) { span.to = startCh; } + else if (sameLine) { span.to = found.to == null ? null : found.to + offset; } } } } @@ -2013,53 +1412,36 @@ // Fix up .from in last (or move them into first in case of sameLine) for (var i$1 = 0; i$1 < last.length; ++i$1) { var span$1 = last[i$1]; - if (span$1.to != null) { - span$1.to += offset; - } + if (span$1.to != null) { span$1.to += offset; } if (span$1.from == null) { var found$1 = getMarkedSpanFor(first, span$1.marker); if (!found$1) { span$1.from = offset; - if (sameLine) { - (first || (first = [])).push(span$1); - } + if (sameLine) { (first || (first = [])).push(span$1); } } } else { span$1.from += offset; - if (sameLine) { - (first || (first = [])).push(span$1); - } + if (sameLine) { (first || (first = [])).push(span$1); } } } } // Make sure we didn't create any zero-length spans - if (first) { - first = clearEmptySpans(first); - } - if (last && last != first) { - last = clearEmptySpans(last); - } + if (first) { first = clearEmptySpans(first); } + if (last && last != first) { last = clearEmptySpans(last); } var newMarkers = [first]; if (!sameLine) { // Fill gap with whole-line-spans - var gap = change.text.length - 2, - gapMarkers; - if (gap > 0 && first) { - for (var i$2 = 0; i$2 < first.length; ++i$2) { - if (first[i$2].to == null) { - (gapMarkers || (gapMarkers = [])).push( - new MarkedSpan(first[i$2].marker, null, null), - ); - } - } - } - for (var i$3 = 0; i$3 < gap; ++i$3) { - newMarkers.push(gapMarkers); - } + var gap = change.text.length - 2, gapMarkers; + if (gap > 0 && first) + { for (var i$2 = 0; i$2 < first.length; ++i$2) + { if (first[i$2].to == null) + { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)); } } } + for (var i$3 = 0; i$3 < gap; ++i$3) + { newMarkers.push(gapMarkers); } newMarkers.push(last); } - return newMarkers; + return newMarkers } // Remove spans that are empty and don't have a clearWhenEmpty @@ -2067,191 +1449,118 @@ function clearEmptySpans(spans) { for (var i = 0; i < spans.length; ++i) { var span = spans[i]; - if ( - span.from != null && - span.from == span.to && - span.marker.clearWhenEmpty !== false - ) { - spans.splice(i--, 1); - } + if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false) + { spans.splice(i--, 1); } } - if (!spans.length) { - return null; - } - return spans; + if (!spans.length) { return null } + return spans } // Used to 'clip' out readOnly ranges when making a change. function removeReadOnlyRanges(doc, from, to) { var markers = null; doc.iter(from.line, to.line + 1, function (line) { - if (line.markedSpans) { - for (var i = 0; i < line.markedSpans.length; ++i) { - var mark = line.markedSpans[i].marker; - if (mark.readOnly && (!markers || indexOf(markers, mark) == -1)) { - (markers || (markers = [])).push(mark); - } - } - } + if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) { + var mark = line.markedSpans[i].marker; + if (mark.readOnly && (!markers || indexOf(markers, mark) == -1)) + { (markers || (markers = [])).push(mark); } + } } }); - if (!markers) { - return null; - } - var parts = [{ from: from, to: to }]; + if (!markers) { return null } + var parts = [{from: from, to: to}]; for (var i = 0; i < markers.length; ++i) { - var mk = markers[i], - m = mk.find(0); + var mk = markers[i], m = mk.find(0); for (var j = 0; j < parts.length; ++j) { var p = parts[j]; - if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { - continue; - } - var newParts = [j, 1], - dfrom = cmp(p.from, m.from), - dto = cmp(p.to, m.to); - if (dfrom < 0 || (!mk.inclusiveLeft && !dfrom)) { - newParts.push({ from: p.from, to: m.from }); - } - if (dto > 0 || (!mk.inclusiveRight && !dto)) { - newParts.push({ from: m.to, to: p.to }); - } + if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue } + var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to); + if (dfrom < 0 || !mk.inclusiveLeft && !dfrom) + { newParts.push({from: p.from, to: m.from}); } + if (dto > 0 || !mk.inclusiveRight && !dto) + { newParts.push({from: m.to, to: p.to}); } parts.splice.apply(parts, newParts); j += newParts.length - 3; } } - return parts; + return parts } // Connect or disconnect spans from a line. function detachMarkedSpans(line) { var spans = line.markedSpans; - if (!spans) { - return; - } - for (var i = 0; i < spans.length; ++i) { - spans[i].marker.detachLine(line); - } + if (!spans) { return } + for (var i = 0; i < spans.length; ++i) + { spans[i].marker.detachLine(line); } line.markedSpans = null; } function attachMarkedSpans(line, spans) { - if (!spans) { - return; - } - for (var i = 0; i < spans.length; ++i) { - spans[i].marker.attachLine(line); - } + if (!spans) { return } + for (var i = 0; i < spans.length; ++i) + { spans[i].marker.attachLine(line); } line.markedSpans = spans; } // Helpers used when computing which overlapping collapsed span // counts as the larger one. - function extraLeft(marker) { - return marker.inclusiveLeft ? -1 : 0; - } - function extraRight(marker) { - return marker.inclusiveRight ? 1 : 0; - } + function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 } + function extraRight(marker) { return marker.inclusiveRight ? 1 : 0 } // Returns a number indicating which of two overlapping collapsed // spans is larger (and thus includes the other). Falls back to // comparing ids when the spans cover exactly the same range. function compareCollapsedMarkers(a, b) { var lenDiff = a.lines.length - b.lines.length; - if (lenDiff != 0) { - return lenDiff; - } - var aPos = a.find(), - bPos = b.find(); + if (lenDiff != 0) { return lenDiff } + var aPos = a.find(), bPos = b.find(); var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b); - if (fromCmp) { - return -fromCmp; - } + if (fromCmp) { return -fromCmp } var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b); - if (toCmp) { - return toCmp; - } - return b.id - a.id; + if (toCmp) { return toCmp } + return b.id - a.id } // Find out whether a line ends or starts in a collapsed span. If // so, return the marker for that span. function collapsedSpanAtSide(line, start) { - var sps = sawCollapsedSpans && line.markedSpans, - found; - if (sps) { - for (var sp = void 0, i = 0; i < sps.length; ++i) { - sp = sps[i]; - if ( - sp.marker.collapsed && - (start ? sp.from : sp.to) == null && - (!found || compareCollapsedMarkers(found, sp.marker) < 0) - ) { - found = sp.marker; - } - } - } - return found; - } - function collapsedSpanAtStart(line) { - return collapsedSpanAtSide(line, true); - } - function collapsedSpanAtEnd(line) { - return collapsedSpanAtSide(line, false); - } + var sps = sawCollapsedSpans && line.markedSpans, found; + if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) { + sp = sps[i]; + if (sp.marker.collapsed && (start ? sp.from : sp.to) == null && + (!found || compareCollapsedMarkers(found, sp.marker) < 0)) + { found = sp.marker; } + } } + return found + } + function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) } + function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) } function collapsedSpanAround(line, ch) { - var sps = sawCollapsedSpans && line.markedSpans, - found; - if (sps) { - for (var i = 0; i < sps.length; ++i) { - var sp = sps[i]; - if ( - sp.marker.collapsed && - (sp.from == null || sp.from < ch) && - (sp.to == null || sp.to > ch) && - (!found || compareCollapsedMarkers(found, sp.marker) < 0) - ) { - found = sp.marker; - } - } - } - return found; + var sps = sawCollapsedSpans && line.markedSpans, found; + if (sps) { for (var i = 0; i < sps.length; ++i) { + var sp = sps[i]; + if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) && + (!found || compareCollapsedMarkers(found, sp.marker) < 0)) { found = sp.marker; } + } } + return found } // Test whether there exists a collapsed span that partially // overlaps (covers the start or end, but not both) of a new span. // Such overlap is not allowed. - function conflictingCollapsedRange(doc, lineNo$$1, from, to, marker) { - var line = getLine(doc, lineNo$$1); + function conflictingCollapsedRange(doc, lineNo, from, to, marker) { + var line = getLine(doc, lineNo); var sps = sawCollapsedSpans && line.markedSpans; - if (sps) { - for (var i = 0; i < sps.length; ++i) { - var sp = sps[i]; - if (!sp.marker.collapsed) { - continue; - } - var found = sp.marker.find(0); - var fromCmp = - cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker); - var toCmp = - cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker); - if ((fromCmp >= 0 && toCmp <= 0) || (fromCmp <= 0 && toCmp >= 0)) { - continue; - } - if ( - (fromCmp <= 0 && - (sp.marker.inclusiveRight && marker.inclusiveLeft - ? cmp(found.to, from) >= 0 - : cmp(found.to, from) > 0)) || - (fromCmp >= 0 && - (sp.marker.inclusiveRight && marker.inclusiveLeft - ? cmp(found.from, to) <= 0 - : cmp(found.from, to) < 0)) - ) { - return true; - } - } - } + if (sps) { for (var i = 0; i < sps.length; ++i) { + var sp = sps[i]; + if (!sp.marker.collapsed) { continue } + var found = sp.marker.find(0); + var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker); + var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker); + if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue } + if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) || + fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0)) + { return true } + } } } // A visual line is a line as drawn on the screen. Folding, for @@ -2260,57 +1569,46 @@ // given line is part of (usually that is the line itself). function visualLine(line) { var merged; - while ((merged = collapsedSpanAtStart(line))) { - line = merged.find(-1, true).line; - } - return line; + while (merged = collapsedSpanAtStart(line)) + { line = merged.find(-1, true).line; } + return line } function visualLineEnd(line) { var merged; - while ((merged = collapsedSpanAtEnd(line))) { - line = merged.find(1, true).line; - } - return line; + while (merged = collapsedSpanAtEnd(line)) + { line = merged.find(1, true).line; } + return line } // Returns an array of logical lines that continue the visual line // started by the argument, or undefined if there are no such lines. function visualLineContinued(line) { var merged, lines; - while ((merged = collapsedSpanAtEnd(line))) { - line = merged.find(1, true).line; - (lines || (lines = [])).push(line); + while (merged = collapsedSpanAtEnd(line)) { + line = merged.find(1, true).line + ;(lines || (lines = [])).push(line); } - return lines; + return lines } // Get the line number of the start of the visual line that the // given line number is part of. function visualLineNo(doc, lineN) { - var line = getLine(doc, lineN), - vis = visualLine(line); - if (line == vis) { - return lineN; - } - return lineNo(vis); + var line = getLine(doc, lineN), vis = visualLine(line); + if (line == vis) { return lineN } + return lineNo(vis) } // Get the line number of the start of the next visual line after // the given line. function visualLineEndNo(doc, lineN) { - if (lineN > doc.lastLine()) { - return lineN; - } - var line = getLine(doc, lineN), - merged; - if (!lineIsHidden(doc, line)) { - return lineN; - } - while ((merged = collapsedSpanAtEnd(line))) { - line = merged.find(1, true).line; - } - return lineNo(line) + 1; + if (lineN > doc.lastLine()) { return lineN } + var line = getLine(doc, lineN), merged; + if (!lineIsHidden(doc, line)) { return lineN } + while (merged = collapsedSpanAtEnd(line)) + { line = merged.find(1, true).line; } + return lineNo(line) + 1 } // Compute whether a line is hidden. Lines count as hidden when they @@ -2318,52 +1616,28 @@ // they are entirely covered by collapsed, non-widget span. function lineIsHidden(doc, line) { var sps = sawCollapsedSpans && line.markedSpans; - if (sps) { - for (var sp = void 0, i = 0; i < sps.length; ++i) { - sp = sps[i]; - if (!sp.marker.collapsed) { - continue; - } - if (sp.from == null) { - return true; - } - if (sp.marker.widgetNode) { - continue; - } - if ( - sp.from == 0 && - sp.marker.inclusiveLeft && - lineIsHiddenInner(doc, line, sp) - ) { - return true; - } - } - } + if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) { + sp = sps[i]; + if (!sp.marker.collapsed) { continue } + if (sp.from == null) { return true } + if (sp.marker.widgetNode) { continue } + if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp)) + { return true } + } } } function lineIsHiddenInner(doc, line, span) { if (span.to == null) { var end = span.marker.find(1, true); - return lineIsHiddenInner( - doc, - end.line, - getMarkedSpanFor(end.line.markedSpans, span.marker), - ); - } - if (span.marker.inclusiveRight && span.to == line.text.length) { - return true; + return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker)) } - for (var sp = void 0, i = 0; i < line.markedSpans.length; ++i) { + if (span.marker.inclusiveRight && span.to == line.text.length) + { return true } + for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) { sp = line.markedSpans[i]; - if ( - sp.marker.collapsed && - !sp.marker.widgetNode && - sp.from == span.to && - (sp.to == null || sp.to != span.from) && - (sp.marker.inclusiveLeft || span.marker.inclusiveRight) && - lineIsHiddenInner(doc, line, sp) - ) { - return true; - } + if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to && + (sp.to == null || sp.to != span.from) && + (sp.marker.inclusiveLeft || span.marker.inclusiveRight) && + lineIsHiddenInner(doc, line, sp)) { return true } } } @@ -2371,58 +1645,46 @@ function heightAtLine(lineObj) { lineObj = visualLine(lineObj); - var h = 0, - chunk = lineObj.parent; + var h = 0, chunk = lineObj.parent; for (var i = 0; i < chunk.lines.length; ++i) { var line = chunk.lines[i]; - if (line == lineObj) { - break; - } else { - h += line.height; - } + if (line == lineObj) { break } + else { h += line.height; } } for (var p = chunk.parent; p; chunk = p, p = chunk.parent) { for (var i$1 = 0; i$1 < p.children.length; ++i$1) { var cur = p.children[i$1]; - if (cur == chunk) { - break; - } else { - h += cur.height; - } + if (cur == chunk) { break } + else { h += cur.height; } } } - return h; + return h } // Compute the character length of a line, taking into account // collapsed ranges (see markText) that might hide parts, and join // other lines onto it. function lineLength(line) { - if (line.height == 0) { - return 0; - } - var len = line.text.length, - merged, - cur = line; - while ((merged = collapsedSpanAtStart(cur))) { + if (line.height == 0) { return 0 } + var len = line.text.length, merged, cur = line; + while (merged = collapsedSpanAtStart(cur)) { var found = merged.find(0, true); cur = found.from.line; len += found.from.ch - found.to.ch; } cur = line; - while ((merged = collapsedSpanAtEnd(cur))) { + while (merged = collapsedSpanAtEnd(cur)) { var found$1 = merged.find(0, true); len -= cur.text.length - found$1.from.ch; cur = found$1.to.line; len += cur.text.length - found$1.to.ch; } - return len; + return len } // Find the longest line in the document. function findMaxLine(cm) { - var d = cm.display, - doc = cm.doc; + var d = cm.display, doc = cm.doc; d.maxLine = getLine(doc, doc.first); d.maxLineLength = lineLength(d.maxLine); d.maxLineChanged = true; @@ -2439,15 +1701,13 @@ // Line objects. These hold state related to a line, including // highlighting info (the styles array). - var Line = function (text, markedSpans, estimateHeight) { + var Line = function(text, markedSpans, estimateHeight) { this.text = text; attachMarkedSpans(this, markedSpans); this.height = estimateHeight ? estimateHeight(this) : 1; }; - Line.prototype.lineNo = function () { - return lineNo(this); - }; + Line.prototype.lineNo = function () { return lineNo(this) }; eventMixin(Line); // Change the content (text, markers) of a line. Automatically @@ -2455,21 +1715,13 @@ // line's height. function updateLine(line, text, markedSpans, estimateHeight) { line.text = text; - if (line.stateAfter) { - line.stateAfter = null; - } - if (line.styles) { - line.styles = null; - } - if (line.order != null) { - line.order = null; - } + if (line.stateAfter) { line.stateAfter = null; } + if (line.styles) { line.styles = null; } + if (line.order != null) { line.order = null; } detachMarkedSpans(line); attachMarkedSpans(line, markedSpans); var estHeight = estimateHeight ? estimateHeight(line) : 1; - if (estHeight != line.height) { - updateLineHeight(line, estHeight); - } + if (estHeight != line.height) { updateLineHeight(line, estHeight); } } // Detach a line from the document tree and its markers. @@ -2481,16 +1733,12 @@ // Convert a style as returned by a mode (either null, or a string // containing one or more styles) to a CSS style. This is cached, // and also looks for line-wide styles. - var styleToClassCache = {}, - styleToClassCacheWithMode = {}; + var styleToClassCache = {}, styleToClassCacheWithMode = {}; function interpretTokenStyle(style, options) { - if (!style || /^\s*$/.test(style)) { - return null; - } - var cache = options.addModeClass - ? styleToClassCacheWithMode - : styleToClassCache; - return cache[style] || (cache[style] = style.replace(/\S+/g, 'cm-$&')); + if (!style || /^\s*$/.test(style)) { return null } + var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache; + return cache[style] || + (cache[style] = style.replace(/\S+/g, "cm-$&")) } // Render the DOM representation of the text of a line. Also builds @@ -2502,137 +1750,79 @@ // The padding-right forces the element to have a 'border', which // is needed on Webkit to be able to get line-level bounding // rectangles for it (in measureChar). - var content = eltP( - 'span', - null, - null, - webkit ? 'padding-right: .1px' : null, - ); - var builder = { - pre: eltP('pre', [content], 'CodeMirror-line'), - content: content, - col: 0, - pos: 0, - cm: cm, - trailingSpace: false, - splitSpaces: cm.getOption('lineWrapping'), - }; + var content = eltP("span", null, null, webkit ? "padding-right: .1px" : null); + var builder = {pre: eltP("pre", [content], "CodeMirror-line"), content: content, + col: 0, pos: 0, cm: cm, + trailingSpace: false, + splitSpaces: cm.getOption("lineWrapping")}; lineView.measure = {}; // Iterate over the logical lines that make up this visual line. for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) { - var line = i ? lineView.rest[i - 1] : lineView.line, - order = void 0; + var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0); builder.pos = 0; builder.addToken = buildToken; // Optionally wire in some hacks into the token-rendering // algorithm, to deal with browser quirks. - if ( - hasBadBidiRects(cm.display.measure) && - (order = getOrder(line, cm.doc.direction)) - ) { - builder.addToken = buildTokenBadBidi(builder.addToken, order); - } + if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction))) + { builder.addToken = buildTokenBadBidi(builder.addToken, order); } builder.map = []; - var allowFrontierUpdate = - lineView != cm.display.externalMeasured && lineNo(line); - insertLineContent( - line, - builder, - getLineStyles(cm, line, allowFrontierUpdate), - ); + var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line); + insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate)); if (line.styleClasses) { - if (line.styleClasses.bgClass) { - builder.bgClass = joinClasses( - line.styleClasses.bgClass, - builder.bgClass || '', - ); - } - if (line.styleClasses.textClass) { - builder.textClass = joinClasses( - line.styleClasses.textClass, - builder.textClass || '', - ); - } + if (line.styleClasses.bgClass) + { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || ""); } + if (line.styleClasses.textClass) + { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || ""); } } // Ensure at least a single node is present, for measuring. - if (builder.map.length == 0) { - builder.map.push( - 0, - 0, - builder.content.appendChild(zeroWidthElement(cm.display.measure)), - ); - } + if (builder.map.length == 0) + { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); } // Store the map and a cache object for the current logical line if (i == 0) { lineView.measure.map = builder.map; lineView.measure.cache = {}; } else { - (lineView.measure.maps || (lineView.measure.maps = [])).push( - builder.map, - ); - (lineView.measure.caches || (lineView.measure.caches = [])).push({}); + (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map) + ;(lineView.measure.caches || (lineView.measure.caches = [])).push({}); } } // See issue #2901 if (webkit) { var last = builder.content.lastChild; - if ( - /\bcm-tab\b/.test(last.className) || - (last.querySelector && last.querySelector('.cm-tab')) - ) { - builder.content.className = 'cm-tab-wrap-hack'; - } + if (/\bcm-tab\b/.test(last.className) || (last.querySelector && last.querySelector(".cm-tab"))) + { builder.content.className = "cm-tab-wrap-hack"; } } - signal(cm, 'renderLine', cm, lineView.line, builder.pre); - if (builder.pre.className) { - builder.textClass = joinClasses( - builder.pre.className, - builder.textClass || '', - ); - } + signal(cm, "renderLine", cm, lineView.line, builder.pre); + if (builder.pre.className) + { builder.textClass = joinClasses(builder.pre.className, builder.textClass || ""); } - return builder; + return builder } function defaultSpecialCharPlaceholder(ch) { - var token = elt('span', '\u2022', 'cm-invalidchar'); - token.title = '\\u' + ch.charCodeAt(0).toString(16); - token.setAttribute('aria-label', token.title); - return token; + var token = elt("span", "\u2022", "cm-invalidchar"); + token.title = "\\u" + ch.charCodeAt(0).toString(16); + token.setAttribute("aria-label", token.title); + return token } // Build up the DOM representation for a single token, and add it to // the line map. Takes care to render special characters separately. - function buildToken( - builder, - text, - style, - startStyle, - endStyle, - css, - attributes, - ) { - if (!text) { - return; - } - var displayText = builder.splitSpaces - ? splitSpaces(text, builder.trailingSpace) - : text; - var special = builder.cm.state.specialChars, - mustWrap = false; + function buildToken(builder, text, style, startStyle, endStyle, css, attributes) { + if (!text) { return } + var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text; + var special = builder.cm.state.specialChars, mustWrap = false; var content; if (!special.test(text)) { builder.col += text.length; content = document.createTextNode(displayText); builder.map.push(builder.pos, builder.pos + text.length, content); - if (ie && ie_version < 9) { - mustWrap = true; - } + if (ie && ie_version < 9) { mustWrap = true; } builder.pos += text.length; } else { content = document.createDocumentFragment(); @@ -2642,46 +1832,31 @@ var m = special.exec(text); var skipped = m ? m.index - pos : text.length - pos; if (skipped) { - var txt = document.createTextNode( - displayText.slice(pos, pos + skipped), - ); - if (ie && ie_version < 9) { - content.appendChild(elt('span', [txt])); - } else { - content.appendChild(txt); - } + var txt = document.createTextNode(displayText.slice(pos, pos + skipped)); + if (ie && ie_version < 9) { content.appendChild(elt("span", [txt])); } + else { content.appendChild(txt); } builder.map.push(builder.pos, builder.pos + skipped, txt); builder.col += skipped; builder.pos += skipped; } - if (!m) { - break; - } + if (!m) { break } pos += skipped + 1; - var txt$1 = void 0; - if (m[0] == '\t') { - var tabSize = builder.cm.options.tabSize, - tabWidth = tabSize - (builder.col % tabSize); - txt$1 = content.appendChild( - elt('span', spaceStr(tabWidth), 'cm-tab'), - ); - txt$1.setAttribute('role', 'presentation'); - txt$1.setAttribute('cm-text', '\t'); + var txt$1 = (void 0); + if (m[0] == "\t") { + var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize; + txt$1 = content.appendChild(elt("span", spaceStr(tabWidth), "cm-tab")); + txt$1.setAttribute("role", "presentation"); + txt$1.setAttribute("cm-text", "\t"); builder.col += tabWidth; - } else if (m[0] == '\r' || m[0] == '\n') { - txt$1 = content.appendChild( - elt('span', m[0] == '\r' ? '\u240d' : '\u2424', 'cm-invalidchar'), - ); - txt$1.setAttribute('cm-text', m[0]); + } else if (m[0] == "\r" || m[0] == "\n") { + txt$1 = content.appendChild(elt("span", m[0] == "\r" ? "\u240d" : "\u2424", "cm-invalidchar")); + txt$1.setAttribute("cm-text", m[0]); builder.col += 1; } else { txt$1 = builder.cm.options.specialCharPlaceholder(m[0]); - txt$1.setAttribute('cm-text', m[0]); - if (ie && ie_version < 9) { - content.appendChild(elt('span', [txt$1])); - } else { - content.appendChild(txt$1); - } + txt$1.setAttribute("cm-text", m[0]); + if (ie && ie_version < 9) { content.appendChild(elt("span", [txt$1])); } + else { content.appendChild(txt$1); } builder.col += 1; } builder.map.push(builder.pos, builder.pos + 1, txt$1); @@ -2689,27 +1864,16 @@ } } builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32; - if (style || startStyle || endStyle || mustWrap || css) { - var fullStyle = style || ''; - if (startStyle) { - fullStyle += startStyle; - } - if (endStyle) { - fullStyle += endStyle; - } - var token = elt('span', [content], fullStyle, css); + if (style || startStyle || endStyle || mustWrap || css || attributes) { + var fullStyle = style || ""; + if (startStyle) { fullStyle += startStyle; } + if (endStyle) { fullStyle += endStyle; } + var token = elt("span", [content], fullStyle, css); if (attributes) { - for (var attr in attributes) { - if ( - attributes.hasOwnProperty(attr) && - attr != 'style' && - attr != 'class' - ) { - token.setAttribute(attr, attributes[attr]); - } - } + for (var attr in attributes) { if (attributes.hasOwnProperty(attr) && attr != "style" && attr != "class") + { token.setAttribute(attr, attributes[attr]); } } } - return builder.content.appendChild(token); + return builder.content.appendChild(token) } builder.content.appendChild(content); } @@ -2717,87 +1881,47 @@ // Change some spaces to NBSP to prevent the browser from collapsing // trailing spaces at the end of a line when rendering text (issue #1362). function splitSpaces(text, trailingBefore) { - if (text.length > 1 && !/ /.test(text)) { - return text; - } - var spaceBefore = trailingBefore, - result = ''; + if (text.length > 1 && !/ /.test(text)) { return text } + var spaceBefore = trailingBefore, result = ""; for (var i = 0; i < text.length; i++) { var ch = text.charAt(i); - if ( - ch == ' ' && - spaceBefore && - (i == text.length - 1 || text.charCodeAt(i + 1) == 32) - ) { - ch = '\u00a0'; - } + if (ch == " " && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32)) + { ch = "\u00a0"; } result += ch; - spaceBefore = ch == ' '; + spaceBefore = ch == " "; } - return result; + return result } // Work around nonsense dimensions being reported for stretches of // right-to-left text. function buildTokenBadBidi(inner, order) { - return function ( - builder, - text, - style, - startStyle, - endStyle, - css, - attributes, - ) { - style = style ? style + ' cm-force-border' : 'cm-force-border'; - var start = builder.pos, - end = start + text.length; + return function (builder, text, style, startStyle, endStyle, css, attributes) { + style = style ? style + " cm-force-border" : "cm-force-border"; + var start = builder.pos, end = start + text.length; for (;;) { // Find the part that overlaps with the start of this text - var part = void 0; + var part = (void 0); for (var i = 0; i < order.length; i++) { part = order[i]; - if (part.to > start && part.from <= start) { - break; - } + if (part.to > start && part.from <= start) { break } } - if (part.to >= end) { - return inner( - builder, - text, - style, - startStyle, - endStyle, - css, - attributes, - ); - } - inner( - builder, - text.slice(0, part.to - start), - style, - startStyle, - null, - css, - attributes, - ); + if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, css, attributes) } + inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes); startStyle = null; text = text.slice(part.to - start); start = part.to; } - }; + } } function buildCollapsedSpan(builder, size, marker, ignoreWidget) { var widget = !ignoreWidget && marker.widgetNode; - if (widget) { - builder.map.push(builder.pos, builder.pos + size, widget); - } + if (widget) { builder.map.push(builder.pos, builder.pos + size, widget); } if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) { - if (!widget) { - widget = builder.content.appendChild(document.createElement('span')); - } - widget.setAttribute('cm-marker', marker.id); + if (!widget) + { widget = builder.content.appendChild(document.createElement("span")); } + widget.setAttribute("cm-marker", marker.id); } if (widget) { builder.cm.display.input.setUneditable(widget); @@ -2810,119 +1934,60 @@ // Outputs a number of spans to make up a line, taking highlighting // and marked text into account. function insertLineContent(line, builder, styles) { - var spans = line.markedSpans, - allText = line.text, - at = 0; + var spans = line.markedSpans, allText = line.text, at = 0; if (!spans) { - for (var i$1 = 1; i$1 < styles.length; i$1 += 2) { - builder.addToken( - builder, - allText.slice(at, (at = styles[i$1])), - interpretTokenStyle(styles[i$1 + 1], builder.cm.options), - ); - } - return; - } - - var len = allText.length, - pos = 0, - i = 1, - text = '', - style, - css; - var nextChange = 0, - spanStyle, - spanEndStyle, - spanStartStyle, - collapsed, - attributes; + for (var i$1 = 1; i$1 < styles.length; i$1+=2) + { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)); } + return + } + + var len = allText.length, pos = 0, i = 1, text = "", style, css; + var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, collapsed, attributes; for (;;) { - if (nextChange == pos) { - // Update current marker set - spanStyle = spanEndStyle = spanStartStyle = css = ''; + if (nextChange == pos) { // Update current marker set + spanStyle = spanEndStyle = spanStartStyle = css = ""; attributes = null; - collapsed = null; - nextChange = Infinity; - var foundBookmarks = [], - endStyles = void 0; + collapsed = null; nextChange = Infinity; + var foundBookmarks = [], endStyles = (void 0); for (var j = 0; j < spans.length; ++j) { - var sp = spans[j], - m = sp.marker; - if (m.type == 'bookmark' && sp.from == pos && m.widgetNode) { + var sp = spans[j], m = sp.marker; + if (m.type == "bookmark" && sp.from == pos && m.widgetNode) { foundBookmarks.push(m); - } else if ( - sp.from <= pos && - (sp.to == null || - sp.to > pos || - (m.collapsed && sp.to == pos && sp.from == pos)) - ) { + } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) { if (sp.to != null && sp.to != pos && nextChange > sp.to) { nextChange = sp.to; - spanEndStyle = ''; - } - if (m.className) { - spanStyle += ' ' + m.className; - } - if (m.css) { - css = (css ? css + ';' : '') + m.css; - } - if (m.startStyle && sp.from == pos) { - spanStartStyle += ' ' + m.startStyle; - } - if (m.endStyle && sp.to == nextChange) { - (endStyles || (endStyles = [])).push(m.endStyle, sp.to); + spanEndStyle = ""; } + if (m.className) { spanStyle += " " + m.className; } + if (m.css) { css = (css ? css + ";" : "") + m.css; } + if (m.startStyle && sp.from == pos) { spanStartStyle += " " + m.startStyle; } + if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to); } // support for the old title property // https://github.com/codemirror/CodeMirror/pull/5673 - if (m.title) { - (attributes || (attributes = {})).title = m.title; - } + if (m.title) { (attributes || (attributes = {})).title = m.title; } if (m.attributes) { - for (var attr in m.attributes) { - (attributes || (attributes = {}))[attr] = m.attributes[attr]; - } - } - if ( - m.collapsed && - (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0) - ) { - collapsed = sp; + for (var attr in m.attributes) + { (attributes || (attributes = {}))[attr] = m.attributes[attr]; } } + if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0)) + { collapsed = sp; } } else if (sp.from > pos && nextChange > sp.from) { nextChange = sp.from; } } - if (endStyles) { - for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2) { - if (endStyles[j$1 + 1] == nextChange) { - spanEndStyle += ' ' + endStyles[j$1]; - } - } - } + if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2) + { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += " " + endStyles[j$1]; } } } - if (!collapsed || collapsed.from == pos) { - for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2) { - buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); - } - } + if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2) + { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); } } if (collapsed && (collapsed.from || 0) == pos) { - buildCollapsedSpan( - builder, - (collapsed.to == null ? len + 1 : collapsed.to) - pos, - collapsed.marker, - collapsed.from == null, - ); - if (collapsed.to == null) { - return; - } - if (collapsed.to == pos) { - collapsed = false; - } + buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos, + collapsed.marker, collapsed.from == null); + if (collapsed.to == null) { return } + if (collapsed.to == pos) { collapsed = false; } } } - if (pos >= len) { - break; - } + if (pos >= len) { break } var upto = Math.min(len, nextChange); while (true) { @@ -2930,30 +1995,20 @@ var end = pos + text.length; if (!collapsed) { var tokenText = end > upto ? text.slice(0, upto - pos) : text; - builder.addToken( - builder, - tokenText, - style ? style + spanStyle : spanStyle, - spanStartStyle, - pos + tokenText.length == nextChange ? spanEndStyle : '', - css, - attributes, - ); - } - if (end >= upto) { - text = text.slice(upto - pos); - pos = upto; - break; + builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle, + spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : "", css, attributes); } + if (end >= upto) {text = text.slice(upto - pos); pos = upto; break} pos = end; - spanStartStyle = ''; + spanStartStyle = ""; } - text = allText.slice(at, (at = styles[i++])); + text = allText.slice(at, at = styles[i++]); style = interpretTokenStyle(styles[i++], builder.cm.options); } } } + // These objects are used to represent the visible (currently drawn) // part of the document. A LineView may correspond to multiple // logical lines, if those are connected by collapsed ranges. @@ -2970,14 +2025,13 @@ // Create a range of LineView objects for the given lines. function buildViewArray(cm, from, to) { - var array = [], - nextPos; + var array = [], nextPos; for (var pos = from; pos < to; pos = nextPos) { var view = new LineView(cm.doc, getLine(cm.doc, pos), pos); nextPos = pos + view.size; array.push(view); } - return array; + return array } var operationGroup = null; @@ -2988,7 +2042,7 @@ } else { op.ownsGroup = operationGroup = { ops: [op], - delayedCallbacks: [], + delayedCallbacks: [] }; } } @@ -2996,35 +2050,25 @@ function fireCallbacksForOps(group) { // Calls delayed callbacks and cursorActivity handlers until no // new ones appear - var callbacks = group.delayedCallbacks, - i = 0; + var callbacks = group.delayedCallbacks, i = 0; do { - for (; i < callbacks.length; i++) { - callbacks[i].call(null); - } + for (; i < callbacks.length; i++) + { callbacks[i].call(null); } for (var j = 0; j < group.ops.length; j++) { var op = group.ops[j]; - if (op.cursorActivityHandlers) { - while (op.cursorActivityCalled < op.cursorActivityHandlers.length) { - op.cursorActivityHandlers[op.cursorActivityCalled++].call( - null, - op.cm, - ); - } - } + if (op.cursorActivityHandlers) + { while (op.cursorActivityCalled < op.cursorActivityHandlers.length) + { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } } } - } while (i < callbacks.length); + } while (i < callbacks.length) } function finishOperation(op, endCb) { var group = op.ownsGroup; - if (!group) { - return; - } + if (!group) { return } - try { - fireCallbacksForOps(group); - } finally { + try { fireCallbacksForOps(group); } + finally { operationGroup = null; endCb(group); } @@ -3041,11 +2085,8 @@ // operation is active, when a timeout fires. function signalLater(emitter, type /*, values...*/) { var arr = getHandlers(emitter, type); - if (!arr.length) { - return; - } - var args = Array.prototype.slice.call(arguments, 2), - list; + if (!arr.length) { return } + var args = Array.prototype.slice.call(arguments, 2), list; if (operationGroup) { list = operationGroup.delayedCallbacks; } else if (orphanDelayedCallbacks) { @@ -3054,21 +2095,18 @@ list = orphanDelayedCallbacks = []; setTimeout(fireOrphanDelayed, 0); } - var loop = function (i) { - list.push(function () { - return arr[i].apply(null, args); - }); + var loop = function ( i ) { + list.push(function () { return arr[i].apply(null, args); }); }; - for (var i = 0; i < arr.length; ++i) loop(i); + for (var i = 0; i < arr.length; ++i) + loop( i ); } function fireOrphanDelayed() { var delayed = orphanDelayedCallbacks; orphanDelayedCallbacks = null; - for (var i = 0; i < delayed.length; ++i) { - delayed[i](); - } + for (var i = 0; i < delayed.length; ++i) { delayed[i](); } } // When an aspect of a line changes, a string is added to @@ -3077,15 +2115,10 @@ function updateLineForChanges(cm, lineView, lineN, dims) { for (var j = 0; j < lineView.changes.length; j++) { var type = lineView.changes[j]; - if (type == 'text') { - updateLineText(cm, lineView); - } else if (type == 'gutter') { - updateLineGutter(cm, lineView, lineN, dims); - } else if (type == 'class') { - updateLineClasses(cm, lineView); - } else if (type == 'widget') { - updateLineWidgets(cm, lineView, dims); - } + if (type == "text") { updateLineText(cm, lineView); } + else if (type == "gutter") { updateLineGutter(cm, lineView, lineN, dims); } + else if (type == "class") { updateLineClasses(cm, lineView); } + else if (type == "widget") { updateLineWidgets(cm, lineView, dims); } } lineView.changes = null; } @@ -3094,38 +2127,24 @@ // be wrapped, and have the extra elements added to the wrapper div function ensureLineWrapped(lineView) { if (lineView.node == lineView.text) { - lineView.node = elt('div', null, null, 'position: relative'); - if (lineView.text.parentNode) { - lineView.text.parentNode.replaceChild(lineView.node, lineView.text); - } + lineView.node = elt("div", null, null, "position: relative"); + if (lineView.text.parentNode) + { lineView.text.parentNode.replaceChild(lineView.node, lineView.text); } lineView.node.appendChild(lineView.text); - if (ie && ie_version < 8) { - lineView.node.style.zIndex = 2; - } + if (ie && ie_version < 8) { lineView.node.style.zIndex = 2; } } - return lineView.node; + return lineView.node } function updateLineBackground(cm, lineView) { - var cls = lineView.bgClass - ? lineView.bgClass + ' ' + (lineView.line.bgClass || '') - : lineView.line.bgClass; - if (cls) { - cls += ' CodeMirror-linebackground'; - } + var cls = lineView.bgClass ? lineView.bgClass + " " + (lineView.line.bgClass || "") : lineView.line.bgClass; + if (cls) { cls += " CodeMirror-linebackground"; } if (lineView.background) { - if (cls) { - lineView.background.className = cls; - } else { - lineView.background.parentNode.removeChild(lineView.background); - lineView.background = null; - } + if (cls) { lineView.background.className = cls; } + else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; } } else if (cls) { var wrap = ensureLineWrapped(lineView); - lineView.background = wrap.insertBefore( - elt('div', null, cls), - wrap.firstChild, - ); + lineView.background = wrap.insertBefore(elt("div", null, cls), wrap.firstChild); cm.display.input.setUneditable(lineView.background); } } @@ -3137,9 +2156,9 @@ if (ext && ext.line == lineView.line) { cm.display.externalMeasured = null; lineView.measure = ext.measure; - return ext.built; + return ext.built } - return buildLineContent(cm, lineView); + return buildLineContent(cm, lineView) } // Redraw the line's text. Interacts with the background and text @@ -3148,15 +2167,10 @@ function updateLineText(cm, lineView) { var cls = lineView.text.className; var built = getLineContent(cm, lineView); - if (lineView.text == lineView.node) { - lineView.node = built.pre; - } + if (lineView.text == lineView.node) { lineView.node = built.pre; } lineView.text.parentNode.replaceChild(built.pre, lineView.text); lineView.text = built.pre; - if ( - built.bgClass != lineView.bgClass || - built.textClass != lineView.textClass - ) { + if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) { lineView.bgClass = built.bgClass; lineView.textClass = built.textClass; updateLineClasses(cm, lineView); @@ -3167,15 +2181,12 @@ function updateLineClasses(cm, lineView) { updateLineBackground(cm, lineView); - if (lineView.line.wrapClass) { - ensureLineWrapped(lineView).className = lineView.line.wrapClass; - } else if (lineView.node != lineView.text) { - lineView.node.className = ''; - } - var textClass = lineView.textClass - ? lineView.textClass + ' ' + (lineView.line.textClass || '') - : lineView.line.textClass; - lineView.text.className = textClass || ''; + if (lineView.line.wrapClass) + { ensureLineWrapped(lineView).className = lineView.line.wrapClass; } + else if (lineView.node != lineView.text) + { lineView.node.className = ""; } + var textClass = lineView.textClass ? lineView.textClass + " " + (lineView.line.textClass || "") : lineView.line.textClass; + lineView.text.className = textClass || ""; } function updateLineGutter(cm, lineView, lineN, dims) { @@ -3189,89 +2200,40 @@ } if (lineView.line.gutterClass) { var wrap = ensureLineWrapped(lineView); - lineView.gutterBackground = elt( - 'div', - null, - 'CodeMirror-gutter-background ' + lineView.line.gutterClass, - 'left: ' + - (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + - 'px; width: ' + - dims.gutterTotalWidth + - 'px', - ); + lineView.gutterBackground = elt("div", null, "CodeMirror-gutter-background " + lineView.line.gutterClass, + ("left: " + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + "px; width: " + (dims.gutterTotalWidth) + "px")); cm.display.input.setUneditable(lineView.gutterBackground); wrap.insertBefore(lineView.gutterBackground, lineView.text); } var markers = lineView.line.gutterMarkers; if (cm.options.lineNumbers || markers) { var wrap$1 = ensureLineWrapped(lineView); - var gutterWrap = (lineView.gutter = elt( - 'div', - null, - 'CodeMirror-gutter-wrapper', - 'left: ' + - (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + - 'px', - )); + var gutterWrap = lineView.gutter = elt("div", null, "CodeMirror-gutter-wrapper", ("left: " + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + "px")); + gutterWrap.setAttribute("aria-hidden", "true"); cm.display.input.setUneditable(gutterWrap); wrap$1.insertBefore(gutterWrap, lineView.text); - if (lineView.line.gutterClass) { - gutterWrap.className += ' ' + lineView.line.gutterClass; - } - if ( - cm.options.lineNumbers && - (!markers || !markers['CodeMirror-linenumbers']) - ) { - lineView.lineNumber = gutterWrap.appendChild( - elt( - 'div', - lineNumberFor(cm.options, lineN), - 'CodeMirror-linenumber CodeMirror-gutter-elt', - 'left: ' + - dims.gutterLeft['CodeMirror-linenumbers'] + - 'px; width: ' + - cm.display.lineNumInnerWidth + - 'px', - ), - ); - } - if (markers) { - for (var k = 0; k < cm.display.gutterSpecs.length; ++k) { - var id = cm.display.gutterSpecs[k].className, - found = markers.hasOwnProperty(id) && markers[id]; - if (found) { - gutterWrap.appendChild( - elt( - 'div', - [found], - 'CodeMirror-gutter-elt', - 'left: ' + - dims.gutterLeft[id] + - 'px; width: ' + - dims.gutterWidth[id] + - 'px', - ), - ); - } - } - } + if (lineView.line.gutterClass) + { gutterWrap.className += " " + lineView.line.gutterClass; } + if (cm.options.lineNumbers && (!markers || !markers["CodeMirror-linenumbers"])) + { lineView.lineNumber = gutterWrap.appendChild( + elt("div", lineNumberFor(cm.options, lineN), + "CodeMirror-linenumber CodeMirror-gutter-elt", + ("left: " + (dims.gutterLeft["CodeMirror-linenumbers"]) + "px; width: " + (cm.display.lineNumInnerWidth) + "px"))); } + if (markers) { for (var k = 0; k < cm.display.gutterSpecs.length; ++k) { + var id = cm.display.gutterSpecs[k].className, found = markers.hasOwnProperty(id) && markers[id]; + if (found) + { gutterWrap.appendChild(elt("div", [found], "CodeMirror-gutter-elt", + ("left: " + (dims.gutterLeft[id]) + "px; width: " + (dims.gutterWidth[id]) + "px"))); } + } } } } function updateLineWidgets(cm, lineView, dims) { - if (lineView.alignable) { - lineView.alignable = null; - } - var isWidget = classTest('CodeMirror-linewidget'); - for ( - var node = lineView.node.firstChild, next = void 0; - node; - node = next - ) { + if (lineView.alignable) { lineView.alignable = null; } + var isWidget = classTest("CodeMirror-linewidget"); + for (var node = lineView.node.firstChild, next = (void 0); node; node = next) { next = node.nextSibling; - if (isWidget.test(node.className)) { - lineView.node.removeChild(node); - } + if (isWidget.test(node.className)) { lineView.node.removeChild(node); } } insertLineWidgets(cm, lineView, dims); } @@ -3280,156 +2242,100 @@ function buildLineElement(cm, lineView, lineN, dims) { var built = getLineContent(cm, lineView); lineView.text = lineView.node = built.pre; - if (built.bgClass) { - lineView.bgClass = built.bgClass; - } - if (built.textClass) { - lineView.textClass = built.textClass; - } + if (built.bgClass) { lineView.bgClass = built.bgClass; } + if (built.textClass) { lineView.textClass = built.textClass; } updateLineClasses(cm, lineView); updateLineGutter(cm, lineView, lineN, dims); insertLineWidgets(cm, lineView, dims); - return lineView.node; + return lineView.node } // A lineView may contain multiple logical lines (when merged by // collapsed spans). The widgets for all of them need to be drawn. function insertLineWidgets(cm, lineView, dims) { insertLineWidgetsFor(cm, lineView.line, lineView, dims, true); - if (lineView.rest) { - for (var i = 0; i < lineView.rest.length; i++) { - insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); - } - } + if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++) + { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } } } function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) { - if (!line.widgets) { - return; - } + if (!line.widgets) { return } var wrap = ensureLineWrapped(lineView); for (var i = 0, ws = line.widgets; i < ws.length; ++i) { - var widget = ws[i], - node = elt( - 'div', - [widget.node], - 'CodeMirror-linewidget' + - (widget.className ? ' ' + widget.className : ''), - ); - if (!widget.handleMouseEvents) { - node.setAttribute('cm-ignore-events', 'true'); - } + var widget = ws[i], node = elt("div", [widget.node], "CodeMirror-linewidget" + (widget.className ? " " + widget.className : "")); + if (!widget.handleMouseEvents) { node.setAttribute("cm-ignore-events", "true"); } positionLineWidget(widget, node, lineView, dims); cm.display.input.setUneditable(node); - if (allowAbove && widget.above) { - wrap.insertBefore(node, lineView.gutter || lineView.text); - } else { - wrap.appendChild(node); - } - signalLater(widget, 'redraw'); + if (allowAbove && widget.above) + { wrap.insertBefore(node, lineView.gutter || lineView.text); } + else + { wrap.appendChild(node); } + signalLater(widget, "redraw"); } } function positionLineWidget(widget, node, lineView, dims) { if (widget.noHScroll) { - (lineView.alignable || (lineView.alignable = [])).push(node); + (lineView.alignable || (lineView.alignable = [])).push(node); var width = dims.wrapperWidth; - node.style.left = dims.fixedPos + 'px'; + node.style.left = dims.fixedPos + "px"; if (!widget.coverGutter) { width -= dims.gutterTotalWidth; - node.style.paddingLeft = dims.gutterTotalWidth + 'px'; + node.style.paddingLeft = dims.gutterTotalWidth + "px"; } - node.style.width = width + 'px'; + node.style.width = width + "px"; } if (widget.coverGutter) { node.style.zIndex = 5; - node.style.position = 'relative'; - if (!widget.noHScroll) { - node.style.marginLeft = -dims.gutterTotalWidth + 'px'; - } + node.style.position = "relative"; + if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + "px"; } } } function widgetHeight(widget) { - if (widget.height != null) { - return widget.height; - } + if (widget.height != null) { return widget.height } var cm = widget.doc.cm; - if (!cm) { - return 0; - } + if (!cm) { return 0 } if (!contains(document.body, widget.node)) { - var parentStyle = 'position: relative;'; - if (widget.coverGutter) { - parentStyle += - 'margin-left: -' + cm.display.gutters.offsetWidth + 'px;'; - } - if (widget.noHScroll) { - parentStyle += 'width: ' + cm.display.wrapper.clientWidth + 'px;'; - } - removeChildrenAndAdd( - cm.display.measure, - elt('div', [widget.node], null, parentStyle), - ); + var parentStyle = "position: relative;"; + if (widget.coverGutter) + { parentStyle += "margin-left: -" + cm.display.gutters.offsetWidth + "px;"; } + if (widget.noHScroll) + { parentStyle += "width: " + cm.display.wrapper.clientWidth + "px;"; } + removeChildrenAndAdd(cm.display.measure, elt("div", [widget.node], null, parentStyle)); } - return (widget.height = widget.node.parentNode.offsetHeight); + return widget.height = widget.node.parentNode.offsetHeight } // Return true when the given mouse event happened in a widget function eventInWidget(display, e) { for (var n = e_target(e); n != display.wrapper; n = n.parentNode) { - if ( - !n || - (n.nodeType == 1 && n.getAttribute('cm-ignore-events') == 'true') || - (n.parentNode == display.sizer && n != display.mover) - ) { - return true; - } + if (!n || (n.nodeType == 1 && n.getAttribute("cm-ignore-events") == "true") || + (n.parentNode == display.sizer && n != display.mover)) + { return true } } } // POSITION MEASUREMENT - function paddingTop(display) { - return display.lineSpace.offsetTop; - } - function paddingVert(display) { - return display.mover.offsetHeight - display.lineSpace.offsetHeight; - } + function paddingTop(display) {return display.lineSpace.offsetTop} + function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight} function paddingH(display) { - if (display.cachedPaddingH) { - return display.cachedPaddingH; - } - var e = removeChildrenAndAdd( - display.measure, - elt('pre', 'x', 'CodeMirror-line-like'), - ); - var style = window.getComputedStyle - ? window.getComputedStyle(e) - : e.currentStyle; - var data = { - left: parseInt(style.paddingLeft), - right: parseInt(style.paddingRight), - }; - if (!isNaN(data.left) && !isNaN(data.right)) { - display.cachedPaddingH = data; - } - return data; + if (display.cachedPaddingH) { return display.cachedPaddingH } + var e = removeChildrenAndAdd(display.measure, elt("pre", "x", "CodeMirror-line-like")); + var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle; + var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)}; + if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data; } + return data } - function scrollGap(cm) { - return scrollerGap - cm.display.nativeBarWidth; - } + function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth } function displayWidth(cm) { - return ( - cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth - ); + return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth } function displayHeight(cm) { - return ( - cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight - ); + return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight } // Ensure the lineView.wrapping.heights array is populated. This is @@ -3439,20 +2345,15 @@ function ensureLineHeights(cm, lineView, rect) { var wrapping = cm.options.lineWrapping; var curWidth = wrapping && displayWidth(cm); - if ( - !lineView.measure.heights || - (wrapping && lineView.measure.width != curWidth) - ) { - var heights = (lineView.measure.heights = []); + if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) { + var heights = lineView.measure.heights = []; if (wrapping) { lineView.measure.width = curWidth; var rects = lineView.text.firstChild.getClientRects(); for (var i = 0; i < rects.length - 1; i++) { - var cur = rects[i], - next = rects[i + 1]; - if (Math.abs(cur.bottom - next.bottom) > 2) { - heights.push((cur.bottom + next.top) / 2 - rect.top); - } + var cur = rects[i], next = rects[i + 1]; + if (Math.abs(cur.bottom - next.bottom) > 2) + { heights.push((cur.bottom + next.top) / 2 - rect.top); } } } heights.push(rect.bottom - rect.top); @@ -3463,25 +2364,15 @@ // measurement cache for the given line number. (A line view might // contain multiple lines when collapsed ranges are present.) function mapFromLineView(lineView, line, lineN) { - if (lineView.line == line) { - return { map: lineView.measure.map, cache: lineView.measure.cache }; - } - for (var i = 0; i < lineView.rest.length; i++) { - if (lineView.rest[i] == line) { - return { - map: lineView.measure.maps[i], - cache: lineView.measure.caches[i], - }; - } - } - for (var i$1 = 0; i$1 < lineView.rest.length; i$1++) { - if (lineNo(lineView.rest[i$1]) > lineN) { - return { - map: lineView.measure.maps[i$1], - cache: lineView.measure.caches[i$1], - before: true, - }; - } + if (lineView.line == line) + { return {map: lineView.measure.map, cache: lineView.measure.cache} } + if (lineView.rest) { + for (var i = 0; i < lineView.rest.length; i++) + { if (lineView.rest[i] == line) + { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } } + for (var i$1 = 0; i$1 < lineView.rest.length; i$1++) + { if (lineNo(lineView.rest[i$1]) > lineN) + { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } } } } @@ -3490,33 +2381,27 @@ function updateExternalMeasurement(cm, line) { line = visualLine(line); var lineN = lineNo(line); - var view = (cm.display.externalMeasured = new LineView( - cm.doc, - line, - lineN, - )); + var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN); view.lineN = lineN; - var built = (view.built = buildLineContent(cm, view)); + var built = view.built = buildLineContent(cm, view); view.text = built.pre; removeChildrenAndAdd(cm.display.lineMeasure, built.pre); - return view; + return view } // Get a {top, bottom, left, right} box (in line-local coordinates) // for a given character. function measureChar(cm, line, ch, bias) { - return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias); + return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias) } // Find a line view that corresponds to the given line number. function findViewForLine(cm, lineN) { - if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo) { - return cm.display.view[findViewIndex(cm, lineN)]; - } + if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo) + { return cm.display.view[findViewIndex(cm, lineN)] } var ext = cm.display.externalMeasured; - if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size) { - return ext; - } + if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size) + { return ext } } // Measurement can be split in two steps, the set-up work that @@ -3533,330 +2418,194 @@ updateLineForChanges(cm, view, lineN, getDimensions(cm)); cm.curOp.forceUpdate = true; } - if (!view) { - view = updateExternalMeasurement(cm, line); - } + if (!view) + { view = updateExternalMeasurement(cm, line); } var info = mapFromLineView(view, line, lineN); return { - line: line, - view: view, - rect: null, - map: info.map, - cache: info.cache, - before: info.before, - hasHeights: false, - }; + line: line, view: view, rect: null, + map: info.map, cache: info.cache, before: info.before, + hasHeights: false + } } // Given a prepared measurement object, measures the position of an // actual character (or fetches it from the cache). function measureCharPrepared(cm, prepared, ch, bias, varHeight) { - if (prepared.before) { - ch = -1; - } - var key = ch + (bias || ''), - found; + if (prepared.before) { ch = -1; } + var key = ch + (bias || ""), found; if (prepared.cache.hasOwnProperty(key)) { found = prepared.cache[key]; } else { - if (!prepared.rect) { - prepared.rect = prepared.view.text.getBoundingClientRect(); - } + if (!prepared.rect) + { prepared.rect = prepared.view.text.getBoundingClientRect(); } if (!prepared.hasHeights) { ensureLineHeights(cm, prepared.view, prepared.rect); prepared.hasHeights = true; } found = measureCharInner(cm, prepared, ch, bias); - if (!found.bogus) { - prepared.cache[key] = found; - } + if (!found.bogus) { prepared.cache[key] = found; } } - return { - left: found.left, - right: found.right, - top: varHeight ? found.rtop : found.top, - bottom: varHeight ? found.rbottom : found.bottom, - }; + return {left: found.left, right: found.right, + top: varHeight ? found.rtop : found.top, + bottom: varHeight ? found.rbottom : found.bottom} } - var nullRect = { left: 0, right: 0, top: 0, bottom: 0 }; + var nullRect = {left: 0, right: 0, top: 0, bottom: 0}; - function nodeAndOffsetInLineMap(map$$1, ch, bias) { + function nodeAndOffsetInLineMap(map, ch, bias) { var node, start, end, collapse, mStart, mEnd; // First, search the line map for the text node corresponding to, // or closest to, the target character. - for (var i = 0; i < map$$1.length; i += 3) { - mStart = map$$1[i]; - mEnd = map$$1[i + 1]; + for (var i = 0; i < map.length; i += 3) { + mStart = map[i]; + mEnd = map[i + 1]; if (ch < mStart) { - start = 0; - end = 1; - collapse = 'left'; + start = 0; end = 1; + collapse = "left"; } else if (ch < mEnd) { start = ch - mStart; end = start + 1; - } else if (i == map$$1.length - 3 || (ch == mEnd && map$$1[i + 3] > ch)) { + } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) { end = mEnd - mStart; start = end - 1; - if (ch >= mEnd) { - collapse = 'right'; - } + if (ch >= mEnd) { collapse = "right"; } } if (start != null) { - node = map$$1[i + 2]; - if (mStart == mEnd && bias == (node.insertLeft ? 'left' : 'right')) { - collapse = bias; - } - if (bias == 'left' && start == 0) { - while ( - i && - map$$1[i - 2] == map$$1[i - 3] && - map$$1[i - 1].insertLeft - ) { - node = map$$1[(i -= 3) + 2]; - collapse = 'left'; - } - } - if (bias == 'right' && start == mEnd - mStart) { - while ( - i < map$$1.length - 3 && - map$$1[i + 3] == map$$1[i + 4] && - !map$$1[i + 5].insertLeft - ) { - node = map$$1[(i += 3) + 2]; - collapse = 'right'; - } - } - break; + node = map[i + 2]; + if (mStart == mEnd && bias == (node.insertLeft ? "left" : "right")) + { collapse = bias; } + if (bias == "left" && start == 0) + { while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) { + node = map[(i -= 3) + 2]; + collapse = "left"; + } } + if (bias == "right" && start == mEnd - mStart) + { while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) { + node = map[(i += 3) + 2]; + collapse = "right"; + } } + break } } - return { - node: node, - start: start, - end: end, - collapse: collapse, - coverStart: mStart, - coverEnd: mEnd, - }; + return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd} } function getUsefulRect(rects, bias) { var rect = nullRect; - if (bias == 'left') { - for (var i = 0; i < rects.length; i++) { - if ((rect = rects[i]).left != rect.right) { - break; - } - } - } else { - for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) { - if ((rect = rects[i$1]).left != rect.right) { - break; - } - } - } - return rect; + if (bias == "left") { for (var i = 0; i < rects.length; i++) { + if ((rect = rects[i]).left != rect.right) { break } + } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) { + if ((rect = rects[i$1]).left != rect.right) { break } + } } + return rect } function measureCharInner(cm, prepared, ch, bias) { var place = nodeAndOffsetInLineMap(prepared.map, ch, bias); - var node = place.node, - start = place.start, - end = place.end, - collapse = place.collapse; + var node = place.node, start = place.start, end = place.end, collapse = place.collapse; var rect; - if (node.nodeType == 3) { - // If it is a text node, use a range to retrieve the coordinates. - for (var i$1 = 0; i$1 < 4; i$1++) { - // Retry a maximum of 4 times when nonsense rectangles are returned - while ( - start && - isExtendingChar(prepared.line.text.charAt(place.coverStart + start)) - ) { - --start; - } - while ( - place.coverStart + end < place.coverEnd && - isExtendingChar(prepared.line.text.charAt(place.coverStart + end)) - ) { - ++end; - } - if ( - ie && - ie_version < 9 && - start == 0 && - end == place.coverEnd - place.coverStart - ) { - rect = node.parentNode.getBoundingClientRect(); - } else { - rect = getUsefulRect(range(node, start, end).getClientRects(), bias); - } - if (rect.left || rect.right || start == 0) { - break; - } + if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates. + for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned + while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start; } + while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end; } + if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart) + { rect = node.parentNode.getBoundingClientRect(); } + else + { rect = getUsefulRect(range(node, start, end).getClientRects(), bias); } + if (rect.left || rect.right || start == 0) { break } end = start; start = start - 1; - collapse = 'right'; - } - if (ie && ie_version < 11) { - rect = maybeUpdateRectForZooming(cm.display.measure, rect); - } - } else { - // If it is a widget, simply get the box for the whole widget. - if (start > 0) { - collapse = bias = 'right'; + collapse = "right"; } + if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect); } + } else { // If it is a widget, simply get the box for the whole widget. + if (start > 0) { collapse = bias = "right"; } var rects; - if ( - cm.options.lineWrapping && - (rects = node.getClientRects()).length > 1 - ) { - rect = rects[bias == 'right' ? rects.length - 1 : 0]; - } else { - rect = node.getBoundingClientRect(); - } + if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1) + { rect = rects[bias == "right" ? rects.length - 1 : 0]; } + else + { rect = node.getBoundingClientRect(); } } - if ( - ie && - ie_version < 9 && - !start && - (!rect || (!rect.left && !rect.right)) - ) { + if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) { var rSpan = node.parentNode.getClientRects()[0]; - if (rSpan) { - rect = { - left: rSpan.left, - right: rSpan.left + charWidth(cm.display), - top: rSpan.top, - bottom: rSpan.bottom, - }; - } else { - rect = nullRect; - } + if (rSpan) + { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; } + else + { rect = nullRect; } } - var rtop = rect.top - prepared.rect.top, - rbot = rect.bottom - prepared.rect.top; + var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top; var mid = (rtop + rbot) / 2; var heights = prepared.view.measure.heights; var i = 0; - for (; i < heights.length - 1; i++) { - if (mid < heights[i]) { - break; - } - } - var top = i ? heights[i - 1] : 0, - bot = heights[i]; - var result = { - left: (collapse == 'right' ? rect.right : rect.left) - prepared.rect.left, - right: (collapse == 'left' ? rect.left : rect.right) - prepared.rect.left, - top: top, - bottom: bot, - }; - if (!rect.left && !rect.right) { - result.bogus = true; - } - if (!cm.options.singleCursorHeightPerLine) { - result.rtop = rtop; - result.rbottom = rbot; - } + for (; i < heights.length - 1; i++) + { if (mid < heights[i]) { break } } + var top = i ? heights[i - 1] : 0, bot = heights[i]; + var result = {left: (collapse == "right" ? rect.right : rect.left) - prepared.rect.left, + right: (collapse == "left" ? rect.left : rect.right) - prepared.rect.left, + top: top, bottom: bot}; + if (!rect.left && !rect.right) { result.bogus = true; } + if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; } - return result; + return result } // Work around problem with bounding client rects on ranges being // returned incorrectly when zoomed on IE10 and below. function maybeUpdateRectForZooming(measure, rect) { - if ( - !window.screen || - screen.logicalXDPI == null || - screen.logicalXDPI == screen.deviceXDPI || - !hasBadZoomedRects(measure) - ) { - return rect; - } + if (!window.screen || screen.logicalXDPI == null || + screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure)) + { return rect } var scaleX = screen.logicalXDPI / screen.deviceXDPI; var scaleY = screen.logicalYDPI / screen.deviceYDPI; - return { - left: rect.left * scaleX, - right: rect.right * scaleX, - top: rect.top * scaleY, - bottom: rect.bottom * scaleY, - }; + return {left: rect.left * scaleX, right: rect.right * scaleX, + top: rect.top * scaleY, bottom: rect.bottom * scaleY} } function clearLineMeasurementCacheFor(lineView) { if (lineView.measure) { lineView.measure.cache = {}; lineView.measure.heights = null; - if (lineView.rest) { - for (var i = 0; i < lineView.rest.length; i++) { - lineView.measure.caches[i] = {}; - } - } + if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++) + { lineView.measure.caches[i] = {}; } } } } function clearLineMeasurementCache(cm) { cm.display.externalMeasure = null; removeChildren(cm.display.lineMeasure); - for (var i = 0; i < cm.display.view.length; i++) { - clearLineMeasurementCacheFor(cm.display.view[i]); - } + for (var i = 0; i < cm.display.view.length; i++) + { clearLineMeasurementCacheFor(cm.display.view[i]); } } function clearCaches(cm) { clearLineMeasurementCache(cm); - cm.display.cachedCharWidth = - cm.display.cachedTextHeight = - cm.display.cachedPaddingH = - null; - if (!cm.options.lineWrapping) { - cm.display.maxLineChanged = true; - } + cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null; + if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true; } cm.display.lineNumChars = null; } - function pageScrollX() { + function pageScrollX(doc) { // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206 // which causes page_Offset and bounding client rects to use // different reference viewports and invalidate our calculations. - if (chrome && android) { - return -( - document.body.getBoundingClientRect().left - - parseInt(getComputedStyle(document.body).marginLeft) - ); - } - return ( - window.pageXOffset || - (document.documentElement || document.body).scrollLeft - ); - } - function pageScrollY() { - if (chrome && android) { - return -( - document.body.getBoundingClientRect().top - - parseInt(getComputedStyle(document.body).marginTop) - ); - } - return ( - window.pageYOffset || - (document.documentElement || document.body).scrollTop - ); + if (chrome && android) { return -(doc.body.getBoundingClientRect().left - parseInt(getComputedStyle(doc.body).marginLeft)) } + return doc.defaultView.pageXOffset || (doc.documentElement || doc.body).scrollLeft + } + function pageScrollY(doc) { + if (chrome && android) { return -(doc.body.getBoundingClientRect().top - parseInt(getComputedStyle(doc.body).marginTop)) } + return doc.defaultView.pageYOffset || (doc.documentElement || doc.body).scrollTop } function widgetTopHeight(lineObj) { + var ref = visualLine(lineObj); + var widgets = ref.widgets; var height = 0; - if (lineObj.widgets) { - for (var i = 0; i < lineObj.widgets.length; ++i) { - if (lineObj.widgets[i].above) { - height += widgetHeight(lineObj.widgets[i]); - } - } - } - return height; + if (widgets) { for (var i = 0; i < widgets.length; ++i) { if (widgets[i].above) + { height += widgetHeight(widgets[i]); } } } + return height } // Converts a {top, bottom, left, right} box from line-local @@ -3866,65 +2615,45 @@ function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) { if (!includeWidgets) { var height = widgetTopHeight(lineObj); - rect.top += height; - rect.bottom += height; - } - if (context == 'line') { - return rect; - } - if (!context) { - context = 'local'; + rect.top += height; rect.bottom += height; } + if (context == "line") { return rect } + if (!context) { context = "local"; } var yOff = heightAtLine(lineObj); - if (context == 'local') { - yOff += paddingTop(cm.display); - } else { - yOff -= cm.display.viewOffset; - } - if (context == 'page' || context == 'window') { + if (context == "local") { yOff += paddingTop(cm.display); } + else { yOff -= cm.display.viewOffset; } + if (context == "page" || context == "window") { var lOff = cm.display.lineSpace.getBoundingClientRect(); - yOff += lOff.top + (context == 'window' ? 0 : pageScrollY()); - var xOff = lOff.left + (context == 'window' ? 0 : pageScrollX()); - rect.left += xOff; - rect.right += xOff; + yOff += lOff.top + (context == "window" ? 0 : pageScrollY(doc(cm))); + var xOff = lOff.left + (context == "window" ? 0 : pageScrollX(doc(cm))); + rect.left += xOff; rect.right += xOff; } - rect.top += yOff; - rect.bottom += yOff; - return rect; + rect.top += yOff; rect.bottom += yOff; + return rect } // Coverts a box from "div" coords to another coordinate system. // Context may be "window", "page", "div", or "local"./null. function fromCoordSystem(cm, coords, context) { - if (context == 'div') { - return coords; - } - var left = coords.left, - top = coords.top; + if (context == "div") { return coords } + var left = coords.left, top = coords.top; // First move into "page" coordinate system - if (context == 'page') { - left -= pageScrollX(); - top -= pageScrollY(); - } else if (context == 'local' || !context) { + if (context == "page") { + left -= pageScrollX(doc(cm)); + top -= pageScrollY(doc(cm)); + } else if (context == "local" || !context) { var localBox = cm.display.sizer.getBoundingClientRect(); left += localBox.left; top += localBox.top; } var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect(); - return { left: left - lineSpaceBox.left, top: top - lineSpaceBox.top }; + return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top} } function charCoords(cm, pos, context, lineObj, bias) { - if (!lineObj) { - lineObj = getLine(cm.doc, pos.line); - } - return intoCoordSystem( - cm, - lineObj, - measureChar(cm, lineObj, pos.ch, bias), - context, - ); + if (!lineObj) { lineObj = getLine(cm.doc, pos.line); } + return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context) } // Returns a box for a given cursor position, which may have an @@ -3945,50 +2674,31 @@ // to the last character on the line. function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) { lineObj = lineObj || getLine(cm.doc, pos.line); - if (!preparedMeasure) { - preparedMeasure = prepareMeasureForLine(cm, lineObj); - } + if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); } function get(ch, right) { - var m = measureCharPrepared( - cm, - preparedMeasure, - ch, - right ? 'right' : 'left', - varHeight, - ); - if (right) { - m.left = m.right; - } else { - m.right = m.left; - } - return intoCoordSystem(cm, lineObj, m, context); + var m = measureCharPrepared(cm, preparedMeasure, ch, right ? "right" : "left", varHeight); + if (right) { m.left = m.right; } else { m.right = m.left; } + return intoCoordSystem(cm, lineObj, m, context) } - var order = getOrder(lineObj, cm.doc.direction), - ch = pos.ch, - sticky = pos.sticky; + var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky; if (ch >= lineObj.text.length) { ch = lineObj.text.length; - sticky = 'before'; + sticky = "before"; } else if (ch <= 0) { ch = 0; - sticky = 'after'; - } - if (!order) { - return get(sticky == 'before' ? ch - 1 : ch, sticky == 'before'); + sticky = "after"; } + if (!order) { return get(sticky == "before" ? ch - 1 : ch, sticky == "before") } function getBidi(ch, partPos, invert) { - var part = order[partPos], - right = part.level == 1; - return get(invert ? ch - 1 : ch, right != invert); + var part = order[partPos], right = part.level == 1; + return get(invert ? ch - 1 : ch, right != invert) } var partPos = getBidiPartAt(order, ch, sticky); var other = bidiOther; - var val = getBidi(ch, partPos, sticky == 'before'); - if (other != null) { - val.other = getBidi(ch, other, sticky != 'before'); - } - return val; + var val = getBidi(ch, partPos, sticky == "before"); + if (other != null) { val.other = getBidi(ch, other, sticky != "before"); } + return val } // Used to cheaply estimate the coordinates for a position. Used for @@ -3996,12 +2706,10 @@ function estimateCoords(cm, pos) { var left = 0; pos = clipPos(cm.doc, pos); - if (!cm.options.lineWrapping) { - left = charWidth(cm.display) * pos.ch; - } + if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch; } var lineObj = getLine(cm.doc, pos.line); var top = heightAtLine(lineObj) + paddingTop(cm.display); - return { left: left, right: left, top: top, bottom: top + lineObj.height }; + return {left: left, right: left, top: top, bottom: top + lineObj.height} } // Positions returned by coordsChar contain some extra information. @@ -4013,10 +2721,8 @@ function PosWithInfo(line, ch, sticky, outside, xRel) { var pos = Pos(line, ch, sticky); pos.xRel = xRel; - if (outside) { - pos.outside = outside; - } - return pos; + if (outside) { pos.outside = outside; } + return pos } // Compute the character position closest to the given coordinates. @@ -4024,103 +2730,58 @@ function coordsChar(cm, x, y) { var doc = cm.doc; y += cm.display.viewOffset; - if (y < 0) { - return PosWithInfo(doc.first, 0, null, -1, -1); - } - var lineN = lineAtHeight(doc, y), - last = doc.first + doc.size - 1; - if (lineN > last) { - return PosWithInfo( - doc.first + doc.size - 1, - getLine(doc, last).text.length, - null, - 1, - 1, - ); - } - if (x < 0) { - x = 0; - } + if (y < 0) { return PosWithInfo(doc.first, 0, null, -1, -1) } + var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1; + if (lineN > last) + { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1) } + if (x < 0) { x = 0; } var lineObj = getLine(doc, lineN); for (;;) { var found = coordsCharInner(cm, lineObj, lineN, x, y); - var collapsed = collapsedSpanAround( - lineObj, - found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0), - ); - if (!collapsed) { - return found; - } + var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0)); + if (!collapsed) { return found } var rangeEnd = collapsed.find(1); - if (rangeEnd.line == lineN) { - return rangeEnd; - } - lineObj = getLine(doc, (lineN = rangeEnd.line)); + if (rangeEnd.line == lineN) { return rangeEnd } + lineObj = getLine(doc, lineN = rangeEnd.line); } } function wrappedLineExtent(cm, lineObj, preparedMeasure, y) { y -= widgetTopHeight(lineObj); var end = lineObj.text.length; - var begin = findFirst( - function (ch) { - return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y; - }, - end, - 0, - ); - end = findFirst( - function (ch) { - return measureCharPrepared(cm, preparedMeasure, ch).top > y; - }, - begin, - end, - ); - return { begin: begin, end: end }; + var begin = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y; }, end, 0); + end = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch).top > y; }, begin, end); + return {begin: begin, end: end} } function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) { - if (!preparedMeasure) { - preparedMeasure = prepareMeasureForLine(cm, lineObj); - } - var targetTop = intoCoordSystem( - cm, - lineObj, - measureCharPrepared(cm, preparedMeasure, target), - 'line', - ).top; - return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop); + if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); } + var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), "line").top; + return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop) } // Returns true if the given side of a box is after the given // coordinates, in top-to-bottom, left-to-right order. function boxIsAfter(box, x, y, left) { - return box.bottom <= y - ? false - : box.top > y - ? true - : (left ? box.left : box.right) > x; + return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x } - function coordsCharInner(cm, lineObj, lineNo$$1, x, y) { + function coordsCharInner(cm, lineObj, lineNo, x, y) { // Move y into line-local coordinate space y -= heightAtLine(lineObj); var preparedMeasure = prepareMeasureForLine(cm, lineObj); // When directly calling `measureCharPrepared`, we have to adjust // for the widgets at this line. - var widgetHeight$$1 = widgetTopHeight(lineObj); - var begin = 0, - end = lineObj.text.length, - ltr = true; + var widgetHeight = widgetTopHeight(lineObj); + var begin = 0, end = lineObj.text.length, ltr = true; var order = getOrder(lineObj, cm.doc.direction); // If the line isn't plain left-to-right text, first figure out // which bidi section the coordinates fall into. if (order) { - var part = ( - cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart - )(cm, lineObj, lineNo$$1, preparedMeasure, order, x, y); + var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart) + (cm, lineObj, lineNo, preparedMeasure, order, x, y); ltr = part.level != 1; // The awkward -1 offsets are needed because findFirst (called // on these below) will treat its first bound as inclusive, @@ -4133,136 +2794,71 @@ // A binary search to find the first character whose bounding box // starts after the coordinates. If we run across any whose box wrap // the coordinates, store that. - var chAround = null, - boxAround = null; - var ch = findFirst( - function (ch) { - var box = measureCharPrepared(cm, preparedMeasure, ch); - box.top += widgetHeight$$1; - box.bottom += widgetHeight$$1; - if (!boxIsAfter(box, x, y, false)) { - return false; - } - if (box.top <= y && box.left <= x) { - chAround = ch; - boxAround = box; - } - return true; - }, - begin, - end, - ); - - var baseX, - sticky, - outside = false; + var chAround = null, boxAround = null; + var ch = findFirst(function (ch) { + var box = measureCharPrepared(cm, preparedMeasure, ch); + box.top += widgetHeight; box.bottom += widgetHeight; + if (!boxIsAfter(box, x, y, false)) { return false } + if (box.top <= y && box.left <= x) { + chAround = ch; + boxAround = box; + } + return true + }, begin, end); + + var baseX, sticky, outside = false; // If a box around the coordinates was found, use that if (boxAround) { // Distinguish coordinates nearer to the left or right side of the box - var atLeft = x - boxAround.left < boxAround.right - x, - atStart = atLeft == ltr; + var atLeft = x - boxAround.left < boxAround.right - x, atStart = atLeft == ltr; ch = chAround + (atStart ? 0 : 1); - sticky = atStart ? 'after' : 'before'; + sticky = atStart ? "after" : "before"; baseX = atLeft ? boxAround.left : boxAround.right; } else { // (Adjust for extended bound, if necessary.) - if (!ltr && (ch == end || ch == begin)) { - ch++; - } + if (!ltr && (ch == end || ch == begin)) { ch++; } // To determine which side to associate with, get the box to the // left of the character and compare it's vertical position to the // coordinates - sticky = - ch == 0 - ? 'after' - : ch == lineObj.text.length - ? 'before' - : measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)) - .bottom + - widgetHeight$$1 <= - y == - ltr - ? 'after' - : 'before'; + sticky = ch == 0 ? "after" : ch == lineObj.text.length ? "before" : + (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight <= y) == ltr ? + "after" : "before"; // Now get accurate coordinates for this place, in order to get a // base X position - var coords = cursorCoords( - cm, - Pos(lineNo$$1, ch, sticky), - 'line', - lineObj, - preparedMeasure, - ); + var coords = cursorCoords(cm, Pos(lineNo, ch, sticky), "line", lineObj, preparedMeasure); baseX = coords.left; outside = y < coords.top ? -1 : y >= coords.bottom ? 1 : 0; } ch = skipExtendingChars(lineObj.text, ch, 1); - return PosWithInfo(lineNo$$1, ch, sticky, outside, x - baseX); - } - - function coordsBidiPart( - cm, - lineObj, - lineNo$$1, - preparedMeasure, - order, - x, - y, - ) { + return PosWithInfo(lineNo, ch, sticky, outside, x - baseX) + } + + function coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x, y) { // Bidi parts are sorted left-to-right, and in a non-line-wrapping // situation, we can take this ordering to correspond to the visual // ordering. This finds the first part whose end is after the given // coordinates. - var index = findFirst( - function (i) { - var part = order[i], - ltr = part.level != 1; - return boxIsAfter( - cursorCoords( - cm, - Pos(lineNo$$1, ltr ? part.to : part.from, ltr ? 'before' : 'after'), - 'line', - lineObj, - preparedMeasure, - ), - x, - y, - true, - ); - }, - 0, - order.length - 1, - ); + var index = findFirst(function (i) { + var part = order[i], ltr = part.level != 1; + return boxIsAfter(cursorCoords(cm, Pos(lineNo, ltr ? part.to : part.from, ltr ? "before" : "after"), + "line", lineObj, preparedMeasure), x, y, true) + }, 0, order.length - 1); var part = order[index]; // If this isn't the first part, the part's start is also after // the coordinates, and the coordinates aren't on the same line as // that start, move one part back. if (index > 0) { var ltr = part.level != 1; - var start = cursorCoords( - cm, - Pos(lineNo$$1, ltr ? part.from : part.to, ltr ? 'after' : 'before'), - 'line', - lineObj, - preparedMeasure, - ); - if (boxIsAfter(start, x, y, true) && start.top > y) { - part = order[index - 1]; - } - } - return part; - } - - function coordsBidiPartWrapped( - cm, - lineObj, - _lineNo, - preparedMeasure, - order, - x, - y, - ) { + var start = cursorCoords(cm, Pos(lineNo, ltr ? part.from : part.to, ltr ? "after" : "before"), + "line", lineObj, preparedMeasure); + if (boxIsAfter(start, x, y, true) && start.top > y) + { part = order[index - 1]; } + } + return part + } + + function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) { // In a wrapped line, rtl text on wrapping boundaries can do things // that don't correspond to the ordering in our `order` array at // all, so a binary search doesn't work, and we want to return a @@ -4273,22 +2869,13 @@ var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y); var begin = ref.begin; var end = ref.end; - if (/\s/.test(lineObj.text.charAt(end - 1))) { - end--; - } - var part = null, - closestDist = null; + if (/\s/.test(lineObj.text.charAt(end - 1))) { end--; } + var part = null, closestDist = null; for (var i = 0; i < order.length; i++) { var p = order[i]; - if (p.from >= end || p.to <= begin) { - continue; - } + if (p.from >= end || p.to <= begin) { continue } var ltr = p.level != 1; - var endX = measureCharPrepared( - cm, - preparedMeasure, - ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from), - ).right; + var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right; // Weigh against spans ending before this, so that they are only // picked if nothing ends after var dist = endX < x ? x - endX + 1e9 : endX - x; @@ -4297,132 +2884,95 @@ closestDist = dist; } } - if (!part) { - part = order[order.length - 1]; - } + if (!part) { part = order[order.length - 1]; } // Clip the part to the wrapped line. - if (part.from < begin) { - part = { from: begin, to: part.to, level: part.level }; - } - if (part.to > end) { - part = { from: part.from, to: end, level: part.level }; - } - return part; + if (part.from < begin) { part = {from: begin, to: part.to, level: part.level}; } + if (part.to > end) { part = {from: part.from, to: end, level: part.level}; } + return part } var measureText; // Compute the default text height. function textHeight(display) { - if (display.cachedTextHeight != null) { - return display.cachedTextHeight; - } + if (display.cachedTextHeight != null) { return display.cachedTextHeight } if (measureText == null) { - measureText = elt('pre', null, 'CodeMirror-line-like'); + measureText = elt("pre", null, "CodeMirror-line-like"); // Measure a bunch of lines, for browsers that compute // fractional heights. for (var i = 0; i < 49; ++i) { - measureText.appendChild(document.createTextNode('x')); - measureText.appendChild(elt('br')); + measureText.appendChild(document.createTextNode("x")); + measureText.appendChild(elt("br")); } - measureText.appendChild(document.createTextNode('x')); + measureText.appendChild(document.createTextNode("x")); } removeChildrenAndAdd(display.measure, measureText); var height = measureText.offsetHeight / 50; - if (height > 3) { - display.cachedTextHeight = height; - } + if (height > 3) { display.cachedTextHeight = height; } removeChildren(display.measure); - return height || 1; + return height || 1 } // Compute the default character width. function charWidth(display) { - if (display.cachedCharWidth != null) { - return display.cachedCharWidth; - } - var anchor = elt('span', 'xxxxxxxxxx'); - var pre = elt('pre', [anchor], 'CodeMirror-line-like'); + if (display.cachedCharWidth != null) { return display.cachedCharWidth } + var anchor = elt("span", "xxxxxxxxxx"); + var pre = elt("pre", [anchor], "CodeMirror-line-like"); removeChildrenAndAdd(display.measure, pre); - var rect = anchor.getBoundingClientRect(), - width = (rect.right - rect.left) / 10; - if (width > 2) { - display.cachedCharWidth = width; - } - return width || 10; + var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10; + if (width > 2) { display.cachedCharWidth = width; } + return width || 10 } // Do a bulk-read of the DOM positions and sizes needed to draw the // view, so that we don't interleave reading and writing to the DOM. function getDimensions(cm) { - var d = cm.display, - left = {}, - width = {}; + var d = cm.display, left = {}, width = {}; var gutterLeft = d.gutters.clientLeft; for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) { var id = cm.display.gutterSpecs[i].className; left[id] = n.offsetLeft + n.clientLeft + gutterLeft; width[id] = n.clientWidth; } - return { - fixedPos: compensateForHScroll(d), - gutterTotalWidth: d.gutters.offsetWidth, - gutterLeft: left, - gutterWidth: width, - wrapperWidth: d.wrapper.clientWidth, - }; + return {fixedPos: compensateForHScroll(d), + gutterTotalWidth: d.gutters.offsetWidth, + gutterLeft: left, + gutterWidth: width, + wrapperWidth: d.wrapper.clientWidth} } // Computes display.scroller.scrollLeft + display.gutters.offsetWidth, // but using getBoundingClientRect to get a sub-pixel-accurate // result. function compensateForHScroll(display) { - return ( - display.scroller.getBoundingClientRect().left - - display.sizer.getBoundingClientRect().left - ); + return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left } // Returns a function that estimates the height of a line, to use as // first approximation until the line becomes visible (and is thus // properly measurable). function estimateHeight(cm) { - var th = textHeight(cm.display), - wrapping = cm.options.lineWrapping; - var perLine = - wrapping && - Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3); + var th = textHeight(cm.display), wrapping = cm.options.lineWrapping; + var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3); return function (line) { - if (lineIsHidden(cm.doc, line)) { - return 0; - } + if (lineIsHidden(cm.doc, line)) { return 0 } var widgetsHeight = 0; - if (line.widgets) { - for (var i = 0; i < line.widgets.length; i++) { - if (line.widgets[i].height) { - widgetsHeight += line.widgets[i].height; - } - } - } + if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) { + if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height; } + } } - if (wrapping) { - return ( - widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th - ); - } else { - return widgetsHeight + th; - } - }; + if (wrapping) + { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th } + else + { return widgetsHeight + th } + } } function estimateLineHeights(cm) { - var doc = cm.doc, - est = estimateHeight(cm); + var doc = cm.doc, est = estimateHeight(cm); doc.iter(function (line) { var estHeight = est(line); - if (estHeight != line.height) { - updateLineHeight(line, estHeight); - } + if (estHeight != line.height) { updateLineHeight(line, estHeight); } }); } @@ -4433,57 +2983,30 @@ // coordinates beyond the right of the text. function posFromMouse(cm, e, liberal, forRect) { var display = cm.display; - if (!liberal && e_target(e).getAttribute('cm-not-content') == 'true') { - return null; - } + if (!liberal && e_target(e).getAttribute("cm-not-content") == "true") { return null } - var x, - y, - space = display.lineSpace.getBoundingClientRect(); + var x, y, space = display.lineSpace.getBoundingClientRect(); // Fails unpredictably on IE[67] when mouse is dragged around quickly. - try { - x = e.clientX - space.left; - y = e.clientY - space.top; - } catch (e) { - return null; - } - var coords = coordsChar(cm, x, y), - line; - if ( - forRect && - coords.xRel > 0 && - (line = getLine(cm.doc, coords.line).text).length == coords.ch - ) { - var colDiff = - countColumn(line, line.length, cm.options.tabSize) - line.length; - coords = Pos( - coords.line, - Math.max( - 0, - Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - - colDiff, - ), - ); - } - return coords; + try { x = e.clientX - space.left; y = e.clientY - space.top; } + catch (e$1) { return null } + var coords = coordsChar(cm, x, y), line; + if (forRect && coords.xRel > 0 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) { + var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length; + coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff)); + } + return coords } // Find the view element corresponding to a given line. Return null // when the line isn't visible. function findViewIndex(cm, n) { - if (n >= cm.display.viewTo) { - return null; - } + if (n >= cm.display.viewTo) { return null } n -= cm.display.viewFrom; - if (n < 0) { - return null; - } + if (n < 0) { return null } var view = cm.display.view; for (var i = 0; i < view.length; i++) { n -= view[i].size; - if (n < 0) { - return i; - } + if (n < 0) { return i } } } @@ -4494,48 +3017,30 @@ // lines are divided into visual lines. regLineChange (below) // registers single-line changes. function regChange(cm, from, to, lendiff) { - if (from == null) { - from = cm.doc.first; - } - if (to == null) { - to = cm.doc.first + cm.doc.size; - } - if (!lendiff) { - lendiff = 0; - } + if (from == null) { from = cm.doc.first; } + if (to == null) { to = cm.doc.first + cm.doc.size; } + if (!lendiff) { lendiff = 0; } var display = cm.display; - if ( - lendiff && - to < display.viewTo && - (display.updateLineNumbers == null || display.updateLineNumbers > from) - ) { - display.updateLineNumbers = from; - } + if (lendiff && to < display.viewTo && + (display.updateLineNumbers == null || display.updateLineNumbers > from)) + { display.updateLineNumbers = from; } cm.curOp.viewChanged = true; - if (from >= display.viewTo) { - // Change after - if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo) { - resetView(cm); - } - } else if (to <= display.viewFrom) { - // Change before - if ( - sawCollapsedSpans && - visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom - ) { + if (from >= display.viewTo) { // Change after + if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo) + { resetView(cm); } + } else if (to <= display.viewFrom) { // Change before + if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) { resetView(cm); } else { display.viewFrom += lendiff; display.viewTo += lendiff; } - } else if (from <= display.viewFrom && to >= display.viewTo) { - // Full overlap + } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap resetView(cm); - } else if (from <= display.viewFrom) { - // Top overlap + } else if (from <= display.viewFrom) { // Top overlap var cut = viewCuttingPoint(cm, to, to + lendiff, 1); if (cut) { display.view = display.view.slice(cut.index); @@ -4544,8 +3049,7 @@ } else { resetView(cm); } - } else if (to >= display.viewTo) { - // Bottom overlap + } else if (to >= display.viewTo) { // Bottom overlap var cut$1 = viewCuttingPoint(cm, from, from, -1); if (cut$1) { display.view = display.view.slice(0, cut$1.index); @@ -4553,13 +3057,11 @@ } else { resetView(cm); } - } else { - // Gap in the middle + } else { // Gap in the middle var cutTop = viewCuttingPoint(cm, from, from, -1); var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1); if (cutTop && cutBot) { - display.view = display.view - .slice(0, cutTop.index) + display.view = display.view.slice(0, cutTop.index) .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN)) .concat(display.view.slice(cutBot.index)); display.viewTo += lendiff; @@ -4570,11 +3072,10 @@ var ext = display.externalMeasured; if (ext) { - if (to < ext.lineN) { - ext.lineN += lendiff; - } else if (from < ext.lineN + ext.size) { - display.externalMeasured = null; - } + if (to < ext.lineN) + { ext.lineN += lendiff; } + else if (from < ext.lineN + ext.size) + { display.externalMeasured = null; } } } @@ -4582,23 +3083,15 @@ // "gutter", "class", "widget" function regLineChange(cm, line, type) { cm.curOp.viewChanged = true; - var display = cm.display, - ext = cm.display.externalMeasured; - if (ext && line >= ext.lineN && line < ext.lineN + ext.size) { - display.externalMeasured = null; - } + var display = cm.display, ext = cm.display.externalMeasured; + if (ext && line >= ext.lineN && line < ext.lineN + ext.size) + { display.externalMeasured = null; } - if (line < display.viewFrom || line >= display.viewTo) { - return; - } + if (line < display.viewFrom || line >= display.viewTo) { return } var lineView = display.view[findViewIndex(cm, line)]; - if (lineView.node == null) { - return; - } + if (lineView.node == null) { return } var arr = lineView.changes || (lineView.changes = []); - if (indexOf(arr, type) == -1) { - arr.push(type); - } + if (indexOf(arr, type) == -1) { arr.push(type); } } // Clear the view. @@ -4609,63 +3102,47 @@ } function viewCuttingPoint(cm, oldN, newN, dir) { - var index = findViewIndex(cm, oldN), - diff, - view = cm.display.view; - if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size) { - return { index: index, lineN: newN }; - } + var index = findViewIndex(cm, oldN), diff, view = cm.display.view; + if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size) + { return {index: index, lineN: newN} } var n = cm.display.viewFrom; - for (var i = 0; i < index; i++) { - n += view[i].size; - } + for (var i = 0; i < index; i++) + { n += view[i].size; } if (n != oldN) { if (dir > 0) { - if (index == view.length - 1) { - return null; - } - diff = n + view[index].size - oldN; + if (index == view.length - 1) { return null } + diff = (n + view[index].size) - oldN; index++; } else { diff = n - oldN; } - oldN += diff; - newN += diff; + oldN += diff; newN += diff; } while (visualLineNo(cm.doc, newN) != newN) { - if (index == (dir < 0 ? 0 : view.length - 1)) { - return null; - } + if (index == (dir < 0 ? 0 : view.length - 1)) { return null } newN += dir * view[index - (dir < 0 ? 1 : 0)].size; index += dir; } - return { index: index, lineN: newN }; + return {index: index, lineN: newN} } // Force the view to cover a given range, adding empty view element // or clipping off existing ones as needed. function adjustView(cm, from, to) { - var display = cm.display, - view = display.view; + var display = cm.display, view = display.view; if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) { display.view = buildViewArray(cm, from, to); display.viewFrom = from; } else { - if (display.viewFrom > from) { - display.view = buildViewArray(cm, from, display.viewFrom).concat( - display.view, - ); - } else if (display.viewFrom < from) { - display.view = display.view.slice(findViewIndex(cm, from)); - } + if (display.viewFrom > from) + { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); } + else if (display.viewFrom < from) + { display.view = display.view.slice(findViewIndex(cm, from)); } display.viewFrom = from; - if (display.viewTo < to) { - display.view = display.view.concat( - buildViewArray(cm, display.viewTo, to), - ); - } else if (display.viewTo > to) { - display.view = display.view.slice(0, findViewIndex(cm, to)); - } + if (display.viewTo < to) + { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); } + else if (display.viewTo > to) + { display.view = display.view.slice(0, findViewIndex(cm, to)); } } display.viewTo = to; } @@ -4673,15 +3150,12 @@ // Count the number of lines in the view whose DOM representation is // out of date (or nonexistent). function countDirtyView(cm) { - var view = cm.display.view, - dirty = 0; + var view = cm.display.view, dirty = 0; for (var i = 0; i < view.length; i++) { var lineView = view[i]; - if (!lineView.hidden && (!lineView.node || lineView.changes)) { - ++dirty; - } + if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty; } } - return dirty; + return dirty } function updateSelection(cm) { @@ -4689,105 +3163,71 @@ } function prepareSelection(cm, primary) { - if (primary === void 0) primary = true; + if ( primary === void 0 ) primary = true; - var doc = cm.doc, - result = {}; - var curFragment = (result.cursors = document.createDocumentFragment()); - var selFragment = (result.selection = document.createDocumentFragment()); + var doc = cm.doc, result = {}; + var curFragment = result.cursors = document.createDocumentFragment(); + var selFragment = result.selection = document.createDocumentFragment(); + var customCursor = cm.options.$customCursor; + if (customCursor) { primary = true; } for (var i = 0; i < doc.sel.ranges.length; i++) { - if (!primary && i == doc.sel.primIndex) { - continue; - } - var range$$1 = doc.sel.ranges[i]; - if ( - range$$1.from().line >= cm.display.viewTo || - range$$1.to().line < cm.display.viewFrom - ) { - continue; - } - var collapsed = range$$1.empty(); - if (collapsed || cm.options.showCursorWhenSelecting) { - drawSelectionCursor(cm, range$$1.head, curFragment); - } - if (!collapsed) { - drawSelectionRange(cm, range$$1, selFragment); + if (!primary && i == doc.sel.primIndex) { continue } + var range = doc.sel.ranges[i]; + if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) { continue } + var collapsed = range.empty(); + if (customCursor) { + var head = customCursor(cm, range); + if (head) { drawSelectionCursor(cm, head, curFragment); } + } else if (collapsed || cm.options.showCursorWhenSelecting) { + drawSelectionCursor(cm, range.head, curFragment); } + if (!collapsed) + { drawSelectionRange(cm, range, selFragment); } } - return result; + return result } // Draws a cursor for the given range function drawSelectionCursor(cm, head, output) { - var pos = cursorCoords( - cm, - head, - 'div', - null, - null, - !cm.options.singleCursorHeightPerLine, - ); - - var cursor = output.appendChild(elt('div', '\u00a0', 'CodeMirror-cursor')); - cursor.style.left = pos.left + 'px'; - cursor.style.top = pos.top + 'px'; - cursor.style.height = - Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + 'px'; + var pos = cursorCoords(cm, head, "div", null, null, !cm.options.singleCursorHeightPerLine); + + var cursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor")); + cursor.style.left = pos.left + "px"; + cursor.style.top = pos.top + "px"; + cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + "px"; + + if (/\bcm-fat-cursor\b/.test(cm.getWrapperElement().className)) { + var charPos = charCoords(cm, head, "div", null, null); + var width = charPos.right - charPos.left; + cursor.style.width = (width > 0 ? width : cm.defaultCharWidth()) + "px"; + } if (pos.other) { // Secondary cursor, shown when on a 'jump' in bi-directional text - var otherCursor = output.appendChild( - elt('div', '\u00a0', 'CodeMirror-cursor CodeMirror-secondarycursor'), - ); - otherCursor.style.display = ''; - otherCursor.style.left = pos.other.left + 'px'; - otherCursor.style.top = pos.other.top + 'px'; - otherCursor.style.height = - (pos.other.bottom - pos.other.top) * 0.85 + 'px'; + var otherCursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor CodeMirror-secondarycursor")); + otherCursor.style.display = ""; + otherCursor.style.left = pos.other.left + "px"; + otherCursor.style.top = pos.other.top + "px"; + otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + "px"; } } - function cmpCoords(a, b) { - return a.top - b.top || a.left - b.left; - } + function cmpCoords(a, b) { return a.top - b.top || a.left - b.left } // Draws the given range as a highlighted selection - function drawSelectionRange(cm, range$$1, output) { - var display = cm.display, - doc = cm.doc; + function drawSelectionRange(cm, range, output) { + var display = cm.display, doc = cm.doc; var fragment = document.createDocumentFragment(); - var padding = paddingH(cm.display), - leftSide = padding.left; - var rightSide = - Math.max( - display.sizerWidth, - displayWidth(cm) - display.sizer.offsetLeft, - ) - padding.right; - var docLTR = doc.direction == 'ltr'; + var padding = paddingH(cm.display), leftSide = padding.left; + var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right; + var docLTR = doc.direction == "ltr"; function add(left, top, width, bottom) { - if (top < 0) { - top = 0; - } + if (top < 0) { top = 0; } top = Math.round(top); bottom = Math.round(bottom); - fragment.appendChild( - elt( - 'div', - null, - 'CodeMirror-selected', - 'position: absolute; left: ' + - left + - 'px;\n top: ' + - top + - 'px; width: ' + - (width == null ? rightSide - left : width) + - 'px;\n height: ' + - (bottom - top) + - 'px', - ), - ); + fragment.appendChild(elt("div", null, "CodeMirror-selected", ("position: absolute; left: " + left + "px;\n top: " + top + "px; width: " + (width == null ? rightSide - left : width) + "px;\n height: " + (bottom - top) + "px"))); } function drawForLine(line, fromArg, toArg) { @@ -4795,114 +3235,74 @@ var lineLen = lineObj.text.length; var start, end; function coords(ch, bias) { - return charCoords(cm, Pos(line, ch), 'div', lineObj, bias); + return charCoords(cm, Pos(line, ch), "div", lineObj, bias) } function wrapX(pos, dir, side) { var extent = wrappedLineExtentChar(cm, lineObj, null, pos); - var prop = (dir == 'ltr') == (side == 'after') ? 'left' : 'right'; - var ch = - side == 'after' - ? extent.begin - : extent.end - - (/\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1); - return coords(ch, prop)[prop]; + var prop = (dir == "ltr") == (side == "after") ? "left" : "right"; + var ch = side == "after" ? extent.begin : extent.end - (/\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1); + return coords(ch, prop)[prop] } var order = getOrder(lineObj, doc.direction); - iterateBidiSections( - order, - fromArg || 0, - toArg == null ? lineLen : toArg, - function (from, to, dir, i) { - var ltr = dir == 'ltr'; - var fromPos = coords(from, ltr ? 'left' : 'right'); - var toPos = coords(to - 1, ltr ? 'right' : 'left'); - - var openStart = fromArg == null && from == 0, - openEnd = toArg == null && to == lineLen; - var first = i == 0, - last = !order || i == order.length - 1; - if (toPos.top - fromPos.top <= 3) { - // Single line - var openLeft = (docLTR ? openStart : openEnd) && first; - var openRight = (docLTR ? openEnd : openStart) && last; - var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left; - var right = openRight ? rightSide : (ltr ? toPos : fromPos).right; - add(left, fromPos.top, right - left, fromPos.bottom); + iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) { + var ltr = dir == "ltr"; + var fromPos = coords(from, ltr ? "left" : "right"); + var toPos = coords(to - 1, ltr ? "right" : "left"); + + var openStart = fromArg == null && from == 0, openEnd = toArg == null && to == lineLen; + var first = i == 0, last = !order || i == order.length - 1; + if (toPos.top - fromPos.top <= 3) { // Single line + var openLeft = (docLTR ? openStart : openEnd) && first; + var openRight = (docLTR ? openEnd : openStart) && last; + var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left; + var right = openRight ? rightSide : (ltr ? toPos : fromPos).right; + add(left, fromPos.top, right - left, fromPos.bottom); + } else { // Multiple lines + var topLeft, topRight, botLeft, botRight; + if (ltr) { + topLeft = docLTR && openStart && first ? leftSide : fromPos.left; + topRight = docLTR ? rightSide : wrapX(from, dir, "before"); + botLeft = docLTR ? leftSide : wrapX(to, dir, "after"); + botRight = docLTR && openEnd && last ? rightSide : toPos.right; } else { - // Multiple lines - var topLeft, topRight, botLeft, botRight; - if (ltr) { - topLeft = docLTR && openStart && first ? leftSide : fromPos.left; - topRight = docLTR ? rightSide : wrapX(from, dir, 'before'); - botLeft = docLTR ? leftSide : wrapX(to, dir, 'after'); - botRight = docLTR && openEnd && last ? rightSide : toPos.right; - } else { - topLeft = !docLTR ? leftSide : wrapX(from, dir, 'before'); - topRight = - !docLTR && openStart && first ? rightSide : fromPos.right; - botLeft = !docLTR && openEnd && last ? leftSide : toPos.left; - botRight = !docLTR ? rightSide : wrapX(to, dir, 'after'); - } - add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom); - if (fromPos.bottom < toPos.top) { - add(leftSide, fromPos.bottom, null, toPos.top); - } - add(botLeft, toPos.top, botRight - botLeft, toPos.bottom); + topLeft = !docLTR ? leftSide : wrapX(from, dir, "before"); + topRight = !docLTR && openStart && first ? rightSide : fromPos.right; + botLeft = !docLTR && openEnd && last ? leftSide : toPos.left; + botRight = !docLTR ? rightSide : wrapX(to, dir, "after"); } + add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom); + if (fromPos.bottom < toPos.top) { add(leftSide, fromPos.bottom, null, toPos.top); } + add(botLeft, toPos.top, botRight - botLeft, toPos.bottom); + } - if (!start || cmpCoords(fromPos, start) < 0) { - start = fromPos; - } - if (cmpCoords(toPos, start) < 0) { - start = toPos; - } - if (!end || cmpCoords(fromPos, end) < 0) { - end = fromPos; - } - if (cmpCoords(toPos, end) < 0) { - end = toPos; - } - }, - ); - return { start: start, end: end }; + if (!start || cmpCoords(fromPos, start) < 0) { start = fromPos; } + if (cmpCoords(toPos, start) < 0) { start = toPos; } + if (!end || cmpCoords(fromPos, end) < 0) { end = fromPos; } + if (cmpCoords(toPos, end) < 0) { end = toPos; } + }); + return {start: start, end: end} } - var sFrom = range$$1.from(), - sTo = range$$1.to(); + var sFrom = range.from(), sTo = range.to(); if (sFrom.line == sTo.line) { drawForLine(sFrom.line, sFrom.ch, sTo.ch); } else { - var fromLine = getLine(doc, sFrom.line), - toLine = getLine(doc, sTo.line); + var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line); var singleVLine = visualLine(fromLine) == visualLine(toLine); - var leftEnd = drawForLine( - sFrom.line, - sFrom.ch, - singleVLine ? fromLine.text.length + 1 : null, - ).end; - var rightStart = drawForLine( - sTo.line, - singleVLine ? 0 : null, - sTo.ch, - ).start; + var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end; + var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start; if (singleVLine) { if (leftEnd.top < rightStart.top - 2) { add(leftEnd.right, leftEnd.top, null, leftEnd.bottom); add(leftSide, rightStart.top, rightStart.left, rightStart.bottom); } else { - add( - leftEnd.right, - leftEnd.top, - rightStart.left - leftEnd.right, - leftEnd.bottom, - ); + add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom); } } - if (leftEnd.bottom < rightStart.top) { - add(leftSide, leftEnd.bottom, null, rightStart.top); - } + if (leftEnd.bottom < rightStart.top) + { add(leftSide, leftEnd.bottom, null, rightStart.top); } } output.appendChild(fragment); @@ -4910,84 +3310,64 @@ // Cursor-blinking function restartBlink(cm) { - if (!cm.state.focused) { - return; - } + if (!cm.state.focused) { return } var display = cm.display; clearInterval(display.blinker); var on = true; - display.cursorDiv.style.visibility = ''; - if (cm.options.cursorBlinkRate > 0) { - display.blinker = setInterval(function () { - return (display.cursorDiv.style.visibility = (on = !on) - ? '' - : 'hidden'); - }, cm.options.cursorBlinkRate); - } else if (cm.options.cursorBlinkRate < 0) { - display.cursorDiv.style.visibility = 'hidden'; - } + display.cursorDiv.style.visibility = ""; + if (cm.options.cursorBlinkRate > 0) + { display.blinker = setInterval(function () { + if (!cm.hasFocus()) { onBlur(cm); } + display.cursorDiv.style.visibility = (on = !on) ? "" : "hidden"; + }, cm.options.cursorBlinkRate); } + else if (cm.options.cursorBlinkRate < 0) + { display.cursorDiv.style.visibility = "hidden"; } } function ensureFocus(cm) { - if (!cm.state.focused) { + if (!cm.hasFocus()) { cm.display.input.focus(); - onFocus(cm); + if (!cm.state.focused) { onFocus(cm); } } } function delayBlurEvent(cm) { cm.state.delayingBlurEvent = true; - setTimeout(function () { - if (cm.state.delayingBlurEvent) { - cm.state.delayingBlurEvent = false; - onBlur(cm); - } - }, 100); + setTimeout(function () { if (cm.state.delayingBlurEvent) { + cm.state.delayingBlurEvent = false; + if (cm.state.focused) { onBlur(cm); } + } }, 100); } function onFocus(cm, e) { - if (cm.state.delayingBlurEvent) { - cm.state.delayingBlurEvent = false; - } + if (cm.state.delayingBlurEvent && !cm.state.draggingText) { cm.state.delayingBlurEvent = false; } - if (cm.options.readOnly == 'nocursor') { - return; - } + if (cm.options.readOnly == "nocursor") { return } if (!cm.state.focused) { - signal(cm, 'focus', cm, e); + signal(cm, "focus", cm, e); cm.state.focused = true; - addClass(cm.display.wrapper, 'CodeMirror-focused'); + addClass(cm.display.wrapper, "CodeMirror-focused"); // This test prevents this from firing when a context // menu is closed (since the input reset would kill the // select-all detection hack) if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) { cm.display.input.reset(); - if (webkit) { - setTimeout(function () { - return cm.display.input.reset(true); - }, 20); - } // Issue #1730 + if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20); } // Issue #1730 } cm.display.input.receivedFocus(); } restartBlink(cm); } function onBlur(cm, e) { - if (cm.state.delayingBlurEvent) { - return; - } + if (cm.state.delayingBlurEvent) { return } if (cm.state.focused) { - signal(cm, 'blur', cm, e); + signal(cm, "blur", cm, e); cm.state.focused = false; - rmClass(cm.display.wrapper, 'CodeMirror-focused'); + rmClass(cm.display.wrapper, "CodeMirror-focused"); } clearInterval(cm.display.blinker); - setTimeout(function () { - if (!cm.state.focused) { - cm.display.shift = false; - } - }, 150); + setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false; } }, 150); } // Read the actual heights of the rendered lines, and update their @@ -4995,14 +3375,14 @@ function updateHeightsInViewport(cm) { var display = cm.display; var prevBottom = display.lineDiv.offsetTop; + var viewTop = Math.max(0, display.scroller.getBoundingClientRect().top); + var oldHeight = display.lineDiv.getBoundingClientRect().top; + var mustScroll = 0; for (var i = 0; i < display.view.length; i++) { - var cur = display.view[i], - wrapping = cm.options.lineWrapping; - var height = void 0, - width = 0; - if (cur.hidden) { - continue; - } + var cur = display.view[i], wrapping = cm.options.lineWrapping; + var height = (void 0), width = 0; + if (cur.hidden) { continue } + oldHeight += cur.line.height; if (ie && ie_version < 8) { var bot = cur.node.offsetTop + cur.node.offsetHeight; height = bot - prevBottom; @@ -5012,20 +3392,16 @@ height = box.bottom - box.top; // Check that lines don't extend past the right of the current // editor width - if (!wrapping && cur.text.firstChild) { - width = - cur.text.firstChild.getBoundingClientRect().right - box.left - 1; - } + if (!wrapping && cur.text.firstChild) + { width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1; } } var diff = cur.line.height - height; - if (diff > 0.005 || diff < -0.005) { + if (diff > .005 || diff < -.005) { + if (oldHeight < viewTop) { mustScroll -= diff; } updateLineHeight(cur.line, height); updateWidgetHeight(cur.line); - if (cur.rest) { - for (var j = 0; j < cur.rest.length; j++) { - updateWidgetHeight(cur.rest[j]); - } - } + if (cur.rest) { for (var j = 0; j < cur.rest.length; j++) + { updateWidgetHeight(cur.rest[j]); } } } if (width > cm.display.sizerWidth) { var chWidth = Math.ceil(width / charWidth(cm.display)); @@ -5036,58 +3412,40 @@ } } } + if (Math.abs(mustScroll) > 2) { display.scroller.scrollTop += mustScroll; } } // Read and store the height of line widgets associated with the // given line. function updateWidgetHeight(line) { - if (line.widgets) { - for (var i = 0; i < line.widgets.length; ++i) { - var w = line.widgets[i], - parent = w.node.parentNode; - if (parent) { - w.height = parent.offsetHeight; - } - } - } + if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i) { + var w = line.widgets[i], parent = w.node.parentNode; + if (parent) { w.height = parent.offsetHeight; } + } } } // Compute the lines that are visible in a given viewport (defaults // the the current scroll position). viewport may contain top, // height, and ensure (see op.scrollToPos) properties. function visibleLines(display, doc, viewport) { - var top = - viewport && viewport.top != null - ? Math.max(0, viewport.top) - : display.scroller.scrollTop; + var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop; top = Math.floor(top - paddingTop(display)); - var bottom = - viewport && viewport.bottom != null - ? viewport.bottom - : top + display.wrapper.clientHeight; + var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight; - var from = lineAtHeight(doc, top), - to = lineAtHeight(doc, bottom); + var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom); // Ensure is a {from: {line, ch}, to: {line, ch}} object, and // forces those lines into the viewport (if possible). if (viewport && viewport.ensure) { - var ensureFrom = viewport.ensure.from.line, - ensureTo = viewport.ensure.to.line; + var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line; if (ensureFrom < from) { from = ensureFrom; - to = lineAtHeight( - doc, - heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight, - ); + to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight); } else if (Math.min(ensureTo, doc.lastLine()) >= to) { - from = lineAtHeight( - doc, - heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight, - ); + from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight); to = ensureTo; } } - return { from: from, to: Math.max(to, from + 1) }; + return {from: from, to: Math.max(to, from + 1)} } // SCROLLING THINGS INTO VIEW @@ -5095,36 +3453,14 @@ // If an editor sits on the top or bottom of the window, partially // scrolled out of view, this ensures that the cursor is visible. function maybeScrollWindow(cm, rect) { - if (signalDOMEvent(cm, 'scrollCursorIntoView')) { - return; - } + if (signalDOMEvent(cm, "scrollCursorIntoView")) { return } - var display = cm.display, - box = display.sizer.getBoundingClientRect(), - doScroll = null; - if (rect.top + box.top < 0) { - doScroll = true; - } else if ( - rect.bottom + box.top > - (window.innerHeight || document.documentElement.clientHeight) - ) { - doScroll = false; - } + var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null; + var doc = display.wrapper.ownerDocument; + if (rect.top + box.top < 0) { doScroll = true; } + else if (rect.bottom + box.top > (doc.defaultView.innerHeight || doc.documentElement.clientHeight)) { doScroll = false; } if (doScroll != null && !phantom) { - var scrollNode = elt( - 'div', - '\u200b', - null, - 'position: absolute;\n top: ' + - (rect.top - display.viewOffset - paddingTop(cm.display)) + - 'px;\n height: ' + - (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + - 'px;\n left: ' + - rect.left + - 'px; width: ' + - Math.max(2, rect.right - rect.left) + - 'px;', - ); + var scrollNode = elt("div", "\u200b", null, ("position: absolute;\n top: " + (rect.top - display.viewOffset - paddingTop(cm.display)) + "px;\n height: " + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + "px;\n left: " + (rect.left) + "px; width: " + (Math.max(2, rect.right - rect.left)) + "px;")); cm.display.lineSpace.appendChild(scrollNode); scrollNode.scrollIntoView(doScroll); cm.display.lineSpace.removeChild(scrollNode); @@ -5135,60 +3471,43 @@ // it actually became visible (as line heights are accurately // measured, the position of something may 'drift' during drawing). function scrollPosIntoView(cm, pos, end, margin) { - if (margin == null) { - margin = 0; - } + if (margin == null) { margin = 0; } var rect; if (!cm.options.lineWrapping && pos == end) { // Set pos and end to the cursor positions around the character pos sticks to // If pos.sticky == "before", that is around pos.ch - 1, otherwise around pos.ch // If pos == Pos(_, 0, "before"), pos and end are unchanged - pos = pos.ch - ? Pos(pos.line, pos.sticky == 'before' ? pos.ch - 1 : pos.ch, 'after') - : pos; - end = pos.sticky == 'before' ? Pos(pos.line, pos.ch + 1, 'before') : pos; + end = pos.sticky == "before" ? Pos(pos.line, pos.ch + 1, "before") : pos; + pos = pos.ch ? Pos(pos.line, pos.sticky == "before" ? pos.ch - 1 : pos.ch, "after") : pos; } for (var limit = 0; limit < 5; limit++) { var changed = false; var coords = cursorCoords(cm, pos); var endCoords = !end || end == pos ? coords : cursorCoords(cm, end); - rect = { - left: Math.min(coords.left, endCoords.left), - top: Math.min(coords.top, endCoords.top) - margin, - right: Math.max(coords.left, endCoords.left), - bottom: Math.max(coords.bottom, endCoords.bottom) + margin, - }; + rect = {left: Math.min(coords.left, endCoords.left), + top: Math.min(coords.top, endCoords.top) - margin, + right: Math.max(coords.left, endCoords.left), + bottom: Math.max(coords.bottom, endCoords.bottom) + margin}; var scrollPos = calculateScrollPos(cm, rect); - var startTop = cm.doc.scrollTop, - startLeft = cm.doc.scrollLeft; + var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft; if (scrollPos.scrollTop != null) { updateScrollTop(cm, scrollPos.scrollTop); - if (Math.abs(cm.doc.scrollTop - startTop) > 1) { - changed = true; - } + if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true; } } if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); - if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { - changed = true; - } - } - if (!changed) { - break; + if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true; } } + if (!changed) { break } } - return rect; + return rect } // Scroll a given set of coordinates into view (immediately). function scrollIntoView(cm, rect) { var scrollPos = calculateScrollPos(cm, rect); - if (scrollPos.scrollTop != null) { - updateScrollTop(cm, scrollPos.scrollTop); - } - if (scrollPos.scrollLeft != null) { - setScrollLeft(cm, scrollPos.scrollLeft); - } + if (scrollPos.scrollTop != null) { updateScrollTop(cm, scrollPos.scrollTop); } + if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); } } // Calculate a new scroll position needed to scroll the given @@ -5196,66 +3515,40 @@ // scrollLeft properties. When these are undefined, the // vertical/horizontal position does not need to be adjusted. function calculateScrollPos(cm, rect) { - var display = cm.display, - snapMargin = textHeight(cm.display); - if (rect.top < 0) { - rect.top = 0; - } - var screentop = - cm.curOp && cm.curOp.scrollTop != null - ? cm.curOp.scrollTop - : display.scroller.scrollTop; - var screen = displayHeight(cm), - result = {}; - if (rect.bottom - rect.top > screen) { - rect.bottom = rect.top + screen; - } + var display = cm.display, snapMargin = textHeight(cm.display); + if (rect.top < 0) { rect.top = 0; } + var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop; + var screen = displayHeight(cm), result = {}; + if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen; } var docBottom = cm.doc.height + paddingVert(display); - var atTop = rect.top < snapMargin, - atBottom = rect.bottom > docBottom - snapMargin; + var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin; if (rect.top < screentop) { result.scrollTop = atTop ? 0 : rect.top; } else if (rect.bottom > screentop + screen) { - var newTop = Math.min( - rect.top, - (atBottom ? docBottom : rect.bottom) - screen, - ); - if (newTop != screentop) { - result.scrollTop = newTop; - } - } - - var screenleft = - cm.curOp && cm.curOp.scrollLeft != null - ? cm.curOp.scrollLeft - : display.scroller.scrollLeft; - var screenw = - displayWidth(cm) - - (cm.options.fixedGutter ? display.gutters.offsetWidth : 0); - var tooWide = rect.right - rect.left > screenw; - if (tooWide) { - rect.right = rect.left + screenw; + var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen); + if (newTop != screentop) { result.scrollTop = newTop; } } - if (rect.left < 10) { - result.scrollLeft = 0; - } else if (rect.left < screenleft) { - result.scrollLeft = Math.max(0, rect.left - (tooWide ? 0 : 10)); - } else if (rect.right > screenw + screenleft - 3) { - result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; - } - return result; + + var gutterSpace = cm.options.fixedGutter ? 0 : display.gutters.offsetWidth; + var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft - gutterSpace; + var screenw = displayWidth(cm) - display.gutters.offsetWidth; + var tooWide = rect.right - rect.left > screenw; + if (tooWide) { rect.right = rect.left + screenw; } + if (rect.left < 10) + { result.scrollLeft = 0; } + else if (rect.left < screenleft) + { result.scrollLeft = Math.max(0, rect.left + gutterSpace - (tooWide ? 0 : 10)); } + else if (rect.right > screenw + screenleft - 3) + { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; } + return result } // Store a relative adjustment to the scroll position in the current // operation (to be applied when the operation finishes). function addToScrollTop(cm, top) { - if (top == null) { - return; - } + if (top == null) { return } resolveScrollToPos(cm); - cm.curOp.scrollTop = - (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + - top; + cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top; } // Make sure that at the end of the operation the current cursor is @@ -5263,28 +3556,18 @@ function ensureCursorVisible(cm) { resolveScrollToPos(cm); var cur = cm.getCursor(); - cm.curOp.scrollToPos = { - from: cur, - to: cur, - margin: cm.options.cursorScrollMargin, - }; + cm.curOp.scrollToPos = {from: cur, to: cur, margin: cm.options.cursorScrollMargin}; } function scrollToCoords(cm, x, y) { - if (x != null || y != null) { - resolveScrollToPos(cm); - } - if (x != null) { - cm.curOp.scrollLeft = x; - } - if (y != null) { - cm.curOp.scrollTop = y; - } + if (x != null || y != null) { resolveScrollToPos(cm); } + if (x != null) { cm.curOp.scrollLeft = x; } + if (y != null) { cm.curOp.scrollTop = y; } } - function scrollToRange(cm, range$$1) { + function scrollToRange(cm, range) { resolveScrollToPos(cm); - cm.curOp.scrollToPos = range$$1; + cm.curOp.scrollToPos = range; } // When an operation has its scrollToPos property set, and another @@ -5292,12 +3575,11 @@ // 'simulates' scrolling that position into view in a cheap way, so // that the effect of intermediate scroll commands is not ignored. function resolveScrollToPos(cm) { - var range$$1 = cm.curOp.scrollToPos; - if (range$$1) { + var range = cm.curOp.scrollToPos; + if (range) { cm.curOp.scrollToPos = null; - var from = estimateCoords(cm, range$$1.from), - to = estimateCoords(cm, range$$1.to); - scrollToCoordsRange(cm, from, to, range$$1.margin); + var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to); + scrollToCoordsRange(cm, from, to, range.margin); } } @@ -5306,7 +3588,7 @@ left: Math.min(from.left, to.left), top: Math.min(from.top, to.top) - margin, right: Math.max(from.right, to.right), - bottom: Math.max(from.bottom, to.bottom) + margin, + bottom: Math.max(from.bottom, to.bottom) + margin }); scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop); } @@ -5314,54 +3596,29 @@ // Sync the scrollable area and scrollbars, ensure the viewport // covers the visible area. function updateScrollTop(cm, val) { - if (Math.abs(cm.doc.scrollTop - val) < 2) { - return; - } - if (!gecko) { - updateDisplaySimple(cm, { top: val }); - } + if (Math.abs(cm.doc.scrollTop - val) < 2) { return } + if (!gecko) { updateDisplaySimple(cm, {top: val}); } setScrollTop(cm, val, true); - if (gecko) { - updateDisplaySimple(cm); - } + if (gecko) { updateDisplaySimple(cm); } startWorker(cm, 100); } function setScrollTop(cm, val, forceScroll) { - val = Math.min( - cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, - val, - ); - if (cm.display.scroller.scrollTop == val && !forceScroll) { - return; - } + val = Math.max(0, Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val)); + if (cm.display.scroller.scrollTop == val && !forceScroll) { return } cm.doc.scrollTop = val; cm.display.scrollbars.setScrollTop(val); - if (cm.display.scroller.scrollTop != val) { - cm.display.scroller.scrollTop = val; - } + if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val; } } // Sync scroller and scrollbar, ensure the gutter elements are // aligned. function setScrollLeft(cm, val, isScroller, forceScroll) { - val = Math.min( - val, - cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth, - ); - if ( - (isScroller - ? val == cm.doc.scrollLeft - : Math.abs(cm.doc.scrollLeft - val) < 2) && - !forceScroll - ) { - return; - } + val = Math.max(0, Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth)); + if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) { return } cm.doc.scrollLeft = val; alignHorizontally(cm); - if (cm.display.scroller.scrollLeft != val) { - cm.display.scroller.scrollLeft = val; - } + if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val; } cm.display.scrollbars.setScrollLeft(val); } @@ -5370,55 +3627,38 @@ // Prepare DOM reads needed to update the scrollbars. Done in one // shot to minimize update/measure roundtrips. function measureForScrollbars(cm) { - var d = cm.display, - gutterW = d.gutters.offsetWidth; + var d = cm.display, gutterW = d.gutters.offsetWidth; var docH = Math.round(cm.doc.height + paddingVert(cm.display)); return { clientHeight: d.scroller.clientHeight, viewHeight: d.wrapper.clientHeight, - scrollWidth: d.scroller.scrollWidth, - clientWidth: d.scroller.clientWidth, + scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth, viewWidth: d.wrapper.clientWidth, barLeft: cm.options.fixedGutter ? gutterW : 0, docHeight: docH, scrollHeight: docH + scrollGap(cm) + d.barHeight, nativeBarWidth: d.nativeBarWidth, - gutterWidth: gutterW, - }; + gutterWidth: gutterW + } } - var NativeScrollbars = function (place, scroll, cm) { + var NativeScrollbars = function(place, scroll, cm) { this.cm = cm; - var vert = (this.vert = elt( - 'div', - [elt('div', null, null, 'min-width: 1px')], - 'CodeMirror-vscrollbar', - )); - var horiz = (this.horiz = elt( - 'div', - [elt('div', null, null, 'height: 100%; min-height: 1px')], - 'CodeMirror-hscrollbar', - )); + var vert = this.vert = elt("div", [elt("div", null, null, "min-width: 1px")], "CodeMirror-vscrollbar"); + var horiz = this.horiz = elt("div", [elt("div", null, null, "height: 100%; min-height: 1px")], "CodeMirror-hscrollbar"); vert.tabIndex = horiz.tabIndex = -1; - place(vert); - place(horiz); + place(vert); place(horiz); - on(vert, 'scroll', function () { - if (vert.clientHeight) { - scroll(vert.scrollTop, 'vertical'); - } + on(vert, "scroll", function () { + if (vert.clientHeight) { scroll(vert.scrollTop, "vertical"); } }); - on(horiz, 'scroll', function () { - if (horiz.clientWidth) { - scroll(horiz.scrollLeft, 'horizontal'); - } + on(horiz, "scroll", function () { + if (horiz.clientWidth) { scroll(horiz.scrollLeft, "horizontal"); } }); this.checkedZeroWidth = false; // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8). - if (ie && ie_version < 8) { - this.horiz.style.minHeight = this.vert.style.minWidth = '18px'; - } + if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = "18px"; } }; NativeScrollbars.prototype.update = function (measure) { @@ -5427,70 +3667,58 @@ var sWidth = measure.nativeBarWidth; if (needsV) { - this.vert.style.display = 'block'; - this.vert.style.bottom = needsH ? sWidth + 'px' : '0'; + this.vert.style.display = "block"; + this.vert.style.bottom = needsH ? sWidth + "px" : "0"; var totalHeight = measure.viewHeight - (needsH ? sWidth : 0); // A bug in IE8 can cause this value to be negative, so guard it. this.vert.firstChild.style.height = - Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + - 'px'; + Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + "px"; } else { - this.vert.style.display = ''; - this.vert.firstChild.style.height = '0'; + this.vert.scrollTop = 0; + this.vert.style.display = ""; + this.vert.firstChild.style.height = "0"; } if (needsH) { - this.horiz.style.display = 'block'; - this.horiz.style.right = needsV ? sWidth + 'px' : '0'; - this.horiz.style.left = measure.barLeft + 'px'; - var totalWidth = - measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0); + this.horiz.style.display = "block"; + this.horiz.style.right = needsV ? sWidth + "px" : "0"; + this.horiz.style.left = measure.barLeft + "px"; + var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0); this.horiz.firstChild.style.width = - Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + - 'px'; + Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + "px"; } else { - this.horiz.style.display = ''; - this.horiz.firstChild.style.width = '0'; + this.horiz.style.display = ""; + this.horiz.firstChild.style.width = "0"; } if (!this.checkedZeroWidth && measure.clientHeight > 0) { - if (sWidth == 0) { - this.zeroWidthHack(); - } + if (sWidth == 0) { this.zeroWidthHack(); } this.checkedZeroWidth = true; } - return { right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0 }; + return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0} }; NativeScrollbars.prototype.setScrollLeft = function (pos) { - if (this.horiz.scrollLeft != pos) { - this.horiz.scrollLeft = pos; - } - if (this.disableHoriz) { - this.enableZeroWidthBar(this.horiz, this.disableHoriz, 'horiz'); - } + if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos; } + if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, "horiz"); } }; NativeScrollbars.prototype.setScrollTop = function (pos) { - if (this.vert.scrollTop != pos) { - this.vert.scrollTop = pos; - } - if (this.disableVert) { - this.enableZeroWidthBar(this.vert, this.disableVert, 'vert'); - } + if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos; } + if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, "vert"); } }; NativeScrollbars.prototype.zeroWidthHack = function () { - var w = mac && !mac_geMountainLion ? '12px' : '18px'; + var w = mac && !mac_geMountainLion ? "12px" : "18px"; this.horiz.style.height = this.vert.style.width = w; - this.horiz.style.pointerEvents = this.vert.style.pointerEvents = 'none'; - this.disableHoriz = new Delayed(); - this.disableVert = new Delayed(); + this.horiz.style.visibility = this.vert.style.visibility = "hidden"; + this.disableHoriz = new Delayed; + this.disableVert = new Delayed; }; NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) { - bar.style.pointerEvents = 'auto'; + bar.style.visibility = ""; function maybeDisable() { // To find out whether the scrollbar is still visible, we // check whether the element under the pixel in the bottom @@ -5499,18 +3727,10 @@ // (when the bar is hidden). If it is still visible, we keep // it enabled, if it's hidden, we disable pointer events. var box = bar.getBoundingClientRect(); - var elt$$1 = - type == 'vert' - ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2) - : document.elementFromPoint( - (box.right + box.left) / 2, - box.bottom - 1, - ); - if (elt$$1 != bar) { - bar.style.pointerEvents = 'none'; - } else { - delay.set(1000, maybeDisable); - } + var elt = type == "vert" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2) + : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1); + if (elt != bar) { bar.style.visibility = "hidden"; } + else { delay.set(1000, maybeDisable); } } delay.set(1000, maybeDisable); }; @@ -5523,32 +3743,20 @@ var NullScrollbars = function () {}; - NullScrollbars.prototype.update = function () { - return { bottom: 0, right: 0 }; - }; + NullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} }; NullScrollbars.prototype.setScrollLeft = function () {}; NullScrollbars.prototype.setScrollTop = function () {}; NullScrollbars.prototype.clear = function () {}; function updateScrollbars(cm, measure) { - if (!measure) { - measure = measureForScrollbars(cm); - } - var startWidth = cm.display.barWidth, - startHeight = cm.display.barHeight; + if (!measure) { measure = measureForScrollbars(cm); } + var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight; updateScrollbarsInner(cm, measure); - for ( - var i = 0; - (i < 4 && startWidth != cm.display.barWidth) || - startHeight != cm.display.barHeight; - i++ - ) { - if (startWidth != cm.display.barWidth && cm.options.lineWrapping) { - updateHeightsInViewport(cm); - } + for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) { + if (startWidth != cm.display.barWidth && cm.options.lineWrapping) + { updateHeightsInViewport(cm); } updateScrollbarsInner(cm, measureForScrollbars(cm)); - startWidth = cm.display.barWidth; - startHeight = cm.display.barHeight; + startWidth = cm.display.barWidth; startHeight = cm.display.barHeight; } } @@ -5558,65 +3766,44 @@ var d = cm.display; var sizes = d.scrollbars.update(measure); - d.sizer.style.paddingRight = (d.barWidth = sizes.right) + 'px'; - d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + 'px'; - d.heightForcer.style.borderBottom = sizes.bottom + 'px solid transparent'; + d.sizer.style.paddingRight = (d.barWidth = sizes.right) + "px"; + d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + "px"; + d.heightForcer.style.borderBottom = sizes.bottom + "px solid transparent"; if (sizes.right && sizes.bottom) { - d.scrollbarFiller.style.display = 'block'; - d.scrollbarFiller.style.height = sizes.bottom + 'px'; - d.scrollbarFiller.style.width = sizes.right + 'px'; - } else { - d.scrollbarFiller.style.display = ''; - } - if ( - sizes.bottom && - cm.options.coverGutterNextToScrollbar && - cm.options.fixedGutter - ) { - d.gutterFiller.style.display = 'block'; - d.gutterFiller.style.height = sizes.bottom + 'px'; - d.gutterFiller.style.width = measure.gutterWidth + 'px'; - } else { - d.gutterFiller.style.display = ''; - } + d.scrollbarFiller.style.display = "block"; + d.scrollbarFiller.style.height = sizes.bottom + "px"; + d.scrollbarFiller.style.width = sizes.right + "px"; + } else { d.scrollbarFiller.style.display = ""; } + if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) { + d.gutterFiller.style.display = "block"; + d.gutterFiller.style.height = sizes.bottom + "px"; + d.gutterFiller.style.width = measure.gutterWidth + "px"; + } else { d.gutterFiller.style.display = ""; } } - var scrollbarModel = { native: NativeScrollbars, null: NullScrollbars }; + var scrollbarModel = {"native": NativeScrollbars, "null": NullScrollbars}; function initScrollbars(cm) { if (cm.display.scrollbars) { cm.display.scrollbars.clear(); - if (cm.display.scrollbars.addClass) { - rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); - } + if (cm.display.scrollbars.addClass) + { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); } } - cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle]( - function (node) { - cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller); - // Prevent clicks in the scrollbars from killing focus - on(node, 'mousedown', function () { - if (cm.state.focused) { - setTimeout(function () { - return cm.display.input.focus(); - }, 0); - } - }); - node.setAttribute('cm-not-content', 'true'); - }, - function (pos, axis) { - if (axis == 'horizontal') { - setScrollLeft(cm, pos); - } else { - updateScrollTop(cm, pos); - } - }, - cm, - ); - if (cm.display.scrollbars.addClass) { - addClass(cm.display.wrapper, cm.display.scrollbars.addClass); - } + cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) { + cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller); + // Prevent clicks in the scrollbars from killing focus + on(node, "mousedown", function () { + if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0); } + }); + node.setAttribute("cm-not-content", "true"); + }, function (pos, axis) { + if (axis == "horizontal") { setScrollLeft(cm, pos); } + else { updateScrollTop(cm, pos); } + }, cm); + if (cm.display.scrollbars.addClass) + { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); } } // Operations are used to wrap a series of changes to the editor @@ -5630,21 +3817,21 @@ function startOperation(cm) { cm.curOp = { cm: cm, - viewChanged: false, // Flag that indicates that lines might need to be redrawn + viewChanged: false, // Flag that indicates that lines might need to be redrawn startHeight: cm.doc.height, // Used to detect need to update scrollbar - forceUpdate: false, // Used to force a redraw - updateInput: 0, // Whether to reset the input textarea - typing: false, // Whether this reset should be careful to leave existing text (for compositing) - changeObjs: null, // Accumulated changes, for firing change events + forceUpdate: false, // Used to force a redraw + updateInput: 0, // Whether to reset the input textarea + typing: false, // Whether this reset should be careful to leave existing text (for compositing) + changeObjs: null, // Accumulated changes, for firing change events cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already selectionChanged: false, // Whether the selection needs to be redrawn - updateMaxLine: false, // Set when the widest line needs to be determined anew - scrollLeft: null, - scrollTop: null, // Intermediate scroll position, not pushed to DOM yet - scrollToPos: null, // Used to scroll to a specific position + updateMaxLine: false, // Set when the widest line needs to be determined anew + scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet + scrollToPos: null, // Used to scroll to a specific position focus: false, - id: ++nextOpId, // Unique ID + id: ++nextOpId, // Unique ID + markArrays: null // Used by addMarkedSpan }; pushOperation(cm.curOp); } @@ -5652,93 +3839,49 @@ // Finish an operation, updating the display and signalling delayed events function endOperation(cm) { var op = cm.curOp; - if (op) { - finishOperation(op, function (group) { - for (var i = 0; i < group.ops.length; i++) { - group.ops[i].cm.curOp = null; - } - endOperations(group); - }); - } + if (op) { finishOperation(op, function (group) { + for (var i = 0; i < group.ops.length; i++) + { group.ops[i].cm.curOp = null; } + endOperations(group); + }); } } // The DOM updates done when an operation finishes are batched so // that the minimum number of relayouts are required. function endOperations(group) { var ops = group.ops; - for ( - var i = 0; - i < ops.length; - i++ // Read DOM - ) { - endOperation_R1(ops[i]); - } - for ( - var i$1 = 0; - i$1 < ops.length; - i$1++ // Write DOM (maybe) - ) { - endOperation_W1(ops[i$1]); - } - for ( - var i$2 = 0; - i$2 < ops.length; - i$2++ // Read DOM - ) { - endOperation_R2(ops[i$2]); - } - for ( - var i$3 = 0; - i$3 < ops.length; - i$3++ // Write DOM (maybe) - ) { - endOperation_W2(ops[i$3]); - } - for ( - var i$4 = 0; - i$4 < ops.length; - i$4++ // Read DOM - ) { - endOperation_finish(ops[i$4]); - } + for (var i = 0; i < ops.length; i++) // Read DOM + { endOperation_R1(ops[i]); } + for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe) + { endOperation_W1(ops[i$1]); } + for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM + { endOperation_R2(ops[i$2]); } + for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe) + { endOperation_W2(ops[i$3]); } + for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM + { endOperation_finish(ops[i$4]); } } function endOperation_R1(op) { - var cm = op.cm, - display = cm.display; + var cm = op.cm, display = cm.display; maybeClipScrollbars(cm); - if (op.updateMaxLine) { - findMaxLine(cm); - } + if (op.updateMaxLine) { findMaxLine(cm); } - op.mustUpdate = - op.viewChanged || - op.forceUpdate || - op.scrollTop != null || - (op.scrollToPos && - (op.scrollToPos.from.line < display.viewFrom || - op.scrollToPos.to.line >= display.viewTo)) || - (display.maxLineChanged && cm.options.lineWrapping); - op.update = - op.mustUpdate && - new DisplayUpdate( - cm, - op.mustUpdate && { top: op.scrollTop, ensure: op.scrollToPos }, - op.forceUpdate, - ); + op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null || + op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom || + op.scrollToPos.to.line >= display.viewTo) || + display.maxLineChanged && cm.options.lineWrapping; + op.update = op.mustUpdate && + new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate); } function endOperation_W1(op) { - op.updatedDisplay = - op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update); + op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update); } function endOperation_R2(op) { - var cm = op.cm, - display = cm.display; - if (op.updatedDisplay) { - updateHeightsInViewport(cm); - } + var cm = op.cm, display = cm.display; + if (op.updatedDisplay) { updateHeightsInViewport(cm); } op.barMeasure = measureForScrollbars(cm); @@ -5746,272 +3889,168 @@ // and ensure the document's width matches it. // updateDisplay_W2 will use these properties to do the actual resizing if (display.maxLineChanged && !cm.options.lineWrapping) { - op.adjustWidthTo = - measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3; + op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3; cm.display.sizerWidth = op.adjustWidthTo; - op.barMeasure.scrollWidth = Math.max( - display.scroller.clientWidth, - display.sizer.offsetLeft + - op.adjustWidthTo + - scrollGap(cm) + - cm.display.barWidth, - ); - op.maxScrollLeft = Math.max( - 0, - display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm), - ); + op.barMeasure.scrollWidth = + Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth); + op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm)); } - if (op.updatedDisplay || op.selectionChanged) { - op.preparedSelection = display.input.prepareSelection(); - } + if (op.updatedDisplay || op.selectionChanged) + { op.preparedSelection = display.input.prepareSelection(); } } function endOperation_W2(op) { var cm = op.cm; if (op.adjustWidthTo != null) { - cm.display.sizer.style.minWidth = op.adjustWidthTo + 'px'; - if (op.maxScrollLeft < cm.doc.scrollLeft) { - setScrollLeft( - cm, - Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), - true, - ); - } + cm.display.sizer.style.minWidth = op.adjustWidthTo + "px"; + if (op.maxScrollLeft < cm.doc.scrollLeft) + { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); } cm.display.maxLineChanged = false; } - var takeFocus = op.focus && op.focus == activeElt(); - if (op.preparedSelection) { - cm.display.input.showSelection(op.preparedSelection, takeFocus); - } - if (op.updatedDisplay || op.startHeight != cm.doc.height) { - updateScrollbars(cm, op.barMeasure); - } - if (op.updatedDisplay) { - setDocumentHeight(cm, op.barMeasure); - } + var takeFocus = op.focus && op.focus == activeElt(root(cm)); + if (op.preparedSelection) + { cm.display.input.showSelection(op.preparedSelection, takeFocus); } + if (op.updatedDisplay || op.startHeight != cm.doc.height) + { updateScrollbars(cm, op.barMeasure); } + if (op.updatedDisplay) + { setDocumentHeight(cm, op.barMeasure); } - if (op.selectionChanged) { - restartBlink(cm); - } + if (op.selectionChanged) { restartBlink(cm); } - if (cm.state.focused && op.updateInput) { - cm.display.input.reset(op.typing); - } - if (takeFocus) { - ensureFocus(op.cm); - } + if (cm.state.focused && op.updateInput) + { cm.display.input.reset(op.typing); } + if (takeFocus) { ensureFocus(op.cm); } } function endOperation_finish(op) { - var cm = op.cm, - display = cm.display, - doc = cm.doc; + var cm = op.cm, display = cm.display, doc = cm.doc; - if (op.updatedDisplay) { - postUpdateDisplay(cm, op.update); - } + if (op.updatedDisplay) { postUpdateDisplay(cm, op.update); } // Abort mouse wheel delta measurement, when scrolling explicitly - if ( - display.wheelStartX != null && - (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos) - ) { - display.wheelStartX = display.wheelStartY = null; - } + if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos)) + { display.wheelStartX = display.wheelStartY = null; } // Propagate the scroll position to the actual DOM scroller - if (op.scrollTop != null) { - setScrollTop(cm, op.scrollTop, op.forceScroll); - } + if (op.scrollTop != null) { setScrollTop(cm, op.scrollTop, op.forceScroll); } - if (op.scrollLeft != null) { - setScrollLeft(cm, op.scrollLeft, true, true); - } + if (op.scrollLeft != null) { setScrollLeft(cm, op.scrollLeft, true, true); } // If we need to scroll a specific position into view, do so. if (op.scrollToPos) { - var rect = scrollPosIntoView( - cm, - clipPos(doc, op.scrollToPos.from), - clipPos(doc, op.scrollToPos.to), - op.scrollToPos.margin, - ); + var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from), + clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin); maybeScrollWindow(cm, rect); } // Fire events for markers that are hidden/unidden by editing or // undoing - var hidden = op.maybeHiddenMarkers, - unhidden = op.maybeUnhiddenMarkers; - if (hidden) { - for (var i = 0; i < hidden.length; ++i) { - if (!hidden[i].lines.length) { - signal(hidden[i], 'hide'); - } - } - } - if (unhidden) { - for (var i$1 = 0; i$1 < unhidden.length; ++i$1) { - if (unhidden[i$1].lines.length) { - signal(unhidden[i$1], 'unhide'); - } - } - } + var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers; + if (hidden) { for (var i = 0; i < hidden.length; ++i) + { if (!hidden[i].lines.length) { signal(hidden[i], "hide"); } } } + if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1) + { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], "unhide"); } } } - if (display.wrapper.offsetHeight) { - doc.scrollTop = cm.display.scroller.scrollTop; - } + if (display.wrapper.offsetHeight) + { doc.scrollTop = cm.display.scroller.scrollTop; } // Fire change events, and delayed event handlers - if (op.changeObjs) { - signal(cm, 'changes', cm, op.changeObjs); - } - if (op.update) { - op.update.finish(); - } + if (op.changeObjs) + { signal(cm, "changes", cm, op.changeObjs); } + if (op.update) + { op.update.finish(); } } // Run the given function in an operation function runInOp(cm, f) { - if (cm.curOp) { - return f(); - } + if (cm.curOp) { return f() } startOperation(cm); - try { - return f(); - } finally { - endOperation(cm); - } + try { return f() } + finally { endOperation(cm); } } // Wraps a function in an operation. Returns the wrapped function. function operation(cm, f) { - return function () { - if (cm.curOp) { - return f.apply(cm, arguments); - } + return function() { + if (cm.curOp) { return f.apply(cm, arguments) } startOperation(cm); - try { - return f.apply(cm, arguments); - } finally { - endOperation(cm); - } - }; + try { return f.apply(cm, arguments) } + finally { endOperation(cm); } + } } // Used to add methods to editor and doc instances, wrapping them in // operations. function methodOp(f) { - return function () { - if (this.curOp) { - return f.apply(this, arguments); - } + return function() { + if (this.curOp) { return f.apply(this, arguments) } startOperation(this); - try { - return f.apply(this, arguments); - } finally { - endOperation(this); - } - }; + try { return f.apply(this, arguments) } + finally { endOperation(this); } + } } function docMethodOp(f) { - return function () { + return function() { var cm = this.cm; - if (!cm || cm.curOp) { - return f.apply(this, arguments); - } + if (!cm || cm.curOp) { return f.apply(this, arguments) } startOperation(cm); - try { - return f.apply(this, arguments); - } finally { - endOperation(cm); - } - }; + try { return f.apply(this, arguments) } + finally { endOperation(cm); } + } } // HIGHLIGHT WORKER function startWorker(cm, time) { - if (cm.doc.highlightFrontier < cm.display.viewTo) { - cm.state.highlight.set(time, bind(highlightWorker, cm)); - } + if (cm.doc.highlightFrontier < cm.display.viewTo) + { cm.state.highlight.set(time, bind(highlightWorker, cm)); } } function highlightWorker(cm) { var doc = cm.doc; - if (doc.highlightFrontier >= cm.display.viewTo) { - return; - } - var end = +new Date() + cm.options.workTime; + if (doc.highlightFrontier >= cm.display.viewTo) { return } + var end = +new Date + cm.options.workTime; var context = getContextBefore(cm, doc.highlightFrontier); var changedLines = []; - doc.iter( - context.line, - Math.min(doc.first + doc.size, cm.display.viewTo + 500), - function (line) { - if (context.line >= cm.display.viewFrom) { - // Visible - var oldStyles = line.styles; - var resetState = - line.text.length > cm.options.maxHighlightLength - ? copyState(doc.mode, context.state) - : null; - var highlighted = highlightLine(cm, line, context, true); - if (resetState) { - context.state = resetState; - } - line.styles = highlighted.styles; - var oldCls = line.styleClasses, - newCls = highlighted.classes; - if (newCls) { - line.styleClasses = newCls; - } else if (oldCls) { - line.styleClasses = null; - } - var ischange = - !oldStyles || - oldStyles.length != line.styles.length || - (oldCls != newCls && - (!oldCls || - !newCls || - oldCls.bgClass != newCls.bgClass || - oldCls.textClass != newCls.textClass)); - for (var i = 0; !ischange && i < oldStyles.length; ++i) { - ischange = oldStyles[i] != line.styles[i]; - } - if (ischange) { - changedLines.push(context.line); - } - line.stateAfter = context.save(); - context.nextLine(); - } else { - if (line.text.length <= cm.options.maxHighlightLength) { - processLine(cm, line.text, context); - } - line.stateAfter = context.line % 5 == 0 ? context.save() : null; - context.nextLine(); - } - if (+new Date() > end) { - startWorker(cm, cm.options.workDelay); - return true; - } - }, - ); + doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) { + if (context.line >= cm.display.viewFrom) { // Visible + var oldStyles = line.styles; + var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null; + var highlighted = highlightLine(cm, line, context, true); + if (resetState) { context.state = resetState; } + line.styles = highlighted.styles; + var oldCls = line.styleClasses, newCls = highlighted.classes; + if (newCls) { line.styleClasses = newCls; } + else if (oldCls) { line.styleClasses = null; } + var ischange = !oldStyles || oldStyles.length != line.styles.length || + oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass); + for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i]; } + if (ischange) { changedLines.push(context.line); } + line.stateAfter = context.save(); + context.nextLine(); + } else { + if (line.text.length <= cm.options.maxHighlightLength) + { processLine(cm, line.text, context); } + line.stateAfter = context.line % 5 == 0 ? context.save() : null; + context.nextLine(); + } + if (+new Date > end) { + startWorker(cm, cm.options.workDelay); + return true + } + }); doc.highlightFrontier = context.line; doc.modeFrontier = Math.max(doc.modeFrontier, context.line); - if (changedLines.length) { - runInOp(cm, function () { - for (var i = 0; i < changedLines.length; i++) { - regLineChange(cm, changedLines[i], 'text'); - } - }); - } + if (changedLines.length) { runInOp(cm, function () { + for (var i = 0; i < changedLines.length; i++) + { regLineChange(cm, changedLines[i], "text"); } + }); } } // DISPLAY DRAWING - var DisplayUpdate = function (cm, viewport, force) { + var DisplayUpdate = function(cm, viewport, force) { var display = cm.display; this.viewport = viewport; @@ -6027,71 +4066,53 @@ }; DisplayUpdate.prototype.signal = function (emitter, type) { - if (hasHandler(emitter, type)) { - this.events.push(arguments); - } + if (hasHandler(emitter, type)) + { this.events.push(arguments); } }; DisplayUpdate.prototype.finish = function () { - var this$1 = this; - - for (var i = 0; i < this.events.length; i++) { - signal.apply(null, this$1.events[i]); - } + for (var i = 0; i < this.events.length; i++) + { signal.apply(null, this.events[i]); } }; function maybeClipScrollbars(cm) { var display = cm.display; if (!display.scrollbarsClipped && display.scroller.offsetWidth) { - display.nativeBarWidth = - display.scroller.offsetWidth - display.scroller.clientWidth; - display.heightForcer.style.height = scrollGap(cm) + 'px'; - display.sizer.style.marginBottom = -display.nativeBarWidth + 'px'; - display.sizer.style.borderRightWidth = scrollGap(cm) + 'px'; + display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth; + display.heightForcer.style.height = scrollGap(cm) + "px"; + display.sizer.style.marginBottom = -display.nativeBarWidth + "px"; + display.sizer.style.borderRightWidth = scrollGap(cm) + "px"; display.scrollbarsClipped = true; } } function selectionSnapshot(cm) { - if (cm.hasFocus()) { - return null; - } - var active = activeElt(); - if (!active || !contains(cm.display.lineDiv, active)) { - return null; - } - var result = { activeElt: active }; + if (cm.hasFocus()) { return null } + var active = activeElt(root(cm)); + if (!active || !contains(cm.display.lineDiv, active)) { return null } + var result = {activeElt: active}; if (window.getSelection) { - var sel = window.getSelection(); - if ( - sel.anchorNode && - sel.extend && - contains(cm.display.lineDiv, sel.anchorNode) - ) { + var sel = win(cm).getSelection(); + if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) { result.anchorNode = sel.anchorNode; result.anchorOffset = sel.anchorOffset; result.focusNode = sel.focusNode; result.focusOffset = sel.focusOffset; } } - return result; + return result } function restoreSelection(snapshot) { - if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) { - return; - } + if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt(rootNode(snapshot.activeElt))) { return } snapshot.activeElt.focus(); - if ( - snapshot.anchorNode && - contains(document.body, snapshot.anchorNode) && - contains(document.body, snapshot.focusNode) - ) { - var sel = window.getSelection(), - range$$1 = document.createRange(); - range$$1.setEnd(snapshot.anchorNode, snapshot.anchorOffset); - range$$1.collapse(false); + if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) && + snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) { + var doc = snapshot.activeElt.ownerDocument; + var sel = doc.defaultView.getSelection(), range = doc.createRange(); + range.setEnd(snapshot.anchorNode, snapshot.anchorOffset); + range.collapse(false); sel.removeAllRanges(); - sel.addRange(range$$1); + sel.addRange(range); sel.extend(snapshot.focusNode, snapshot.focusOffset); } } @@ -6100,26 +4121,19 @@ // (returning false) when there is nothing to be done and forced is // false. function updateDisplayIfNeeded(cm, update) { - var display = cm.display, - doc = cm.doc; + var display = cm.display, doc = cm.doc; if (update.editorIsHidden) { resetView(cm); - return false; + return false } // Bail out if the visible area is already rendered and nothing changed. - if ( - !update.force && - update.visible.from >= display.viewFrom && - update.visible.to <= display.viewTo && - (display.updateLineNumbers == null || - display.updateLineNumbers >= display.viewTo) && - display.renderedView == display.view && - countDirtyView(cm) == 0 - ) { - return false; - } + if (!update.force && + update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo && + (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) && + display.renderedView == display.view && countDirtyView(cm) == 0) + { return false } if (maybeUpdateLineNumberWidth(cm)) { resetView(cm); @@ -6128,55 +4142,34 @@ // Compute a suitable new viewport (from & to) var end = doc.first + doc.size; - var from = Math.max( - update.visible.from - cm.options.viewportMargin, - doc.first, - ); + var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first); var to = Math.min(end, update.visible.to + cm.options.viewportMargin); - if (display.viewFrom < from && from - display.viewFrom < 20) { - from = Math.max(doc.first, display.viewFrom); - } - if (display.viewTo > to && display.viewTo - to < 20) { - to = Math.min(end, display.viewTo); - } + if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom); } + if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo); } if (sawCollapsedSpans) { from = visualLineNo(cm.doc, from); to = visualLineEndNo(cm.doc, to); } - var different = - from != display.viewFrom || - to != display.viewTo || - display.lastWrapHeight != update.wrapperHeight || - display.lastWrapWidth != update.wrapperWidth; + var different = from != display.viewFrom || to != display.viewTo || + display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth; adjustView(cm, from, to); display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom)); // Position the mover div to align with the current scroll position - cm.display.mover.style.top = display.viewOffset + 'px'; + cm.display.mover.style.top = display.viewOffset + "px"; var toUpdate = countDirtyView(cm); - if ( - !different && - toUpdate == 0 && - !update.force && - display.renderedView == display.view && - (display.updateLineNumbers == null || - display.updateLineNumbers >= display.viewTo) - ) { - return false; - } + if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view && + (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo)) + { return false } // For big changes, we hide the enclosing element during the // update, since that speeds up the operations on most browsers. var selSnapshot = selectionSnapshot(cm); - if (toUpdate > 4) { - display.lineDiv.style.display = 'none'; - } + if (toUpdate > 4) { display.lineDiv.style.display = "none"; } patchDisplay(cm, display.updateLineNumbers, update.dims); - if (toUpdate > 4) { - display.lineDiv.style.display = ''; - } + if (toUpdate > 4) { display.lineDiv.style.display = ""; } display.renderedView = display.view; // There might have been a widget with a focused element that got // hidden or updated, if so re-focus it. @@ -6196,40 +4189,26 @@ display.updateLineNumbers = null; - return true; + return true } function postUpdateDisplay(cm, update) { var viewport = update.viewport; - for (var first = true; ; first = false) { - if ( - !first || - !cm.options.lineWrapping || - update.oldDisplayWidth == displayWidth(cm) - ) { + for (var first = true;; first = false) { + if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) { // Clip forced viewport to actual scrollable area. - if (viewport && viewport.top != null) { - viewport = { - top: Math.min( - cm.doc.height + paddingVert(cm.display) - displayHeight(cm), - viewport.top, - ), - }; - } + if (viewport && viewport.top != null) + { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; } // Updated line heights might result in the drawn area not // actually covering the viewport. Keep looping until it does. update.visible = visibleLines(cm.display, cm.doc, viewport); - if ( - update.visible.from >= cm.display.viewFrom && - update.visible.to <= cm.display.viewTo - ) { - break; - } - } - if (!updateDisplayIfNeeded(cm, update)) { - break; + if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo) + { break } + } else if (first) { + update.visible = visibleLines(cm.display, cm.doc, viewport); } + if (!updateDisplayIfNeeded(cm, update)) { break } updateHeightsInViewport(cm); var barMeasure = measureForScrollbars(cm); updateSelection(cm); @@ -6238,20 +4217,10 @@ update.force = false; } - update.signal(cm, 'update', cm); - if ( - cm.display.viewFrom != cm.display.reportedViewFrom || - cm.display.viewTo != cm.display.reportedViewTo - ) { - update.signal( - cm, - 'viewportChange', - cm, - cm.display.viewFrom, - cm.display.viewTo, - ); - cm.display.reportedViewFrom = cm.display.viewFrom; - cm.display.reportedViewTo = cm.display.viewTo; + update.signal(cm, "update", cm); + if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) { + update.signal(cm, "viewportChange", cm, cm.display.viewFrom, cm.display.viewTo); + cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo; } } @@ -6273,196 +4242,135 @@ // that are not there yet, and updating the ones that are out of // date. function patchDisplay(cm, updateNumbersFrom, dims) { - var display = cm.display, - lineNumbers = cm.options.lineNumbers; - var container = display.lineDiv, - cur = container.firstChild; + var display = cm.display, lineNumbers = cm.options.lineNumbers; + var container = display.lineDiv, cur = container.firstChild; function rm(node) { var next = node.nextSibling; // Works around a throw-scroll bug in OS X Webkit - if (webkit && mac && cm.display.currentWheelTarget == node) { - node.style.display = 'none'; - } else { - node.parentNode.removeChild(node); - } - return next; + if (webkit && mac && cm.display.currentWheelTarget == node) + { node.style.display = "none"; } + else + { node.parentNode.removeChild(node); } + return next } - var view = display.view, - lineN = display.viewFrom; + var view = display.view, lineN = display.viewFrom; // Loop over the elements in the view, syncing cur (the DOM nodes // in display.lineDiv) with the view as we go. for (var i = 0; i < view.length; i++) { var lineView = view[i]; - if (lineView.hidden); - else if (!lineView.node || lineView.node.parentNode != container) { - // Not drawn yet + if (lineView.hidden) ; else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet var node = buildLineElement(cm, lineView, lineN, dims); container.insertBefore(node, cur); - } else { - // Already drawn - while (cur != lineView.node) { - cur = rm(cur); - } - var updateNumber = - lineNumbers && - updateNumbersFrom != null && - updateNumbersFrom <= lineN && - lineView.lineNumber; + } else { // Already drawn + while (cur != lineView.node) { cur = rm(cur); } + var updateNumber = lineNumbers && updateNumbersFrom != null && + updateNumbersFrom <= lineN && lineView.lineNumber; if (lineView.changes) { - if (indexOf(lineView.changes, 'gutter') > -1) { - updateNumber = false; - } + if (indexOf(lineView.changes, "gutter") > -1) { updateNumber = false; } updateLineForChanges(cm, lineView, lineN, dims); } if (updateNumber) { removeChildren(lineView.lineNumber); - lineView.lineNumber.appendChild( - document.createTextNode(lineNumberFor(cm.options, lineN)), - ); + lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN))); } cur = lineView.node.nextSibling; } lineN += lineView.size; } - while (cur) { - cur = rm(cur); - } + while (cur) { cur = rm(cur); } } function updateGutterSpace(display) { var width = display.gutters.offsetWidth; - display.sizer.style.marginLeft = width + 'px'; + display.sizer.style.marginLeft = width + "px"; + // Send an event to consumers responding to changes in gutter width. + signalLater(display, "gutterChanged", display); } function setDocumentHeight(cm, measure) { - cm.display.sizer.style.minHeight = measure.docHeight + 'px'; - cm.display.heightForcer.style.top = measure.docHeight + 'px'; - cm.display.gutters.style.height = - measure.docHeight + cm.display.barHeight + scrollGap(cm) + 'px'; + cm.display.sizer.style.minHeight = measure.docHeight + "px"; + cm.display.heightForcer.style.top = measure.docHeight + "px"; + cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + "px"; } // Re-align line numbers and gutter marks to compensate for // horizontal scrolling. function alignHorizontally(cm) { - var display = cm.display, - view = display.view; - if ( - !display.alignWidgets && - (!display.gutters.firstChild || !cm.options.fixedGutter) - ) { - return; - } - var comp = - compensateForHScroll(display) - - display.scroller.scrollLeft + - cm.doc.scrollLeft; - var gutterW = display.gutters.offsetWidth, - left = comp + 'px'; - for (var i = 0; i < view.length; i++) { - if (!view[i].hidden) { - if (cm.options.fixedGutter) { - if (view[i].gutter) { - view[i].gutter.style.left = left; - } - if (view[i].gutterBackground) { - view[i].gutterBackground.style.left = left; - } - } - var align = view[i].alignable; - if (align) { - for (var j = 0; j < align.length; j++) { - align[j].style.left = left; - } - } - } - } - if (cm.options.fixedGutter) { - display.gutters.style.left = comp + gutterW + 'px'; - } + var display = cm.display, view = display.view; + if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return } + var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft; + var gutterW = display.gutters.offsetWidth, left = comp + "px"; + for (var i = 0; i < view.length; i++) { if (!view[i].hidden) { + if (cm.options.fixedGutter) { + if (view[i].gutter) + { view[i].gutter.style.left = left; } + if (view[i].gutterBackground) + { view[i].gutterBackground.style.left = left; } + } + var align = view[i].alignable; + if (align) { for (var j = 0; j < align.length; j++) + { align[j].style.left = left; } } + } } + if (cm.options.fixedGutter) + { display.gutters.style.left = (comp + gutterW) + "px"; } } // Used to ensure that the line number gutter is still the right // size for the current document size. Returns true when an update // is needed. function maybeUpdateLineNumberWidth(cm) { - if (!cm.options.lineNumbers) { - return false; - } - var doc = cm.doc, - last = lineNumberFor(cm.options, doc.first + doc.size - 1), - display = cm.display; + if (!cm.options.lineNumbers) { return false } + var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display; if (last.length != display.lineNumChars) { - var test = display.measure.appendChild( - elt( - 'div', - [elt('div', last)], - 'CodeMirror-linenumber CodeMirror-gutter-elt', - ), - ); - var innerW = test.firstChild.offsetWidth, - padding = test.offsetWidth - innerW; - display.lineGutter.style.width = ''; - display.lineNumInnerWidth = - Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1; + var test = display.measure.appendChild(elt("div", [elt("div", last)], + "CodeMirror-linenumber CodeMirror-gutter-elt")); + var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW; + display.lineGutter.style.width = ""; + display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1; display.lineNumWidth = display.lineNumInnerWidth + padding; display.lineNumChars = display.lineNumInnerWidth ? last.length : -1; - display.lineGutter.style.width = display.lineNumWidth + 'px'; + display.lineGutter.style.width = display.lineNumWidth + "px"; updateGutterSpace(cm.display); - return true; + return true } - return false; + return false } function getGutters(gutters, lineNumbers) { - var result = [], - sawLineNumbers = false; + var result = [], sawLineNumbers = false; for (var i = 0; i < gutters.length; i++) { - var name = gutters[i], - style = null; - if (typeof name != 'string') { - style = name.style; - name = name.className; + var name = gutters[i], style = null; + if (typeof name != "string") { style = name.style; name = name.className; } + if (name == "CodeMirror-linenumbers") { + if (!lineNumbers) { continue } + else { sawLineNumbers = true; } } - if (name == 'CodeMirror-linenumbers') { - if (!lineNumbers) { - continue; - } else { - sawLineNumbers = true; - } - } - result.push({ className: name, style: style }); - } - if (lineNumbers && !sawLineNumbers) { - result.push({ className: 'CodeMirror-linenumbers', style: null }); + result.push({className: name, style: style}); } - return result; + if (lineNumbers && !sawLineNumbers) { result.push({className: "CodeMirror-linenumbers", style: null}); } + return result } // Rebuild the gutter elements, ensure the margin to the left of the // code matches their width. function renderGutters(display) { - var gutters = display.gutters, - specs = display.gutterSpecs; + var gutters = display.gutters, specs = display.gutterSpecs; removeChildren(gutters); display.lineGutter = null; for (var i = 0; i < specs.length; ++i) { var ref = specs[i]; var className = ref.className; var style = ref.style; - var gElt = gutters.appendChild( - elt('div', null, 'CodeMirror-gutter ' + className), - ); - if (style) { - gElt.style.cssText = style; - } - if (className == 'CodeMirror-linenumbers') { + var gElt = gutters.appendChild(elt("div", null, "CodeMirror-gutter " + className)); + if (style) { gElt.style.cssText = style; } + if (className == "CodeMirror-linenumbers") { display.lineGutter = gElt; - gElt.style.width = (display.lineNumWidth || 1) + 'px'; + gElt.style.width = (display.lineNumWidth || 1) + "px"; } } - gutters.style.display = specs.length ? '' : 'none'; + gutters.style.display = specs.length ? "" : "none"; updateGutterSpace(display); } @@ -6481,75 +4389,56 @@ this.input = input; // Covers bottom-right square when both scrollbars are present. - d.scrollbarFiller = elt('div', null, 'CodeMirror-scrollbar-filler'); - d.scrollbarFiller.setAttribute('cm-not-content', 'true'); + d.scrollbarFiller = elt("div", null, "CodeMirror-scrollbar-filler"); + d.scrollbarFiller.setAttribute("cm-not-content", "true"); // Covers bottom of gutter when coverGutterNextToScrollbar is on // and h scrollbar is present. - d.gutterFiller = elt('div', null, 'CodeMirror-gutter-filler'); - d.gutterFiller.setAttribute('cm-not-content', 'true'); + d.gutterFiller = elt("div", null, "CodeMirror-gutter-filler"); + d.gutterFiller.setAttribute("cm-not-content", "true"); // Will contain the actual code, positioned to cover the viewport. - d.lineDiv = eltP('div', null, 'CodeMirror-code'); + d.lineDiv = eltP("div", null, "CodeMirror-code"); // Elements are added to these to represent selection and cursors. - d.selectionDiv = elt('div', null, null, 'position: relative; z-index: 1'); - d.cursorDiv = elt('div', null, 'CodeMirror-cursors'); + d.selectionDiv = elt("div", null, null, "position: relative; z-index: 1"); + d.cursorDiv = elt("div", null, "CodeMirror-cursors"); // A visibility: hidden element used to find the size of things. - d.measure = elt('div', null, 'CodeMirror-measure'); + d.measure = elt("div", null, "CodeMirror-measure"); // When lines outside of the viewport are measured, they are drawn in this. - d.lineMeasure = elt('div', null, 'CodeMirror-measure'); + d.lineMeasure = elt("div", null, "CodeMirror-measure"); // Wraps everything that needs to exist inside the vertically-padded coordinate system - d.lineSpace = eltP( - 'div', - [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv], - null, - 'position: relative; outline: none', - ); - var lines = eltP('div', [d.lineSpace], 'CodeMirror-lines'); + d.lineSpace = eltP("div", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv], + null, "position: relative; outline: none"); + var lines = eltP("div", [d.lineSpace], "CodeMirror-lines"); // Moved around its parent to cover visible view. - d.mover = elt('div', [lines], null, 'position: relative'); + d.mover = elt("div", [lines], null, "position: relative"); // Set to the height of the document, allowing scrolling. - d.sizer = elt('div', [d.mover], 'CodeMirror-sizer'); + d.sizer = elt("div", [d.mover], "CodeMirror-sizer"); d.sizerWidth = null; // Behavior of elts with overflow: auto and padding is // inconsistent across browsers. This is used to ensure the // scrollable area is big enough. - d.heightForcer = elt( - 'div', - null, - null, - 'position: absolute; height: ' + scrollerGap + 'px; width: 1px;', - ); + d.heightForcer = elt("div", null, null, "position: absolute; height: " + scrollerGap + "px; width: 1px;"); // Will contain the gutters, if any. - d.gutters = elt('div', null, 'CodeMirror-gutters'); + d.gutters = elt("div", null, "CodeMirror-gutters"); d.lineGutter = null; // Actual scrollable element. - d.scroller = elt( - 'div', - [d.sizer, d.heightForcer, d.gutters], - 'CodeMirror-scroll', - ); - d.scroller.setAttribute('tabIndex', '-1'); + d.scroller = elt("div", [d.sizer, d.heightForcer, d.gutters], "CodeMirror-scroll"); + d.scroller.setAttribute("tabIndex", "-1"); // The element in which the editor lives. - d.wrapper = elt( - 'div', - [d.scrollbarFiller, d.gutterFiller, d.scroller], - 'CodeMirror', - ); + d.wrapper = elt("div", [d.scrollbarFiller, d.gutterFiller, d.scroller], "CodeMirror"); + // See #6982. FIXME remove when this has been fixed for a while in Chrome + if (chrome && chrome_version >= 105) { d.wrapper.style.clipPath = "inset(0px)"; } + + // This attribute is respected by automatic translation systems such as Google Translate, + // and may also be respected by tools used by human translators. + d.wrapper.setAttribute('translate', 'no'); // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported) - if (ie && ie_version < 8) { - d.gutters.style.zIndex = -1; - d.scroller.style.paddingRight = 0; - } - if (!webkit && !(gecko && mobile)) { - d.scroller.draggable = true; - } + if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; } + if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true; } if (place) { - if (place.appendChild) { - place.appendChild(d.wrapper); - } else { - place(d.wrapper); - } + if (place.appendChild) { place.appendChild(d.wrapper); } + else { place(d.wrapper); } } // Current rendered range (may be bigger than the view window). @@ -6614,70 +4503,66 @@ // is that it gives us a chance to update the display before the // actual scrolling happens, reducing flickering. - var wheelSamples = 0, - wheelPixelsPerUnit = null; + var wheelSamples = 0, wheelPixelsPerUnit = null; // Fill in a browser-detected starting value on browsers where we // know one. These don't have to be accurate -- the result of them // being wrong would just be a slight flicker on the first wheel // scroll (if it is large enough). - if (ie) { - wheelPixelsPerUnit = -0.53; - } else if (gecko) { - wheelPixelsPerUnit = 15; - } else if (chrome) { - wheelPixelsPerUnit = -0.7; - } else if (safari) { - wheelPixelsPerUnit = -1 / 3; - } + if (ie) { wheelPixelsPerUnit = -.53; } + else if (gecko) { wheelPixelsPerUnit = 15; } + else if (chrome) { wheelPixelsPerUnit = -.7; } + else if (safari) { wheelPixelsPerUnit = -1/3; } function wheelEventDelta(e) { - var dx = e.wheelDeltaX, - dy = e.wheelDeltaY; - if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { - dx = e.detail; - } - if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { - dy = e.detail; - } else if (dy == null) { - dy = e.wheelDelta; - } - return { x: dx, y: dy }; + var dx = e.wheelDeltaX, dy = e.wheelDeltaY; + if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail; } + if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail; } + else if (dy == null) { dy = e.wheelDelta; } + return {x: dx, y: dy} } function wheelEventPixels(e) { var delta = wheelEventDelta(e); delta.x *= wheelPixelsPerUnit; delta.y *= wheelPixelsPerUnit; - return delta; + return delta } function onScrollWheel(cm, e) { - var delta = wheelEventDelta(e), - dx = delta.x, - dy = delta.y; - - var display = cm.display, - scroll = display.scroller; + // On Chrome 102, viewport updates somehow stop wheel-based + // scrolling. Turning off pointer events during the scroll seems + // to avoid the issue. + if (chrome && chrome_version == 102) { + if (cm.display.chromeScrollHack == null) { cm.display.sizer.style.pointerEvents = "none"; } + else { clearTimeout(cm.display.chromeScrollHack); } + cm.display.chromeScrollHack = setTimeout(function () { + cm.display.chromeScrollHack = null; + cm.display.sizer.style.pointerEvents = ""; + }, 100); + } + var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y; + var pixelsPerUnit = wheelPixelsPerUnit; + if (e.deltaMode === 0) { + dx = e.deltaX; + dy = e.deltaY; + pixelsPerUnit = 1; + } + + var display = cm.display, scroll = display.scroller; // Quit if there's nothing to scroll here var canScrollX = scroll.scrollWidth > scroll.clientWidth; var canScrollY = scroll.scrollHeight > scroll.clientHeight; - if (!((dx && canScrollX) || (dy && canScrollY))) { - return; - } + if (!(dx && canScrollX || dy && canScrollY)) { return } // Webkit browsers on OS X abort momentum scrolls when the target // of the scroll event is removed from the scrollable element. // This hack (see related code in patchDisplay) makes sure the // element is kept around. if (dy && mac && webkit) { - outer: for ( - var cur = e.target, view = display.view; - cur != scroll; - cur = cur.parentNode - ) { + outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) { for (var i = 0; i < view.length; i++) { if (view[i].node == cur) { cm.display.currentWheelTarget = cur; - break outer; + break outer } } } @@ -6689,68 +4574,47 @@ // estimated pixels/delta value, we just handle horizontal // scrolling entirely here. It'll be slightly off from native, but // better than glitching out. - if (dx && !gecko && !presto && wheelPixelsPerUnit != null) { - if (dy && canScrollY) { - updateScrollTop( - cm, - Math.max(0, scroll.scrollTop + dy * wheelPixelsPerUnit), - ); - } - setScrollLeft( - cm, - Math.max(0, scroll.scrollLeft + dx * wheelPixelsPerUnit), - ); + if (dx && !gecko && !presto && pixelsPerUnit != null) { + if (dy && canScrollY) + { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * pixelsPerUnit)); } + setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * pixelsPerUnit)); // Only prevent default scrolling if vertical scrolling is // actually possible. Otherwise, it causes vertical scroll // jitter on OSX trackpads when deltaX is small and deltaY // is large (issue #3579) - if (!dy || (dy && canScrollY)) { - e_preventDefault(e); - } + if (!dy || (dy && canScrollY)) + { e_preventDefault(e); } display.wheelStartX = null; // Abort measurement, if in progress - return; + return } // 'Project' the visible viewport to cover the area that is being // scrolled into view (if we know enough to estimate it). - if (dy && wheelPixelsPerUnit != null) { - var pixels = dy * wheelPixelsPerUnit; - var top = cm.doc.scrollTop, - bot = top + display.wrapper.clientHeight; - if (pixels < 0) { - top = Math.max(0, top + pixels - 50); - } else { - bot = Math.min(cm.doc.height, bot + pixels + 50); - } - updateDisplaySimple(cm, { top: top, bottom: bot }); + if (dy && pixelsPerUnit != null) { + var pixels = dy * pixelsPerUnit; + var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight; + if (pixels < 0) { top = Math.max(0, top + pixels - 50); } + else { bot = Math.min(cm.doc.height, bot + pixels + 50); } + updateDisplaySimple(cm, {top: top, bottom: bot}); } - if (wheelSamples < 20) { + if (wheelSamples < 20 && e.deltaMode !== 0) { if (display.wheelStartX == null) { - display.wheelStartX = scroll.scrollLeft; - display.wheelStartY = scroll.scrollTop; - display.wheelDX = dx; - display.wheelDY = dy; + display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop; + display.wheelDX = dx; display.wheelDY = dy; setTimeout(function () { - if (display.wheelStartX == null) { - return; - } + if (display.wheelStartX == null) { return } var movedX = scroll.scrollLeft - display.wheelStartX; var movedY = scroll.scrollTop - display.wheelStartY; - var sample = - (movedY && display.wheelDY && movedY / display.wheelDY) || + var sample = (movedY && display.wheelDY && movedY / display.wheelDY) || (movedX && display.wheelDX && movedX / display.wheelDX); display.wheelStartX = display.wheelStartY = null; - if (!sample) { - return; - } - wheelPixelsPerUnit = - (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1); + if (!sample) { return } + wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1); ++wheelSamples; }, 200); } else { - display.wheelDX += dx; - display.wheelDY += dy; + display.wheelDX += dx; display.wheelDY += dy; } } } @@ -6760,93 +4624,53 @@ // (and non-touching) ranges, sorted, and an integer that indicates // which one is the primary selection (the one that's scrolled into // view, that getCursor returns, etc). - var Selection = function (ranges, primIndex) { + var Selection = function(ranges, primIndex) { this.ranges = ranges; this.primIndex = primIndex; }; - Selection.prototype.primary = function () { - return this.ranges[this.primIndex]; - }; + Selection.prototype.primary = function () { return this.ranges[this.primIndex] }; Selection.prototype.equals = function (other) { - var this$1 = this; - - if (other == this) { - return true; - } - if ( - other.primIndex != this.primIndex || - other.ranges.length != this.ranges.length - ) { - return false; - } + if (other == this) { return true } + if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false } for (var i = 0; i < this.ranges.length; i++) { - var here = this$1.ranges[i], - there = other.ranges[i]; - if ( - !equalCursorPos(here.anchor, there.anchor) || - !equalCursorPos(here.head, there.head) - ) { - return false; - } + var here = this.ranges[i], there = other.ranges[i]; + if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false } } - return true; + return true }; Selection.prototype.deepCopy = function () { - var this$1 = this; - var out = []; - for (var i = 0; i < this.ranges.length; i++) { - out[i] = new Range( - copyPos(this$1.ranges[i].anchor), - copyPos(this$1.ranges[i].head), - ); - } - return new Selection(out, this.primIndex); + for (var i = 0; i < this.ranges.length; i++) + { out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head)); } + return new Selection(out, this.primIndex) }; Selection.prototype.somethingSelected = function () { - var this$1 = this; - - for (var i = 0; i < this.ranges.length; i++) { - if (!this$1.ranges[i].empty()) { - return true; - } - } - return false; + for (var i = 0; i < this.ranges.length; i++) + { if (!this.ranges[i].empty()) { return true } } + return false }; Selection.prototype.contains = function (pos, end) { - var this$1 = this; - - if (!end) { - end = pos; - } + if (!end) { end = pos; } for (var i = 0; i < this.ranges.length; i++) { - var range = this$1.ranges[i]; - if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0) { - return i; - } + var range = this.ranges[i]; + if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0) + { return i } } - return -1; + return -1 }; - var Range = function (anchor, head) { - this.anchor = anchor; - this.head = head; + var Range = function(anchor, head) { + this.anchor = anchor; this.head = head; }; - Range.prototype.from = function () { - return minPos(this.anchor, this.head); - }; - Range.prototype.to = function () { - return maxPos(this.anchor, this.head); - }; - Range.prototype.empty = function () { - return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch; - }; + Range.prototype.from = function () { return minPos(this.anchor, this.head) }; + Range.prototype.to = function () { return maxPos(this.anchor, this.head) }; + Range.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch }; // Take an unsorted, potentially overlapping set of ranges, and // build a selection out of it. 'Consumes' ranges array (modifying @@ -6854,107 +4678,80 @@ function normalizeSelection(cm, ranges, primIndex) { var mayTouch = cm && cm.options.selectionsMayTouch; var prim = ranges[primIndex]; - ranges.sort(function (a, b) { - return cmp(a.from(), b.from()); - }); + ranges.sort(function (a, b) { return cmp(a.from(), b.from()); }); primIndex = indexOf(ranges, prim); for (var i = 1; i < ranges.length; i++) { - var cur = ranges[i], - prev = ranges[i - 1]; + var cur = ranges[i], prev = ranges[i - 1]; var diff = cmp(prev.to(), cur.from()); if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) { - var from = minPos(prev.from(), cur.from()), - to = maxPos(prev.to(), cur.to()); - var inv = prev.empty() - ? cur.from() == cur.head - : prev.from() == prev.head; - if (i <= primIndex) { - --primIndex; - } + var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to()); + var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head; + if (i <= primIndex) { --primIndex; } ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to)); } } - return new Selection(ranges, primIndex); + return new Selection(ranges, primIndex) } function simpleSelection(anchor, head) { - return new Selection([new Range(anchor, head || anchor)], 0); + return new Selection([new Range(anchor, head || anchor)], 0) } // Compute the position of the end of a change (its 'to' property // refers to the pre-change end). function changeEnd(change) { - if (!change.text) { - return change.to; - } - return Pos( - change.from.line + change.text.length - 1, - lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0), - ); + if (!change.text) { return change.to } + return Pos(change.from.line + change.text.length - 1, + lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0)) } // Adjust a position to refer to the post-change position of the // same text, or the end of the change if the change covers it. function adjustForChange(pos, change) { - if (cmp(pos, change.from) < 0) { - return pos; - } - if (cmp(pos, change.to) <= 0) { - return changeEnd(change); - } + if (cmp(pos, change.from) < 0) { return pos } + if (cmp(pos, change.to) <= 0) { return changeEnd(change) } - var line = - pos.line + change.text.length - (change.to.line - change.from.line) - 1, - ch = pos.ch; - if (pos.line == change.to.line) { - ch += changeEnd(change).ch - change.to.ch; - } - return Pos(line, ch); + var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch; + if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch; } + return Pos(line, ch) } function computeSelAfterChange(doc, change) { var out = []; for (var i = 0; i < doc.sel.ranges.length; i++) { var range = doc.sel.ranges[i]; - out.push( - new Range( - adjustForChange(range.anchor, change), - adjustForChange(range.head, change), - ), - ); + out.push(new Range(adjustForChange(range.anchor, change), + adjustForChange(range.head, change))); } - return normalizeSelection(doc.cm, out, doc.sel.primIndex); + return normalizeSelection(doc.cm, out, doc.sel.primIndex) } function offsetPos(pos, old, nw) { - if (pos.line == old.line) { - return Pos(nw.line, pos.ch - old.ch + nw.ch); - } else { - return Pos(nw.line + (pos.line - old.line), pos.ch); - } + if (pos.line == old.line) + { return Pos(nw.line, pos.ch - old.ch + nw.ch) } + else + { return Pos(nw.line + (pos.line - old.line), pos.ch) } } // Used by replaceSelections to allow moving the selection to the // start or around the replaced test. Hint may be "start" or "around". function computeReplacedSel(doc, changes, hint) { var out = []; - var oldPrev = Pos(doc.first, 0), - newPrev = oldPrev; + var oldPrev = Pos(doc.first, 0), newPrev = oldPrev; for (var i = 0; i < changes.length; i++) { var change = changes[i]; var from = offsetPos(change.from, oldPrev, newPrev); var to = offsetPos(changeEnd(change), oldPrev, newPrev); oldPrev = change.to; newPrev = to; - if (hint == 'around') { - var range = doc.sel.ranges[i], - inv = cmp(range.head, range.anchor) < 0; + if (hint == "around") { + var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0; out[i] = new Range(inv ? to : from, inv ? from : to); } else { out[i] = new Range(from, from); } } - return new Selection(out, doc.sel.primIndex); + return new Selection(out, doc.sel.primIndex) } // Used to get the editor into a consistent state again when options change. @@ -6966,19 +4763,13 @@ function resetModeState(cm) { cm.doc.iter(function (line) { - if (line.stateAfter) { - line.stateAfter = null; - } - if (line.styles) { - line.styles = null; - } + if (line.stateAfter) { line.stateAfter = null; } + if (line.styles) { line.styles = null; } }); cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first; startWorker(cm, 100); cm.state.modeGen++; - if (cm.curOp) { - regChange(cm); - } + if (cm.curOp) { regChange(cm); } } // DOCUMENT DATA STRUCTURE @@ -6987,39 +4778,27 @@ // are treated specially, in order to make the association of line // widgets and marker elements with the text behave more intuitive. function isWholeLineUpdate(doc, change) { - return ( - change.from.ch == 0 && - change.to.ch == 0 && - lst(change.text) == '' && + return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == "" && (!doc.cm || doc.cm.options.wholeLineUpdateBefore) - ); } // Perform a change on the document data structure. - function updateDoc(doc, change, markedSpans, estimateHeight$$1) { - function spansFor(n) { - return markedSpans ? markedSpans[n] : null; - } + function updateDoc(doc, change, markedSpans, estimateHeight) { + function spansFor(n) {return markedSpans ? markedSpans[n] : null} function update(line, text, spans) { - updateLine(line, text, spans, estimateHeight$$1); - signalLater(line, 'change', line, change); + updateLine(line, text, spans, estimateHeight); + signalLater(line, "change", line, change); } function linesFor(start, end) { var result = []; - for (var i = start; i < end; ++i) { - result.push(new Line(text[i], spansFor(i), estimateHeight$$1)); - } - return result; + for (var i = start; i < end; ++i) + { result.push(new Line(text[i], spansFor(i), estimateHeight)); } + return result } - var from = change.from, - to = change.to, - text = change.text; - var firstLine = getLine(doc, from.line), - lastLine = getLine(doc, to.line); - var lastText = lst(text), - lastSpans = spansFor(text.length - 1), - nlines = to.line - from.line; + var from = change.from, to = change.to, text = change.text; + var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line); + var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line; // Adjust the line structure if (change.full) { @@ -7030,103 +4809,62 @@ // sure line objects move the way they are supposed to. var added = linesFor(0, text.length - 1); update(lastLine, lastLine.text, lastSpans); - if (nlines) { - doc.remove(from.line, nlines); - } - if (added.length) { - doc.insert(from.line, added); - } + if (nlines) { doc.remove(from.line, nlines); } + if (added.length) { doc.insert(from.line, added); } } else if (firstLine == lastLine) { if (text.length == 1) { - update( - firstLine, - firstLine.text.slice(0, from.ch) + - lastText + - firstLine.text.slice(to.ch), - lastSpans, - ); + update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans); } else { var added$1 = linesFor(1, text.length - 1); - added$1.push( - new Line( - lastText + firstLine.text.slice(to.ch), - lastSpans, - estimateHeight$$1, - ), - ); - update( - firstLine, - firstLine.text.slice(0, from.ch) + text[0], - spansFor(0), - ); + added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight)); + update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0)); doc.insert(from.line + 1, added$1); } } else if (text.length == 1) { - update( - firstLine, - firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), - spansFor(0), - ); + update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0)); doc.remove(from.line + 1, nlines); } else { - update( - firstLine, - firstLine.text.slice(0, from.ch) + text[0], - spansFor(0), - ); + update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0)); update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans); var added$2 = linesFor(1, text.length - 1); - if (nlines > 1) { - doc.remove(from.line + 1, nlines - 1); - } + if (nlines > 1) { doc.remove(from.line + 1, nlines - 1); } doc.insert(from.line + 1, added$2); } - signalLater(doc, 'change', doc, change); + signalLater(doc, "change", doc, change); } // Call f for all linked documents. function linkedDocs(doc, f, sharedHistOnly) { function propagate(doc, skip, sharedHist) { - if (doc.linked) { - for (var i = 0; i < doc.linked.length; ++i) { - var rel = doc.linked[i]; - if (rel.doc == skip) { - continue; - } - var shared = sharedHist && rel.sharedHist; - if (sharedHistOnly && !shared) { - continue; - } - f(rel.doc, shared); - propagate(rel.doc, doc, shared); - } - } + if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) { + var rel = doc.linked[i]; + if (rel.doc == skip) { continue } + var shared = sharedHist && rel.sharedHist; + if (sharedHistOnly && !shared) { continue } + f(rel.doc, shared); + propagate(rel.doc, doc, shared); + } } } propagate(doc, null, true); } // Attach a document to an editor. function attachDoc(cm, doc) { - if (doc.cm) { - throw new Error('This document is already in use.'); - } + if (doc.cm) { throw new Error("This document is already in use.") } cm.doc = doc; doc.cm = cm; estimateLineHeights(cm); loadMode(cm); setDirectionClass(cm); - if (!cm.options.lineWrapping) { - findMaxLine(cm); - } + cm.options.direction = doc.direction; + if (!cm.options.lineWrapping) { findMaxLine(cm); } cm.options.mode = doc.modeOption; regChange(cm); } function setDirectionClass(cm) { - (cm.doc.direction == 'rtl' - ? addClass - : rmClass)(cm.display.lineDiv, 'CodeMirror-rtl'); + (cm.doc.direction == "rtl" ? addClass : rmClass)(cm.display.lineDiv, "CodeMirror-rtl"); } function directionChanged(cm) { @@ -7136,44 +4874,28 @@ }); } - function History(startGen) { + function History(prev) { // Arrays of change events and selections. Doing something adds an // event to done and clears undo. Undoing moves events from done // to undone, redoing moves them in the other direction. - this.done = []; - this.undone = []; - this.undoDepth = Infinity; + this.done = []; this.undone = []; + this.undoDepth = prev ? prev.undoDepth : Infinity; // Used to track when changes can be merged into a single undo // event this.lastModTime = this.lastSelTime = 0; this.lastOp = this.lastSelOp = null; this.lastOrigin = this.lastSelOrigin = null; // Used by the isClean() method - this.generation = this.maxGeneration = startGen || 1; + this.generation = this.maxGeneration = prev ? prev.maxGeneration : 1; } // Create a history change event from an updateDoc-style change // object. function historyChangeFromChange(doc, change) { - var histChange = { - from: copyPos(change.from), - to: changeEnd(change), - text: getBetween(doc, change.from, change.to), - }; + var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)}; attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); - linkedDocs( - doc, - function (doc) { - return attachLocalSpans( - doc, - histChange, - change.from.line, - change.to.line + 1, - ); - }, - true, - ); - return histChange; + linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true); + return histChange } // Pop all selection events off the end of a history array. Stop at @@ -7181,11 +4903,8 @@ function clearSelectionEvents(array) { while (array.length) { var last = lst(array); - if (last.ranges) { - array.pop(); - } else { - break; - } + if (last.ranges) { array.pop(); } + else { break } } } @@ -7194,15 +4913,12 @@ function lastChangeEvent(hist, force) { if (force) { clearSelectionEvents(hist.done); - return lst(hist.done); + return lst(hist.done) } else if (hist.done.length && !lst(hist.done).ranges) { - return lst(hist.done); - } else if ( - hist.done.length > 1 && - !hist.done[hist.done.length - 2].ranges - ) { + return lst(hist.done) + } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) { hist.done.pop(); - return lst(hist.done); + return lst(hist.done) } } @@ -7212,20 +4928,14 @@ function addChangeToHistory(doc, change, selAfter, opId) { var hist = doc.history; hist.undone.length = 0; - var time = +new Date(), - cur; + var time = +new Date, cur; var last; - if ( - (hist.lastOp == opId || - (hist.lastOrigin == change.origin && - change.origin && - ((change.origin.charAt(0) == '+' && - hist.lastModTime > - time - (doc.cm ? doc.cm.options.historyEventDelay : 500)) || - change.origin.charAt(0) == '*'))) && - (cur = lastChangeEvent(hist, hist.lastOp == opId)) - ) { + if ((hist.lastOp == opId || + hist.lastOrigin == change.origin && change.origin && + ((change.origin.charAt(0) == "+" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500)) || + change.origin.charAt(0) == "*")) && + (cur = lastChangeEvent(hist, hist.lastOp == opId))) { // Merge this change into the last event last = lst(cur.changes); if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) { @@ -7239,19 +4949,14 @@ } else { // Can not be merged, start a new event. var before = lst(hist.done); - if (!before || !before.ranges) { - pushSelectionToHistory(doc.sel, hist.done); - } - cur = { - changes: [historyChangeFromChange(doc, change)], - generation: hist.generation, - }; + if (!before || !before.ranges) + { pushSelectionToHistory(doc.sel, hist.done); } + cur = {changes: [historyChangeFromChange(doc, change)], + generation: hist.generation}; hist.done.push(cur); while (hist.done.length > hist.undoDepth) { hist.done.shift(); - if (!hist.done[0].ranges) { - hist.done.shift(); - } + if (!hist.done[0].ranges) { hist.done.shift(); } } } hist.done.push(selAfter); @@ -7260,21 +4965,16 @@ hist.lastOp = hist.lastSelOp = opId; hist.lastOrigin = hist.lastSelOrigin = change.origin; - if (!last) { - signal(doc, 'historyAdded'); - } + if (!last) { signal(doc, "historyAdded"); } } function selectionEventCanBeMerged(doc, origin, prev, sel) { var ch = origin.charAt(0); - return ( - ch == '*' || - (ch == '+' && - prev.ranges.length == sel.ranges.length && - prev.somethingSelected() == sel.somethingSelected() && - new Date() - doc.history.lastSelTime <= - (doc.cm ? doc.cm.options.historyEventDelay : 500)) - ); + return ch == "*" || + ch == "+" && + prev.ranges.length == sel.ranges.length && + prev.somethingSelected() == sel.somethingSelected() && + new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500) } // Called whenever the selection changes, sets the new selection as @@ -7282,87 +4982,63 @@ // selection into the 'done' array when it was significantly // different (in number of selected ranges, emptiness, or time). function addSelectionToHistory(doc, sel, opId, options) { - var hist = doc.history, - origin = options && options.origin; + var hist = doc.history, origin = options && options.origin; // A new event is started when the previous origin does not match // the current, or the origins don't allow matching. Origins // starting with * are always merged, those starting with + are // merged when similar and close together in time. - if ( - opId == hist.lastSelOp || - (origin && - hist.lastSelOrigin == origin && - ((hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin) || - selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))) - ) { - hist.done[hist.done.length - 1] = sel; - } else { - pushSelectionToHistory(sel, hist.done); - } - - hist.lastSelTime = +new Date(); + if (opId == hist.lastSelOp || + (origin && hist.lastSelOrigin == origin && + (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin || + selectionEventCanBeMerged(doc, origin, lst(hist.done), sel)))) + { hist.done[hist.done.length - 1] = sel; } + else + { pushSelectionToHistory(sel, hist.done); } + + hist.lastSelTime = +new Date; hist.lastSelOrigin = origin; hist.lastSelOp = opId; - if (options && options.clearRedo !== false) { - clearSelectionEvents(hist.undone); - } + if (options && options.clearRedo !== false) + { clearSelectionEvents(hist.undone); } } function pushSelectionToHistory(sel, dest) { var top = lst(dest); - if (!(top && top.ranges && top.equals(sel))) { - dest.push(sel); - } + if (!(top && top.ranges && top.equals(sel))) + { dest.push(sel); } } // Used to store marked span information in the history. function attachLocalSpans(doc, change, from, to) { - var existing = change['spans_' + doc.id], - n = 0; - doc.iter( - Math.max(doc.first, from), - Math.min(doc.first + doc.size, to), - function (line) { - if (line.markedSpans) { - (existing || (existing = change['spans_' + doc.id] = {}))[n] = - line.markedSpans; - } - ++n; - }, - ); + var existing = change["spans_" + doc.id], n = 0; + doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) { + if (line.markedSpans) + { (existing || (existing = change["spans_" + doc.id] = {}))[n] = line.markedSpans; } + ++n; + }); } // When un/re-doing restores text containing marked spans, those // that have been explicitly cleared should not be restored. function removeClearedSpans(spans) { - if (!spans) { - return null; - } + if (!spans) { return null } var out; for (var i = 0; i < spans.length; ++i) { - if (spans[i].marker.explicitlyCleared) { - if (!out) { - out = spans.slice(0, i); - } - } else if (out) { - out.push(spans[i]); - } + if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i); } } + else if (out) { out.push(spans[i]); } } - return !out ? spans : out.length ? out : null; + return !out ? spans : out.length ? out : null } // Retrieve and filter the old marked spans stored in a change event. function getOldSpans(doc, change) { - var found = change['spans_' + doc.id]; - if (!found) { - return null; - } + var found = change["spans_" + doc.id]; + if (!found) { return null } var nw = []; - for (var i = 0; i < change.text.length; ++i) { - nw.push(removeClearedSpans(found[i])); - } - return nw; + for (var i = 0; i < change.text.length; ++i) + { nw.push(removeClearedSpans(found[i])); } + return nw } // Used for un/re-doing changes from the history. Combines the @@ -7372,31 +5048,23 @@ function mergeOldSpans(doc, change) { var old = getOldSpans(doc, change); var stretched = stretchSpansOverChange(doc, change); - if (!old) { - return stretched; - } - if (!stretched) { - return old; - } + if (!old) { return stretched } + if (!stretched) { return old } for (var i = 0; i < old.length; ++i) { - var oldCur = old[i], - stretchCur = stretched[i]; + var oldCur = old[i], stretchCur = stretched[i]; if (oldCur && stretchCur) { spans: for (var j = 0; j < stretchCur.length; ++j) { var span = stretchCur[j]; - for (var k = 0; k < oldCur.length; ++k) { - if (oldCur[k].marker == span.marker) { - continue spans; - } - } + for (var k = 0; k < oldCur.length; ++k) + { if (oldCur[k].marker == span.marker) { continue spans } } oldCur.push(span); } } else if (stretchCur) { old[i] = stretchCur; } } - return old; + return old } // Used both to provide a JSON-safe object in .getHistory, and, when @@ -7406,35 +5074,23 @@ for (var i = 0; i < events.length; ++i) { var event = events[i]; if (event.ranges) { - copy.push( - instantiateSel ? Selection.prototype.deepCopy.call(event) : event, - ); - continue; - } - var changes = event.changes, - newChanges = []; - copy.push({ changes: newChanges }); + copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event); + continue + } + var changes = event.changes, newChanges = []; + copy.push({changes: newChanges}); for (var j = 0; j < changes.length; ++j) { - var change = changes[j], - m = void 0; - newChanges.push({ - from: change.from, - to: change.to, - text: change.text, - }); - if (newGroup) { - for (var prop in change) { - if ((m = prop.match(/^spans_(\d+)$/))) { - if (indexOf(newGroup, Number(m[1])) > -1) { - lst(newChanges)[prop] = change[prop]; - delete change[prop]; - } - } + var change = changes[j], m = (void 0); + newChanges.push({from: change.from, to: change.to, text: change.text}); + if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\d+)$/)) { + if (indexOf(newGroup, Number(m[1])) > -1) { + lst(newChanges)[prop] = change[prop]; + delete change[prop]; } - } + } } } } } - return copy; + return copy } // The 'scroll' parameter given to many of these indicated whether @@ -7450,29 +5106,23 @@ var anchor = range.anchor; if (other) { var posBefore = cmp(head, anchor) < 0; - if (posBefore != cmp(other, anchor) < 0) { + if (posBefore != (cmp(other, anchor) < 0)) { anchor = head; head = other; - } else if (posBefore != cmp(head, other) < 0) { + } else if (posBefore != (cmp(head, other) < 0)) { head = other; } } - return new Range(anchor, head); + return new Range(anchor, head) } else { - return new Range(other || head, head); + return new Range(other || head, head) } } // Extend the primary selection range, discard the rest. function extendSelection(doc, head, other, options, extend) { - if (extend == null) { - extend = doc.cm && (doc.cm.display.shift || doc.extend); - } - setSelection( - doc, - new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), - options, - ); + if (extend == null) { extend = doc.cm && (doc.cm.display.shift || doc.extend); } + setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options); } // Extend all selections (pos is an array of selections with length @@ -7480,9 +5130,8 @@ function extendSelections(doc, heads, options) { var out = []; var extend = doc.cm && (doc.cm.display.shift || doc.extend); - for (var i = 0; i < doc.sel.ranges.length; i++) { - out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); - } + for (var i = 0; i < doc.sel.ranges.length; i++) + { out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); } var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex); setSelection(doc, newSel, options); } @@ -7491,11 +5140,7 @@ function replaceOneSelection(doc, i, range, options) { var ranges = doc.sel.ranges.slice(0); ranges[i] = range; - setSelection( - doc, - normalizeSelection(doc.cm, ranges, doc.sel.primIndex), - options, - ); + setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options); } // Reset the selection to a single range. @@ -7508,33 +5153,22 @@ function filterSelectionChange(doc, sel, options) { var obj = { ranges: sel.ranges, - update: function (ranges) { - var this$1 = this; - + update: function(ranges) { this.ranges = []; - for (var i = 0; i < ranges.length; i++) { - this$1.ranges[i] = new Range( - clipPos(doc, ranges[i].anchor), - clipPos(doc, ranges[i].head), - ); - } + for (var i = 0; i < ranges.length; i++) + { this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor), + clipPos(doc, ranges[i].head)); } }, - origin: options && options.origin, + origin: options && options.origin }; - signal(doc, 'beforeSelectionChange', doc, obj); - if (doc.cm) { - signal(doc.cm, 'beforeSelectionChange', doc.cm, obj); - } - if (obj.ranges != sel.ranges) { - return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1); - } else { - return sel; - } + signal(doc, "beforeSelectionChange", doc, obj); + if (doc.cm) { signal(doc.cm, "beforeSelectionChange", doc.cm, obj); } + if (obj.ranges != sel.ranges) { return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1) } + else { return sel } } function setSelectionReplaceHistory(doc, sel, options) { - var done = doc.history.done, - last = lst(done); + var done = doc.history.done, last = lst(done); if (last && last.ranges) { done[done.length - 1] = sel; setSelectionNoUndo(doc, sel, options); @@ -7546,36 +5180,23 @@ // Set a new selection. function setSelection(doc, sel, options) { setSelectionNoUndo(doc, sel, options); - addSelectionToHistory( - doc, - doc.sel, - doc.cm ? doc.cm.curOp.id : NaN, - options, - ); + addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options); } function setSelectionNoUndo(doc, sel, options) { - if ( - hasHandler(doc, 'beforeSelectionChange') || - (doc.cm && hasHandler(doc.cm, 'beforeSelectionChange')) - ) { - sel = filterSelectionChange(doc, sel, options); - } + if (hasHandler(doc, "beforeSelectionChange") || doc.cm && hasHandler(doc.cm, "beforeSelectionChange")) + { sel = filterSelectionChange(doc, sel, options); } - var bias = - (options && options.bias) || + var bias = options && options.bias || (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1); setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true)); - if (!(options && options.scroll === false) && doc.cm) { - ensureCursorVisible(doc.cm); - } + if (!(options && options.scroll === false) && doc.cm && doc.cm.getOption("readOnly") != "nocursor") + { ensureCursorVisible(doc.cm); } } function setSelectionInner(doc, sel) { - if (sel.equals(doc.sel)) { - return; - } + if (sel.equals(doc.sel)) { return } doc.sel = sel; @@ -7584,7 +5205,7 @@ doc.cm.curOp.selectionChanged = true; signalCursorActivity(doc.cm); } - signalLater(doc, 'cursorActivity', doc); + signalLater(doc, "cursorActivity", doc); } // Verify that the selection does not partially select any atomic @@ -7600,131 +5221,78 @@ for (var i = 0; i < sel.ranges.length; i++) { var range = sel.ranges[i]; var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i]; - var newAnchor = skipAtomic( - doc, - range.anchor, - old && old.anchor, - bias, - mayClear, - ); - var newHead = skipAtomic( - doc, - range.head, - old && old.head, - bias, - mayClear, - ); + var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear); + var newHead = range.head == range.anchor ? newAnchor : skipAtomic(doc, range.head, old && old.head, bias, mayClear); if (out || newAnchor != range.anchor || newHead != range.head) { - if (!out) { - out = sel.ranges.slice(0, i); - } + if (!out) { out = sel.ranges.slice(0, i); } out[i] = new Range(newAnchor, newHead); } } - return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel; + return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel } function skipAtomicInner(doc, pos, oldPos, dir, mayClear) { var line = getLine(doc, pos.line); - if (line.markedSpans) { - for (var i = 0; i < line.markedSpans.length; ++i) { - var sp = line.markedSpans[i], - m = sp.marker; - - // Determine if we should prevent the cursor being placed to the left/right of an atomic marker - // Historically this was determined using the inclusiveLeft/Right option, but the new way to control it - // is with selectLeft/Right - var preventCursorLeft = - 'selectLeft' in m ? !m.selectLeft : m.inclusiveLeft; - var preventCursorRight = - 'selectRight' in m ? !m.selectRight : m.inclusiveRight; - - if ( - (sp.from == null || - (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) && - (sp.to == null || - (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch)) - ) { - if (mayClear) { - signal(m, 'beforeCursorEnter'); - if (m.explicitlyCleared) { - if (!line.markedSpans) { - break; - } else { - --i; - continue; - } - } - } - if (!m.atomic) { - continue; - } - - if (oldPos) { - var near = m.find(dir < 0 ? 1 : -1), - diff = void 0; - if (dir < 0 ? preventCursorRight : preventCursorLeft) { - near = movePos( - doc, - near, - -dir, - near && near.line == pos.line ? line : null, - ); - } - if ( - near && - near.line == pos.line && - (diff = cmp(near, oldPos)) && - (dir < 0 ? diff < 0 : diff > 0) - ) { - return skipAtomicInner(doc, near, pos, dir, mayClear); - } + if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) { + var sp = line.markedSpans[i], m = sp.marker; + + // Determine if we should prevent the cursor being placed to the left/right of an atomic marker + // Historically this was determined using the inclusiveLeft/Right option, but the new way to control it + // is with selectLeft/Right + var preventCursorLeft = ("selectLeft" in m) ? !m.selectLeft : m.inclusiveLeft; + var preventCursorRight = ("selectRight" in m) ? !m.selectRight : m.inclusiveRight; + + if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) && + (sp.to == null || (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch))) { + if (mayClear) { + signal(m, "beforeCursorEnter"); + if (m.explicitlyCleared) { + if (!line.markedSpans) { break } + else {--i; continue} } + } + if (!m.atomic) { continue } - var far = m.find(dir < 0 ? -1 : 1); - if (dir < 0 ? preventCursorLeft : preventCursorRight) { - far = movePos(doc, far, dir, far.line == pos.line ? line : null); - } - return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null; + if (oldPos) { + var near = m.find(dir < 0 ? 1 : -1), diff = (void 0); + if (dir < 0 ? preventCursorRight : preventCursorLeft) + { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); } + if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0)) + { return skipAtomicInner(doc, near, pos, dir, mayClear) } } + + var far = m.find(dir < 0 ? -1 : 1); + if (dir < 0 ? preventCursorLeft : preventCursorRight) + { far = movePos(doc, far, dir, far.line == pos.line ? line : null); } + return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null } - } - return pos; + } } + return pos } // Ensure a given position is not inside an atomic range. function skipAtomic(doc, pos, oldPos, bias, mayClear) { var dir = bias || 1; - var found = - skipAtomicInner(doc, pos, oldPos, dir, mayClear) || - (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) || - skipAtomicInner(doc, pos, oldPos, -dir, mayClear) || - (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true)); + var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) || + (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) || + skipAtomicInner(doc, pos, oldPos, -dir, mayClear) || + (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true)); if (!found) { doc.cantEdit = true; - return Pos(doc.first, 0); + return Pos(doc.first, 0) } - return found; + return found } function movePos(doc, pos, dir, line) { if (dir < 0 && pos.ch == 0) { - if (pos.line > doc.first) { - return clipPos(doc, Pos(pos.line - 1)); - } else { - return null; - } - } else if ( - dir > 0 && - pos.ch == (line || getLine(doc, pos.line)).text.length - ) { - if (pos.line < doc.first + doc.size - 1) { - return Pos(pos.line + 1, 0); - } else { - return null; - } + if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) } + else { return null } + } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) { + if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) } + else { return null } } else { - return new Pos(pos.line, pos.ch + dir); + return new Pos(pos.line, pos.ch + dir) } } @@ -7742,99 +5310,54 @@ to: change.to, text: change.text, origin: change.origin, - cancel: function () { - return (obj.canceled = true); - }, + cancel: function () { return obj.canceled = true; } }; - if (update) { - obj.update = function (from, to, text, origin) { - if (from) { - obj.from = clipPos(doc, from); - } - if (to) { - obj.to = clipPos(doc, to); - } - if (text) { - obj.text = text; - } - if (origin !== undefined) { - obj.origin = origin; - } - }; - } - signal(doc, 'beforeChange', doc, obj); - if (doc.cm) { - signal(doc.cm, 'beforeChange', doc.cm, obj); - } + if (update) { obj.update = function (from, to, text, origin) { + if (from) { obj.from = clipPos(doc, from); } + if (to) { obj.to = clipPos(doc, to); } + if (text) { obj.text = text; } + if (origin !== undefined) { obj.origin = origin; } + }; } + signal(doc, "beforeChange", doc, obj); + if (doc.cm) { signal(doc.cm, "beforeChange", doc.cm, obj); } if (obj.canceled) { - if (doc.cm) { - doc.cm.curOp.updateInput = 2; - } - return null; + if (doc.cm) { doc.cm.curOp.updateInput = 2; } + return null } - return { from: obj.from, to: obj.to, text: obj.text, origin: obj.origin }; + return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin} } // Apply a change to a document, and add it to the document's // history, and propagating it to all linked documents. function makeChange(doc, change, ignoreReadOnly) { if (doc.cm) { - if (!doc.cm.curOp) { - return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly); - } - if (doc.cm.state.suppressEdits) { - return; - } + if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) } + if (doc.cm.state.suppressEdits) { return } } - if ( - hasHandler(doc, 'beforeChange') || - (doc.cm && hasHandler(doc.cm, 'beforeChange')) - ) { + if (hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange")) { change = filterChange(doc, change, true); - if (!change) { - return; - } + if (!change) { return } } // Possibly split or suppress the update based on the presence // of read-only spans in its range. - var split = - sawReadOnlySpans && - !ignoreReadOnly && - removeReadOnlyRanges(doc, change.from, change.to); + var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to); if (split) { - for (var i = split.length - 1; i >= 0; --i) { - makeChangeInner(doc, { - from: split[i].from, - to: split[i].to, - text: i ? [''] : change.text, - origin: change.origin, - }); - } + for (var i = split.length - 1; i >= 0; --i) + { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [""] : change.text, origin: change.origin}); } } else { makeChangeInner(doc, change); } } function makeChangeInner(doc, change) { - if ( - change.text.length == 1 && - change.text[0] == '' && - cmp(change.from, change.to) == 0 - ) { - return; - } + if (change.text.length == 1 && change.text[0] == "" && cmp(change.from, change.to) == 0) { return } var selAfter = computeSelAfterChange(doc, change); addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN); - makeChangeSingleDoc( - doc, - change, - selAfter, - stretchSpansOverChange(doc, change), - ); + makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change)); var rebased = []; linkedDocs(doc, function (doc, sharedHist) { @@ -7842,44 +5365,27 @@ rebaseHist(doc.history, change); rebased.push(doc.history); } - makeChangeSingleDoc( - doc, - change, - null, - stretchSpansOverChange(doc, change), - ); + makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change)); }); } // Revert a change stored in a document's history. function makeChangeFromHistory(doc, type, allowSelectionOnly) { var suppress = doc.cm && doc.cm.state.suppressEdits; - if (suppress && !allowSelectionOnly) { - return; - } + if (suppress && !allowSelectionOnly) { return } - var hist = doc.history, - event, - selAfter = doc.sel; - var source = type == 'undo' ? hist.done : hist.undone, - dest = type == 'undo' ? hist.undone : hist.done; + var hist = doc.history, event, selAfter = doc.sel; + var source = type == "undo" ? hist.done : hist.undone, dest = type == "undo" ? hist.undone : hist.done; // Verify that there is a useable event (so that ctrl-z won't // needlessly clear selection events) var i = 0; for (; i < source.length; i++) { event = source[i]; - if ( - allowSelectionOnly - ? event.ranges && !event.equals(doc.sel) - : !event.ranges - ) { - break; - } - } - if (i == source.length) { - return; + if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges) + { break } } + if (i == source.length) { return } hist.lastOrigin = hist.lastSelOrigin = null; for (;;) { @@ -7887,44 +5393,38 @@ if (event.ranges) { pushSelectionToHistory(event, dest); if (allowSelectionOnly && !event.equals(doc.sel)) { - setSelection(doc, event, { clearRedo: false }); - return; + setSelection(doc, event, {clearRedo: false}); + return } selAfter = event; } else if (suppress) { source.push(event); - return; - } else { - break; - } + return + } else { break } } // Build up a reverse change object to add to the opposite history // stack (redo when undoing, and vice versa). var antiChanges = []; pushSelectionToHistory(selAfter, dest); - dest.push({ changes: antiChanges, generation: hist.generation }); + dest.push({changes: antiChanges, generation: hist.generation}); hist.generation = event.generation || ++hist.maxGeneration; - var filter = - hasHandler(doc, 'beforeChange') || - (doc.cm && hasHandler(doc.cm, 'beforeChange')); + var filter = hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange"); - var loop = function (i) { + var loop = function ( i ) { var change = event.changes[i]; change.origin = type; if (filter && !filterChange(doc, change, false)) { source.length = 0; - return {}; + return {} } antiChanges.push(historyChangeFromChange(doc, change)); var after = i ? computeSelAfterChange(doc, change) : lst(source); makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change)); - if (!i && doc.cm) { - doc.cm.scrollIntoView({ from: change.from, to: changeEnd(change) }); - } + if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); } var rebased = []; // Propagate to the linked documents @@ -7938,140 +5438,96 @@ }; for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) { - var returned = loop(i$1); + var returned = loop( i$1 ); - if (returned) return returned.v; + if ( returned ) return returned.v; } } // Sub-views need their line numbers shifted when text is added // above or below them in the parent document. function shiftDoc(doc, distance) { - if (distance == 0) { - return; - } + if (distance == 0) { return } doc.first += distance; - doc.sel = new Selection( - map(doc.sel.ranges, function (range) { - return new Range( - Pos(range.anchor.line + distance, range.anchor.ch), - Pos(range.head.line + distance, range.head.ch), - ); - }), - doc.sel.primIndex, - ); + doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range( + Pos(range.anchor.line + distance, range.anchor.ch), + Pos(range.head.line + distance, range.head.ch) + ); }), doc.sel.primIndex); if (doc.cm) { regChange(doc.cm, doc.first, doc.first - distance, distance); - for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++) { - regLineChange(doc.cm, l, 'gutter'); - } + for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++) + { regLineChange(doc.cm, l, "gutter"); } } } // More lower-level change function, handling only a single document // (not linked ones). function makeChangeSingleDoc(doc, change, selAfter, spans) { - if (doc.cm && !doc.cm.curOp) { - return operation(doc.cm, makeChangeSingleDoc)( - doc, - change, - selAfter, - spans, - ); - } + if (doc.cm && !doc.cm.curOp) + { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) } if (change.to.line < doc.first) { - shiftDoc( - doc, - change.text.length - 1 - (change.to.line - change.from.line), - ); - return; - } - if (change.from.line > doc.lastLine()) { - return; + shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line)); + return } + if (change.from.line > doc.lastLine()) { return } // Clip the change to the size of this doc if (change.from.line < doc.first) { var shift = change.text.length - 1 - (doc.first - change.from.line); shiftDoc(doc, shift); - change = { - from: Pos(doc.first, 0), - to: Pos(change.to.line + shift, change.to.ch), - text: [lst(change.text)], - origin: change.origin, - }; + change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch), + text: [lst(change.text)], origin: change.origin}; } var last = doc.lastLine(); if (change.to.line > last) { - change = { - from: change.from, - to: Pos(last, getLine(doc, last).text.length), - text: [change.text[0]], - origin: change.origin, - }; + change = {from: change.from, to: Pos(last, getLine(doc, last).text.length), + text: [change.text[0]], origin: change.origin}; } change.removed = getBetween(doc, change.from, change.to); - if (!selAfter) { - selAfter = computeSelAfterChange(doc, change); - } - if (doc.cm) { - makeChangeSingleDocInEditor(doc.cm, change, spans); - } else { - updateDoc(doc, change, spans); - } + if (!selAfter) { selAfter = computeSelAfterChange(doc, change); } + if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans); } + else { updateDoc(doc, change, spans); } setSelectionNoUndo(doc, selAfter, sel_dontScroll); - if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0))) { - doc.cantEdit = false; - } + if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0))) + { doc.cantEdit = false; } } // Handle the interaction of a change to a document with the editor // that this document is part of. function makeChangeSingleDocInEditor(cm, change, spans) { - var doc = cm.doc, - display = cm.display, - from = change.from, - to = change.to; + var doc = cm.doc, display = cm.display, from = change.from, to = change.to; - var recomputeMaxLength = false, - checkWidthStart = from.line; + var recomputeMaxLength = false, checkWidthStart = from.line; if (!cm.options.lineWrapping) { checkWidthStart = lineNo(visualLine(getLine(doc, from.line))); doc.iter(checkWidthStart, to.line + 1, function (line) { if (line == display.maxLine) { recomputeMaxLength = true; - return true; + return true } }); } - if (doc.sel.contains(change.from, change.to) > -1) { - signalCursorActivity(cm); - } + if (doc.sel.contains(change.from, change.to) > -1) + { signalCursorActivity(cm); } updateDoc(doc, change, spans, estimateHeight(cm)); if (!cm.options.lineWrapping) { - doc.iter( - checkWidthStart, - from.line + change.text.length, - function (line) { - var len = lineLength(line); - if (len > display.maxLineLength) { - display.maxLine = line; - display.maxLineLength = len; - display.maxLineChanged = true; - recomputeMaxLength = false; - } - }, - ); - if (recomputeMaxLength) { - cm.curOp.updateMaxLine = true; - } + doc.iter(checkWidthStart, from.line + change.text.length, function (line) { + var len = lineLength(line); + if (len > display.maxLineLength) { + display.maxLine = line; + display.maxLineLength = len; + display.maxLineChanged = true; + recomputeMaxLength = false; + } + }); + if (recomputeMaxLength) { cm.curOp.updateMaxLine = true; } } retreatFrontier(doc, from.line); @@ -8079,34 +5535,23 @@ var lendiff = change.text.length - (to.line - from.line) - 1; // Remember that these lines changed, for updating the display - if (change.full) { - regChange(cm); - } else if ( - from.line == to.line && - change.text.length == 1 && - !isWholeLineUpdate(cm.doc, change) - ) { - regLineChange(cm, from.line, 'text'); - } else { - regChange(cm, from.line, to.line + 1, lendiff); - } - - var changesHandler = hasHandler(cm, 'changes'), - changeHandler = hasHandler(cm, 'change'); + if (change.full) + { regChange(cm); } + else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change)) + { regLineChange(cm, from.line, "text"); } + else + { regChange(cm, from.line, to.line + 1, lendiff); } + + var changesHandler = hasHandler(cm, "changes"), changeHandler = hasHandler(cm, "change"); if (changeHandler || changesHandler) { var obj = { - from: from, - to: to, + from: from, to: to, text: change.text, removed: change.removed, - origin: change.origin, + origin: change.origin }; - if (changeHandler) { - signalLater(cm, 'change', cm, obj); - } - if (changesHandler) { - (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); - } + if (changeHandler) { signalLater(cm, "change", cm, obj); } + if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); } } cm.display.selForContextMenu = null; } @@ -8114,16 +5559,10 @@ function replaceRange(doc, code, from, to, origin) { var assign; - if (!to) { - to = from; - } - if (cmp(to, from) < 0) { - (assign = [to, from]), (from = assign[0]), (to = assign[1]); - } - if (typeof code == 'string') { - code = doc.splitLines(code); - } - makeChange(doc, { from: from, to: to, text: code, origin: origin }); + if (!to) { to = from; } + if (cmp(to, from) < 0) { (assign = [to, from], from = assign[0], to = assign[1]); } + if (typeof code == "string") { code = doc.splitLines(code); } + makeChange(doc, {from: from, to: to, text: code, origin: origin}); } // Rebasing/resetting history to deal with externally-sourced changes @@ -8146,18 +5585,14 @@ // shared position objects being unsafely updated. function rebaseHistArray(array, from, to, diff) { for (var i = 0; i < array.length; ++i) { - var sub = array[i], - ok = true; + var sub = array[i], ok = true; if (sub.ranges) { - if (!sub.copied) { - sub = array[i] = sub.deepCopy(); - sub.copied = true; - } + if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; } for (var j = 0; j < sub.ranges.length; j++) { rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff); rebaseHistSelSingle(sub.ranges[j].head, from, to, diff); } - continue; + continue } for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) { var cur = sub.changes[j$1]; @@ -8166,7 +5601,7 @@ cur.to = Pos(cur.to.line + diff, cur.to.ch); } else if (from <= cur.to.line) { ok = false; - break; + break } } if (!ok) { @@ -8177,9 +5612,7 @@ } function rebaseHist(hist, change) { - var from = change.from.line, - to = change.to.line, - diff = change.text.length - (to - from) - 1; + var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1; rebaseHistArray(hist.done, from, to, diff); rebaseHistArray(hist.undone, from, to, diff); } @@ -8188,20 +5621,12 @@ // returning the number and optionally registering the line as // changed. function changeLine(doc, handle, changeType, op) { - var no = handle, - line = handle; - if (typeof handle == 'number') { - line = getLine(doc, clipLine(doc, handle)); - } else { - no = lineNo(handle); - } - if (no == null) { - return null; - } - if (op(line, no) && doc.cm) { - regLineChange(doc.cm, no, changeType); - } - return line; + var no = handle, line = handle; + if (typeof handle == "number") { line = getLine(doc, clipLine(doc, handle)); } + else { no = lineNo(handle); } + if (no == null) { return null } + if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType); } + return line } // The document is represented as a BTree consisting of leaves, with @@ -8218,79 +5643,57 @@ // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html function LeafChunk(lines) { - var this$1 = this; - this.lines = lines; this.parent = null; var height = 0; for (var i = 0; i < lines.length; ++i) { - lines[i].parent = this$1; + lines[i].parent = this; height += lines[i].height; } this.height = height; } LeafChunk.prototype = { - chunkSize: function () { - return this.lines.length; - }, + chunkSize: function() { return this.lines.length }, // Remove the n lines at offset 'at'. - removeInner: function (at, n) { - var this$1 = this; - + removeInner: function(at, n) { for (var i = at, e = at + n; i < e; ++i) { - var line = this$1.lines[i]; - this$1.height -= line.height; + var line = this.lines[i]; + this.height -= line.height; cleanUpLine(line); - signalLater(line, 'delete'); + signalLater(line, "delete"); } this.lines.splice(at, n); }, // Helper used to collapse a small branch into a single leaf. - collapse: function (lines) { + collapse: function(lines) { lines.push.apply(lines, this.lines); }, // Insert the given array of lines at offset 'at', count them as // having the given height. - insertInner: function (at, lines, height) { - var this$1 = this; - + insertInner: function(at, lines, height) { this.height += height; - this.lines = this.lines - .slice(0, at) - .concat(lines) - .concat(this.lines.slice(at)); - for (var i = 0; i < lines.length; ++i) { - lines[i].parent = this$1; - } + this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at)); + for (var i = 0; i < lines.length; ++i) { lines[i].parent = this; } }, // Used to iterate over a part of the tree. - iterN: function (at, n, op) { - var this$1 = this; - - for (var e = at + n; at < e; ++at) { - if (op(this$1.lines[at])) { - return true; - } - } - }, + iterN: function(at, n, op) { + for (var e = at + n; at < e; ++at) + { if (op(this.lines[at])) { return true } } + } }; function BranchChunk(children) { - var this$1 = this; - this.children = children; - var size = 0, - height = 0; + var size = 0, height = 0; for (var i = 0; i < children.length; ++i) { var ch = children[i]; - size += ch.chunkSize(); - height += ch.height; - ch.parent = this$1; + size += ch.chunkSize(); height += ch.height; + ch.parent = this; } this.size = size; this.height = height; @@ -8298,40 +5701,25 @@ } BranchChunk.prototype = { - chunkSize: function () { - return this.size; - }, - - removeInner: function (at, n) { - var this$1 = this; + chunkSize: function() { return this.size }, + removeInner: function(at, n) { this.size -= n; for (var i = 0; i < this.children.length; ++i) { - var child = this$1.children[i], - sz = child.chunkSize(); + var child = this.children[i], sz = child.chunkSize(); if (at < sz) { - var rm = Math.min(n, sz - at), - oldHeight = child.height; + var rm = Math.min(n, sz - at), oldHeight = child.height; child.removeInner(at, rm); - this$1.height -= oldHeight - child.height; - if (sz == rm) { - this$1.children.splice(i--, 1); - child.parent = null; - } - if ((n -= rm) == 0) { - break; - } + this.height -= oldHeight - child.height; + if (sz == rm) { this.children.splice(i--, 1); child.parent = null; } + if ((n -= rm) == 0) { break } at = 0; - } else { - at -= sz; - } + } else { at -= sz; } } // If the result is smaller than 25 lines, ensure that it is a // single leaf node. - if ( - this.size - n < 25 && - (this.children.length > 1 || !(this.children[0] instanceof LeafChunk)) - ) { + if (this.size - n < 25 && + (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) { var lines = []; this.collapse(lines); this.children = [new LeafChunk(lines)]; @@ -8339,207 +5727,139 @@ } }, - collapse: function (lines) { - var this$1 = this; - - for (var i = 0; i < this.children.length; ++i) { - this$1.children[i].collapse(lines); - } + collapse: function(lines) { + for (var i = 0; i < this.children.length; ++i) { this.children[i].collapse(lines); } }, - insertInner: function (at, lines, height) { - var this$1 = this; - + insertInner: function(at, lines, height) { this.size += lines.length; this.height += height; for (var i = 0; i < this.children.length; ++i) { - var child = this$1.children[i], - sz = child.chunkSize(); + var child = this.children[i], sz = child.chunkSize(); if (at <= sz) { child.insertInner(at, lines, height); if (child.lines && child.lines.length > 50) { // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced. // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest. - var remaining = (child.lines.length % 25) + 25; - for (var pos = remaining; pos < child.lines.length; ) { - var leaf = new LeafChunk(child.lines.slice(pos, (pos += 25))); + var remaining = child.lines.length % 25 + 25; + for (var pos = remaining; pos < child.lines.length;) { + var leaf = new LeafChunk(child.lines.slice(pos, pos += 25)); child.height -= leaf.height; - this$1.children.splice(++i, 0, leaf); - leaf.parent = this$1; + this.children.splice(++i, 0, leaf); + leaf.parent = this; } child.lines = child.lines.slice(0, remaining); - this$1.maybeSpill(); + this.maybeSpill(); } - break; + break } at -= sz; } }, // When a node has grown, check whether it should be split. - maybeSpill: function () { - if (this.children.length <= 10) { - return; - } + maybeSpill: function() { + if (this.children.length <= 10) { return } var me = this; do { var spilled = me.children.splice(me.children.length - 5, 5); var sibling = new BranchChunk(spilled); - if (!me.parent) { - // Become the parent node + if (!me.parent) { // Become the parent node var copy = new BranchChunk(me.children); copy.parent = me; me.children = [copy, sibling]; me = copy; - } else { + } else { me.size -= sibling.size; me.height -= sibling.height; var myIndex = indexOf(me.parent.children, me); me.parent.children.splice(myIndex + 1, 0, sibling); } sibling.parent = me.parent; - } while (me.children.length > 10); + } while (me.children.length > 10) me.parent.maybeSpill(); }, - iterN: function (at, n, op) { - var this$1 = this; - + iterN: function(at, n, op) { for (var i = 0; i < this.children.length; ++i) { - var child = this$1.children[i], - sz = child.chunkSize(); + var child = this.children[i], sz = child.chunkSize(); if (at < sz) { var used = Math.min(n, sz - at); - if (child.iterN(at, used, op)) { - return true; - } - if ((n -= used) == 0) { - break; - } + if (child.iterN(at, used, op)) { return true } + if ((n -= used) == 0) { break } at = 0; - } else { - at -= sz; - } + } else { at -= sz; } } - }, + } }; // Line widgets are block elements displayed above or below a line. - var LineWidget = function (doc, node, options) { - var this$1 = this; - - if (options) { - for (var opt in options) { - if (options.hasOwnProperty(opt)) { - this$1[opt] = options[opt]; - } - } - } + var LineWidget = function(doc, node, options) { + if (options) { for (var opt in options) { if (options.hasOwnProperty(opt)) + { this[opt] = options[opt]; } } } this.doc = doc; this.node = node; }; LineWidget.prototype.clear = function () { - var this$1 = this; - - var cm = this.doc.cm, - ws = this.line.widgets, - line = this.line, - no = lineNo(line); - if (no == null || !ws) { - return; - } - for (var i = 0; i < ws.length; ++i) { - if (ws[i] == this$1) { - ws.splice(i--, 1); - } - } - if (!ws.length) { - line.widgets = null; - } + var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line); + if (no == null || !ws) { return } + for (var i = 0; i < ws.length; ++i) { if (ws[i] == this) { ws.splice(i--, 1); } } + if (!ws.length) { line.widgets = null; } var height = widgetHeight(this); updateLineHeight(line, Math.max(0, line.height - height)); if (cm) { runInOp(cm, function () { adjustScrollWhenAboveVisible(cm, line, -height); - regLineChange(cm, no, 'widget'); + regLineChange(cm, no, "widget"); }); - signalLater(cm, 'lineWidgetCleared', cm, this, no); + signalLater(cm, "lineWidgetCleared", cm, this, no); } }; LineWidget.prototype.changed = function () { - var this$1 = this; + var this$1 = this; - var oldH = this.height, - cm = this.doc.cm, - line = this.line; + var oldH = this.height, cm = this.doc.cm, line = this.line; this.height = null; var diff = widgetHeight(this) - oldH; - if (!diff) { - return; - } - if (!lineIsHidden(this.doc, line)) { - updateLineHeight(line, line.height + diff); - } + if (!diff) { return } + if (!lineIsHidden(this.doc, line)) { updateLineHeight(line, line.height + diff); } if (cm) { runInOp(cm, function () { cm.curOp.forceUpdate = true; adjustScrollWhenAboveVisible(cm, line, diff); - signalLater(cm, 'lineWidgetChanged', cm, this$1, lineNo(line)); + signalLater(cm, "lineWidgetChanged", cm, this$1, lineNo(line)); }); } }; eventMixin(LineWidget); function adjustScrollWhenAboveVisible(cm, line, diff) { - if ( - heightAtLine(line) < - ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop) - ) { - addToScrollTop(cm, diff); - } + if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop)) + { addToScrollTop(cm, diff); } } function addLineWidget(doc, handle, node, options) { var widget = new LineWidget(doc, node, options); var cm = doc.cm; - if (cm && widget.noHScroll) { - cm.display.alignWidgets = true; - } - changeLine(doc, handle, 'widget', function (line) { + if (cm && widget.noHScroll) { cm.display.alignWidgets = true; } + changeLine(doc, handle, "widget", function (line) { var widgets = line.widgets || (line.widgets = []); - if (widget.insertAt == null) { - widgets.push(widget); - } else { - widgets.splice( - Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), - 0, - widget, - ); - } + if (widget.insertAt == null) { widgets.push(widget); } + else { widgets.splice(Math.min(widgets.length, Math.max(0, widget.insertAt)), 0, widget); } widget.line = line; if (cm && !lineIsHidden(doc, line)) { var aboveVisible = heightAtLine(line) < doc.scrollTop; updateLineHeight(line, line.height + widgetHeight(widget)); - if (aboveVisible) { - addToScrollTop(cm, widget.height); - } + if (aboveVisible) { addToScrollTop(cm, widget.height); } cm.curOp.forceUpdate = true; } - return true; + return true }); - if (cm) { - signalLater( - cm, - 'lineWidgetAdded', - cm, - widget, - typeof handle == 'number' ? handle : lineNo(handle), - ); - } - return widget; + if (cm) { signalLater(cm, "lineWidgetAdded", cm, widget, typeof handle == "number" ? handle : lineNo(handle)); } + return widget } // TEXTMARKERS @@ -8559,7 +5879,7 @@ // when they overlap (they may nest, but not partially overlap). var nextMarkerId = 0; - var TextMarker = function (doc, type) { + var TextMarker = function(doc, type) { this.lines = []; this.type = type; this.doc = doc; @@ -8568,79 +5888,45 @@ // Clear the marker. TextMarker.prototype.clear = function () { - var this$1 = this; - - if (this.explicitlyCleared) { - return; - } - var cm = this.doc.cm, - withOp = cm && !cm.curOp; - if (withOp) { - startOperation(cm); - } - if (hasHandler(this, 'clear')) { + if (this.explicitlyCleared) { return } + var cm = this.doc.cm, withOp = cm && !cm.curOp; + if (withOp) { startOperation(cm); } + if (hasHandler(this, "clear")) { var found = this.find(); - if (found) { - signalLater(this, 'clear', found.from, found.to); - } + if (found) { signalLater(this, "clear", found.from, found.to); } } - var min = null, - max = null; + var min = null, max = null; for (var i = 0; i < this.lines.length; ++i) { - var line = this$1.lines[i]; - var span = getMarkedSpanFor(line.markedSpans, this$1); - if (cm && !this$1.collapsed) { - regLineChange(cm, lineNo(line), 'text'); - } else if (cm) { - if (span.to != null) { - max = lineNo(line); - } - if (span.from != null) { - min = lineNo(line); - } + var line = this.lines[i]; + var span = getMarkedSpanFor(line.markedSpans, this); + if (cm && !this.collapsed) { regLineChange(cm, lineNo(line), "text"); } + else if (cm) { + if (span.to != null) { max = lineNo(line); } + if (span.from != null) { min = lineNo(line); } } line.markedSpans = removeMarkedSpan(line.markedSpans, span); - if ( - span.from == null && - this$1.collapsed && - !lineIsHidden(this$1.doc, line) && - cm - ) { - updateLineHeight(line, textHeight(cm.display)); - } - } - if (cm && this.collapsed && !cm.options.lineWrapping) { - for (var i$1 = 0; i$1 < this.lines.length; ++i$1) { - var visual = visualLine(this$1.lines[i$1]), - len = lineLength(visual); - if (len > cm.display.maxLineLength) { - cm.display.maxLine = visual; - cm.display.maxLineLength = len; - cm.display.maxLineChanged = true; - } - } + if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm) + { updateLineHeight(line, textHeight(cm.display)); } } + if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) { + var visual = visualLine(this.lines[i$1]), len = lineLength(visual); + if (len > cm.display.maxLineLength) { + cm.display.maxLine = visual; + cm.display.maxLineLength = len; + cm.display.maxLineChanged = true; + } + } } - if (min != null && cm && this.collapsed) { - regChange(cm, min, max + 1); - } + if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1); } this.lines.length = 0; this.explicitlyCleared = true; if (this.atomic && this.doc.cantEdit) { this.doc.cantEdit = false; - if (cm) { - reCheckSelection(cm.doc); - } - } - if (cm) { - signalLater(cm, 'markerCleared', cm, this, min, max); - } - if (withOp) { - endOperation(cm); - } - if (this.parent) { - this.parent.clear(); + if (cm) { reCheckSelection(cm.doc); } } + if (cm) { signalLater(cm, "markerCleared", cm, this, min, max); } + if (withOp) { endOperation(cm); } + if (this.parent) { this.parent.clear(); } }; // Find the position of the marker in the document. Returns a {from, @@ -8649,45 +5935,32 @@ // Pos objects returned contain a line object, rather than a line // number (used to prevent looking up the same line twice). TextMarker.prototype.find = function (side, lineObj) { - var this$1 = this; - - if (side == null && this.type == 'bookmark') { - side = 1; - } + if (side == null && this.type == "bookmark") { side = 1; } var from, to; for (var i = 0; i < this.lines.length; ++i) { - var line = this$1.lines[i]; - var span = getMarkedSpanFor(line.markedSpans, this$1); + var line = this.lines[i]; + var span = getMarkedSpanFor(line.markedSpans, this); if (span.from != null) { from = Pos(lineObj ? line : lineNo(line), span.from); - if (side == -1) { - return from; - } + if (side == -1) { return from } } if (span.to != null) { to = Pos(lineObj ? line : lineNo(line), span.to); - if (side == 1) { - return to; - } + if (side == 1) { return to } } } - return from && { from: from, to: to }; + return from && {from: from, to: to} }; // Signals that the marker's widget changed, and surrounding layout // should be recomputed. TextMarker.prototype.changed = function () { - var this$1 = this; + var this$1 = this; - var pos = this.find(-1, true), - widget = this, - cm = this.doc.cm; - if (!pos || !cm) { - return; - } + var pos = this.find(-1, true), widget = this, cm = this.doc.cm; + if (!pos || !cm) { return } runInOp(cm, function () { - var line = pos.line, - lineN = lineNo(pos.line); + var line = pos.line, lineN = lineNo(pos.line); var view = findViewForLine(cm, lineN); if (view) { clearLineMeasurementCacheFor(view); @@ -8698,23 +5971,18 @@ var oldHeight = widget.height; widget.height = null; var dHeight = widgetHeight(widget) - oldHeight; - if (dHeight) { - updateLineHeight(line, line.height + dHeight); - } + if (dHeight) + { updateLineHeight(line, line.height + dHeight); } } - signalLater(cm, 'markerChanged', cm, this$1); + signalLater(cm, "markerChanged", cm, this$1); }); }; TextMarker.prototype.attachLine = function (line) { if (!this.lines.length && this.doc.cm) { var op = this.doc.cm.curOp; - if ( - !op.maybeHiddenMarkers || - indexOf(op.maybeHiddenMarkers, this) == -1 - ) { - (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); - } + if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1) + { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); } } this.lines.push(line); }; @@ -8722,8 +5990,8 @@ TextMarker.prototype.detachLine = function (line) { this.lines.splice(indexOf(this.lines, line), 1); if (!this.lines.length && this.doc.cm) { - var op = this.doc.cm.curOp; - (op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this); + var op = this.doc.cm.curOp + ;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this); } }; eventMixin(TextMarker); @@ -8733,105 +6001,53 @@ // Shared markers (across linked documents) are handled separately // (markTextShared will call out to this again, once per // document). - if (options && options.shared) { - return markTextShared(doc, from, to, options, type); - } + if (options && options.shared) { return markTextShared(doc, from, to, options, type) } // Ensure we are in an operation. - if (doc.cm && !doc.cm.curOp) { - return operation(doc.cm, markText)(doc, from, to, options, type); - } + if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) } - var marker = new TextMarker(doc, type), - diff = cmp(from, to); - if (options) { - copyObj(options, marker, false); - } + var marker = new TextMarker(doc, type), diff = cmp(from, to); + if (options) { copyObj(options, marker, false); } // Don't connect empty markers unless clearWhenEmpty is false - if (diff > 0 || (diff == 0 && marker.clearWhenEmpty !== false)) { - return marker; - } + if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false) + { return marker } if (marker.replacedWith) { // Showing up as a widget implies collapsed (widget replaces text) marker.collapsed = true; - marker.widgetNode = eltP( - 'span', - [marker.replacedWith], - 'CodeMirror-widget', - ); - if (!options.handleMouseEvents) { - marker.widgetNode.setAttribute('cm-ignore-events', 'true'); - } - if (options.insertLeft) { - marker.widgetNode.insertLeft = true; - } + marker.widgetNode = eltP("span", [marker.replacedWith], "CodeMirror-widget"); + if (!options.handleMouseEvents) { marker.widgetNode.setAttribute("cm-ignore-events", "true"); } + if (options.insertLeft) { marker.widgetNode.insertLeft = true; } } if (marker.collapsed) { - if ( - conflictingCollapsedRange(doc, from.line, from, to, marker) || - (from.line != to.line && - conflictingCollapsedRange(doc, to.line, from, to, marker)) - ) { - throw new Error( - 'Inserting collapsed marker partially overlapping an existing one', - ); - } + if (conflictingCollapsedRange(doc, from.line, from, to, marker) || + from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker)) + { throw new Error("Inserting collapsed marker partially overlapping an existing one") } seeCollapsedSpans(); } - if (marker.addToHistory) { - addChangeToHistory( - doc, - { from: from, to: to, origin: 'markText' }, - doc.sel, - NaN, - ); - } + if (marker.addToHistory) + { addChangeToHistory(doc, {from: from, to: to, origin: "markText"}, doc.sel, NaN); } - var curLine = from.line, - cm = doc.cm, - updateMaxLine; + var curLine = from.line, cm = doc.cm, updateMaxLine; doc.iter(curLine, to.line + 1, function (line) { - if ( - cm && - marker.collapsed && - !cm.options.lineWrapping && - visualLine(line) == cm.display.maxLine - ) { - updateMaxLine = true; - } - if (marker.collapsed && curLine != from.line) { - updateLineHeight(line, 0); - } - addMarkedSpan( - line, - new MarkedSpan( - marker, - curLine == from.line ? from.ch : null, - curLine == to.line ? to.ch : null, - ), - ); + if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine) + { updateMaxLine = true; } + if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0); } + addMarkedSpan(line, new MarkedSpan(marker, + curLine == from.line ? from.ch : null, + curLine == to.line ? to.ch : null), doc.cm && doc.cm.curOp); ++curLine; }); // lineIsHidden depends on the presence of the spans, so needs a second pass - if (marker.collapsed) { - doc.iter(from.line, to.line + 1, function (line) { - if (lineIsHidden(doc, line)) { - updateLineHeight(line, 0); - } - }); - } + if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) { + if (lineIsHidden(doc, line)) { updateLineHeight(line, 0); } + }); } - if (marker.clearOnEnter) { - on(marker, 'beforeCursorEnter', function () { - return marker.clear(); - }); - } + if (marker.clearOnEnter) { on(marker, "beforeCursorEnter", function () { return marker.clear(); }); } if (marker.readOnly) { seeReadOnlySpans(); - if (doc.history.done.length || doc.history.undone.length) { - doc.clearHistory(); - } + if (doc.history.done.length || doc.history.undone.length) + { doc.clearHistory(); } } if (marker.collapsed) { marker.id = ++nextMarkerId; @@ -8839,29 +6055,16 @@ } if (cm) { // Sync editor state - if (updateMaxLine) { - cm.curOp.updateMaxLine = true; - } - if (marker.collapsed) { - regChange(cm, from.line, to.line + 1); - } else if ( - marker.className || - marker.startStyle || - marker.endStyle || - marker.css || - marker.attributes || - marker.title - ) { - for (var i = from.line; i <= to.line; i++) { - regLineChange(cm, i, 'text'); - } - } - if (marker.atomic) { - reCheckSelection(cm.doc); - } - signalLater(cm, 'markerAdded', cm, marker); + if (updateMaxLine) { cm.curOp.updateMaxLine = true; } + if (marker.collapsed) + { regChange(cm, from.line, to.line + 1); } + else if (marker.className || marker.startStyle || marker.endStyle || marker.css || + marker.attributes || marker.title) + { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, "text"); } } + if (marker.atomic) { reCheckSelection(cm.doc); } + signalLater(cm, "markerAdded", cm, marker); } - return marker; + return marker } // SHARED TEXTMARKERS @@ -8869,81 +6072,51 @@ // A shared marker spans multiple linked documents. It is // implemented as a meta-marker-object controlling multiple normal // markers. - var SharedTextMarker = function (markers, primary) { - var this$1 = this; - + var SharedTextMarker = function(markers, primary) { this.markers = markers; this.primary = primary; - for (var i = 0; i < markers.length; ++i) { - markers[i].parent = this$1; - } + for (var i = 0; i < markers.length; ++i) + { markers[i].parent = this; } }; SharedTextMarker.prototype.clear = function () { - var this$1 = this; - - if (this.explicitlyCleared) { - return; - } + if (this.explicitlyCleared) { return } this.explicitlyCleared = true; - for (var i = 0; i < this.markers.length; ++i) { - this$1.markers[i].clear(); - } - signalLater(this, 'clear'); + for (var i = 0; i < this.markers.length; ++i) + { this.markers[i].clear(); } + signalLater(this, "clear"); }; SharedTextMarker.prototype.find = function (side, lineObj) { - return this.primary.find(side, lineObj); + return this.primary.find(side, lineObj) }; eventMixin(SharedTextMarker); function markTextShared(doc, from, to, options, type) { options = copyObj(options); options.shared = false; - var markers = [markText(doc, from, to, options, type)], - primary = markers[0]; + var markers = [markText(doc, from, to, options, type)], primary = markers[0]; var widget = options.widgetNode; linkedDocs(doc, function (doc) { - if (widget) { - options.widgetNode = widget.cloneNode(true); - } - markers.push( - markText(doc, clipPos(doc, from), clipPos(doc, to), options, type), - ); - for (var i = 0; i < doc.linked.length; ++i) { - if (doc.linked[i].isParent) { - return; - } - } + if (widget) { options.widgetNode = widget.cloneNode(true); } + markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type)); + for (var i = 0; i < doc.linked.length; ++i) + { if (doc.linked[i].isParent) { return } } primary = lst(markers); }); - return new SharedTextMarker(markers, primary); + return new SharedTextMarker(markers, primary) } function findSharedMarkers(doc) { - return doc.findMarks( - Pos(doc.first, 0), - doc.clipPos(Pos(doc.lastLine())), - function (m) { - return m.parent; - }, - ); + return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; }) } function copySharedMarkers(doc, markers) { for (var i = 0; i < markers.length; i++) { - var marker = markers[i], - pos = marker.find(); - var mFrom = doc.clipPos(pos.from), - mTo = doc.clipPos(pos.to); + var marker = markers[i], pos = marker.find(); + var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to); if (cmp(mFrom, mTo)) { - var subMark = markText( - doc, - mFrom, - mTo, - marker.primary, - marker.primary.type, - ); + var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type); marker.markers.push(subMark); subMark.parent = marker; } @@ -8951,12 +6124,9 @@ } function detachSharedMarkers(markers) { - var loop = function (i) { - var marker = markers[i], - linked = [marker.primary.doc]; - linkedDocs(marker.primary.doc, function (d) { - return linked.push(d); - }); + var loop = function ( i ) { + var marker = markers[i], linked = [marker.primary.doc]; + linkedDocs(marker.primary.doc, function (d) { return linked.push(d); }); for (var j = 0; j < marker.markers.length; j++) { var subMarker = marker.markers[j]; if (indexOf(linked, subMarker.doc) == -1) { @@ -8966,19 +6136,15 @@ } }; - for (var i = 0; i < markers.length; i++) loop(i); + for (var i = 0; i < markers.length; i++) loop( i ); } var nextDocId = 0; - var Doc = function (text, mode, firstLine, lineSep, direction) { - if (!(this instanceof Doc)) { - return new Doc(text, mode, firstLine, lineSep, direction); - } - if (firstLine == null) { - firstLine = 0; - } + var Doc = function(text, mode, firstLine, lineSep, direction) { + if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) } + if (firstLine == null) { firstLine = 0; } - BranchChunk.call(this, [new LeafChunk([new Line('', null)])]); + BranchChunk.call(this, [new LeafChunk([new Line("", null)])]); this.first = firstLine; this.scrollTop = this.scrollLeft = 0; this.cantEdit = false; @@ -8990,13 +6156,11 @@ this.id = ++nextDocId; this.modeOption = mode; this.lineSep = lineSep; - this.direction = direction == 'rtl' ? 'rtl' : 'ltr'; + this.direction = (direction == "rtl") ? "rtl" : "ltr"; this.extend = false; - if (typeof text == 'string') { - text = this.splitLines(text); - } - updateDoc(this, { from: start, to: start, text: text }); + if (typeof text == "string") { text = this.splitLines(text); } + updateDoc(this, {from: start, to: start, text: text}); setSelection(this, simpleSelection(start), sel_dontScroll); }; @@ -9006,680 +6170,388 @@ // argument, it calls that for each line in the document. With // three, it iterates over the range given by the first two (with // the second being non-inclusive). - iter: function (from, to, op) { - if (op) { - this.iterN(from - this.first, to - from, op); - } else { - this.iterN(this.first, this.first + this.size, from); - } + iter: function(from, to, op) { + if (op) { this.iterN(from - this.first, to - from, op); } + else { this.iterN(this.first, this.first + this.size, from); } }, // Non-public interface for adding and removing lines. - insert: function (at, lines) { + insert: function(at, lines) { var height = 0; - for (var i = 0; i < lines.length; ++i) { - height += lines[i].height; - } + for (var i = 0; i < lines.length; ++i) { height += lines[i].height; } this.insertInner(at - this.first, lines, height); }, - remove: function (at, n) { - this.removeInner(at - this.first, n); - }, + remove: function(at, n) { this.removeInner(at - this.first, n); }, // From here, the methods are part of the public interface. Most // are also available from CodeMirror (editor) instances. - getValue: function (lineSep) { + getValue: function(lineSep) { var lines = getLines(this, this.first, this.first + this.size); - if (lineSep === false) { - return lines; - } - return lines.join(lineSep || this.lineSeparator()); + if (lineSep === false) { return lines } + return lines.join(lineSep || this.lineSeparator()) }, - setValue: docMethodOp(function (code) { - var top = Pos(this.first, 0), - last = this.first + this.size - 1; - makeChange( - this, - { - from: top, - to: Pos(last, getLine(this, last).text.length), - text: this.splitLines(code), - origin: 'setValue', - full: true, - }, - true, - ); - if (this.cm) { - scrollToCoords(this.cm, 0, 0); - } + setValue: docMethodOp(function(code) { + var top = Pos(this.first, 0), last = this.first + this.size - 1; + makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length), + text: this.splitLines(code), origin: "setValue", full: true}, true); + if (this.cm) { scrollToCoords(this.cm, 0, 0); } setSelection(this, simpleSelection(top), sel_dontScroll); }), - replaceRange: function (code, from, to, origin) { + replaceRange: function(code, from, to, origin) { from = clipPos(this, from); to = to ? clipPos(this, to) : from; replaceRange(this, code, from, to, origin); }, - getRange: function (from, to, lineSep) { + getRange: function(from, to, lineSep) { var lines = getBetween(this, clipPos(this, from), clipPos(this, to)); - if (lineSep === false) { - return lines; - } - return lines.join(lineSep || this.lineSeparator()); + if (lineSep === false) { return lines } + if (lineSep === '') { return lines.join('') } + return lines.join(lineSep || this.lineSeparator()) }, - getLine: function (line) { - var l = this.getLineHandle(line); - return l && l.text; - }, + getLine: function(line) {var l = this.getLineHandle(line); return l && l.text}, - getLineHandle: function (line) { - if (isLine(this, line)) { - return getLine(this, line); - } - }, - getLineNumber: function (line) { - return lineNo(line); - }, + getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }}, + getLineNumber: function(line) {return lineNo(line)}, - getLineHandleVisualStart: function (line) { - if (typeof line == 'number') { - line = getLine(this, line); - } - return visualLine(line); + getLineHandleVisualStart: function(line) { + if (typeof line == "number") { line = getLine(this, line); } + return visualLine(line) }, - lineCount: function () { - return this.size; - }, - firstLine: function () { - return this.first; - }, - lastLine: function () { - return this.first + this.size - 1; - }, + lineCount: function() {return this.size}, + firstLine: function() {return this.first}, + lastLine: function() {return this.first + this.size - 1}, - clipPos: function (pos) { - return clipPos(this, pos); - }, + clipPos: function(pos) {return clipPos(this, pos)}, - getCursor: function (start) { - var range$$1 = this.sel.primary(), - pos; - if (start == null || start == 'head') { - pos = range$$1.head; - } else if (start == 'anchor') { - pos = range$$1.anchor; - } else if (start == 'end' || start == 'to' || start === false) { - pos = range$$1.to(); - } else { - pos = range$$1.from(); - } - return pos; - }, - listSelections: function () { - return this.sel.ranges; - }, - somethingSelected: function () { - return this.sel.somethingSelected(); + getCursor: function(start) { + var range = this.sel.primary(), pos; + if (start == null || start == "head") { pos = range.head; } + else if (start == "anchor") { pos = range.anchor; } + else if (start == "end" || start == "to" || start === false) { pos = range.to(); } + else { pos = range.from(); } + return pos }, + listSelections: function() { return this.sel.ranges }, + somethingSelected: function() {return this.sel.somethingSelected()}, - setCursor: docMethodOp(function (line, ch, options) { - setSimpleSelection( - this, - clipPos(this, typeof line == 'number' ? Pos(line, ch || 0) : line), - null, - options, - ); + setCursor: docMethodOp(function(line, ch, options) { + setSimpleSelection(this, clipPos(this, typeof line == "number" ? Pos(line, ch || 0) : line), null, options); }), - setSelection: docMethodOp(function (anchor, head, options) { - setSimpleSelection( - this, - clipPos(this, anchor), - clipPos(this, head || anchor), - options, - ); + setSelection: docMethodOp(function(anchor, head, options) { + setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options); }), - extendSelection: docMethodOp(function (head, other, options) { - extendSelection( - this, - clipPos(this, head), - other && clipPos(this, other), - options, - ); + extendSelection: docMethodOp(function(head, other, options) { + extendSelection(this, clipPos(this, head), other && clipPos(this, other), options); }), - extendSelections: docMethodOp(function (heads, options) { + extendSelections: docMethodOp(function(heads, options) { extendSelections(this, clipPosArray(this, heads), options); }), - extendSelectionsBy: docMethodOp(function (f, options) { + extendSelectionsBy: docMethodOp(function(f, options) { var heads = map(this.sel.ranges, f); extendSelections(this, clipPosArray(this, heads), options); }), - setSelections: docMethodOp(function (ranges, primary, options) { - var this$1 = this; - - if (!ranges.length) { - return; - } + setSelections: docMethodOp(function(ranges, primary, options) { + if (!ranges.length) { return } var out = []; - for (var i = 0; i < ranges.length; i++) { - out[i] = new Range( - clipPos(this$1, ranges[i].anchor), - clipPos(this$1, ranges[i].head), - ); - } - if (primary == null) { - primary = Math.min(ranges.length - 1, this.sel.primIndex); - } + for (var i = 0; i < ranges.length; i++) + { out[i] = new Range(clipPos(this, ranges[i].anchor), + clipPos(this, ranges[i].head || ranges[i].anchor)); } + if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); } setSelection(this, normalizeSelection(this.cm, out, primary), options); }), - addSelection: docMethodOp(function (anchor, head, options) { + addSelection: docMethodOp(function(anchor, head, options) { var ranges = this.sel.ranges.slice(0); - ranges.push( - new Range(clipPos(this, anchor), clipPos(this, head || anchor)), - ); - setSelection( - this, - normalizeSelection(this.cm, ranges, ranges.length - 1), - options, - ); + ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor))); + setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options); }), - getSelection: function (lineSep) { - var this$1 = this; - - var ranges = this.sel.ranges, - lines; + getSelection: function(lineSep) { + var ranges = this.sel.ranges, lines; for (var i = 0; i < ranges.length; i++) { - var sel = getBetween(this$1, ranges[i].from(), ranges[i].to()); + var sel = getBetween(this, ranges[i].from(), ranges[i].to()); lines = lines ? lines.concat(sel) : sel; } - if (lineSep === false) { - return lines; - } else { - return lines.join(lineSep || this.lineSeparator()); - } + if (lineSep === false) { return lines } + else { return lines.join(lineSep || this.lineSeparator()) } }, - getSelections: function (lineSep) { - var this$1 = this; - - var parts = [], - ranges = this.sel.ranges; + getSelections: function(lineSep) { + var parts = [], ranges = this.sel.ranges; for (var i = 0; i < ranges.length; i++) { - var sel = getBetween(this$1, ranges[i].from(), ranges[i].to()); - if (lineSep !== false) { - sel = sel.join(lineSep || this$1.lineSeparator()); - } + var sel = getBetween(this, ranges[i].from(), ranges[i].to()); + if (lineSep !== false) { sel = sel.join(lineSep || this.lineSeparator()); } parts[i] = sel; } - return parts; + return parts }, - replaceSelection: function (code, collapse, origin) { + replaceSelection: function(code, collapse, origin) { var dup = []; - for (var i = 0; i < this.sel.ranges.length; i++) { - dup[i] = code; - } - this.replaceSelections(dup, collapse, origin || '+input'); + for (var i = 0; i < this.sel.ranges.length; i++) + { dup[i] = code; } + this.replaceSelections(dup, collapse, origin || "+input"); }, - replaceSelections: docMethodOp(function (code, collapse, origin) { - var this$1 = this; - - var changes = [], - sel = this.sel; + replaceSelections: docMethodOp(function(code, collapse, origin) { + var changes = [], sel = this.sel; for (var i = 0; i < sel.ranges.length; i++) { - var range$$1 = sel.ranges[i]; - changes[i] = { - from: range$$1.from(), - to: range$$1.to(), - text: this$1.splitLines(code[i]), - origin: origin, - }; - } - var newSel = - collapse && - collapse != 'end' && - computeReplacedSel(this, changes, collapse); - for (var i$1 = changes.length - 1; i$1 >= 0; i$1--) { - makeChange(this$1, changes[i$1]); - } - if (newSel) { - setSelectionReplaceHistory(this, newSel); - } else if (this.cm) { - ensureCursorVisible(this.cm); - } - }), - undo: docMethodOp(function () { - makeChangeFromHistory(this, 'undo'); - }), - redo: docMethodOp(function () { - makeChangeFromHistory(this, 'redo'); - }), - undoSelection: docMethodOp(function () { - makeChangeFromHistory(this, 'undo', true); + var range = sel.ranges[i]; + changes[i] = {from: range.from(), to: range.to(), text: this.splitLines(code[i]), origin: origin}; + } + var newSel = collapse && collapse != "end" && computeReplacedSel(this, changes, collapse); + for (var i$1 = changes.length - 1; i$1 >= 0; i$1--) + { makeChange(this, changes[i$1]); } + if (newSel) { setSelectionReplaceHistory(this, newSel); } + else if (this.cm) { ensureCursorVisible(this.cm); } }), - redoSelection: docMethodOp(function () { - makeChangeFromHistory(this, 'redo', true); - }), - - setExtending: function (val) { - this.extend = val; - }, - getExtending: function () { - return this.extend; - }, - - historySize: function () { - var hist = this.history, - done = 0, - undone = 0; - for (var i = 0; i < hist.done.length; i++) { - if (!hist.done[i].ranges) { - ++done; - } - } - for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { - if (!hist.undone[i$1].ranges) { - ++undone; - } - } - return { undo: done, redo: undone }; + undo: docMethodOp(function() {makeChangeFromHistory(this, "undo");}), + redo: docMethodOp(function() {makeChangeFromHistory(this, "redo");}), + undoSelection: docMethodOp(function() {makeChangeFromHistory(this, "undo", true);}), + redoSelection: docMethodOp(function() {makeChangeFromHistory(this, "redo", true);}), + + setExtending: function(val) {this.extend = val;}, + getExtending: function() {return this.extend}, + + historySize: function() { + var hist = this.history, done = 0, undone = 0; + for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done; } } + for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone; } } + return {undo: done, redo: undone} }, - clearHistory: function () { + clearHistory: function() { var this$1 = this; - this.history = new History(this.history.maxGeneration); - linkedDocs( - this, - function (doc) { - return (doc.history = this$1.history); - }, - true, - ); + this.history = new History(this.history); + linkedDocs(this, function (doc) { return doc.history = this$1.history; }, true); }, - markClean: function () { + markClean: function() { this.cleanGeneration = this.changeGeneration(true); }, - changeGeneration: function (forceSplit) { - if (forceSplit) { - this.history.lastOp = - this.history.lastSelOp = - this.history.lastOrigin = - null; - } - return this.history.generation; + changeGeneration: function(forceSplit) { + if (forceSplit) + { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; } + return this.history.generation }, isClean: function (gen) { - return this.history.generation == (gen || this.cleanGeneration); + return this.history.generation == (gen || this.cleanGeneration) }, - getHistory: function () { - return { - done: copyHistoryArray(this.history.done), - undone: copyHistoryArray(this.history.undone), - }; + getHistory: function() { + return {done: copyHistoryArray(this.history.done), + undone: copyHistoryArray(this.history.undone)} }, - setHistory: function (histData) { - var hist = (this.history = new History(this.history.maxGeneration)); + setHistory: function(histData) { + var hist = this.history = new History(this.history); hist.done = copyHistoryArray(histData.done.slice(0), null, true); hist.undone = copyHistoryArray(histData.undone.slice(0), null, true); }, - setGutterMarker: docMethodOp(function (line, gutterID, value) { - return changeLine(this, line, 'gutter', function (line) { + setGutterMarker: docMethodOp(function(line, gutterID, value) { + return changeLine(this, line, "gutter", function (line) { var markers = line.gutterMarkers || (line.gutterMarkers = {}); markers[gutterID] = value; - if (!value && isEmpty(markers)) { - line.gutterMarkers = null; - } - return true; - }); + if (!value && isEmpty(markers)) { line.gutterMarkers = null; } + return true + }) }), - clearGutter: docMethodOp(function (gutterID) { + clearGutter: docMethodOp(function(gutterID) { var this$1 = this; this.iter(function (line) { if (line.gutterMarkers && line.gutterMarkers[gutterID]) { - changeLine(this$1, line, 'gutter', function () { + changeLine(this$1, line, "gutter", function () { line.gutterMarkers[gutterID] = null; - if (isEmpty(line.gutterMarkers)) { - line.gutterMarkers = null; - } - return true; + if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null; } + return true }); } }); }), - lineInfo: function (line) { + lineInfo: function(line) { var n; - if (typeof line == 'number') { - if (!isLine(this, line)) { - return null; - } + if (typeof line == "number") { + if (!isLine(this, line)) { return null } n = line; line = getLine(this, line); - if (!line) { - return null; - } + if (!line) { return null } } else { n = lineNo(line); - if (n == null) { - return null; - } + if (n == null) { return null } } - return { - line: n, - handle: line, - text: line.text, - gutterMarkers: line.gutterMarkers, - textClass: line.textClass, - bgClass: line.bgClass, - wrapClass: line.wrapClass, - widgets: line.widgets, - }; + return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers, + textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass, + widgets: line.widgets} }, - addLineClass: docMethodOp(function (handle, where, cls) { - return changeLine( - this, - handle, - where == 'gutter' ? 'gutter' : 'class', - function (line) { - var prop = - where == 'text' - ? 'textClass' - : where == 'background' - ? 'bgClass' - : where == 'gutter' - ? 'gutterClass' - : 'wrapClass'; - if (!line[prop]) { - line[prop] = cls; - } else if (classTest(cls).test(line[prop])) { - return false; - } else { - line[prop] += ' ' + cls; - } - return true; - }, - ); + addLineClass: docMethodOp(function(handle, where, cls) { + return changeLine(this, handle, where == "gutter" ? "gutter" : "class", function (line) { + var prop = where == "text" ? "textClass" + : where == "background" ? "bgClass" + : where == "gutter" ? "gutterClass" : "wrapClass"; + if (!line[prop]) { line[prop] = cls; } + else if (classTest(cls).test(line[prop])) { return false } + else { line[prop] += " " + cls; } + return true + }) }), - removeLineClass: docMethodOp(function (handle, where, cls) { - return changeLine( - this, - handle, - where == 'gutter' ? 'gutter' : 'class', - function (line) { - var prop = - where == 'text' - ? 'textClass' - : where == 'background' - ? 'bgClass' - : where == 'gutter' - ? 'gutterClass' - : 'wrapClass'; - var cur = line[prop]; - if (!cur) { - return false; - } else if (cls == null) { - line[prop] = null; - } else { - var found = cur.match(classTest(cls)); - if (!found) { - return false; - } - var end = found.index + found[0].length; - line[prop] = - cur.slice(0, found.index) + - (!found.index || end == cur.length ? '' : ' ') + - cur.slice(end) || null; - } - return true; - }, - ); + removeLineClass: docMethodOp(function(handle, where, cls) { + return changeLine(this, handle, where == "gutter" ? "gutter" : "class", function (line) { + var prop = where == "text" ? "textClass" + : where == "background" ? "bgClass" + : where == "gutter" ? "gutterClass" : "wrapClass"; + var cur = line[prop]; + if (!cur) { return false } + else if (cls == null) { line[prop] = null; } + else { + var found = cur.match(classTest(cls)); + if (!found) { return false } + var end = found.index + found[0].length; + line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? "" : " ") + cur.slice(end) || null; + } + return true + }) }), - addLineWidget: docMethodOp(function (handle, node, options) { - return addLineWidget(this, handle, node, options); + addLineWidget: docMethodOp(function(handle, node, options) { + return addLineWidget(this, handle, node, options) }), - removeLineWidget: function (widget) { - widget.clear(); - }, + removeLineWidget: function(widget) { widget.clear(); }, - markText: function (from, to, options) { - return markText( - this, - clipPos(this, from), - clipPos(this, to), - options, - (options && options.type) || 'range', - ); + markText: function(from, to, options) { + return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || "range") }, - setBookmark: function (pos, options) { - var realOpts = { - replacedWith: - options && (options.nodeType == null ? options.widget : options), - insertLeft: options && options.insertLeft, - clearWhenEmpty: false, - shared: options && options.shared, - handleMouseEvents: options && options.handleMouseEvents, - }; + setBookmark: function(pos, options) { + var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options), + insertLeft: options && options.insertLeft, + clearWhenEmpty: false, shared: options && options.shared, + handleMouseEvents: options && options.handleMouseEvents}; pos = clipPos(this, pos); - return markText(this, pos, pos, realOpts, 'bookmark'); + return markText(this, pos, pos, realOpts, "bookmark") }, - findMarksAt: function (pos) { + findMarksAt: function(pos) { pos = clipPos(this, pos); - var markers = [], - spans = getLine(this, pos.line).markedSpans; - if (spans) { - for (var i = 0; i < spans.length; ++i) { - var span = spans[i]; - if ( - (span.from == null || span.from <= pos.ch) && - (span.to == null || span.to >= pos.ch) - ) { - markers.push(span.marker.parent || span.marker); - } - } - } - return markers; + var markers = [], spans = getLine(this, pos.line).markedSpans; + if (spans) { for (var i = 0; i < spans.length; ++i) { + var span = spans[i]; + if ((span.from == null || span.from <= pos.ch) && + (span.to == null || span.to >= pos.ch)) + { markers.push(span.marker.parent || span.marker); } + } } + return markers }, - findMarks: function (from, to, filter) { - from = clipPos(this, from); - to = clipPos(this, to); - var found = [], - lineNo$$1 = from.line; + findMarks: function(from, to, filter) { + from = clipPos(this, from); to = clipPos(this, to); + var found = [], lineNo = from.line; this.iter(from.line, to.line + 1, function (line) { var spans = line.markedSpans; - if (spans) { - for (var i = 0; i < spans.length; i++) { - var span = spans[i]; - if ( - !( - (span.to != null && - lineNo$$1 == from.line && - from.ch >= span.to) || - (span.from == null && lineNo$$1 != from.line) || - (span.from != null && - lineNo$$1 == to.line && - span.from >= to.ch) - ) && - (!filter || filter(span.marker)) - ) { - found.push(span.marker.parent || span.marker); - } - } - } - ++lineNo$$1; + if (spans) { for (var i = 0; i < spans.length; i++) { + var span = spans[i]; + if (!(span.to != null && lineNo == from.line && from.ch >= span.to || + span.from == null && lineNo != from.line || + span.from != null && lineNo == to.line && span.from >= to.ch) && + (!filter || filter(span.marker))) + { found.push(span.marker.parent || span.marker); } + } } + ++lineNo; }); - return found; + return found }, - getAllMarks: function () { + getAllMarks: function() { var markers = []; this.iter(function (line) { var sps = line.markedSpans; - if (sps) { - for (var i = 0; i < sps.length; ++i) { - if (sps[i].from != null) { - markers.push(sps[i].marker); - } - } - } + if (sps) { for (var i = 0; i < sps.length; ++i) + { if (sps[i].from != null) { markers.push(sps[i].marker); } } } }); - return markers; + return markers }, - posFromIndex: function (off) { - var ch, - lineNo$$1 = this.first, - sepSize = this.lineSeparator().length; + posFromIndex: function(off) { + var ch, lineNo = this.first, sepSize = this.lineSeparator().length; this.iter(function (line) { var sz = line.text.length + sepSize; - if (sz > off) { - ch = off; - return true; - } + if (sz > off) { ch = off; return true } off -= sz; - ++lineNo$$1; + ++lineNo; }); - return clipPos(this, Pos(lineNo$$1, ch)); + return clipPos(this, Pos(lineNo, ch)) }, indexFromPos: function (coords) { coords = clipPos(this, coords); var index = coords.ch; - if (coords.line < this.first || coords.ch < 0) { - return 0; - } + if (coords.line < this.first || coords.ch < 0) { return 0 } var sepSize = this.lineSeparator().length; - this.iter(this.first, coords.line, function (line) { - // iter aborts when callback returns a truthy value + this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value index += line.text.length + sepSize; }); - return index; + return index }, - copy: function (copyHistory) { - var doc = new Doc( - getLines(this, this.first, this.first + this.size), - this.modeOption, - this.first, - this.lineSep, - this.direction, - ); - doc.scrollTop = this.scrollTop; - doc.scrollLeft = this.scrollLeft; + copy: function(copyHistory) { + var doc = new Doc(getLines(this, this.first, this.first + this.size), + this.modeOption, this.first, this.lineSep, this.direction); + doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft; doc.sel = this.sel; doc.extend = false; if (copyHistory) { doc.history.undoDepth = this.history.undoDepth; doc.setHistory(this.getHistory()); } - return doc; + return doc }, - linkedDoc: function (options) { - if (!options) { - options = {}; - } - var from = this.first, - to = this.first + this.size; - if (options.from != null && options.from > from) { - from = options.from; - } - if (options.to != null && options.to < to) { - to = options.to; - } - var copy = new Doc( - getLines(this, from, to), - options.mode || this.modeOption, - from, - this.lineSep, - this.direction, - ); - if (options.sharedHist) { - copy.history = this.history; - } - (this.linked || (this.linked = [])).push({ - doc: copy, - sharedHist: options.sharedHist, - }); - copy.linked = [ - { doc: this, isParent: true, sharedHist: options.sharedHist }, - ]; + linkedDoc: function(options) { + if (!options) { options = {}; } + var from = this.first, to = this.first + this.size; + if (options.from != null && options.from > from) { from = options.from; } + if (options.to != null && options.to < to) { to = options.to; } + var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction); + if (options.sharedHist) { copy.history = this.history + ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist}); + copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}]; copySharedMarkers(copy, findSharedMarkers(this)); - return copy; + return copy }, - unlinkDoc: function (other) { - var this$1 = this; - - if (other instanceof CodeMirror) { - other = other.doc; - } - if (this.linked) { - for (var i = 0; i < this.linked.length; ++i) { - var link = this$1.linked[i]; - if (link.doc != other) { - continue; - } - this$1.linked.splice(i, 1); - other.unlinkDoc(this$1); - detachSharedMarkers(findSharedMarkers(this$1)); - break; - } - } + unlinkDoc: function(other) { + if (other instanceof CodeMirror) { other = other.doc; } + if (this.linked) { for (var i = 0; i < this.linked.length; ++i) { + var link = this.linked[i]; + if (link.doc != other) { continue } + this.linked.splice(i, 1); + other.unlinkDoc(this); + detachSharedMarkers(findSharedMarkers(this)); + break + } } // If the histories were shared, split them again if (other.history == this.history) { var splitIds = [other.id]; - linkedDocs( - other, - function (doc) { - return splitIds.push(doc.id); - }, - true, - ); + linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true); other.history = new History(null); other.history.done = copyHistoryArray(this.history.done, splitIds); other.history.undone = copyHistoryArray(this.history.undone, splitIds); } }, - iterLinkedDocs: function (f) { - linkedDocs(this, f); - }, + iterLinkedDocs: function(f) {linkedDocs(this, f);}, - getMode: function () { - return this.mode; - }, - getEditor: function () { - return this.cm; - }, + getMode: function() {return this.mode}, + getEditor: function() {return this.cm}, - splitLines: function (str) { - if (this.lineSep) { - return str.split(this.lineSep); - } - return splitLinesAuto(str); - }, - lineSeparator: function () { - return this.lineSep || '\n'; + splitLines: function(str) { + if (this.lineSep) { return str.split(this.lineSep) } + return splitLinesAuto(str) }, + lineSeparator: function() { return this.lineSep || "\n" }, setDirection: docMethodOp(function (dir) { - if (dir != 'rtl') { - dir = 'ltr'; - } - if (dir == this.direction) { - return; - } + if (dir != "rtl") { dir = "ltr"; } + if (dir == this.direction) { return } this.direction = dir; - this.iter(function (line) { - return (line.order = null); - }); - if (this.cm) { - directionChanged(this.cm); - } - }), + this.iter(function (line) { return line.order = null; }); + if (this.cm) { directionChanged(this.cm); } + }) }); // Public alias. @@ -9692,129 +6564,86 @@ function onDrop(e) { var cm = this; clearDragCursor(cm); - if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { - return; - } + if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) + { return } e_preventDefault(e); - if (ie) { - lastDrop = +new Date(); - } - var pos = posFromMouse(cm, e, true), - files = e.dataTransfer.files; - if (!pos || cm.isReadOnly()) { - return; - } + if (ie) { lastDrop = +new Date; } + var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files; + if (!pos || cm.isReadOnly()) { return } // Might be a file drop, in which case we simply extract the text // and insert it. if (files && files.length && window.FileReader && window.File) { - var n = files.length, - text = Array(n), - read = 0; + var n = files.length, text = Array(n), read = 0; var markAsReadAndPasteIfAllFilesAreRead = function () { if (++read == n) { operation(cm, function () { pos = clipPos(cm.doc, pos); - var change = { - from: pos, - to: pos, - text: cm.doc.splitLines( - text - .filter(function (t) { - return t != null; - }) - .join(cm.doc.lineSeparator()), - ), - origin: 'paste', - }; + var change = {from: pos, to: pos, + text: cm.doc.splitLines( + text.filter(function (t) { return t != null; }).join(cm.doc.lineSeparator())), + origin: "paste"}; makeChange(cm.doc, change); - setSelectionReplaceHistory( - cm.doc, - simpleSelection(pos, changeEnd(change)), - ); + setSelectionReplaceHistory(cm.doc, simpleSelection(clipPos(cm.doc, pos), clipPos(cm.doc, changeEnd(change)))); })(); } }; var readTextFromFile = function (file, i) { - if ( - cm.options.allowDropFileTypes && - indexOf(cm.options.allowDropFileTypes, file.type) == -1 - ) { + if (cm.options.allowDropFileTypes && + indexOf(cm.options.allowDropFileTypes, file.type) == -1) { markAsReadAndPasteIfAllFilesAreRead(); - return; + return } - var reader = new FileReader(); - reader.onerror = function () { - return markAsReadAndPasteIfAllFilesAreRead(); - }; + var reader = new FileReader; + reader.onerror = function () { return markAsReadAndPasteIfAllFilesAreRead(); }; reader.onload = function () { var content = reader.result; if (/[\x00-\x08\x0e-\x1f]{2}/.test(content)) { markAsReadAndPasteIfAllFilesAreRead(); - return; + return } text[i] = content; markAsReadAndPasteIfAllFilesAreRead(); }; reader.readAsText(file); }; - for (var i = 0; i < files.length; i++) { - readTextFromFile(files[i], i); - } - } else { - // Normal drop + for (var i = 0; i < files.length; i++) { readTextFromFile(files[i], i); } + } else { // Normal drop // Don't do a replace if the drop happened inside of the selected text. if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) { cm.state.draggingText(e); // Ensure the editor is re-focused - setTimeout(function () { - return cm.display.input.focus(); - }, 20); - return; + setTimeout(function () { return cm.display.input.focus(); }, 20); + return } try { - var text$1 = e.dataTransfer.getData('Text'); + var text$1 = e.dataTransfer.getData("Text"); if (text$1) { var selected; - if (cm.state.draggingText && !cm.state.draggingText.copy) { - selected = cm.listSelections(); - } + if (cm.state.draggingText && !cm.state.draggingText.copy) + { selected = cm.listSelections(); } setSelectionNoUndo(cm.doc, simpleSelection(pos, pos)); - if (selected) { - for (var i$1 = 0; i$1 < selected.length; ++i$1) { - replaceRange( - cm.doc, - '', - selected[i$1].anchor, - selected[i$1].head, - 'drag', - ); - } - } - cm.replaceSelection(text$1, 'around', 'paste'); + if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1) + { replaceRange(cm.doc, "", selected[i$1].anchor, selected[i$1].head, "drag"); } } + cm.replaceSelection(text$1, "around", "paste"); cm.display.input.focus(); } - } catch (e) {} + } + catch(e$1){} } } function onDragStart(cm, e) { - if (ie && (!cm.state.draggingText || +new Date() - lastDrop < 100)) { - e_stop(e); - return; - } - if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { - return; - } + if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return } + if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return } - e.dataTransfer.setData('Text', cm.getSelection()); - e.dataTransfer.effectAllowed = 'copyMove'; + e.dataTransfer.setData("Text", cm.getSelection()); + e.dataTransfer.effectAllowed = "copyMove"; // Use dummy image instead of default browsers image. // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there. if (e.dataTransfer.setDragImage && !safari) { - var img = elt('img', null, null, 'position: fixed; left: 0; top: 0;'); - img.src = - 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=='; + var img = elt("img", null, null, "position: fixed; left: 0; top: 0;"); + img.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="; if (presto) { img.width = img.height = 1; cm.display.wrapper.appendChild(img); @@ -9822,29 +6651,18 @@ img._top = img.offsetTop; } e.dataTransfer.setDragImage(img, 0, 0); - if (presto) { - img.parentNode.removeChild(img); - } + if (presto) { img.parentNode.removeChild(img); } } } function onDragOver(cm, e) { var pos = posFromMouse(cm, e); - if (!pos) { - return; - } + if (!pos) { return } var frag = document.createDocumentFragment(); drawSelectionCursor(cm, pos, frag); if (!cm.display.dragCursor) { - cm.display.dragCursor = elt( - 'div', - null, - 'CodeMirror-cursors CodeMirror-dragcursors', - ); - cm.display.lineSpace.insertBefore( - cm.display.dragCursor, - cm.display.cursorDiv, - ); + cm.display.dragCursor = elt("div", null, "CodeMirror-cursors CodeMirror-dragcursors"); + cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv); } removeChildrenAndAdd(cm.display.dragCursor, frag); } @@ -9861,49 +6679,34 @@ // garbage collected. function forEachCodeMirror(f) { - if (!document.getElementsByClassName) { - return; - } - var byClass = document.getElementsByClassName('CodeMirror'), - editors = []; + if (!document.getElementsByClassName) { return } + var byClass = document.getElementsByClassName("CodeMirror"), editors = []; for (var i = 0; i < byClass.length; i++) { var cm = byClass[i].CodeMirror; - if (cm) { - editors.push(cm); - } - } - if (editors.length) { - editors[0].operation(function () { - for (var i = 0; i < editors.length; i++) { - f(editors[i]); - } - }); + if (cm) { editors.push(cm); } } + if (editors.length) { editors[0].operation(function () { + for (var i = 0; i < editors.length; i++) { f(editors[i]); } + }); } } var globalsRegistered = false; function ensureGlobalHandlers() { - if (globalsRegistered) { - return; - } + if (globalsRegistered) { return } registerGlobalHandlers(); globalsRegistered = true; } function registerGlobalHandlers() { // When the window resizes, we need to refresh active editors. var resizeTimer; - on(window, 'resize', function () { - if (resizeTimer == null) { - resizeTimer = setTimeout(function () { - resizeTimer = null; - forEachCodeMirror(onResize); - }, 100); - } + on(window, "resize", function () { + if (resizeTimer == null) { resizeTimer = setTimeout(function () { + resizeTimer = null; + forEachCodeMirror(onResize); + }, 100); } }); // When the window loses focus, we want to show the editor as blurred - on(window, 'blur', function () { - return forEachCodeMirror(onBlur); - }); + on(window, "blur", function () { return forEachCodeMirror(onBlur); }); } // Called when the window resizes function onResize(cm) { @@ -9915,182 +6718,64 @@ } var keyNames = { - 3: 'Pause', - 8: 'Backspace', - 9: 'Tab', - 13: 'Enter', - 16: 'Shift', - 17: 'Ctrl', - 18: 'Alt', - 19: 'Pause', - 20: 'CapsLock', - 27: 'Esc', - 32: 'Space', - 33: 'PageUp', - 34: 'PageDown', - 35: 'End', - 36: 'Home', - 37: 'Left', - 38: 'Up', - 39: 'Right', - 40: 'Down', - 44: 'PrintScrn', - 45: 'Insert', - 46: 'Delete', - 59: ';', - 61: '=', - 91: 'Mod', - 92: 'Mod', - 93: 'Mod', - 106: '*', - 107: '=', - 109: '-', - 110: '.', - 111: '/', - 145: 'ScrollLock', - 173: '-', - 186: ';', - 187: '=', - 188: ',', - 189: '-', - 190: '.', - 191: '/', - 192: '`', - 219: '[', - 220: '\\', - 221: ']', - 222: "'", - 63232: 'Up', - 63233: 'Down', - 63234: 'Left', - 63235: 'Right', - 63272: 'Delete', - 63273: 'Home', - 63275: 'End', - 63276: 'PageUp', - 63277: 'PageDown', - 63302: 'Insert', + 3: "Pause", 8: "Backspace", 9: "Tab", 13: "Enter", 16: "Shift", 17: "Ctrl", 18: "Alt", + 19: "Pause", 20: "CapsLock", 27: "Esc", 32: "Space", 33: "PageUp", 34: "PageDown", 35: "End", + 36: "Home", 37: "Left", 38: "Up", 39: "Right", 40: "Down", 44: "PrintScrn", 45: "Insert", + 46: "Delete", 59: ";", 61: "=", 91: "Mod", 92: "Mod", 93: "Mod", + 106: "*", 107: "=", 109: "-", 110: ".", 111: "/", 145: "ScrollLock", + 173: "-", 186: ";", 187: "=", 188: ",", 189: "-", 190: ".", 191: "/", 192: "`", 219: "[", 220: "\\", + 221: "]", 222: "'", 224: "Mod", 63232: "Up", 63233: "Down", 63234: "Left", 63235: "Right", 63272: "Delete", + 63273: "Home", 63275: "End", 63276: "PageUp", 63277: "PageDown", 63302: "Insert" }; // Number keys - for (var i = 0; i < 10; i++) { - keyNames[i + 48] = keyNames[i + 96] = String(i); - } + for (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i); } // Alphabetic keys - for (var i$1 = 65; i$1 <= 90; i$1++) { - keyNames[i$1] = String.fromCharCode(i$1); - } + for (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1); } // Function keys - for (var i$2 = 1; i$2 <= 12; i$2++) { - keyNames[i$2 + 111] = keyNames[i$2 + 63235] = 'F' + i$2; - } + for (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = "F" + i$2; } var keyMap = {}; keyMap.basic = { - Left: 'goCharLeft', - Right: 'goCharRight', - Up: 'goLineUp', - Down: 'goLineDown', - End: 'goLineEnd', - Home: 'goLineStartSmart', - PageUp: 'goPageUp', - PageDown: 'goPageDown', - Delete: 'delCharAfter', - Backspace: 'delCharBefore', - 'Shift-Backspace': 'delCharBefore', - Tab: 'defaultTab', - 'Shift-Tab': 'indentAuto', - Enter: 'newlineAndIndent', - Insert: 'toggleOverwrite', - Esc: 'singleSelection', + "Left": "goCharLeft", "Right": "goCharRight", "Up": "goLineUp", "Down": "goLineDown", + "End": "goLineEnd", "Home": "goLineStartSmart", "PageUp": "goPageUp", "PageDown": "goPageDown", + "Delete": "delCharAfter", "Backspace": "delCharBefore", "Shift-Backspace": "delCharBefore", + "Tab": "defaultTab", "Shift-Tab": "indentAuto", + "Enter": "newlineAndIndent", "Insert": "toggleOverwrite", + "Esc": "singleSelection" }; // Note that the save and find-related commands aren't defined by // default. User code or addons can define them. Unknown commands // are simply ignored. keyMap.pcDefault = { - 'Ctrl-A': 'selectAll', - 'Ctrl-D': 'deleteLine', - 'Ctrl-Z': 'undo', - 'Shift-Ctrl-Z': 'redo', - 'Ctrl-Y': 'redo', - 'Ctrl-Home': 'goDocStart', - 'Ctrl-End': 'goDocEnd', - 'Ctrl-Up': 'goLineUp', - 'Ctrl-Down': 'goLineDown', - 'Ctrl-Left': 'goGroupLeft', - 'Ctrl-Right': 'goGroupRight', - 'Alt-Left': 'goLineStart', - 'Alt-Right': 'goLineEnd', - 'Ctrl-Backspace': 'delGroupBefore', - 'Ctrl-Delete': 'delGroupAfter', - 'Ctrl-S': 'save', - 'Ctrl-F': 'find', - 'Ctrl-G': 'findNext', - 'Shift-Ctrl-G': 'findPrev', - 'Shift-Ctrl-F': 'replace', - 'Shift-Ctrl-R': 'replaceAll', - 'Ctrl-[': 'indentLess', - 'Ctrl-]': 'indentMore', - 'Ctrl-U': 'undoSelection', - 'Shift-Ctrl-U': 'redoSelection', - 'Alt-U': 'redoSelection', - fallthrough: 'basic', + "Ctrl-A": "selectAll", "Ctrl-D": "deleteLine", "Ctrl-Z": "undo", "Shift-Ctrl-Z": "redo", "Ctrl-Y": "redo", + "Ctrl-Home": "goDocStart", "Ctrl-End": "goDocEnd", "Ctrl-Up": "goLineUp", "Ctrl-Down": "goLineDown", + "Ctrl-Left": "goGroupLeft", "Ctrl-Right": "goGroupRight", "Alt-Left": "goLineStart", "Alt-Right": "goLineEnd", + "Ctrl-Backspace": "delGroupBefore", "Ctrl-Delete": "delGroupAfter", "Ctrl-S": "save", "Ctrl-F": "find", + "Ctrl-G": "findNext", "Shift-Ctrl-G": "findPrev", "Shift-Ctrl-F": "replace", "Shift-Ctrl-R": "replaceAll", + "Ctrl-[": "indentLess", "Ctrl-]": "indentMore", + "Ctrl-U": "undoSelection", "Shift-Ctrl-U": "redoSelection", "Alt-U": "redoSelection", + "fallthrough": "basic" }; // Very basic readline/emacs-style bindings, which are standard on Mac. keyMap.emacsy = { - 'Ctrl-F': 'goCharRight', - 'Ctrl-B': 'goCharLeft', - 'Ctrl-P': 'goLineUp', - 'Ctrl-N': 'goLineDown', - 'Alt-F': 'goWordRight', - 'Alt-B': 'goWordLeft', - 'Ctrl-A': 'goLineStart', - 'Ctrl-E': 'goLineEnd', - 'Ctrl-V': 'goPageDown', - 'Shift-Ctrl-V': 'goPageUp', - 'Ctrl-D': 'delCharAfter', - 'Ctrl-H': 'delCharBefore', - 'Alt-D': 'delWordAfter', - 'Alt-Backspace': 'delWordBefore', - 'Ctrl-K': 'killLine', - 'Ctrl-T': 'transposeChars', - 'Ctrl-O': 'openLine', + "Ctrl-F": "goCharRight", "Ctrl-B": "goCharLeft", "Ctrl-P": "goLineUp", "Ctrl-N": "goLineDown", + "Ctrl-A": "goLineStart", "Ctrl-E": "goLineEnd", "Ctrl-V": "goPageDown", "Shift-Ctrl-V": "goPageUp", + "Ctrl-D": "delCharAfter", "Ctrl-H": "delCharBefore", "Alt-Backspace": "delWordBefore", "Ctrl-K": "killLine", + "Ctrl-T": "transposeChars", "Ctrl-O": "openLine" }; keyMap.macDefault = { - 'Cmd-A': 'selectAll', - 'Cmd-D': 'deleteLine', - 'Cmd-Z': 'undo', - 'Shift-Cmd-Z': 'redo', - 'Cmd-Y': 'redo', - 'Cmd-Home': 'goDocStart', - 'Cmd-Up': 'goDocStart', - 'Cmd-End': 'goDocEnd', - 'Cmd-Down': 'goDocEnd', - 'Alt-Left': 'goGroupLeft', - 'Alt-Right': 'goGroupRight', - 'Cmd-Left': 'goLineLeft', - 'Cmd-Right': 'goLineRight', - 'Alt-Backspace': 'delGroupBefore', - 'Ctrl-Alt-Backspace': 'delGroupAfter', - 'Alt-Delete': 'delGroupAfter', - 'Cmd-S': 'save', - 'Cmd-F': 'find', - 'Cmd-G': 'findNext', - 'Shift-Cmd-G': 'findPrev', - 'Cmd-Alt-F': 'replace', - 'Shift-Cmd-Alt-F': 'replaceAll', - 'Cmd-[': 'indentLess', - 'Cmd-]': 'indentMore', - 'Cmd-Backspace': 'delWrappedLineLeft', - 'Cmd-Delete': 'delWrappedLineRight', - 'Cmd-U': 'undoSelection', - 'Shift-Cmd-U': 'redoSelection', - 'Ctrl-Up': 'goDocStart', - 'Ctrl-Down': 'goDocEnd', - fallthrough: ['basic', 'emacsy'], + "Cmd-A": "selectAll", "Cmd-D": "deleteLine", "Cmd-Z": "undo", "Shift-Cmd-Z": "redo", "Cmd-Y": "redo", + "Cmd-Home": "goDocStart", "Cmd-Up": "goDocStart", "Cmd-End": "goDocEnd", "Cmd-Down": "goDocEnd", "Alt-Left": "goGroupLeft", + "Alt-Right": "goGroupRight", "Cmd-Left": "goLineLeft", "Cmd-Right": "goLineRight", "Alt-Backspace": "delGroupBefore", + "Ctrl-Alt-Backspace": "delGroupAfter", "Alt-Delete": "delGroupAfter", "Cmd-S": "save", "Cmd-F": "find", + "Cmd-G": "findNext", "Shift-Cmd-G": "findPrev", "Cmd-Alt-F": "replace", "Shift-Cmd-Alt-F": "replaceAll", + "Cmd-[": "indentLess", "Cmd-]": "indentMore", "Cmd-Backspace": "delWrappedLineLeft", "Cmd-Delete": "delWrappedLineRight", + "Cmd-U": "undoSelection", "Shift-Cmd-U": "redoSelection", "Ctrl-Up": "goDocStart", "Ctrl-Down": "goDocEnd", + "fallthrough": ["basic", "emacsy"] }; - keyMap['default'] = mac ? keyMap.macDefault : keyMap.pcDefault; + keyMap["default"] = mac ? keyMap.macDefault : keyMap.pcDefault; // KEYMAP DISPATCH @@ -10100,31 +6785,17 @@ var alt, ctrl, shift, cmd; for (var i = 0; i < parts.length - 1; i++) { var mod = parts[i]; - if (/^(cmd|meta|m)$/i.test(mod)) { - cmd = true; - } else if (/^a(lt)?$/i.test(mod)) { - alt = true; - } else if (/^(c|ctrl|control)$/i.test(mod)) { - ctrl = true; - } else if (/^s(hift)?$/i.test(mod)) { - shift = true; - } else { - throw new Error('Unrecognized modifier name: ' + mod); - } - } - if (alt) { - name = 'Alt-' + name; - } - if (ctrl) { - name = 'Ctrl-' + name; + if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true; } + else if (/^a(lt)?$/i.test(mod)) { alt = true; } + else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; } + else if (/^s(hift)?$/i.test(mod)) { shift = true; } + else { throw new Error("Unrecognized modifier name: " + mod) } } - if (cmd) { - name = 'Cmd-' + name; - } - if (shift) { - name = 'Shift-' + name; - } - return name; + if (alt) { name = "Alt-" + name; } + if (ctrl) { name = "Ctrl-" + name; } + if (cmd) { name = "Cmd-" + name; } + if (shift) { name = "Shift-" + name; } + return name } // This is a kludge to keep keymaps mostly working as raw objects @@ -10134,68 +6805,44 @@ // this. function normalizeKeyMap(keymap) { var copy = {}; - for (var keyname in keymap) { - if (keymap.hasOwnProperty(keyname)) { - var value = keymap[keyname]; - if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { - continue; - } - if (value == '...') { - delete keymap[keyname]; - continue; - } - - var keys = map(keyname.split(' '), normalizeKeyName); - for (var i = 0; i < keys.length; i++) { - var val = void 0, - name = void 0; - if (i == keys.length - 1) { - name = keys.join(' '); - val = value; - } else { - name = keys.slice(0, i + 1).join(' '); - val = '...'; - } - var prev = copy[name]; - if (!prev) { - copy[name] = val; - } else if (prev != val) { - throw new Error('Inconsistent bindings for ' + name); - } + for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) { + var value = keymap[keyname]; + if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue } + if (value == "...") { delete keymap[keyname]; continue } + + var keys = map(keyname.split(" "), normalizeKeyName); + for (var i = 0; i < keys.length; i++) { + var val = (void 0), name = (void 0); + if (i == keys.length - 1) { + name = keys.join(" "); + val = value; + } else { + name = keys.slice(0, i + 1).join(" "); + val = "..."; } - delete keymap[keyname]; + var prev = copy[name]; + if (!prev) { copy[name] = val; } + else if (prev != val) { throw new Error("Inconsistent bindings for " + name) } } - } - for (var prop in copy) { - keymap[prop] = copy[prop]; - } - return keymap; + delete keymap[keyname]; + } } + for (var prop in copy) { keymap[prop] = copy[prop]; } + return keymap } - function lookupKey(key, map$$1, handle, context) { - map$$1 = getKeyMap(map$$1); - var found = map$$1.call ? map$$1.call(key, context) : map$$1[key]; - if (found === false) { - return 'nothing'; - } - if (found === '...') { - return 'multi'; - } - if (found != null && handle(found)) { - return 'handled'; - } + function lookupKey(key, map, handle, context) { + map = getKeyMap(map); + var found = map.call ? map.call(key, context) : map[key]; + if (found === false) { return "nothing" } + if (found === "...") { return "multi" } + if (found != null && handle(found)) { return "handled" } - if (map$$1.fallthrough) { - if ( - Object.prototype.toString.call(map$$1.fallthrough) != '[object Array]' - ) { - return lookupKey(key, map$$1.fallthrough, handle, context); - } - for (var i = 0; i < map$$1.fallthrough.length; i++) { - var result = lookupKey(key, map$$1.fallthrough[i], handle, context); - if (result) { - return result; - } + if (map.fallthrough) { + if (Object.prototype.toString.call(map.fallthrough) != "[object Array]") + { return lookupKey(key, map.fallthrough, handle, context) } + for (var i = 0; i < map.fallthrough.length; i++) { + var result = lookupKey(key, map.fallthrough[i], handle, context); + if (result) { return result } } } } @@ -10203,53 +6850,38 @@ // Modifier key presses don't count as 'real' key presses for the // purpose of keymap fallthrough. function isModifierKey(value) { - var name = typeof value == 'string' ? value : keyNames[value.keyCode]; - return name == 'Ctrl' || name == 'Alt' || name == 'Shift' || name == 'Mod'; + var name = typeof value == "string" ? value : keyNames[value.keyCode]; + return name == "Ctrl" || name == "Alt" || name == "Shift" || name == "Mod" } function addModifierNames(name, event, noShift) { var base = name; - if (event.altKey && base != 'Alt') { - name = 'Alt-' + name; - } - if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != 'Ctrl') { - name = 'Ctrl-' + name; - } - if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != 'Cmd') { - name = 'Cmd-' + name; - } - if (!noShift && event.shiftKey && base != 'Shift') { - name = 'Shift-' + name; - } - return name; + if (event.altKey && base != "Alt") { name = "Alt-" + name; } + if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != "Ctrl") { name = "Ctrl-" + name; } + if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != "Mod") { name = "Cmd-" + name; } + if (!noShift && event.shiftKey && base != "Shift") { name = "Shift-" + name; } + return name } // Look up the name of a key as indicated by an event object. function keyName(event, noShift) { - if (presto && event.keyCode == 34 && event['char']) { - return false; - } + if (presto && event.keyCode == 34 && event["char"]) { return false } var name = keyNames[event.keyCode]; - if (name == null || event.altGraphKey) { - return false; - } + if (name == null || event.altGraphKey) { return false } // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause, // so we'll use event.code when available (Chrome 48+, FF 38+, Safari 10.1+) - if (event.keyCode == 3 && event.code) { - name = event.code; - } - return addModifierNames(name, event, noShift); + if (event.keyCode == 3 && event.code) { name = event.code; } + return addModifierNames(name, event, noShift) } function getKeyMap(val) { - return typeof val == 'string' ? keyMap[val] : val; + return typeof val == "string" ? keyMap[val] : val } // Helper for deleting text near the selection(s), used to implement // backspace, delete, and similar functionality. function deleteNearSelection(cm, compute) { - var ranges = cm.doc.sel.ranges, - kill = []; + var ranges = cm.doc.sel.ranges, kill = []; // Build up a set of ranges to kill first, merging overlapping // ranges. for (var i = 0; i < ranges.length; i++) { @@ -10258,42 +6890,37 @@ var replaced = kill.pop(); if (cmp(replaced.from, toKill.from) < 0) { toKill.from = replaced.from; - break; + break } } kill.push(toKill); } // Next, remove those actual ranges. runInOp(cm, function () { - for (var i = kill.length - 1; i >= 0; i--) { - replaceRange(cm.doc, '', kill[i].from, kill[i].to, '+delete'); - } + for (var i = kill.length - 1; i >= 0; i--) + { replaceRange(cm.doc, "", kill[i].from, kill[i].to, "+delete"); } ensureCursorVisible(cm); }); } function moveCharLogically(line, ch, dir) { var target = skipExtendingChars(line.text, ch + dir, dir); - return target < 0 || target > line.text.length ? null : target; + return target < 0 || target > line.text.length ? null : target } function moveLogically(line, start, dir) { var ch = moveCharLogically(line, start.ch, dir); - return ch == null - ? null - : new Pos(start.line, ch, dir < 0 ? 'after' : 'before'); + return ch == null ? null : new Pos(start.line, ch, dir < 0 ? "after" : "before") } function endOfLine(visually, cm, lineObj, lineNo, dir) { if (visually) { - if (cm.getOption('direction') == 'rtl') { - dir = -dir; - } + if (cm.doc.direction == "rtl") { dir = -dir; } var order = getOrder(lineObj, cm.doc.direction); if (order) { var part = dir < 0 ? lst(order) : order[0]; - var moveInStorageOrder = dir < 0 == (part.level == 1); - var sticky = moveInStorageOrder ? 'after' : 'before'; + var moveInStorageOrder = (dir < 0) == (part.level == 1); + var sticky = moveInStorageOrder ? "after" : "before"; var ch; // With a wrapped rtl chunk (possibly spanning multiple bidi parts), // it could be that the last bidi part is not on the last visual line, @@ -10301,84 +6928,52 @@ // Thus, in rtl, we are looking for the first (content-order) character // in the rtl chunk that is on the last line (that is, the same line // as the last (content-order) character). - if (part.level > 0 || cm.doc.direction == 'rtl') { + if (part.level > 0 || cm.doc.direction == "rtl") { var prep = prepareMeasureForLine(cm, lineObj); ch = dir < 0 ? lineObj.text.length - 1 : 0; var targetTop = measureCharPrepared(cm, prep, ch).top; - ch = findFirst( - function (ch) { - return measureCharPrepared(cm, prep, ch).top == targetTop; - }, - dir < 0 == (part.level == 1) ? part.from : part.to - 1, - ch, - ); - if (sticky == 'before') { - ch = moveCharLogically(lineObj, ch, 1); - } - } else { - ch = dir < 0 ? part.to : part.from; - } - return new Pos(lineNo, ch, sticky); + ch = findFirst(function (ch) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch); + if (sticky == "before") { ch = moveCharLogically(lineObj, ch, 1); } + } else { ch = dir < 0 ? part.to : part.from; } + return new Pos(lineNo, ch, sticky) } } - return new Pos( - lineNo, - dir < 0 ? lineObj.text.length : 0, - dir < 0 ? 'before' : 'after', - ); + return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? "before" : "after") } function moveVisually(cm, line, start, dir) { var bidi = getOrder(line, cm.doc.direction); - if (!bidi) { - return moveLogically(line, start, dir); - } + if (!bidi) { return moveLogically(line, start, dir) } if (start.ch >= line.text.length) { start.ch = line.text.length; - start.sticky = 'before'; + start.sticky = "before"; } else if (start.ch <= 0) { start.ch = 0; - start.sticky = 'after'; - } - var partPos = getBidiPartAt(bidi, start.ch, start.sticky), - part = bidi[partPos]; - if ( - cm.doc.direction == 'ltr' && - part.level % 2 == 0 && - (dir > 0 ? part.to > start.ch : part.from < start.ch) - ) { + start.sticky = "after"; + } + var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos]; + if (cm.doc.direction == "ltr" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) { // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines, // nothing interesting happens. - return moveLogically(line, start, dir); + return moveLogically(line, start, dir) } - var mv = function (pos, dir) { - return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); - }; + var mv = function (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); }; var prep; var getWrappedLineExtent = function (ch) { - if (!cm.options.lineWrapping) { - return { begin: 0, end: line.text.length }; - } + if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} } prep = prep || prepareMeasureForLine(cm, line); - return wrappedLineExtentChar(cm, line, prep, ch); + return wrappedLineExtentChar(cm, line, prep, ch) }; - var wrappedLineExtent = getWrappedLineExtent( - start.sticky == 'before' ? mv(start, -1) : start.ch, - ); + var wrappedLineExtent = getWrappedLineExtent(start.sticky == "before" ? mv(start, -1) : start.ch); - if (cm.doc.direction == 'rtl' || part.level == 1) { - var moveInStorageOrder = (part.level == 1) == dir < 0; + if (cm.doc.direction == "rtl" || part.level == 1) { + var moveInStorageOrder = (part.level == 1) == (dir < 0); var ch = mv(start, moveInStorageOrder ? 1 : -1); - if ( - ch != null && - (!moveInStorageOrder - ? ch >= part.from && ch >= wrappedLineExtent.begin - : ch <= part.to && ch <= wrappedLineExtent.end) - ) { + if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) { // Case 2: We move within an rtl part or in an rtl editor on the same visual line - var sticky = moveInStorageOrder ? 'before' : 'after'; - return new Pos(start.line, ch, sticky); + var sticky = moveInStorageOrder ? "before" : "after"; + return new Pos(start.line, ch, sticky) } } @@ -10386,260 +6981,131 @@ // the current bidi part var searchInVisualLine = function (partPos, dir, wrappedLineExtent) { - var getRes = function (ch, moveInStorageOrder) { - return moveInStorageOrder - ? new Pos(start.line, mv(ch, 1), 'before') - : new Pos(start.line, ch, 'after'); - }; + var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder + ? new Pos(start.line, mv(ch, 1), "before") + : new Pos(start.line, ch, "after"); }; for (; partPos >= 0 && partPos < bidi.length; partPos += dir) { var part = bidi[partPos]; - var moveInStorageOrder = dir > 0 == (part.level != 1); - var ch = moveInStorageOrder - ? wrappedLineExtent.begin - : mv(wrappedLineExtent.end, -1); - if (part.from <= ch && ch < part.to) { - return getRes(ch, moveInStorageOrder); - } + var moveInStorageOrder = (dir > 0) == (part.level != 1); + var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1); + if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) } ch = moveInStorageOrder ? part.from : mv(part.to, -1); - if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { - return getRes(ch, moveInStorageOrder); - } + if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) } } }; // Case 3a: Look for other bidi parts on the same visual line var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent); - if (res) { - return res; - } + if (res) { return res } // Case 3b: Look for other bidi parts on the next visual line - var nextCh = - dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1); + var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1); if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) { - res = searchInVisualLine( - dir > 0 ? 0 : bidi.length - 1, - dir, - getWrappedLineExtent(nextCh), - ); - if (res) { - return res; - } + res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh)); + if (res) { return res } } // Case 4: Nowhere to move - return null; + return null } // Commands are parameter-less actions that can be performed on an // editor, mostly used for keybindings. var commands = { selectAll: selectAll, - singleSelection: function (cm) { - return cm.setSelection( - cm.getCursor('anchor'), - cm.getCursor('head'), - sel_dontScroll, - ); - }, - killLine: function (cm) { - return deleteNearSelection(cm, function (range) { - if (range.empty()) { - var len = getLine(cm.doc, range.head.line).text.length; - if (range.head.ch == len && range.head.line < cm.lastLine()) { - return { from: range.head, to: Pos(range.head.line + 1, 0) }; - } else { - return { from: range.head, to: Pos(range.head.line, len) }; - } - } else { - return { from: range.from(), to: range.to() }; - } - }); - }, - deleteLine: function (cm) { - return deleteNearSelection(cm, function (range) { - return { - from: Pos(range.from().line, 0), - to: clipPos(cm.doc, Pos(range.to().line + 1, 0)), - }; - }); - }, - delLineLeft: function (cm) { - return deleteNearSelection(cm, function (range) { - return { - from: Pos(range.from().line, 0), - to: range.from(), - }; - }); - }, - delWrappedLineLeft: function (cm) { - return deleteNearSelection(cm, function (range) { - var top = cm.charCoords(range.head, 'div').top + 5; - var leftPos = cm.coordsChar({ left: 0, top: top }, 'div'); - return { from: leftPos, to: range.from() }; - }); - }, - delWrappedLineRight: function (cm) { - return deleteNearSelection(cm, function (range) { - var top = cm.charCoords(range.head, 'div').top + 5; - var rightPos = cm.coordsChar( - { left: cm.display.lineDiv.offsetWidth + 100, top: top }, - 'div', - ); - return { from: range.from(), to: rightPos }; - }); - }, - undo: function (cm) { - return cm.undo(); - }, - redo: function (cm) { - return cm.redo(); - }, - undoSelection: function (cm) { - return cm.undoSelection(); - }, - redoSelection: function (cm) { - return cm.redoSelection(); - }, - goDocStart: function (cm) { - return cm.extendSelection(Pos(cm.firstLine(), 0)); - }, - goDocEnd: function (cm) { - return cm.extendSelection(Pos(cm.lastLine())); - }, - goLineStart: function (cm) { - return cm.extendSelectionsBy( - function (range) { - return lineStart(cm, range.head.line); - }, - { origin: '+move', bias: 1 }, - ); - }, - goLineStartSmart: function (cm) { - return cm.extendSelectionsBy( - function (range) { - return lineStartSmart(cm, range.head); - }, - { origin: '+move', bias: 1 }, - ); - }, - goLineEnd: function (cm) { - return cm.extendSelectionsBy( - function (range) { - return lineEnd(cm, range.head.line); - }, - { origin: '+move', bias: -1 }, - ); - }, - goLineRight: function (cm) { - return cm.extendSelectionsBy(function (range) { - var top = cm.cursorCoords(range.head, 'div').top + 5; - return cm.coordsChar( - { left: cm.display.lineDiv.offsetWidth + 100, top: top }, - 'div', - ); - }, sel_move); - }, - goLineLeft: function (cm) { - return cm.extendSelectionsBy(function (range) { - var top = cm.cursorCoords(range.head, 'div').top + 5; - return cm.coordsChar({ left: 0, top: top }, 'div'); - }, sel_move); - }, - goLineLeftSmart: function (cm) { - return cm.extendSelectionsBy(function (range) { - var top = cm.cursorCoords(range.head, 'div').top + 5; - var pos = cm.coordsChar({ left: 0, top: top }, 'div'); - if (pos.ch < cm.getLine(pos.line).search(/\S/)) { - return lineStartSmart(cm, range.head); - } - return pos; - }, sel_move); - }, - goLineUp: function (cm) { - return cm.moveV(-1, 'line'); - }, - goLineDown: function (cm) { - return cm.moveV(1, 'line'); - }, - goPageUp: function (cm) { - return cm.moveV(-1, 'page'); - }, - goPageDown: function (cm) { - return cm.moveV(1, 'page'); - }, - goCharLeft: function (cm) { - return cm.moveH(-1, 'char'); - }, - goCharRight: function (cm) { - return cm.moveH(1, 'char'); - }, - goColumnLeft: function (cm) { - return cm.moveH(-1, 'column'); - }, - goColumnRight: function (cm) { - return cm.moveH(1, 'column'); - }, - goWordLeft: function (cm) { - return cm.moveH(-1, 'word'); - }, - goGroupRight: function (cm) { - return cm.moveH(1, 'group'); - }, - goGroupLeft: function (cm) { - return cm.moveH(-1, 'group'); - }, - goWordRight: function (cm) { - return cm.moveH(1, 'word'); - }, - delCharBefore: function (cm) { - return cm.deleteH(-1, 'char'); - }, - delCharAfter: function (cm) { - return cm.deleteH(1, 'char'); - }, - delWordBefore: function (cm) { - return cm.deleteH(-1, 'word'); - }, - delWordAfter: function (cm) { - return cm.deleteH(1, 'word'); - }, - delGroupBefore: function (cm) { - return cm.deleteH(-1, 'group'); - }, - delGroupAfter: function (cm) { - return cm.deleteH(1, 'group'); - }, - indentAuto: function (cm) { - return cm.indentSelection('smart'); - }, - indentMore: function (cm) { - return cm.indentSelection('add'); - }, - indentLess: function (cm) { - return cm.indentSelection('subtract'); - }, - insertTab: function (cm) { - return cm.replaceSelection('\t'); - }, + singleSelection: function (cm) { return cm.setSelection(cm.getCursor("anchor"), cm.getCursor("head"), sel_dontScroll); }, + killLine: function (cm) { return deleteNearSelection(cm, function (range) { + if (range.empty()) { + var len = getLine(cm.doc, range.head.line).text.length; + if (range.head.ch == len && range.head.line < cm.lastLine()) + { return {from: range.head, to: Pos(range.head.line + 1, 0)} } + else + { return {from: range.head, to: Pos(range.head.line, len)} } + } else { + return {from: range.from(), to: range.to()} + } + }); }, + deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({ + from: Pos(range.from().line, 0), + to: clipPos(cm.doc, Pos(range.to().line + 1, 0)) + }); }); }, + delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({ + from: Pos(range.from().line, 0), to: range.from() + }); }); }, + delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { + var top = cm.charCoords(range.head, "div").top + 5; + var leftPos = cm.coordsChar({left: 0, top: top}, "div"); + return {from: leftPos, to: range.from()} + }); }, + delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) { + var top = cm.charCoords(range.head, "div").top + 5; + var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, "div"); + return {from: range.from(), to: rightPos } + }); }, + undo: function (cm) { return cm.undo(); }, + redo: function (cm) { return cm.redo(); }, + undoSelection: function (cm) { return cm.undoSelection(); }, + redoSelection: function (cm) { return cm.redoSelection(); }, + goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); }, + goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); }, + goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); }, + {origin: "+move", bias: 1} + ); }, + goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); }, + {origin: "+move", bias: 1} + ); }, + goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); }, + {origin: "+move", bias: -1} + ); }, + goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) { + var top = cm.cursorCoords(range.head, "div").top + 5; + return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, "div") + }, sel_move); }, + goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) { + var top = cm.cursorCoords(range.head, "div").top + 5; + return cm.coordsChar({left: 0, top: top}, "div") + }, sel_move); }, + goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) { + var top = cm.cursorCoords(range.head, "div").top + 5; + var pos = cm.coordsChar({left: 0, top: top}, "div"); + if (pos.ch < cm.getLine(pos.line).search(/\S/)) { return lineStartSmart(cm, range.head) } + return pos + }, sel_move); }, + goLineUp: function (cm) { return cm.moveV(-1, "line"); }, + goLineDown: function (cm) { return cm.moveV(1, "line"); }, + goPageUp: function (cm) { return cm.moveV(-1, "page"); }, + goPageDown: function (cm) { return cm.moveV(1, "page"); }, + goCharLeft: function (cm) { return cm.moveH(-1, "char"); }, + goCharRight: function (cm) { return cm.moveH(1, "char"); }, + goColumnLeft: function (cm) { return cm.moveH(-1, "column"); }, + goColumnRight: function (cm) { return cm.moveH(1, "column"); }, + goWordLeft: function (cm) { return cm.moveH(-1, "word"); }, + goGroupRight: function (cm) { return cm.moveH(1, "group"); }, + goGroupLeft: function (cm) { return cm.moveH(-1, "group"); }, + goWordRight: function (cm) { return cm.moveH(1, "word"); }, + delCharBefore: function (cm) { return cm.deleteH(-1, "codepoint"); }, + delCharAfter: function (cm) { return cm.deleteH(1, "char"); }, + delWordBefore: function (cm) { return cm.deleteH(-1, "word"); }, + delWordAfter: function (cm) { return cm.deleteH(1, "word"); }, + delGroupBefore: function (cm) { return cm.deleteH(-1, "group"); }, + delGroupAfter: function (cm) { return cm.deleteH(1, "group"); }, + indentAuto: function (cm) { return cm.indentSelection("smart"); }, + indentMore: function (cm) { return cm.indentSelection("add"); }, + indentLess: function (cm) { return cm.indentSelection("subtract"); }, + insertTab: function (cm) { return cm.replaceSelection("\t"); }, insertSoftTab: function (cm) { - var spaces = [], - ranges = cm.listSelections(), - tabSize = cm.options.tabSize; + var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize; for (var i = 0; i < ranges.length; i++) { var pos = ranges[i].from(); var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize); - spaces.push(spaceStr(tabSize - (col % tabSize))); + spaces.push(spaceStr(tabSize - col % tabSize)); } cm.replaceSelections(spaces); }, defaultTab: function (cm) { - if (cm.somethingSelected()) { - cm.indentSelection('add'); - } else { - cm.execCommand('insertTab'); - } + if (cm.somethingSelected()) { cm.indentSelection("add"); } + else { cm.execCommand("insertTab"); } }, // Swap the two chars left and right of each selection's head. // Move cursor behind the two swapped characters afterwards. @@ -10648,355 +7114,248 @@ // Doesn't scan more than one line above to find a character. // Doesn't do anything on an empty line. // Doesn't do anything with non-empty selections. - transposeChars: function (cm) { - return runInOp(cm, function () { - var ranges = cm.listSelections(), - newSel = []; - for (var i = 0; i < ranges.length; i++) { - if (!ranges[i].empty()) { - continue; - } - var cur = ranges[i].head, - line = getLine(cm.doc, cur.line).text; - if (line) { - if (cur.ch == line.length) { - cur = new Pos(cur.line, cur.ch - 1); - } - if (cur.ch > 0) { - cur = new Pos(cur.line, cur.ch + 1); - cm.replaceRange( - line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2), - Pos(cur.line, cur.ch - 2), - cur, - '+transpose', - ); - } else if (cur.line > cm.doc.first) { - var prev = getLine(cm.doc, cur.line - 1).text; - if (prev) { - cur = new Pos(cur.line, 1); - cm.replaceRange( - line.charAt(0) + - cm.doc.lineSeparator() + - prev.charAt(prev.length - 1), - Pos(cur.line - 1, prev.length - 1), - cur, - '+transpose', - ); - } + transposeChars: function (cm) { return runInOp(cm, function () { + var ranges = cm.listSelections(), newSel = []; + for (var i = 0; i < ranges.length; i++) { + if (!ranges[i].empty()) { continue } + var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text; + if (line) { + if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1); } + if (cur.ch > 0) { + cur = new Pos(cur.line, cur.ch + 1); + cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2), + Pos(cur.line, cur.ch - 2), cur, "+transpose"); + } else if (cur.line > cm.doc.first) { + var prev = getLine(cm.doc, cur.line - 1).text; + if (prev) { + cur = new Pos(cur.line, 1); + cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() + + prev.charAt(prev.length - 1), + Pos(cur.line - 1, prev.length - 1), cur, "+transpose"); } } - newSel.push(new Range(cur, cur)); - } - cm.setSelections(newSel); - }); - }, - newlineAndIndent: function (cm) { - return runInOp(cm, function () { - var sels = cm.listSelections(); - for (var i = sels.length - 1; i >= 0; i--) { - cm.replaceRange( - cm.doc.lineSeparator(), - sels[i].anchor, - sels[i].head, - '+input', - ); } - sels = cm.listSelections(); - for (var i$1 = 0; i$1 < sels.length; i$1++) { - cm.indentLine(sels[i$1].from().line, null, true); - } - ensureCursorVisible(cm); - }); - }, - openLine: function (cm) { - return cm.replaceSelection('\n', 'start'); - }, - toggleOverwrite: function (cm) { - return cm.toggleOverwrite(); - }, + newSel.push(new Range(cur, cur)); + } + cm.setSelections(newSel); + }); }, + newlineAndIndent: function (cm) { return runInOp(cm, function () { + var sels = cm.listSelections(); + for (var i = sels.length - 1; i >= 0; i--) + { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, "+input"); } + sels = cm.listSelections(); + for (var i$1 = 0; i$1 < sels.length; i$1++) + { cm.indentLine(sels[i$1].from().line, null, true); } + ensureCursorVisible(cm); + }); }, + openLine: function (cm) { return cm.replaceSelection("\n", "start"); }, + toggleOverwrite: function (cm) { return cm.toggleOverwrite(); } }; + function lineStart(cm, lineN) { var line = getLine(cm.doc, lineN); var visual = visualLine(line); - if (visual != line) { - lineN = lineNo(visual); - } - return endOfLine(true, cm, visual, lineN, 1); + if (visual != line) { lineN = lineNo(visual); } + return endOfLine(true, cm, visual, lineN, 1) } function lineEnd(cm, lineN) { var line = getLine(cm.doc, lineN); var visual = visualLineEnd(line); - if (visual != line) { - lineN = lineNo(visual); - } - return endOfLine(true, cm, line, lineN, -1); + if (visual != line) { lineN = lineNo(visual); } + return endOfLine(true, cm, line, lineN, -1) } function lineStartSmart(cm, pos) { var start = lineStart(cm, pos.line); var line = getLine(cm.doc, start.line); var order = getOrder(line, cm.doc.direction); if (!order || order[0].level == 0) { - var firstNonWS = Math.max(0, line.text.search(/\S/)); + var firstNonWS = Math.max(start.ch, line.text.search(/\S/)); var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch; - return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky); + return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky) } - return start; + return start } // Run a handler that was bound to a key. function doHandleBinding(cm, bound, dropShift) { - if (typeof bound == 'string') { + if (typeof bound == "string") { bound = commands[bound]; - if (!bound) { - return false; - } + if (!bound) { return false } } // Ensure previous input has been read, so that the handler sees a // consistent view of the document cm.display.input.ensurePolled(); - var prevShift = cm.display.shift, - done = false; + var prevShift = cm.display.shift, done = false; try { - if (cm.isReadOnly()) { - cm.state.suppressEdits = true; - } - if (dropShift) { - cm.display.shift = false; - } + if (cm.isReadOnly()) { cm.state.suppressEdits = true; } + if (dropShift) { cm.display.shift = false; } done = bound(cm) != Pass; } finally { cm.display.shift = prevShift; cm.state.suppressEdits = false; } - return done; + return done } function lookupKeyForEditor(cm, name, handle) { for (var i = 0; i < cm.state.keyMaps.length; i++) { var result = lookupKey(name, cm.state.keyMaps[i], handle, cm); - if (result) { - return result; - } + if (result) { return result } } - return ( - (cm.options.extraKeys && - lookupKey(name, cm.options.extraKeys, handle, cm)) || - lookupKey(name, cm.options.keyMap, handle, cm) - ); + return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm)) + || lookupKey(name, cm.options.keyMap, handle, cm) } // Note that, despite the name, this function is also used to check // for bound mouse clicks. - var stopSeq = new Delayed(); + var stopSeq = new Delayed; function dispatchKey(cm, name, e, handle) { var seq = cm.state.keySeq; if (seq) { - if (isModifierKey(name)) { - return 'handled'; - } - if (/\'$/.test(name)) { - cm.state.keySeq = null; - } else { - stopSeq.set(50, function () { + if (isModifierKey(name)) { return "handled" } + if (/\'$/.test(name)) + { cm.state.keySeq = null; } + else + { stopSeq.set(50, function () { if (cm.state.keySeq == seq) { cm.state.keySeq = null; cm.display.input.reset(); } - }); - } - if (dispatchKeyInner(cm, seq + ' ' + name, e, handle)) { - return true; - } + }); } + if (dispatchKeyInner(cm, seq + " " + name, e, handle)) { return true } } - return dispatchKeyInner(cm, name, e, handle); + return dispatchKeyInner(cm, name, e, handle) } function dispatchKeyInner(cm, name, e, handle) { var result = lookupKeyForEditor(cm, name, handle); - if (result == 'multi') { - cm.state.keySeq = name; - } - if (result == 'handled') { - signalLater(cm, 'keyHandled', cm, name, e); - } + if (result == "multi") + { cm.state.keySeq = name; } + if (result == "handled") + { signalLater(cm, "keyHandled", cm, name, e); } - if (result == 'handled' || result == 'multi') { + if (result == "handled" || result == "multi") { e_preventDefault(e); restartBlink(cm); } - return !!result; + return !!result } // Handle a key from the keydown event. function handleKeyBinding(cm, e) { var name = keyName(e, true); - if (!name) { - return false; - } + if (!name) { return false } if (e.shiftKey && !cm.state.keySeq) { // First try to resolve full name (including 'Shift-'). Failing // that, see if there is a cursor-motion command (starting with // 'go') bound to the keyname without 'Shift-'. - return ( - dispatchKey(cm, 'Shift-' + name, e, function (b) { - return doHandleBinding(cm, b, true); - }) || - dispatchKey(cm, name, e, function (b) { - if (typeof b == 'string' ? /^go[A-Z]/.test(b) : b.motion) { - return doHandleBinding(cm, b); - } - }) - ); + return dispatchKey(cm, "Shift-" + name, e, function (b) { return doHandleBinding(cm, b, true); }) + || dispatchKey(cm, name, e, function (b) { + if (typeof b == "string" ? /^go[A-Z]/.test(b) : b.motion) + { return doHandleBinding(cm, b) } + }) } else { - return dispatchKey(cm, name, e, function (b) { - return doHandleBinding(cm, b); - }); + return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); }) } } // Handle a key from the keypress event function handleCharBinding(cm, e, ch) { - return dispatchKey(cm, "'" + ch + "'", e, function (b) { - return doHandleBinding(cm, b, true); - }); + return dispatchKey(cm, "'" + ch + "'", e, function (b) { return doHandleBinding(cm, b, true); }) } var lastStoppedKey = null; function onKeyDown(e) { var cm = this; - cm.curOp.focus = activeElt(); - if (signalDOMEvent(cm, e)) { - return; - } + if (e.target && e.target != cm.display.input.getField()) { return } + cm.curOp.focus = activeElt(root(cm)); + if (signalDOMEvent(cm, e)) { return } // IE does strange things with escape. - if (ie && ie_version < 11 && e.keyCode == 27) { - e.returnValue = false; - } + if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; } var code = e.keyCode; cm.display.shift = code == 16 || e.shiftKey; var handled = handleKeyBinding(cm, e); if (presto) { lastStoppedKey = handled ? code : null; // Opera has no cut event... we try to at least catch the key combo - if ( - !handled && - code == 88 && - !hasCopyEvent && - (mac ? e.metaKey : e.ctrlKey) - ) { - cm.replaceSelection('', null, 'cut'); - } - } - if ( - gecko && - !mac && - !handled && - code == 46 && - e.shiftKey && - !e.ctrlKey && - document.execCommand - ) { - document.execCommand('cut'); + if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey)) + { cm.replaceSelection("", null, "cut"); } } + if (gecko && !mac && !handled && code == 46 && e.shiftKey && !e.ctrlKey && document.execCommand) + { document.execCommand("cut"); } // Turn mouse into crosshair when Alt is held on Mac. - if ( - code == 18 && - !/\bCodeMirror-crosshair\b/.test(cm.display.lineDiv.className) - ) { - showCrossHair(cm); - } + if (code == 18 && !/\bCodeMirror-crosshair\b/.test(cm.display.lineDiv.className)) + { showCrossHair(cm); } } function showCrossHair(cm) { var lineDiv = cm.display.lineDiv; - addClass(lineDiv, 'CodeMirror-crosshair'); + addClass(lineDiv, "CodeMirror-crosshair"); function up(e) { if (e.keyCode == 18 || !e.altKey) { - rmClass(lineDiv, 'CodeMirror-crosshair'); - off(document, 'keyup', up); - off(document, 'mouseover', up); + rmClass(lineDiv, "CodeMirror-crosshair"); + off(document, "keyup", up); + off(document, "mouseover", up); } } - on(document, 'keyup', up); - on(document, 'mouseover', up); + on(document, "keyup", up); + on(document, "mouseover", up); } function onKeyUp(e) { - if (e.keyCode == 16) { - this.doc.sel.shift = false; - } + if (e.keyCode == 16) { this.doc.sel.shift = false; } signalDOMEvent(this, e); } function onKeyPress(e) { var cm = this; - if ( - eventInWidget(cm.display, e) || - signalDOMEvent(cm, e) || - (e.ctrlKey && !e.altKey) || - (mac && e.metaKey) - ) { - return; - } - var keyCode = e.keyCode, - charCode = e.charCode; - if (presto && keyCode == lastStoppedKey) { - lastStoppedKey = null; - e_preventDefault(e); - return; - } - if (presto && (!e.which || e.which < 10) && handleKeyBinding(cm, e)) { - return; - } + if (e.target && e.target != cm.display.input.getField()) { return } + if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return } + var keyCode = e.keyCode, charCode = e.charCode; + if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return} + if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return } var ch = String.fromCharCode(charCode == null ? keyCode : charCode); // Some browsers fire keypress events for backspace - if (ch == '\x08') { - return; - } - if (handleCharBinding(cm, e, ch)) { - return; - } + if (ch == "\x08") { return } + if (handleCharBinding(cm, e, ch)) { return } cm.display.input.onKeyPress(e); } var DOUBLECLICK_DELAY = 400; - var PastClick = function (time, pos, button) { + var PastClick = function(time, pos, button) { this.time = time; this.pos = pos; this.button = button; }; PastClick.prototype.compare = function (time, pos, button) { - return ( - this.time + DOUBLECLICK_DELAY > time && - cmp(pos, this.pos) == 0 && - button == this.button - ); + return this.time + DOUBLECLICK_DELAY > time && + cmp(pos, this.pos) == 0 && button == this.button }; var lastClick, lastDoubleClick; function clickRepeat(pos, button) { - var now = +new Date(); + var now = +new Date; if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) { lastClick = lastDoubleClick = null; - return 'triple'; + return "triple" } else if (lastClick && lastClick.compare(now, pos, button)) { lastDoubleClick = new PastClick(now, pos, button); lastClick = null; - return 'double'; + return "double" } else { lastClick = new PastClick(now, pos, button); lastDoubleClick = null; - return 'single'; + return "single" } } @@ -11006,14 +7365,8 @@ // middle-click-paste. Or it might be a click on something we should // not interfere with, such as a scrollbar or widget. function onMouseDown(e) { - var cm = this, - display = cm.display; - if ( - signalDOMEvent(cm, e) || - (display.activeTouch && display.input.supportsTouch()) - ) { - return; - } + var cm = this, display = cm.display; + if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return } display.input.ensurePolled(); display.shift = e.shiftKey; @@ -11022,252 +7375,162 @@ // Briefly turn off draggability, to allow widgets to do // normal dragging things. display.scroller.draggable = false; - setTimeout(function () { - return (display.scroller.draggable = true); - }, 100); + setTimeout(function () { return display.scroller.draggable = true; }, 100); } - return; - } - if (clickInGutter(cm, e)) { - return; + return } - var pos = posFromMouse(cm, e), - button = e_button(e), - repeat = pos ? clickRepeat(pos, button) : 'single'; - window.focus(); + if (clickInGutter(cm, e)) { return } + var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : "single"; + win(cm).focus(); // #3261: make sure, that we're not starting a second selection - if (button == 1 && cm.state.selectingText) { - cm.state.selectingText(e); - } + if (button == 1 && cm.state.selectingText) + { cm.state.selectingText(e); } - if (pos && handleMappedButton(cm, button, pos, repeat, e)) { - return; - } + if (pos && handleMappedButton(cm, button, pos, repeat, e)) { return } if (button == 1) { - if (pos) { - leftButtonDown(cm, pos, repeat, e); - } else if (e_target(e) == display.scroller) { - e_preventDefault(e); - } + if (pos) { leftButtonDown(cm, pos, repeat, e); } + else if (e_target(e) == display.scroller) { e_preventDefault(e); } } else if (button == 2) { - if (pos) { - extendSelection(cm.doc, pos); - } - setTimeout(function () { - return display.input.focus(); - }, 20); + if (pos) { extendSelection(cm.doc, pos); } + setTimeout(function () { return display.input.focus(); }, 20); } else if (button == 3) { - if (captureRightClick) { - cm.display.input.onContextMenu(e); - } else { - delayBlurEvent(cm); - } + if (captureRightClick) { cm.display.input.onContextMenu(e); } + else { delayBlurEvent(cm); } } } function handleMappedButton(cm, button, pos, repeat, event) { - var name = 'Click'; - if (repeat == 'double') { - name = 'Double' + name; - } else if (repeat == 'triple') { - name = 'Triple' + name; - } - name = (button == 1 ? 'Left' : button == 2 ? 'Middle' : 'Right') + name; - - return dispatchKey( - cm, - addModifierNames(name, event), - event, - function (bound) { - if (typeof bound == 'string') { - bound = commands[bound]; - } - if (!bound) { - return false; - } - var done = false; - try { - if (cm.isReadOnly()) { - cm.state.suppressEdits = true; - } - done = bound(cm, pos) != Pass; - } finally { - cm.state.suppressEdits = false; - } - return done; - }, - ); + var name = "Click"; + if (repeat == "double") { name = "Double" + name; } + else if (repeat == "triple") { name = "Triple" + name; } + name = (button == 1 ? "Left" : button == 2 ? "Middle" : "Right") + name; + + return dispatchKey(cm, addModifierNames(name, event), event, function (bound) { + if (typeof bound == "string") { bound = commands[bound]; } + if (!bound) { return false } + var done = false; + try { + if (cm.isReadOnly()) { cm.state.suppressEdits = true; } + done = bound(cm, pos) != Pass; + } finally { + cm.state.suppressEdits = false; + } + return done + }) } function configureMouse(cm, repeat, event) { - var option = cm.getOption('configureMouse'); + var option = cm.getOption("configureMouse"); var value = option ? option(cm, repeat, event) : {}; if (value.unit == null) { var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey; - value.unit = rect - ? 'rectangle' - : repeat == 'single' - ? 'char' - : repeat == 'double' - ? 'word' - : 'line'; - } - if (value.extend == null || cm.doc.extend) { - value.extend = cm.doc.extend || event.shiftKey; + value.unit = rect ? "rectangle" : repeat == "single" ? "char" : repeat == "double" ? "word" : "line"; } - if (value.addNew == null) { - value.addNew = mac ? event.metaKey : event.ctrlKey; - } - if (value.moveOnDrag == null) { - value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey); - } - return value; + if (value.extend == null || cm.doc.extend) { value.extend = cm.doc.extend || event.shiftKey; } + if (value.addNew == null) { value.addNew = mac ? event.metaKey : event.ctrlKey; } + if (value.moveOnDrag == null) { value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey); } + return value } function leftButtonDown(cm, pos, repeat, event) { - if (ie) { - setTimeout(bind(ensureFocus, cm), 0); - } else { - cm.curOp.focus = activeElt(); - } + if (ie) { setTimeout(bind(ensureFocus, cm), 0); } + else { cm.curOp.focus = activeElt(root(cm)); } var behavior = configureMouse(cm, repeat, event); - var sel = cm.doc.sel, - contained; - if ( - cm.options.dragDrop && - dragAndDrop && - !cm.isReadOnly() && - repeat == 'single' && - (contained = sel.contains(pos)) > -1 && - (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || - pos.xRel > 0) && - (cmp(contained.to(), pos) > 0 || pos.xRel < 0) - ) { - leftButtonStartDrag(cm, event, pos, behavior); - } else { - leftButtonSelect(cm, event, pos, behavior); - } + var sel = cm.doc.sel, contained; + if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() && + repeat == "single" && (contained = sel.contains(pos)) > -1 && + (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) && + (cmp(contained.to(), pos) > 0 || pos.xRel < 0)) + { leftButtonStartDrag(cm, event, pos, behavior); } + else + { leftButtonSelect(cm, event, pos, behavior); } } // Start a text drag. When it ends, see if any dragging actually // happen, and treat as a click if it didn't. function leftButtonStartDrag(cm, event, pos, behavior) { - var display = cm.display, - moved = false; + var display = cm.display, moved = false; var dragEnd = operation(cm, function (e) { - if (webkit) { - display.scroller.draggable = false; - } + if (webkit) { display.scroller.draggable = false; } cm.state.draggingText = false; - off(display.wrapper.ownerDocument, 'mouseup', dragEnd); - off(display.wrapper.ownerDocument, 'mousemove', mouseMove); - off(display.scroller, 'dragstart', dragStart); - off(display.scroller, 'drop', dragEnd); + if (cm.state.delayingBlurEvent) { + if (cm.hasFocus()) { cm.state.delayingBlurEvent = false; } + else { delayBlurEvent(cm); } + } + off(display.wrapper.ownerDocument, "mouseup", dragEnd); + off(display.wrapper.ownerDocument, "mousemove", mouseMove); + off(display.scroller, "dragstart", dragStart); + off(display.scroller, "drop", dragEnd); if (!moved) { e_preventDefault(e); - if (!behavior.addNew) { - extendSelection(cm.doc, pos, null, null, behavior.extend); - } + if (!behavior.addNew) + { extendSelection(cm.doc, pos, null, null, behavior.extend); } // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081) - if (webkit || (ie && ie_version == 9)) { - setTimeout(function () { - display.wrapper.ownerDocument.body.focus(); - display.input.focus(); - }, 20); - } else { - display.input.focus(); - } + if ((webkit && !safari) || ie && ie_version == 9) + { setTimeout(function () {display.wrapper.ownerDocument.body.focus({preventScroll: true}); display.input.focus();}, 20); } + else + { display.input.focus(); } } }); - var mouseMove = function (e2) { - moved = - moved || - Math.abs(event.clientX - e2.clientX) + - Math.abs(event.clientY - e2.clientY) >= - 10; - }; - var dragStart = function () { - return (moved = true); + var mouseMove = function(e2) { + moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10; }; + var dragStart = function () { return moved = true; }; // Let the drag handler handle this. - if (webkit) { - display.scroller.draggable = true; - } + if (webkit) { display.scroller.draggable = true; } cm.state.draggingText = dragEnd; dragEnd.copy = !behavior.moveOnDrag; - // IE's approach to draggable - if (display.scroller.dragDrop) { - display.scroller.dragDrop(); - } - on(display.wrapper.ownerDocument, 'mouseup', dragEnd); - on(display.wrapper.ownerDocument, 'mousemove', mouseMove); - on(display.scroller, 'dragstart', dragStart); - on(display.scroller, 'drop', dragEnd); + on(display.wrapper.ownerDocument, "mouseup", dragEnd); + on(display.wrapper.ownerDocument, "mousemove", mouseMove); + on(display.scroller, "dragstart", dragStart); + on(display.scroller, "drop", dragEnd); - delayBlurEvent(cm); - setTimeout(function () { - return display.input.focus(); - }, 20); + cm.state.delayingBlurEvent = true; + setTimeout(function () { return display.input.focus(); }, 20); + // IE's approach to draggable + if (display.scroller.dragDrop) { display.scroller.dragDrop(); } } function rangeForUnit(cm, pos, unit) { - if (unit == 'char') { - return new Range(pos, pos); - } - if (unit == 'word') { - return cm.findWordAt(pos); - } - if (unit == 'line') { - return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); - } + if (unit == "char") { return new Range(pos, pos) } + if (unit == "word") { return cm.findWordAt(pos) } + if (unit == "line") { return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) } var result = unit(cm, pos); - return new Range(result.from, result.to); + return new Range(result.from, result.to) } // Normal selection, as opposed to text dragging. function leftButtonSelect(cm, event, start, behavior) { - var display = cm.display, - doc = cm.doc; + if (ie) { delayBlurEvent(cm); } + var display = cm.display, doc = cm.doc; e_preventDefault(event); - var ourRange, - ourIndex, - startSel = doc.sel, - ranges = startSel.ranges; + var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges; if (behavior.addNew && !behavior.extend) { ourIndex = doc.sel.contains(start); - if (ourIndex > -1) { - ourRange = ranges[ourIndex]; - } else { - ourRange = new Range(start, start); - } + if (ourIndex > -1) + { ourRange = ranges[ourIndex]; } + else + { ourRange = new Range(start, start); } } else { ourRange = doc.sel.primary(); ourIndex = doc.sel.primIndex; } - if (behavior.unit == 'rectangle') { - if (!behavior.addNew) { - ourRange = new Range(start, start); - } + if (behavior.unit == "rectangle") { + if (!behavior.addNew) { ourRange = new Range(start, start); } start = posFromMouse(cm, event, true, true); ourIndex = -1; } else { - var range$$1 = rangeForUnit(cm, start, behavior.unit); - if (behavior.extend) { - ourRange = extendRange( - ourRange, - range$$1.anchor, - range$$1.head, - behavior.extend, - ); - } else { - ourRange = range$$1; - } + var range = rangeForUnit(cm, start, behavior.unit); + if (behavior.extend) + { ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend); } + else + { ourRange = range; } } if (!behavior.addNew) { @@ -11276,26 +7539,11 @@ startSel = doc.sel; } else if (ourIndex == -1) { ourIndex = ranges.length; - setSelection( - doc, - normalizeSelection(cm, ranges.concat([ourRange]), ourIndex), - { scroll: false, origin: '*mouse' }, - ); - } else if ( - ranges.length > 1 && - ranges[ourIndex].empty() && - behavior.unit == 'char' && - !behavior.extend - ) { - setSelection( - doc, - normalizeSelection( - cm, - ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), - 0, - ), - { scroll: false, origin: '*mouse' }, - ); + setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex), + {scroll: false, origin: "*mouse"}); + } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == "char" && !behavior.extend) { + setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0), + {scroll: false, origin: "*mouse"}); startSel = doc.sel; } else { replaceOneSelection(doc, ourIndex, ourRange, sel_mouse); @@ -11303,76 +7551,40 @@ var lastPos = start; function extendTo(pos) { - if (cmp(lastPos, pos) == 0) { - return; - } + if (cmp(lastPos, pos) == 0) { return } lastPos = pos; - if (behavior.unit == 'rectangle') { - var ranges = [], - tabSize = cm.options.tabSize; - var startCol = countColumn( - getLine(doc, start.line).text, - start.ch, - tabSize, - ); + if (behavior.unit == "rectangle") { + var ranges = [], tabSize = cm.options.tabSize; + var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize); var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize); - var left = Math.min(startCol, posCol), - right = Math.max(startCol, posCol); - for ( - var line = Math.min(start.line, pos.line), - end = Math.min(cm.lastLine(), Math.max(start.line, pos.line)); - line <= end; - line++ - ) { - var text = getLine(doc, line).text, - leftPos = findColumn(text, left, tabSize); - if (left == right) { - ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); - } else if (text.length > leftPos) { - ranges.push( - new Range( - Pos(line, leftPos), - Pos(line, findColumn(text, right, tabSize)), - ), - ); - } - } - if (!ranges.length) { - ranges.push(new Range(start, start)); - } - setSelection( - doc, - normalizeSelection( - cm, - startSel.ranges.slice(0, ourIndex).concat(ranges), - ourIndex, - ), - { origin: '*mouse', scroll: false }, - ); + var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol); + for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line)); + line <= end; line++) { + var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize); + if (left == right) + { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); } + else if (text.length > leftPos) + { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); } + } + if (!ranges.length) { ranges.push(new Range(start, start)); } + setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex), + {origin: "*mouse", scroll: false}); cm.scrollIntoView(pos); } else { var oldRange = ourRange; - var range$$1 = rangeForUnit(cm, pos, behavior.unit); - var anchor = oldRange.anchor, - head; - if (cmp(range$$1.anchor, anchor) > 0) { - head = range$$1.head; - anchor = minPos(oldRange.from(), range$$1.anchor); + var range = rangeForUnit(cm, pos, behavior.unit); + var anchor = oldRange.anchor, head; + if (cmp(range.anchor, anchor) > 0) { + head = range.head; + anchor = minPos(oldRange.from(), range.anchor); } else { - head = range$$1.anchor; - anchor = maxPos(oldRange.to(), range$$1.head); + head = range.anchor; + anchor = maxPos(oldRange.to(), range.head); } var ranges$1 = startSel.ranges.slice(0); - ranges$1[ourIndex] = bidiSimplify( - cm, - new Range(clipPos(doc, anchor), head), - ); - setSelection( - doc, - normalizeSelection(cm, ranges$1, ourIndex), - sel_mouse, - ); + ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head)); + setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse); } } @@ -11385,43 +7597,21 @@ function extend(e) { var curCount = ++counter; - var cur = posFromMouse(cm, e, true, behavior.unit == 'rectangle'); - if (!cur) { - return; - } + var cur = posFromMouse(cm, e, true, behavior.unit == "rectangle"); + if (!cur) { return } if (cmp(cur, lastPos) != 0) { - cm.curOp.focus = activeElt(); + cm.curOp.focus = activeElt(root(cm)); extendTo(cur); var visible = visibleLines(display, doc); - if (cur.line >= visible.to || cur.line < visible.from) { - setTimeout( - operation(cm, function () { - if (counter == curCount) { - extend(e); - } - }), - 150, - ); - } + if (cur.line >= visible.to || cur.line < visible.from) + { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); } } else { - var outside = - e.clientY < editorSize.top - ? -20 - : e.clientY > editorSize.bottom - ? 20 - : 0; - if (outside) { - setTimeout( - operation(cm, function () { - if (counter != curCount) { - return; - } - display.scroller.scrollTop += outside; - extend(e); - }), - 50, - ); - } + var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0; + if (outside) { setTimeout(operation(cm, function () { + if (counter != curCount) { return } + display.scroller.scrollTop += outside; + extend(e); + }), 50); } } } @@ -11435,74 +7625,56 @@ e_preventDefault(e); display.input.focus(); } - off(display.wrapper.ownerDocument, 'mousemove', move); - off(display.wrapper.ownerDocument, 'mouseup', up); + off(display.wrapper.ownerDocument, "mousemove", move); + off(display.wrapper.ownerDocument, "mouseup", up); doc.history.lastSelOrigin = null; } var move = operation(cm, function (e) { - if (e.buttons === 0 || !e_button(e)) { - done(e); - } else { - extend(e); - } + if (e.buttons === 0 || !e_button(e)) { done(e); } + else { extend(e); } }); var up = operation(cm, done); cm.state.selectingText = up; - on(display.wrapper.ownerDocument, 'mousemove', move); - on(display.wrapper.ownerDocument, 'mouseup', up); + on(display.wrapper.ownerDocument, "mousemove", move); + on(display.wrapper.ownerDocument, "mouseup", up); } // Used when mouse-selecting to adjust the anchor to the proper side // of a bidi jump depending on the visual position of the head. - function bidiSimplify(cm, range$$1) { - var anchor = range$$1.anchor; - var head = range$$1.head; + function bidiSimplify(cm, range) { + var anchor = range.anchor; + var head = range.head; var anchorLine = getLine(cm.doc, anchor.line); - if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) { - return range$$1; - } + if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) { return range } var order = getOrder(anchorLine); - if (!order) { - return range$$1; - } - var index = getBidiPartAt(order, anchor.ch, anchor.sticky), - part = order[index]; - if (part.from != anchor.ch && part.to != anchor.ch) { - return range$$1; - } - var boundary = - index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1); - if (boundary == 0 || boundary == order.length) { - return range$$1; - } + if (!order) { return range } + var index = getBidiPartAt(order, anchor.ch, anchor.sticky), part = order[index]; + if (part.from != anchor.ch && part.to != anchor.ch) { return range } + var boundary = index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1); + if (boundary == 0 || boundary == order.length) { return range } // Compute the relative visual position of the head compared to the // anchor (<0 is to the left, >0 to the right) var leftSide; if (head.line != anchor.line) { - leftSide = - (head.line - anchor.line) * (cm.doc.direction == 'ltr' ? 1 : -1) > 0; + leftSide = (head.line - anchor.line) * (cm.doc.direction == "ltr" ? 1 : -1) > 0; } else { var headIndex = getBidiPartAt(order, head.ch, head.sticky); - var dir = - headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1); - if (headIndex == boundary - 1 || headIndex == boundary) { - leftSide = dir < 0; - } else { - leftSide = dir > 0; - } + var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1); + if (headIndex == boundary - 1 || headIndex == boundary) + { leftSide = dir < 0; } + else + { leftSide = dir > 0; } } var usePart = order[boundary + (leftSide ? -1 : 0)]; var from = leftSide == (usePart.level == 1); - var ch = from ? usePart.from : usePart.to, - sticky = from ? 'after' : 'before'; - return anchor.ch == ch && anchor.sticky == sticky - ? range$$1 - : new Range(new Pos(anchor.line, ch, sticky), head); + var ch = from ? usePart.from : usePart.to, sticky = from ? "after" : "before"; + return anchor.ch == ch && anchor.sticky == sticky ? range : new Range(new Pos(anchor.line, ch, sticky), head) } + // Determines whether an event happened in the gutter, and fires the // handlers for the corresponding event. function gutterEvent(cm, e, type, prevent) { @@ -11511,26 +7683,16 @@ mX = e.touches[0].clientX; mY = e.touches[0].clientY; } else { - try { - mX = e.clientX; - mY = e.clientY; - } catch (e) { - return false; - } - } - if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { - return false; - } - if (prevent) { - e_preventDefault(e); + try { mX = e.clientX; mY = e.clientY; } + catch(e$1) { return false } } + if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false } + if (prevent) { e_preventDefault(e); } var display = cm.display; var lineBox = display.lineDiv.getBoundingClientRect(); - if (mY > lineBox.bottom || !hasHandler(cm, type)) { - return e_defaultPrevented(e); - } + if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) } mY -= lineBox.top - display.viewOffset; for (var i = 0; i < cm.display.gutterSpecs.length; ++i) { @@ -11539,13 +7701,13 @@ var line = lineAtHeight(cm.doc, mY); var gutter = cm.display.gutterSpecs[i]; signal(cm, type, cm, line, gutter.className, e); - return e_defaultPrevented(e); + return e_defaultPrevented(e) } } } function clickInGutter(cm, e) { - return gutterEvent(cm, e, 'gutterClick', true); + return gutterEvent(cm, e, "gutterClick", true) } // CONTEXT MENU HANDLING @@ -11554,36 +7716,23 @@ // textarea (making it as unobtrusive as possible) to let the // right-click take effect on it. function onContextMenu(cm, e) { - if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { - return; - } - if (signalDOMEvent(cm, e, 'contextmenu')) { - return; - } - if (!captureRightClick) { - cm.display.input.onContextMenu(e); - } + if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return } + if (signalDOMEvent(cm, e, "contextmenu")) { return } + if (!captureRightClick) { cm.display.input.onContextMenu(e); } } function contextMenuInGutter(cm, e) { - if (!hasHandler(cm, 'gutterContextMenu')) { - return false; - } - return gutterEvent(cm, e, 'gutterContextMenu', false); + if (!hasHandler(cm, "gutterContextMenu")) { return false } + return gutterEvent(cm, e, "gutterContextMenu", false) } function themeChanged(cm) { - cm.display.wrapper.className = - cm.display.wrapper.className.replace(/\s*cm-s-\S+/g, '') + - cm.options.theme.replace(/(^|\s)\s*/g, ' cm-s-'); + cm.display.wrapper.className = cm.display.wrapper.className.replace(/\s*cm-s-\S+/g, "") + + cm.options.theme.replace(/(^|\s)\s*/g, " cm-s-"); clearCaches(cm); } - var Init = { - toString: function () { - return 'CodeMirror.Init'; - }, - }; + var Init = {toString: function(){return "CodeMirror.Init"}}; var defaults = {}; var optionHandlers = {}; @@ -11593,15 +7742,8 @@ function option(name, deflt, handle, notOnInit) { CodeMirror.defaults[name] = deflt; - if (handle) { - optionHandlers[name] = notOnInit - ? function (cm, val, old) { - if (old != Init) { - handle(cm, val, old); - } - } - : handle; - } + if (handle) { optionHandlers[name] = + notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old); }} : handle; } } CodeMirror.defineOption = option; @@ -11611,272 +7753,132 @@ // These two are, on init, called from the constructor because they // have to be initialized before the editor can start at all. - option( - 'value', - '', - function (cm, val) { - return cm.setValue(val); - }, - true, - ); - option( - 'mode', - null, - function (cm, val) { - cm.doc.modeOption = val; - loadMode(cm); - }, - true, - ); - - option('indentUnit', 2, loadMode, true); - option('indentWithTabs', false); - option('smartIndent', true); - option( - 'tabSize', - 4, - function (cm) { - resetModeState(cm); - clearCaches(cm); - regChange(cm); - }, - true, - ); + option("value", "", function (cm, val) { return cm.setValue(val); }, true); + option("mode", null, function (cm, val) { + cm.doc.modeOption = val; + loadMode(cm); + }, true); + + option("indentUnit", 2, loadMode, true); + option("indentWithTabs", false); + option("smartIndent", true); + option("tabSize", 4, function (cm) { + resetModeState(cm); + clearCaches(cm); + regChange(cm); + }, true); - option('lineSeparator', null, function (cm, val) { + option("lineSeparator", null, function (cm, val) { cm.doc.lineSep = val; - if (!val) { - return; - } - var newBreaks = [], - lineNo = cm.doc.first; + if (!val) { return } + var newBreaks = [], lineNo = cm.doc.first; cm.doc.iter(function (line) { - for (var pos = 0; ; ) { + for (var pos = 0;;) { var found = line.text.indexOf(val, pos); - if (found == -1) { - break; - } + if (found == -1) { break } pos = found + val.length; newBreaks.push(Pos(lineNo, found)); } lineNo++; }); - for (var i = newBreaks.length - 1; i >= 0; i--) { - replaceRange( - cm.doc, - val, - newBreaks[i], - Pos(newBreaks[i].line, newBreaks[i].ch + val.length), - ); - } + for (var i = newBreaks.length - 1; i >= 0; i--) + { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)); } }); - option( - 'specialChars', - /[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b-\u200f\u2028\u2029\ufeff\ufff9-\ufffc]/g, - function (cm, val, old) { - cm.state.specialChars = new RegExp( - val.source + (val.test('\t') ? '' : '|\t'), - 'g', - ); - if (old != Init) { - cm.refresh(); - } - }, - ); - option( - 'specialCharPlaceholder', - defaultSpecialCharPlaceholder, - function (cm) { - return cm.refresh(); - }, - true, - ); - option('electricChars', true); - option( - 'inputStyle', - mobile ? 'contenteditable' : 'textarea', - function () { - throw new Error( - 'inputStyle can not (yet) be changed in a running editor', - ); // FIXME - }, - true, - ); - option( - 'spellcheck', - false, - function (cm, val) { - return (cm.getInputField().spellcheck = val); - }, - true, - ); - option( - 'autocorrect', - false, - function (cm, val) { - return (cm.getInputField().autocorrect = val); - }, - true, - ); - option( - 'autocapitalize', - false, - function (cm, val) { - return (cm.getInputField().autocapitalize = val); - }, - true, - ); - option('rtlMoveVisually', !windows); - option('wholeLineUpdateBefore', true); - - option( - 'theme', - 'default', - function (cm) { - themeChanged(cm); - updateGutters(cm); - }, - true, - ); - option('keyMap', 'default', function (cm, val, old) { + option("specialChars", /[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b\u200e\u200f\u2028\u2029\u202d\u202e\u2066\u2067\u2069\ufeff\ufff9-\ufffc]/g, function (cm, val, old) { + cm.state.specialChars = new RegExp(val.source + (val.test("\t") ? "" : "|\t"), "g"); + if (old != Init) { cm.refresh(); } + }); + option("specialCharPlaceholder", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true); + option("electricChars", true); + option("inputStyle", mobile ? "contenteditable" : "textarea", function () { + throw new Error("inputStyle can not (yet) be changed in a running editor") // FIXME + }, true); + option("spellcheck", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true); + option("autocorrect", false, function (cm, val) { return cm.getInputField().autocorrect = val; }, true); + option("autocapitalize", false, function (cm, val) { return cm.getInputField().autocapitalize = val; }, true); + option("rtlMoveVisually", !windows); + option("wholeLineUpdateBefore", true); + + option("theme", "default", function (cm) { + themeChanged(cm); + updateGutters(cm); + }, true); + option("keyMap", "default", function (cm, val, old) { var next = getKeyMap(val); var prev = old != Init && getKeyMap(old); - if (prev && prev.detach) { - prev.detach(cm, next); - } - if (next.attach) { - next.attach(cm, prev || null); - } + if (prev && prev.detach) { prev.detach(cm, next); } + if (next.attach) { next.attach(cm, prev || null); } }); - option('extraKeys', null); - option('configureMouse', null); - - option('lineWrapping', false, wrappingChanged, true); - option( - 'gutters', - [], - function (cm, val) { - cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers); - updateGutters(cm); - }, - true, - ); - option( - 'fixedGutter', - true, - function (cm, val) { - cm.display.gutters.style.left = val - ? compensateForHScroll(cm.display) + 'px' - : '0'; - cm.refresh(); - }, - true, - ); - option( - 'coverGutterNextToScrollbar', - false, - function (cm) { - return updateScrollbars(cm); - }, - true, - ); - option( - 'scrollbarStyle', - 'native', - function (cm) { - initScrollbars(cm); - updateScrollbars(cm); - cm.display.scrollbars.setScrollTop(cm.doc.scrollTop); - cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft); - }, - true, - ); - option( - 'lineNumbers', - false, - function (cm, val) { - cm.display.gutterSpecs = getGutters(cm.options.gutters, val); - updateGutters(cm); - }, - true, - ); - option('firstLineNumber', 1, updateGutters, true); - option( - 'lineNumberFormatter', - function (integer) { - return integer; - }, - updateGutters, - true, - ); - option('showCursorWhenSelecting', false, updateSelection, true); - - option('resetSelectionOnContextMenu', true); - option('lineWiseCopyCut', true); - option('pasteLinesPerSelection', true); - option('selectionsMayTouch', false); - - option('readOnly', false, function (cm, val) { - if (val == 'nocursor') { + option("extraKeys", null); + option("configureMouse", null); + + option("lineWrapping", false, wrappingChanged, true); + option("gutters", [], function (cm, val) { + cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers); + updateGutters(cm); + }, true); + option("fixedGutter", true, function (cm, val) { + cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + "px" : "0"; + cm.refresh(); + }, true); + option("coverGutterNextToScrollbar", false, function (cm) { return updateScrollbars(cm); }, true); + option("scrollbarStyle", "native", function (cm) { + initScrollbars(cm); + updateScrollbars(cm); + cm.display.scrollbars.setScrollTop(cm.doc.scrollTop); + cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft); + }, true); + option("lineNumbers", false, function (cm, val) { + cm.display.gutterSpecs = getGutters(cm.options.gutters, val); + updateGutters(cm); + }, true); + option("firstLineNumber", 1, updateGutters, true); + option("lineNumberFormatter", function (integer) { return integer; }, updateGutters, true); + option("showCursorWhenSelecting", false, updateSelection, true); + + option("resetSelectionOnContextMenu", true); + option("lineWiseCopyCut", true); + option("pasteLinesPerSelection", true); + option("selectionsMayTouch", false); + + option("readOnly", false, function (cm, val) { + if (val == "nocursor") { onBlur(cm); cm.display.input.blur(); } cm.display.input.readOnlyChanged(val); }); - option( - 'disableInput', - false, - function (cm, val) { - if (!val) { - cm.display.input.reset(); - } - }, - true, - ); - option('dragDrop', true, dragDropChanged); - option('allowDropFileTypes', null); - - option('cursorBlinkRate', 530); - option('cursorScrollMargin', 0); - option('cursorHeight', 1, updateSelection, true); - option('singleCursorHeightPerLine', true, updateSelection, true); - option('workTime', 100); - option('workDelay', 100); - option('flattenSpans', true, resetModeState, true); - option('addModeClass', false, resetModeState, true); - option('pollInterval', 100); - option('undoDepth', 200, function (cm, val) { - return (cm.doc.history.undoDepth = val); - }); - option('historyEventDelay', 1250); - option( - 'viewportMargin', - 10, - function (cm) { - return cm.refresh(); - }, - true, - ); - option('maxHighlightLength', 10000, resetModeState, true); - option('moveInputWithCursor', true, function (cm, val) { - if (!val) { - cm.display.input.resetPosition(); - } + + option("screenReaderLabel", null, function (cm, val) { + val = (val === '') ? null : val; + cm.display.input.screenReaderLabelChanged(val); }); - option('tabindex', null, function (cm, val) { - return (cm.display.input.getField().tabIndex = val || ''); + option("disableInput", false, function (cm, val) {if (!val) { cm.display.input.reset(); }}, true); + option("dragDrop", true, dragDropChanged); + option("allowDropFileTypes", null); + + option("cursorBlinkRate", 530); + option("cursorScrollMargin", 0); + option("cursorHeight", 1, updateSelection, true); + option("singleCursorHeightPerLine", true, updateSelection, true); + option("workTime", 100); + option("workDelay", 100); + option("flattenSpans", true, resetModeState, true); + option("addModeClass", false, resetModeState, true); + option("pollInterval", 100); + option("undoDepth", 200, function (cm, val) { return cm.doc.history.undoDepth = val; }); + option("historyEventDelay", 1250); + option("viewportMargin", 10, function (cm) { return cm.refresh(); }, true); + option("maxHighlightLength", 10000, resetModeState, true); + option("moveInputWithCursor", true, function (cm, val) { + if (!val) { cm.display.input.resetPosition(); } }); - option('autofocus', null); - option( - 'direction', - 'ltr', - function (cm, val) { - return cm.doc.setDirection(val); - }, - true, - ); - option('phrases', null); + + option("tabindex", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || ""; }); + option("autofocus", null); + option("direction", "ltr", function (cm, val) { return cm.doc.setDirection(val); }, true); + option("phrases", null); } function dragDropChanged(cm, value, old) { @@ -11884,29 +7886,27 @@ if (!value != !wasOn) { var funcs = cm.display.dragFunctions; var toggle = value ? on : off; - toggle(cm.display.scroller, 'dragstart', funcs.start); - toggle(cm.display.scroller, 'dragenter', funcs.enter); - toggle(cm.display.scroller, 'dragover', funcs.over); - toggle(cm.display.scroller, 'dragleave', funcs.leave); - toggle(cm.display.scroller, 'drop', funcs.drop); + toggle(cm.display.scroller, "dragstart", funcs.start); + toggle(cm.display.scroller, "dragenter", funcs.enter); + toggle(cm.display.scroller, "dragover", funcs.over); + toggle(cm.display.scroller, "dragleave", funcs.leave); + toggle(cm.display.scroller, "drop", funcs.drop); } } function wrappingChanged(cm) { if (cm.options.lineWrapping) { - addClass(cm.display.wrapper, 'CodeMirror-wrap'); - cm.display.sizer.style.minWidth = ''; + addClass(cm.display.wrapper, "CodeMirror-wrap"); + cm.display.sizer.style.minWidth = ""; cm.display.sizerWidth = null; } else { - rmClass(cm.display.wrapper, 'CodeMirror-wrap'); + rmClass(cm.display.wrapper, "CodeMirror-wrap"); findMaxLine(cm); } estimateLineHeights(cm); regChange(cm); clearCaches(cm); - setTimeout(function () { - return updateScrollbars(cm); - }, 100); + setTimeout(function () { return updateScrollbars(cm); }, 100); } // A CodeMirror instance represents an editor. This is the object @@ -11915,65 +7915,46 @@ function CodeMirror(place, options) { var this$1 = this; - if (!(this instanceof CodeMirror)) { - return new CodeMirror(place, options); - } + if (!(this instanceof CodeMirror)) { return new CodeMirror(place, options) } this.options = options = options ? copyObj(options) : {}; // Determine effective options based on given values and defaults. copyObj(defaults, options, false); var doc = options.value; - if (typeof doc == 'string') { - doc = new Doc( - doc, - options.mode, - null, - options.lineSeparator, - options.direction, - ); - } else if (options.mode) { - doc.modeOption = options.mode; - } + if (typeof doc == "string") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction); } + else if (options.mode) { doc.modeOption = options.mode; } this.doc = doc; var input = new CodeMirror.inputStyles[options.inputStyle](this); - var display = (this.display = new Display(place, doc, input, options)); + var display = this.display = new Display(place, doc, input, options); display.wrapper.CodeMirror = this; themeChanged(this); - if (options.lineWrapping) { - this.display.wrapper.className += ' CodeMirror-wrap'; - } + if (options.lineWrapping) + { this.display.wrapper.className += " CodeMirror-wrap"; } initScrollbars(this); this.state = { - keyMaps: [], // stores maps added by addKeyMap + keyMaps: [], // stores maps added by addKeyMap overlays: [], // highlighting overlays, as added by addOverlay - modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info + modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info overwrite: false, delayingBlurEvent: false, focused: false, suppressEdits: false, // used to disable editing during key handlers when in readOnly mode - pasteIncoming: -1, - cutIncoming: -1, // help recognize paste/cut edits in input.poll + pasteIncoming: -1, cutIncoming: -1, // help recognize paste/cut edits in input.poll selectingText: false, draggingText: false, highlight: new Delayed(), // stores highlight worker timeout - keySeq: null, // Unfinished key sequence - specialChars: null, + keySeq: null, // Unfinished key sequence + specialChars: null }; - if (options.autofocus && !mobile) { - display.input.focus(); - } + if (options.autofocus && !mobile) { display.input.focus(); } // Override magic textarea content restore that IE sometimes does // on our hidden textarea on reload - if (ie && ie_version < 11) { - setTimeout(function () { - return this$1.display.input.reset(true); - }, 20); - } + if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20); } registerEventHandlers(this); ensureGlobalHandlers(); @@ -11982,34 +7963,24 @@ this.curOp.forceUpdate = true; attachDoc(this, doc); - if ((options.autofocus && !mobile) || this.hasFocus()) { - setTimeout(bind(onFocus, this), 20); - } else { - onBlur(this); - } + if ((options.autofocus && !mobile) || this.hasFocus()) + { setTimeout(function () { + if (this$1.hasFocus() && !this$1.state.focused) { onFocus(this$1); } + }, 20); } + else + { onBlur(this); } - for (var opt in optionHandlers) { - if (optionHandlers.hasOwnProperty(opt)) { - optionHandlers[opt](this$1, options[opt], Init); - } - } + for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt)) + { optionHandlers[opt](this, options[opt], Init); } } maybeUpdateLineNumberWidth(this); - if (options.finishInit) { - options.finishInit(this); - } - for (var i = 0; i < initHooks.length; ++i) { - initHooks[i](this$1); - } + if (options.finishInit) { options.finishInit(this); } + for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this); } endOperation(this); // Suppress optimizelegibility in Webkit, since it breaks text // measuring on line wrapping boundaries. - if ( - webkit && - options.lineWrapping && - getComputedStyle(display.lineDiv).textRendering == 'optimizelegibility' - ) { - display.lineDiv.style.textRendering = 'auto'; - } + if (webkit && options.lineWrapping && + getComputedStyle(display.lineDiv).textRendering == "optimizelegibility") + { display.lineDiv.style.textRendering = "auto"; } } // The default configuration options. @@ -12020,190 +7991,116 @@ // Attach the necessary event handlers when initializing the editor function registerEventHandlers(cm) { var d = cm.display; - on(d.scroller, 'mousedown', operation(cm, onMouseDown)); + on(d.scroller, "mousedown", operation(cm, onMouseDown)); // Older IE's will not fire a second mousedown for a double click - if (ie && ie_version < 11) { - on( - d.scroller, - 'dblclick', - operation(cm, function (e) { - if (signalDOMEvent(cm, e)) { - return; - } - var pos = posFromMouse(cm, e); - if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { - return; - } - e_preventDefault(e); - var word = cm.findWordAt(pos); - extendSelection(cm.doc, word.anchor, word.head); - }), - ); - } else { - on(d.scroller, 'dblclick', function (e) { - return signalDOMEvent(cm, e) || e_preventDefault(e); - }); - } + if (ie && ie_version < 11) + { on(d.scroller, "dblclick", operation(cm, function (e) { + if (signalDOMEvent(cm, e)) { return } + var pos = posFromMouse(cm, e); + if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return } + e_preventDefault(e); + var word = cm.findWordAt(pos); + extendSelection(cm.doc, word.anchor, word.head); + })); } + else + { on(d.scroller, "dblclick", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }); } // Some browsers fire contextmenu *after* opening the menu, at // which point we can't mess with it anymore. Context menu is // handled in onMouseDown for these browsers. - on(d.scroller, 'contextmenu', function (e) { - return onContextMenu(cm, e); - }); - on(d.input.getField(), 'contextmenu', function (e) { - if (!d.scroller.contains(e.target)) { - onContextMenu(cm, e); - } + on(d.scroller, "contextmenu", function (e) { return onContextMenu(cm, e); }); + on(d.input.getField(), "contextmenu", function (e) { + if (!d.scroller.contains(e.target)) { onContextMenu(cm, e); } }); // Used to suppress mouse event handling when a touch happens - var touchFinished, - prevTouch = { end: 0 }; + var touchFinished, prevTouch = {end: 0}; function finishTouch() { if (d.activeTouch) { - touchFinished = setTimeout(function () { - return (d.activeTouch = null); - }, 1000); + touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000); prevTouch = d.activeTouch; - prevTouch.end = +new Date(); + prevTouch.end = +new Date; } } function isMouseLikeTouchEvent(e) { - if (e.touches.length != 1) { - return false; - } + if (e.touches.length != 1) { return false } var touch = e.touches[0]; - return touch.radiusX <= 1 && touch.radiusY <= 1; + return touch.radiusX <= 1 && touch.radiusY <= 1 } function farAway(touch, other) { - if (other.left == null) { - return true; - } - var dx = other.left - touch.left, - dy = other.top - touch.top; - return dx * dx + dy * dy > 20 * 20; - } - on(d.scroller, 'touchstart', function (e) { - if ( - !signalDOMEvent(cm, e) && - !isMouseLikeTouchEvent(e) && - !clickInGutter(cm, e) - ) { + if (other.left == null) { return true } + var dx = other.left - touch.left, dy = other.top - touch.top; + return dx * dx + dy * dy > 20 * 20 + } + on(d.scroller, "touchstart", function (e) { + if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) { d.input.ensurePolled(); clearTimeout(touchFinished); - var now = +new Date(); - d.activeTouch = { - start: now, - moved: false, - prev: now - prevTouch.end <= 300 ? prevTouch : null, - }; + var now = +new Date; + d.activeTouch = {start: now, moved: false, + prev: now - prevTouch.end <= 300 ? prevTouch : null}; if (e.touches.length == 1) { d.activeTouch.left = e.touches[0].pageX; d.activeTouch.top = e.touches[0].pageY; } } }); - on(d.scroller, 'touchmove', function () { - if (d.activeTouch) { - d.activeTouch.moved = true; - } + on(d.scroller, "touchmove", function () { + if (d.activeTouch) { d.activeTouch.moved = true; } }); - on(d.scroller, 'touchend', function (e) { + on(d.scroller, "touchend", function (e) { var touch = d.activeTouch; - if ( - touch && - !eventInWidget(d, e) && - touch.left != null && - !touch.moved && - new Date() - touch.start < 300 - ) { - var pos = cm.coordsChar(d.activeTouch, 'page'), - range; - if (!touch.prev || farAway(touch, touch.prev)) { - // Single tap - range = new Range(pos, pos); - } else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) { - // Double tap - range = cm.findWordAt(pos); - } // Triple tap - else { - range = new Range( - Pos(pos.line, 0), - clipPos(cm.doc, Pos(pos.line + 1, 0)), - ); - } + if (touch && !eventInWidget(d, e) && touch.left != null && + !touch.moved && new Date - touch.start < 300) { + var pos = cm.coordsChar(d.activeTouch, "page"), range; + if (!touch.prev || farAway(touch, touch.prev)) // Single tap + { range = new Range(pos, pos); } + else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap + { range = cm.findWordAt(pos); } + else // Triple tap + { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); } cm.setSelection(range.anchor, range.head); cm.focus(); e_preventDefault(e); } finishTouch(); }); - on(d.scroller, 'touchcancel', finishTouch); + on(d.scroller, "touchcancel", finishTouch); // Sync scrolling between fake scrollbars and real scrollable // area, ensure viewport is updated when scrolling. - on(d.scroller, 'scroll', function () { + on(d.scroller, "scroll", function () { if (d.scroller.clientHeight) { updateScrollTop(cm, d.scroller.scrollTop); setScrollLeft(cm, d.scroller.scrollLeft, true); - signal(cm, 'scroll', cm); + signal(cm, "scroll", cm); } }); // Listen to wheel events in order to try and update the viewport on time. - on(d.scroller, 'mousewheel', function (e) { - return onScrollWheel(cm, e); - }); - on(d.scroller, 'DOMMouseScroll', function (e) { - return onScrollWheel(cm, e); - }); + on(d.scroller, "mousewheel", function (e) { return onScrollWheel(cm, e); }); + on(d.scroller, "DOMMouseScroll", function (e) { return onScrollWheel(cm, e); }); // Prevent wrapper from ever scrolling - on(d.wrapper, 'scroll', function () { - return (d.wrapper.scrollTop = d.wrapper.scrollLeft = 0); - }); + on(d.wrapper, "scroll", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; }); d.dragFunctions = { - enter: function (e) { - if (!signalDOMEvent(cm, e)) { - e_stop(e); - } - }, - over: function (e) { - if (!signalDOMEvent(cm, e)) { - onDragOver(cm, e); - e_stop(e); - } - }, - start: function (e) { - return onDragStart(cm, e); - }, + enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e); }}, + over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }}, + start: function (e) { return onDragStart(cm, e); }, drop: operation(cm, onDrop), - leave: function (e) { - if (!signalDOMEvent(cm, e)) { - clearDragCursor(cm); - } - }, + leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }} }; var inp = d.input.getField(); - on(inp, 'keyup', function (e) { - return onKeyUp.call(cm, e); - }); - on(inp, 'keydown', operation(cm, onKeyDown)); - on(inp, 'keypress', operation(cm, onKeyPress)); - on(inp, 'focus', function (e) { - return onFocus(cm, e); - }); - on(inp, 'blur', function (e) { - return onBlur(cm, e); - }); + on(inp, "keyup", function (e) { return onKeyUp.call(cm, e); }); + on(inp, "keydown", operation(cm, onKeyDown)); + on(inp, "keypress", operation(cm, onKeyPress)); + on(inp, "focus", function (e) { return onFocus(cm, e); }); + on(inp, "blur", function (e) { return onBlur(cm, e); }); } var initHooks = []; - CodeMirror.defineInitHook = function (f) { - return initHooks.push(f); - }; + CodeMirror.defineInitHook = function (f) { return initHooks.push(f); }; // Indent the given line. The how parameter can be "smart", // "add"/null, "subtract", or "prev". When aggressive is false @@ -12211,82 +8108,50 @@ // lines are not indented, and places where the mode returns Pass // are left alone. function indentLine(cm, n, how, aggressive) { - var doc = cm.doc, - state; - if (how == null) { - how = 'add'; - } - if (how == 'smart') { + var doc = cm.doc, state; + if (how == null) { how = "add"; } + if (how == "smart") { // Fall back to "prev" when the mode doesn't have an indentation // method. - if (!doc.mode.indent) { - how = 'prev'; - } else { - state = getContextBefore(cm, n).state; - } + if (!doc.mode.indent) { how = "prev"; } + else { state = getContextBefore(cm, n).state; } } var tabSize = cm.options.tabSize; - var line = getLine(doc, n), - curSpace = countColumn(line.text, null, tabSize); - if (line.stateAfter) { - line.stateAfter = null; - } - var curSpaceString = line.text.match(/^\s*/)[0], - indentation; + var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize); + if (line.stateAfter) { line.stateAfter = null; } + var curSpaceString = line.text.match(/^\s*/)[0], indentation; if (!aggressive && !/\S/.test(line.text)) { indentation = 0; - how = 'not'; - } else if (how == 'smart') { - indentation = doc.mode.indent( - state, - line.text.slice(curSpaceString.length), - line.text, - ); + how = "not"; + } else if (how == "smart") { + indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text); if (indentation == Pass || indentation > 150) { - if (!aggressive) { - return; - } - how = 'prev'; + if (!aggressive) { return } + how = "prev"; } } - if (how == 'prev') { - if (n > doc.first) { - indentation = countColumn(getLine(doc, n - 1).text, null, tabSize); - } else { - indentation = 0; - } - } else if (how == 'add') { + if (how == "prev") { + if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize); } + else { indentation = 0; } + } else if (how == "add") { indentation = curSpace + cm.options.indentUnit; - } else if (how == 'subtract') { + } else if (how == "subtract") { indentation = curSpace - cm.options.indentUnit; - } else if (typeof how == 'number') { + } else if (typeof how == "number") { indentation = curSpace + how; } indentation = Math.max(0, indentation); - var indentString = '', - pos = 0; - if (cm.options.indentWithTabs) { - for (var i = Math.floor(indentation / tabSize); i; --i) { - pos += tabSize; - indentString += '\t'; - } - } - if (pos < indentation) { - indentString += spaceStr(indentation - pos); - } + var indentString = "", pos = 0; + if (cm.options.indentWithTabs) + { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += "\t";} } + if (pos < indentation) { indentString += spaceStr(indentation - pos); } if (indentString != curSpaceString) { - replaceRange( - doc, - indentString, - Pos(n, 0), - Pos(n, curSpaceString.length), - '+input', - ); + replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), "+input"); line.stateAfter = null; - return true; + return true } else { // Ensure that, if the cursor was in the whitespace at the start // of the line, it is moved to the end of that space. @@ -12295,7 +8160,7 @@ if (range.head.line == n && range.head.ch < curSpaceString.length) { var pos$1 = Pos(n, curSpaceString.length); replaceOneSelection(doc, i$1, new Range(pos$1, pos$1)); - break; + break } } } @@ -12313,182 +8178,114 @@ function applyTextInput(cm, inserted, deleted, sel, origin) { var doc = cm.doc; cm.display.shift = false; - if (!sel) { - sel = doc.sel; - } + if (!sel) { sel = doc.sel; } - var recent = +new Date() - 200; - var paste = origin == 'paste' || cm.state.pasteIncoming > recent; - var textLines = splitLinesAuto(inserted), - multiPaste = null; + var recent = +new Date - 200; + var paste = origin == "paste" || cm.state.pasteIncoming > recent; + var textLines = splitLinesAuto(inserted), multiPaste = null; // When pasting N lines into N selections, insert one line per selection if (paste && sel.ranges.length > 1) { - if (lastCopied && lastCopied.text.join('\n') == inserted) { + if (lastCopied && lastCopied.text.join("\n") == inserted) { if (sel.ranges.length % lastCopied.text.length == 0) { multiPaste = []; - for (var i = 0; i < lastCopied.text.length; i++) { - multiPaste.push(doc.splitLines(lastCopied.text[i])); - } + for (var i = 0; i < lastCopied.text.length; i++) + { multiPaste.push(doc.splitLines(lastCopied.text[i])); } } - } else if ( - textLines.length == sel.ranges.length && - cm.options.pasteLinesPerSelection - ) { - multiPaste = map(textLines, function (l) { - return [l]; - }); + } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) { + multiPaste = map(textLines, function (l) { return [l]; }); } } var updateInput = cm.curOp.updateInput; // Normal behavior is to insert the new text into every selection for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) { - var range$$1 = sel.ranges[i$1]; - var from = range$$1.from(), - to = range$$1.to(); - if (range$$1.empty()) { - if (deleted && deleted > 0) { - // Handle deletion - from = Pos(from.line, from.ch - deleted); - } else if (cm.state.overwrite && !paste) { - // Handle overwrite - to = Pos( - to.line, - Math.min( - getLine(doc, to.line).text.length, - to.ch + lst(textLines).length, - ), - ); - } else if ( - paste && - lastCopied && - lastCopied.lineWise && - lastCopied.text.join('\n') == inserted - ) { - from = to = Pos(from.line, 0); - } - } - var changeEvent = { - from: from, - to: to, - text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines, - origin: - origin || - (paste ? 'paste' : cm.state.cutIncoming > recent ? 'cut' : '+input'), - }; + var range = sel.ranges[i$1]; + var from = range.from(), to = range.to(); + if (range.empty()) { + if (deleted && deleted > 0) // Handle deletion + { from = Pos(from.line, from.ch - deleted); } + else if (cm.state.overwrite && !paste) // Handle overwrite + { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); } + else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join("\n") == textLines.join("\n")) + { from = to = Pos(from.line, 0); } + } + var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines, + origin: origin || (paste ? "paste" : cm.state.cutIncoming > recent ? "cut" : "+input")}; makeChange(cm.doc, changeEvent); - signalLater(cm, 'inputRead', cm, changeEvent); - } - if (inserted && !paste) { - triggerElectric(cm, inserted); + signalLater(cm, "inputRead", cm, changeEvent); } + if (inserted && !paste) + { triggerElectric(cm, inserted); } ensureCursorVisible(cm); - if (cm.curOp.updateInput < 2) { - cm.curOp.updateInput = updateInput; - } + if (cm.curOp.updateInput < 2) { cm.curOp.updateInput = updateInput; } cm.curOp.typing = true; cm.state.pasteIncoming = cm.state.cutIncoming = -1; } function handlePaste(e, cm) { - var pasted = e.clipboardData && e.clipboardData.getData('Text'); + var pasted = e.clipboardData && e.clipboardData.getData("Text"); if (pasted) { e.preventDefault(); - if (!cm.isReadOnly() && !cm.options.disableInput) { - runInOp(cm, function () { - return applyTextInput(cm, pasted, 0, null, 'paste'); - }); - } - return true; + if (!cm.isReadOnly() && !cm.options.disableInput && cm.hasFocus()) + { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, "paste"); }); } + return true } } function triggerElectric(cm, inserted) { // When an 'electric' character is inserted, immediately trigger a reindent - if (!cm.options.electricChars || !cm.options.smartIndent) { - return; - } + if (!cm.options.electricChars || !cm.options.smartIndent) { return } var sel = cm.doc.sel; for (var i = sel.ranges.length - 1; i >= 0; i--) { - var range$$1 = sel.ranges[i]; - if ( - range$$1.head.ch > 100 || - (i && sel.ranges[i - 1].head.line == range$$1.head.line) - ) { - continue; - } - var mode = cm.getModeAt(range$$1.head); + var range = sel.ranges[i]; + if (range.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range.head.line)) { continue } + var mode = cm.getModeAt(range.head); var indented = false; if (mode.electricChars) { - for (var j = 0; j < mode.electricChars.length; j++) { - if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) { - indented = indentLine(cm, range$$1.head.line, 'smart'); - break; - } - } + for (var j = 0; j < mode.electricChars.length; j++) + { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) { + indented = indentLine(cm, range.head.line, "smart"); + break + } } } else if (mode.electricInput) { - if ( - mode.electricInput.test( - getLine(cm.doc, range$$1.head.line).text.slice(0, range$$1.head.ch), - ) - ) { - indented = indentLine(cm, range$$1.head.line, 'smart'); - } - } - if (indented) { - signalLater(cm, 'electricInput', cm, range$$1.head.line); + if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch))) + { indented = indentLine(cm, range.head.line, "smart"); } } + if (indented) { signalLater(cm, "electricInput", cm, range.head.line); } } } function copyableRanges(cm) { - var text = [], - ranges = []; + var text = [], ranges = []; for (var i = 0; i < cm.doc.sel.ranges.length; i++) { var line = cm.doc.sel.ranges[i].head.line; - var lineRange = { anchor: Pos(line, 0), head: Pos(line + 1, 0) }; + var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)}; ranges.push(lineRange); text.push(cm.getRange(lineRange.anchor, lineRange.head)); } - return { text: text, ranges: ranges }; + return {text: text, ranges: ranges} } function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) { - field.setAttribute('autocorrect', autocorrect ? '' : 'off'); - field.setAttribute('autocapitalize', autocapitalize ? '' : 'off'); - field.setAttribute('spellcheck', !!spellcheck); + field.setAttribute("autocorrect", autocorrect ? "on" : "off"); + field.setAttribute("autocapitalize", autocapitalize ? "on" : "off"); + field.setAttribute("spellcheck", !!spellcheck); } function hiddenTextarea() { - var te = elt( - 'textarea', - null, - null, - 'position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none', - ); - var div = elt( - 'div', - [te], - null, - 'overflow: hidden; position: relative; width: 3px; height: 0px;', - ); + var te = elt("textarea", null, null, "position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; min-height: 1em; outline: none"); + var div = elt("div", [te], null, "overflow: hidden; position: relative; width: 3px; height: 0px;"); // The textarea is kept positioned near the cursor to prevent the // fact that it'll be scrolled into view on input from scrolling // our fake cursor out of view. On webkit, when wrap=off, paste is // very slow. So make the area wide instead. - if (webkit) { - te.style.width = '1000px'; - } else { - te.setAttribute('wrap', 'off'); - } + if (webkit) { te.style.width = "1000px"; } + else { te.setAttribute("wrap", "off"); } // If border: 0; -- iOS fails to open keyboard (issue #1287) - if (ios) { - te.style.border = '1px solid black'; - } - disableBrowserMagic(te); - return div; + if (ios) { te.style.border = "1px solid black"; } + return div } // The publicly visible API. Note that methodOp(f) means @@ -12502,200 +8299,133 @@ function addEditorMethods(CodeMirror) { var optionHandlers = CodeMirror.optionHandlers; - var helpers = (CodeMirror.helpers = {}); + var helpers = CodeMirror.helpers = {}; CodeMirror.prototype = { constructor: CodeMirror, - focus: function () { - window.focus(); - this.display.input.focus(); - }, + focus: function(){win(this).focus(); this.display.input.focus();}, - setOption: function (option, value) { - var options = this.options, - old = options[option]; - if (options[option] == value && option != 'mode') { - return; - } + setOption: function(option, value) { + var options = this.options, old = options[option]; + if (options[option] == value && option != "mode") { return } options[option] = value; - if (optionHandlers.hasOwnProperty(option)) { - operation(this, optionHandlers[option])(this, value, old); - } - signal(this, 'optionChange', this, option); + if (optionHandlers.hasOwnProperty(option)) + { operation(this, optionHandlers[option])(this, value, old); } + signal(this, "optionChange", this, option); }, - getOption: function (option) { - return this.options[option]; - }, - getDoc: function () { - return this.doc; - }, + getOption: function(option) {return this.options[option]}, + getDoc: function() {return this.doc}, - addKeyMap: function (map$$1, bottom) { - this.state.keyMaps[bottom ? 'push' : 'unshift'](getKeyMap(map$$1)); + addKeyMap: function(map, bottom) { + this.state.keyMaps[bottom ? "push" : "unshift"](getKeyMap(map)); }, - removeKeyMap: function (map$$1) { + removeKeyMap: function(map) { var maps = this.state.keyMaps; - for (var i = 0; i < maps.length; ++i) { - if (maps[i] == map$$1 || maps[i].name == map$$1) { + for (var i = 0; i < maps.length; ++i) + { if (maps[i] == map || maps[i].name == map) { maps.splice(i, 1); - return true; - } - } + return true + } } }, - addOverlay: methodOp(function (spec, options) { + addOverlay: methodOp(function(spec, options) { var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec); - if (mode.startState) { - throw new Error('Overlays may not be stateful.'); - } - insertSorted( - this.state.overlays, - { - mode: mode, - modeSpec: spec, - opaque: options && options.opaque, - priority: (options && options.priority) || 0, - }, - function (overlay) { - return overlay.priority; - }, - ); + if (mode.startState) { throw new Error("Overlays may not be stateful.") } + insertSorted(this.state.overlays, + {mode: mode, modeSpec: spec, opaque: options && options.opaque, + priority: (options && options.priority) || 0}, + function (overlay) { return overlay.priority; }); this.state.modeGen++; regChange(this); }), - removeOverlay: methodOp(function (spec) { - var this$1 = this; - + removeOverlay: methodOp(function(spec) { var overlays = this.state.overlays; for (var i = 0; i < overlays.length; ++i) { var cur = overlays[i].modeSpec; - if (cur == spec || (typeof spec == 'string' && cur.name == spec)) { + if (cur == spec || typeof spec == "string" && cur.name == spec) { overlays.splice(i, 1); - this$1.state.modeGen++; - regChange(this$1); - return; + this.state.modeGen++; + regChange(this); + return } } }), - indentLine: methodOp(function (n, dir, aggressive) { - if (typeof dir != 'string' && typeof dir != 'number') { - if (dir == null) { - dir = this.options.smartIndent ? 'smart' : 'prev'; - } else { - dir = dir ? 'add' : 'subtract'; - } - } - if (isLine(this.doc, n)) { - indentLine(this, n, dir, aggressive); + indentLine: methodOp(function(n, dir, aggressive) { + if (typeof dir != "string" && typeof dir != "number") { + if (dir == null) { dir = this.options.smartIndent ? "smart" : "prev"; } + else { dir = dir ? "add" : "subtract"; } } + if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive); } }), - indentSelection: methodOp(function (how) { - var this$1 = this; - - var ranges = this.doc.sel.ranges, - end = -1; + indentSelection: methodOp(function(how) { + var ranges = this.doc.sel.ranges, end = -1; for (var i = 0; i < ranges.length; i++) { - var range$$1 = ranges[i]; - if (!range$$1.empty()) { - var from = range$$1.from(), - to = range$$1.to(); + var range = ranges[i]; + if (!range.empty()) { + var from = range.from(), to = range.to(); var start = Math.max(end, from.line); - end = Math.min(this$1.lastLine(), to.line - (to.ch ? 0 : 1)) + 1; - for (var j = start; j < end; ++j) { - indentLine(this$1, j, how); - } - var newRanges = this$1.doc.sel.ranges; - if ( - from.ch == 0 && - ranges.length == newRanges.length && - newRanges[i].from().ch > 0 - ) { - replaceOneSelection( - this$1.doc, - i, - new Range(from, newRanges[i].to()), - sel_dontScroll, - ); - } - } else if (range$$1.head.line > end) { - indentLine(this$1, range$$1.head.line, how, true); - end = range$$1.head.line; - if (i == this$1.doc.sel.primIndex) { - ensureCursorVisible(this$1); - } + end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1; + for (var j = start; j < end; ++j) + { indentLine(this, j, how); } + var newRanges = this.doc.sel.ranges; + if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0) + { replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); } + } else if (range.head.line > end) { + indentLine(this, range.head.line, how, true); + end = range.head.line; + if (i == this.doc.sel.primIndex) { ensureCursorVisible(this); } } } }), // Fetch the parser token for a given character. Useful for hacks // that want to inspect the mode state (say, for completion). - getTokenAt: function (pos, precise) { - return takeToken(this, pos, precise); + getTokenAt: function(pos, precise) { + return takeToken(this, pos, precise) }, - getLineTokens: function (line, precise) { - return takeToken(this, Pos(line), precise, true); + getLineTokens: function(line, precise) { + return takeToken(this, Pos(line), precise, true) }, - getTokenTypeAt: function (pos) { + getTokenTypeAt: function(pos) { pos = clipPos(this.doc, pos); var styles = getLineStyles(this, getLine(this.doc, pos.line)); - var before = 0, - after = (styles.length - 1) / 2, - ch = pos.ch; + var before = 0, after = (styles.length - 1) / 2, ch = pos.ch; var type; - if (ch == 0) { - type = styles[2]; - } else { - for (;;) { - var mid = (before + after) >> 1; - if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { - after = mid; - } else if (styles[mid * 2 + 1] < ch) { - before = mid + 1; - } else { - type = styles[mid * 2 + 2]; - break; - } - } - } - var cut = type ? type.indexOf('overlay ') : -1; - return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1); + if (ch == 0) { type = styles[2]; } + else { for (;;) { + var mid = (before + after) >> 1; + if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid; } + else if (styles[mid * 2 + 1] < ch) { before = mid + 1; } + else { type = styles[mid * 2 + 2]; break } + } } + var cut = type ? type.indexOf("overlay ") : -1; + return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1) }, - getModeAt: function (pos) { + getModeAt: function(pos) { var mode = this.doc.mode; - if (!mode.innerMode) { - return mode; - } - return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode; + if (!mode.innerMode) { return mode } + return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode }, - getHelper: function (pos, type) { - return this.getHelpers(pos, type)[0]; - }, - - getHelpers: function (pos, type) { - var this$1 = this; + getHelper: function(pos, type) { + return this.getHelpers(pos, type)[0] + }, + getHelpers: function(pos, type) { var found = []; - if (!helpers.hasOwnProperty(type)) { - return found; - } - var help = helpers[type], - mode = this.getModeAt(pos); - if (typeof mode[type] == 'string') { - if (help[mode[type]]) { - found.push(help[mode[type]]); - } + if (!helpers.hasOwnProperty(type)) { return found } + var help = helpers[type], mode = this.getModeAt(pos); + if (typeof mode[type] == "string") { + if (help[mode[type]]) { found.push(help[mode[type]]); } } else if (mode[type]) { for (var i = 0; i < mode[type].length; i++) { var val = help[mode[type][i]]; - if (val) { - found.push(val); - } + if (val) { found.push(val); } } } else if (mode.helperType && help[mode.helperType]) { found.push(help[mode.helperType]); @@ -12704,137 +8434,91 @@ } for (var i$1 = 0; i$1 < help._global.length; i$1++) { var cur = help._global[i$1]; - if (cur.pred(mode, this$1) && indexOf(found, cur.val) == -1) { - found.push(cur.val); - } + if (cur.pred(mode, this) && indexOf(found, cur.val) == -1) + { found.push(cur.val); } } - return found; + return found }, - getStateAfter: function (line, precise) { + getStateAfter: function(line, precise) { var doc = this.doc; - line = clipLine(doc, line == null ? doc.first + doc.size - 1 : line); - return getContextBefore(this, line + 1, precise).state; + line = clipLine(doc, line == null ? doc.first + doc.size - 1: line); + return getContextBefore(this, line + 1, precise).state }, - cursorCoords: function (start, mode) { - var pos, - range$$1 = this.doc.sel.primary(); - if (start == null) { - pos = range$$1.head; - } else if (typeof start == 'object') { - pos = clipPos(this.doc, start); - } else { - pos = start ? range$$1.from() : range$$1.to(); - } - return cursorCoords(this, pos, mode || 'page'); + cursorCoords: function(start, mode) { + var pos, range = this.doc.sel.primary(); + if (start == null) { pos = range.head; } + else if (typeof start == "object") { pos = clipPos(this.doc, start); } + else { pos = start ? range.from() : range.to(); } + return cursorCoords(this, pos, mode || "page") }, - charCoords: function (pos, mode) { - return charCoords(this, clipPos(this.doc, pos), mode || 'page'); + charCoords: function(pos, mode) { + return charCoords(this, clipPos(this.doc, pos), mode || "page") }, - coordsChar: function (coords, mode) { - coords = fromCoordSystem(this, coords, mode || 'page'); - return coordsChar(this, coords.left, coords.top); + coordsChar: function(coords, mode) { + coords = fromCoordSystem(this, coords, mode || "page"); + return coordsChar(this, coords.left, coords.top) }, - lineAtHeight: function (height, mode) { - height = fromCoordSystem( - this, - { top: height, left: 0 }, - mode || 'page', - ).top; - return lineAtHeight(this.doc, height + this.display.viewOffset); + lineAtHeight: function(height, mode) { + height = fromCoordSystem(this, {top: height, left: 0}, mode || "page").top; + return lineAtHeight(this.doc, height + this.display.viewOffset) }, - heightAtLine: function (line, mode, includeWidgets) { - var end = false, - lineObj; - if (typeof line == 'number') { + heightAtLine: function(line, mode, includeWidgets) { + var end = false, lineObj; + if (typeof line == "number") { var last = this.doc.first + this.doc.size - 1; - if (line < this.doc.first) { - line = this.doc.first; - } else if (line > last) { - line = last; - end = true; - } + if (line < this.doc.first) { line = this.doc.first; } + else if (line > last) { line = last; end = true; } lineObj = getLine(this.doc, line); } else { lineObj = line; } - return ( - intoCoordSystem( - this, - lineObj, - { top: 0, left: 0 }, - mode || 'page', - includeWidgets || end, - ).top + (end ? this.doc.height - heightAtLine(lineObj) : 0) - ); + return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || "page", includeWidgets || end).top + + (end ? this.doc.height - heightAtLine(lineObj) : 0) }, - defaultTextHeight: function () { - return textHeight(this.display); - }, - defaultCharWidth: function () { - return charWidth(this.display); - }, + defaultTextHeight: function() { return textHeight(this.display) }, + defaultCharWidth: function() { return charWidth(this.display) }, - getViewport: function () { - return { from: this.display.viewFrom, to: this.display.viewTo }; - }, + getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}}, - addWidget: function (pos, node, scroll, vert, horiz) { + addWidget: function(pos, node, scroll, vert, horiz) { var display = this.display; pos = cursorCoords(this, clipPos(this.doc, pos)); - var top = pos.bottom, - left = pos.left; - node.style.position = 'absolute'; - node.setAttribute('cm-ignore-events', 'true'); + var top = pos.bottom, left = pos.left; + node.style.position = "absolute"; + node.setAttribute("cm-ignore-events", "true"); this.display.input.setUneditable(node); display.sizer.appendChild(node); - if (vert == 'over') { + if (vert == "over") { top = pos.top; - } else if (vert == 'above' || vert == 'near') { + } else if (vert == "above" || vert == "near") { var vspace = Math.max(display.wrapper.clientHeight, this.doc.height), - hspace = Math.max( - display.sizer.clientWidth, - display.lineSpace.clientWidth, - ); + hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth); // Default to positioning above (if specified and possible); otherwise default to positioning below - if ( - (vert == 'above' || pos.bottom + node.offsetHeight > vspace) && - pos.top > node.offsetHeight - ) { - top = pos.top - node.offsetHeight; - } else if (pos.bottom + node.offsetHeight <= vspace) { - top = pos.bottom; - } - if (left + node.offsetWidth > hspace) { - left = hspace - node.offsetWidth; - } - } - node.style.top = top + 'px'; - node.style.left = node.style.right = ''; - if (horiz == 'right') { + if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight) + { top = pos.top - node.offsetHeight; } + else if (pos.bottom + node.offsetHeight <= vspace) + { top = pos.bottom; } + if (left + node.offsetWidth > hspace) + { left = hspace - node.offsetWidth; } + } + node.style.top = top + "px"; + node.style.left = node.style.right = ""; + if (horiz == "right") { left = display.sizer.clientWidth - node.offsetWidth; - node.style.right = '0px'; + node.style.right = "0px"; } else { - if (horiz == 'left') { - left = 0; - } else if (horiz == 'middle') { - left = (display.sizer.clientWidth - node.offsetWidth) / 2; - } - node.style.left = left + 'px'; - } - if (scroll) { - scrollIntoView(this, { - left: left, - top: top, - right: left + node.offsetWidth, - bottom: top + node.offsetHeight, - }); + if (horiz == "left") { left = 0; } + else if (horiz == "middle") { left = (display.sizer.clientWidth - node.offsetWidth) / 2; } + node.style.left = left + "px"; } + if (scroll) + { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}); } }, triggerOnKeyDown: methodOp(onKeyDown), @@ -12842,462 +8526,310 @@ triggerOnKeyUp: onKeyUp, triggerOnMouseDown: methodOp(onMouseDown), - execCommand: function (cmd) { - if (commands.hasOwnProperty(cmd)) { - return commands[cmd].call(null, this); - } + execCommand: function(cmd) { + if (commands.hasOwnProperty(cmd)) + { return commands[cmd].call(null, this) } }, - triggerElectric: methodOp(function (text) { - triggerElectric(this, text); - }), - - findPosH: function (from, amount, unit, visually) { - var this$1 = this; + triggerElectric: methodOp(function(text) { triggerElectric(this, text); }), + findPosH: function(from, amount, unit, visually) { var dir = 1; - if (amount < 0) { - dir = -1; - amount = -amount; - } + if (amount < 0) { dir = -1; amount = -amount; } var cur = clipPos(this.doc, from); for (var i = 0; i < amount; ++i) { - cur = findPosH(this$1.doc, cur, dir, unit, visually); - if (cur.hitSide) { - break; - } + cur = findPosH(this.doc, cur, dir, unit, visually); + if (cur.hitSide) { break } } - return cur; + return cur }, - moveH: methodOp(function (dir, unit) { + moveH: methodOp(function(dir, unit) { var this$1 = this; - this.extendSelectionsBy(function (range$$1) { - if (this$1.display.shift || this$1.doc.extend || range$$1.empty()) { - return findPosH( - this$1.doc, - range$$1.head, - dir, - unit, - this$1.options.rtlMoveVisually, - ); - } else { - return dir < 0 ? range$$1.from() : range$$1.to(); - } + this.extendSelectionsBy(function (range) { + if (this$1.display.shift || this$1.doc.extend || range.empty()) + { return findPosH(this$1.doc, range.head, dir, unit, this$1.options.rtlMoveVisually) } + else + { return dir < 0 ? range.from() : range.to() } }, sel_move); }), - deleteH: methodOp(function (dir, unit) { - var sel = this.doc.sel, - doc = this.doc; - if (sel.somethingSelected()) { - doc.replaceSelection('', null, '+delete'); - } else { - deleteNearSelection(this, function (range$$1) { - var other = findPosH(doc, range$$1.head, dir, unit, false); - return dir < 0 - ? { from: other, to: range$$1.head } - : { from: range$$1.head, to: other }; - }); - } + deleteH: methodOp(function(dir, unit) { + var sel = this.doc.sel, doc = this.doc; + if (sel.somethingSelected()) + { doc.replaceSelection("", null, "+delete"); } + else + { deleteNearSelection(this, function (range) { + var other = findPosH(doc, range.head, dir, unit, false); + return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other} + }); } }), - findPosV: function (from, amount, unit, goalColumn) { - var this$1 = this; - - var dir = 1, - x = goalColumn; - if (amount < 0) { - dir = -1; - amount = -amount; - } + findPosV: function(from, amount, unit, goalColumn) { + var dir = 1, x = goalColumn; + if (amount < 0) { dir = -1; amount = -amount; } var cur = clipPos(this.doc, from); for (var i = 0; i < amount; ++i) { - var coords = cursorCoords(this$1, cur, 'div'); - if (x == null) { - x = coords.left; - } else { - coords.left = x; - } - cur = findPosV(this$1, coords, dir, unit); - if (cur.hitSide) { - break; - } + var coords = cursorCoords(this, cur, "div"); + if (x == null) { x = coords.left; } + else { coords.left = x; } + cur = findPosV(this, coords, dir, unit); + if (cur.hitSide) { break } } - return cur; + return cur }, - moveV: methodOp(function (dir, unit) { + moveV: methodOp(function(dir, unit) { var this$1 = this; - var doc = this.doc, - goals = []; - var collapse = - !this.display.shift && !doc.extend && doc.sel.somethingSelected(); - doc.extendSelectionsBy(function (range$$1) { - if (collapse) { - return dir < 0 ? range$$1.from() : range$$1.to(); - } - var headPos = cursorCoords(this$1, range$$1.head, 'div'); - if (range$$1.goalColumn != null) { - headPos.left = range$$1.goalColumn; - } + var doc = this.doc, goals = []; + var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected(); + doc.extendSelectionsBy(function (range) { + if (collapse) + { return dir < 0 ? range.from() : range.to() } + var headPos = cursorCoords(this$1, range.head, "div"); + if (range.goalColumn != null) { headPos.left = range.goalColumn; } goals.push(headPos.left); var pos = findPosV(this$1, headPos, dir, unit); - if (unit == 'page' && range$$1 == doc.sel.primary()) { - addToScrollTop( - this$1, - charCoords(this$1, pos, 'div').top - headPos.top, - ); - } - return pos; + if (unit == "page" && range == doc.sel.primary()) + { addToScrollTop(this$1, charCoords(this$1, pos, "div").top - headPos.top); } + return pos }, sel_move); - if (goals.length) { - for (var i = 0; i < doc.sel.ranges.length; i++) { - doc.sel.ranges[i].goalColumn = goals[i]; - } - } + if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++) + { doc.sel.ranges[i].goalColumn = goals[i]; } } }), // Find the word at the given position (as returned by coordsChar). - findWordAt: function (pos) { - var doc = this.doc, - line = getLine(doc, pos.line).text; - var start = pos.ch, - end = pos.ch; + findWordAt: function(pos) { + var doc = this.doc, line = getLine(doc, pos.line).text; + var start = pos.ch, end = pos.ch; if (line) { - var helper = this.getHelper(pos, 'wordChars'); - if ((pos.sticky == 'before' || end == line.length) && start) { - --start; - } else { - ++end; - } + var helper = this.getHelper(pos, "wordChars"); + if ((pos.sticky == "before" || end == line.length) && start) { --start; } else { ++end; } var startChar = line.charAt(start); var check = isWordChar(startChar, helper) - ? function (ch) { - return isWordChar(ch, helper); - } - : /\s/.test(startChar) - ? function (ch) { - return /\s/.test(ch); - } - : function (ch) { - return !/\s/.test(ch) && !isWordChar(ch); - }; - while (start > 0 && check(line.charAt(start - 1))) { - --start; - } - while (end < line.length && check(line.charAt(end))) { - ++end; - } + ? function (ch) { return isWordChar(ch, helper); } + : /\s/.test(startChar) ? function (ch) { return /\s/.test(ch); } + : function (ch) { return (!/\s/.test(ch) && !isWordChar(ch)); }; + while (start > 0 && check(line.charAt(start - 1))) { --start; } + while (end < line.length && check(line.charAt(end))) { ++end; } } - return new Range(Pos(pos.line, start), Pos(pos.line, end)); + return new Range(Pos(pos.line, start), Pos(pos.line, end)) }, - toggleOverwrite: function (value) { - if (value != null && value == this.state.overwrite) { - return; - } - if ((this.state.overwrite = !this.state.overwrite)) { - addClass(this.display.cursorDiv, 'CodeMirror-overwrite'); - } else { - rmClass(this.display.cursorDiv, 'CodeMirror-overwrite'); - } + toggleOverwrite: function(value) { + if (value != null && value == this.state.overwrite) { return } + if (this.state.overwrite = !this.state.overwrite) + { addClass(this.display.cursorDiv, "CodeMirror-overwrite"); } + else + { rmClass(this.display.cursorDiv, "CodeMirror-overwrite"); } - signal(this, 'overwriteToggle', this, this.state.overwrite); - }, - hasFocus: function () { - return this.display.input.getField() == activeElt(); - }, - isReadOnly: function () { - return !!(this.options.readOnly || this.doc.cantEdit); + signal(this, "overwriteToggle", this, this.state.overwrite); }, + hasFocus: function() { return this.display.input.getField() == activeElt(root(this)) }, + isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) }, - scrollTo: methodOp(function (x, y) { - scrollToCoords(this, x, y); - }), - getScrollInfo: function () { + scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y); }), + getScrollInfo: function() { var scroller = this.display.scroller; - return { - left: scroller.scrollLeft, - top: scroller.scrollTop, - height: - scroller.scrollHeight - scrollGap(this) - this.display.barHeight, - width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth, - clientHeight: displayHeight(this), - clientWidth: displayWidth(this), - }; + return {left: scroller.scrollLeft, top: scroller.scrollTop, + height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight, + width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth, + clientHeight: displayHeight(this), clientWidth: displayWidth(this)} }, - scrollIntoView: methodOp(function (range$$1, margin) { - if (range$$1 == null) { - range$$1 = { from: this.doc.sel.primary().head, to: null }; - if (margin == null) { - margin = this.options.cursorScrollMargin; - } - } else if (typeof range$$1 == 'number') { - range$$1 = { from: Pos(range$$1, 0), to: null }; - } else if (range$$1.from == null) { - range$$1 = { from: range$$1, to: null }; - } - if (!range$$1.to) { - range$$1.to = range$$1.from; + scrollIntoView: methodOp(function(range, margin) { + if (range == null) { + range = {from: this.doc.sel.primary().head, to: null}; + if (margin == null) { margin = this.options.cursorScrollMargin; } + } else if (typeof range == "number") { + range = {from: Pos(range, 0), to: null}; + } else if (range.from == null) { + range = {from: range, to: null}; } - range$$1.margin = margin || 0; + if (!range.to) { range.to = range.from; } + range.margin = margin || 0; - if (range$$1.from.line != null) { - scrollToRange(this, range$$1); + if (range.from.line != null) { + scrollToRange(this, range); } else { - scrollToCoordsRange( - this, - range$$1.from, - range$$1.to, - range$$1.margin, - ); + scrollToCoordsRange(this, range.from, range.to, range.margin); } }), - setSize: methodOp(function (width, height) { + setSize: methodOp(function(width, height) { var this$1 = this; - var interpret = function (val) { - return typeof val == 'number' || /^\d+$/.test(String(val)) - ? val + 'px' - : val; - }; - if (width != null) { - this.display.wrapper.style.width = interpret(width); - } - if (height != null) { - this.display.wrapper.style.height = interpret(height); - } - if (this.options.lineWrapping) { - clearLineMeasurementCache(this); - } - var lineNo$$1 = this.display.viewFrom; - this.doc.iter(lineNo$$1, this.display.viewTo, function (line) { - if (line.widgets) { - for (var i = 0; i < line.widgets.length; i++) { - if (line.widgets[i].noHScroll) { - regLineChange(this$1, lineNo$$1, 'widget'); - break; - } - } - } - ++lineNo$$1; + var interpret = function (val) { return typeof val == "number" || /^\d+$/.test(String(val)) ? val + "px" : val; }; + if (width != null) { this.display.wrapper.style.width = interpret(width); } + if (height != null) { this.display.wrapper.style.height = interpret(height); } + if (this.options.lineWrapping) { clearLineMeasurementCache(this); } + var lineNo = this.display.viewFrom; + this.doc.iter(lineNo, this.display.viewTo, function (line) { + if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) + { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo, "widget"); break } } } + ++lineNo; }); this.curOp.forceUpdate = true; - signal(this, 'refresh', this); + signal(this, "refresh", this); }), - operation: function (f) { - return runInOp(this, f); - }, - startOperation: function () { - return startOperation(this); - }, - endOperation: function () { - return endOperation(this); - }, + operation: function(f){return runInOp(this, f)}, + startOperation: function(){return startOperation(this)}, + endOperation: function(){return endOperation(this)}, - refresh: methodOp(function () { + refresh: methodOp(function() { var oldHeight = this.display.cachedTextHeight; regChange(this); this.curOp.forceUpdate = true; clearCaches(this); scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop); updateGutterSpace(this.display); - if ( - oldHeight == null || - Math.abs(oldHeight - textHeight(this.display)) > 0.5 - ) { - estimateLineHeights(this); - } - signal(this, 'refresh', this); + if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5 || this.options.lineWrapping) + { estimateLineHeights(this); } + signal(this, "refresh", this); }), - swapDoc: methodOp(function (doc) { + swapDoc: methodOp(function(doc) { var old = this.doc; old.cm = null; // Cancel the current text selection if any (#5821) - if (this.state.selectingText) { - this.state.selectingText(); - } + if (this.state.selectingText) { this.state.selectingText(); } attachDoc(this, doc); clearCaches(this); this.display.input.reset(); scrollToCoords(this, doc.scrollLeft, doc.scrollTop); this.curOp.forceScroll = true; - signalLater(this, 'swapDoc', this, old); - return old; + signalLater(this, "swapDoc", this, old); + return old }), - phrase: function (phraseText) { + phrase: function(phraseText) { var phrases = this.options.phrases; - return phrases && - Object.prototype.hasOwnProperty.call(phrases, phraseText) - ? phrases[phraseText] - : phraseText; + return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText }, - getInputField: function () { - return this.display.input.getField(); - }, - getWrapperElement: function () { - return this.display.wrapper; - }, - getScrollerElement: function () { - return this.display.scroller; - }, - getGutterElement: function () { - return this.display.gutters; - }, + getInputField: function(){return this.display.input.getField()}, + getWrapperElement: function(){return this.display.wrapper}, + getScrollerElement: function(){return this.display.scroller}, + getGutterElement: function(){return this.display.gutters} }; eventMixin(CodeMirror); - CodeMirror.registerHelper = function (type, name, value) { - if (!helpers.hasOwnProperty(type)) { - helpers[type] = CodeMirror[type] = { _global: [] }; - } + CodeMirror.registerHelper = function(type, name, value) { + if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []}; } helpers[type][name] = value; }; - CodeMirror.registerGlobalHelper = function (type, name, predicate, value) { + CodeMirror.registerGlobalHelper = function(type, name, predicate, value) { CodeMirror.registerHelper(type, name, value); - helpers[type]._global.push({ pred: predicate, val: value }); + helpers[type]._global.push({pred: predicate, val: value}); }; } // Used for horizontal relative motion. Dir is -1 or 1 (left or - // right), unit can be "char", "column" (like char, but doesn't - // cross line boundaries), "word" (across next word), or "group" (to - // the start of next group of word or non-word-non-whitespace - // chars). The visually param controls whether, in right-to-left - // text, direction 1 means to move towards the next index in the - // string, or towards the character to the right of the current - // position. The resulting position will have a hitSide=true - // property if it reached the end of the document. + // right), unit can be "codepoint", "char", "column" (like char, but + // doesn't cross line boundaries), "word" (across next word), or + // "group" (to the start of next group of word or + // non-word-non-whitespace chars). The visually param controls + // whether, in right-to-left text, direction 1 means to move towards + // the next index in the string, or towards the character to the right + // of the current position. The resulting position will have a + // hitSide=true property if it reached the end of the document. function findPosH(doc, pos, dir, unit, visually) { var oldPos = pos; var origDir = dir; var lineObj = getLine(doc, pos.line); - var lineDir = - visually && doc.cm && doc.cm.getOption('direction') == 'rtl' ? -dir : dir; + var lineDir = visually && doc.direction == "rtl" ? -dir : dir; function findNextLine() { var l = pos.line + lineDir; - if (l < doc.first || l >= doc.first + doc.size) { - return false; - } + if (l < doc.first || l >= doc.first + doc.size) { return false } pos = new Pos(l, pos.ch, pos.sticky); - return (lineObj = getLine(doc, l)); + return lineObj = getLine(doc, l) } function moveOnce(boundToLine) { var next; - if (visually) { + if (unit == "codepoint") { + var ch = lineObj.text.charCodeAt(pos.ch + (dir > 0 ? 0 : -1)); + if (isNaN(ch)) { + next = null; + } else { + var astral = dir > 0 ? ch >= 0xD800 && ch < 0xDC00 : ch >= 0xDC00 && ch < 0xDFFF; + next = new Pos(pos.line, Math.max(0, Math.min(lineObj.text.length, pos.ch + dir * (astral ? 2 : 1))), -dir); + } + } else if (visually) { next = moveVisually(doc.cm, lineObj, pos, dir); } else { next = moveLogically(lineObj, pos, dir); } if (next == null) { - if (!boundToLine && findNextLine()) { - pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir); - } else { - return false; - } + if (!boundToLine && findNextLine()) + { pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir); } + else + { return false } } else { pos = next; } - return true; + return true } - if (unit == 'char') { + if (unit == "char" || unit == "codepoint") { moveOnce(); - } else if (unit == 'column') { + } else if (unit == "column") { moveOnce(true); - } else if (unit == 'word' || unit == 'group') { - var sawType = null, - group = unit == 'group'; - var helper = doc.cm && doc.cm.getHelper(pos, 'wordChars'); - for (var first = true; ; first = false) { - if (dir < 0 && !moveOnce(!first)) { - break; - } - var cur = lineObj.text.charAt(pos.ch) || '\n'; - var type = isWordChar(cur, helper) - ? 'w' - : group && cur == '\n' - ? 'n' - : !group || /\s/.test(cur) - ? null - : 'p'; - if (group && !first && !type) { - type = 's'; - } + } else if (unit == "word" || unit == "group") { + var sawType = null, group = unit == "group"; + var helper = doc.cm && doc.cm.getHelper(pos, "wordChars"); + for (var first = true;; first = false) { + if (dir < 0 && !moveOnce(!first)) { break } + var cur = lineObj.text.charAt(pos.ch) || "\n"; + var type = isWordChar(cur, helper) ? "w" + : group && cur == "\n" ? "n" + : !group || /\s/.test(cur) ? null + : "p"; + if (group && !first && !type) { type = "s"; } if (sawType && sawType != type) { - if (dir < 0) { - dir = 1; - moveOnce(); - pos.sticky = 'after'; - } - break; + if (dir < 0) {dir = 1; moveOnce(); pos.sticky = "after";} + break } - if (type) { - sawType = type; - } - if (dir > 0 && !moveOnce(!first)) { - break; - } + if (type) { sawType = type; } + if (dir > 0 && !moveOnce(!first)) { break } } } var result = skipAtomic(doc, pos, oldPos, origDir, true); - if (equalCursorPos(oldPos, result)) { - result.hitSide = true; - } - return result; + if (equalCursorPos(oldPos, result)) { result.hitSide = true; } + return result } // For relative vertical movement. Dir may be -1 or 1. Unit can be // "page" or "line". The resulting position will have a hitSide=true // property if it reached the end of the document. function findPosV(cm, pos, dir, unit) { - var doc = cm.doc, - x = pos.left, - y; - if (unit == 'page') { - var pageSize = Math.min( - cm.display.wrapper.clientHeight, - window.innerHeight || document.documentElement.clientHeight, - ); - var moveAmount = Math.max(pageSize - 0.5 * textHeight(cm.display), 3); + var doc = cm.doc, x = pos.left, y; + if (unit == "page") { + var pageSize = Math.min(cm.display.wrapper.clientHeight, win(cm).innerHeight || doc(cm).documentElement.clientHeight); + var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3); y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount; - } else if (unit == 'line') { + + } else if (unit == "line") { y = dir > 0 ? pos.bottom + 3 : pos.top - 3; } var target; for (;;) { target = coordsChar(cm, x, y); - if (!target.outside) { - break; - } - if (dir < 0 ? y <= 0 : y >= doc.height) { - target.hitSide = true; - break; - } + if (!target.outside) { break } + if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break } y += dir * 5; } - return target; + return target } // CONTENTEDITABLE INPUT STYLE - var ContentEditableInput = function (cm) { + var ContentEditableInput = function(cm) { this.cm = cm; - this.lastAnchorNode = - this.lastAnchorOffset = - this.lastFocusNode = - this.lastFocusOffset = - null; + this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null; this.polling = new Delayed(); this.composing = null; this.gracePeriod = false; @@ -13305,189 +8837,149 @@ }; ContentEditableInput.prototype.init = function (display) { - var this$1 = this; + var this$1 = this; - var input = this, - cm = input.cm; - var div = (input.div = display.lineDiv); - disableBrowserMagic( - div, - cm.options.spellcheck, - cm.options.autocorrect, - cm.options.autocapitalize, - ); + var input = this, cm = input.cm; + var div = input.div = display.lineDiv; + div.contentEditable = true; + disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize); - on(div, 'paste', function (e) { - if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { - return; + function belongsToInput(e) { + for (var t = e.target; t; t = t.parentNode) { + if (t == div) { return true } + if (/\bCodeMirror-(?:line)?widget\b/.test(t.className)) { break } } + return false + } + + on(div, "paste", function (e) { + if (!belongsToInput(e) || signalDOMEvent(cm, e) || handlePaste(e, cm)) { return } // IE doesn't fire input events, so we schedule a read for the pasted content in this way - if (ie_version <= 11) { - setTimeout( - operation(cm, function () { - return this$1.updateFromDOM(); - }), - 20, - ); - } + if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20); } }); - on(div, 'compositionstart', function (e) { - this$1.composing = { data: e.data, done: false }; + on(div, "compositionstart", function (e) { + this$1.composing = {data: e.data, done: false}; }); - on(div, 'compositionupdate', function (e) { - if (!this$1.composing) { - this$1.composing = { data: e.data, done: false }; - } + on(div, "compositionupdate", function (e) { + if (!this$1.composing) { this$1.composing = {data: e.data, done: false}; } }); - on(div, 'compositionend', function (e) { + on(div, "compositionend", function (e) { if (this$1.composing) { - if (e.data != this$1.composing.data) { - this$1.readFromDOMSoon(); - } + if (e.data != this$1.composing.data) { this$1.readFromDOMSoon(); } this$1.composing.done = true; } }); - on(div, 'touchstart', function () { - return input.forceCompositionEnd(); - }); + on(div, "touchstart", function () { return input.forceCompositionEnd(); }); - on(div, 'input', function () { - if (!this$1.composing) { - this$1.readFromDOMSoon(); - } + on(div, "input", function () { + if (!this$1.composing) { this$1.readFromDOMSoon(); } }); function onCopyCut(e) { - if (signalDOMEvent(cm, e)) { - return; - } + if (!belongsToInput(e) || signalDOMEvent(cm, e)) { return } if (cm.somethingSelected()) { - setLastCopied({ lineWise: false, text: cm.getSelections() }); - if (e.type == 'cut') { - cm.replaceSelection('', null, 'cut'); - } + setLastCopied({lineWise: false, text: cm.getSelections()}); + if (e.type == "cut") { cm.replaceSelection("", null, "cut"); } } else if (!cm.options.lineWiseCopyCut) { - return; + return } else { var ranges = copyableRanges(cm); - setLastCopied({ lineWise: true, text: ranges.text }); - if (e.type == 'cut') { + setLastCopied({lineWise: true, text: ranges.text}); + if (e.type == "cut") { cm.operation(function () { cm.setSelections(ranges.ranges, 0, sel_dontScroll); - cm.replaceSelection('', null, 'cut'); + cm.replaceSelection("", null, "cut"); }); } } if (e.clipboardData) { e.clipboardData.clearData(); - var content = lastCopied.text.join('\n'); + var content = lastCopied.text.join("\n"); // iOS exposes the clipboard API, but seems to discard content inserted into it - e.clipboardData.setData('Text', content); - if (e.clipboardData.getData('Text') == content) { + e.clipboardData.setData("Text", content); + if (e.clipboardData.getData("Text") == content) { e.preventDefault(); - return; + return } } // Old-fashioned briefly-focus-a-textarea hack - var kludge = hiddenTextarea(), - te = kludge.firstChild; - cm.display.lineSpace.insertBefore( - kludge, - cm.display.lineSpace.firstChild, - ); - te.value = lastCopied.text.join('\n'); - var hadFocus = document.activeElement; + var kludge = hiddenTextarea(), te = kludge.firstChild; + disableBrowserMagic(te); + cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild); + te.value = lastCopied.text.join("\n"); + var hadFocus = activeElt(rootNode(div)); selectInput(te); setTimeout(function () { cm.display.lineSpace.removeChild(kludge); hadFocus.focus(); - if (hadFocus == div) { - input.showPrimarySelection(); - } + if (hadFocus == div) { input.showPrimarySelection(); } }, 50); } - on(div, 'copy', onCopyCut); - on(div, 'cut', onCopyCut); + on(div, "copy", onCopyCut); + on(div, "cut", onCopyCut); + }; + + ContentEditableInput.prototype.screenReaderLabelChanged = function (label) { + // Label for screenreaders, accessibility + if(label) { + this.div.setAttribute('aria-label', label); + } else { + this.div.removeAttribute('aria-label'); + } }; ContentEditableInput.prototype.prepareSelection = function () { var result = prepareSelection(this.cm, false); - result.focus = this.cm.state.focused; - return result; + result.focus = activeElt(rootNode(this.div)) == this.div; + return result }; ContentEditableInput.prototype.showSelection = function (info, takeFocus) { - if (!info || !this.cm.display.view.length) { - return; - } - if (info.focus || takeFocus) { - this.showPrimarySelection(); - } + if (!info || !this.cm.display.view.length) { return } + if (info.focus || takeFocus) { this.showPrimarySelection(); } this.showMultipleSelections(info); }; ContentEditableInput.prototype.getSelection = function () { - return this.cm.display.wrapper.ownerDocument.getSelection(); + return this.cm.display.wrapper.ownerDocument.getSelection() }; ContentEditableInput.prototype.showPrimarySelection = function () { - var sel = this.getSelection(), - cm = this.cm, - prim = cm.doc.sel.primary(); - var from = prim.from(), - to = prim.to(); - - if ( - cm.display.viewTo == cm.display.viewFrom || - from.line >= cm.display.viewTo || - to.line < cm.display.viewFrom - ) { + var sel = this.getSelection(), cm = this.cm, prim = cm.doc.sel.primary(); + var from = prim.from(), to = prim.to(); + + if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) { sel.removeAllRanges(); - return; + return } var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset); var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset); - if ( - curAnchor && - !curAnchor.bad && - curFocus && - !curFocus.bad && - cmp(minPos(curAnchor, curFocus), from) == 0 && - cmp(maxPos(curAnchor, curFocus), to) == 0 - ) { - return; - } + if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad && + cmp(minPos(curAnchor, curFocus), from) == 0 && + cmp(maxPos(curAnchor, curFocus), to) == 0) + { return } var view = cm.display.view; - var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) || { - node: view[0].measure.map[2], - offset: 0, - }; + var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) || + {node: view[0].measure.map[2], offset: 0}; var end = to.line < cm.display.viewTo && posToDOM(cm, to); if (!end) { var measure = view[view.length - 1].measure; - var map$$1 = measure.maps - ? measure.maps[measure.maps.length - 1] - : measure.map; - end = { - node: map$$1[map$$1.length - 1], - offset: map$$1[map$$1.length - 2] - map$$1[map$$1.length - 3], - }; + var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map; + end = {node: map[map.length - 1], offset: map[map.length - 2] - map[map.length - 3]}; } if (!start || !end) { sel.removeAllRanges(); - return; + return } - var old = sel.rangeCount && sel.getRangeAt(0), - rng; - try { - rng = range(start.node, start.offset, end.offset, end.node); - } catch (e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible + var old = sel.rangeCount && sel.getRangeAt(0), rng; + try { rng = range(start.node, start.offset, end.offset, end.node); } + catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible if (rng) { if (!gecko && cm.state.focused) { sel.collapse(start.node, start.offset); @@ -13499,26 +8991,20 @@ sel.removeAllRanges(); sel.addRange(rng); } - if (old && sel.anchorNode == null) { - sel.addRange(old); - } else if (gecko) { - this.startGracePeriod(); - } + if (old && sel.anchorNode == null) { sel.addRange(old); } + else if (gecko) { this.startGracePeriod(); } } this.rememberSelection(); }; ContentEditableInput.prototype.startGracePeriod = function () { - var this$1 = this; + var this$1 = this; clearTimeout(this.gracePeriod); this.gracePeriod = setTimeout(function () { this$1.gracePeriod = false; - if (this$1.selectionChanged()) { - this$1.cm.operation(function () { - return (this$1.cm.curOp.selectionChanged = true); - }); - } + if (this$1.selectionChanged()) + { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }); } }, 20); }; @@ -13529,49 +9015,37 @@ ContentEditableInput.prototype.rememberSelection = function () { var sel = this.getSelection(); - this.lastAnchorNode = sel.anchorNode; - this.lastAnchorOffset = sel.anchorOffset; - this.lastFocusNode = sel.focusNode; - this.lastFocusOffset = sel.focusOffset; + this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset; + this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset; }; ContentEditableInput.prototype.selectionInEditor = function () { var sel = this.getSelection(); - if (!sel.rangeCount) { - return false; - } + if (!sel.rangeCount) { return false } var node = sel.getRangeAt(0).commonAncestorContainer; - return contains(this.div, node); + return contains(this.div, node) }; ContentEditableInput.prototype.focus = function () { - if (this.cm.options.readOnly != 'nocursor') { - if (!this.selectionInEditor()) { - this.showSelection(this.prepareSelection(), true); - } + if (this.cm.options.readOnly != "nocursor") { + if (!this.selectionInEditor() || activeElt(rootNode(this.div)) != this.div) + { this.showSelection(this.prepareSelection(), true); } this.div.focus(); } }; - ContentEditableInput.prototype.blur = function () { - this.div.blur(); - }; - ContentEditableInput.prototype.getField = function () { - return this.div; - }; + ContentEditableInput.prototype.blur = function () { this.div.blur(); }; + ContentEditableInput.prototype.getField = function () { return this.div }; - ContentEditableInput.prototype.supportsTouch = function () { - return true; - }; + ContentEditableInput.prototype.supportsTouch = function () { return true }; ContentEditableInput.prototype.receivedFocus = function () { + var this$1 = this; + var input = this; - if (this.selectionInEditor()) { - this.pollSelection(); - } else { - runInOp(this.cm, function () { - return (input.cm.curOp.selectionChanged = true); - }); - } + if (this.selectionInEditor()) + { setTimeout(function () { return this$1.pollSelection(); }, 20); } + else + { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); } function poll() { if (input.cm.state.focused) { @@ -13584,59 +9058,33 @@ ContentEditableInput.prototype.selectionChanged = function () { var sel = this.getSelection(); - return ( - sel.anchorNode != this.lastAnchorNode || - sel.anchorOffset != this.lastAnchorOffset || - sel.focusNode != this.lastFocusNode || - sel.focusOffset != this.lastFocusOffset - ); + return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset || + sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset }; ContentEditableInput.prototype.pollSelection = function () { - if ( - this.readDOMTimeout != null || - this.gracePeriod || - !this.selectionChanged() - ) { - return; - } - var sel = this.getSelection(), - cm = this.cm; + if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return } + var sel = this.getSelection(), cm = this.cm; // On Android Chrome (version 56, at least), backspacing into an // uneditable block element will put the cursor in that element, // and then, because it's not editable, hide the virtual keyboard. // Because Android doesn't allow us to actually detect backspace // presses in a sane way, this code checks for when that happens // and simulates a backspace press in this case. - if ( - android && - chrome && - this.cm.display.gutterSpecs.length && - isInGutter(sel.anchorNode) - ) { - this.cm.triggerOnKeyDown({ - type: 'keydown', - keyCode: 8, - preventDefault: Math.abs, - }); + if (android && chrome && this.cm.display.gutterSpecs.length && isInGutter(sel.anchorNode)) { + this.cm.triggerOnKeyDown({type: "keydown", keyCode: 8, preventDefault: Math.abs}); this.blur(); this.focus(); - return; - } - if (this.composing) { - return; + return } + if (this.composing) { return } this.rememberSelection(); var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset); var head = domToPos(cm, sel.focusNode, sel.focusOffset); - if (anchor && head) { - runInOp(cm, function () { - setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll); - if (anchor.bad || head.bad) { - cm.curOp.selectionChanged = true; - } - }); - } + if (anchor && head) { runInOp(cm, function () { + setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll); + if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true; } + }); } }; ContentEditableInput.prototype.pollContent = function () { @@ -13645,29 +9093,16 @@ this.readDOMTimeout = null; } - var cm = this.cm, - display = cm.display, - sel = cm.doc.sel.primary(); - var from = sel.from(), - to = sel.to(); - if (from.ch == 0 && from.line > cm.firstLine()) { - from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); - } - if ( - to.ch == getLine(cm.doc, to.line).text.length && - to.line < cm.lastLine() - ) { - to = Pos(to.line + 1, 0); - } - if (from.line < display.viewFrom || to.line > display.viewTo - 1) { - return false; - } + var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary(); + var from = sel.from(), to = sel.to(); + if (from.ch == 0 && from.line > cm.firstLine()) + { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); } + if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine()) + { to = Pos(to.line + 1, 0); } + if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false } var fromIndex, fromLine, fromNode; - if ( - from.line == display.viewFrom || - (fromIndex = findViewIndex(cm, from.line)) == 0 - ) { + if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) { fromLine = lineNo(display.view[0].line); fromNode = display.view[0].node; } else { @@ -13684,78 +9119,42 @@ toNode = display.view[toIndex + 1].node.previousSibling; } - if (!fromNode) { - return false; - } - var newText = cm.doc.splitLines( - domTextBetween(cm, fromNode, toNode, fromLine, toLine), - ); - var oldText = getBetween( - cm.doc, - Pos(fromLine, 0), - Pos(toLine, getLine(cm.doc, toLine).text.length), - ); + if (!fromNode) { return false } + var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine)); + var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length)); while (newText.length > 1 && oldText.length > 1) { - if (lst(newText) == lst(oldText)) { - newText.pop(); - oldText.pop(); - toLine--; - } else if (newText[0] == oldText[0]) { - newText.shift(); - oldText.shift(); - fromLine++; - } else { - break; - } - } - - var cutFront = 0, - cutEnd = 0; - var newTop = newText[0], - oldTop = oldText[0], - maxCutFront = Math.min(newTop.length, oldTop.length); - while ( - cutFront < maxCutFront && - newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront) - ) { - ++cutFront; - } - var newBot = lst(newText), - oldBot = lst(oldText); - var maxCutEnd = Math.min( - newBot.length - (newText.length == 1 ? cutFront : 0), - oldBot.length - (oldText.length == 1 ? cutFront : 0), - ); - while ( - cutEnd < maxCutEnd && - newBot.charCodeAt(newBot.length - cutEnd - 1) == - oldBot.charCodeAt(oldBot.length - cutEnd - 1) - ) { - ++cutEnd; - } + if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; } + else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; } + else { break } + } + + var cutFront = 0, cutEnd = 0; + var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length); + while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront)) + { ++cutFront; } + var newBot = lst(newText), oldBot = lst(oldText); + var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0), + oldBot.length - (oldText.length == 1 ? cutFront : 0)); + while (cutEnd < maxCutEnd && + newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) + { ++cutEnd; } // Try to move start of change to start of selection if ambiguous if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) { - while ( - cutFront && - cutFront > from.ch && - newBot.charCodeAt(newBot.length - cutEnd - 1) == - oldBot.charCodeAt(oldBot.length - cutEnd - 1) - ) { + while (cutFront && cutFront > from.ch && + newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) { cutFront--; cutEnd++; } } - newText[newText.length - 1] = newBot - .slice(0, newBot.length - cutEnd) - .replace(/^\u200b+/, ''); - newText[0] = newText[0].slice(cutFront).replace(/\u200b+$/, ''); + newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\u200b+/, ""); + newText[0] = newText[0].slice(cutFront).replace(/\u200b+$/, ""); var chFrom = Pos(fromLine, cutFront); var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0); if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) { - replaceRange(cm.doc, newText, chFrom, chTo, '+input'); - return true; + replaceRange(cm.doc, newText, chFrom, chTo, "+input"); + return true } }; @@ -13766,9 +9165,7 @@ this.forceCompositionEnd(); }; ContentEditableInput.prototype.forceCompositionEnd = function () { - if (!this.composing) { - return; - } + if (!this.composing) { return } clearTimeout(this.readDOMTimeout); this.composing = null; this.updateFromDOM(); @@ -13776,54 +9173,39 @@ this.div.focus(); }; ContentEditableInput.prototype.readFromDOMSoon = function () { - var this$1 = this; + var this$1 = this; - if (this.readDOMTimeout != null) { - return; - } + if (this.readDOMTimeout != null) { return } this.readDOMTimeout = setTimeout(function () { this$1.readDOMTimeout = null; if (this$1.composing) { - if (this$1.composing.done) { - this$1.composing = null; - } else { - return; - } + if (this$1.composing.done) { this$1.composing = null; } + else { return } } this$1.updateFromDOM(); }, 80); }; ContentEditableInput.prototype.updateFromDOM = function () { - var this$1 = this; + var this$1 = this; - if (this.cm.isReadOnly() || !this.pollContent()) { - runInOp(this.cm, function () { - return regChange(this$1.cm); - }); - } + if (this.cm.isReadOnly() || !this.pollContent()) + { runInOp(this.cm, function () { return regChange(this$1.cm); }); } }; ContentEditableInput.prototype.setUneditable = function (node) { - node.contentEditable = 'false'; + node.contentEditable = "false"; }; ContentEditableInput.prototype.onKeyPress = function (e) { - if (e.charCode == 0 || this.composing) { - return; - } + if (e.charCode == 0 || this.composing) { return } e.preventDefault(); - if (!this.cm.isReadOnly()) { - operation(this.cm, applyTextInput)( - this.cm, - String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), - 0, - ); - } + if (!this.cm.isReadOnly()) + { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); } }; ContentEditableInput.prototype.readOnlyChanged = function (val) { - this.div.contentEditable = String(val != 'nocursor'); + this.div.contentEditable = String(val != "nocursor"); }; ContentEditableInput.prototype.onContextMenu = function () {}; @@ -13833,55 +9215,35 @@ function posToDOM(cm, pos) { var view = findViewForLine(cm, pos.line); - if (!view || view.hidden) { - return null; - } + if (!view || view.hidden) { return null } var line = getLine(cm.doc, pos.line); var info = mapFromLineView(view, line, pos.line); - var order = getOrder(line, cm.doc.direction), - side = 'left'; + var order = getOrder(line, cm.doc.direction), side = "left"; if (order) { var partPos = getBidiPartAt(order, pos.ch); - side = partPos % 2 ? 'right' : 'left'; + side = partPos % 2 ? "right" : "left"; } var result = nodeAndOffsetInLineMap(info.map, pos.ch, side); - result.offset = result.collapse == 'right' ? result.end : result.start; - return result; + result.offset = result.collapse == "right" ? result.end : result.start; + return result } function isInGutter(node) { - for (var scan = node; scan; scan = scan.parentNode) { - if (/CodeMirror-gutter-wrapper/.test(scan.className)) { - return true; - } - } - return false; + for (var scan = node; scan; scan = scan.parentNode) + { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true } } + return false } - function badPos(pos, bad) { - if (bad) { - pos.bad = true; - } - return pos; - } + function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos } function domTextBetween(cm, from, to, fromLine, toLine) { - var text = '', - closing = false, - lineSep = cm.doc.lineSeparator(), - extraLinebreak = false; - function recognizeMarker(id) { - return function (marker) { - return marker.id == id; - }; - } + var text = "", closing = false, lineSep = cm.doc.lineSeparator(), extraLinebreak = false; + function recognizeMarker(id) { return function (marker) { return marker.id == id; } } function close() { if (closing) { text += lineSep; - if (extraLinebreak) { - text += lineSep; - } + if (extraLinebreak) { text += lineSep; } closing = extraLinebreak = false; } } @@ -13893,178 +9255,121 @@ } function walk(node) { if (node.nodeType == 1) { - var cmText = node.getAttribute('cm-text'); + var cmText = node.getAttribute("cm-text"); if (cmText) { addText(cmText); - return; + return } - var markerID = node.getAttribute('cm-marker'), - range$$1; + var markerID = node.getAttribute("cm-marker"), range; if (markerID) { - var found = cm.findMarks( - Pos(fromLine, 0), - Pos(toLine + 1, 0), - recognizeMarker(+markerID), - ); - if (found.length && (range$$1 = found[0].find(0))) { - addText( - getBetween(cm.doc, range$$1.from, range$$1.to).join(lineSep), - ); - } - return; - } - if (node.getAttribute('contenteditable') == 'false') { - return; + var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID)); + if (found.length && (range = found[0].find(0))) + { addText(getBetween(cm.doc, range.from, range.to).join(lineSep)); } + return } + if (node.getAttribute("contenteditable") == "false") { return } var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName); - if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) { - return; - } + if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) { return } - if (isBlock) { - close(); - } - for (var i = 0; i < node.childNodes.length; i++) { - walk(node.childNodes[i]); - } + if (isBlock) { close(); } + for (var i = 0; i < node.childNodes.length; i++) + { walk(node.childNodes[i]); } - if (/^(pre|p)$/i.test(node.nodeName)) { - extraLinebreak = true; - } - if (isBlock) { - closing = true; - } + if (/^(pre|p)$/i.test(node.nodeName)) { extraLinebreak = true; } + if (isBlock) { closing = true; } } else if (node.nodeType == 3) { - addText(node.nodeValue.replace(/\u200b/g, '').replace(/\u00a0/g, ' ')); + addText(node.nodeValue.replace(/\u200b/g, "").replace(/\u00a0/g, " ")); } } for (;;) { walk(from); - if (from == to) { - break; - } + if (from == to) { break } from = from.nextSibling; extraLinebreak = false; } - return text; + return text } function domToPos(cm, node, offset) { var lineNode; if (node == cm.display.lineDiv) { lineNode = cm.display.lineDiv.childNodes[offset]; - if (!lineNode) { - return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true); - } - node = null; - offset = 0; + if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) } + node = null; offset = 0; } else { - for (lineNode = node; ; lineNode = lineNode.parentNode) { - if (!lineNode || lineNode == cm.display.lineDiv) { - return null; - } - if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { - break; - } + for (lineNode = node;; lineNode = lineNode.parentNode) { + if (!lineNode || lineNode == cm.display.lineDiv) { return null } + if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break } } } for (var i = 0; i < cm.display.view.length; i++) { var lineView = cm.display.view[i]; - if (lineView.node == lineNode) { - return locateNodeInLineView(lineView, node, offset); - } + if (lineView.node == lineNode) + { return locateNodeInLineView(lineView, node, offset) } } } function locateNodeInLineView(lineView, node, offset) { - var wrapper = lineView.text.firstChild, - bad = false; - if (!node || !contains(wrapper, node)) { - return badPos(Pos(lineNo(lineView.line), 0), true); - } + var wrapper = lineView.text.firstChild, bad = false; + if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) } if (node == wrapper) { bad = true; node = wrapper.childNodes[offset]; offset = 0; if (!node) { var line = lineView.rest ? lst(lineView.rest) : lineView.line; - return badPos(Pos(lineNo(line), line.text.length), bad); + return badPos(Pos(lineNo(line), line.text.length), bad) } } - var textNode = node.nodeType == 3 ? node : null, - topNode = node; - if ( - !textNode && - node.childNodes.length == 1 && - node.firstChild.nodeType == 3 - ) { + var textNode = node.nodeType == 3 ? node : null, topNode = node; + if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) { textNode = node.firstChild; - if (offset) { - offset = textNode.nodeValue.length; - } + if (offset) { offset = textNode.nodeValue.length; } } - while (topNode.parentNode != wrapper) { - topNode = topNode.parentNode; - } - var measure = lineView.measure, - maps = measure.maps; + while (topNode.parentNode != wrapper) { topNode = topNode.parentNode; } + var measure = lineView.measure, maps = measure.maps; function find(textNode, topNode, offset) { for (var i = -1; i < (maps ? maps.length : 0); i++) { - var map$$1 = i < 0 ? measure.map : maps[i]; - for (var j = 0; j < map$$1.length; j += 3) { - var curNode = map$$1[j + 2]; + var map = i < 0 ? measure.map : maps[i]; + for (var j = 0; j < map.length; j += 3) { + var curNode = map[j + 2]; if (curNode == textNode || curNode == topNode) { var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]); - var ch = map$$1[j] + offset; - if (offset < 0 || curNode != textNode) { - ch = map$$1[j + (offset ? 1 : 0)]; - } - return Pos(line, ch); + var ch = map[j] + offset; + if (offset < 0 || curNode != textNode) { ch = map[j + (offset ? 1 : 0)]; } + return Pos(line, ch) } } } } var found = find(textNode, topNode, offset); - if (found) { - return badPos(found, bad); - } + if (found) { return badPos(found, bad) } // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems - for ( - var after = topNode.nextSibling, - dist = textNode ? textNode.nodeValue.length - offset : 0; - after; - after = after.nextSibling - ) { + for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) { found = find(after, after.firstChild, 0); - if (found) { - return badPos(Pos(found.line, found.ch - dist), bad); - } else { - dist += after.textContent.length; - } + if (found) + { return badPos(Pos(found.line, found.ch - dist), bad) } + else + { dist += after.textContent.length; } } - for ( - var before = topNode.previousSibling, dist$1 = offset; - before; - before = before.previousSibling - ) { + for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) { found = find(before, before.firstChild, -1); - if (found) { - return badPos(Pos(found.line, found.ch + dist$1), bad); - } else { - dist$1 += before.textContent.length; - } + if (found) + { return badPos(Pos(found.line, found.ch + dist$1), bad) } + else + { dist$1 += before.textContent.length; } } } // TEXTAREA INPUT STYLE - var TextareaInput = function (cm) { + var TextareaInput = function(cm) { this.cm = cm; // See input.poll and input.reset - this.prevInput = ''; + this.prevInput = ""; // Flag that indicates whether we expect input to appear real soon // now (after some event like 'keypress' or 'input') and are @@ -14075,101 +9380,83 @@ // Used to work around IE issue with selection being forgotten when focus moves away from textarea this.hasSelection = false; this.composing = null; + this.resetting = false; }; TextareaInput.prototype.init = function (display) { - var this$1 = this; + var this$1 = this; - var input = this, - cm = this.cm; + var input = this, cm = this.cm; this.createField(display); var te = this.textarea; display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild); // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore) - if (ios) { - te.style.width = '0px'; - } + if (ios) { te.style.width = "0px"; } - on(te, 'input', function () { - if (ie && ie_version >= 9 && this$1.hasSelection) { - this$1.hasSelection = null; - } + on(te, "input", function () { + if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null; } input.poll(); }); - on(te, 'paste', function (e) { - if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { - return; - } + on(te, "paste", function (e) { + if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return } - cm.state.pasteIncoming = +new Date(); + cm.state.pasteIncoming = +new Date; input.fastPoll(); }); function prepareCopyCut(e) { - if (signalDOMEvent(cm, e)) { - return; - } + if (signalDOMEvent(cm, e)) { return } if (cm.somethingSelected()) { - setLastCopied({ lineWise: false, text: cm.getSelections() }); + setLastCopied({lineWise: false, text: cm.getSelections()}); } else if (!cm.options.lineWiseCopyCut) { - return; + return } else { var ranges = copyableRanges(cm); - setLastCopied({ lineWise: true, text: ranges.text }); - if (e.type == 'cut') { + setLastCopied({lineWise: true, text: ranges.text}); + if (e.type == "cut") { cm.setSelections(ranges.ranges, null, sel_dontScroll); } else { - input.prevInput = ''; - te.value = ranges.text.join('\n'); + input.prevInput = ""; + te.value = ranges.text.join("\n"); selectInput(te); } } - if (e.type == 'cut') { - cm.state.cutIncoming = +new Date(); - } + if (e.type == "cut") { cm.state.cutIncoming = +new Date; } } - on(te, 'cut', prepareCopyCut); - on(te, 'copy', prepareCopyCut); + on(te, "cut", prepareCopyCut); + on(te, "copy", prepareCopyCut); - on(display.scroller, 'paste', function (e) { - if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { - return; - } + on(display.scroller, "paste", function (e) { + if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return } if (!te.dispatchEvent) { - cm.state.pasteIncoming = +new Date(); + cm.state.pasteIncoming = +new Date; input.focus(); - return; + return } // Pass the `paste` event to the textarea so it's handled by its event listener. - var event = new Event('paste'); + var event = new Event("paste"); event.clipboardData = e.clipboardData; te.dispatchEvent(event); }); // Prevent normal selection in the editor (we handle our own) - on(display.lineSpace, 'selectstart', function (e) { - if (!eventInWidget(display, e)) { - e_preventDefault(e); - } + on(display.lineSpace, "selectstart", function (e) { + if (!eventInWidget(display, e)) { e_preventDefault(e); } }); - on(te, 'compositionstart', function () { - var start = cm.getCursor('from'); - if (input.composing) { - input.composing.range.clear(); - } + on(te, "compositionstart", function () { + var start = cm.getCursor("from"); + if (input.composing) { input.composing.range.clear(); } input.composing = { start: start, - range: cm.markText(start, cm.getCursor('to'), { - className: 'CodeMirror-composing', - }), + range: cm.markText(start, cm.getCursor("to"), {className: "CodeMirror-composing"}) }; }); - on(te, 'compositionend', function () { + on(te, "compositionend", function () { if (input.composing) { input.poll(); input.composing.range.clear(); @@ -14184,119 +9471,94 @@ // The semihidden textarea that is focused when the editor is // focused, and receives input. this.textarea = this.wrapper.firstChild; + var opts = this.cm.options; + disableBrowserMagic(this.textarea, opts.spellcheck, opts.autocorrect, opts.autocapitalize); + }; + + TextareaInput.prototype.screenReaderLabelChanged = function (label) { + // Label for screenreaders, accessibility + if(label) { + this.textarea.setAttribute('aria-label', label); + } else { + this.textarea.removeAttribute('aria-label'); + } }; TextareaInput.prototype.prepareSelection = function () { // Redraw the selection and/or cursor - var cm = this.cm, - display = cm.display, - doc = cm.doc; + var cm = this.cm, display = cm.display, doc = cm.doc; var result = prepareSelection(cm); // Move the hidden textarea near the cursor to prevent scrolling artifacts if (cm.options.moveInputWithCursor) { - var headPos = cursorCoords(cm, doc.sel.primary().head, 'div'); - var wrapOff = display.wrapper.getBoundingClientRect(), - lineOff = display.lineDiv.getBoundingClientRect(); - result.teTop = Math.max( - 0, - Math.min( - display.wrapper.clientHeight - 10, - headPos.top + lineOff.top - wrapOff.top, - ), - ); - result.teLeft = Math.max( - 0, - Math.min( - display.wrapper.clientWidth - 10, - headPos.left + lineOff.left - wrapOff.left, - ), - ); - } - - return result; + var headPos = cursorCoords(cm, doc.sel.primary().head, "div"); + var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect(); + result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10, + headPos.top + lineOff.top - wrapOff.top)); + result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10, + headPos.left + lineOff.left - wrapOff.left)); + } + + return result }; TextareaInput.prototype.showSelection = function (drawn) { - var cm = this.cm, - display = cm.display; + var cm = this.cm, display = cm.display; removeChildrenAndAdd(display.cursorDiv, drawn.cursors); removeChildrenAndAdd(display.selectionDiv, drawn.selection); if (drawn.teTop != null) { - this.wrapper.style.top = drawn.teTop + 'px'; - this.wrapper.style.left = drawn.teLeft + 'px'; + this.wrapper.style.top = drawn.teTop + "px"; + this.wrapper.style.left = drawn.teLeft + "px"; } }; // Reset the input to correspond to the selection (or to be empty, // when not typing and nothing is selected) TextareaInput.prototype.reset = function (typing) { - if (this.contextMenuPending || this.composing) { - return; - } + if (this.contextMenuPending || this.composing && typing) { return } var cm = this.cm; + this.resetting = true; if (cm.somethingSelected()) { - this.prevInput = ''; + this.prevInput = ""; var content = cm.getSelection(); this.textarea.value = content; - if (cm.state.focused) { - selectInput(this.textarea); - } - if (ie && ie_version >= 9) { - this.hasSelection = content; - } + if (cm.state.focused) { selectInput(this.textarea); } + if (ie && ie_version >= 9) { this.hasSelection = content; } } else if (!typing) { - this.prevInput = this.textarea.value = ''; - if (ie && ie_version >= 9) { - this.hasSelection = null; - } + this.prevInput = this.textarea.value = ""; + if (ie && ie_version >= 9) { this.hasSelection = null; } } + this.resetting = false; }; - TextareaInput.prototype.getField = function () { - return this.textarea; - }; + TextareaInput.prototype.getField = function () { return this.textarea }; - TextareaInput.prototype.supportsTouch = function () { - return false; - }; + TextareaInput.prototype.supportsTouch = function () { return false }; TextareaInput.prototype.focus = function () { - if ( - this.cm.options.readOnly != 'nocursor' && - (!mobile || activeElt() != this.textarea) - ) { - try { - this.textarea.focus(); - } catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM + if (this.cm.options.readOnly != "nocursor" && (!mobile || activeElt(rootNode(this.textarea)) != this.textarea)) { + try { this.textarea.focus(); } + catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM } }; - TextareaInput.prototype.blur = function () { - this.textarea.blur(); - }; + TextareaInput.prototype.blur = function () { this.textarea.blur(); }; TextareaInput.prototype.resetPosition = function () { this.wrapper.style.top = this.wrapper.style.left = 0; }; - TextareaInput.prototype.receivedFocus = function () { - this.slowPoll(); - }; + TextareaInput.prototype.receivedFocus = function () { this.slowPoll(); }; // Poll for input changes, using the normal rate of polling. This // runs as long as the editor is focused. TextareaInput.prototype.slowPoll = function () { - var this$1 = this; + var this$1 = this; - if (this.pollingFast) { - return; - } + if (this.pollingFast) { return } this.polling.set(this.cm.options.pollInterval, function () { this$1.poll(); - if (this$1.cm.state.focused) { - this$1.slowPoll(); - } + if (this$1.cm.state.focused) { this$1.slowPoll(); } }); }; @@ -14304,18 +9566,12 @@ // something in the input textarea, we poll faster, to ensure that // the change appears on the screen quickly. TextareaInput.prototype.fastPoll = function () { - var missed = false, - input = this; + var missed = false, input = this; input.pollingFast = true; function p() { var changed = input.poll(); - if (!changed && !missed) { - missed = true; - input.polling.set(60, p); - } else { - input.pollingFast = false; - input.slowPoll(); - } + if (!changed && !missed) {missed = true; input.polling.set(60, p);} + else {input.pollingFast = false; input.slowPoll();} } input.polling.set(20, p); }; @@ -14327,146 +9583,88 @@ // seen text (can be empty), which is stored in prevInput (we must // not reset the textarea when typing, because that breaks IME). TextareaInput.prototype.poll = function () { - var this$1 = this; + var this$1 = this; - var cm = this.cm, - input = this.textarea, - prevInput = this.prevInput; + var cm = this.cm, input = this.textarea, prevInput = this.prevInput; // Since this is called a *lot*, try to bail out as cheaply as // possible when it is clear that nothing happened. hasSelection // will be the case when there is a lot of text in the textarea, // in which case reading its value would be expensive. - if ( - this.contextMenuPending || - !cm.state.focused || - (hasSelection(input) && !prevInput && !this.composing) || - cm.isReadOnly() || - cm.options.disableInput || - cm.state.keySeq - ) { - return false; - } + if (this.contextMenuPending || this.resetting || !cm.state.focused || + (hasSelection(input) && !prevInput && !this.composing) || + cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq) + { return false } var text = input.value; // If nothing changed, bail. - if (text == prevInput && !cm.somethingSelected()) { - return false; - } + if (text == prevInput && !cm.somethingSelected()) { return false } // Work around nonsensical selection resetting in IE9/10, and // inexplicable appearance of private area unicode characters on // some key combos in Mac (#2689). - if ( - (ie && ie_version >= 9 && this.hasSelection === text) || - (mac && /[\uf700-\uf7ff]/.test(text)) - ) { + if (ie && ie_version >= 9 && this.hasSelection === text || + mac && /[\uf700-\uf7ff]/.test(text)) { cm.display.input.reset(); - return false; + return false } if (cm.doc.sel == cm.display.selForContextMenu) { var first = text.charCodeAt(0); - if (first == 0x200b && !prevInput) { - prevInput = '\u200b'; - } - if (first == 0x21da) { - this.reset(); - return this.cm.execCommand('undo'); - } + if (first == 0x200b && !prevInput) { prevInput = "\u200b"; } + if (first == 0x21da) { this.reset(); return this.cm.execCommand("undo") } } // Find the part of the input that is actually new - var same = 0, - l = Math.min(prevInput.length, text.length); - while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { - ++same; - } + var same = 0, l = Math.min(prevInput.length, text.length); + while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same; } runInOp(cm, function () { - applyTextInput( - cm, - text.slice(same), - prevInput.length - same, - null, - this$1.composing ? '*compose' : null, - ); + applyTextInput(cm, text.slice(same), prevInput.length - same, + null, this$1.composing ? "*compose" : null); // Don't leave long text in the textarea, since it makes further polling slow - if (text.length > 1000 || text.indexOf('\n') > -1) { - input.value = this$1.prevInput = ''; - } else { - this$1.prevInput = text; - } + if (text.length > 1000 || text.indexOf("\n") > -1) { input.value = this$1.prevInput = ""; } + else { this$1.prevInput = text; } if (this$1.composing) { this$1.composing.range.clear(); - this$1.composing.range = cm.markText( - this$1.composing.start, - cm.getCursor('to'), - { className: 'CodeMirror-composing' }, - ); + this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor("to"), + {className: "CodeMirror-composing"}); } }); - return true; + return true }; TextareaInput.prototype.ensurePolled = function () { - if (this.pollingFast && this.poll()) { - this.pollingFast = false; - } + if (this.pollingFast && this.poll()) { this.pollingFast = false; } }; TextareaInput.prototype.onKeyPress = function () { - if (ie && ie_version >= 9) { - this.hasSelection = null; - } + if (ie && ie_version >= 9) { this.hasSelection = null; } this.fastPoll(); }; TextareaInput.prototype.onContextMenu = function (e) { - var input = this, - cm = input.cm, - display = cm.display, - te = input.textarea; - if (input.contextMenuPending) { - input.contextMenuPending(); - } - var pos = posFromMouse(cm, e), - scrollPos = display.scroller.scrollTop; - if (!pos || presto) { - return; - } // Opera is difficult. + var input = this, cm = input.cm, display = cm.display, te = input.textarea; + if (input.contextMenuPending) { input.contextMenuPending(); } + var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop; + if (!pos || presto) { return } // Opera is difficult. // Reset the current text selection only if the click is done outside of the selection // and 'resetSelectionOnContextMenu' option is true. var reset = cm.options.resetSelectionOnContextMenu; - if (reset && cm.doc.sel.contains(pos) == -1) { - operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); - } + if (reset && cm.doc.sel.contains(pos) == -1) + { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); } - var oldCSS = te.style.cssText, - oldWrapperCSS = input.wrapper.style.cssText; + var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText; var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect(); - input.wrapper.style.cssText = 'position: static'; - te.style.cssText = - 'position: absolute; width: 30px; height: 30px;\n top: ' + - (e.clientY - wrapperBox.top - 5) + - 'px; left: ' + - (e.clientX - wrapperBox.left - 5) + - 'px;\n z-index: 1000; background: ' + - (ie ? 'rgba(255, 255, 255, .05)' : 'transparent') + - ';\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);'; + input.wrapper.style.cssText = "position: static"; + te.style.cssText = "position: absolute; width: 30px; height: 30px;\n top: " + (e.clientY - wrapperBox.top - 5) + "px; left: " + (e.clientX - wrapperBox.left - 5) + "px;\n z-index: 1000; background: " + (ie ? "rgba(255, 255, 255, .05)" : "transparent") + ";\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);"; var oldScrollY; - if (webkit) { - oldScrollY = window.scrollY; - } // Work around Chrome issue (#2712) + if (webkit) { oldScrollY = te.ownerDocument.defaultView.scrollY; } // Work around Chrome issue (#2712) display.input.focus(); - if (webkit) { - window.scrollTo(null, oldScrollY); - } + if (webkit) { te.ownerDocument.defaultView.scrollTo(null, oldScrollY); } display.input.reset(); // Adds "Select all" to context menu in FF - if (!cm.somethingSelected()) { - te.value = input.prevInput = ' '; - } + if (!cm.somethingSelected()) { te.value = input.prevInput = " "; } input.contextMenuPending = rehide; display.selForContextMenu = cm.doc.sel; clearTimeout(display.detectingSelectAll); @@ -14477,75 +9675,58 @@ function prepareSelectAllHack() { if (te.selectionStart != null) { var selected = cm.somethingSelected(); - var extval = '\u200b' + (selected ? te.value : ''); - te.value = '\u21da'; // Used to catch context-menu undo + var extval = "\u200b" + (selected ? te.value : ""); + te.value = "\u21da"; // Used to catch context-menu undo te.value = extval; - input.prevInput = selected ? '' : '\u200b'; - te.selectionStart = 1; - te.selectionEnd = extval.length; + input.prevInput = selected ? "" : "\u200b"; + te.selectionStart = 1; te.selectionEnd = extval.length; // Re-set this, in case some other handler touched the // selection in the meantime. display.selForContextMenu = cm.doc.sel; } } function rehide() { - if (input.contextMenuPending != rehide) { - return; - } + if (input.contextMenuPending != rehide) { return } input.contextMenuPending = false; input.wrapper.style.cssText = oldWrapperCSS; te.style.cssText = oldCSS; - if (ie && ie_version < 9) { - display.scrollbars.setScrollTop( - (display.scroller.scrollTop = scrollPos), - ); - } + if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); } // Try to detect the user choosing select-all if (te.selectionStart != null) { - if (!ie || (ie && ie_version < 9)) { - prepareSelectAllHack(); - } - var i = 0, - poll = function () { - if ( - display.selForContextMenu == cm.doc.sel && - te.selectionStart == 0 && - te.selectionEnd > 0 && - input.prevInput == '\u200b' - ) { - operation(cm, selectAll)(cm); - } else if (i++ < 10) { - display.detectingSelectAll = setTimeout(poll, 500); - } else { - display.selForContextMenu = null; - display.input.reset(); - } - }; + if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack(); } + var i = 0, poll = function () { + if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 && + te.selectionEnd > 0 && input.prevInput == "\u200b") { + operation(cm, selectAll)(cm); + } else if (i++ < 10) { + display.detectingSelectAll = setTimeout(poll, 500); + } else { + display.selForContextMenu = null; + display.input.reset(); + } + }; display.detectingSelectAll = setTimeout(poll, 200); } } - if (ie && ie_version >= 9) { - prepareSelectAllHack(); - } + if (ie && ie_version >= 9) { prepareSelectAllHack(); } if (captureRightClick) { e_stop(e); var mouseup = function () { - off(window, 'mouseup', mouseup); + off(window, "mouseup", mouseup); setTimeout(rehide, 20); }; - on(window, 'mouseup', mouseup); + on(window, "mouseup", mouseup); } else { setTimeout(rehide, 50); } }; TextareaInput.prototype.readOnlyChanged = function (val) { - if (!val) { - this.reset(); - } - this.textarea.disabled = val == 'nocursor'; + if (!val) { this.reset(); } + this.textarea.disabled = val == "nocursor"; + this.textarea.readOnly = !!val; }; TextareaInput.prototype.setUneditable = function () {}; @@ -14555,71 +9736,58 @@ function fromTextArea(textarea, options) { options = options ? copyObj(options) : {}; options.value = textarea.value; - if (!options.tabindex && textarea.tabIndex) { - options.tabindex = textarea.tabIndex; - } - if (!options.placeholder && textarea.placeholder) { - options.placeholder = textarea.placeholder; - } + if (!options.tabindex && textarea.tabIndex) + { options.tabindex = textarea.tabIndex; } + if (!options.placeholder && textarea.placeholder) + { options.placeholder = textarea.placeholder; } // Set autofocus to true if this textarea is focused, or if it has // autofocus and no other element is focused. if (options.autofocus == null) { - var hasFocus = activeElt(); - options.autofocus = - hasFocus == textarea || - (textarea.getAttribute('autofocus') != null && - hasFocus == document.body); + var hasFocus = activeElt(rootNode(textarea)); + options.autofocus = hasFocus == textarea || + textarea.getAttribute("autofocus") != null && hasFocus == document.body; } - function save() { - textarea.value = cm.getValue(); - } + function save() {textarea.value = cm.getValue();} var realSubmit; if (textarea.form) { - on(textarea.form, 'submit', save); + on(textarea.form, "submit", save); // Deplorable hack to make the submit method do the right thing. if (!options.leaveSubmitMethodAlone) { var form = textarea.form; realSubmit = form.submit; try { - var wrappedSubmit = (form.submit = function () { + var wrappedSubmit = form.submit = function () { save(); form.submit = realSubmit; form.submit(); form.submit = wrappedSubmit; - }); - } catch (e) {} + }; + } catch(e) {} } } options.finishInit = function (cm) { cm.save = save; - cm.getTextArea = function () { - return textarea; - }; + cm.getTextArea = function () { return textarea; }; cm.toTextArea = function () { cm.toTextArea = isNaN; // Prevent this from being ran twice save(); textarea.parentNode.removeChild(cm.getWrapperElement()); - textarea.style.display = ''; + textarea.style.display = ""; if (textarea.form) { - off(textarea.form, 'submit', save); - if ( - !options.leaveSubmitMethodAlone && - typeof textarea.form.submit == 'function' - ) { - textarea.form.submit = realSubmit; - } + off(textarea.form, "submit", save); + if (!options.leaveSubmitMethodAlone && typeof textarea.form.submit == "function") + { textarea.form.submit = realSubmit; } } }; }; - textarea.style.display = 'none'; - var cm = CodeMirror(function (node) { - return textarea.parentNode.insertBefore(node, textarea.nextSibling); - }, options); - return cm; + textarea.style.display = "none"; + var cm = CodeMirror(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); }, + options); + return cm } function addLegacyProps(CodeMirror) { @@ -14673,44 +9841,28 @@ addEditorMethods(CodeMirror); // Set up methods on CodeMirror's prototype to redirect to the editor's document. - var dontDelegate = 'iter insert remove copy getEditor constructor'.split(' '); - for (var prop in Doc.prototype) { - if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0) { - CodeMirror.prototype[prop] = (function (method) { - return function () { - return method.apply(this.doc, arguments); - }; - })(Doc.prototype[prop]); - } - } + var dontDelegate = "iter insert remove copy getEditor constructor".split(" "); + for (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0) + { CodeMirror.prototype[prop] = (function(method) { + return function() {return method.apply(this.doc, arguments)} + })(Doc.prototype[prop]); } } eventMixin(Doc); - CodeMirror.inputStyles = { - textarea: TextareaInput, - contenteditable: ContentEditableInput, - }; + CodeMirror.inputStyles = {"textarea": TextareaInput, "contenteditable": ContentEditableInput}; // Extra arguments are stored as the mode's dependencies, which is // used by (legacy) mechanisms like loadmode.js to automatically // load a mode. (Preferred mechanism is the require/define calls.) - CodeMirror.defineMode = function (name /*, mode, …*/) { - if (!CodeMirror.defaults.mode && name != 'null') { - CodeMirror.defaults.mode = name; - } + CodeMirror.defineMode = function(name/*, mode, …*/) { + if (!CodeMirror.defaults.mode && name != "null") { CodeMirror.defaults.mode = name; } defineMode.apply(this, arguments); }; CodeMirror.defineMIME = defineMIME; // Minimal default mode. - CodeMirror.defineMode('null', function () { - return { - token: function (stream) { - return stream.skipToEnd(); - }, - }; - }); - CodeMirror.defineMIME('text/plain', 'null'); + CodeMirror.defineMode("null", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); }); + CodeMirror.defineMIME("text/plain", "null"); // EXTENSIONS @@ -14725,7 +9877,8 @@ addLegacyProps(CodeMirror); - CodeMirror.version = '5.51.0'; + CodeMirror.version = "5.65.17"; return CodeMirror; -}); + +}))); diff --git a/web/static/lib/codemirror/codemirror.scss b/web/static/lib/codemirror/codemirror.scss index d4201bbb..f4d5718a 100644 --- a/web/static/lib/codemirror/codemirror.scss +++ b/web/static/lib/codemirror/codemirror.scss @@ -18,8 +18,7 @@ padding: 0 4px; /* Horizontal padding of content */ } -.CodeMirror-scrollbar-filler, -.CodeMirror-gutter-filler { +.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { background-color: white; /* The little square between H and V scrollbars */ } @@ -30,8 +29,7 @@ background-color: #f7f7f7; white-space: nowrap; } -.CodeMirror-linenumbers { -} +.CodeMirror-linenumbers {} .CodeMirror-linenumber { padding: 0 3px 0 5px; min-width: 20px; @@ -40,12 +38,8 @@ white-space: nowrap; } -.CodeMirror-guttermarker { - color: black; -} -.CodeMirror-guttermarker-subtle { - color: #999; -} +.CodeMirror-guttermarker { color: black; } +.CodeMirror-guttermarker-subtle { color: #999; } /* CURSOR */ @@ -66,183 +60,89 @@ .cm-fat-cursor div.CodeMirror-cursors { z-index: 1; } -.cm-fat-cursor-mark { - background-color: rgba(20, 255, 20, 0.5); - -webkit-animation: blink 1.06s steps(1) infinite; - -moz-animation: blink 1.06s steps(1) infinite; - animation: blink 1.06s steps(1) infinite; -} -.cm-animate-fat-cursor { - width: auto; - border: 0; - -webkit-animation: blink 1.06s steps(1) infinite; - -moz-animation: blink 1.06s steps(1) infinite; - animation: blink 1.06s steps(1) infinite; - background-color: #7e7; -} +.cm-fat-cursor .CodeMirror-line::selection, +.cm-fat-cursor .CodeMirror-line > span::selection, +.cm-fat-cursor .CodeMirror-line > span > span::selection { background: transparent; } +.cm-fat-cursor .CodeMirror-line::-moz-selection, +.cm-fat-cursor .CodeMirror-line > span::-moz-selection, +.cm-fat-cursor .CodeMirror-line > span > span::-moz-selection { background: transparent; } +.cm-fat-cursor { caret-color: transparent; } @-moz-keyframes blink { - 0% { - } - 50% { - background-color: transparent; - } - 100% { - } + 0% {} + 50% { background-color: transparent; } + 100% {} } @-webkit-keyframes blink { - 0% { - } - 50% { - background-color: transparent; - } - 100% { - } + 0% {} + 50% { background-color: transparent; } + 100% {} } @keyframes blink { - 0% { - } - 50% { - background-color: transparent; - } - 100% { - } + 0% {} + 50% { background-color: transparent; } + 100% {} } /* Can style cursor different in overwrite (non-insert) mode */ -.CodeMirror-overwrite .CodeMirror-cursor { -} +.CodeMirror-overwrite .CodeMirror-cursor {} -.cm-tab { - display: inline-block; - text-decoration: inherit; -} +.cm-tab { display: inline-block; text-decoration: inherit; } .CodeMirror-rulers { position: absolute; - left: 0; - right: 0; - top: -50px; - bottom: 0; + left: 0; right: 0; top: -50px; bottom: 0; overflow: hidden; } .CodeMirror-ruler { border-left: 1px solid #ccc; - top: 0; - bottom: 0; + top: 0; bottom: 0; position: absolute; } /* DEFAULT THEME */ -.cm-s-default .cm-header { - color: blue; -} -.cm-s-default .cm-quote { - color: #090; -} -.cm-negative { - color: #d44; -} -.cm-positive { - color: #292; -} -.cm-header, -.cm-strong { - font-weight: bold; -} -.cm-em { - font-style: italic; -} -.cm-link { - text-decoration: underline; -} -.cm-strikethrough { - text-decoration: line-through; -} - -.cm-s-default .cm-keyword { - color: #708; -} -.cm-s-default .cm-atom { - color: #219; -} -.cm-s-default .cm-number { - color: #164; -} -.cm-s-default .cm-def { - color: #00f; -} +.cm-s-default .cm-header {color: blue;} +.cm-s-default .cm-quote {color: #090;} +.cm-negative {color: #d44;} +.cm-positive {color: #292;} +.cm-header, .cm-strong {font-weight: bold;} +.cm-em {font-style: italic;} +.cm-link {text-decoration: underline;} +.cm-strikethrough {text-decoration: line-through;} + +.cm-s-default .cm-keyword {color: #708;} +.cm-s-default .cm-atom {color: #219;} +.cm-s-default .cm-number {color: #164;} +.cm-s-default .cm-def {color: #00f;} .cm-s-default .cm-variable, .cm-s-default .cm-punctuation, .cm-s-default .cm-property, -.cm-s-default .cm-operator { -} -.cm-s-default .cm-variable-2 { - color: #05a; -} -.cm-s-default .cm-variable-3, -.cm-s-default .cm-type { - color: #085; -} -.cm-s-default .cm-comment { - color: #a50; -} -.cm-s-default .cm-string { - color: #a11; -} -.cm-s-default .cm-string-2 { - color: #f50; -} -.cm-s-default .cm-meta { - color: #555; -} -.cm-s-default .cm-qualifier { - color: #555; -} -.cm-s-default .cm-builtin { - color: #30a; -} -.cm-s-default .cm-bracket { - color: #997; -} -.cm-s-default .cm-tag { - color: #170; -} -.cm-s-default .cm-attribute { - color: #00c; -} -.cm-s-default .cm-hr { - color: #999; -} -.cm-s-default .cm-link { - color: #00c; -} - -.cm-s-default .cm-error { - color: #f00; -} -.cm-invalidchar { - color: #f00; -} - -.CodeMirror-composing { - border-bottom: 2px solid; -} +.cm-s-default .cm-operator {} +.cm-s-default .cm-variable-2 {color: #05a;} +.cm-s-default .cm-variable-3, .cm-s-default .cm-type {color: #085;} +.cm-s-default .cm-comment {color: #a50;} +.cm-s-default .cm-string {color: #a11;} +.cm-s-default .cm-string-2 {color: #f50;} +.cm-s-default .cm-meta {color: #555;} +.cm-s-default .cm-qualifier {color: #555;} +.cm-s-default .cm-builtin {color: #30a;} +.cm-s-default .cm-bracket {color: #997;} +.cm-s-default .cm-tag {color: #170;} +.cm-s-default .cm-attribute {color: #00c;} +.cm-s-default .cm-hr {color: #999;} +.cm-s-default .cm-link {color: #00c;} + +.cm-s-default .cm-error {color: #f00;} +.cm-invalidchar {color: #f00;} + +.CodeMirror-composing { border-bottom: 2px solid; } /* Default styles for common addons */ -div.CodeMirror span.CodeMirror-matchingbracket { - color: #0b0; -} -div.CodeMirror span.CodeMirror-nonmatchingbracket { - color: #a22; -} -.CodeMirror-matchingtag { - background: rgba(255, 150, 0, 0.3); -} -.CodeMirror-activeline-background { - background: #e8f2ff; -} +div.CodeMirror span.CodeMirror-matchingbracket {color: #0b0;} +div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #a22;} +.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); } +.CodeMirror-activeline-background {background: #e8f2ff;} /* STOP */ @@ -257,56 +157,48 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket { .CodeMirror-scroll { overflow: scroll !important; /* Things will break if this is overridden */ - /* 30px is the magic margin used to hide the element's real scrollbars */ + /* 50px is the magic margin used to hide the element's real scrollbars */ /* See overflow: hidden in .CodeMirror */ - margin-bottom: -30px; - margin-right: -30px; - padding-bottom: 30px; + margin-bottom: -50px; margin-right: -50px; + padding-bottom: 50px; height: 100%; outline: none; /* Prevent dragging from highlighting the element */ position: relative; + z-index: 0; } .CodeMirror-sizer { position: relative; - border-right: 30px solid transparent; + border-right: 50px solid transparent; } /* The fake, visible scrollbars. Used to force redraw during scrolling before actual scrolling happens, thus preventing shaking and flickering artifacts. */ -.CodeMirror-vscrollbar, -.CodeMirror-hscrollbar, -.CodeMirror-scrollbar-filler, -.CodeMirror-gutter-filler { +.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { position: absolute; z-index: 6; display: none; + outline: none; } .CodeMirror-vscrollbar { - right: 0; - top: 0; + right: 0; top: 0; overflow-x: hidden; overflow-y: scroll; } .CodeMirror-hscrollbar { - bottom: 0; - left: 0; + bottom: 0; left: 0; overflow-y: hidden; overflow-x: scroll; } .CodeMirror-scrollbar-filler { - right: 0; - bottom: 0; + right: 0; bottom: 0; } .CodeMirror-gutter-filler { - left: 0; - bottom: 0; + left: 0; bottom: 0; } .CodeMirror-gutters { - position: absolute; - left: 0; - top: 0; + position: absolute; left: 0; top: 0; min-height: 100%; z-index: 3; } @@ -315,7 +207,7 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket { height: 100%; display: inline-block; vertical-align: top; - margin-bottom: -30px; + margin-bottom: -50px; } .CodeMirror-gutter-wrapper { position: absolute; @@ -325,8 +217,7 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket { } .CodeMirror-gutter-background { position: absolute; - top: 0; - bottom: 0; + top: 0; bottom: 0; z-index: 4; } .CodeMirror-gutter-elt { @@ -334,12 +225,8 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket { cursor: default; z-index: 4; } -.CodeMirror-gutter-wrapper ::selection { - background-color: transparent; -} -.CodeMirror-gutter-wrapper ::-moz-selection { - background-color: transparent; -} +.CodeMirror-gutter-wrapper ::selection { background-color: transparent } +.CodeMirror-gutter-wrapper ::-moz-selection { background-color: transparent } .CodeMirror-lines { cursor: text; @@ -348,9 +235,7 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket { .CodeMirror pre.CodeMirror-line, .CodeMirror pre.CodeMirror-line-like { /* Reset some styles that the rest of the page might have set */ - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; + -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; border-width: 0; background: transparent; font-family: inherit; @@ -376,10 +261,7 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket { .CodeMirror-linebackground { position: absolute; - left: 0; - right: 0; - top: 0; - bottom: 0; + left: 0; right: 0; top: 0; bottom: 0; z-index: 0; } @@ -389,12 +271,9 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket { padding: 0.1px; /* Force widget margins to stay inside of the container */ } -.CodeMirror-widget { -} +.CodeMirror-widget {} -.CodeMirror-rtl pre { - direction: rtl; -} +.CodeMirror-rtl pre { direction: rtl; } .CodeMirror-code { outline: none; @@ -422,9 +301,7 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket { position: absolute; pointer-events: none; } -.CodeMirror-measure pre { - position: static; -} +.CodeMirror-measure pre { position: static; } div.CodeMirror-cursors { visibility: hidden; @@ -439,35 +316,19 @@ div.CodeMirror-dragcursors { visibility: visible; } -.CodeMirror-selected { - background: #d9d9d9; -} -.CodeMirror-focused .CodeMirror-selected { - background: #d7d4f0; -} -.CodeMirror-crosshair { - cursor: crosshair; -} -.CodeMirror-line::selection, -.CodeMirror-line > span::selection, -.CodeMirror-line > span > span::selection { - background: #d7d4f0; -} -.CodeMirror-line::-moz-selection, -.CodeMirror-line > span::-moz-selection, -.CodeMirror-line > span > span::-moz-selection { - background: #d7d4f0; -} +.CodeMirror-selected { background: #d9d9d9; } +.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; } +.CodeMirror-crosshair { cursor: crosshair; } +.CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; } +.CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: #d7d4f0; } .cm-searching { background-color: #ffa; - background-color: rgba(255, 255, 0, 0.4); + background-color: rgba(255, 255, 0, .4); } /* Used to force a border model for a node */ -.cm-force-border { - padding-right: 0.1px; -} +.cm-force-border { padding-right: .1px; } @media print { /* Hide the cursor when printing */ @@ -477,11 +338,7 @@ div.CodeMirror-dragcursors { } /* See issue #2901 */ -.cm-tab-wrap-hack:after { - content: ''; -} +.cm-tab-wrap-hack:after { content: ''; } /* Help users use markselection to safely style text background */ -span.CodeMirror-selectedtext { - background: none; -} +span.CodeMirror-selectedtext { background: none; } diff --git a/web/static/lib/codemirror/gfm.js b/web/static/lib/codemirror/gfm.js index dc0efe40..65288d75 100644 --- a/web/static/lib/codemirror/gfm.js +++ b/web/static/lib/codemirror/gfm.js @@ -1,158 +1,129 @@ // CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: https://codemirror.net/LICENSE +// Distributed under an MIT license: https://codemirror.net/5/LICENSE -(function (mod) { - if (typeof exports == 'object' && typeof module == 'object') - // CommonJS - mod( - require('../../lib/codemirror'), - require('../markdown/markdown'), - require('../../addon/mode/overlay'), - ); - else if (typeof define == 'function' && define.amd) - // AMD - define([ - '../../lib/codemirror', - '../markdown/markdown', - '../../addon/mode/overlay', - ], mod); - // Plain browser env - else mod(CodeMirror); -})(function (CodeMirror) { - 'use strict'; +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror"), require("../markdown/markdown"), require("../../addon/mode/overlay")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror", "../markdown/markdown", "../../addon/mode/overlay"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; - var urlRE = - /^((?:(?:aaas?|about|acap|adiumxtra|af[ps]|aim|apt|attachment|aw|beshare|bitcoin|bolo|callto|cap|chrome(?:-extension)?|cid|coap|com-eventbrite-attendee|content|crid|cvs|data|dav|dict|dlna-(?:playcontainer|playsingle)|dns|doi|dtn|dvb|ed2k|facetime|feed|file|finger|fish|ftp|geo|gg|git|gizmoproject|go|gopher|gtalk|h323|hcp|https?|iax|icap|icon|im|imap|info|ipn|ipp|irc[6s]?|iris(?:\.beep|\.lwz|\.xpc|\.xpcs)?|itms|jar|javascript|jms|keyparc|lastfm|ldaps?|magnet|mailto|maps|market|message|mid|mms|ms-help|msnim|msrps?|mtqp|mumble|mupdate|mvn|news|nfs|nih?|nntp|notes|oid|opaquelocktoken|palm|paparazzi|platform|pop|pres|proxy|psyc|query|res(?:ource)?|rmi|rsync|rtmp|rtsp|secondlife|service|session|sftp|sgn|shttp|sieve|sips?|skype|sm[bs]|snmp|soap\.beeps?|soldat|spotify|ssh|steam|svn|tag|teamspeak|tel(?:net)?|tftp|things|thismessage|tip|tn3270|tv|udp|unreal|urn|ut2004|vemmi|ventrilo|view-source|webcal|wss?|wtai|wyciwyg|xcon(?:-userid)?|xfire|xmlrpc\.beeps?|xmpp|xri|ymsgr|z39\.50[rs]?):(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]|\([^\s()<>]*\))+(?:\([^\s()<>]*\)|[^\s`*!()\[\]{};:'".,<>?«»“”‘’]))/i; +var urlRE = /^((?:(?:aaas?|about|acap|adiumxtra|af[ps]|aim|apt|attachment|aw|beshare|bitcoin|bolo|callto|cap|chrome(?:-extension)?|cid|coap|com-eventbrite-attendee|content|crid|cvs|data|dav|dict|dlna-(?:playcontainer|playsingle)|dns|doi|dtn|dvb|ed2k|facetime|feed|file|finger|fish|ftp|geo|gg|git|gizmoproject|go|gopher|gtalk|h323|hcp|https?|iax|icap|icon|im|imap|info|ipn|ipp|irc[6s]?|iris(?:\.beep|\.lwz|\.xpc|\.xpcs)?|itms|jar|javascript|jms|keyparc|lastfm|ldaps?|magnet|mailto|maps|market|message|mid|mms|ms-help|msnim|msrps?|mtqp|mumble|mupdate|mvn|news|nfs|nih?|nntp|notes|oid|opaquelocktoken|palm|paparazzi|platform|pop|pres|proxy|psyc|query|res(?:ource)?|rmi|rsync|rtmp|rtsp|secondlife|service|session|sftp|sgn|shttp|sieve|sips?|skype|sm[bs]|snmp|soap\.beeps?|soldat|spotify|ssh|steam|svn|tag|teamspeak|tel(?:net)?|tftp|things|thismessage|tip|tn3270|tv|udp|unreal|urn|ut2004|vemmi|ventrilo|view-source|webcal|wss?|wtai|wyciwyg|xcon(?:-userid)?|xfire|xmlrpc\.beeps?|xmpp|xri|ymsgr|z39\.50[rs]?):(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]|\([^\s()<>]*\))+(?:\([^\s()<>]*\)|[^\s`*!()\[\]{};:'".,<>?«»“”‘’]))/i - CodeMirror.defineMode( - 'gfm', - function (config, modeConfig) { - var codeDepth = 0; - function blankLine(state) { +CodeMirror.defineMode("gfm", function(config, modeConfig) { + var codeDepth = 0; + function blankLine(state) { + state.code = false; + return null; + } + var gfmOverlay = { + startState: function() { + return { + code: false, + codeBlock: false, + ateSpace: false + }; + }, + copyState: function(s) { + return { + code: s.code, + codeBlock: s.codeBlock, + ateSpace: s.ateSpace + }; + }, + token: function(stream, state) { + state.combineTokens = null; + + // Hack to prevent formatting override inside code blocks (block and inline) + if (state.codeBlock) { + if (stream.match(/^```+/)) { + state.codeBlock = false; + return null; + } + stream.skipToEnd(); + return null; + } + if (stream.sol()) { state.code = false; + } + if (stream.sol() && stream.match(/^```+/)) { + stream.skipToEnd(); + state.codeBlock = true; return null; } - var gfmOverlay = { - startState: function () { - return { - code: false, - codeBlock: false, - ateSpace: false, - }; - }, - copyState: function (s) { - return { - code: s.code, - codeBlock: s.codeBlock, - ateSpace: s.ateSpace, - }; - }, - token: function (stream, state) { - state.combineTokens = null; - - // Hack to prevent formatting override inside code blocks (block and inline) - if (state.codeBlock) { - if (stream.match(/^```+/)) { - state.codeBlock = false; - return null; - } - stream.skipToEnd(); - return null; - } - if (stream.sol()) { + // If this block is changed, it may need to be updated in Markdown mode + if (stream.peek() === '`') { + stream.next(); + var before = stream.pos; + stream.eatWhile('`'); + var difference = 1 + stream.pos - before; + if (!state.code) { + codeDepth = difference; + state.code = true; + } else { + if (difference === codeDepth) { // Must be exact state.code = false; } - if (stream.sol() && stream.match(/^```+/)) { - stream.skipToEnd(); - state.codeBlock = true; - return null; - } - // If this block is changed, it may need to be updated in Markdown mode - if (stream.peek() === '`') { - stream.next(); - var before = stream.pos; - stream.eatWhile('`'); - var difference = 1 + stream.pos - before; - if (!state.code) { - codeDepth = difference; - state.code = true; - } else { - if (difference === codeDepth) { - // Must be exact - state.code = false; - } - } - return null; - } else if (state.code) { - stream.next(); - return null; - } - // Check if space. If so, links can be formatted later on - if (stream.eatSpace()) { - state.ateSpace = true; - return null; - } - if (stream.sol() || state.ateSpace) { - state.ateSpace = false; - if (modeConfig.gitHubSpice !== false) { - if ( - stream.match( - /^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+@)?(?=.{0,6}\d)(?:[a-f0-9]{7,40}\b)/, - ) - ) { - // User/Project@SHA - // User@SHA - // SHA - state.combineTokens = true; - return 'link'; - } else if ( - stream.match( - /^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+)?#[0-9]+\b/, - ) - ) { - // User/Project#Num - // User#Num - // #Num - state.combineTokens = true; - return 'link'; - } - } - } - if ( - stream.match(urlRE) && - stream.string.slice(stream.start - 2, stream.start) != '](' && - (stream.start == 0 || - /\W/.test(stream.string.charAt(stream.start - 1))) - ) { - // URLs - // Taken from http://daringfireball.net/2010/07/improved_regex_for_matching_urls - // And then (issue #1160) simplified to make it not crash the Chrome Regexp engine - // And then limited url schemes to the CommonMark list, so foo:bar isn't matched as a URL + } + return null; + } else if (state.code) { + stream.next(); + return null; + } + // Check if space. If so, links can be formatted later on + if (stream.eatSpace()) { + state.ateSpace = true; + return null; + } + if (stream.sol() || state.ateSpace) { + state.ateSpace = false; + if (modeConfig.gitHubSpice !== false) { + if(stream.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+@)?(?=.{0,6}\d)(?:[a-f0-9]{7,40}\b)/)) { + // User/Project@SHA + // User@SHA + // SHA + state.combineTokens = true; + return "link"; + } else if (stream.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+)?#[0-9]+\b/)) { + // User/Project#Num + // User#Num + // #Num state.combineTokens = true; - return 'link'; + return "link"; } - stream.next(); - return null; - }, - blankLine: blankLine, - }; - - var markdownConfig = { - taskLists: true, - strikethrough: true, - emoji: true, - }; - for (var attr in modeConfig) { - markdownConfig[attr] = modeConfig[attr]; + } } - markdownConfig.name = 'markdown'; - return CodeMirror.overlayMode( - CodeMirror.getMode(config, markdownConfig), - gfmOverlay, - ); + if (stream.match(urlRE) && + stream.string.slice(stream.start - 2, stream.start) != "](" && + (stream.start == 0 || /\W/.test(stream.string.charAt(stream.start - 1)))) { + // URLs + // Taken from http://daringfireball.net/2010/07/improved_regex_for_matching_urls + // And then (issue #1160) simplified to make it not crash the Chrome Regexp engine + // And then limited url schemes to the CommonMark list, so foo:bar isn't matched as a URL + state.combineTokens = true; + return "link"; + } + stream.next(); + return null; }, - 'markdown', - ); + blankLine: blankLine + }; + + var markdownConfig = { + taskLists: true, + strikethrough: true, + emoji: true + }; + for (var attr in modeConfig) { + markdownConfig[attr] = modeConfig[attr]; + } + markdownConfig.name = "markdown"; + return CodeMirror.overlayMode(CodeMirror.getMode(config, markdownConfig), gfmOverlay); + +}, "markdown"); - CodeMirror.defineMIME('text/x-gfm', 'gfm'); + CodeMirror.defineMIME("text/x-gfm", "gfm"); }); diff --git a/web/static/lib/codemirror/javascript.js b/web/static/lib/codemirror/javascript.js index 42d407f8..bb735ebc 100644 --- a/web/static/lib/codemirror/javascript.js +++ b/web/static/lib/codemirror/javascript.js @@ -1,1345 +1,960 @@ // CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: https://codemirror.net/LICENSE +// Distributed under an MIT license: https://codemirror.net/5/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("javascript", function(config, parserConfig) { + var indentUnit = config.indentUnit; + var statementIndent = parserConfig.statementIndent; + var jsonldMode = parserConfig.jsonld; + var jsonMode = parserConfig.json || jsonldMode; + var trackScope = parserConfig.trackScope !== false + var isTS = parserConfig.typescript; + var wordRE = parserConfig.wordCharacters || /[\w$\xa1-\uffff]/; + + // Tokenizer + + var keywords = function(){ + function kw(type) {return {type: type, style: "keyword"};} + var A = kw("keyword a"), B = kw("keyword b"), C = kw("keyword c"), D = kw("keyword d"); + var operator = kw("operator"), atom = {type: "atom", style: "atom"}; -(function (mod) { - if (typeof exports == 'object' && typeof module == 'object') - // CommonJS - mod(require('../../lib/codemirror')); - else if (typeof define == 'function' && define.amd) - // AMD - define(['../../lib/codemirror'], mod); - // Plain browser env - else mod(CodeMirror); -})(function (CodeMirror) { - 'use strict'; - - CodeMirror.defineMode('javascript', function (config, parserConfig) { - var indentUnit = config.indentUnit; - var statementIndent = parserConfig.statementIndent; - var jsonldMode = parserConfig.jsonld; - var jsonMode = parserConfig.json || jsonldMode; - var isTS = parserConfig.typescript; - var wordRE = parserConfig.wordCharacters || /[\w$\xa1-\uffff]/; - - // Tokenizer - - var keywords = (function () { - function kw(type) { - return { type: type, style: 'keyword' }; - } - var A = kw('keyword a'), - B = kw('keyword b'), - C = kw('keyword c'), - D = kw('keyword d'); - var operator = kw('operator'), - atom = { type: 'atom', style: 'atom' }; - - return { - if: kw('if'), - while: A, - with: A, - else: B, - do: B, - try: B, - finally: B, - return: D, - break: D, - continue: D, - new: kw('new'), - delete: C, - void: C, - throw: C, - debugger: kw('debugger'), - var: kw('var'), - const: kw('var'), - let: kw('var'), - function: kw('function'), - catch: kw('catch'), - for: kw('for'), - switch: kw('switch'), - case: kw('case'), - default: kw('default'), - in: operator, - typeof: operator, - instanceof: operator, - true: atom, - false: atom, - null: atom, - undefined: atom, - NaN: atom, - Infinity: atom, - this: kw('this'), - class: kw('class'), - super: kw('atom'), - yield: C, - export: kw('export'), - import: kw('import'), - extends: C, - await: C, - }; - })(); - - var isOperatorChar = /[+\-*&%=<>!?|~^@]/; - var isJsonldKeyword = - /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/; - - function readRegexp(stream) { - var escaped = false, - next, - inSet = false; - while ((next = stream.next()) != null) { - if (!escaped) { - if (next == '/' && !inSet) return; - if (next == '[') inSet = true; - else if (inSet && next == ']') inSet = false; - } - escaped = !escaped && next == '\\'; - } - } - - // Used as scratch variables to communicate multiple values without - // consing up tons of objects. - var type, content; - function ret(tp, style, cont) { - type = tp; - content = cont; - return style; - } - function tokenBase(stream, state) { - var ch = stream.next(); - if (ch == '"' || ch == "'") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } else if (ch == '.' && stream.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/)) { - return ret('number', 'number'); - } else if (ch == '.' && stream.match('..')) { - return ret('spread', 'meta'); - } else if (/[\[\]{}\(\),;\:\.]/.test(ch)) { - return ret(ch); - } else if (ch == '=' && stream.eat('>')) { - return ret('=>', 'operator'); - } else if ( - ch == '0' && - stream.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/) - ) { - return ret('number', 'number'); - } else if (/\d/.test(ch)) { - stream.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/); - return ret('number', 'number'); - } else if (ch == '/') { - if (stream.eat('*')) { - state.tokenize = tokenComment; - return tokenComment(stream, state); - } else if (stream.eat('/')) { - stream.skipToEnd(); - return ret('comment', 'comment'); - } else if (expressionAllowed(stream, state, 1)) { - readRegexp(stream); - stream.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/); - return ret('regexp', 'string-2'); - } else { - stream.eat('='); - return ret('operator', 'operator', stream.current()); - } - } else if (ch == '`') { - state.tokenize = tokenQuasi; - return tokenQuasi(stream, state); - } else if (ch == '#') { - stream.skipToEnd(); - return ret('error', 'error'); - } else if ( - (ch == '<' && stream.match('!--')) || - (ch == '-' && stream.match('->')) - ) { + return { + "if": kw("if"), "while": A, "with": A, "else": B, "do": B, "try": B, "finally": B, + "return": D, "break": D, "continue": D, "new": kw("new"), "delete": C, "void": C, "throw": C, + "debugger": kw("debugger"), "var": kw("var"), "const": kw("var"), "let": kw("var"), + "function": kw("function"), "catch": kw("catch"), + "for": kw("for"), "switch": kw("switch"), "case": kw("case"), "default": kw("default"), + "in": operator, "typeof": operator, "instanceof": operator, + "true": atom, "false": atom, "null": atom, "undefined": atom, "NaN": atom, "Infinity": atom, + "this": kw("this"), "class": kw("class"), "super": kw("atom"), + "yield": C, "export": kw("export"), "import": kw("import"), "extends": C, + "await": C + }; + }(); + + var isOperatorChar = /[+\-*&%=<>!?|~^@]/; + var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/; + + function readRegexp(stream) { + var escaped = false, next, inSet = false; + while ((next = stream.next()) != null) { + if (!escaped) { + if (next == "/" && !inSet) return; + if (next == "[") inSet = true; + else if (inSet && next == "]") inSet = false; + } + escaped = !escaped && next == "\\"; + } + } + + // Used as scratch variables to communicate multiple values without + // consing up tons of objects. + var type, content; + function ret(tp, style, cont) { + type = tp; content = cont; + return style; + } + function tokenBase(stream, state) { + var ch = stream.next(); + if (ch == '"' || ch == "'") { + state.tokenize = tokenString(ch); + return state.tokenize(stream, state); + } else if (ch == "." && stream.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/)) { + return ret("number", "number"); + } else if (ch == "." && stream.match("..")) { + return ret("spread", "meta"); + } else if (/[\[\]{}\(\),;\:\.]/.test(ch)) { + return ret(ch); + } else if (ch == "=" && stream.eat(">")) { + return ret("=>", "operator"); + } else if (ch == "0" && stream.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/)) { + return ret("number", "number"); + } else if (/\d/.test(ch)) { + stream.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/); + return ret("number", "number"); + } else if (ch == "/") { + if (stream.eat("*")) { + state.tokenize = tokenComment; + return tokenComment(stream, state); + } else if (stream.eat("/")) { stream.skipToEnd(); - return ret('comment', 'comment'); - } else if (isOperatorChar.test(ch)) { - if (ch != '>' || !state.lexical || state.lexical.type != '>') { - if (stream.eat('=')) { - if (ch == '!' || ch == '=') stream.eat('='); - } else if (/[<>*+\-]/.test(ch)) { - stream.eat(ch); - if (ch == '>') stream.eat(ch); - } - } - return ret('operator', 'operator', stream.current()); - } else if (wordRE.test(ch)) { - stream.eatWhile(wordRE); - var word = stream.current(); - if (state.lastType != '.') { - if (keywords.propertyIsEnumerable(word)) { - var kw = keywords[word]; - return ret(kw.type, kw.style, word); - } - if ( - word == 'async' && - stream.match(/^(\s|\/\*.*?\*\/)*[\[\(\w]/, false) - ) - return ret('async', 'keyword', word); - } - return ret('variable', 'variable', word); - } - } - - function tokenString(quote) { - return function (stream, state) { - var escaped = false, - next; - if ( - jsonldMode && - stream.peek() == '@' && - stream.match(isJsonldKeyword) - ) { - state.tokenize = tokenBase; - return ret('jsonld-keyword', 'meta'); - } - while ((next = stream.next()) != null) { - if (next == quote && !escaped) break; - escaped = !escaped && next == '\\'; - } - if (!escaped) state.tokenize = tokenBase; - return ret('string', 'string'); - }; - } - - function tokenComment(stream, state) { - var maybeEnd = false, - ch; - while ((ch = stream.next())) { - if (ch == '/' && maybeEnd) { - state.tokenize = tokenBase; - break; + return ret("comment", "comment"); + } else if (expressionAllowed(stream, state, 1)) { + readRegexp(stream); + stream.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/); + return ret("regexp", "string-2"); + } else { + stream.eat("="); + return ret("operator", "operator", stream.current()); + } + } else if (ch == "`") { + state.tokenize = tokenQuasi; + return tokenQuasi(stream, state); + } else if (ch == "#" && stream.peek() == "!") { + stream.skipToEnd(); + return ret("meta", "meta"); + } else if (ch == "#" && stream.eatWhile(wordRE)) { + return ret("variable", "property") + } else if (ch == "<" && stream.match("!--") || + (ch == "-" && stream.match("->") && !/\S/.test(stream.string.slice(0, stream.start)))) { + stream.skipToEnd() + return ret("comment", "comment") + } else if (isOperatorChar.test(ch)) { + if (ch != ">" || !state.lexical || state.lexical.type != ">") { + if (stream.eat("=")) { + if (ch == "!" || ch == "=") stream.eat("=") + } else if (/[<>*+\-|&?]/.test(ch)) { + stream.eat(ch) + if (ch == ">") stream.eat(ch) } - maybeEnd = ch == '*'; } - return ret('comment', 'comment'); - } - - function tokenQuasi(stream, state) { - var escaped = false, - next; - while ((next = stream.next()) != null) { - if (!escaped && (next == '`' || (next == '$' && stream.eat('{')))) { - state.tokenize = tokenBase; - break; + if (ch == "?" && stream.eat(".")) return ret(".") + return ret("operator", "operator", stream.current()); + } else if (wordRE.test(ch)) { + stream.eatWhile(wordRE); + var word = stream.current() + if (state.lastType != ".") { + if (keywords.propertyIsEnumerable(word)) { + var kw = keywords[word] + return ret(kw.type, kw.style, word) } - escaped = !escaped && next == '\\'; + if (word == "async" && stream.match(/^(\s|\/\*([^*]|\*(?!\/))*?\*\/)*[\[\(\w]/, false)) + return ret("async", "keyword", word) } - return ret('quasi', 'string-2', stream.current()); + return ret("variable", "variable", word) } + } - var brackets = '([{}])'; - // This is a crude lookahead trick to try and notice that we're - // parsing the argument patterns for a fat-arrow function before we - // actually hit the arrow token. It only works if the arrow is on - // the same line as the arguments and there's no strange noise - // (comments) in between. Fallback is to only notice when we hit the - // arrow, and not declare the arguments as locals for the arrow - // body. - function findFatArrow(stream, state) { - if (state.fatArrowAt) state.fatArrowAt = null; - var arrow = stream.string.indexOf('=>', stream.start); - if (arrow < 0) return; - - if (isTS) { - // Try to skip TypeScript return type declarations after the arguments - var m = /:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec( - stream.string.slice(stream.start, arrow), - ); - if (m) arrow = m.index; + function tokenString(quote) { + return function(stream, state) { + var escaped = false, next; + if (jsonldMode && stream.peek() == "@" && stream.match(isJsonldKeyword)){ + state.tokenize = tokenBase; + return ret("jsonld-keyword", "meta"); } - - var depth = 0, - sawSomething = false; - for (var pos = arrow - 1; pos >= 0; --pos) { - var ch = stream.string.charAt(pos); - var bracket = brackets.indexOf(ch); - if (bracket >= 0 && bracket < 3) { - if (!depth) { - ++pos; - break; - } - if (--depth == 0) { - if (ch == '(') sawSomething = true; - break; - } - } else if (bracket >= 3 && bracket < 6) { - ++depth; - } else if (wordRE.test(ch)) { - sawSomething = true; - } else if (/["'\/`]/.test(ch)) { - for (; ; --pos) { - if (pos == 0) return; - var next = stream.string.charAt(pos - 1); - if (next == ch && stream.string.charAt(pos - 2) != '\\') { - pos--; - break; - } - } - } else if (sawSomething && !depth) { - ++pos; - break; - } + while ((next = stream.next()) != null) { + if (next == quote && !escaped) break; + escaped = !escaped && next == "\\"; } - if (sawSomething && !depth) state.fatArrowAt = pos; - } - - // Parser - - var atomicTypes = { - atom: true, - number: true, - variable: true, - string: true, - regexp: true, - this: true, - 'jsonld-keyword': true, + if (!escaped) state.tokenize = tokenBase; + return ret("string", "string"); }; - - function JSLexical(indented, column, type, align, prev, info) { - this.indented = indented; - this.column = column; - this.type = type; - this.prev = prev; - this.info = info; - if (align != null) this.align = align; - } - - function inScope(state, varname) { - for (var v = state.localVars; v; v = v.next) - if (v.name == varname) return true; - for (var cx = state.context; cx; cx = cx.prev) { - for (var v = cx.vars; v; v = v.next) if (v.name == varname) return true; - } - } - - function parseJS(state, style, type, content, stream) { - var cc = state.cc; - // Communicate our context to the combinators. - // (Less wasteful than consing up a hundred closures on every call.) - cx.state = state; - cx.stream = stream; - (cx.marked = null), (cx.cc = cc); - cx.style = style; - - if (!state.lexical.hasOwnProperty('align')) state.lexical.align = true; - - while (true) { - var combinator = cc.length - ? cc.pop() - : jsonMode - ? expression - : statement; - if (combinator(type, content)) { - while (cc.length && cc[cc.length - 1].lex) cc.pop()(); - if (cx.marked) return cx.marked; - if (type == 'variable' && inScope(state, content)) - return 'variable-2'; - return style; + } + + function tokenComment(stream, state) { + var maybeEnd = false, ch; + while (ch = stream.next()) { + if (ch == "/" && maybeEnd) { + state.tokenize = tokenBase; + break; + } + maybeEnd = (ch == "*"); + } + return ret("comment", "comment"); + } + + function tokenQuasi(stream, state) { + var escaped = false, next; + while ((next = stream.next()) != null) { + if (!escaped && (next == "`" || next == "$" && stream.eat("{"))) { + state.tokenize = tokenBase; + break; + } + escaped = !escaped && next == "\\"; + } + return ret("quasi", "string-2", stream.current()); + } + + var brackets = "([{}])"; + // This is a crude lookahead trick to try and notice that we're + // parsing the argument patterns for a fat-arrow function before we + // actually hit the arrow token. It only works if the arrow is on + // the same line as the arguments and there's no strange noise + // (comments) in between. Fallback is to only notice when we hit the + // arrow, and not declare the arguments as locals for the arrow + // body. + function findFatArrow(stream, state) { + if (state.fatArrowAt) state.fatArrowAt = null; + var arrow = stream.string.indexOf("=>", stream.start); + if (arrow < 0) return; + + if (isTS) { // Try to skip TypeScript return type declarations after the arguments + var m = /:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(stream.string.slice(stream.start, arrow)) + if (m) arrow = m.index + } + + var depth = 0, sawSomething = false; + for (var pos = arrow - 1; pos >= 0; --pos) { + var ch = stream.string.charAt(pos); + var bracket = brackets.indexOf(ch); + if (bracket >= 0 && bracket < 3) { + if (!depth) { ++pos; break; } + if (--depth == 0) { if (ch == "(") sawSomething = true; break; } + } else if (bracket >= 3 && bracket < 6) { + ++depth; + } else if (wordRE.test(ch)) { + sawSomething = true; + } else if (/["'\/`]/.test(ch)) { + for (;; --pos) { + if (pos == 0) return + var next = stream.string.charAt(pos - 1) + if (next == ch && stream.string.charAt(pos - 2) != "\\") { pos--; break } } - } - } - - // Combinator utils - - var cx = { state: null, column: null, marked: null, cc: null }; - function pass() { - for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]); - } - function cont() { - pass.apply(null, arguments); - return true; - } - function inList(name, list) { - for (var v = list; v; v = v.next) if (v.name == name) return true; - return false; + } else if (sawSomething && !depth) { + ++pos; + break; + } + } + if (sawSomething && !depth) state.fatArrowAt = pos; + } + + // Parser + + var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, + "regexp": true, "this": true, "import": true, "jsonld-keyword": true}; + + function JSLexical(indented, column, type, align, prev, info) { + this.indented = indented; + this.column = column; + this.type = type; + this.prev = prev; + this.info = info; + if (align != null) this.align = align; + } + + function inScope(state, varname) { + if (!trackScope) return false + for (var v = state.localVars; v; v = v.next) + if (v.name == varname) return true; + for (var cx = state.context; cx; cx = cx.prev) { + for (var v = cx.vars; v; v = v.next) + if (v.name == varname) return true; } - function register(varname) { - var state = cx.state; - cx.marked = 'def'; - if (state.context) { - if ( - state.lexical.info == 'var' && - state.context && - state.context.block - ) { - // FIXME function decls are also not block scoped - var newContext = registerVarScoped(varname, state.context); - if (newContext != null) { - state.context = newContext; - return; - } - } else if (!inList(varname, state.localVars)) { - state.localVars = new Var(varname, state.localVars); - return; + } + + function parseJS(state, style, type, content, stream) { + var cc = state.cc; + // Communicate our context to the combinators. + // (Less wasteful than consing up a hundred closures on every call.) + cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style; + + if (!state.lexical.hasOwnProperty("align")) + state.lexical.align = true; + + while(true) { + var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement; + if (combinator(type, content)) { + while(cc.length && cc[cc.length - 1].lex) + cc.pop()(); + if (cx.marked) return cx.marked; + if (type == "variable" && inScope(state, content)) return "variable-2"; + return style; + } + } + } + + // Combinator utils + + var cx = {state: null, column: null, marked: null, cc: null}; + function pass() { + for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]); + } + function cont() { + pass.apply(null, arguments); + return true; + } + function inList(name, list) { + for (var v = list; v; v = v.next) if (v.name == name) return true + return false; + } + function register(varname) { + var state = cx.state; + cx.marked = "def"; + if (!trackScope) return + if (state.context) { + if (state.lexical.info == "var" && state.context && state.context.block) { + // FIXME function decls are also not block scoped + var newContext = registerVarScoped(varname, state.context) + if (newContext != null) { + state.context = newContext + return } - } - // Fall through means this is global - if (parserConfig.globalVars && !inList(varname, state.globalVars)) - state.globalVars = new Var(varname, state.globalVars); - } - function registerVarScoped(varname, context) { - if (!context) { - return null; - } else if (context.block) { - var inner = registerVarScoped(varname, context.prev); - if (!inner) return null; - if (inner == context.prev) return context; - return new Context(inner, context.vars, true); - } else if (inList(varname, context.vars)) { - return context; + } else if (!inList(varname, state.localVars)) { + state.localVars = new Var(varname, state.localVars) + return + } + } + // Fall through means this is global + if (parserConfig.globalVars && !inList(varname, state.globalVars)) + state.globalVars = new Var(varname, state.globalVars) + } + function registerVarScoped(varname, context) { + if (!context) { + return null + } else if (context.block) { + var inner = registerVarScoped(varname, context.prev) + if (!inner) return null + if (inner == context.prev) return context + return new Context(inner, context.vars, true) + } else if (inList(varname, context.vars)) { + return context + } else { + return new Context(context.prev, new Var(varname, context.vars), false) + } + } + + function isModifier(name) { + return name == "public" || name == "private" || name == "protected" || name == "abstract" || name == "readonly" + } + + // Combinators + + function Context(prev, vars, block) { this.prev = prev; this.vars = vars; this.block = block } + function Var(name, next) { this.name = name; this.next = next } + + var defaultVars = new Var("this", new Var("arguments", null)) + function pushcontext() { + cx.state.context = new Context(cx.state.context, cx.state.localVars, false) + cx.state.localVars = defaultVars + } + function pushblockcontext() { + cx.state.context = new Context(cx.state.context, cx.state.localVars, true) + cx.state.localVars = null + } + pushcontext.lex = pushblockcontext.lex = true + function popcontext() { + cx.state.localVars = cx.state.context.vars + cx.state.context = cx.state.context.prev + } + popcontext.lex = true + function pushlex(type, info) { + var result = function() { + var state = cx.state, indent = state.indented; + if (state.lexical.type == "stat") indent = state.lexical.indented; + else for (var outer = state.lexical; outer && outer.type == ")" && outer.align; outer = outer.prev) + indent = outer.indented; + state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info); + }; + result.lex = true; + return result; + } + function poplex() { + var state = cx.state; + if (state.lexical.prev) { + if (state.lexical.type == ")") + state.indented = state.lexical.indented; + state.lexical = state.lexical.prev; + } + } + poplex.lex = true; + + function expect(wanted) { + function exp(type) { + if (type == wanted) return cont(); + else if (wanted == ";" || type == "}" || type == ")" || type == "]") return pass(); + else return cont(exp); + }; + return exp; + } + + function statement(type, value) { + if (type == "var") return cont(pushlex("vardef", value), vardef, expect(";"), poplex); + if (type == "keyword a") return cont(pushlex("form"), parenExpr, statement, poplex); + if (type == "keyword b") return cont(pushlex("form"), statement, poplex); + if (type == "keyword d") return cx.stream.match(/^\s*$/, false) ? cont() : cont(pushlex("stat"), maybeexpression, expect(";"), poplex); + if (type == "debugger") return cont(expect(";")); + if (type == "{") return cont(pushlex("}"), pushblockcontext, block, poplex, popcontext); + if (type == ";") return cont(); + if (type == "if") { + if (cx.state.lexical.info == "else" && cx.state.cc[cx.state.cc.length - 1] == poplex) + cx.state.cc.pop()(); + return cont(pushlex("form"), parenExpr, statement, poplex, maybeelse); + } + if (type == "function") return cont(functiondef); + if (type == "for") return cont(pushlex("form"), pushblockcontext, forspec, statement, popcontext, poplex); + if (type == "class" || (isTS && value == "interface")) { + cx.marked = "keyword" + return cont(pushlex("form", type == "class" ? type : value), className, poplex) + } + if (type == "variable") { + if (isTS && value == "declare") { + cx.marked = "keyword" + return cont(statement) + } else if (isTS && (value == "module" || value == "enum" || value == "type") && cx.stream.match(/^\s*\w/, false)) { + cx.marked = "keyword" + if (value == "enum") return cont(enumdef); + else if (value == "type") return cont(typename, expect("operator"), typeexpr, expect(";")); + else return cont(pushlex("form"), pattern, expect("{"), pushlex("}"), block, poplex, poplex) + } else if (isTS && value == "namespace") { + cx.marked = "keyword" + return cont(pushlex("form"), expression, statement, poplex) + } else if (isTS && value == "abstract") { + cx.marked = "keyword" + return cont(statement) } else { - return new Context(context.prev, new Var(varname, context.vars), false); - } - } - - function isModifier(name) { - return ( - name == 'public' || - name == 'private' || - name == 'protected' || - name == 'abstract' || - name == 'readonly' - ); - } - - // Combinators - - function Context(prev, vars, block) { - this.prev = prev; - this.vars = vars; - this.block = block; - } - function Var(name, next) { - this.name = name; - this.next = next; - } - - var defaultVars = new Var('this', new Var('arguments', null)); - function pushcontext() { - cx.state.context = new Context( - cx.state.context, - cx.state.localVars, - false, - ); - cx.state.localVars = defaultVars; - } - function pushblockcontext() { - cx.state.context = new Context( - cx.state.context, - cx.state.localVars, - true, - ); - cx.state.localVars = null; - } - function popcontext() { - cx.state.localVars = cx.state.context.vars; - cx.state.context = cx.state.context.prev; - } - popcontext.lex = true; - function pushlex(type, info) { - var result = function () { - var state = cx.state, - indent = state.indented; - if (state.lexical.type == 'stat') indent = state.lexical.indented; - else - for ( - var outer = state.lexical; - outer && outer.type == ')' && outer.align; - outer = outer.prev - ) - indent = outer.indented; - state.lexical = new JSLexical( - indent, - cx.stream.column(), - type, - null, - state.lexical, - info, - ); - }; - result.lex = true; - return result; - } - function poplex() { - var state = cx.state; - if (state.lexical.prev) { - if (state.lexical.type == ')') state.indented = state.lexical.indented; - state.lexical = state.lexical.prev; - } - } - poplex.lex = true; - - function expect(wanted) { - function exp(type) { - if (type == wanted) return cont(); - else if (wanted == ';' || type == '}' || type == ')' || type == ']') - return pass(); - else return cont(exp); - } - return exp; - } - - function statement(type, value) { - if (type == 'var') - return cont(pushlex('vardef', value), vardef, expect(';'), poplex); - if (type == 'keyword a') - return cont(pushlex('form'), parenExpr, statement, poplex); - if (type == 'keyword b') return cont(pushlex('form'), statement, poplex); - if (type == 'keyword d') - return cx.stream.match(/^\s*$/, false) - ? cont() - : cont(pushlex('stat'), maybeexpression, expect(';'), poplex); - if (type == 'debugger') return cont(expect(';')); - if (type == '{') - return cont(pushlex('}'), pushblockcontext, block, poplex, popcontext); - if (type == ';') return cont(); - if (type == 'if') { - if ( - cx.state.lexical.info == 'else' && - cx.state.cc[cx.state.cc.length - 1] == poplex - ) - cx.state.cc.pop()(); - return cont(pushlex('form'), parenExpr, statement, poplex, maybeelse); - } - if (type == 'function') return cont(functiondef); - if (type == 'for') - return cont(pushlex('form'), forspec, statement, poplex); - if (type == 'class' || (isTS && value == 'interface')) { - cx.marked = 'keyword'; - return cont( - pushlex('form', type == 'class' ? type : value), - className, - poplex, - ); - } - if (type == 'variable') { - if (isTS && value == 'declare') { - cx.marked = 'keyword'; - return cont(statement); - } else if ( - isTS && - (value == 'module' || value == 'enum' || value == 'type') && - cx.stream.match(/^\s*\w/, false) - ) { - cx.marked = 'keyword'; - if (value == 'enum') return cont(enumdef); - else if (value == 'type') - return cont(typename, expect('operator'), typeexpr, expect(';')); - else - return cont( - pushlex('form'), - pattern, - expect('{'), - pushlex('}'), - block, - poplex, - poplex, - ); - } else if (isTS && value == 'namespace') { - cx.marked = 'keyword'; - return cont(pushlex('form'), expression, statement, poplex); - } else if (isTS && value == 'abstract') { - cx.marked = 'keyword'; - return cont(statement); - } else { - return cont(pushlex('stat'), maybelabel); - } - } - if (type == 'switch') - return cont( - pushlex('form'), - parenExpr, - expect('{'), - pushlex('}', 'switch'), - pushblockcontext, - block, - poplex, - poplex, - popcontext, - ); - if (type == 'case') return cont(expression, expect(':')); - if (type == 'default') return cont(expect(':')); - if (type == 'catch') - return cont( - pushlex('form'), - pushcontext, - maybeCatchBinding, - statement, - poplex, - popcontext, - ); - if (type == 'export') return cont(pushlex('stat'), afterExport, poplex); - if (type == 'import') return cont(pushlex('stat'), afterImport, poplex); - if (type == 'async') return cont(statement); - if (value == '@') return cont(expression, statement); - return pass(pushlex('stat'), expression, expect(';'), poplex); - } - function maybeCatchBinding(type) { - if (type == '(') return cont(funarg, expect(')')); - } - function expression(type, value) { - return expressionInner(type, value, false); - } - function expressionNoComma(type, value) { - return expressionInner(type, value, true); - } - function parenExpr(type) { - if (type != '(') return pass(); - return cont(pushlex(')'), expression, expect(')'), poplex); - } - function expressionInner(type, value, noComma) { - if (cx.state.fatArrowAt == cx.stream.start) { - var body = noComma ? arrowBodyNoComma : arrowBody; - if (type == '(') - return cont( - pushcontext, - pushlex(')'), - commasep(funarg, ')'), - poplex, - expect('=>'), - body, - popcontext, - ); - else if (type == 'variable') - return pass(pushcontext, pattern, expect('=>'), body, popcontext); - } - - var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma; - if (atomicTypes.hasOwnProperty(type)) return cont(maybeop); - if (type == 'function') return cont(functiondef, maybeop); - if (type == 'class' || (isTS && value == 'interface')) { - cx.marked = 'keyword'; - return cont(pushlex('form'), classExpression, poplex); - } - if (type == 'keyword c' || type == 'async') - return cont(noComma ? expressionNoComma : expression); - if (type == '(') - return cont( - pushlex(')'), - maybeexpression, - expect(')'), - poplex, - maybeop, - ); - if (type == 'operator' || type == 'spread') - return cont(noComma ? expressionNoComma : expression); - if (type == '[') return cont(pushlex(']'), arrayLiteral, poplex, maybeop); - if (type == '{') return contCommasep(objprop, '}', null, maybeop); - if (type == 'quasi') return pass(quasi, maybeop); - if (type == 'new') return cont(maybeTarget(noComma)); - if (type == 'import') return cont(expression); - return cont(); - } - function maybeexpression(type) { - if (type.match(/[;\}\)\],]/)) return pass(); - return pass(expression); - } - - function maybeoperatorComma(type, value) { - if (type == ',') return cont(expression); - return maybeoperatorNoComma(type, value, false); - } - function maybeoperatorNoComma(type, value, noComma) { - var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma; - var expr = noComma == false ? expression : expressionNoComma; - if (type == '=>') - return cont( - pushcontext, - noComma ? arrowBodyNoComma : arrowBody, - popcontext, - ); - if (type == 'operator') { - if (/\+\+|--/.test(value) || (isTS && value == '!')) return cont(me); - if ( - isTS && - value == '<' && - cx.stream.match(/^([^>]|<.*?>)*>\s*\(/, false) - ) - return cont(pushlex('>'), commasep(typeexpr, '>'), poplex, me); - if (value == '?') return cont(expression, expect(':'), expr); - return cont(expr); - } - if (type == 'quasi') { - return pass(quasi, me); - } - if (type == ';') return; - if (type == '(') return contCommasep(expressionNoComma, ')', 'call', me); - if (type == '.') return cont(property, me); - if (type == '[') - return cont(pushlex(']'), maybeexpression, expect(']'), poplex, me); - if (isTS && value == 'as') { - cx.marked = 'keyword'; - return cont(typeexpr, me); - } - if (type == 'regexp') { - cx.state.lastType = cx.marked = 'operator'; - cx.stream.backUp(cx.stream.pos - cx.stream.start - 1); - return cont(expr); - } - } - function quasi(type, value) { - if (type != 'quasi') return pass(); - if (value.slice(value.length - 2) != '${') return cont(quasi); - return cont(expression, continueQuasi); - } - function continueQuasi(type) { - if (type == '}') { - cx.marked = 'string-2'; - cx.state.tokenize = tokenQuasi; - return cont(quasi); - } - } - function arrowBody(type) { - findFatArrow(cx.stream, cx.state); - return pass(type == '{' ? statement : expression); - } - function arrowBodyNoComma(type) { - findFatArrow(cx.stream, cx.state); - return pass(type == '{' ? statement : expressionNoComma); - } - function maybeTarget(noComma) { - return function (type) { - if (type == '.') return cont(noComma ? targetNoComma : target); - else if (type == 'variable' && isTS) - return cont( - maybeTypeArgs, - noComma ? maybeoperatorNoComma : maybeoperatorComma, - ); - else return pass(noComma ? expressionNoComma : expression); - }; - } - function target(_, value) { - if (value == 'target') { - cx.marked = 'keyword'; - return cont(maybeoperatorComma); - } - } - function targetNoComma(_, value) { - if (value == 'target') { - cx.marked = 'keyword'; - return cont(maybeoperatorNoComma); - } - } - function maybelabel(type) { - if (type == ':') return cont(poplex, statement); - return pass(maybeoperatorComma, expect(';'), poplex); - } - function property(type) { - if (type == 'variable') { - cx.marked = 'property'; - return cont(); - } - } - function objprop(type, value) { - if (type == 'async') { - cx.marked = 'property'; - return cont(objprop); - } else if (type == 'variable' || cx.style == 'keyword') { - cx.marked = 'property'; - if (value == 'get' || value == 'set') return cont(getterSetter); - var m; // Work around fat-arrow-detection complication for detecting typescript typed arrow params - if ( - isTS && - cx.state.fatArrowAt == cx.stream.start && - (m = cx.stream.match(/^\s*:\s*/, false)) - ) - cx.state.fatArrowAt = cx.stream.pos + m[0].length; - return cont(afterprop); - } else if (type == 'number' || type == 'string') { - cx.marked = jsonldMode ? 'property' : cx.style + ' property'; - return cont(afterprop); - } else if (type == 'jsonld-keyword') { - return cont(afterprop); - } else if (isTS && isModifier(value)) { - cx.marked = 'keyword'; - return cont(objprop); - } else if (type == '[') { - return cont(expression, maybetype, expect(']'), afterprop); - } else if (type == 'spread') { - return cont(expressionNoComma, afterprop); - } else if (value == '*') { - cx.marked = 'keyword'; - return cont(objprop); - } else if (type == ':') { - return pass(afterprop); - } - } - function getterSetter(type) { - if (type != 'variable') return pass(afterprop); - cx.marked = 'property'; - return cont(functiondef); - } - function afterprop(type) { - if (type == ':') return cont(expressionNoComma); - if (type == '(') return pass(functiondef); - } - function commasep(what, end, sep) { - function proceed(type, value) { - if (sep ? sep.indexOf(type) > -1 : type == ',') { - var lex = cx.state.lexical; - if (lex.info == 'call') lex.pos = (lex.pos || 0) + 1; - return cont(function (type, value) { - if (type == end || value == end) return pass(); - return pass(what); - }, proceed); - } - if (type == end || value == end) return cont(); - if (sep && sep.indexOf(';') > -1) return pass(what); - return cont(expect(end)); - } - return function (type, value) { - if (type == end || value == end) return cont(); - return pass(what, proceed); + return cont(pushlex("stat"), maybelabel); + } + } + if (type == "switch") return cont(pushlex("form"), parenExpr, expect("{"), pushlex("}", "switch"), pushblockcontext, + block, poplex, poplex, popcontext); + if (type == "case") return cont(expression, expect(":")); + if (type == "default") return cont(expect(":")); + if (type == "catch") return cont(pushlex("form"), pushcontext, maybeCatchBinding, statement, poplex, popcontext); + if (type == "export") return cont(pushlex("stat"), afterExport, poplex); + if (type == "import") return cont(pushlex("stat"), afterImport, poplex); + if (type == "async") return cont(statement) + if (value == "@") return cont(expression, statement) + return pass(pushlex("stat"), expression, expect(";"), poplex); + } + function maybeCatchBinding(type) { + if (type == "(") return cont(funarg, expect(")")) + } + function expression(type, value) { + return expressionInner(type, value, false); + } + function expressionNoComma(type, value) { + return expressionInner(type, value, true); + } + function parenExpr(type) { + if (type != "(") return pass() + return cont(pushlex(")"), maybeexpression, expect(")"), poplex) + } + function expressionInner(type, value, noComma) { + if (cx.state.fatArrowAt == cx.stream.start) { + var body = noComma ? arrowBodyNoComma : arrowBody; + if (type == "(") return cont(pushcontext, pushlex(")"), commasep(funarg, ")"), poplex, expect("=>"), body, popcontext); + else if (type == "variable") return pass(pushcontext, pattern, expect("=>"), body, popcontext); + } + + var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma; + if (atomicTypes.hasOwnProperty(type)) return cont(maybeop); + if (type == "function") return cont(functiondef, maybeop); + if (type == "class" || (isTS && value == "interface")) { cx.marked = "keyword"; return cont(pushlex("form"), classExpression, poplex); } + if (type == "keyword c" || type == "async") return cont(noComma ? expressionNoComma : expression); + if (type == "(") return cont(pushlex(")"), maybeexpression, expect(")"), poplex, maybeop); + if (type == "operator" || type == "spread") return cont(noComma ? expressionNoComma : expression); + if (type == "[") return cont(pushlex("]"), arrayLiteral, poplex, maybeop); + if (type == "{") return contCommasep(objprop, "}", null, maybeop); + if (type == "quasi") return pass(quasi, maybeop); + if (type == "new") return cont(maybeTarget(noComma)); + return cont(); + } + function maybeexpression(type) { + if (type.match(/[;\}\)\],]/)) return pass(); + return pass(expression); + } + + function maybeoperatorComma(type, value) { + if (type == ",") return cont(maybeexpression); + return maybeoperatorNoComma(type, value, false); + } + function maybeoperatorNoComma(type, value, noComma) { + var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma; + var expr = noComma == false ? expression : expressionNoComma; + if (type == "=>") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext); + if (type == "operator") { + if (/\+\+|--/.test(value) || isTS && value == "!") return cont(me); + if (isTS && value == "<" && cx.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/, false)) + return cont(pushlex(">"), commasep(typeexpr, ">"), poplex, me); + if (value == "?") return cont(expression, expect(":"), expr); + return cont(expr); + } + if (type == "quasi") { return pass(quasi, me); } + if (type == ";") return; + if (type == "(") return contCommasep(expressionNoComma, ")", "call", me); + if (type == ".") return cont(property, me); + if (type == "[") return cont(pushlex("]"), maybeexpression, expect("]"), poplex, me); + if (isTS && value == "as") { cx.marked = "keyword"; return cont(typeexpr, me) } + if (type == "regexp") { + cx.state.lastType = cx.marked = "operator" + cx.stream.backUp(cx.stream.pos - cx.stream.start - 1) + return cont(expr) + } + } + function quasi(type, value) { + if (type != "quasi") return pass(); + if (value.slice(value.length - 2) != "${") return cont(quasi); + return cont(maybeexpression, continueQuasi); + } + function continueQuasi(type) { + if (type == "}") { + cx.marked = "string-2"; + cx.state.tokenize = tokenQuasi; + return cont(quasi); + } + } + function arrowBody(type) { + findFatArrow(cx.stream, cx.state); + return pass(type == "{" ? statement : expression); + } + function arrowBodyNoComma(type) { + findFatArrow(cx.stream, cx.state); + return pass(type == "{" ? statement : expressionNoComma); + } + function maybeTarget(noComma) { + return function(type) { + if (type == ".") return cont(noComma ? targetNoComma : target); + else if (type == "variable" && isTS) return cont(maybeTypeArgs, noComma ? maybeoperatorNoComma : maybeoperatorComma) + else return pass(noComma ? expressionNoComma : expression); + }; + } + function target(_, value) { + if (value == "target") { cx.marked = "keyword"; return cont(maybeoperatorComma); } + } + function targetNoComma(_, value) { + if (value == "target") { cx.marked = "keyword"; return cont(maybeoperatorNoComma); } + } + function maybelabel(type) { + if (type == ":") return cont(poplex, statement); + return pass(maybeoperatorComma, expect(";"), poplex); + } + function property(type) { + if (type == "variable") {cx.marked = "property"; return cont();} + } + function objprop(type, value) { + if (type == "async") { + cx.marked = "property"; + return cont(objprop); + } else if (type == "variable" || cx.style == "keyword") { + cx.marked = "property"; + if (value == "get" || value == "set") return cont(getterSetter); + var m // Work around fat-arrow-detection complication for detecting typescript typed arrow params + if (isTS && cx.state.fatArrowAt == cx.stream.start && (m = cx.stream.match(/^\s*:\s*/, false))) + cx.state.fatArrowAt = cx.stream.pos + m[0].length + return cont(afterprop); + } else if (type == "number" || type == "string") { + cx.marked = jsonldMode ? "property" : (cx.style + " property"); + return cont(afterprop); + } else if (type == "jsonld-keyword") { + return cont(afterprop); + } else if (isTS && isModifier(value)) { + cx.marked = "keyword" + return cont(objprop) + } else if (type == "[") { + return cont(expression, maybetype, expect("]"), afterprop); + } else if (type == "spread") { + return cont(expressionNoComma, afterprop); + } else if (value == "*") { + cx.marked = "keyword"; + return cont(objprop); + } else if (type == ":") { + return pass(afterprop) + } + } + function getterSetter(type) { + if (type != "variable") return pass(afterprop); + cx.marked = "property"; + return cont(functiondef); + } + function afterprop(type) { + if (type == ":") return cont(expressionNoComma); + if (type == "(") return pass(functiondef); + } + function commasep(what, end, sep) { + function proceed(type, value) { + if (sep ? sep.indexOf(type) > -1 : type == ",") { + var lex = cx.state.lexical; + if (lex.info == "call") lex.pos = (lex.pos || 0) + 1; + return cont(function(type, value) { + if (type == end || value == end) return pass() + return pass(what) + }, proceed); + } + if (type == end || value == end) return cont(); + if (sep && sep.indexOf(";") > -1) return pass(what) + return cont(expect(end)); + } + return function(type, value) { + if (type == end || value == end) return cont(); + return pass(what, proceed); + }; + } + function contCommasep(what, end, info) { + for (var i = 3; i < arguments.length; i++) + cx.cc.push(arguments[i]); + return cont(pushlex(end, info), commasep(what, end), poplex); + } + function block(type) { + if (type == "}") return cont(); + return pass(statement, block); + } + function maybetype(type, value) { + if (isTS) { + if (type == ":") return cont(typeexpr); + if (value == "?") return cont(maybetype); + } + } + function maybetypeOrIn(type, value) { + if (isTS && (type == ":" || value == "in")) return cont(typeexpr) + } + function mayberettype(type) { + if (isTS && type == ":") { + if (cx.stream.match(/^\s*\w+\s+is\b/, false)) return cont(expression, isKW, typeexpr) + else return cont(typeexpr) + } + } + function isKW(_, value) { + if (value == "is") { + cx.marked = "keyword" + return cont() + } + } + function typeexpr(type, value) { + if (value == "keyof" || value == "typeof" || value == "infer" || value == "readonly") { + cx.marked = "keyword" + return cont(value == "typeof" ? expressionNoComma : typeexpr) + } + if (type == "variable" || value == "void") { + cx.marked = "type" + return cont(afterType) + } + if (value == "|" || value == "&") return cont(typeexpr) + if (type == "string" || type == "number" || type == "atom") return cont(afterType); + if (type == "[") return cont(pushlex("]"), commasep(typeexpr, "]", ","), poplex, afterType) + if (type == "{") return cont(pushlex("}"), typeprops, poplex, afterType) + if (type == "(") return cont(commasep(typearg, ")"), maybeReturnType, afterType) + if (type == "<") return cont(commasep(typeexpr, ">"), typeexpr) + if (type == "quasi") { return pass(quasiType, afterType); } + } + function maybeReturnType(type) { + if (type == "=>") return cont(typeexpr) + } + function typeprops(type) { + if (type.match(/[\}\)\]]/)) return cont() + if (type == "," || type == ";") return cont(typeprops) + return pass(typeprop, typeprops) + } + function typeprop(type, value) { + if (type == "variable" || cx.style == "keyword") { + cx.marked = "property" + return cont(typeprop) + } else if (value == "?" || type == "number" || type == "string") { + return cont(typeprop) + } else if (type == ":") { + return cont(typeexpr) + } else if (type == "[") { + return cont(expect("variable"), maybetypeOrIn, expect("]"), typeprop) + } else if (type == "(") { + return pass(functiondecl, typeprop) + } else if (!type.match(/[;\}\)\],]/)) { + return cont() + } + } + function quasiType(type, value) { + if (type != "quasi") return pass(); + if (value.slice(value.length - 2) != "${") return cont(quasiType); + return cont(typeexpr, continueQuasiType); + } + function continueQuasiType(type) { + if (type == "}") { + cx.marked = "string-2"; + cx.state.tokenize = tokenQuasi; + return cont(quasiType); + } + } + function typearg(type, value) { + if (type == "variable" && cx.stream.match(/^\s*[?:]/, false) || value == "?") return cont(typearg) + if (type == ":") return cont(typeexpr) + if (type == "spread") return cont(typearg) + return pass(typeexpr) + } + function afterType(type, value) { + if (value == "<") return cont(pushlex(">"), commasep(typeexpr, ">"), poplex, afterType) + if (value == "|" || type == "." || value == "&") return cont(typeexpr) + if (type == "[") return cont(typeexpr, expect("]"), afterType) + if (value == "extends" || value == "implements") { cx.marked = "keyword"; return cont(typeexpr) } + if (value == "?") return cont(typeexpr, expect(":"), typeexpr) + } + function maybeTypeArgs(_, value) { + if (value == "<") return cont(pushlex(">"), commasep(typeexpr, ">"), poplex, afterType) + } + function typeparam() { + return pass(typeexpr, maybeTypeDefault) + } + function maybeTypeDefault(_, value) { + if (value == "=") return cont(typeexpr) + } + function vardef(_, value) { + if (value == "enum") {cx.marked = "keyword"; return cont(enumdef)} + return pass(pattern, maybetype, maybeAssign, vardefCont); + } + function pattern(type, value) { + if (isTS && isModifier(value)) { cx.marked = "keyword"; return cont(pattern) } + if (type == "variable") { register(value); return cont(); } + if (type == "spread") return cont(pattern); + if (type == "[") return contCommasep(eltpattern, "]"); + if (type == "{") return contCommasep(proppattern, "}"); + } + function proppattern(type, value) { + if (type == "variable" && !cx.stream.match(/^\s*:/, false)) { + register(value); + return cont(maybeAssign); + } + if (type == "variable") cx.marked = "property"; + if (type == "spread") return cont(pattern); + if (type == "}") return pass(); + if (type == "[") return cont(expression, expect(']'), expect(':'), proppattern); + return cont(expect(":"), pattern, maybeAssign); + } + function eltpattern() { + return pass(pattern, maybeAssign) + } + function maybeAssign(_type, value) { + if (value == "=") return cont(expressionNoComma); + } + function vardefCont(type) { + if (type == ",") return cont(vardef); + } + function maybeelse(type, value) { + if (type == "keyword b" && value == "else") return cont(pushlex("form", "else"), statement, poplex); + } + function forspec(type, value) { + if (value == "await") return cont(forspec); + if (type == "(") return cont(pushlex(")"), forspec1, poplex); + } + function forspec1(type) { + if (type == "var") return cont(vardef, forspec2); + if (type == "variable") return cont(forspec2); + return pass(forspec2) + } + function forspec2(type, value) { + if (type == ")") return cont() + if (type == ";") return cont(forspec2) + if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression, forspec2) } + return pass(expression, forspec2) + } + function functiondef(type, value) { + if (value == "*") {cx.marked = "keyword"; return cont(functiondef);} + if (type == "variable") {register(value); return cont(functiondef);} + if (type == "(") return cont(pushcontext, pushlex(")"), commasep(funarg, ")"), poplex, mayberettype, statement, popcontext); + if (isTS && value == "<") return cont(pushlex(">"), commasep(typeparam, ">"), poplex, functiondef) + } + function functiondecl(type, value) { + if (value == "*") {cx.marked = "keyword"; return cont(functiondecl);} + if (type == "variable") {register(value); return cont(functiondecl);} + if (type == "(") return cont(pushcontext, pushlex(")"), commasep(funarg, ")"), poplex, mayberettype, popcontext); + if (isTS && value == "<") return cont(pushlex(">"), commasep(typeparam, ">"), poplex, functiondecl) + } + function typename(type, value) { + if (type == "keyword" || type == "variable") { + cx.marked = "type" + return cont(typename) + } else if (value == "<") { + return cont(pushlex(">"), commasep(typeparam, ">"), poplex) + } + } + function funarg(type, value) { + if (value == "@") cont(expression, funarg) + if (type == "spread") return cont(funarg); + if (isTS && isModifier(value)) { cx.marked = "keyword"; return cont(funarg); } + if (isTS && type == "this") return cont(maybetype, maybeAssign) + return pass(pattern, maybetype, maybeAssign); + } + function classExpression(type, value) { + // Class expressions may have an optional name. + if (type == "variable") return className(type, value); + return classNameAfter(type, value); + } + function className(type, value) { + if (type == "variable") {register(value); return cont(classNameAfter);} + } + function classNameAfter(type, value) { + if (value == "<") return cont(pushlex(">"), commasep(typeparam, ">"), poplex, classNameAfter) + if (value == "extends" || value == "implements" || (isTS && type == ",")) { + if (value == "implements") cx.marked = "keyword"; + return cont(isTS ? typeexpr : expression, classNameAfter); + } + if (type == "{") return cont(pushlex("}"), classBody, poplex); + } + function classBody(type, value) { + if (type == "async" || + (type == "variable" && + (value == "static" || value == "get" || value == "set" || (isTS && isModifier(value))) && + cx.stream.match(/^\s+#?[\w$\xa1-\uffff]/, false))) { + cx.marked = "keyword"; + return cont(classBody); + } + if (type == "variable" || cx.style == "keyword") { + cx.marked = "property"; + return cont(classfield, classBody); + } + if (type == "number" || type == "string") return cont(classfield, classBody); + if (type == "[") + return cont(expression, maybetype, expect("]"), classfield, classBody) + if (value == "*") { + cx.marked = "keyword"; + return cont(classBody); + } + if (isTS && type == "(") return pass(functiondecl, classBody) + if (type == ";" || type == ",") return cont(classBody); + if (type == "}") return cont(); + if (value == "@") return cont(expression, classBody) + } + function classfield(type, value) { + if (value == "!") return cont(classfield) + if (value == "?") return cont(classfield) + if (type == ":") return cont(typeexpr, maybeAssign) + if (value == "=") return cont(expressionNoComma) + var context = cx.state.lexical.prev, isInterface = context && context.info == "interface" + return pass(isInterface ? functiondecl : functiondef) + } + function afterExport(type, value) { + if (value == "*") { cx.marked = "keyword"; return cont(maybeFrom, expect(";")); } + if (value == "default") { cx.marked = "keyword"; return cont(expression, expect(";")); } + if (type == "{") return cont(commasep(exportField, "}"), maybeFrom, expect(";")); + return pass(statement); + } + function exportField(type, value) { + if (value == "as") { cx.marked = "keyword"; return cont(expect("variable")); } + if (type == "variable") return pass(expressionNoComma, exportField); + } + function afterImport(type) { + if (type == "string") return cont(); + if (type == "(") return pass(expression); + if (type == ".") return pass(maybeoperatorComma); + return pass(importSpec, maybeMoreImports, maybeFrom); + } + function importSpec(type, value) { + if (type == "{") return contCommasep(importSpec, "}"); + if (type == "variable") register(value); + if (value == "*") cx.marked = "keyword"; + return cont(maybeAs); + } + function maybeMoreImports(type) { + if (type == ",") return cont(importSpec, maybeMoreImports) + } + function maybeAs(_type, value) { + if (value == "as") { cx.marked = "keyword"; return cont(importSpec); } + } + function maybeFrom(_type, value) { + if (value == "from") { cx.marked = "keyword"; return cont(expression); } + } + function arrayLiteral(type) { + if (type == "]") return cont(); + return pass(commasep(expressionNoComma, "]")); + } + function enumdef() { + return pass(pushlex("form"), pattern, expect("{"), pushlex("}"), commasep(enummember, "}"), poplex, poplex) + } + function enummember() { + return pass(pattern, maybeAssign); + } + + function isContinuedStatement(state, textAfter) { + return state.lastType == "operator" || state.lastType == "," || + isOperatorChar.test(textAfter.charAt(0)) || + /[,.]/.test(textAfter.charAt(0)); + } + + function expressionAllowed(stream, state, backUp) { + return state.tokenize == tokenBase && + /^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(state.lastType) || + (state.lastType == "quasi" && /\{\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0)))) + } + + // Interface + + return { + startState: function(basecolumn) { + var state = { + tokenize: tokenBase, + lastType: "sof", + cc: [], + lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, "block", false), + localVars: parserConfig.localVars, + context: parserConfig.localVars && new Context(null, null, false), + indented: basecolumn || 0 }; - } - function contCommasep(what, end, info) { - for (var i = 3; i < arguments.length; i++) cx.cc.push(arguments[i]); - return cont(pushlex(end, info), commasep(what, end), poplex); - } - function block(type) { - if (type == '}') return cont(); - return pass(statement, block); - } - function maybetype(type, value) { - if (isTS) { - if (type == ':') return cont(typeexpr); - if (value == '?') return cont(maybetype); - } - } - function maybetypeOrIn(type, value) { - if (isTS && (type == ':' || value == 'in')) return cont(typeexpr); - } - function mayberettype(type) { - if (isTS && type == ':') { - if (cx.stream.match(/^\s*\w+\s+is\b/, false)) - return cont(expression, isKW, typeexpr); - else return cont(typeexpr); - } - } - function isKW(_, value) { - if (value == 'is') { - cx.marked = 'keyword'; - return cont(); - } - } - function typeexpr(type, value) { - if (value == 'keyof' || value == 'typeof' || value == 'infer') { - cx.marked = 'keyword'; - return cont(value == 'typeof' ? expressionNoComma : typeexpr); - } - if (type == 'variable' || value == 'void') { - cx.marked = 'type'; - return cont(afterType); - } - if (value == '|' || value == '&') return cont(typeexpr); - if (type == 'string' || type == 'number' || type == 'atom') - return cont(afterType); - if (type == '[') - return cont( - pushlex(']'), - commasep(typeexpr, ']', ','), - poplex, - afterType, - ); - if (type == '{') - return cont( - pushlex('}'), - commasep(typeprop, '}', ',;'), - poplex, - afterType, - ); - if (type == '(') - return cont(commasep(typearg, ')'), maybeReturnType, afterType); - if (type == '<') return cont(commasep(typeexpr, '>'), typeexpr); - } - function maybeReturnType(type) { - if (type == '=>') return cont(typeexpr); - } - function typeprop(type, value) { - if (type == 'variable' || cx.style == 'keyword') { - cx.marked = 'property'; - return cont(typeprop); - } else if (value == '?' || type == 'number' || type == 'string') { - return cont(typeprop); - } else if (type == ':') { - return cont(typeexpr); - } else if (type == '[') { - return cont(expect('variable'), maybetypeOrIn, expect(']'), typeprop); - } else if (type == '(') { - return pass(functiondecl, typeprop); - } - } - function typearg(type, value) { - if ( - (type == 'variable' && cx.stream.match(/^\s*[?:]/, false)) || - value == '?' - ) - return cont(typearg); - if (type == ':') return cont(typeexpr); - if (type == 'spread') return cont(typearg); - return pass(typeexpr); - } - function afterType(type, value) { - if (value == '<') - return cont(pushlex('>'), commasep(typeexpr, '>'), poplex, afterType); - if (value == '|' || type == '.' || value == '&') return cont(typeexpr); - if (type == '[') return cont(typeexpr, expect(']'), afterType); - if (value == 'extends' || value == 'implements') { - cx.marked = 'keyword'; - return cont(typeexpr); - } - if (value == '?') return cont(typeexpr, expect(':'), typeexpr); - } - function maybeTypeArgs(_, value) { - if (value == '<') - return cont(pushlex('>'), commasep(typeexpr, '>'), poplex, afterType); - } - function typeparam() { - return pass(typeexpr, maybeTypeDefault); - } - function maybeTypeDefault(_, value) { - if (value == '=') return cont(typeexpr); - } - function vardef(_, value) { - if (value == 'enum') { - cx.marked = 'keyword'; - return cont(enumdef); - } - return pass(pattern, maybetype, maybeAssign, vardefCont); - } - function pattern(type, value) { - if (isTS && isModifier(value)) { - cx.marked = 'keyword'; - return cont(pattern); - } - if (type == 'variable') { - register(value); - return cont(); - } - if (type == 'spread') return cont(pattern); - if (type == '[') return contCommasep(eltpattern, ']'); - if (type == '{') return contCommasep(proppattern, '}'); - } - function proppattern(type, value) { - if (type == 'variable' && !cx.stream.match(/^\s*:/, false)) { - register(value); - return cont(maybeAssign); - } - if (type == 'variable') cx.marked = 'property'; - if (type == 'spread') return cont(pattern); - if (type == '}') return pass(); - if (type == '[') - return cont(expression, expect(']'), expect(':'), proppattern); - return cont(expect(':'), pattern, maybeAssign); - } - function eltpattern() { - return pass(pattern, maybeAssign); - } - function maybeAssign(_type, value) { - if (value == '=') return cont(expressionNoComma); - } - function vardefCont(type) { - if (type == ',') return cont(vardef); - } - function maybeelse(type, value) { - if (type == 'keyword b' && value == 'else') - return cont(pushlex('form', 'else'), statement, poplex); - } - function forspec(type, value) { - if (value == 'await') return cont(forspec); - if (type == '(') return cont(pushlex(')'), forspec1, poplex); - } - function forspec1(type) { - if (type == 'var') return cont(vardef, forspec2); - if (type == 'variable') return cont(forspec2); - return pass(forspec2); - } - function forspec2(type, value) { - if (type == ')') return cont(); - if (type == ';') return cont(forspec2); - if (value == 'in' || value == 'of') { - cx.marked = 'keyword'; - return cont(expression, forspec2); - } - return pass(expression, forspec2); - } - function functiondef(type, value) { - if (value == '*') { - cx.marked = 'keyword'; - return cont(functiondef); - } - if (type == 'variable') { - register(value); - return cont(functiondef); - } - if (type == '(') - return cont( - pushcontext, - pushlex(')'), - commasep(funarg, ')'), - poplex, - mayberettype, - statement, - popcontext, - ); - if (isTS && value == '<') - return cont( - pushlex('>'), - commasep(typeparam, '>'), - poplex, - functiondef, - ); - } - function functiondecl(type, value) { - if (value == '*') { - cx.marked = 'keyword'; - return cont(functiondecl); - } - if (type == 'variable') { - register(value); - return cont(functiondecl); - } - if (type == '(') - return cont( - pushcontext, - pushlex(')'), - commasep(funarg, ')'), - poplex, - mayberettype, - popcontext, - ); - if (isTS && value == '<') - return cont( - pushlex('>'), - commasep(typeparam, '>'), - poplex, - functiondecl, - ); - } - function typename(type, value) { - if (type == 'keyword' || type == 'variable') { - cx.marked = 'type'; - return cont(typename); - } else if (value == '<') { - return cont(pushlex('>'), commasep(typeparam, '>'), poplex); - } - } - function funarg(type, value) { - if (value == '@') cont(expression, funarg); - if (type == 'spread') return cont(funarg); - if (isTS && isModifier(value)) { - cx.marked = 'keyword'; - return cont(funarg); - } - if (isTS && type == 'this') return cont(maybetype, maybeAssign); - return pass(pattern, maybetype, maybeAssign); - } - function classExpression(type, value) { - // Class expressions may have an optional name. - if (type == 'variable') return className(type, value); - return classNameAfter(type, value); - } - function className(type, value) { - if (type == 'variable') { - register(value); - return cont(classNameAfter); - } - } - function classNameAfter(type, value) { - if (value == '<') - return cont( - pushlex('>'), - commasep(typeparam, '>'), - poplex, - classNameAfter, - ); - if ( - value == 'extends' || - value == 'implements' || - (isTS && type == ',') - ) { - if (value == 'implements') cx.marked = 'keyword'; - return cont(isTS ? typeexpr : expression, classNameAfter); - } - if (type == '{') return cont(pushlex('}'), classBody, poplex); - } - function classBody(type, value) { - if ( - type == 'async' || - (type == 'variable' && - (value == 'static' || - value == 'get' || - value == 'set' || - (isTS && isModifier(value))) && - cx.stream.match(/^\s+[\w$\xa1-\uffff]/, false)) - ) { - cx.marked = 'keyword'; - return cont(classBody); - } - if (type == 'variable' || cx.style == 'keyword') { - cx.marked = 'property'; - return cont(isTS ? classfield : functiondef, classBody); - } - if (type == 'number' || type == 'string') - return cont(isTS ? classfield : functiondef, classBody); - if (type == '[') - return cont( - expression, - maybetype, - expect(']'), - isTS ? classfield : functiondef, - classBody, - ); - if (value == '*') { - cx.marked = 'keyword'; - return cont(classBody); - } - if (isTS && type == '(') return pass(functiondecl, classBody); - if (type == ';' || type == ',') return cont(classBody); - if (type == '}') return cont(); - if (value == '@') return cont(expression, classBody); - } - function classfield(type, value) { - if (value == '?') return cont(classfield); - if (type == ':') return cont(typeexpr, maybeAssign); - if (value == '=') return cont(expressionNoComma); - var context = cx.state.lexical.prev, - isInterface = context && context.info == 'interface'; - return pass(isInterface ? functiondecl : functiondef); - } - function afterExport(type, value) { - if (value == '*') { - cx.marked = 'keyword'; - return cont(maybeFrom, expect(';')); - } - if (value == 'default') { - cx.marked = 'keyword'; - return cont(expression, expect(';')); - } - if (type == '{') - return cont(commasep(exportField, '}'), maybeFrom, expect(';')); - return pass(statement); - } - function exportField(type, value) { - if (value == 'as') { - cx.marked = 'keyword'; - return cont(expect('variable')); - } - if (type == 'variable') return pass(expressionNoComma, exportField); - } - function afterImport(type) { - if (type == 'string') return cont(); - if (type == '(') return pass(expression); - return pass(importSpec, maybeMoreImports, maybeFrom); - } - function importSpec(type, value) { - if (type == '{') return contCommasep(importSpec, '}'); - if (type == 'variable') register(value); - if (value == '*') cx.marked = 'keyword'; - return cont(maybeAs); - } - function maybeMoreImports(type) { - if (type == ',') return cont(importSpec, maybeMoreImports); - } - function maybeAs(_type, value) { - if (value == 'as') { - cx.marked = 'keyword'; - return cont(importSpec); - } - } - function maybeFrom(_type, value) { - if (value == 'from') { - cx.marked = 'keyword'; - return cont(expression); - } - } - function arrayLiteral(type) { - if (type == ']') return cont(); - return pass(commasep(expressionNoComma, ']')); - } - function enumdef() { - return pass( - pushlex('form'), - pattern, - expect('{'), - pushlex('}'), - commasep(enummember, '}'), - poplex, - poplex, - ); - } - function enummember() { - return pass(pattern, maybeAssign); - } - - function isContinuedStatement(state, textAfter) { - return ( - state.lastType == 'operator' || - state.lastType == ',' || - isOperatorChar.test(textAfter.charAt(0)) || - /[,.]/.test(textAfter.charAt(0)) - ); - } - - function expressionAllowed(stream, state, backUp) { - return ( - (state.tokenize == tokenBase && - /^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test( - state.lastType, - )) || - (state.lastType == 'quasi' && - /\{\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0)))) - ); - } - - // Interface - - return { - startState: function (basecolumn) { - var state = { - tokenize: tokenBase, - lastType: 'sof', - cc: [], - lexical: new JSLexical( - (basecolumn || 0) - indentUnit, - 0, - 'block', - false, - ), - localVars: parserConfig.localVars, - context: parserConfig.localVars && new Context(null, null, false), - indented: basecolumn || 0, - }; - if ( - parserConfig.globalVars && - typeof parserConfig.globalVars == 'object' - ) - state.globalVars = parserConfig.globalVars; - return state; - }, - - token: function (stream, state) { - if (stream.sol()) { - if (!state.lexical.hasOwnProperty('align')) - state.lexical.align = false; - state.indented = stream.indentation(); - findFatArrow(stream, state); - } - if (state.tokenize != tokenComment && stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - if (type == 'comment') return style; - state.lastType = - type == 'operator' && (content == '++' || content == '--') - ? 'incdec' - : type; - return parseJS(state, style, type, content, stream); - }, - - indent: function (state, textAfter) { - if (state.tokenize == tokenComment) return CodeMirror.Pass; - if (state.tokenize != tokenBase) return 0; - var firstChar = textAfter && textAfter.charAt(0), - lexical = state.lexical, - top; - // Kludge to prevent 'maybelse' from blocking lexical scope pops - if (!/^\s*else\b/.test(textAfter)) - for (var i = state.cc.length - 1; i >= 0; --i) { - var c = state.cc[i]; - if (c == poplex) lexical = lexical.prev; - else if (c != maybeelse) break; - } - while ( - (lexical.type == 'stat' || lexical.type == 'form') && - (firstChar == '}' || - ((top = state.cc[state.cc.length - 1]) && - (top == maybeoperatorComma || top == maybeoperatorNoComma) && - !/^[,\.=+\-*:?[\(]/.test(textAfter))) - ) - lexical = lexical.prev; - if ( - statementIndent && - lexical.type == ')' && - lexical.prev.type == 'stat' - ) - lexical = lexical.prev; - var type = lexical.type, - closing = firstChar == type; - - if (type == 'vardef') - return ( - lexical.indented + - (state.lastType == 'operator' || state.lastType == ',' - ? lexical.info.length + 1 - : 0) - ); - else if (type == 'form' && firstChar == '{') return lexical.indented; - else if (type == 'form') return lexical.indented + indentUnit; - else if (type == 'stat') - return ( - lexical.indented + - (isContinuedStatement(state, textAfter) - ? statementIndent || indentUnit - : 0) - ); - else if ( - lexical.info == 'switch' && - !closing && - parserConfig.doubleIndentSwitch != false - ) - return ( - lexical.indented + - (/^(?:case|default)\b/.test(textAfter) - ? indentUnit - : 2 * indentUnit) - ); - else if (lexical.align) return lexical.column + (closing ? 0 : 1); - else return lexical.indented + (closing ? 0 : indentUnit); - }, - - electricInput: /^\s*(?:case .*?:|default:|\{|\})$/, - blockCommentStart: jsonMode ? null : '/*', - blockCommentEnd: jsonMode ? null : '*/', - blockCommentContinue: jsonMode ? null : ' * ', - lineComment: jsonMode ? null : '//', - fold: 'brace', - closeBrackets: '()[]{}\'\'""``', - - helperType: jsonMode ? 'json' : 'javascript', - jsonldMode: jsonldMode, - jsonMode: jsonMode, - - expressionAllowed: expressionAllowed, + if (parserConfig.globalVars && typeof parserConfig.globalVars == "object") + state.globalVars = parserConfig.globalVars; + return state; + }, + + token: function(stream, state) { + if (stream.sol()) { + if (!state.lexical.hasOwnProperty("align")) + state.lexical.align = false; + state.indented = stream.indentation(); + findFatArrow(stream, state); + } + if (state.tokenize != tokenComment && stream.eatSpace()) return null; + var style = state.tokenize(stream, state); + if (type == "comment") return style; + state.lastType = type == "operator" && (content == "++" || content == "--") ? "incdec" : type; + return parseJS(state, style, type, content, stream); + }, + + indent: function(state, textAfter) { + if (state.tokenize == tokenComment || state.tokenize == tokenQuasi) return CodeMirror.Pass; + if (state.tokenize != tokenBase) return 0; + var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical, top + // Kludge to prevent 'maybelse' from blocking lexical scope pops + if (!/^\s*else\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) { + var c = state.cc[i]; + if (c == poplex) lexical = lexical.prev; + else if (c != maybeelse && c != popcontext) break; + } + while ((lexical.type == "stat" || lexical.type == "form") && + (firstChar == "}" || ((top = state.cc[state.cc.length - 1]) && + (top == maybeoperatorComma || top == maybeoperatorNoComma) && + !/^[,\.=+\-*:?[\(]/.test(textAfter)))) + lexical = lexical.prev; + if (statementIndent && lexical.type == ")" && lexical.prev.type == "stat") + lexical = lexical.prev; + var type = lexical.type, closing = firstChar == type; + + if (type == "vardef") return lexical.indented + (state.lastType == "operator" || state.lastType == "," ? lexical.info.length + 1 : 0); + else if (type == "form" && firstChar == "{") return lexical.indented; + else if (type == "form") return lexical.indented + indentUnit; + else if (type == "stat") + return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0); + else if (lexical.info == "switch" && !closing && parserConfig.doubleIndentSwitch != false) + return lexical.indented + (/^(?:case|default)\b/.test(textAfter) ? indentUnit : 2 * indentUnit); + else if (lexical.align) return lexical.column + (closing ? 0 : 1); + else return lexical.indented + (closing ? 0 : indentUnit); + }, + + electricInput: /^\s*(?:case .*?:|default:|\{|\})$/, + blockCommentStart: jsonMode ? null : "/*", + blockCommentEnd: jsonMode ? null : "*/", + blockCommentContinue: jsonMode ? null : " * ", + lineComment: jsonMode ? null : "//", + fold: "brace", + closeBrackets: "()[]{}''\"\"``", + + helperType: jsonMode ? "json" : "javascript", + jsonldMode: jsonldMode, + jsonMode: jsonMode, + + expressionAllowed: expressionAllowed, + + skipExpression: function(state) { + parseJS(state, "atom", "atom", "true", new CodeMirror.StringStream("", 2, null)) + } + }; +}); - skipExpression: function (state) { - var top = state.cc[state.cc.length - 1]; - if (top == expression || top == expressionNoComma) state.cc.pop(); - }, - }; - }); +CodeMirror.registerHelper("wordChars", "javascript", /[\w$]/); - CodeMirror.registerHelper('wordChars', 'javascript', /[\w$]/); +CodeMirror.defineMIME("text/javascript", "javascript"); +CodeMirror.defineMIME("text/ecmascript", "javascript"); +CodeMirror.defineMIME("application/javascript", "javascript"); +CodeMirror.defineMIME("application/x-javascript", "javascript"); +CodeMirror.defineMIME("application/ecmascript", "javascript"); +CodeMirror.defineMIME("application/json", { name: "javascript", json: true }); +CodeMirror.defineMIME("application/x-json", { name: "javascript", json: true }); +CodeMirror.defineMIME("application/manifest+json", { name: "javascript", json: true }) +CodeMirror.defineMIME("application/ld+json", { name: "javascript", jsonld: true }); +CodeMirror.defineMIME("text/typescript", { name: "javascript", typescript: true }); +CodeMirror.defineMIME("application/typescript", { name: "javascript", typescript: true }); - CodeMirror.defineMIME('text/javascript', 'javascript'); - CodeMirror.defineMIME('text/ecmascript', 'javascript'); - CodeMirror.defineMIME('application/javascript', 'javascript'); - CodeMirror.defineMIME('application/x-javascript', 'javascript'); - CodeMirror.defineMIME('application/ecmascript', 'javascript'); - CodeMirror.defineMIME('application/json', { name: 'javascript', json: true }); - CodeMirror.defineMIME('application/x-json', { - name: 'javascript', - json: true, - }); - CodeMirror.defineMIME('application/ld+json', { - name: 'javascript', - jsonld: true, - }); - CodeMirror.defineMIME('text/typescript', { - name: 'javascript', - typescript: true, - }); - CodeMirror.defineMIME('application/typescript', { - name: 'javascript', - typescript: true, - }); }); diff --git a/web/static/lib/codemirror/markdown.js b/web/static/lib/codemirror/markdown.js index 5dfe9b93..6eef5442 100644 --- a/web/static/lib/codemirror/markdown.js +++ b/web/static/lib/codemirror/markdown.js @@ -1,1068 +1,886 @@ // CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: https://codemirror.net/LICENSE - -(function (mod) { - if (typeof exports == 'object' && typeof module == 'object') - // CommonJS - mod( - require('../../lib/codemirror'), - require('../xml/xml'), - require('../meta'), - ); - else if (typeof define == 'function' && define.amd) - // AMD - define(['../../lib/codemirror', '../xml/xml', '../meta'], mod); - // Plain browser env - else mod(CodeMirror); -})(function (CodeMirror) { - 'use strict'; - - CodeMirror.defineMode( - 'markdown', - function (cmCfg, modeCfg) { - var htmlMode = CodeMirror.getMode(cmCfg, 'text/html'); - var htmlModeMissing = htmlMode.name == 'null'; - - function getMode(name) { - if (CodeMirror.findModeByName) { - var found = CodeMirror.findModeByName(name); - if (found) name = found.mime || found.mimes[0]; - } - var mode = CodeMirror.getMode(cmCfg, name); - return mode.name == 'null' ? null : mode; +// Distributed under an MIT license: https://codemirror.net/5/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror"), require("../xml/xml"), require("../meta")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror", "../xml/xml", "../meta"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) { + + var htmlMode = CodeMirror.getMode(cmCfg, "text/html"); + var htmlModeMissing = htmlMode.name == "null" + + function getMode(name) { + if (CodeMirror.findModeByName) { + var found = CodeMirror.findModeByName(name); + if (found) name = found.mime || found.mimes[0]; + } + var mode = CodeMirror.getMode(cmCfg, name); + return mode.name == "null" ? null : mode; + } + + // Should characters that affect highlighting be highlighted separate? + // Does not include characters that will be output (such as `1.` and `-` for lists) + if (modeCfg.highlightFormatting === undefined) + modeCfg.highlightFormatting = false; + + // Maximum number of nested blockquotes. Set to 0 for infinite nesting. + // Excess `>` will emit `error` token. + if (modeCfg.maxBlockquoteDepth === undefined) + modeCfg.maxBlockquoteDepth = 0; + + // Turn on task lists? ("- [ ] " and "- [x] ") + if (modeCfg.taskLists === undefined) modeCfg.taskLists = false; + + // Turn on strikethrough syntax + if (modeCfg.strikethrough === undefined) + modeCfg.strikethrough = false; + + if (modeCfg.emoji === undefined) + modeCfg.emoji = false; + + if (modeCfg.fencedCodeBlockHighlighting === undefined) + modeCfg.fencedCodeBlockHighlighting = true; + + if (modeCfg.fencedCodeBlockDefaultMode === undefined) + modeCfg.fencedCodeBlockDefaultMode = 'text/plain'; + + if (modeCfg.xml === undefined) + modeCfg.xml = true; + + // Allow token types to be overridden by user-provided token types. + if (modeCfg.tokenTypeOverrides === undefined) + modeCfg.tokenTypeOverrides = {}; + + var tokenTypes = { + header: "header", + code: "comment", + quote: "quote", + list1: "variable-2", + list2: "variable-3", + list3: "keyword", + hr: "hr", + image: "image", + imageAltText: "image-alt-text", + imageMarker: "image-marker", + formatting: "formatting", + linkInline: "link", + linkEmail: "link", + linkText: "link", + linkHref: "string", + em: "em", + strong: "strong", + strikethrough: "strikethrough", + emoji: "builtin" + }; + + for (var tokenType in tokenTypes) { + if (tokenTypes.hasOwnProperty(tokenType) && modeCfg.tokenTypeOverrides[tokenType]) { + tokenTypes[tokenType] = modeCfg.tokenTypeOverrides[tokenType]; + } + } + + var hrRE = /^([*\-_])(?:\s*\1){2,}\s*$/ + , listRE = /^(?:[*\-+]|^[0-9]+([.)]))\s+/ + , taskListRE = /^\[(x| )\](?=\s)/i // Must follow listRE + , atxHeaderRE = modeCfg.allowAtxHeaderWithoutSpace ? /^(#+)/ : /^(#+)(?: |$)/ + , setextHeaderRE = /^ {0,3}(?:\={1,}|-{2,})\s*$/ + , textRE = /^[^#!\[\]*_\\<>` "'(~:]+/ + , fencedCodeRE = /^(~~~+|```+)[ \t]*([\w\/+#-]*)[^\n`]*$/ + , linkDefRE = /^\s*\[[^\]]+?\]:.*$/ // naive link-definition + , punctuation = /[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E42\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC9\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDF3C-\uDF3E]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]/ + , expandedTab = " " // CommonMark specifies tab as 4 spaces + + function switchInline(stream, state, f) { + state.f = state.inline = f; + return f(stream, state); + } + + function switchBlock(stream, state, f) { + state.f = state.block = f; + return f(stream, state); + } + + function lineIsEmpty(line) { + return !line || !/\S/.test(line.string) + } + + // Blocks + + function blankLine(state) { + // Reset linkTitle state + state.linkTitle = false; + state.linkHref = false; + state.linkText = false; + // Reset EM state + state.em = false; + // Reset STRONG state + state.strong = false; + // Reset strikethrough state + state.strikethrough = false; + // Reset state.quote + state.quote = 0; + // Reset state.indentedCode + state.indentedCode = false; + if (state.f == htmlBlock) { + var exit = htmlModeMissing + if (!exit) { + var inner = CodeMirror.innerMode(htmlMode, state.htmlState) + exit = inner.mode.name == "xml" && inner.state.tagStart === null && + (!inner.state.context && inner.state.tokenize.isInText) } - - // Should characters that affect highlighting be highlighted separate? - // Does not include characters that will be output (such as `1.` and `-` for lists) - if (modeCfg.highlightFormatting === undefined) - modeCfg.highlightFormatting = false; - - // Maximum number of nested blockquotes. Set to 0 for infinite nesting. - // Excess `>` will emit `error` token. - if (modeCfg.maxBlockquoteDepth === undefined) - modeCfg.maxBlockquoteDepth = 0; - - // Turn on task lists? ("- [ ] " and "- [x] ") - if (modeCfg.taskLists === undefined) modeCfg.taskLists = false; - - // Turn on strikethrough syntax - if (modeCfg.strikethrough === undefined) modeCfg.strikethrough = false; - - if (modeCfg.emoji === undefined) modeCfg.emoji = false; - - if (modeCfg.fencedCodeBlockHighlighting === undefined) - modeCfg.fencedCodeBlockHighlighting = true; - - if (modeCfg.xml === undefined) modeCfg.xml = true; - - // Allow token types to be overridden by user-provided token types. - if (modeCfg.tokenTypeOverrides === undefined) - modeCfg.tokenTypeOverrides = {}; - - var tokenTypes = { - header: 'header', - code: 'comment', - quote: 'quote', - list1: 'variable-2', - list2: 'variable-3', - list3: 'keyword', - hr: 'hr', - image: 'image', - imageAltText: 'image-alt-text', - imageMarker: 'image-marker', - formatting: 'formatting', - linkInline: 'link', - linkEmail: 'link', - linkText: 'link', - linkHref: 'string', - em: 'em', - strong: 'strong', - strikethrough: 'strikethrough', - emoji: 'builtin', - }; - - for (var tokenType in tokenTypes) { - if ( - tokenTypes.hasOwnProperty(tokenType) && - modeCfg.tokenTypeOverrides[tokenType] - ) { - tokenTypes[tokenType] = modeCfg.tokenTypeOverrides[tokenType]; + if (exit) { + state.f = inlineNormal; + state.block = blockNormal; + state.htmlState = null; + } + } + // Reset state.trailingSpace + state.trailingSpace = 0; + state.trailingSpaceNewLine = false; + // Mark this line as blank + state.prevLine = state.thisLine + state.thisLine = {stream: null} + return null; + } + + function blockNormal(stream, state) { + var firstTokenOnLine = stream.column() === state.indentation; + var prevLineLineIsEmpty = lineIsEmpty(state.prevLine.stream); + var prevLineIsIndentedCode = state.indentedCode; + var prevLineIsHr = state.prevLine.hr; + var prevLineIsList = state.list !== false; + var maxNonCodeIndentation = (state.listStack[state.listStack.length - 1] || 0) + 3; + + state.indentedCode = false; + + var lineIndentation = state.indentation; + // compute once per line (on first token) + if (state.indentationDiff === null) { + state.indentationDiff = state.indentation; + if (prevLineIsList) { + state.list = null; + // While this list item's marker's indentation is less than the deepest + // list item's content's indentation,pop the deepest list item + // indentation off the stack, and update block indentation state + while (lineIndentation < state.listStack[state.listStack.length - 1]) { + state.listStack.pop(); + if (state.listStack.length) { + state.indentation = state.listStack[state.listStack.length - 1]; + // less than the first list's indent -> the line is no longer a list + } else { + state.list = false; + } + } + if (state.list !== false) { + state.indentationDiff = lineIndentation - state.listStack[state.listStack.length - 1] } } + } - var hrRE = /^([*\-_])(?:\s*\1){2,}\s*$/, - listRE = /^(?:[*\-+]|^[0-9]+([.)]))\s+/, - taskListRE = /^\[(x| )\](?=\s)/i, // Must follow listRE - atxHeaderRE = modeCfg.allowAtxHeaderWithoutSpace - ? /^(#+)/ - : /^(#+)(?: |$)/, - setextHeaderRE = /^ *(?:\={1,}|-{1,})\s*$/, - textRE = /^[^#!\[\]*_\\<>` "'(~:]+/, - fencedCodeRE = /^(~~~+|```+)[ \t]*([\w+#-]*)[^\n`]*$/, - linkDefRE = /^\s*\[[^\]]+?\]:.*$/, // naive link-definition - punctuation = - /[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E42\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC9\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDF3C-\uDF3E]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]/, - expandedTab = ' '; // CommonMark specifies tab as 4 spaces - - function switchInline(stream, state, f) { - state.f = state.inline = f; - return f(stream, state); - } + // not comprehensive (currently only for setext detection purposes) + var allowsInlineContinuation = ( + !prevLineLineIsEmpty && !prevLineIsHr && !state.prevLine.header && + (!prevLineIsList || !prevLineIsIndentedCode) && + !state.prevLine.fencedCodeEnd + ); - function switchBlock(stream, state, f) { - state.f = state.block = f; - return f(stream, state); + var isHr = (state.list === false || prevLineIsHr || prevLineLineIsEmpty) && + state.indentation <= maxNonCodeIndentation && stream.match(hrRE); + + var match = null; + if (state.indentationDiff >= 4 && (prevLineIsIndentedCode || state.prevLine.fencedCodeEnd || + state.prevLine.header || prevLineLineIsEmpty)) { + stream.skipToEnd(); + state.indentedCode = true; + return tokenTypes.code; + } else if (stream.eatSpace()) { + return null; + } else if (firstTokenOnLine && state.indentation <= maxNonCodeIndentation && (match = stream.match(atxHeaderRE)) && match[1].length <= 6) { + state.quote = 0; + state.header = match[1].length; + state.thisLine.header = true; + if (modeCfg.highlightFormatting) state.formatting = "header"; + state.f = state.inline; + return getType(state); + } else if (state.indentation <= maxNonCodeIndentation && stream.eat('>')) { + state.quote = firstTokenOnLine ? 1 : state.quote + 1; + if (modeCfg.highlightFormatting) state.formatting = "quote"; + stream.eatSpace(); + return getType(state); + } else if (!isHr && !state.setext && firstTokenOnLine && state.indentation <= maxNonCodeIndentation && (match = stream.match(listRE))) { + var listType = match[1] ? "ol" : "ul"; + + state.indentation = lineIndentation + stream.current().length; + state.list = true; + state.quote = 0; + + // Add this list item's content's indentation to the stack + state.listStack.push(state.indentation); + // Reset inline styles which shouldn't propagate across list items + state.em = false; + state.strong = false; + state.code = false; + state.strikethrough = false; + + if (modeCfg.taskLists && stream.match(taskListRE, false)) { + state.taskList = true; } - - function lineIsEmpty(line) { - return !line || !/\S/.test(line.string); + state.f = state.inline; + if (modeCfg.highlightFormatting) state.formatting = ["list", "list-" + listType]; + return getType(state); + } else if (firstTokenOnLine && state.indentation <= maxNonCodeIndentation && (match = stream.match(fencedCodeRE, true))) { + state.quote = 0; + state.fencedEndRE = new RegExp(match[1] + "+ *$"); + // try switching mode + state.localMode = modeCfg.fencedCodeBlockHighlighting && getMode(match[2] || modeCfg.fencedCodeBlockDefaultMode ); + if (state.localMode) state.localState = CodeMirror.startState(state.localMode); + state.f = state.block = local; + if (modeCfg.highlightFormatting) state.formatting = "code-block"; + state.code = -1 + return getType(state); + // SETEXT has lowest block-scope precedence after HR, so check it after + // the others (code, blockquote, list...) + } else if ( + // if setext set, indicates line after ---/=== + state.setext || ( + // line before ---/=== + (!allowsInlineContinuation || !prevLineIsList) && !state.quote && state.list === false && + !state.code && !isHr && !linkDefRE.test(stream.string) && + (match = stream.lookAhead(1)) && (match = match.match(setextHeaderRE)) + ) + ) { + if ( !state.setext ) { + state.header = match[0].charAt(0) == '=' ? 1 : 2; + state.setext = state.header; + } else { + state.header = state.setext; + // has no effect on type so we can reset it now + state.setext = 0; + stream.skipToEnd(); + if (modeCfg.highlightFormatting) state.formatting = "header"; } - - // Blocks - - function blankLine(state) { - // Reset linkTitle state - state.linkTitle = false; - state.linkHref = false; - state.linkText = false; - // Reset EM state - state.em = false; - // Reset STRONG state - state.strong = false; - // Reset strikethrough state - state.strikethrough = false; - // Reset state.quote - state.quote = 0; - // Reset state.indentedCode - state.indentedCode = false; - if (state.f == htmlBlock) { - var exit = htmlModeMissing; - if (!exit) { - var inner = CodeMirror.innerMode(htmlMode, state.htmlState); - exit = - inner.mode.name == 'xml' && - inner.state.tagStart === null && - !inner.state.context && - inner.state.tokenize.isInText; - } - if (exit) { - state.f = inlineNormal; - state.block = blockNormal; - state.htmlState = null; - } - } - // Reset state.trailingSpace - state.trailingSpace = 0; - state.trailingSpaceNewLine = false; - // Mark this line as blank - state.prevLine = state.thisLine; - state.thisLine = { stream: null }; - return null; + state.thisLine.header = true; + state.f = state.inline; + return getType(state); + } else if (isHr) { + stream.skipToEnd(); + state.hr = true; + state.thisLine.hr = true; + return tokenTypes.hr; + } else if (stream.peek() === '[') { + return switchInline(stream, state, footnoteLink); + } + + return switchInline(stream, state, state.inline); + } + + function htmlBlock(stream, state) { + var style = htmlMode.token(stream, state.htmlState); + if (!htmlModeMissing) { + var inner = CodeMirror.innerMode(htmlMode, state.htmlState) + if ((inner.mode.name == "xml" && inner.state.tagStart === null && + (!inner.state.context && inner.state.tokenize.isInText)) || + (state.md_inside && stream.current().indexOf(">") > -1)) { + state.f = inlineNormal; + state.block = blockNormal; + state.htmlState = null; } - - function blockNormal(stream, state) { - var firstTokenOnLine = stream.column() === state.indentation; - var prevLineLineIsEmpty = lineIsEmpty(state.prevLine.stream); - var prevLineIsIndentedCode = state.indentedCode; - var prevLineIsHr = state.prevLine.hr; - var prevLineIsList = state.list !== false; - var maxNonCodeIndentation = - (state.listStack[state.listStack.length - 1] || 0) + 3; - - state.indentedCode = false; - - var lineIndentation = state.indentation; - // compute once per line (on first token) - if (state.indentationDiff === null) { - state.indentationDiff = state.indentation; - if (prevLineIsList) { - state.list = null; - // While this list item's marker's indentation is less than the deepest - // list item's content's indentation,pop the deepest list item - // indentation off the stack, and update block indentation state - while ( - lineIndentation < state.listStack[state.listStack.length - 1] - ) { - state.listStack.pop(); - if (state.listStack.length) { - state.indentation = state.listStack[state.listStack.length - 1]; - // less than the first list's indent -> the line is no longer a list - } else { - state.list = false; - } - } - if (state.list !== false) { - state.indentationDiff = - lineIndentation - state.listStack[state.listStack.length - 1]; - } - } - } - - // not comprehensive (currently only for setext detection purposes) - var allowsInlineContinuation = - !prevLineLineIsEmpty && - !prevLineIsHr && - !state.prevLine.header && - (!prevLineIsList || !prevLineIsIndentedCode) && - !state.prevLine.fencedCodeEnd; - - var isHr = - (state.list === false || prevLineIsHr || prevLineLineIsEmpty) && - state.indentation <= maxNonCodeIndentation && - stream.match(hrRE); - - var match = null; - if ( - state.indentationDiff >= 4 && - (prevLineIsIndentedCode || - state.prevLine.fencedCodeEnd || - state.prevLine.header || - prevLineLineIsEmpty) - ) { - stream.skipToEnd(); - state.indentedCode = true; - return tokenTypes.code; - } else if (stream.eatSpace()) { - return null; - } else if ( - firstTokenOnLine && - state.indentation <= maxNonCodeIndentation && - (match = stream.match(atxHeaderRE)) && - match[1].length <= 6 - ) { - state.quote = 0; - state.header = match[1].length; - state.thisLine.header = true; - if (modeCfg.highlightFormatting) state.formatting = 'header'; - state.f = state.inline; - return getType(state); - } else if ( - state.indentation <= maxNonCodeIndentation && - stream.eat('>') - ) { - state.quote = firstTokenOnLine ? 1 : state.quote + 1; - if (modeCfg.highlightFormatting) state.formatting = 'quote'; - stream.eatSpace(); - return getType(state); - } else if ( - !isHr && - !state.setext && - firstTokenOnLine && - state.indentation <= maxNonCodeIndentation && - (match = stream.match(listRE)) - ) { - var listType = match[1] ? 'ol' : 'ul'; - - state.indentation = lineIndentation + stream.current().length; - state.list = true; - state.quote = 0; - - // Add this list item's content's indentation to the stack - state.listStack.push(state.indentation); - // Reset inline styles which shouldn't propagate aross list items - state.em = false; - state.strong = false; - state.code = false; - state.strikethrough = false; - - if (modeCfg.taskLists && stream.match(taskListRE, false)) { - state.taskList = true; - } - state.f = state.inline; - if (modeCfg.highlightFormatting) - state.formatting = ['list', 'list-' + listType]; - return getType(state); - } else if ( - firstTokenOnLine && - state.indentation <= maxNonCodeIndentation && - (match = stream.match(fencedCodeRE, true)) - ) { - state.quote = 0; - state.fencedEndRE = new RegExp(match[1] + '+ *$'); - // try switching mode - state.localMode = - modeCfg.fencedCodeBlockHighlighting && getMode(match[2]); - if (state.localMode) - state.localState = CodeMirror.startState(state.localMode); - state.f = state.block = local; - if (modeCfg.highlightFormatting) state.formatting = 'code-block'; - state.code = -1; - return getType(state); - // SETEXT has lowest block-scope precedence after HR, so check it after - // the others (code, blockquote, list...) - } else if ( - // if setext set, indicates line after ---/=== - state.setext || - // line before ---/=== - ((!allowsInlineContinuation || !prevLineIsList) && - !state.quote && - state.list === false && - !state.code && - !isHr && - !linkDefRE.test(stream.string) && - (match = stream.lookAhead(1)) && - (match = match.match(setextHeaderRE))) - ) { - if (!state.setext) { - state.header = match[0].charAt(0) == '=' ? 1 : 2; - state.setext = state.header; + } + return style; + } + + function local(stream, state) { + var currListInd = state.listStack[state.listStack.length - 1] || 0; + var hasExitedList = state.indentation < currListInd; + var maxFencedEndInd = currListInd + 3; + if (state.fencedEndRE && state.indentation <= maxFencedEndInd && (hasExitedList || stream.match(state.fencedEndRE))) { + if (modeCfg.highlightFormatting) state.formatting = "code-block"; + var returnType; + if (!hasExitedList) returnType = getType(state) + state.localMode = state.localState = null; + state.block = blockNormal; + state.f = inlineNormal; + state.fencedEndRE = null; + state.code = 0 + state.thisLine.fencedCodeEnd = true; + if (hasExitedList) return switchBlock(stream, state, state.block); + return returnType; + } else if (state.localMode) { + return state.localMode.token(stream, state.localState); + } else { + stream.skipToEnd(); + return tokenTypes.code; + } + } + + // Inline + function getType(state) { + var styles = []; + + if (state.formatting) { + styles.push(tokenTypes.formatting); + + if (typeof state.formatting === "string") state.formatting = [state.formatting]; + + for (var i = 0; i < state.formatting.length; i++) { + styles.push(tokenTypes.formatting + "-" + state.formatting[i]); + + if (state.formatting[i] === "header") { + styles.push(tokenTypes.formatting + "-" + state.formatting[i] + "-" + state.header); + } + + // Add `formatting-quote` and `formatting-quote-#` for blockquotes + // Add `error` instead if the maximum blockquote nesting depth is passed + if (state.formatting[i] === "quote") { + if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) { + styles.push(tokenTypes.formatting + "-" + state.formatting[i] + "-" + state.quote); } else { - state.header = state.setext; - // has no effect on type so we can reset it now - state.setext = 0; - stream.skipToEnd(); - if (modeCfg.highlightFormatting) state.formatting = 'header'; + styles.push("error"); } - state.thisLine.header = true; - state.f = state.inline; - return getType(state); - } else if (isHr) { - stream.skipToEnd(); - state.hr = true; - state.thisLine.hr = true; - return tokenTypes.hr; - } else if (stream.peek() === '[') { - return switchInline(stream, state, footnoteLink); } - - return switchInline(stream, state, state.inline); } - - function htmlBlock(stream, state) { - var style = htmlMode.token(stream, state.htmlState); - if (!htmlModeMissing) { - var inner = CodeMirror.innerMode(htmlMode, state.htmlState); - if ( - (inner.mode.name == 'xml' && - inner.state.tagStart === null && - !inner.state.context && - inner.state.tokenize.isInText) || - (state.md_inside && stream.current().indexOf('>') > -1) - ) { - state.f = inlineNormal; - state.block = blockNormal; - state.htmlState = null; - } - } - return style; + } + + if (state.taskOpen) { + styles.push("meta"); + return styles.length ? styles.join(' ') : null; + } + if (state.taskClosed) { + styles.push("property"); + return styles.length ? styles.join(' ') : null; + } + + if (state.linkHref) { + styles.push(tokenTypes.linkHref, "url"); + } else { // Only apply inline styles to non-url text + if (state.strong) { styles.push(tokenTypes.strong); } + if (state.em) { styles.push(tokenTypes.em); } + if (state.strikethrough) { styles.push(tokenTypes.strikethrough); } + if (state.emoji) { styles.push(tokenTypes.emoji); } + if (state.linkText) { styles.push(tokenTypes.linkText); } + if (state.code) { styles.push(tokenTypes.code); } + if (state.image) { styles.push(tokenTypes.image); } + if (state.imageAltText) { styles.push(tokenTypes.imageAltText, "link"); } + if (state.imageMarker) { styles.push(tokenTypes.imageMarker); } + } + + if (state.header) { styles.push(tokenTypes.header, tokenTypes.header + "-" + state.header); } + + if (state.quote) { + styles.push(tokenTypes.quote); + + // Add `quote-#` where the maximum for `#` is modeCfg.maxBlockquoteDepth + if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) { + styles.push(tokenTypes.quote + "-" + state.quote); + } else { + styles.push(tokenTypes.quote + "-" + modeCfg.maxBlockquoteDepth); } - - function local(stream, state) { - var currListInd = state.listStack[state.listStack.length - 1] || 0; - var hasExitedList = state.indentation < currListInd; - var maxFencedEndInd = currListInd + 3; - if ( - state.fencedEndRE && - state.indentation <= maxFencedEndInd && - (hasExitedList || stream.match(state.fencedEndRE)) - ) { - if (modeCfg.highlightFormatting) state.formatting = 'code-block'; - var returnType; - if (!hasExitedList) returnType = getType(state); - state.localMode = state.localState = null; - state.block = blockNormal; - state.f = inlineNormal; - state.fencedEndRE = null; - state.code = 0; - state.thisLine.fencedCodeEnd = true; - if (hasExitedList) return switchBlock(stream, state, state.block); - return returnType; - } else if (state.localMode) { - return state.localMode.token(stream, state.localState); - } else { - stream.skipToEnd(); - return tokenTypes.code; - } + } + + if (state.list !== false) { + var listMod = (state.listStack.length - 1) % 3; + if (!listMod) { + styles.push(tokenTypes.list1); + } else if (listMod === 1) { + styles.push(tokenTypes.list2); + } else { + styles.push(tokenTypes.list3); } - - // Inline - function getType(state) { - var styles = []; - - if (state.formatting) { - styles.push(tokenTypes.formatting); - - if (typeof state.formatting === 'string') - state.formatting = [state.formatting]; - - for (var i = 0; i < state.formatting.length; i++) { - styles.push(tokenTypes.formatting + '-' + state.formatting[i]); - - if (state.formatting[i] === 'header') { - styles.push( - tokenTypes.formatting + - '-' + - state.formatting[i] + - '-' + - state.header, - ); - } - - // Add `formatting-quote` and `formatting-quote-#` for blockquotes - // Add `error` instead if the maximum blockquote nesting depth is passed - if (state.formatting[i] === 'quote') { - if ( - !modeCfg.maxBlockquoteDepth || - modeCfg.maxBlockquoteDepth >= state.quote - ) { - styles.push( - tokenTypes.formatting + - '-' + - state.formatting[i] + - '-' + - state.quote, - ); - } else { - styles.push('error'); - } - } - } - } - - if (state.taskOpen) { - styles.push('meta'); - return styles.length ? styles.join(' ') : null; - } - if (state.taskClosed) { - styles.push('property'); - return styles.length ? styles.join(' ') : null; - } - - if (state.linkHref) { - styles.push(tokenTypes.linkHref, 'url'); - } else { - // Only apply inline styles to non-url text - if (state.strong) { - styles.push(tokenTypes.strong); - } - if (state.em) { - styles.push(tokenTypes.em); - } - if (state.strikethrough) { - styles.push(tokenTypes.strikethrough); - } - if (state.emoji) { - styles.push(tokenTypes.emoji); - } - if (state.linkText) { - styles.push(tokenTypes.linkText); - } - if (state.code) { - styles.push(tokenTypes.code); - } - if (state.image) { - styles.push(tokenTypes.image); - } - if (state.imageAltText) { - styles.push(tokenTypes.imageAltText, 'link'); - } - if (state.imageMarker) { - styles.push(tokenTypes.imageMarker); - } - } - - if (state.header) { - styles.push( - tokenTypes.header, - tokenTypes.header + '-' + state.header, - ); - } - - if (state.quote) { - styles.push(tokenTypes.quote); - - // Add `quote-#` where the maximum for `#` is modeCfg.maxBlockquoteDepth - if ( - !modeCfg.maxBlockquoteDepth || - modeCfg.maxBlockquoteDepth >= state.quote - ) { - styles.push(tokenTypes.quote + '-' + state.quote); - } else { - styles.push(tokenTypes.quote + '-' + modeCfg.maxBlockquoteDepth); - } - } - - if (state.list !== false) { - var listMod = (state.listStack.length - 1) % 3; - if (!listMod) { - styles.push(tokenTypes.list1); - } else if (listMod === 1) { - styles.push(tokenTypes.list2); - } else { - styles.push(tokenTypes.list3); - } - } - - if (state.trailingSpaceNewLine) { - styles.push('trailing-space-new-line'); - } else if (state.trailingSpace) { - styles.push( - 'trailing-space-' + (state.trailingSpace % 2 ? 'a' : 'b'), - ); - } - - return styles.length ? styles.join(' ') : null; + } + + if (state.trailingSpaceNewLine) { + styles.push("trailing-space-new-line"); + } else if (state.trailingSpace) { + styles.push("trailing-space-" + (state.trailingSpace % 2 ? "a" : "b")); + } + + return styles.length ? styles.join(' ') : null; + } + + function handleText(stream, state) { + if (stream.match(textRE, true)) { + return getType(state); + } + return undefined; + } + + function inlineNormal(stream, state) { + var style = state.text(stream, state); + if (typeof style !== 'undefined') + return style; + + if (state.list) { // List marker (*, +, -, 1., etc) + state.list = null; + return getType(state); + } + + if (state.taskList) { + var taskOpen = stream.match(taskListRE, true)[1] === " "; + if (taskOpen) state.taskOpen = true; + else state.taskClosed = true; + if (modeCfg.highlightFormatting) state.formatting = "task"; + state.taskList = false; + return getType(state); + } + + state.taskOpen = false; + state.taskClosed = false; + + if (state.header && stream.match(/^#+$/, true)) { + if (modeCfg.highlightFormatting) state.formatting = "header"; + return getType(state); + } + + var ch = stream.next(); + + // Matches link titles present on next line + if (state.linkTitle) { + state.linkTitle = false; + var matchCh = ch; + if (ch === '(') { + matchCh = ')'; } - - function handleText(stream, state) { - if (stream.match(textRE, true)) { - return getType(state); - } - return undefined; + matchCh = (matchCh+'').replace(/([.?*+^\[\]\\(){}|-])/g, "\\$1"); + var regex = '^\\s*(?:[^' + matchCh + '\\\\]+|\\\\\\\\|\\\\.)' + matchCh; + if (stream.match(new RegExp(regex), true)) { + return tokenTypes.linkHref; } - - function inlineNormal(stream, state) { - var style = state.text(stream, state); - if (typeof style !== 'undefined') return style; - - if (state.list) { - // List marker (*, +, -, 1., etc) - state.list = null; - return getType(state); - } - - if (state.taskList) { - var taskOpen = stream.match(taskListRE, true)[1] === ' '; - if (taskOpen) state.taskOpen = true; - else state.taskClosed = true; - if (modeCfg.highlightFormatting) state.formatting = 'task'; - state.taskList = false; + } + + // If this block is changed, it may need to be updated in GFM mode + if (ch === '`') { + var previousFormatting = state.formatting; + if (modeCfg.highlightFormatting) state.formatting = "code"; + stream.eatWhile('`'); + var count = stream.current().length + if (state.code == 0 && (!state.quote || count == 1)) { + state.code = count + return getType(state) + } else if (count == state.code) { // Must be exact + var t = getType(state) + state.code = 0 + return t + } else { + state.formatting = previousFormatting + return getType(state) + } + } else if (state.code) { + return getType(state); + } + + if (ch === '\\') { + stream.next(); + if (modeCfg.highlightFormatting) { + var type = getType(state); + var formattingEscape = tokenTypes.formatting + "-escape"; + return type ? type + " " + formattingEscape : formattingEscape; + } + } + + if (ch === '!' && stream.match(/\[[^\]]*\] ?(?:\(|\[)/, false)) { + state.imageMarker = true; + state.image = true; + if (modeCfg.highlightFormatting) state.formatting = "image"; + return getType(state); + } + + if (ch === '[' && state.imageMarker && stream.match(/[^\]]*\](\(.*?\)| ?\[.*?\])/, false)) { + state.imageMarker = false; + state.imageAltText = true + if (modeCfg.highlightFormatting) state.formatting = "image"; + return getType(state); + } + + if (ch === ']' && state.imageAltText) { + if (modeCfg.highlightFormatting) state.formatting = "image"; + var type = getType(state); + state.imageAltText = false; + state.image = false; + state.inline = state.f = linkHref; + return type; + } + + if (ch === '[' && !state.image) { + if (state.linkText && stream.match(/^.*?\]/)) return getType(state) + state.linkText = true; + if (modeCfg.highlightFormatting) state.formatting = "link"; + return getType(state); + } + + if (ch === ']' && state.linkText) { + if (modeCfg.highlightFormatting) state.formatting = "link"; + var type = getType(state); + state.linkText = false; + state.inline = state.f = stream.match(/\(.*?\)| ?\[.*?\]/, false) ? linkHref : inlineNormal + return type; + } + + if (ch === '<' && stream.match(/^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/, false)) { + state.f = state.inline = linkInline; + if (modeCfg.highlightFormatting) state.formatting = "link"; + var type = getType(state); + if (type){ + type += " "; + } else { + type = ""; + } + return type + tokenTypes.linkInline; + } + + if (ch === '<' && stream.match(/^[^> \\]+@(?:[^\\>]|\\.)+>/, false)) { + state.f = state.inline = linkInline; + if (modeCfg.highlightFormatting) state.formatting = "link"; + var type = getType(state); + if (type){ + type += " "; + } else { + type = ""; + } + return type + tokenTypes.linkEmail; + } + + if (modeCfg.xml && ch === '<' && stream.match(/^(!--|\?|!\[CDATA\[|[a-z][a-z0-9-]*(?:\s+[a-z_:.\-]+(?:\s*=\s*[^>]+)?)*\s*(?:>|$))/i, false)) { + var end = stream.string.indexOf(">", stream.pos); + if (end != -1) { + var atts = stream.string.substring(stream.start, end); + if (/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(atts)) state.md_inside = true; + } + stream.backUp(1); + state.htmlState = CodeMirror.startState(htmlMode); + return switchBlock(stream, state, htmlBlock); + } + + if (modeCfg.xml && ch === '<' && stream.match(/^\/\w*?>/)) { + state.md_inside = false; + return "tag"; + } else if (ch === "*" || ch === "_") { + var len = 1, before = stream.pos == 1 ? " " : stream.string.charAt(stream.pos - 2) + while (len < 3 && stream.eat(ch)) len++ + var after = stream.peek() || " " + // See http://spec.commonmark.org/0.27/#emphasis-and-strong-emphasis + var leftFlanking = !/\s/.test(after) && (!punctuation.test(after) || /\s/.test(before) || punctuation.test(before)) + var rightFlanking = !/\s/.test(before) && (!punctuation.test(before) || /\s/.test(after) || punctuation.test(after)) + var setEm = null, setStrong = null + if (len % 2) { // Em + if (!state.em && leftFlanking && (ch === "*" || !rightFlanking || punctuation.test(before))) + setEm = true + else if (state.em == ch && rightFlanking && (ch === "*" || !leftFlanking || punctuation.test(after))) + setEm = false + } + if (len > 1) { // Strong + if (!state.strong && leftFlanking && (ch === "*" || !rightFlanking || punctuation.test(before))) + setStrong = true + else if (state.strong == ch && rightFlanking && (ch === "*" || !leftFlanking || punctuation.test(after))) + setStrong = false + } + if (setStrong != null || setEm != null) { + if (modeCfg.highlightFormatting) state.formatting = setEm == null ? "strong" : setStrong == null ? "em" : "strong em" + if (setEm === true) state.em = ch + if (setStrong === true) state.strong = ch + var t = getType(state) + if (setEm === false) state.em = false + if (setStrong === false) state.strong = false + return t + } + } else if (ch === ' ') { + if (stream.eat('*') || stream.eat('_')) { // Probably surrounded by spaces + if (stream.peek() === ' ') { // Surrounded by spaces, ignore return getType(state); + } else { // Not surrounded by spaces, back up pointer + stream.backUp(1); } + } + } - state.taskOpen = false; - state.taskClosed = false; - - if (state.header && stream.match(/^#+$/, true)) { - if (modeCfg.highlightFormatting) state.formatting = 'header'; + if (modeCfg.strikethrough) { + if (ch === '~' && stream.eatWhile(ch)) { + if (state.strikethrough) {// Remove strikethrough + if (modeCfg.highlightFormatting) state.formatting = "strikethrough"; + var t = getType(state); + state.strikethrough = false; + return t; + } else if (stream.match(/^[^\s]/, false)) {// Add strikethrough + state.strikethrough = true; + if (modeCfg.highlightFormatting) state.formatting = "strikethrough"; return getType(state); } - - var ch = stream.next(); - - // Matches link titles present on next line - if (state.linkTitle) { - state.linkTitle = false; - var matchCh = ch; - if (ch === '(') { - matchCh = ')'; - } - matchCh = (matchCh + '').replace(/([.?*+^\[\]\\(){}|-])/g, '\\$1'); - var regex = - '^\\s*(?:[^' + matchCh + '\\\\]+|\\\\\\\\|\\\\.)' + matchCh; - if (stream.match(new RegExp(regex), true)) { - return tokenTypes.linkHref; - } - } - - // If this block is changed, it may need to be updated in GFM mode - if (ch === '`') { - var previousFormatting = state.formatting; - if (modeCfg.highlightFormatting) state.formatting = 'code'; - stream.eatWhile('`'); - var count = stream.current().length; - if (state.code == 0 && (!state.quote || count == 1)) { - state.code = count; - return getType(state); - } else if (count == state.code) { - // Must be exact - var t = getType(state); - state.code = 0; - return t; - } else { - state.formatting = previousFormatting; + } else if (ch === ' ') { + if (stream.match('~~', true)) { // Probably surrounded by space + if (stream.peek() === ' ') { // Surrounded by spaces, ignore return getType(state); + } else { // Not surrounded by spaces, back up pointer + stream.backUp(2); } - } else if (state.code) { - return getType(state); - } - - if (ch === '\\') { - stream.next(); - if (modeCfg.highlightFormatting) { - var type = getType(state); - var formattingEscape = tokenTypes.formatting + '-escape'; - return type ? type + ' ' + formattingEscape : formattingEscape; - } - } - - if (ch === '!' && stream.match(/\[[^\]]*\] ?(?:\(|\[)/, false)) { - state.imageMarker = true; - state.image = true; - if (modeCfg.highlightFormatting) state.formatting = 'image'; - return getType(state); - } - - if ( - ch === '[' && - state.imageMarker && - stream.match(/[^\]]*\](\(.*?\)| ?\[.*?\])/, false) - ) { - state.imageMarker = false; - state.imageAltText = true; - if (modeCfg.highlightFormatting) state.formatting = 'image'; - return getType(state); - } - - if (ch === ']' && state.imageAltText) { - if (modeCfg.highlightFormatting) state.formatting = 'image'; - var type = getType(state); - state.imageAltText = false; - state.image = false; - state.inline = state.f = linkHref; - return type; - } - - if (ch === '[' && !state.image) { - if (state.linkText && stream.match(/^.*?\]/)) return getType(state); - state.linkText = true; - if (modeCfg.highlightFormatting) state.formatting = 'link'; - return getType(state); - } - - if (ch === ']' && state.linkText) { - if (modeCfg.highlightFormatting) state.formatting = 'link'; - var type = getType(state); - state.linkText = false; - state.inline = state.f = stream.match(/\(.*?\)| ?\[.*?\]/, false) - ? linkHref - : inlineNormal; - return type; } + } + } + + if (modeCfg.emoji && ch === ":" && stream.match(/^(?:[a-z_\d+][a-z_\d+-]*|\-[a-z_\d+][a-z_\d+-]*):/)) { + state.emoji = true; + if (modeCfg.highlightFormatting) state.formatting = "emoji"; + var retType = getType(state); + state.emoji = false; + return retType; + } + + if (ch === ' ') { + if (stream.match(/^ +$/, false)) { + state.trailingSpace++; + } else if (state.trailingSpace) { + state.trailingSpaceNewLine = true; + } + } + + return getType(state); + } + + function linkInline(stream, state) { + var ch = stream.next(); + + if (ch === ">") { + state.f = state.inline = inlineNormal; + if (modeCfg.highlightFormatting) state.formatting = "link"; + var type = getType(state); + if (type){ + type += " "; + } else { + type = ""; + } + return type + tokenTypes.linkInline; + } + + stream.match(/^[^>]+/, true); + + return tokenTypes.linkInline; + } + + function linkHref(stream, state) { + // Check if space, and return NULL if so (to avoid marking the space) + if(stream.eatSpace()){ + return null; + } + var ch = stream.next(); + if (ch === '(' || ch === '[') { + state.f = state.inline = getLinkHrefInside(ch === "(" ? ")" : "]"); + if (modeCfg.highlightFormatting) state.formatting = "link-string"; + state.linkHref = true; + return getType(state); + } + return 'error'; + } + + var linkRE = { + ")": /^(?:[^\\\(\)]|\\.|\((?:[^\\\(\)]|\\.)*\))*?(?=\))/, + "]": /^(?:[^\\\[\]]|\\.|\[(?:[^\\\[\]]|\\.)*\])*?(?=\])/ + } + + function getLinkHrefInside(endChar) { + return function(stream, state) { + var ch = stream.next(); + + if (ch === endChar) { + state.f = state.inline = inlineNormal; + if (modeCfg.highlightFormatting) state.formatting = "link-string"; + var returnState = getType(state); + state.linkHref = false; + return returnState; + } - if ( - ch === '<' && - stream.match(/^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/, false) - ) { - state.f = state.inline = linkInline; - if (modeCfg.highlightFormatting) state.formatting = 'link'; - var type = getType(state); - if (type) { - type += ' '; - } else { - type = ''; - } - return type + tokenTypes.linkInline; - } + stream.match(linkRE[endChar]) + state.linkHref = true; + return getType(state); + }; + } + + function footnoteLink(stream, state) { + if (stream.match(/^([^\]\\]|\\.)*\]:/, false)) { + state.f = footnoteLinkInside; + stream.next(); // Consume [ + if (modeCfg.highlightFormatting) state.formatting = "link"; + state.linkText = true; + return getType(state); + } + return switchInline(stream, state, inlineNormal); + } + + function footnoteLinkInside(stream, state) { + if (stream.match(']:', true)) { + state.f = state.inline = footnoteUrl; + if (modeCfg.highlightFormatting) state.formatting = "link"; + var returnType = getType(state); + state.linkText = false; + return returnType; + } + + stream.match(/^([^\]\\]|\\.)+/, true); + + return tokenTypes.linkText; + } + + function footnoteUrl(stream, state) { + // Check if space, and return NULL if so (to avoid marking the space) + if(stream.eatSpace()){ + return null; + } + // Match URL + stream.match(/^[^\s]+/, true); + // Check for link title + if (stream.peek() === undefined) { // End of line, set flag to check next line + state.linkTitle = true; + } else { // More content on line, check if link title + stream.match(/^(?:\s+(?:"(?:[^"\\]|\\.)+"|'(?:[^'\\]|\\.)+'|\((?:[^)\\]|\\.)+\)))?/, true); + } + state.f = state.inline = inlineNormal; + return tokenTypes.linkHref + " url"; + } + + var mode = { + startState: function() { + return { + f: blockNormal, + + prevLine: {stream: null}, + thisLine: {stream: null}, + + block: blockNormal, + htmlState: null, + indentation: 0, + + inline: inlineNormal, + text: handleText, + + formatting: false, + linkText: false, + linkHref: false, + linkTitle: false, + code: 0, + em: false, + strong: false, + header: 0, + setext: 0, + hr: false, + taskList: false, + list: false, + listStack: [], + quote: 0, + trailingSpace: 0, + trailingSpaceNewLine: false, + strikethrough: false, + emoji: false, + fencedEndRE: null + }; + }, - if (ch === '<' && stream.match(/^[^> \\]+@(?:[^\\>]|\\.)+>/, false)) { - state.f = state.inline = linkInline; - if (modeCfg.highlightFormatting) state.formatting = 'link'; - var type = getType(state); - if (type) { - type += ' '; - } else { - type = ''; - } - return type + tokenTypes.linkEmail; - } + copyState: function(s) { + return { + f: s.f, + + prevLine: s.prevLine, + thisLine: s.thisLine, + + block: s.block, + htmlState: s.htmlState && CodeMirror.copyState(htmlMode, s.htmlState), + indentation: s.indentation, + + localMode: s.localMode, + localState: s.localMode ? CodeMirror.copyState(s.localMode, s.localState) : null, + + inline: s.inline, + text: s.text, + formatting: false, + linkText: s.linkText, + linkTitle: s.linkTitle, + linkHref: s.linkHref, + code: s.code, + em: s.em, + strong: s.strong, + strikethrough: s.strikethrough, + emoji: s.emoji, + header: s.header, + setext: s.setext, + hr: s.hr, + taskList: s.taskList, + list: s.list, + listStack: s.listStack.slice(0), + quote: s.quote, + indentedCode: s.indentedCode, + trailingSpace: s.trailingSpace, + trailingSpaceNewLine: s.trailingSpaceNewLine, + md_inside: s.md_inside, + fencedEndRE: s.fencedEndRE + }; + }, - if ( - modeCfg.xml && - ch === '<' && - stream.match( - /^(!--|\?|!\[CDATA\[|[a-z][a-z0-9-]*(?:\s+[a-z_:.\-]+(?:\s*=\s*[^>]+)?)*\s*(?:>|$))/i, - false, - ) - ) { - var end = stream.string.indexOf('>', stream.pos); - if (end != -1) { - var atts = stream.string.substring(stream.start, end); - if (/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(atts)) - state.md_inside = true; - } - stream.backUp(1); - state.htmlState = CodeMirror.startState(htmlMode); - return switchBlock(stream, state, htmlBlock); - } + token: function(stream, state) { - if (modeCfg.xml && ch === '<' && stream.match(/^\/\w*?>/)) { - state.md_inside = false; - return 'tag'; - } else if (ch === '*' || ch === '_') { - var len = 1, - before = - stream.pos == 1 ? ' ' : stream.string.charAt(stream.pos - 2); - while (len < 3 && stream.eat(ch)) len++; - var after = stream.peek() || ' '; - // See http://spec.commonmark.org/0.27/#emphasis-and-strong-emphasis - var leftFlanking = - !/\s/.test(after) && - (!punctuation.test(after) || - /\s/.test(before) || - punctuation.test(before)); - var rightFlanking = - !/\s/.test(before) && - (!punctuation.test(before) || - /\s/.test(after) || - punctuation.test(after)); - var setEm = null, - setStrong = null; - if (len % 2) { - // Em - if ( - !state.em && - leftFlanking && - (ch === '*' || !rightFlanking || punctuation.test(before)) - ) - setEm = true; - else if ( - state.em == ch && - rightFlanking && - (ch === '*' || !leftFlanking || punctuation.test(after)) - ) - setEm = false; - } - if (len > 1) { - // Strong - if ( - !state.strong && - leftFlanking && - (ch === '*' || !rightFlanking || punctuation.test(before)) - ) - setStrong = true; - else if ( - state.strong == ch && - rightFlanking && - (ch === '*' || !leftFlanking || punctuation.test(after)) - ) - setStrong = false; - } - if (setStrong != null || setEm != null) { - if (modeCfg.highlightFormatting) - state.formatting = - setEm == null - ? 'strong' - : setStrong == null - ? 'em' - : 'strong em'; - if (setEm === true) state.em = ch; - if (setStrong === true) state.strong = ch; - var t = getType(state); - if (setEm === false) state.em = false; - if (setStrong === false) state.strong = false; - return t; - } - } else if (ch === ' ') { - if (stream.eat('*') || stream.eat('_')) { - // Probably surrounded by spaces - if (stream.peek() === ' ') { - // Surrounded by spaces, ignore - return getType(state); - } else { - // Not surrounded by spaces, back up pointer - stream.backUp(1); - } - } - } + // Reset state.formatting + state.formatting = false; - if (modeCfg.strikethrough) { - if (ch === '~' && stream.eatWhile(ch)) { - if (state.strikethrough) { - // Remove strikethrough - if (modeCfg.highlightFormatting) - state.formatting = 'strikethrough'; - var t = getType(state); - state.strikethrough = false; - return t; - } else if (stream.match(/^[^\s]/, false)) { - // Add strikethrough - state.strikethrough = true; - if (modeCfg.highlightFormatting) - state.formatting = 'strikethrough'; - return getType(state); - } - } else if (ch === ' ') { - if (stream.match(/^~~/, true)) { - // Probably surrounded by space - if (stream.peek() === ' ') { - // Surrounded by spaces, ignore - return getType(state); - } else { - // Not surrounded by spaces, back up pointer - stream.backUp(2); - } - } - } - } + if (stream != state.thisLine.stream) { + state.header = 0; + state.hr = false; - if ( - modeCfg.emoji && - ch === ':' && - stream.match(/^(?:[a-z_\d+][a-z_\d+-]*|\-[a-z_\d+][a-z_\d+-]*):/) - ) { - state.emoji = true; - if (modeCfg.highlightFormatting) state.formatting = 'emoji'; - var retType = getType(state); - state.emoji = false; - return retType; + if (stream.match(/^\s*$/, true)) { + blankLine(state); + return null; } - if (ch === ' ') { - if (stream.match(/^ +$/, false)) { - state.trailingSpace++; - } else if (state.trailingSpace) { - state.trailingSpaceNewLine = true; - } - } + state.prevLine = state.thisLine + state.thisLine = {stream: stream} - return getType(state); - } + // Reset state.taskList + state.taskList = false; - function linkInline(stream, state) { - var ch = stream.next(); + // Reset state.trailingSpace + state.trailingSpace = 0; + state.trailingSpaceNewLine = false; - if (ch === '>') { - state.f = state.inline = inlineNormal; - if (modeCfg.highlightFormatting) state.formatting = 'link'; - var type = getType(state); - if (type) { - type += ' '; - } else { - type = ''; + if (!state.localState) { + state.f = state.block; + if (state.f != htmlBlock) { + var indentation = stream.match(/^\s*/, true)[0].replace(/\t/g, expandedTab).length; + state.indentation = indentation; + state.indentationDiff = null; + if (indentation > 0) return null; } - return type + tokenTypes.linkInline; } - - stream.match(/^[^>]+/, true); - - return tokenTypes.linkInline; - } - - function linkHref(stream, state) { - // Check if space, and return NULL if so (to avoid marking the space) - if (stream.eatSpace()) { - return null; - } - var ch = stream.next(); - if (ch === '(' || ch === '[') { - state.f = state.inline = getLinkHrefInside(ch === '(' ? ')' : ']'); - if (modeCfg.highlightFormatting) state.formatting = 'link-string'; - state.linkHref = true; - return getType(state); - } - return 'error'; - } - - var linkRE = { - ')': /^(?:[^\\\(\)]|\\.|\((?:[^\\\(\)]|\\.)*\))*?(?=\))/, - ']': /^(?:[^\\\[\]]|\\.|\[(?:[^\\\[\]]|\\.)*\])*?(?=\])/, - }; - - function getLinkHrefInside(endChar) { - return function (stream, state) { - var ch = stream.next(); - - if (ch === endChar) { - state.f = state.inline = inlineNormal; - if (modeCfg.highlightFormatting) state.formatting = 'link-string'; - var returnState = getType(state); - state.linkHref = false; - return returnState; - } - - stream.match(linkRE[endChar]); - state.linkHref = true; - return getType(state); - }; } + return state.f(stream, state); + }, - function footnoteLink(stream, state) { - if (stream.match(/^([^\]\\]|\\.)*\]:/, false)) { - state.f = footnoteLinkInside; - stream.next(); // Consume [ - if (modeCfg.highlightFormatting) state.formatting = 'link'; - state.linkText = true; - return getType(state); - } - return switchInline(stream, state, inlineNormal); - } + innerMode: function(state) { + if (state.block == htmlBlock) return {state: state.htmlState, mode: htmlMode}; + if (state.localState) return {state: state.localState, mode: state.localMode}; + return {state: state, mode: mode}; + }, - function footnoteLinkInside(stream, state) { - if (stream.match(/^\]:/, true)) { - state.f = state.inline = footnoteUrl; - if (modeCfg.highlightFormatting) state.formatting = 'link'; - var returnType = getType(state); - state.linkText = false; - return returnType; - } + indent: function(state, textAfter, line) { + if (state.block == htmlBlock && htmlMode.indent) return htmlMode.indent(state.htmlState, textAfter, line) + if (state.localState && state.localMode.indent) return state.localMode.indent(state.localState, textAfter, line) + return CodeMirror.Pass + }, - stream.match(/^([^\]\\]|\\.)+/, true); + blankLine: blankLine, - return tokenTypes.linkText; - } + getType: getType, - function footnoteUrl(stream, state) { - // Check if space, and return NULL if so (to avoid marking the space) - if (stream.eatSpace()) { - return null; - } - // Match URL - stream.match(/^[^\s]+/, true); - // Check for link title - if (stream.peek() === undefined) { - // End of line, set flag to check next line - state.linkTitle = true; - } else { - // More content on line, check if link title - stream.match( - /^(?:\s+(?:"(?:[^"\\]|\\\\|\\.)+"|'(?:[^'\\]|\\\\|\\.)+'|\((?:[^)\\]|\\\\|\\.)+\)))?/, - true, - ); - } - state.f = state.inline = inlineNormal; - return tokenTypes.linkHref + ' url'; - } + blockCommentStart: "", + closeBrackets: "()[]{}''\"\"``", + fold: "markdown" + }; + return mode; +}, "xml"); - var mode = { - startState: function () { - return { - f: blockNormal, - - prevLine: { stream: null }, - thisLine: { stream: null }, - - block: blockNormal, - htmlState: null, - indentation: 0, - - inline: inlineNormal, - text: handleText, - - formatting: false, - linkText: false, - linkHref: false, - linkTitle: false, - code: 0, - em: false, - strong: false, - header: 0, - setext: 0, - hr: false, - taskList: false, - list: false, - listStack: [], - quote: 0, - trailingSpace: 0, - trailingSpaceNewLine: false, - strikethrough: false, - emoji: false, - fencedEndRE: null, - }; - }, - - copyState: function (s) { - return { - f: s.f, - - prevLine: s.prevLine, - thisLine: s.thisLine, - - block: s.block, - htmlState: - s.htmlState && CodeMirror.copyState(htmlMode, s.htmlState), - indentation: s.indentation, - - localMode: s.localMode, - localState: s.localMode - ? CodeMirror.copyState(s.localMode, s.localState) - : null, - - inline: s.inline, - text: s.text, - formatting: false, - linkText: s.linkText, - linkTitle: s.linkTitle, - linkHref: s.linkHref, - code: s.code, - em: s.em, - strong: s.strong, - strikethrough: s.strikethrough, - emoji: s.emoji, - header: s.header, - setext: s.setext, - hr: s.hr, - taskList: s.taskList, - list: s.list, - listStack: s.listStack.slice(0), - quote: s.quote, - indentedCode: s.indentedCode, - trailingSpace: s.trailingSpace, - trailingSpaceNewLine: s.trailingSpaceNewLine, - md_inside: s.md_inside, - fencedEndRE: s.fencedEndRE, - }; - }, - - token: function (stream, state) { - // Reset state.formatting - state.formatting = false; - - if (stream != state.thisLine.stream) { - state.header = 0; - state.hr = false; - - if (stream.match(/^\s*$/, true)) { - blankLine(state); - return null; - } - - state.prevLine = state.thisLine; - state.thisLine = { stream: stream }; - - // Reset state.taskList - state.taskList = false; - - // Reset state.trailingSpace - state.trailingSpace = 0; - state.trailingSpaceNewLine = false; - - if (!state.localState) { - state.f = state.block; - if (state.f != htmlBlock) { - var indentation = stream - .match(/^\s*/, true)[0] - .replace(/\t/g, expandedTab).length; - state.indentation = indentation; - state.indentationDiff = null; - if (indentation > 0) return null; - } - } - } - return state.f(stream, state); - }, - - innerMode: function (state) { - if (state.block == htmlBlock) - return { state: state.htmlState, mode: htmlMode }; - if (state.localState) - return { state: state.localState, mode: state.localMode }; - return { state: state, mode: mode }; - }, - - indent: function (state, textAfter, line) { - if (state.block == htmlBlock && htmlMode.indent) - return htmlMode.indent(state.htmlState, textAfter, line); - if (state.localState && state.localMode.indent) - return state.localMode.indent(state.localState, textAfter, line); - return CodeMirror.Pass; - }, - - blankLine: blankLine, - - getType: getType, - - blockCommentStart: '', - closeBrackets: '()[]{}\'\'""``', - fold: 'markdown', - }; - return mode; - }, - 'xml', - ); +CodeMirror.defineMIME("text/markdown", "markdown"); - CodeMirror.defineMIME('text/markdown', 'markdown'); +CodeMirror.defineMIME("text/x-markdown", "markdown"); - CodeMirror.defineMIME('text/x-markdown', 'markdown'); }); diff --git a/web/static/lib/codemirror/matchbrackets.js b/web/static/lib/codemirror/matchbrackets.js index 3f463d75..c342910e 100644 --- a/web/static/lib/codemirror/matchbrackets.js +++ b/web/static/lib/codemirror/matchbrackets.js @@ -1,76 +1,47 @@ // CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: https://codemirror.net/LICENSE - -(function (mod) { - if (typeof exports == 'object' && typeof module == 'object') - // CommonJS - mod(require('../../lib/codemirror')); - else if (typeof define == 'function' && define.amd) - // AMD - define(['../../lib/codemirror'], mod); - // Plain browser env - else mod(CodeMirror); -})(function (CodeMirror) { - var ie_lt8 = - /MSIE \d/.test(navigator.userAgent) && +// Distributed under an MIT license: https://codemirror.net/5/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + var ie_lt8 = /MSIE \d/.test(navigator.userAgent) && (document.documentMode == null || document.documentMode < 8); var Pos = CodeMirror.Pos; - var matching = { - '(': ')>', - ')': '(<', - '[': ']>', - ']': '[<', - '{': '}>', - '}': '{<', - '<': '>>', - '>': '<<', - }; + var matching = {"(": ")>", ")": "(<", "[": "]>", "]": "[<", "{": "}>", "}": "{<", "<": ">>", ">": "<<"}; function bracketRegex(config) { - return (config && config.bracketRegex) || /[(){}[\]]/; + return config && config.bracketRegex || /[(){}[\]]/ } function findMatchingBracket(cm, where, config) { - var line = cm.getLineHandle(where.line), - pos = where.ch - 1; - var afterCursor = config && config.afterCursor; + var line = cm.getLineHandle(where.line), pos = where.ch - 1; + var afterCursor = config && config.afterCursor if (afterCursor == null) - afterCursor = /(^| )cm-fat-cursor($| )/.test( - cm.getWrapperElement().className, - ); - var re = bracketRegex(config); + afterCursor = /(^| )cm-fat-cursor($| )/.test(cm.getWrapperElement().className) + var re = bracketRegex(config) // A cursor is defined as between two characters, but in in vim command mode // (i.e. not insert mode), the cursor is visually represented as a // highlighted box on top of the 2nd character. Otherwise, we allow matches // from before or after the cursor. - var match = - (!afterCursor && - pos >= 0 && - re.test(line.text.charAt(pos)) && - matching[line.text.charAt(pos)]) || - (re.test(line.text.charAt(pos + 1)) && matching[line.text.charAt(++pos)]); + var match = (!afterCursor && pos >= 0 && re.test(line.text.charAt(pos)) && matching[line.text.charAt(pos)]) || + re.test(line.text.charAt(pos + 1)) && matching[line.text.charAt(++pos)]; if (!match) return null; - var dir = match.charAt(1) == '>' ? 1 : -1; - if (config && config.strict && dir > 0 != (pos == where.ch)) return null; + var dir = match.charAt(1) == ">" ? 1 : -1; + if (config && config.strict && (dir > 0) != (pos == where.ch)) return null; var style = cm.getTokenTypeAt(Pos(where.line, pos + 1)); - var found = scanForBracket( - cm, - Pos(where.line, pos + (dir > 0 ? 1 : 0)), - dir, - style || null, - config, - ); + var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 : 0)), dir, style, config); if (found == null) return null; - return { - from: Pos(where.line, pos), - to: found && found.pos, - match: found && found.ch == match.charAt(0), - forward: dir > 0, - }; + return {from: Pos(where.line, pos), to: found && found.pos, + match: found && found.ch == match.charAt(0), forward: dir > 0}; } // bracketRegex is used to specify which type of bracket to scan @@ -85,70 +56,51 @@ var maxScanLines = (config && config.maxScanLines) || 1000; var stack = []; - var re = bracketRegex(config); - var lineEnd = - dir > 0 - ? Math.min(where.line + maxScanLines, cm.lastLine() + 1) - : Math.max(cm.firstLine() - 1, where.line - maxScanLines); + var re = bracketRegex(config) + var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines, cm.lastLine() + 1) + : Math.max(cm.firstLine() - 1, where.line - maxScanLines); for (var lineNo = where.line; lineNo != lineEnd; lineNo += dir) { var line = cm.getLine(lineNo); if (!line) continue; - var pos = dir > 0 ? 0 : line.length - 1, - end = dir > 0 ? line.length : -1; + var pos = dir > 0 ? 0 : line.length - 1, end = dir > 0 ? line.length : -1; if (line.length > maxScanLen) continue; if (lineNo == where.line) pos = where.ch - (dir < 0 ? 1 : 0); for (; pos != end; pos += dir) { var ch = line.charAt(pos); - if ( - re.test(ch) && - (style === undefined || - cm.getTokenTypeAt(Pos(lineNo, pos + 1)) == style) - ) { + if (re.test(ch) && (style === undefined || + (cm.getTokenTypeAt(Pos(lineNo, pos + 1)) || "") == (style || ""))) { var match = matching[ch]; - if (match && (match.charAt(1) == '>') == dir > 0) stack.push(ch); - else if (!stack.length) return { pos: Pos(lineNo, pos), ch: ch }; + if (match && (match.charAt(1) == ">") == (dir > 0)) stack.push(ch); + else if (!stack.length) return {pos: Pos(lineNo, pos), ch: ch}; else stack.pop(); } } } - return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) - ? false - : null; + return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) ? false : null; } function matchBrackets(cm, autoclear, config) { // Disable brace matching in long lines, since it'll cause hugely slow updates - var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1000; - var marks = [], - ranges = cm.listSelections(); + var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1000, + highlightNonMatching = config && config.highlightNonMatching; + var marks = [], ranges = cm.listSelections(); for (var i = 0; i < ranges.length; i++) { - var match = - ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, config); - if (match && cm.getLine(match.from.line).length <= maxHighlightLen) { - var style = match.match - ? 'CodeMirror-matchingbracket' - : 'CodeMirror-nonmatchingbracket'; - marks.push( - cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), { - className: style, - }), - ); + var match = ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, config); + if (match && (match.match || highlightNonMatching !== false) && cm.getLine(match.from.line).length <= maxHighlightLen) { + var style = match.match ? "CodeMirror-matchingbracket" : "CodeMirror-nonmatchingbracket"; + marks.push(cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), {className: style})); if (match.to && cm.getLine(match.to.line).length <= maxHighlightLen) - marks.push( - cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), { - className: style, - }), - ); + marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), {className: style})); } } if (marks.length) { // Kludge to work around the IE bug from issue #1193, where text - // input stops going to the textare whever this fires. + // input stops going to the textarea whenever this fires. if (ie_lt8 && cm.state.focused) cm.focus(); - var clear = function () { - cm.operation(function () { + var clear = function() { + cm.operation(function() { for (var i = 0; i < marks.length; i++) marks[i].clear(); }); }; @@ -158,66 +110,51 @@ } function doMatchBrackets(cm) { - cm.operation(function () { + cm.operation(function() { if (cm.state.matchBrackets.currentlyHighlighted) { cm.state.matchBrackets.currentlyHighlighted(); cm.state.matchBrackets.currentlyHighlighted = null; } - cm.state.matchBrackets.currentlyHighlighted = matchBrackets( - cm, - false, - cm.state.matchBrackets, - ); + cm.state.matchBrackets.currentlyHighlighted = matchBrackets(cm, false, cm.state.matchBrackets); }); } - CodeMirror.defineOption('matchBrackets', false, function (cm, val, old) { - function clear(cm) { - if ( - cm.state.matchBrackets && - cm.state.matchBrackets.currentlyHighlighted - ) { - cm.state.matchBrackets.currentlyHighlighted(); - cm.state.matchBrackets.currentlyHighlighted = null; - } + function clearHighlighted(cm) { + if (cm.state.matchBrackets && cm.state.matchBrackets.currentlyHighlighted) { + cm.state.matchBrackets.currentlyHighlighted(); + cm.state.matchBrackets.currentlyHighlighted = null; } + } + CodeMirror.defineOption("matchBrackets", false, function(cm, val, old) { if (old && old != CodeMirror.Init) { - cm.off('cursorActivity', doMatchBrackets); - cm.off('focus', doMatchBrackets); - cm.off('blur', clear); - clear(cm); + cm.off("cursorActivity", doMatchBrackets); + cm.off("focus", doMatchBrackets) + cm.off("blur", clearHighlighted) + clearHighlighted(cm); } if (val) { - cm.state.matchBrackets = typeof val == 'object' ? val : {}; - cm.on('cursorActivity', doMatchBrackets); - cm.on('focus', doMatchBrackets); - cm.on('blur', clear); + cm.state.matchBrackets = typeof val == "object" ? val : {}; + cm.on("cursorActivity", doMatchBrackets); + cm.on("focus", doMatchBrackets) + cm.on("blur", clearHighlighted) } }); - CodeMirror.defineExtension('matchBrackets', function () { - matchBrackets(this, true); - }); - CodeMirror.defineExtension( - 'findMatchingBracket', - function (pos, config, oldConfig) { - // Backwards-compatibility kludge - if (oldConfig || typeof config == 'boolean') { - if (!oldConfig) { - config = config ? { strict: true } : null; - } else { - oldConfig.strict = config; - config = oldConfig; - } + CodeMirror.defineExtension("matchBrackets", function() {matchBrackets(this, true);}); + CodeMirror.defineExtension("findMatchingBracket", function(pos, config, oldConfig){ + // Backwards-compatibility kludge + if (oldConfig || typeof config == "boolean") { + if (!oldConfig) { + config = config ? {strict: true} : null + } else { + oldConfig.strict = config + config = oldConfig } - return findMatchingBracket(this, pos, config); - }, - ); - CodeMirror.defineExtension( - 'scanForBracket', - function (pos, dir, style, config) { - return scanForBracket(this, pos, dir, style, config); - }, - ); + } + return findMatchingBracket(this, pos, config) + }); + CodeMirror.defineExtension("scanForBracket", function(pos, dir, style, config){ + return scanForBracket(this, pos, dir, style, config); + }); }); diff --git a/web/static/lib/codemirror/nord.scss b/web/static/lib/codemirror/nord.scss index 34af2704..41a8ad77 100644 --- a/web/static/lib/codemirror/nord.scss +++ b/web/static/lib/codemirror/nord.scss @@ -1,112 +1,41 @@ /* Based on arcticicestudio's Nord theme */ /* https://github.com/arcticicestudio/nord */ -.cm-s-nord.CodeMirror { - background: #2e3440; - color: #d8dee9; - font-size: 16px; - border-radius: 6px; -} -.cm-s-nord div.CodeMirror-selected { - background: #434c5e; -} -.cm-s-nord .CodeMirror-line::selection, -.cm-s-nord .CodeMirror-line > span::selection, -.cm-s-nord .CodeMirror-line > span > span::selection { - background: #3b4252; -} -.cm-s-nord .CodeMirror-line::-moz-selection, -.cm-s-nord .CodeMirror-line > span::-moz-selection, -.cm-s-nord .CodeMirror-line > span > span::-moz-selection { - background: #3b4252; -} -.cm-s-nord .CodeMirror-gutters { - background: #2e3440; - border-right: 0px; -} -.cm-s-nord .CodeMirror-guttermarker { - color: #4c566a; -} -.cm-s-nord .CodeMirror-guttermarker-subtle { - color: #4c566a; -} -.cm-s-nord .CodeMirror-linenumber { - color: #4c566a; -} -.cm-s-nord .CodeMirror-cursor { - border-left: 1px solid #f8f8f0; -} +.cm-s-nord.CodeMirror { background: #2e3440; color: #d8dee9; } +.cm-s-nord div.CodeMirror-selected { background: #434c5e; } +.cm-s-nord .CodeMirror-line::selection, .cm-s-nord .CodeMirror-line > span::selection, .cm-s-nord .CodeMirror-line > span > span::selection { background: #3b4252; } +.cm-s-nord .CodeMirror-line::-moz-selection, .cm-s-nord .CodeMirror-line > span::-moz-selection, .cm-s-nord .CodeMirror-line > span > span::-moz-selection { background: #3b4252; } +.cm-s-nord .CodeMirror-gutters { background: #2e3440; border-right: 0px; } +.cm-s-nord .CodeMirror-guttermarker { color: #4c566a; } +.cm-s-nord .CodeMirror-guttermarker-subtle { color: #4c566a; } +.cm-s-nord .CodeMirror-linenumber { color: #4c566a; } +.cm-s-nord .CodeMirror-cursor { border-left: 1px solid #f8f8f0; } -.cm-s-nord span.cm-comment { - color: #4c566a; -} -.cm-s-nord span.cm-atom { - color: #b48ead; -} -.cm-s-nord span.cm-number { - color: #b48ead; -} +.cm-s-nord span.cm-comment { color: #4c566a; } +.cm-s-nord span.cm-atom { color: #b48ead; } +.cm-s-nord span.cm-number { color: #b48ead; } -.cm-s-nord span.cm-comment.cm-attribute { - color: #97b757; -} -.cm-s-nord span.cm-comment.cm-def { - color: #bc9262; -} -.cm-s-nord span.cm-comment.cm-tag { - color: #bc6283; -} -.cm-s-nord span.cm-comment.cm-type { - color: #5998a6; -} +.cm-s-nord span.cm-comment.cm-attribute { color: #97b757; } +.cm-s-nord span.cm-comment.cm-def { color: #bc9262; } +.cm-s-nord span.cm-comment.cm-tag { color: #bc6283; } +.cm-s-nord span.cm-comment.cm-type { color: #5998a6; } -.cm-s-nord span.cm-property, -.cm-s-nord span.cm-attribute { - color: #8fbcbb; -} -.cm-s-nord span.cm-keyword { - color: #81a1c1; -} -.cm-s-nord span.cm-builtin { - color: #81a1c1; -} -.cm-s-nord span.cm-string { - color: #a3be8c; -} +.cm-s-nord span.cm-property, .cm-s-nord span.cm-attribute { color: #8FBCBB; } +.cm-s-nord span.cm-keyword { color: #81A1C1; } +.cm-s-nord span.cm-builtin { color: #81A1C1; } +.cm-s-nord span.cm-string { color: #A3BE8C; } -.cm-s-nord span.cm-variable { - color: #d8dee9; -} -.cm-s-nord span.cm-variable-2 { - color: #d8dee9; -} -.cm-s-nord span.cm-variable-3, -.cm-s-nord span.cm-type { - color: #d8dee9; -} -.cm-s-nord span.cm-def { - color: #8fbcbb; -} -.cm-s-nord span.cm-bracket { - color: #81a1c1; -} -.cm-s-nord span.cm-tag { - color: #bf616a; -} -.cm-s-nord span.cm-header { - color: #b48ead; -} -.cm-s-nord span.cm-link { - color: #b48ead; -} -.cm-s-nord span.cm-error { - background: #bf616a; - color: #f8f8f0; -} +.cm-s-nord span.cm-variable { color: #d8dee9; } +.cm-s-nord span.cm-variable-2 { color: #d8dee9; } +.cm-s-nord span.cm-variable-3, .cm-s-nord span.cm-type { color: #d8dee9; } +.cm-s-nord span.cm-def { color: #8FBCBB; } +.cm-s-nord span.cm-bracket { color: #81A1C1; } +.cm-s-nord span.cm-tag { color: #bf616a; } +.cm-s-nord span.cm-header { color: #b48ead; } +.cm-s-nord span.cm-link { color: #b48ead; } +.cm-s-nord span.cm-error { background: #bf616a; color: #f8f8f0; } -.cm-s-nord .CodeMirror-activeline-background { - background: #3b4252; -} +.cm-s-nord .CodeMirror-activeline-background { background: #3b4252; } .cm-s-nord .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; diff --git a/web/static/lib/codemirror/overlay.js b/web/static/lib/codemirror/overlay.js index d305a5ec..1aab1595 100644 --- a/web/static/lib/codemirror/overlay.js +++ b/web/static/lib/codemirror/overlay.js @@ -1,5 +1,5 @@ // CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: https://codemirror.net/LICENSE +// Distributed under an MIT license: https://codemirror.net/5/LICENSE // Utility function that allows modes to be combined. The mode given // as the base argument takes care of most of the normal mode @@ -10,95 +10,81 @@ // or state.overlay.combineTokens was true, in which case the styles are // combined. -(function (mod) { - if (typeof exports == 'object' && typeof module == 'object') - // CommonJS - mod(require('../../lib/codemirror')); - else if (typeof define == 'function' && define.amd) - // AMD - define(['../../lib/codemirror'], mod); - // Plain browser env - else mod(CodeMirror); -})(function (CodeMirror) { - 'use strict'; +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; - CodeMirror.overlayMode = function (base, overlay, combine) { - return { - startState: function () { - return { - base: CodeMirror.startState(base), - overlay: CodeMirror.startState(overlay), - basePos: 0, - baseCur: null, - overlayPos: 0, - overlayCur: null, - streamSeen: null, - }; - }, - copyState: function (state) { - return { - base: CodeMirror.copyState(base, state.base), - overlay: CodeMirror.copyState(overlay, state.overlay), - basePos: state.basePos, - baseCur: null, - overlayPos: state.overlayPos, - overlayCur: null, - }; - }, +CodeMirror.overlayMode = function(base, overlay, combine) { + return { + startState: function() { + return { + base: CodeMirror.startState(base), + overlay: CodeMirror.startState(overlay), + basePos: 0, baseCur: null, + overlayPos: 0, overlayCur: null, + streamSeen: null + }; + }, + copyState: function(state) { + return { + base: CodeMirror.copyState(base, state.base), + overlay: CodeMirror.copyState(overlay, state.overlay), + basePos: state.basePos, baseCur: null, + overlayPos: state.overlayPos, overlayCur: null + }; + }, - token: function (stream, state) { - if ( - stream != state.streamSeen || - Math.min(state.basePos, state.overlayPos) < stream.start - ) { - state.streamSeen = stream; - state.basePos = state.overlayPos = stream.start; - } + token: function(stream, state) { + if (stream != state.streamSeen || + Math.min(state.basePos, state.overlayPos) < stream.start) { + state.streamSeen = stream; + state.basePos = state.overlayPos = stream.start; + } - if (stream.start == state.basePos) { - state.baseCur = base.token(stream, state.base); - state.basePos = stream.pos; - } - if (stream.start == state.overlayPos) { - stream.pos = stream.start; - state.overlayCur = overlay.token(stream, state.overlay); - state.overlayPos = stream.pos; - } - stream.pos = Math.min(state.basePos, state.overlayPos); + if (stream.start == state.basePos) { + state.baseCur = base.token(stream, state.base); + state.basePos = stream.pos; + } + if (stream.start == state.overlayPos) { + stream.pos = stream.start; + state.overlayCur = overlay.token(stream, state.overlay); + state.overlayPos = stream.pos; + } + stream.pos = Math.min(state.basePos, state.overlayPos); - // state.overlay.combineTokens always takes precedence over combine, - // unless set to null - if (state.overlayCur == null) return state.baseCur; - else if ( - (state.baseCur != null && state.overlay.combineTokens) || - (combine && state.overlay.combineTokens == null) - ) - return state.baseCur + ' ' + state.overlayCur; - else return state.overlayCur; - }, + // state.overlay.combineTokens always takes precedence over combine, + // unless set to null + if (state.overlayCur == null) return state.baseCur; + else if (state.baseCur != null && + state.overlay.combineTokens || + combine && state.overlay.combineTokens == null) + return state.baseCur + " " + state.overlayCur; + else return state.overlayCur; + }, - indent: - base.indent && - function (state, textAfter, line) { - return base.indent(state.base, textAfter, line); - }, - electricChars: base.electricChars, + indent: base.indent && function(state, textAfter, line) { + return base.indent(state.base, textAfter, line); + }, + electricChars: base.electricChars, - innerMode: function (state) { - return { state: state.base, mode: base }; - }, + innerMode: function(state) { return {state: state.base, mode: base}; }, - blankLine: function (state) { - var baseToken, overlayToken; - if (base.blankLine) baseToken = base.blankLine(state.base); - if (overlay.blankLine) overlayToken = overlay.blankLine(state.overlay); + blankLine: function(state) { + var baseToken, overlayToken; + if (base.blankLine) baseToken = base.blankLine(state.base); + if (overlay.blankLine) overlayToken = overlay.blankLine(state.overlay); - return overlayToken == null - ? baseToken - : combine && baseToken != null - ? baseToken + ' ' + overlayToken - : overlayToken; - }, - }; + return overlayToken == null ? + baseToken : + (combine && baseToken != null ? baseToken + " " + overlayToken : overlayToken); + } }; +}; + }); diff --git a/web/static/lib/codemirror/python.js b/web/static/lib/codemirror/python.js index df0ece65..3946ceee 100644 --- a/web/static/lib/codemirror/python.js +++ b/web/static/lib/codemirror/python.js @@ -1,258 +1,120 @@ // CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: https://codemirror.net/LICENSE - -(function (mod) { - if (typeof exports == 'object' && typeof module == 'object') - // CommonJS - mod(require('../../lib/codemirror')); - else if (typeof define == 'function' && define.amd) - // AMD - define(['../../lib/codemirror'], mod); - // Plain browser env - else mod(CodeMirror); -})(function (CodeMirror) { - 'use strict'; +// Distributed under an MIT license: https://codemirror.net/5/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; function wordRegexp(words) { - return new RegExp('^((' + words.join(')|(') + '))\\b'); + return new RegExp("^((" + words.join(")|(") + "))\\b"); } - var wordOperators = wordRegexp(['and', 'or', 'not', 'is']); - var commonKeywords = [ - 'as', - 'assert', - 'break', - 'class', - 'continue', - 'def', - 'del', - 'elif', - 'else', - 'except', - 'finally', - 'for', - 'from', - 'global', - 'if', - 'import', - 'lambda', - 'pass', - 'raise', - 'return', - 'try', - 'while', - 'with', - 'yield', - 'in', - ]; - var commonBuiltins = [ - 'abs', - 'all', - 'any', - 'bin', - 'bool', - 'bytearray', - 'callable', - 'chr', - 'classmethod', - 'compile', - 'complex', - 'delattr', - 'dict', - 'dir', - 'divmod', - 'enumerate', - 'eval', - 'filter', - 'float', - 'format', - 'frozenset', - 'getattr', - 'globals', - 'hasattr', - 'hash', - 'help', - 'hex', - 'id', - 'input', - 'int', - 'isinstance', - 'issubclass', - 'iter', - 'len', - 'list', - 'locals', - 'map', - 'max', - 'memoryview', - 'min', - 'next', - 'object', - 'oct', - 'open', - 'ord', - 'pow', - 'property', - 'range', - 'repr', - 'reversed', - 'round', - 'set', - 'setattr', - 'slice', - 'sorted', - 'staticmethod', - 'str', - 'sum', - 'super', - 'tuple', - 'type', - 'vars', - 'zip', - '__import__', - 'NotImplemented', - 'Ellipsis', - '__debug__', - ]; - CodeMirror.registerHelper( - 'hintWords', - 'python', - commonKeywords.concat(commonBuiltins), - ); + var wordOperators = wordRegexp(["and", "or", "not", "is"]); + var commonKeywords = ["as", "assert", "break", "class", "continue", + "def", "del", "elif", "else", "except", "finally", + "for", "from", "global", "if", "import", + "lambda", "pass", "raise", "return", + "try", "while", "with", "yield", "in", "False", "True"]; + var commonBuiltins = ["abs", "all", "any", "bin", "bool", "bytearray", "callable", "chr", + "classmethod", "compile", "complex", "delattr", "dict", "dir", "divmod", + "enumerate", "eval", "filter", "float", "format", "frozenset", + "getattr", "globals", "hasattr", "hash", "help", "hex", "id", + "input", "int", "isinstance", "issubclass", "iter", "len", + "list", "locals", "map", "max", "memoryview", "min", "next", + "object", "oct", "open", "ord", "pow", "property", "range", + "repr", "reversed", "round", "set", "setattr", "slice", + "sorted", "staticmethod", "str", "sum", "super", "tuple", + "type", "vars", "zip", "__import__", "NotImplemented", + "Ellipsis", "__debug__"]; + CodeMirror.registerHelper("hintWords", "python", commonKeywords.concat(commonBuiltins).concat(["exec", "print"])); function top(state) { return state.scopes[state.scopes.length - 1]; } - CodeMirror.defineMode('python', function (conf, parserConf) { - var ERRORCLASS = 'error'; - - var delimiters = - parserConf.delimiters || - parserConf.singleDelimiters || - /^[\(\)\[\]\{\}@,:`=;\.\\]/; - // (Backwards-compatiblity with old, cumbersome config system) - var operators = [ - parserConf.singleOperators, - parserConf.doubleOperators, - parserConf.doubleDelimiters, - parserConf.tripleDelimiters, - parserConf.operators || - /^([-+*/%\/&|^]=?|[<>=]+|\/\/=?|\*\*=?|!=|[~!@]|\.\.\.)/, - ]; - for (var i = 0; i < operators.length; i++) - if (!operators[i]) operators.splice(i--, 1); + CodeMirror.defineMode("python", function(conf, parserConf) { + var ERRORCLASS = "error"; + + var delimiters = parserConf.delimiters || parserConf.singleDelimiters || /^[\(\)\[\]\{\}@,:`=;\.\\]/; + // (Backwards-compatibility with old, cumbersome config system) + var operators = [parserConf.singleOperators, parserConf.doubleOperators, parserConf.doubleDelimiters, parserConf.tripleDelimiters, + parserConf.operators || /^([-+*/%\/&|^]=?|[<>=]+|\/\/=?|\*\*=?|!=|[~!@]|\.\.\.)/] + for (var i = 0; i < operators.length; i++) if (!operators[i]) operators.splice(i--, 1) var hangingIndent = parserConf.hangingIndent || conf.indentUnit; - var myKeywords = commonKeywords, - myBuiltins = commonBuiltins; + var myKeywords = commonKeywords, myBuiltins = commonBuiltins; if (parserConf.extra_keywords != undefined) myKeywords = myKeywords.concat(parserConf.extra_keywords); if (parserConf.extra_builtins != undefined) myBuiltins = myBuiltins.concat(parserConf.extra_builtins); - var py3 = !(parserConf.version && Number(parserConf.version) < 3); + var py3 = !(parserConf.version && Number(parserConf.version) < 3) if (py3) { // since http://legacy.python.org/dev/peps/pep-0465/ @ is also an operator - var identifiers = - parserConf.identifiers || - /^[_A-Za-z\u00A1-\uFFFF][_A-Za-z0-9\u00A1-\uFFFF]*/; - myKeywords = myKeywords.concat([ - 'nonlocal', - 'False', - 'True', - 'None', - 'async', - 'await', - ]); - myBuiltins = myBuiltins.concat(['ascii', 'bytes', 'exec', 'print']); - var stringPrefixes = new RegExp( - '^(([rbuf]|(br)|(fr))?(\'{3}|"{3}|[\'"]))', - 'i', - ); + var identifiers = parserConf.identifiers|| /^[_A-Za-z\u00A1-\uFFFF][_A-Za-z0-9\u00A1-\uFFFF]*/; + myKeywords = myKeywords.concat(["nonlocal", "None", "aiter", "anext", "async", "await", "breakpoint", "match", "case"]); + myBuiltins = myBuiltins.concat(["ascii", "bytes", "exec", "print"]); + var stringPrefixes = new RegExp("^(([rbuf]|(br)|(rb)|(fr)|(rf))?('{3}|\"{3}|['\"]))", "i"); } else { - var identifiers = parserConf.identifiers || /^[_A-Za-z][_A-Za-z0-9]*/; - myKeywords = myKeywords.concat(['exec', 'print']); - myBuiltins = myBuiltins.concat([ - 'apply', - 'basestring', - 'buffer', - 'cmp', - 'coerce', - 'execfile', - 'file', - 'intern', - 'long', - 'raw_input', - 'reduce', - 'reload', - 'unichr', - 'unicode', - 'xrange', - 'False', - 'True', - 'None', - ]); - var stringPrefixes = new RegExp( - '^(([rubf]|(ur)|(br))?(\'{3}|"{3}|[\'"]))', - 'i', - ); + var identifiers = parserConf.identifiers|| /^[_A-Za-z][_A-Za-z0-9]*/; + myKeywords = myKeywords.concat(["exec", "print"]); + myBuiltins = myBuiltins.concat(["apply", "basestring", "buffer", "cmp", "coerce", "execfile", + "file", "intern", "long", "raw_input", "reduce", "reload", + "unichr", "unicode", "xrange", "None"]); + var stringPrefixes = new RegExp("^(([rubf]|(ur)|(br))?('{3}|\"{3}|['\"]))", "i"); } var keywords = wordRegexp(myKeywords); var builtins = wordRegexp(myBuiltins); // tokenizers function tokenBase(stream, state) { - var sol = stream.sol() && state.lastToken != '\\'; - if (sol) state.indent = stream.indentation(); + var sol = stream.sol() && state.lastToken != "\\" + if (sol) state.indent = stream.indentation() // Handle scope changes - if (sol && top(state).type == 'py') { + if (sol && top(state).type == "py") { var scopeOffset = top(state).offset; if (stream.eatSpace()) { var lineOffset = stream.indentation(); - if (lineOffset > scopeOffset) pushPyScope(state); - else if ( - lineOffset < scopeOffset && - dedent(stream, state) && - stream.peek() != '#' - ) + if (lineOffset > scopeOffset) + pushPyScope(state); + else if (lineOffset < scopeOffset && dedent(stream, state) && stream.peek() != "#") state.errorToken = true; return null; } else { var style = tokenBaseInner(stream, state); if (scopeOffset > 0 && dedent(stream, state)) - style += ' ' + ERRORCLASS; + style += " " + ERRORCLASS; return style; } } return tokenBaseInner(stream, state); } - function tokenBaseInner(stream, state) { + function tokenBaseInner(stream, state, inFormat) { if (stream.eatSpace()) return null; // Handle Comments - if (stream.match(/^#.*/)) return 'comment'; + if (!inFormat && stream.match(/^#.*/)) return "comment"; // Handle Number Literals if (stream.match(/^[0-9\.]/, false)) { var floatLiteral = false; // Floats - if (stream.match(/^[\d_]*\.\d+(e[\+\-]?\d+)?/i)) { - floatLiteral = true; - } - if (stream.match(/^[\d_]+\.\d*/)) { - floatLiteral = true; - } - if (stream.match(/^\.\d+/)) { - floatLiteral = true; - } + if (stream.match(/^[\d_]*\.\d+(e[\+\-]?\d+)?/i)) { floatLiteral = true; } + if (stream.match(/^[\d_]+\.\d*/)) { floatLiteral = true; } + if (stream.match(/^\.\d+/)) { floatLiteral = true; } if (floatLiteral) { // Float literals may be "imaginary" stream.eat(/J/i); - return 'number'; + return "number"; } // Integers var intLiteral = false; @@ -274,7 +136,7 @@ if (intLiteral) { // Integer literals may be "long" stream.eat(/L/i); - return 'number'; + return "number"; } } @@ -285,68 +147,68 @@ state.tokenize = tokenStringFactory(stream.current(), state.tokenize); return state.tokenize(stream, state); } else { - state.tokenize = formatStringFactory( - stream.current(), - state.tokenize, - ); + state.tokenize = formatStringFactory(stream.current(), state.tokenize); return state.tokenize(stream, state); } } for (var i = 0; i < operators.length; i++) - if (stream.match(operators[i])) return 'operator'; + if (stream.match(operators[i])) return "operator" - if (stream.match(delimiters)) return 'punctuation'; + if (stream.match(delimiters)) return "punctuation"; - if (state.lastToken == '.' && stream.match(identifiers)) - return 'property'; + if (state.lastToken == "." && stream.match(identifiers)) + return "property"; if (stream.match(keywords) || stream.match(wordOperators)) - return 'keyword'; + return "keyword"; - if (stream.match(builtins)) return 'builtin'; + if (stream.match(builtins)) + return "builtin"; - if (stream.match(/^(self|cls)\b/)) return 'variable-2'; + if (stream.match(/^(self|cls)\b/)) + return "variable-2"; if (stream.match(identifiers)) { - if (state.lastToken == 'def' || state.lastToken == 'class') - return 'def'; - return 'variable'; + if (state.lastToken == "def" || state.lastToken == "class") + return "def"; + return "variable"; } // Handle non-detected items stream.next(); - return ERRORCLASS; + return inFormat ? null :ERRORCLASS; } function formatStringFactory(delimiter, tokenOuter) { - while ('rubf'.indexOf(delimiter.charAt(0).toLowerCase()) >= 0) + while ("rubf".indexOf(delimiter.charAt(0).toLowerCase()) >= 0) delimiter = delimiter.substr(1); var singleline = delimiter.length == 1; - var OUTCLASS = 'string'; + var OUTCLASS = "string"; function tokenNestedExpr(depth) { - return function (stream, state) { - var inner = tokenBaseInner(stream, state); - if (inner == 'punctuation') { - if (stream.current() == '{') { - state.tokenize = tokenNestedExpr(depth + 1); - } else if (stream.current() == '}') { - if (depth > 1) state.tokenize = tokenNestedExpr(depth - 1); - else state.tokenize = tokenString; + return function(stream, state) { + var inner = tokenBaseInner(stream, state, true) + if (inner == "punctuation") { + if (stream.current() == "{") { + state.tokenize = tokenNestedExpr(depth + 1) + } else if (stream.current() == "}") { + if (depth > 1) state.tokenize = tokenNestedExpr(depth - 1) + else state.tokenize = tokenString } } - return inner; - }; + return inner + } } function tokenString(stream, state) { while (!stream.eol()) { stream.eatWhile(/[^'"\{\}\\]/); - if (stream.eat('\\')) { + if (stream.eat("\\")) { stream.next(); - if (singleline && stream.eol()) return OUTCLASS; + if (singleline && stream.eol()) + return OUTCLASS; } else if (stream.match(delimiter)) { state.tokenize = tokenOuter; return OUTCLASS; @@ -355,9 +217,9 @@ return OUTCLASS; } else if (stream.match('{', false)) { // switch to nested mode - state.tokenize = tokenNestedExpr(0); + state.tokenize = tokenNestedExpr(0) if (stream.current()) return OUTCLASS; - else return state.tokenize(stream, state); + else return state.tokenize(stream, state) } else if (stream.match('}}')) { return OUTCLASS; } else if (stream.match('}')) { @@ -368,8 +230,10 @@ } } if (singleline) { - if (parserConf.singleLineStringErrors) return ERRORCLASS; - else state.tokenize = tokenOuter; + if (parserConf.singleLineStringErrors) + return ERRORCLASS; + else + state.tokenize = tokenOuter; } return OUTCLASS; } @@ -378,18 +242,19 @@ } function tokenStringFactory(delimiter, tokenOuter) { - while ('rubf'.indexOf(delimiter.charAt(0).toLowerCase()) >= 0) + while ("rubf".indexOf(delimiter.charAt(0).toLowerCase()) >= 0) delimiter = delimiter.substr(1); var singleline = delimiter.length == 1; - var OUTCLASS = 'string'; + var OUTCLASS = "string"; function tokenString(stream, state) { while (!stream.eol()) { stream.eatWhile(/[^'"\\]/); - if (stream.eat('\\')) { + if (stream.eat("\\")) { stream.next(); - if (singleline && stream.eol()) return OUTCLASS; + if (singleline && stream.eol()) + return OUTCLASS; } else if (stream.match(delimiter)) { state.tokenize = tokenOuter; return OUTCLASS; @@ -398,8 +263,10 @@ } } if (singleline) { - if (parserConf.singleLineStringErrors) return ERRORCLASS; - else state.tokenize = tokenOuter; + if (parserConf.singleLineStringErrors) + return ERRORCLASS; + else + state.tokenize = tokenOuter; } return OUTCLASS; } @@ -408,145 +275,128 @@ } function pushPyScope(state) { - while (top(state).type != 'py') state.scopes.pop(); - state.scopes.push({ - offset: top(state).offset + conf.indentUnit, - type: 'py', - align: null, - }); + while (top(state).type != "py") state.scopes.pop() + state.scopes.push({offset: top(state).offset + conf.indentUnit, + type: "py", + align: null}) } function pushBracketScope(stream, state, type) { - var align = stream.match(/^([\s\[\{\(]|#.*)*$/, false) - ? null - : stream.column() + 1; - state.scopes.push({ - offset: state.indent + hangingIndent, - type: type, - align: align, - }); + var align = stream.match(/^[\s\[\{\(]*(?:#|$)/, false) ? null : stream.column() + 1 + state.scopes.push({offset: state.indent + hangingIndent, + type: type, + align: align}) } function dedent(stream, state) { var indented = stream.indentation(); while (state.scopes.length > 1 && top(state).offset > indented) { - if (top(state).type != 'py') return true; + if (top(state).type != "py") return true; state.scopes.pop(); } return top(state).offset != indented; } function tokenLexer(stream, state) { - if (stream.sol()) state.beginningOfLine = true; + if (stream.sol()) { + state.beginningOfLine = true; + state.dedent = false; + } var style = state.tokenize(stream, state); var current = stream.current(); // Handle decorators - if (state.beginningOfLine && current == '@') - return stream.match(identifiers, false) - ? 'meta' - : py3 - ? 'operator' - : ERRORCLASS; + if (state.beginningOfLine && current == "@") + return stream.match(identifiers, false) ? "meta" : py3 ? "operator" : ERRORCLASS; if (/\S/.test(current)) state.beginningOfLine = false; - if ( - (style == 'variable' || style == 'builtin') && - state.lastToken == 'meta' - ) - style = 'meta'; + if ((style == "variable" || style == "builtin") + && state.lastToken == "meta") + style = "meta"; // Handle scope changes. - if (current == 'pass' || current == 'return') state.dedent += 1; + if (current == "pass" || current == "return") + state.dedent = true; - if (current == 'lambda') state.lambda = true; - if (current == ':' && !state.lambda && top(state).type == 'py') + if (current == "lambda") state.lambda = true; + if (current == ":" && !state.lambda && top(state).type == "py" && stream.match(/^\s*(?:#|$)/, false)) pushPyScope(state); if (current.length == 1 && !/string|comment/.test(style)) { - var delimiter_index = '[({'.indexOf(current); + var delimiter_index = "[({".indexOf(current); if (delimiter_index != -1) - pushBracketScope( - stream, - state, - '])}'.slice(delimiter_index, delimiter_index + 1), - ); + pushBracketScope(stream, state, "])}".slice(delimiter_index, delimiter_index+1)); - delimiter_index = '])}'.indexOf(current); + delimiter_index = "])}".indexOf(current); if (delimiter_index != -1) { - if (top(state).type == current) - state.indent = state.scopes.pop().offset - hangingIndent; + if (top(state).type == current) state.indent = state.scopes.pop().offset - hangingIndent else return ERRORCLASS; } } - if (state.dedent > 0 && stream.eol() && top(state).type == 'py') { - if (state.scopes.length > 1) state.scopes.pop(); - state.dedent -= 1; - } + if (state.dedent && stream.eol() && top(state).type == "py" && state.scopes.length > 1) + state.scopes.pop(); return style; } var external = { - startState: function (basecolumn) { + startState: function(basecolumn) { return { tokenize: tokenBase, - scopes: [{ offset: basecolumn || 0, type: 'py', align: null }], + scopes: [{offset: basecolumn || 0, type: "py", align: null}], indent: basecolumn || 0, lastToken: null, lambda: false, - dedent: 0, + dedent: 0 }; }, - token: function (stream, state) { + token: function(stream, state) { var addErr = state.errorToken; if (addErr) state.errorToken = false; var style = tokenLexer(stream, state); - if (style && style != 'comment') - state.lastToken = - style == 'keyword' || style == 'punctuation' - ? stream.current() - : style; - if (style == 'punctuation') style = null; + if (style && style != "comment") + state.lastToken = (style == "keyword" || style == "punctuation") ? stream.current() : style; + if (style == "punctuation") style = null; - if (stream.eol() && state.lambda) state.lambda = false; - return addErr ? style + ' ' + ERRORCLASS : style; + if (stream.eol() && state.lambda) + state.lambda = false; + return addErr ? style + " " + ERRORCLASS : style; }, - indent: function (state, textAfter) { + indent: function(state, textAfter) { if (state.tokenize != tokenBase) return state.tokenize.isString ? CodeMirror.Pass : 0; - var scope = top(state), - closing = scope.type == textAfter.charAt(0); - if (scope.align != null) return scope.align - (closing ? 1 : 0); - else return scope.offset - (closing ? hangingIndent : 0); + var scope = top(state) + var closing = scope.type == textAfter.charAt(0) || + scope.type == "py" && !state.dedent && /^(else:|elif |except |finally:)/.test(textAfter) + if (scope.align != null) + return scope.align - (closing ? 1 : 0) + else + return scope.offset - (closing ? hangingIndent : 0) }, - electricInput: /^\s*[\}\]\)]$/, - closeBrackets: { triples: '\'"' }, - lineComment: '#', - fold: 'indent', + electricInput: /^\s*([\}\]\)]|else:|elif |except |finally:)$/, + closeBrackets: {triples: "'\""}, + lineComment: "#", + fold: "indent" }; return external; }); - CodeMirror.defineMIME('text/x-python', 'python'); + CodeMirror.defineMIME("text/x-python", "python"); - var words = function (str) { - return str.split(' '); - }; + var words = function(str) { return str.split(" "); }; - CodeMirror.defineMIME('text/x-cython', { - name: 'python', - extra_keywords: words( - 'by cdef cimport cpdef ctypedef enum except ' + - 'extern gil include nogil property public ' + - 'readonly struct union DEF IF ELIF ELSE', - ), + CodeMirror.defineMIME("text/x-cython", { + name: "python", + extra_keywords: words("by cdef cimport cpdef ctypedef enum except "+ + "extern gil include nogil property public "+ + "readonly struct union DEF IF ELIF ELSE") }); + }); diff --git a/web/static/lib/codemirror/r.js b/web/static/lib/codemirror/r.js index e6a36e0a..f69f7063 100644 --- a/web/static/lib/codemirror/r.js +++ b/web/static/lib/codemirror/r.js @@ -1,258 +1,190 @@ // CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: https://codemirror.net/LICENSE +// Distributed under an MIT license: https://codemirror.net/5/LICENSE -(function (mod) { - if (typeof exports == 'object' && typeof module == 'object') - // CommonJS - mod(require('../../lib/codemirror')); - else if (typeof define == 'function' && define.amd) - // AMD - define(['../../lib/codemirror'], mod); - // Plain browser env - else mod(CodeMirror); -})(function (CodeMirror) { - 'use strict'; +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; - CodeMirror.registerHelper('wordChars', 'r', /[\w.]/); +CodeMirror.registerHelper("wordChars", "r", /[\w.]/); - CodeMirror.defineMode('r', function (config) { - function wordObj(words) { - var res = {}; - for (var i = 0; i < words.length; ++i) res[words[i]] = true; - return res; - } - var commonAtoms = [ - 'NULL', - 'NA', - 'Inf', - 'NaN', - 'NA_integer_', - 'NA_real_', - 'NA_complex_', - 'NA_character_', - 'TRUE', - 'FALSE', - ]; - var commonBuiltins = [ - 'list', - 'quote', - 'bquote', - 'eval', - 'return', - 'call', - 'parse', - 'deparse', - ]; - var commonKeywords = [ - 'if', - 'else', - 'repeat', - 'while', - 'function', - 'for', - 'in', - 'next', - 'break', - ]; - var commonBlockKeywords = [ - 'if', - 'else', - 'repeat', - 'while', - 'function', - 'for', - ]; +CodeMirror.defineMode("r", function(config) { + function wordObj(words) { + var res = {}; + for (var i = 0; i < words.length; ++i) res[words[i]] = true; + return res; + } + var commonAtoms = ["NULL", "NA", "Inf", "NaN", "NA_integer_", "NA_real_", "NA_complex_", "NA_character_", "TRUE", "FALSE"]; + var commonBuiltins = ["list", "quote", "bquote", "eval", "return", "call", "parse", "deparse"]; + var commonKeywords = ["if", "else", "repeat", "while", "function", "for", "in", "next", "break"]; + var commonBlockKeywords = ["if", "else", "repeat", "while", "function", "for"]; - CodeMirror.registerHelper( - 'hintWords', - 'r', - commonAtoms.concat(commonBuiltins, commonKeywords), - ); + CodeMirror.registerHelper("hintWords", "r", commonAtoms.concat(commonBuiltins, commonKeywords)); - var atoms = wordObj(commonAtoms); - var builtins = wordObj(commonBuiltins); - var keywords = wordObj(commonKeywords); - var blockkeywords = wordObj(commonBlockKeywords); - var opChars = /[+\-*\/^<>=!&|~$:]/; - var curPunc; + var atoms = wordObj(commonAtoms); + var builtins = wordObj(commonBuiltins); + var keywords = wordObj(commonKeywords); + var blockkeywords = wordObj(commonBlockKeywords); + var opChars = /[+\-*\/^<>=!&|~$:]/; + var curPunc; - function tokenBase(stream, state) { - curPunc = null; - var ch = stream.next(); - if (ch == '#') { - stream.skipToEnd(); - return 'comment'; - } else if (ch == '0' && stream.eat('x')) { - stream.eatWhile(/[\da-f]/i); - return 'number'; - } else if (ch == '.' && stream.eat(/\d/)) { - stream.match(/\d*(?:e[+\-]?\d+)?/); - return 'number'; - } else if (/\d/.test(ch)) { - stream.match(/\d*(?:\.\d+)?(?:e[+\-]\d+)?L?/); - return 'number'; - } else if (ch == "'" || ch == '"') { - state.tokenize = tokenString(ch); - return 'string'; - } else if (ch == '`') { - stream.match(/[^`]+`/); - return 'variable-3'; - } else if (ch == '.' && stream.match(/.[.\d]+/)) { - return 'keyword'; - } else if (/[\w\.]/.test(ch) && ch != '_') { - stream.eatWhile(/[\w\.]/); - var word = stream.current(); - if (atoms.propertyIsEnumerable(word)) return 'atom'; - if (keywords.propertyIsEnumerable(word)) { - // Block keywords start new blocks, except 'else if', which only starts - // one new block for the 'if', no block for the 'else'. - if ( - blockkeywords.propertyIsEnumerable(word) && - !stream.match(/\s*if(\s+|$)/, false) - ) - curPunc = 'block'; - return 'keyword'; - } - if (builtins.propertyIsEnumerable(word)) return 'builtin'; - return 'variable'; - } else if (ch == '%') { - if (stream.skipTo('%')) stream.next(); - return 'operator variable-2'; - } else if ( - (ch == '<' && stream.eat('-')) || - (ch == '<' && stream.match('<-')) || - (ch == '-' && stream.match(/>>?/)) - ) { - return 'operator arrow'; - } else if (ch == '=' && state.ctx.argList) { - return 'arg-is'; - } else if (opChars.test(ch)) { - if (ch == '$') return 'operator dollar'; - stream.eatWhile(opChars); - return 'operator'; - } else if (/[\(\){}\[\];]/.test(ch)) { - curPunc = ch; - if (ch == ';') return 'semi'; - return null; - } else { - return null; + function tokenBase(stream, state) { + curPunc = null; + var ch = stream.next(); + if (ch == "#") { + stream.skipToEnd(); + return "comment"; + } else if (ch == "0" && stream.eat("x")) { + stream.eatWhile(/[\da-f]/i); + return "number"; + } else if (ch == "." && stream.eat(/\d/)) { + stream.match(/\d*(?:e[+\-]?\d+)?/); + return "number"; + } else if (/\d/.test(ch)) { + stream.match(/\d*(?:\.\d+)?(?:e[+\-]\d+)?L?/); + return "number"; + } else if (ch == "'" || ch == '"') { + state.tokenize = tokenString(ch); + return "string"; + } else if (ch == "`") { + stream.match(/[^`]+`/); + return "variable-3"; + } else if (ch == "." && stream.match(/.(?:[.]|\d+)/)) { + return "keyword"; + } else if (/[a-zA-Z\.]/.test(ch)) { + stream.eatWhile(/[\w\.]/); + var word = stream.current(); + if (atoms.propertyIsEnumerable(word)) return "atom"; + if (keywords.propertyIsEnumerable(word)) { + // Block keywords start new blocks, except 'else if', which only starts + // one new block for the 'if', no block for the 'else'. + if (blockkeywords.propertyIsEnumerable(word) && + !stream.match(/\s*if(\s+|$)/, false)) + curPunc = "block"; + return "keyword"; } + if (builtins.propertyIsEnumerable(word)) return "builtin"; + return "variable"; + } else if (ch == "%") { + if (stream.skipTo("%")) stream.next(); + return "operator variable-2"; + } else if ( + (ch == "<" && stream.eat("-")) || + (ch == "<" && stream.match("<-")) || + (ch == "-" && stream.match(/>>?/)) + ) { + return "operator arrow"; + } else if (ch == "=" && state.ctx.argList) { + return "arg-is"; + } else if (opChars.test(ch)) { + if (ch == "$") return "operator dollar"; + stream.eatWhile(opChars); + return "operator"; + } else if (/[\(\){}\[\];]/.test(ch)) { + curPunc = ch; + if (ch == ";") return "semi"; + return null; + } else { + return null; } + } - function tokenString(quote) { - return function (stream, state) { - if (stream.eat('\\')) { - var ch = stream.next(); - if (ch == 'x') stream.match(/^[a-f0-9]{2}/i); - else if ( - (ch == 'u' || ch == 'U') && - stream.eat('{') && - stream.skipTo('}') - ) - stream.next(); - else if (ch == 'u') stream.match(/^[a-f0-9]{4}/i); - else if (ch == 'U') stream.match(/^[a-f0-9]{8}/i); - else if (/[0-7]/.test(ch)) stream.match(/^[0-7]{1,2}/); - return 'string-2'; - } else { - var next; - while ((next = stream.next()) != null) { - if (next == quote) { - state.tokenize = tokenBase; - break; - } - if (next == '\\') { - stream.backUp(1); - break; - } - } - return 'string'; + function tokenString(quote) { + return function(stream, state) { + if (stream.eat("\\")) { + var ch = stream.next(); + if (ch == "x") stream.match(/^[a-f0-9]{2}/i); + else if ((ch == "u" || ch == "U") && stream.eat("{") && stream.skipTo("}")) stream.next(); + else if (ch == "u") stream.match(/^[a-f0-9]{4}/i); + else if (ch == "U") stream.match(/^[a-f0-9]{8}/i); + else if (/[0-7]/.test(ch)) stream.match(/^[0-7]{1,2}/); + return "string-2"; + } else { + var next; + while ((next = stream.next()) != null) { + if (next == quote) { state.tokenize = tokenBase; break; } + if (next == "\\") { stream.backUp(1); break; } } - }; - } + return "string"; + } + }; + } - var ALIGN_YES = 1, - ALIGN_NO = 2, - BRACELESS = 4; + var ALIGN_YES = 1, ALIGN_NO = 2, BRACELESS = 4 - function push(state, type, stream) { - state.ctx = { - type: type, - indent: state.indent, - flags: 0, - column: stream.column(), - prev: state.ctx, - }; - } - function setFlag(state, flag) { - var ctx = state.ctx; - state.ctx = { - type: ctx.type, - indent: ctx.indent, - flags: ctx.flags | flag, - column: ctx.column, - prev: ctx.prev, - }; - } - function pop(state) { - state.indent = state.ctx.indent; - state.ctx = state.ctx.prev; - } + function push(state, type, stream) { + state.ctx = {type: type, + indent: state.indent, + flags: 0, + column: stream.column(), + prev: state.ctx}; + } + function setFlag(state, flag) { + var ctx = state.ctx + state.ctx = {type: ctx.type, + indent: ctx.indent, + flags: ctx.flags | flag, + column: ctx.column, + prev: ctx.prev} + } + function pop(state) { + state.indent = state.ctx.indent; + state.ctx = state.ctx.prev; + } - return { - startState: function () { - return { - tokenize: tokenBase, - ctx: { type: 'top', indent: -config.indentUnit, flags: ALIGN_NO }, - indent: 0, - afterIdent: false, - }; - }, + return { + startState: function() { + return {tokenize: tokenBase, + ctx: {type: "top", + indent: -config.indentUnit, + flags: ALIGN_NO}, + indent: 0, + afterIdent: false}; + }, - token: function (stream, state) { - if (stream.sol()) { - if ((state.ctx.flags & 3) == 0) state.ctx.flags |= ALIGN_NO; - if (state.ctx.flags & BRACELESS) pop(state); - state.indent = stream.indentation(); - } - if (stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - if (style != 'comment' && (state.ctx.flags & ALIGN_NO) == 0) - setFlag(state, ALIGN_YES); + token: function(stream, state) { + if (stream.sol()) { + if ((state.ctx.flags & 3) == 0) state.ctx.flags |= ALIGN_NO + if (state.ctx.flags & BRACELESS) pop(state) + state.indent = stream.indentation(); + } + if (stream.eatSpace()) return null; + var style = state.tokenize(stream, state); + if (style != "comment" && (state.ctx.flags & ALIGN_NO) == 0) setFlag(state, ALIGN_YES) - if ( - (curPunc == ';' || curPunc == '{' || curPunc == '}') && - state.ctx.type == 'block' - ) - pop(state); - if (curPunc == '{') push(state, '}', stream); - else if (curPunc == '(') { - push(state, ')', stream); - if (state.afterIdent) state.ctx.argList = true; - } else if (curPunc == '[') push(state, ']', stream); - else if (curPunc == 'block') push(state, 'block', stream); - else if (curPunc == state.ctx.type) pop(state); - else if (state.ctx.type == 'block' && style != 'comment') - setFlag(state, BRACELESS); - state.afterIdent = style == 'variable' || style == 'keyword'; - return style; - }, + if ((curPunc == ";" || curPunc == "{" || curPunc == "}") && state.ctx.type == "block") pop(state); + if (curPunc == "{") push(state, "}", stream); + else if (curPunc == "(") { + push(state, ")", stream); + if (state.afterIdent) state.ctx.argList = true; + } + else if (curPunc == "[") push(state, "]", stream); + else if (curPunc == "block") push(state, "block", stream); + else if (curPunc == state.ctx.type) pop(state); + else if (state.ctx.type == "block" && style != "comment") setFlag(state, BRACELESS) + state.afterIdent = style == "variable" || style == "keyword"; + return style; + }, - indent: function (state, textAfter) { - if (state.tokenize != tokenBase) return 0; - var firstChar = textAfter && textAfter.charAt(0), - ctx = state.ctx, + indent: function(state, textAfter) { + if (state.tokenize != tokenBase) return 0; + var firstChar = textAfter && textAfter.charAt(0), ctx = state.ctx, closing = firstChar == ctx.type; - if (ctx.flags & BRACELESS) ctx = ctx.prev; - if (ctx.type == 'block') - return ctx.indent + (firstChar == '{' ? 0 : config.indentUnit); - else if (ctx.flags & ALIGN_YES) return ctx.column + (closing ? 0 : 1); - else return ctx.indent + (closing ? 0 : config.indentUnit); - }, + if (ctx.flags & BRACELESS) ctx = ctx.prev + if (ctx.type == "block") return ctx.indent + (firstChar == "{" ? 0 : config.indentUnit); + else if (ctx.flags & ALIGN_YES) return ctx.column + (closing ? 0 : 1); + else return ctx.indent + (closing ? 0 : config.indentUnit); + }, - lineComment: '#', - }; - }); + lineComment: "#" + }; +}); + +CodeMirror.defineMIME("text/x-rsrc", "r"); - CodeMirror.defineMIME('text/x-rsrc', 'r'); }); diff --git a/web/static/lib/codemirror/shell.js b/web/static/lib/codemirror/shell.js index d5d29656..9ae9118e 100644 --- a/web/static/lib/codemirror/shell.js +++ b/web/static/lib/codemirror/shell.js @@ -1,249 +1,168 @@ // CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: https://codemirror.net/LICENSE - -(function (mod) { - if (typeof exports == 'object' && typeof module == 'object') - // CommonJS - mod(require('../../lib/codemirror')); - else if (typeof define == 'function' && define.amd) - // AMD - define(['../../lib/codemirror'], mod); - // Plain browser env - else mod(CodeMirror); -})(function (CodeMirror) { - 'use strict'; - - CodeMirror.defineMode('shell', function () { - var words = {}; - function define(style, dict) { - for (var i = 0; i < dict.length; i++) { - words[dict[i]] = style; - } +// Distributed under an MIT license: https://codemirror.net/5/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode('shell', function() { + + var words = {}; + function define(style, dict) { + for(var i = 0; i < dict.length; i++) { + words[dict[i]] = style; } + }; - var commonAtoms = ['true', 'false']; - var commonKeywords = [ - 'if', - 'then', - 'do', - 'else', - 'elif', - 'while', - 'until', - 'for', - 'in', - 'esac', - 'fi', - 'fin', - 'fil', - 'done', - 'exit', - 'set', - 'unset', - 'export', - 'function', - ]; - var commonCommands = [ - 'ab', - 'awk', - 'bash', - 'beep', - 'cat', - 'cc', - 'cd', - 'chown', - 'chmod', - 'chroot', - 'clear', - 'cp', - 'curl', - 'cut', - 'diff', - 'echo', - 'find', - 'gawk', - 'gcc', - 'get', - 'git', - 'grep', - 'hg', - 'kill', - 'killall', - 'ln', - 'ls', - 'make', - 'mkdir', - 'openssl', - 'mv', - 'nc', - 'nl', - 'node', - 'npm', - 'ping', - 'ps', - 'restart', - 'rm', - 'rmdir', - 'sed', - 'service', - 'sh', - 'shopt', - 'shred', - 'source', - 'sort', - 'sleep', - 'ssh', - 'start', - 'stop', - 'su', - 'sudo', - 'svn', - 'tee', - 'telnet', - 'top', - 'touch', - 'vi', - 'vim', - 'wall', - 'wc', - 'wget', - 'who', - 'write', - 'yes', - 'zsh', - ]; - - CodeMirror.registerHelper( - 'hintWords', - 'shell', - commonAtoms.concat(commonKeywords, commonCommands), - ); - - define('atom', commonAtoms); - define('keyword', commonKeywords); - define('builtin', commonCommands); - - function tokenBase(stream, state) { - if (stream.eatSpace()) return null; - - var sol = stream.sol(); - var ch = stream.next(); - - if (ch === '\\') { - stream.next(); - return null; - } - if (ch === "'" || ch === '"' || ch === '`') { - state.tokens.unshift(tokenString(ch, ch === '`' ? 'quote' : 'string')); - return tokenize(stream, state); - } - if (ch === '#') { - if (sol && stream.eat('!')) { - stream.skipToEnd(); - return 'meta'; // 'comment'? - } + var commonAtoms = ["true", "false"]; + var commonKeywords = ["if", "then", "do", "else", "elif", "while", "until", "for", "in", "esac", "fi", + "fin", "fil", "done", "exit", "set", "unset", "export", "function"]; + var commonCommands = ["ab", "awk", "bash", "beep", "cat", "cc", "cd", "chown", "chmod", "chroot", "clear", + "cp", "curl", "cut", "diff", "echo", "find", "gawk", "gcc", "get", "git", "grep", "hg", "kill", "killall", + "ln", "ls", "make", "mkdir", "openssl", "mv", "nc", "nl", "node", "npm", "ping", "ps", "restart", "rm", + "rmdir", "sed", "service", "sh", "shopt", "shred", "source", "sort", "sleep", "ssh", "start", "stop", + "su", "sudo", "svn", "tee", "telnet", "top", "touch", "vi", "vim", "wall", "wc", "wget", "who", "write", + "yes", "zsh"]; + + CodeMirror.registerHelper("hintWords", "shell", commonAtoms.concat(commonKeywords, commonCommands)); + + define('atom', commonAtoms); + define('keyword', commonKeywords); + define('builtin', commonCommands); + + function tokenBase(stream, state) { + if (stream.eatSpace()) return null; + + var sol = stream.sol(); + var ch = stream.next(); + + if (ch === '\\') { + stream.next(); + return null; + } + if (ch === '\'' || ch === '"' || ch === '`') { + state.tokens.unshift(tokenString(ch, ch === "`" ? "quote" : "string")); + return tokenize(stream, state); + } + if (ch === '#') { + if (sol && stream.eat('!')) { stream.skipToEnd(); - return 'comment'; - } - if (ch === '$') { - state.tokens.unshift(tokenDollar); - return tokenize(stream, state); + return 'meta'; // 'comment'? } - if (ch === '+' || ch === '=') { - return 'operator'; + stream.skipToEnd(); + return 'comment'; + } + if (ch === '$') { + state.tokens.unshift(tokenDollar); + return tokenize(stream, state); + } + if (ch === '+' || ch === '=') { + return 'operator'; + } + if (ch === '-') { + stream.eat('-'); + stream.eatWhile(/\w/); + return 'attribute'; + } + if (ch == "<") { + if (stream.match("<<")) return "operator" + var heredoc = stream.match(/^<-?\s*['"]?([^'"]*)['"]?/) + if (heredoc) { + state.tokens.unshift(tokenHeredoc(heredoc[1])) + return 'string-2' } - if (ch === '-') { - stream.eat('-'); - stream.eatWhile(/\w/); - return 'attribute'; + } + if (/\d/.test(ch)) { + stream.eatWhile(/\d/); + if(stream.eol() || !/\w/.test(stream.peek())) { + return 'number'; } - if (/\d/.test(ch)) { - stream.eatWhile(/\d/); - if (stream.eol() || !/\w/.test(stream.peek())) { - return 'number'; + } + stream.eatWhile(/[\w-]/); + var cur = stream.current(); + if (stream.peek() === '=' && /\w+/.test(cur)) return 'def'; + return words.hasOwnProperty(cur) ? words[cur] : null; + } + + function tokenString(quote, style) { + var close = quote == "(" ? ")" : quote == "{" ? "}" : quote + return function(stream, state) { + var next, escaped = false; + while ((next = stream.next()) != null) { + if (next === close && !escaped) { + state.tokens.shift(); + break; + } else if (next === '$' && !escaped && quote !== "'" && stream.peek() != close) { + escaped = true; + stream.backUp(1); + state.tokens.unshift(tokenDollar); + break; + } else if (!escaped && quote !== close && next === quote) { + state.tokens.unshift(tokenString(quote, style)) + return tokenize(stream, state) + } else if (!escaped && /['"]/.test(next) && !/['"]/.test(quote)) { + state.tokens.unshift(tokenStringStart(next, "string")); + stream.backUp(1); + break; } + escaped = !escaped && next === '\\'; } - stream.eatWhile(/[\w-]/); - var cur = stream.current(); - if (stream.peek() === '=' && /\w+/.test(cur)) return 'def'; - return words.hasOwnProperty(cur) ? words[cur] : null; + return style; + }; + }; + + function tokenStringStart(quote, style) { + return function(stream, state) { + state.tokens[0] = tokenString(quote, style) + stream.next() + return tokenize(stream, state) } + } - function tokenString(quote, style) { - var close = quote == '(' ? ')' : quote == '{' ? '}' : quote; - return function (stream, state) { - var next, - escaped = false; - while ((next = stream.next()) != null) { - if (next === close && !escaped) { - state.tokens.shift(); - break; - } else if ( - next === '$' && - !escaped && - quote !== "'" && - stream.peek() != close - ) { - escaped = true; - stream.backUp(1); - state.tokens.unshift(tokenDollar); - break; - } else if (!escaped && quote !== close && next === quote) { - state.tokens.unshift(tokenString(quote, style)); - return tokenize(stream, state); - } else if (!escaped && /['"]/.test(next) && !/['"]/.test(quote)) { - state.tokens.unshift(tokenStringStart(next, 'string')); - stream.backUp(1); - break; - } - escaped = !escaped && next === '\\'; - } - return style; - }; + var tokenDollar = function(stream, state) { + if (state.tokens.length > 1) stream.eat('$'); + var ch = stream.next() + if (/['"({]/.test(ch)) { + state.tokens[0] = tokenString(ch, ch == "(" ? "quote" : ch == "{" ? "def" : "string"); + return tokenize(stream, state); } + if (!/\d/.test(ch)) stream.eatWhile(/\w/); + state.tokens.shift(); + return 'def'; + }; - function tokenStringStart(quote, style) { - return function (stream, state) { - state.tokens[0] = tokenString(quote, style); - stream.next(); - return tokenize(stream, state); - }; + function tokenHeredoc(delim) { + return function(stream, state) { + if (stream.sol() && stream.string == delim) state.tokens.shift() + stream.skipToEnd() + return "string-2" } + } - var tokenDollar = function (stream, state) { - if (state.tokens.length > 1) stream.eat('$'); - var ch = stream.next(); - if (/['"({]/.test(ch)) { - state.tokens[0] = tokenString( - ch, - ch == '(' ? 'quote' : ch == '{' ? 'def' : 'string', - ); - return tokenize(stream, state); - } - if (!/\d/.test(ch)) stream.eatWhile(/\w/); - state.tokens.shift(); - return 'def'; - }; + function tokenize(stream, state) { + return (state.tokens[0] || tokenBase) (stream, state); + }; - function tokenize(stream, state) { - return (state.tokens[0] || tokenBase)(stream, state); - } + return { + startState: function() {return {tokens:[]};}, + token: function(stream, state) { + return tokenize(stream, state); + }, + closeBrackets: "()[]{}''\"\"``", + lineComment: '#', + fold: "brace" + }; +}); - return { - startState: function () { - return { tokens: [] }; - }, - token: function (stream, state) { - return tokenize(stream, state); - }, - closeBrackets: '()[]{}\'\'""``', - lineComment: '#', - fold: 'brace', - }; - }); +CodeMirror.defineMIME('text/x-sh', 'shell'); +// Apache uses a slightly different Media Type for Shell scripts +// http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types +CodeMirror.defineMIME('application/x-sh', 'shell'); - CodeMirror.defineMIME('text/x-sh', 'shell'); - // Apache uses a slightly different Media Type for Shell scripts - // http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types - CodeMirror.defineMIME('application/x-sh', 'shell'); }); diff --git a/web/static/lib/codemirror/simplescrollbars.js b/web/static/lib/codemirror/simplescrollbars.js index 9f397698..f1356a8c 100644 --- a/web/static/lib/codemirror/simplescrollbars.js +++ b/web/static/lib/codemirror/simplescrollbars.js @@ -1,17 +1,15 @@ // CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: https://codemirror.net/LICENSE - -(function (mod) { - if (typeof exports == 'object' && typeof module == 'object') - // CommonJS - mod(require('../../lib/codemirror')); - else if (typeof define == 'function' && define.amd) - // AMD - define(['../../lib/codemirror'], mod); - // Plain browser env - else mod(CodeMirror); -})(function (CodeMirror) { - 'use strict'; +// Distributed under an MIT license: https://codemirror.net/5/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; function Bar(cls, orientation, scroll) { this.orientation = orientation; @@ -19,76 +17,66 @@ this.screen = this.total = this.size = 1; this.pos = 0; - this.node = document.createElement('div'); - this.node.className = cls + '-' + orientation; - this.inner = this.node.appendChild(document.createElement('div')); + this.node = document.createElement("div"); + this.node.className = cls + "-" + orientation; + this.inner = this.node.appendChild(document.createElement("div")); var self = this; - CodeMirror.on(this.inner, 'mousedown', function (e) { + CodeMirror.on(this.inner, "mousedown", function(e) { if (e.which != 1) return; CodeMirror.e_preventDefault(e); - var axis = self.orientation == 'horizontal' ? 'pageX' : 'pageY'; - var start = e[axis], - startpos = self.pos; + var axis = self.orientation == "horizontal" ? "pageX" : "pageY"; + var start = e[axis], startpos = self.pos; function done() { - CodeMirror.off(document, 'mousemove', move); - CodeMirror.off(document, 'mouseup', done); + CodeMirror.off(document, "mousemove", move); + CodeMirror.off(document, "mouseup", done); } function move(e) { if (e.which != 1) return done(); self.moveTo(startpos + (e[axis] - start) * (self.total / self.size)); } - CodeMirror.on(document, 'mousemove', move); - CodeMirror.on(document, 'mouseup', done); + CodeMirror.on(document, "mousemove", move); + CodeMirror.on(document, "mouseup", done); }); - CodeMirror.on(this.node, 'click', function (e) { + CodeMirror.on(this.node, "click", function(e) { CodeMirror.e_preventDefault(e); - var innerBox = self.inner.getBoundingClientRect(), - where; - if (self.orientation == 'horizontal') - where = - e.clientX < innerBox.left ? -1 : e.clientX > innerBox.right ? 1 : 0; + var innerBox = self.inner.getBoundingClientRect(), where; + if (self.orientation == "horizontal") + where = e.clientX < innerBox.left ? -1 : e.clientX > innerBox.right ? 1 : 0; else - where = - e.clientY < innerBox.top ? -1 : e.clientY > innerBox.bottom ? 1 : 0; + where = e.clientY < innerBox.top ? -1 : e.clientY > innerBox.bottom ? 1 : 0; self.moveTo(self.pos + where * self.screen); }); function onWheel(e) { - var moved = - CodeMirror.wheelEventPixels(e)[ - self.orientation == 'horizontal' ? 'x' : 'y' - ]; + var moved = CodeMirror.wheelEventPixels(e)[self.orientation == "horizontal" ? "x" : "y"]; var oldPos = self.pos; self.moveTo(self.pos + moved); if (self.pos != oldPos) CodeMirror.e_preventDefault(e); } - CodeMirror.on(this.node, 'mousewheel', onWheel); - CodeMirror.on(this.node, 'DOMMouseScroll', onWheel); + CodeMirror.on(this.node, "mousewheel", onWheel); + CodeMirror.on(this.node, "DOMMouseScroll", onWheel); } - Bar.prototype.setPos = function (pos, force) { + Bar.prototype.setPos = function(pos, force) { if (pos < 0) pos = 0; if (pos > this.total - this.screen) pos = this.total - this.screen; if (!force && pos == this.pos) return false; this.pos = pos; - this.inner.style[this.orientation == 'horizontal' ? 'left' : 'top'] = - pos * (this.size / this.total) + 'px'; - return true; + this.inner.style[this.orientation == "horizontal" ? "left" : "top"] = + (pos * (this.size / this.total)) + "px"; + return true }; - Bar.prototype.moveTo = function (pos) { + Bar.prototype.moveTo = function(pos) { if (this.setPos(pos)) this.scroll(pos, this.orientation); - }; + } var minButtonSize = 10; - Bar.prototype.update = function (scrollSize, clientSize, barSize) { - var sizeChanged = - this.screen != clientSize || - this.total != scrollSize || - this.size != barSize; + Bar.prototype.update = function(scrollSize, clientSize, barSize) { + var sizeChanged = this.screen != clientSize || this.total != scrollSize || this.size != barSize if (sizeChanged) { this.screen = clientSize; this.total = scrollSize; @@ -100,73 +88,65 @@ this.size -= minButtonSize - buttonSize; buttonSize = minButtonSize; } - this.inner.style[this.orientation == 'horizontal' ? 'width' : 'height'] = - buttonSize + 'px'; + this.inner.style[this.orientation == "horizontal" ? "width" : "height"] = + buttonSize + "px"; this.setPos(this.pos, sizeChanged); }; function SimpleScrollbars(cls, place, scroll) { this.addClass = cls; - this.horiz = new Bar(cls, 'horizontal', scroll); + this.horiz = new Bar(cls, "horizontal", scroll); place(this.horiz.node); - this.vert = new Bar(cls, 'vertical', scroll); + this.vert = new Bar(cls, "vertical", scroll); place(this.vert.node); this.width = null; } - SimpleScrollbars.prototype.update = function (measure) { + SimpleScrollbars.prototype.update = function(measure) { if (this.width == null) { - var style = window.getComputedStyle - ? window.getComputedStyle(this.horiz.node) - : this.horiz.node.currentStyle; + var style = window.getComputedStyle ? window.getComputedStyle(this.horiz.node) : this.horiz.node.currentStyle; if (style) this.width = parseInt(style.height); } var width = this.width || 0; var needsH = measure.scrollWidth > measure.clientWidth + 1; var needsV = measure.scrollHeight > measure.clientHeight + 1; - this.vert.node.style.display = needsV ? 'block' : 'none'; - this.horiz.node.style.display = needsH ? 'block' : 'none'; + this.vert.node.style.display = needsV ? "block" : "none"; + this.horiz.node.style.display = needsH ? "block" : "none"; if (needsV) { - this.vert.update( - measure.scrollHeight, - measure.clientHeight, - measure.viewHeight - (needsH ? width : 0), - ); - this.vert.node.style.bottom = needsH ? width + 'px' : '0'; + this.vert.update(measure.scrollHeight, measure.clientHeight, + measure.viewHeight - (needsH ? width : 0)); + this.vert.node.style.bottom = needsH ? width + "px" : "0"; } if (needsH) { - this.horiz.update( - measure.scrollWidth, - measure.clientWidth, - measure.viewWidth - (needsV ? width : 0) - measure.barLeft, - ); - this.horiz.node.style.right = needsV ? width + 'px' : '0'; - this.horiz.node.style.left = measure.barLeft + 'px'; + this.horiz.update(measure.scrollWidth, measure.clientWidth, + measure.viewWidth - (needsV ? width : 0) - measure.barLeft); + this.horiz.node.style.right = needsV ? width + "px" : "0"; + this.horiz.node.style.left = measure.barLeft + "px"; } - return { right: needsV ? width : 0, bottom: needsH ? width : 0 }; + return {right: needsV ? width : 0, bottom: needsH ? width : 0}; }; - SimpleScrollbars.prototype.setScrollTop = function (pos) { + SimpleScrollbars.prototype.setScrollTop = function(pos) { this.vert.setPos(pos); }; - SimpleScrollbars.prototype.setScrollLeft = function (pos) { + SimpleScrollbars.prototype.setScrollLeft = function(pos) { this.horiz.setPos(pos); }; - SimpleScrollbars.prototype.clear = function () { + SimpleScrollbars.prototype.clear = function() { var parent = this.horiz.node.parentNode; parent.removeChild(this.horiz.node); parent.removeChild(this.vert.node); }; - CodeMirror.scrollbarModel.simple = function (place, scroll) { - return new SimpleScrollbars('CodeMirror-simplescroll', place, scroll); + CodeMirror.scrollbarModel.simple = function(place, scroll) { + return new SimpleScrollbars("CodeMirror-simplescroll", place, scroll); }; - CodeMirror.scrollbarModel.overlay = function (place, scroll) { - return new SimpleScrollbars('CodeMirror-overlayscroll', place, scroll); + CodeMirror.scrollbarModel.overlay = function(place, scroll) { + return new SimpleScrollbars("CodeMirror-overlayscroll", place, scroll); }; }); diff --git a/web/static/lib/codemirror/simplescrollbars.scss b/web/static/lib/codemirror/simplescrollbars.scss index 8d285ccb..5eea7aa1 100644 --- a/web/static/lib/codemirror/simplescrollbars.scss +++ b/web/static/lib/codemirror/simplescrollbars.scss @@ -1,5 +1,4 @@ -.CodeMirror-simplescroll-horizontal div, -.CodeMirror-simplescroll-vertical div { +.CodeMirror-simplescroll-horizontal div, .CodeMirror-simplescroll-vertical div { position: absolute; background: #ccc; -moz-box-sizing: border-box; @@ -8,16 +7,14 @@ border-radius: 2px; } -.CodeMirror-simplescroll-horizontal, -.CodeMirror-simplescroll-vertical { +.CodeMirror-simplescroll-horizontal, .CodeMirror-simplescroll-vertical { position: absolute; z-index: 6; background: #eee; } .CodeMirror-simplescroll-horizontal { - bottom: 0; - left: 0; + bottom: 0; left: 0; height: 8px; } .CodeMirror-simplescroll-horizontal div { @@ -26,8 +23,7 @@ } .CodeMirror-simplescroll-vertical { - right: 0; - top: 0; + right: 0; top: 0; width: 8px; } .CodeMirror-simplescroll-vertical div { @@ -35,27 +31,24 @@ width: 100%; } -.CodeMirror-overlayscroll .CodeMirror-scrollbar-filler, -.CodeMirror-overlayscroll .CodeMirror-gutter-filler { + +.CodeMirror-overlayscroll .CodeMirror-scrollbar-filler, .CodeMirror-overlayscroll .CodeMirror-gutter-filler { display: none; } -.CodeMirror-overlayscroll-horizontal div, -.CodeMirror-overlayscroll-vertical div { +.CodeMirror-overlayscroll-horizontal div, .CodeMirror-overlayscroll-vertical div { position: absolute; background: #bcd; border-radius: 3px; } -.CodeMirror-overlayscroll-horizontal, -.CodeMirror-overlayscroll-vertical { +.CodeMirror-overlayscroll-horizontal, .CodeMirror-overlayscroll-vertical { position: absolute; z-index: 6; } .CodeMirror-overlayscroll-horizontal { - bottom: 0; - left: 0; + bottom: 0; left: 0; height: 6px; } .CodeMirror-overlayscroll-horizontal div { @@ -64,8 +57,7 @@ } .CodeMirror-overlayscroll-vertical { - right: 0; - top: 0; + right: 0; top: 0; width: 6px; } .CodeMirror-overlayscroll-vertical div { diff --git a/web/static/lib/codemirror/sql.js b/web/static/lib/codemirror/sql.js index eee7863f..d3983889 100644 --- a/web/static/lib/codemirror/sql.js +++ b/web/static/lib/codemirror/sql.js @@ -1,263 +1,225 @@ // CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: https://codemirror.net/LICENSE - -(function (mod) { - if (typeof exports == 'object' && typeof module == 'object') - // CommonJS - mod(require('../../lib/codemirror')); - else if (typeof define == 'function' && define.amd) - // AMD - define(['../../lib/codemirror'], mod); - // Plain browser env - else mod(CodeMirror); -})(function (CodeMirror) { - 'use strict'; - - CodeMirror.defineMode('sql', function (config, parserConfig) { - var client = parserConfig.client || {}, - atoms = parserConfig.atoms || { false: true, true: true, null: true }, - builtin = parserConfig.builtin || set(defaultBuiltin), - keywords = parserConfig.keywords || set(sqlKeywords), - operatorChars = parserConfig.operatorChars || /^[*+\-%<>!=&|~^\/]/, - support = parserConfig.support || {}, - hooks = parserConfig.hooks || {}, - dateSQL = parserConfig.dateSQL || { - date: true, - time: true, - timestamp: true, - }, +// Distributed under an MIT license: https://codemirror.net/5/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("sql", function(config, parserConfig) { + var client = parserConfig.client || {}, + atoms = parserConfig.atoms || {"false": true, "true": true, "null": true}, + builtin = parserConfig.builtin || set(defaultBuiltin), + keywords = parserConfig.keywords || set(sqlKeywords), + operatorChars = parserConfig.operatorChars || /^[*+\-%<>!=&|~^\/]/, + support = parserConfig.support || {}, + hooks = parserConfig.hooks || {}, + dateSQL = parserConfig.dateSQL || {"date" : true, "time" : true, "timestamp" : true}, backslashStringEscapes = parserConfig.backslashStringEscapes !== false, - brackets = parserConfig.brackets || /^[\{}\(\)\[\]]/, - punctuation = parserConfig.punctuation || /^[;.,:]/; + brackets = parserConfig.brackets || /^[\{}\(\)\[\]]/, + punctuation = parserConfig.punctuation || /^[;.,:]/ - function tokenBase(stream, state) { - var ch = stream.next(); + function tokenBase(stream, state) { + var ch = stream.next(); - // call hooks from the mime type - if (hooks[ch]) { - var result = hooks[ch](stream, state); - if (result !== false) return result; - } + // call hooks from the mime type + if (hooks[ch]) { + var result = hooks[ch](stream, state); + if (result !== false) return result; + } - if ( - support.hexNumber && - ((ch == '0' && stream.match(/^[xX][0-9a-fA-F]+/)) || - ((ch == 'x' || ch == 'X') && stream.match(/^'[0-9a-fA-F]+'/))) - ) { - // hex - // ref: http://dev.mysql.com/doc/refman/5.5/en/hexadecimal-literals.html - return 'number'; - } else if ( - support.binaryNumber && - (((ch == 'b' || ch == 'B') && stream.match(/^'[01]+'/)) || - (ch == '0' && stream.match(/^b[01]+/))) - ) { - // bitstring - // ref: http://dev.mysql.com/doc/refman/5.5/en/bit-field-literals.html - return 'number'; - } else if (ch.charCodeAt(0) > 47 && ch.charCodeAt(0) < 58) { - // numbers - // ref: http://dev.mysql.com/doc/refman/5.5/en/number-literals.html - stream.match(/^[0-9]*(\.[0-9]+)?([eE][-+]?[0-9]+)?/); - support.decimallessFloat && stream.match(/^\.(?!\.)/); - return 'number'; - } else if ( - ch == '?' && - (stream.eatSpace() || stream.eol() || stream.eat(';')) - ) { - // placeholders - return 'variable-3'; - } else if (ch == "'" || (ch == '"' && support.doubleQuote)) { - // strings - // ref: http://dev.mysql.com/doc/refman/5.5/en/string-literals.html - state.tokenize = tokenLiteral(ch); - return state.tokenize(stream, state); - } else if ( - ((support.nCharCast && (ch == 'n' || ch == 'N')) || - (support.charsetCast && - ch == '_' && - stream.match(/[a-z][a-z0-9]*/i))) && - (stream.peek() == "'" || stream.peek() == '"') - ) { - // charset casting: _utf8'str', N'str', n'str' - // ref: http://dev.mysql.com/doc/refman/5.5/en/string-literals.html - return 'keyword'; - } else if ( - support.escapeConstant && - (ch == 'e' || ch == 'E') && - (stream.peek() == "'" || (stream.peek() == '"' && support.doubleQuote)) - ) { - // escape constant: E'str', e'str' - // ref: https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-STRINGS-ESCAPE - state.tokenize = function (stream, state) { - return (state.tokenize = tokenLiteral(stream.next(), true))( - stream, - state, - ); - }; - return 'keyword'; - } else if (support.commentSlashSlash && ch == '/' && stream.eat('/')) { - // 1-line comment - stream.skipToEnd(); - return 'comment'; - } else if ( - (support.commentHash && ch == '#') || - (ch == '-' && - stream.eat('-') && - (!support.commentSpaceRequired || stream.eat(' '))) - ) { - // 1-line comments - // ref: https://kb.askmonty.org/en/comment-syntax/ - stream.skipToEnd(); - return 'comment'; - } else if (ch == '/' && stream.eat('*')) { - // multi-line comments - // ref: https://kb.askmonty.org/en/comment-syntax/ - state.tokenize = tokenComment(1); - return state.tokenize(stream, state); - } else if (ch == '.') { - // .1 for 0.1 - if (support.zerolessFloat && stream.match(/^(?:\d+(?:e[+-]?\d+)?)/i)) - return 'number'; - if (stream.match(/^\.+/)) return null; - // .table_name (ODBC) - // // ref: http://dev.mysql.com/doc/refman/5.6/en/identifier-qualifiers.html - if (support.ODBCdotTable && stream.match(/^[\w\d_]+/)) - return 'variable-2'; - } else if (operatorChars.test(ch)) { - // operators - stream.eatWhile(operatorChars); - return 'operator'; - } else if (brackets.test(ch)) { - // brackets - return 'bracket'; - } else if (punctuation.test(ch)) { - // punctuation - stream.eatWhile(punctuation); - return 'punctuation'; - } else if ( - ch == '{' && - (stream.match(/^( )*(d|D|t|T|ts|TS)( )*'[^']*'( )*}/) || - stream.match(/^( )*(d|D|t|T|ts|TS)( )*"[^"]*"( )*}/)) - ) { - // dates (weird ODBC syntax) - // ref: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html - return 'number'; - } else { - stream.eatWhile(/^[_\w\d]/); - var word = stream.current().toLowerCase(); - // dates (standard SQL syntax) - // ref: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html - if ( - dateSQL.hasOwnProperty(word) && - (stream.match(/^( )+'[^']*'/) || stream.match(/^( )+"[^"]*"/)) - ) - return 'number'; - if (atoms.hasOwnProperty(word)) return 'atom'; - if (builtin.hasOwnProperty(word)) return 'builtin'; - if (keywords.hasOwnProperty(word)) return 'keyword'; - if (client.hasOwnProperty(word)) return 'string-2'; - return null; + if (support.hexNumber && + ((ch == "0" && stream.match(/^[xX][0-9a-fA-F]+/)) + || (ch == "x" || ch == "X") && stream.match(/^'[0-9a-fA-F]*'/))) { + // hex + // ref: https://dev.mysql.com/doc/refman/8.0/en/hexadecimal-literals.html + return "number"; + } else if (support.binaryNumber && + (((ch == "b" || ch == "B") && stream.match(/^'[01]*'/)) + || (ch == "0" && stream.match(/^b[01]+/)))) { + // bitstring + // ref: https://dev.mysql.com/doc/refman/8.0/en/bit-value-literals.html + return "number"; + } else if (ch.charCodeAt(0) > 47 && ch.charCodeAt(0) < 58) { + // numbers + // ref: https://dev.mysql.com/doc/refman/8.0/en/number-literals.html + stream.match(/^[0-9]*(\.[0-9]+)?([eE][-+]?[0-9]+)?/); + support.decimallessFloat && stream.match(/^\.(?!\.)/); + return "number"; + } else if (ch == "?" && (stream.eatSpace() || stream.eol() || stream.eat(";"))) { + // placeholders + return "variable-3"; + } else if (ch == "'" || (ch == '"' && support.doubleQuote)) { + // strings + // ref: https://dev.mysql.com/doc/refman/8.0/en/string-literals.html + state.tokenize = tokenLiteral(ch); + return state.tokenize(stream, state); + } else if ((((support.nCharCast && (ch == "n" || ch == "N")) + || (support.charsetCast && ch == "_" && stream.match(/[a-z][a-z0-9]*/i))) + && (stream.peek() == "'" || stream.peek() == '"'))) { + // charset casting: _utf8'str', N'str', n'str' + // ref: https://dev.mysql.com/doc/refman/8.0/en/string-literals.html + return "keyword"; + } else if (support.escapeConstant && (ch == "e" || ch == "E") + && (stream.peek() == "'" || (stream.peek() == '"' && support.doubleQuote))) { + // escape constant: E'str', e'str' + // ref: https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-STRINGS-ESCAPE + state.tokenize = function(stream, state) { + return (state.tokenize = tokenLiteral(stream.next(), true))(stream, state); } + return "keyword"; + } else if (support.commentSlashSlash && ch == "/" && stream.eat("/")) { + // 1-line comment + stream.skipToEnd(); + return "comment"; + } else if ((support.commentHash && ch == "#") + || (ch == "-" && stream.eat("-") && (!support.commentSpaceRequired || stream.eat(" ")))) { + // 1-line comments + // ref: https://kb.askmonty.org/en/comment-syntax/ + stream.skipToEnd(); + return "comment"; + } else if (ch == "/" && stream.eat("*")) { + // multi-line comments + // ref: https://kb.askmonty.org/en/comment-syntax/ + state.tokenize = tokenComment(1); + return state.tokenize(stream, state); + } else if (ch == ".") { + // .1 for 0.1 + if (support.zerolessFloat && stream.match(/^(?:\d+(?:e[+-]?\d+)?)/i)) + return "number"; + if (stream.match(/^\.+/)) + return null + if (stream.match(/^[\w\d_$#]+/)) + return "variable-2"; + } else if (operatorChars.test(ch)) { + // operators + stream.eatWhile(operatorChars); + return "operator"; + } else if (brackets.test(ch)) { + // brackets + return "bracket"; + } else if (punctuation.test(ch)) { + // punctuation + stream.eatWhile(punctuation); + return "punctuation"; + } else if (ch == '{' && + (stream.match(/^( )*(d|D|t|T|ts|TS)( )*'[^']*'( )*}/) || stream.match(/^( )*(d|D|t|T|ts|TS)( )*"[^"]*"( )*}/))) { + // dates (weird ODBC syntax) + // ref: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-literals.html + return "number"; + } else { + stream.eatWhile(/^[_\w\d]/); + var word = stream.current().toLowerCase(); + // dates (standard SQL syntax) + // ref: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-literals.html + if (dateSQL.hasOwnProperty(word) && (stream.match(/^( )+'[^']*'/) || stream.match(/^( )+"[^"]*"/))) + return "number"; + if (atoms.hasOwnProperty(word)) return "atom"; + if (builtin.hasOwnProperty(word)) return "type"; + if (keywords.hasOwnProperty(word)) return "keyword"; + if (client.hasOwnProperty(word)) return "builtin"; + return null; } + } - // 'string', with char specified in quote escaped by '\' - function tokenLiteral(quote, backslashEscapes) { - return function (stream, state) { - var escaped = false, - ch; - while ((ch = stream.next()) != null) { - if (ch == quote && !escaped) { - state.tokenize = tokenBase; - break; - } - escaped = - (backslashStringEscapes || backslashEscapes) && - !escaped && - ch == '\\'; + // 'string', with char specified in quote escaped by '\' + function tokenLiteral(quote, backslashEscapes) { + return function(stream, state) { + var escaped = false, ch; + while ((ch = stream.next()) != null) { + if (ch == quote && !escaped) { + state.tokenize = tokenBase; + break; } - return 'string'; - }; - } - function tokenComment(depth) { - return function (stream, state) { - var m = stream.match(/^.*?(\/\*|\*\/)/); - if (!m) stream.skipToEnd(); - else if (m[1] == '/*') state.tokenize = tokenComment(depth + 1); - else if (depth > 1) state.tokenize = tokenComment(depth - 1); - else state.tokenize = tokenBase; - return 'comment'; - }; + escaped = (backslashStringEscapes || backslashEscapes) && !escaped && ch == "\\"; + } + return "string"; + }; + } + function tokenComment(depth) { + return function(stream, state) { + var m = stream.match(/^.*?(\/\*|\*\/)/) + if (!m) stream.skipToEnd() + else if (m[1] == "/*") state.tokenize = tokenComment(depth + 1) + else if (depth > 1) state.tokenize = tokenComment(depth - 1) + else state.tokenize = tokenBase + return "comment" } + } - function pushContext(stream, state, type) { - state.context = { - prev: state.context, - indent: stream.indentation(), - col: stream.column(), - type: type, - }; - } + function pushContext(stream, state, type) { + state.context = { + prev: state.context, + indent: stream.indentation(), + col: stream.column(), + type: type + }; + } - function popContext(state) { - state.indent = state.context.indent; - state.context = state.context.prev; - } + function popContext(state) { + state.indent = state.context.indent; + state.context = state.context.prev; + } - return { - startState: function () { - return { tokenize: tokenBase, context: null }; - }, + return { + startState: function() { + return {tokenize: tokenBase, context: null}; + }, - token: function (stream, state) { - if (stream.sol()) { - if (state.context && state.context.align == null) - state.context.align = false; - } - if (state.tokenize == tokenBase && stream.eatSpace()) return null; + token: function(stream, state) { + if (stream.sol()) { + if (state.context && state.context.align == null) + state.context.align = false; + } + if (state.tokenize == tokenBase && stream.eatSpace()) return null; + + var style = state.tokenize(stream, state); + if (style == "comment") return style; + + if (state.context && state.context.align == null) + state.context.align = true; + + var tok = stream.current(); + if (tok == "(") + pushContext(stream, state, ")"); + else if (tok == "[") + pushContext(stream, state, "]"); + else if (state.context && state.context.type == tok) + popContext(state); + return style; + }, - var style = state.tokenize(stream, state); - if (style == 'comment') return style; + indent: function(state, textAfter) { + var cx = state.context; + if (!cx) return CodeMirror.Pass; + var closing = textAfter.charAt(0) == cx.type; + if (cx.align) return cx.col + (closing ? 0 : 1); + else return cx.indent + (closing ? 0 : config.indentUnit); + }, - if (state.context && state.context.align == null) - state.context.align = true; - - var tok = stream.current(); - if (tok == '(') pushContext(stream, state, ')'); - else if (tok == '[') pushContext(stream, state, ']'); - else if (state.context && state.context.type == tok) popContext(state); - return style; - }, - - indent: function (state, textAfter) { - var cx = state.context; - if (!cx) return CodeMirror.Pass; - var closing = textAfter.charAt(0) == cx.type; - if (cx.align) return cx.col + (closing ? 0 : 1); - else return cx.indent + (closing ? 0 : config.indentUnit); - }, - - blockCommentStart: '/*', - blockCommentEnd: '*/', - lineComment: support.commentSlashSlash - ? '//' - : support.commentHash - ? '#' - : '--', - closeBrackets: '()[]{}\'\'""``', - }; - }); + blockCommentStart: "/*", + blockCommentEnd: "*/", + lineComment: support.commentSlashSlash ? "//" : support.commentHash ? "#" : "--", + closeBrackets: "()[]{}''\"\"``", + config: parserConfig + }; +}); // `identifier` function hookIdentifier(stream) { // MySQL/MariaDB identifiers - // ref: http://dev.mysql.com/doc/refman/5.6/en/identifier-qualifiers.html + // ref: https://dev.mysql.com/doc/refman/8.0/en/identifier-qualifiers.html var ch; while ((ch = stream.next()) != null) { - if (ch == '`' && !stream.eat('`')) return 'variable-2'; + if (ch == "`" && !stream.eat("`")) return "variable-2"; } stream.backUp(stream.current().length - 1); - return stream.eatWhile(/\w/) ? 'variable-2' : null; + return stream.eatWhile(/\w/) ? "variable-2" : null; } // "identifier" @@ -267,10 +229,10 @@ // ref: http://sqlite.org/lang_keywords.html var ch; while ((ch = stream.next()) != null) { - if (ch == '"' && !stream.eat('"')) return 'variable-2'; + if (ch == "\"" && !stream.eat("\"")) return "variable-2"; } stream.backUp(stream.current().length - 1); - return stream.eatWhile(/\w/) ? 'variable-2' : null; + return stream.eatWhile(/\w/) ? "variable-2" : null; } // variable token @@ -278,309 +240,255 @@ // variables // @@prefix.varName @varName // varName can be quoted with ` or ' or " - // ref: http://dev.mysql.com/doc/refman/5.5/en/user-variables.html - if (stream.eat('@')) { - stream.match(/^session\./); - stream.match(/^local\./); - stream.match(/^global\./); + // ref: https://dev.mysql.com/doc/refman/8.0/en/user-variables.html + if (stream.eat("@")) { + stream.match('session.'); + stream.match('local.'); + stream.match('global.'); } if (stream.eat("'")) { stream.match(/^.*'/); - return 'variable-2'; + return "variable-2"; } else if (stream.eat('"')) { stream.match(/^.*"/); - return 'variable-2'; - } else if (stream.eat('`')) { + return "variable-2"; + } else if (stream.eat("`")) { stream.match(/^.*`/); - return 'variable-2'; + return "variable-2"; } else if (stream.match(/^[0-9a-zA-Z$\.\_]+/)) { - return 'variable-2'; + return "variable-2"; } return null; - } + }; // short client keyword token function hookClient(stream) { // \N means NULL - // ref: http://dev.mysql.com/doc/refman/5.5/en/null-values.html - if (stream.eat('N')) { - return 'atom'; + // ref: https://dev.mysql.com/doc/refman/8.0/en/null-values.html + if (stream.eat("N")) { + return "atom"; } // \g, etc - // ref: http://dev.mysql.com/doc/refman/5.5/en/mysql-commands.html - return stream.match(/^[a-zA-Z.#!?]/) ? 'variable-2' : null; + // ref: https://dev.mysql.com/doc/refman/8.0/en/mysql-commands.html + return stream.match(/^[a-zA-Z.#!?]/) ? "variable-2" : null; } // these keywords are used by all SQL dialects (however, a mode can still overwrite it) - var sqlKeywords = - 'alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit '; + var sqlKeywords = "alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit "; // turn a space-separated list into an array function set(str) { - var obj = {}, - words = str.split(' '); + var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } - var defaultBuiltin = - 'bool boolean bit blob enum long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision real date datetime year unsigned signed decimal numeric'; + var defaultBuiltin = "bool boolean bit blob enum long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision real date datetime year unsigned signed decimal numeric" - // A generic SQL Mode. It's not a standard, it just try to support what is generally supported - CodeMirror.defineMIME('text/x-sql', { - name: 'sql', - keywords: set(sqlKeywords + 'begin'), + // A generic SQL Mode. It's not a standard, it just tries to support what is generally supported + CodeMirror.defineMIME("text/x-sql", { + name: "sql", + keywords: set(sqlKeywords + "begin"), builtin: set(defaultBuiltin), - atoms: set('false true null unknown'), - dateSQL: set('date time timestamp'), - support: set('ODBCdotTable doubleQuote binaryNumber hexNumber'), + atoms: set("false true null unknown"), + dateSQL: set("date time timestamp"), + support: set("doubleQuote binaryNumber hexNumber") }); - CodeMirror.defineMIME('text/x-mssql', { - name: 'sql', - client: set( - '$partition binary_checksum checksum connectionproperty context_info current_request_id error_line error_message error_number error_procedure error_severity error_state formatmessage get_filestream_transaction_context getansinull host_id host_name isnull isnumeric min_active_rowversion newid newsequentialid rowcount_big xact_state object_id', - ), - keywords: set( - sqlKeywords + - 'begin trigger proc view index for add constraint key primary foreign collate clustered nonclustered declare exec go if use index holdlock nolock nowait paglock readcommitted readcommittedlock readpast readuncommitted repeatableread rowlock serializable snapshot tablock tablockx updlock with', - ), - builtin: set( - 'bigint numeric bit smallint decimal smallmoney int tinyint money float real char varchar text nchar nvarchar ntext binary varbinary image cursor timestamp hierarchyid uniqueidentifier sql_variant xml table ', - ), - atoms: set( - 'is not null like and or in left right between inner outer join all any some cross unpivot pivot exists', - ), + CodeMirror.defineMIME("text/x-mssql", { + name: "sql", + client: set("$partition binary_checksum checksum connectionproperty context_info current_request_id error_line error_message error_number error_procedure error_severity error_state formatmessage get_filestream_transaction_context getansinull host_id host_name isnull isnumeric min_active_rowversion newid newsequentialid rowcount_big xact_state object_id"), + keywords: set(sqlKeywords + "begin trigger proc view index for add constraint key primary foreign collate clustered nonclustered declare exec go if use index holdlock nolock nowait paglock readcommitted readcommittedlock readpast readuncommitted repeatableread rowlock serializable snapshot tablock tablockx updlock with"), + builtin: set("bigint numeric bit smallint decimal smallmoney int tinyint money float real char varchar text nchar nvarchar ntext binary varbinary image cursor timestamp hierarchyid uniqueidentifier sql_variant xml table "), + atoms: set("is not null like and or in left right between inner outer join all any some cross unpivot pivot exists"), operatorChars: /^[*+\-%<>!=^\&|\/]/, brackets: /^[\{}\(\)]/, punctuation: /^[;.,:/]/, backslashStringEscapes: false, - dateSQL: set('date datetimeoffset datetime2 smalldatetime datetime time'), + dateSQL: set("date datetimeoffset datetime2 smalldatetime datetime time"), hooks: { - '@': hookVar, - }, + "@": hookVar + } }); - CodeMirror.defineMIME('text/x-mysql', { - name: 'sql', - client: set( - 'charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee', - ), - keywords: set( - sqlKeywords + - 'accessible action add after algorithm all analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general get global grant grants group group_concat handler hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show signal slave slow smallint snapshot soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views warnings when while with work write xa xor year_month zerofill begin do then else loop repeat', - ), - builtin: set( - 'bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric', - ), - atoms: set('false true null unknown'), + CodeMirror.defineMIME("text/x-mysql", { + name: "sql", + client: set("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"), + keywords: set(sqlKeywords + "accessible action add after algorithm all analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general get global grant grants group group_concat handler hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show signal slave slow smallint snapshot soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"), + builtin: set("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"), + atoms: set("false true null unknown"), operatorChars: /^[*+\-%<>!=&|^]/, - dateSQL: set('date time timestamp'), - support: set( - 'ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired', - ), + dateSQL: set("date time timestamp"), + support: set("decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"), hooks: { - '@': hookVar, - '`': hookIdentifier, - '\\': hookClient, - }, + "@": hookVar, + "`": hookIdentifier, + "\\": hookClient + } }); - CodeMirror.defineMIME('text/x-mariadb', { - name: 'sql', - client: set( - 'charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee', - ), - keywords: set( - sqlKeywords + - 'accessible action add after algorithm all always analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general generated get global grant grants group groupby_concat handler hard hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password persistent phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show shutdown signal slave slow smallint snapshot soft soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views virtual warnings when while with work write xa xor year_month zerofill begin do then else loop repeat', - ), - builtin: set( - 'bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric', - ), - atoms: set('false true null unknown'), + CodeMirror.defineMIME("text/x-mariadb", { + name: "sql", + client: set("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"), + keywords: set(sqlKeywords + "accessible action add after algorithm all always analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general generated get global grant grants group group_concat handler hard hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password persistent phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show shutdown signal slave slow smallint snapshot soft soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views virtual warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"), + builtin: set("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"), + atoms: set("false true null unknown"), operatorChars: /^[*+\-%<>!=&|^]/, - dateSQL: set('date time timestamp'), - support: set( - 'ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired', - ), + dateSQL: set("date time timestamp"), + support: set("decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"), hooks: { - '@': hookVar, - '`': hookIdentifier, - '\\': hookClient, - }, + "@": hookVar, + "`": hookIdentifier, + "\\": hookClient + } }); // provided by the phpLiteAdmin project - phpliteadmin.org - CodeMirror.defineMIME('text/x-sqlite', { - name: 'sql', + CodeMirror.defineMIME("text/x-sqlite", { + name: "sql", // commands of the official SQLite client, ref: https://www.sqlite.org/cli.html#dotcmd - client: set( - 'auth backup bail binary changes check clone databases dbinfo dump echo eqp exit explain fullschema headers help import imposter indexes iotrace limit lint load log mode nullvalue once open output print prompt quit read restore save scanstats schema separator session shell show stats system tables testcase timeout timer trace vfsinfo vfslist vfsname width', - ), + client: set("auth backup bail binary changes check clone databases dbinfo dump echo eqp exit explain fullschema headers help import imposter indexes iotrace limit lint load log mode nullvalue once open output print prompt quit read restore save scanstats schema separator session shell show stats system tables testcase timeout timer trace vfsinfo vfslist vfsname width"), // ref: http://sqlite.org/lang_keywords.html - keywords: set( - sqlKeywords + - 'abort action add after all analyze attach autoincrement before begin cascade case cast check collate column commit conflict constraint cross current_date current_time current_timestamp database default deferrable deferred detach each else end escape except exclusive exists explain fail for foreign full glob if ignore immediate index indexed initially inner instead intersect isnull key left limit match natural no notnull null of offset outer plan pragma primary query raise recursive references regexp reindex release rename replace restrict right rollback row savepoint temp temporary then to transaction trigger unique using vacuum view virtual when with without', - ), + keywords: set(sqlKeywords + "abort action add after all analyze attach autoincrement before begin cascade case cast check collate column commit conflict constraint cross current_date current_time current_timestamp database default deferrable deferred detach each else end escape except exclusive exists explain fail for foreign full glob if ignore immediate index indexed initially inner instead intersect isnull key left limit match natural no notnull null of offset outer plan pragma primary query raise recursive references regexp reindex release rename replace restrict right rollback row savepoint temp temporary then to transaction trigger unique using vacuum view virtual when with without"), // SQLite is weakly typed, ref: http://sqlite.org/datatype3.html. This is just a list of some common types. - builtin: set( - 'bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text clob bigint int int2 int8 integer float double char varchar date datetime year unsigned signed numeric real', - ), + builtin: set("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text clob bigint int int2 int8 integer float double char varchar date datetime year unsigned signed numeric real"), // ref: http://sqlite.org/syntax/literal-value.html - atoms: set('null current_date current_time current_timestamp'), + atoms: set("null current_date current_time current_timestamp"), // ref: http://sqlite.org/lang_expr.html#binaryops operatorChars: /^[*+\-%<>!=&|/~]/, // SQLite is weakly typed, ref: http://sqlite.org/datatype3.html. This is just a list of some common types. - dateSQL: set('date time timestamp datetime'), - support: set('decimallessFloat zerolessFloat'), - identifierQuote: '"', //ref: http://sqlite.org/lang_keywords.html + dateSQL: set("date time timestamp datetime"), + support: set("decimallessFloat zerolessFloat"), + identifierQuote: "\"", //ref: http://sqlite.org/lang_keywords.html hooks: { // bind-parameters ref:http://sqlite.org/lang_expr.html#varparam - '@': hookVar, - ':': hookVar, - '?': hookVar, - $: hookVar, + "@": hookVar, + ":": hookVar, + "?": hookVar, + "$": hookVar, // The preferred way to escape Identifiers is using double quotes, ref: http://sqlite.org/lang_keywords.html - '"': hookIdentifierDoublequote, - // there is also support for backtics, ref: http://sqlite.org/lang_keywords.html - '`': hookIdentifier, - }, + "\"": hookIdentifierDoublequote, + // there is also support for backticks, ref: http://sqlite.org/lang_keywords.html + "`": hookIdentifier + } }); // the query language used by Apache Cassandra is called CQL, but this mime type // is called Cassandra to avoid confusion with Contextual Query Language - CodeMirror.defineMIME('text/x-cassandra', { - name: 'sql', - client: {}, - keywords: set( - 'add all allow alter and any apply as asc authorize batch begin by clustering columnfamily compact consistency count create custom delete desc distinct drop each_quorum exists filtering from grant if in index insert into key keyspace keyspaces level limit local_one local_quorum modify nan norecursive nosuperuser not of on one order password permission permissions primary quorum rename revoke schema select set storage superuser table three to token truncate ttl two type unlogged update use user users using values where with writetime', - ), - builtin: set( - 'ascii bigint blob boolean counter decimal double float frozen inet int list map static text timestamp timeuuid tuple uuid varchar varint', - ), - atoms: set('false true infinity NaN'), + CodeMirror.defineMIME("text/x-cassandra", { + name: "sql", + client: { }, + keywords: set("add all allow alter and any apply as asc authorize batch begin by clustering columnfamily compact consistency count create custom delete desc distinct drop each_quorum exists filtering from grant if in index insert into key keyspace keyspaces level limit local_one local_quorum modify nan norecursive nosuperuser not of on one order password permission permissions primary quorum rename revoke schema select set storage superuser table three to token truncate ttl two type unlogged update use user users using values where with writetime"), + builtin: set("ascii bigint blob boolean counter decimal double float frozen inet int list map static text timestamp timeuuid tuple uuid varchar varint"), + atoms: set("false true infinity NaN"), operatorChars: /^[<>=]/, - dateSQL: {}, - support: set('commentSlashSlash decimallessFloat'), - hooks: {}, + dateSQL: { }, + support: set("commentSlashSlash decimallessFloat"), + hooks: { } }); // this is based on Peter Raganitsch's 'plsql' mode - CodeMirror.defineMIME('text/x-plsql', { - name: 'sql', - client: set( - 'appinfo arraysize autocommit autoprint autorecovery autotrace blockterminator break btitle cmdsep colsep compatibility compute concat copycommit copytypecheck define describe echo editfile embedded escape exec execute feedback flagger flush heading headsep instance linesize lno loboffset logsource long longchunksize markup native newpage numformat numwidth pagesize pause pno recsep recsepchar release repfooter repheader serveroutput shiftinout show showmode size spool sqlblanklines sqlcase sqlcode sqlcontinue sqlnumber sqlpluscompatibility sqlprefix sqlprompt sqlterminator suffix tab term termout time timing trimout trimspool ttitle underline verify version wrap', - ), - keywords: set( - 'abort accept access add all alter and any array arraylen as asc assert assign at attributes audit authorization avg base_table begin between binary_integer body boolean by case cast char char_base check close cluster clusters colauth column comment commit compress connect connected constant constraint crash create current currval cursor data_base database date dba deallocate debugoff debugon decimal declare default definition delay delete desc digits dispose distinct do drop else elseif elsif enable end entry escape exception exception_init exchange exclusive exists exit external fast fetch file for force form from function generic goto grant group having identified if immediate in increment index indexes indicator initial initrans insert interface intersect into is key level library like limited local lock log logging long loop master maxextents maxtrans member minextents minus mislabel mode modify multiset new next no noaudit nocompress nologging noparallel not nowait number_base object of off offline on online only open option or order out package parallel partition pctfree pctincrease pctused pls_integer positive positiven pragma primary prior private privileges procedure public raise range raw read rebuild record ref references refresh release rename replace resource restrict return returning returns reverse revoke rollback row rowid rowlabel rownum rows run savepoint schema segment select separate session set share snapshot some space split sql start statement storage subtype successful synonym tabauth table tables tablespace task terminate then to trigger truncate type union unique unlimited unrecoverable unusable update use using validate value values variable view views when whenever where while with work', - ), - builtin: set( - 'abs acos add_months ascii asin atan atan2 average bfile bfilename bigserial bit blob ceil character chartorowid chr clob concat convert cos cosh count dec decode deref dual dump dup_val_on_index empty error exp false float floor found glb greatest hextoraw initcap instr instrb int integer isopen last_day least length lengthb ln lower lpad ltrim lub make_ref max min mlslabel mod months_between natural naturaln nchar nclob new_time next_day nextval nls_charset_decl_len nls_charset_id nls_charset_name nls_initcap nls_lower nls_sort nls_upper nlssort no_data_found notfound null number numeric nvarchar2 nvl others power rawtohex real reftohex round rowcount rowidtochar rowtype rpad rtrim serial sign signtype sin sinh smallint soundex sqlcode sqlerrm sqrt stddev string substr substrb sum sysdate tan tanh to_char text to_date to_label to_multi_byte to_number to_single_byte translate true trunc uid unlogged upper user userenv varchar varchar2 variance varying vsize xml', - ), + CodeMirror.defineMIME("text/x-plsql", { + name: "sql", + client: set("appinfo arraysize autocommit autoprint autorecovery autotrace blockterminator break btitle cmdsep colsep compatibility compute concat copycommit copytypecheck define describe echo editfile embedded escape exec execute feedback flagger flush heading headsep instance linesize lno loboffset logsource long longchunksize markup native newpage numformat numwidth pagesize pause pno recsep recsepchar release repfooter repheader serveroutput shiftinout show showmode size spool sqlblanklines sqlcase sqlcode sqlcontinue sqlnumber sqlpluscompatibility sqlprefix sqlprompt sqlterminator suffix tab term termout time timing trimout trimspool ttitle underline verify version wrap"), + keywords: set("abort accept access add all alter and any array arraylen as asc assert assign at attributes audit authorization avg base_table begin between binary_integer body boolean by case cast char char_base check close cluster clusters colauth column comment commit compress connect connected constant constraint crash create current currval cursor data_base database date dba deallocate debugoff debugon decimal declare default definition delay delete desc digits dispose distinct do drop else elseif elsif enable end entry escape exception exception_init exchange exclusive exists exit external fast fetch file for force form from function generic goto grant group having identified if immediate in increment index indexes indicator initial initrans insert interface intersect into is key level library like limited local lock log logging long loop master maxextents maxtrans member minextents minus mislabel mode modify multiset new next no noaudit nocompress nologging noparallel not nowait number_base object of off offline on online only open option or order out package parallel partition pctfree pctincrease pctused pls_integer positive positiven pragma primary prior private privileges procedure public raise range raw read rebuild record ref references refresh release rename replace resource restrict return returning returns reverse revoke rollback row rowid rowlabel rownum rows run savepoint schema segment select separate session set share snapshot some space split sql start statement storage subtype successful synonym tabauth table tables tablespace task terminate then to trigger truncate type union unique unlimited unrecoverable unusable update use using validate value values variable view views when whenever where while with work"), + builtin: set("abs acos add_months ascii asin atan atan2 average bfile bfilename bigserial bit blob ceil character chartorowid chr clob concat convert cos cosh count dec decode deref dual dump dup_val_on_index empty error exp false float floor found glb greatest hextoraw initcap instr instrb int integer isopen last_day least length lengthb ln lower lpad ltrim lub make_ref max min mlslabel mod months_between natural naturaln nchar nclob new_time next_day nextval nls_charset_decl_len nls_charset_id nls_charset_name nls_initcap nls_lower nls_sort nls_upper nlssort no_data_found notfound null number numeric nvarchar2 nvl others power rawtohex real reftohex round rowcount rowidtochar rowtype rpad rtrim serial sign signtype sin sinh smallint soundex sqlcode sqlerrm sqrt stddev string substr substrb sum sysdate tan tanh to_char text to_date to_label to_multi_byte to_number to_single_byte translate true trunc uid unlogged upper user userenv varchar varchar2 variance varying vsize xml"), operatorChars: /^[*\/+\-%<>!=~]/, - dateSQL: set('date time timestamp'), - support: set('doubleQuote nCharCast zerolessFloat binaryNumber hexNumber'), + dateSQL: set("date time timestamp"), + support: set("doubleQuote nCharCast zerolessFloat binaryNumber hexNumber") }); // Created to support specific hive keywords - CodeMirror.defineMIME('text/x-hive', { - name: 'sql', - keywords: set( - 'select alter $elem$ $key$ $value$ add after all analyze and archive as asc before between binary both bucket buckets by cascade case cast change cluster clustered clusterstatus collection column columns comment compute concatenate continue create cross cursor data database databases dbproperties deferred delete delimited desc describe directory disable distinct distribute drop else enable end escaped exclusive exists explain export extended external fetch fields fileformat first format formatted from full function functions grant group having hold_ddltime idxproperties if import in index indexes inpath inputdriver inputformat insert intersect into is items join keys lateral left like limit lines load local location lock locks mapjoin materialized minus msck no_drop nocompress not of offline on option or order out outer outputdriver outputformat overwrite partition partitioned partitions percent plus preserve procedure purge range rcfile read readonly reads rebuild recordreader recordwriter recover reduce regexp rename repair replace restrict revoke right rlike row schema schemas semi sequencefile serde serdeproperties set shared show show_database sort sorted ssl statistics stored streamtable table tables tablesample tblproperties temporary terminated textfile then tmp to touch transform trigger unarchive undo union uniquejoin unlock update use using utc utc_tmestamp view when where while with admin authorization char compact compactions conf cube current current_date current_timestamp day decimal defined dependency directories elem_type exchange file following for grouping hour ignore inner interval jar less logical macro minute month more none noscan over owner partialscan preceding pretty principals protection reload rewrite role roles rollup rows second server sets skewed transactions truncate unbounded unset uri user values window year', - ), - builtin: set( - 'bool boolean long timestamp tinyint smallint bigint int float double date datetime unsigned string array struct map uniontype key_type utctimestamp value_type varchar', - ), - atoms: set('false true null unknown'), + CodeMirror.defineMIME("text/x-hive", { + name: "sql", + keywords: set("select alter $elem$ $key$ $value$ add after all analyze and archive as asc before between binary both bucket buckets by cascade case cast change cluster clustered clusterstatus collection column columns comment compute concatenate continue create cross cursor data database databases dbproperties deferred delete delimited desc describe directory disable distinct distribute drop else enable end escaped exclusive exists explain export extended external fetch fields fileformat first format formatted from full function functions grant group having hold_ddltime idxproperties if import in index indexes inpath inputdriver inputformat insert intersect into is items join keys lateral left like limit lines load local location lock locks mapjoin materialized minus msck no_drop nocompress not of offline on option or order out outer outputdriver outputformat overwrite partition partitioned partitions percent plus preserve procedure purge range rcfile read readonly reads rebuild recordreader recordwriter recover reduce regexp rename repair replace restrict revoke right rlike row schema schemas semi sequencefile serde serdeproperties set shared show show_database sort sorted ssl statistics stored streamtable table tables tablesample tblproperties temporary terminated textfile then tmp to touch transform trigger unarchive undo union uniquejoin unlock update use using utc utc_tmestamp view when where while with admin authorization char compact compactions conf cube current current_date current_timestamp day decimal defined dependency directories elem_type exchange file following for grouping hour ignore inner interval jar less logical macro minute month more none noscan over owner partialscan preceding pretty principals protection reload rewrite role roles rollup rows second server sets skewed transactions truncate unbounded unset uri user values window year"), + builtin: set("bool boolean long timestamp tinyint smallint bigint int float double date datetime unsigned string array struct map uniontype key_type utctimestamp value_type varchar"), + atoms: set("false true null unknown"), operatorChars: /^[*+\-%<>!=]/, - dateSQL: set('date timestamp'), - support: set('ODBCdotTable doubleQuote binaryNumber hexNumber'), + dateSQL: set("date timestamp"), + support: set("doubleQuote binaryNumber hexNumber") }); - CodeMirror.defineMIME('text/x-pgsql', { - name: 'sql', - client: set('source'), + CodeMirror.defineMIME("text/x-pgsql", { + name: "sql", + client: set("source"), // For PostgreSQL - https://www.postgresql.org/docs/11/sql-keywords-appendix.html // For pl/pgsql lang - https://github.com/postgres/postgres/blob/REL_11_2/src/pl/plpgsql/src/pl_scanner.c - keywords: set( - sqlKeywords + - 'a abort abs absent absolute access according action ada add admin after aggregate alias all allocate also alter always analyse analyze and any are array array_agg array_max_cardinality as asc asensitive assert assertion assignment asymmetric at atomic attach attribute attributes authorization avg backward base64 before begin begin_frame begin_partition bernoulli between bigint binary bit bit_length blob blocked bom boolean both breadth by c cache call called cardinality cascade cascaded case cast catalog catalog_name ceil ceiling chain char char_length character character_length character_set_catalog character_set_name character_set_schema characteristics characters check checkpoint class class_origin clob close cluster coalesce cobol collate collation collation_catalog collation_name collation_schema collect column column_name columns command_function command_function_code comment comments commit committed concurrently condition condition_number configuration conflict connect connection connection_name constant constraint constraint_catalog constraint_name constraint_schema constraints constructor contains content continue control conversion convert copy corr corresponding cost count covar_pop covar_samp create cross csv cube cume_dist current current_catalog current_date current_default_transform_group current_path current_role current_row current_schema current_time current_timestamp current_transform_group_for_type current_user cursor cursor_name cycle data database datalink datatype date datetime_interval_code datetime_interval_precision day db deallocate debug dec decimal declare default defaults deferrable deferred defined definer degree delete delimiter delimiters dense_rank depends depth deref derived desc describe descriptor detach detail deterministic diagnostics dictionary disable discard disconnect dispatch distinct dlnewcopy dlpreviouscopy dlurlcomplete dlurlcompleteonly dlurlcompletewrite dlurlpath dlurlpathonly dlurlpathwrite dlurlscheme dlurlserver dlvalue do document domain double drop dump dynamic dynamic_function dynamic_function_code each element else elseif elsif empty enable encoding encrypted end end_frame end_partition endexec enforced enum equals errcode error escape event every except exception exclude excluding exclusive exec execute exists exit exp explain expression extension external extract false family fetch file filter final first first_value flag float floor following for force foreach foreign fortran forward found frame_row free freeze from fs full function functions fusion g general generated get global go goto grant granted greatest group grouping groups handler having header hex hierarchy hint hold hour id identity if ignore ilike immediate immediately immutable implementation implicit import in include including increment indent index indexes indicator info inherit inherits initially inline inner inout input insensitive insert instance instantiable instead int integer integrity intersect intersection interval into invoker is isnull isolation join k key key_member key_type label lag language large last last_value lateral lead leading leakproof least left length level library like like_regex limit link listen ln load local localtime localtimestamp location locator lock locked log logged loop lower m map mapping match matched materialized max max_cardinality maxvalue member merge message message_length message_octet_length message_text method min minute minvalue mod mode modifies module month more move multiset mumps name names namespace national natural nchar nclob nesting new next nfc nfd nfkc nfkd nil no none normalize normalized not nothing notice notify notnull nowait nth_value ntile null nullable nullif nulls number numeric object occurrences_regex octet_length octets of off offset oids old on only open operator option options or order ordering ordinality others out outer output over overlaps overlay overriding owned owner p pad parallel parameter parameter_mode parameter_name parameter_ordinal_position parameter_specific_catalog parameter_specific_name parameter_specific_schema parser partial partition pascal passing passthrough password path percent percent_rank percentile_cont percentile_disc perform period permission pg_context pg_datatype_name pg_exception_context pg_exception_detail pg_exception_hint placing plans pli policy portion position position_regex power precedes preceding precision prepare prepared preserve primary print_strict_params prior privileges procedural procedure procedures program public publication query quote raise range rank read reads real reassign recheck recovery recursive ref references referencing refresh regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy regr_syy reindex relative release rename repeatable replace replica requiring reset respect restart restore restrict result result_oid return returned_cardinality returned_length returned_octet_length returned_sqlstate returning returns reverse revoke right role rollback rollup routine routine_catalog routine_name routine_schema routines row row_count row_number rows rowtype rule savepoint scale schema schema_name schemas scope scope_catalog scope_name scope_schema scroll search second section security select selective self sensitive sequence sequences serializable server server_name session session_user set setof sets share show similar simple size skip slice smallint snapshot some source space specific specific_name specifictype sql sqlcode sqlerror sqlexception sqlstate sqlwarning sqrt stable stacked standalone start state statement static statistics stddev_pop stddev_samp stdin stdout storage strict strip structure style subclass_origin submultiset subscription substring substring_regex succeeds sum symmetric sysid system system_time system_user t table table_name tables tablesample tablespace temp template temporary text then ties time timestamp timezone_hour timezone_minute to token top_level_count trailing transaction transaction_active transactions_committed transactions_rolled_back transform transforms translate translate_regex translation treat trigger trigger_catalog trigger_name trigger_schema trim trim_array true truncate trusted type types uescape unbounded uncommitted under unencrypted union unique unknown unlink unlisten unlogged unnamed unnest until untyped update upper uri usage use_column use_variable user user_defined_type_catalog user_defined_type_code user_defined_type_name user_defined_type_schema using vacuum valid validate validator value value_of values var_pop var_samp varbinary varchar variable_conflict variadic varying verbose version versioning view views volatile warning when whenever where while whitespace width_bucket window with within without work wrapper write xml xmlagg xmlattributes xmlbinary xmlcast xmlcomment xmlconcat xmldeclaration xmldocument xmlelement xmlexists xmlforest xmliterate xmlnamespaces xmlparse xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltext xmlvalidate year yes zone', - ), + keywords: set(sqlKeywords + "a abort abs absent absolute access according action ada add admin after aggregate alias all allocate also alter always analyse analyze and any are array array_agg array_max_cardinality as asc asensitive assert assertion assignment asymmetric at atomic attach attribute attributes authorization avg backward base64 before begin begin_frame begin_partition bernoulli between bigint binary bit bit_length blob blocked bom boolean both breadth by c cache call called cardinality cascade cascaded case cast catalog catalog_name ceil ceiling chain char char_length character character_length character_set_catalog character_set_name character_set_schema characteristics characters check checkpoint class class_origin clob close cluster coalesce cobol collate collation collation_catalog collation_name collation_schema collect column column_name columns command_function command_function_code comment comments commit committed concurrently condition condition_number configuration conflict connect connection connection_name constant constraint constraint_catalog constraint_name constraint_schema constraints constructor contains content continue control conversion convert copy corr corresponding cost count covar_pop covar_samp create cross csv cube cume_dist current current_catalog current_date current_default_transform_group current_path current_role current_row current_schema current_time current_timestamp current_transform_group_for_type current_user cursor cursor_name cycle data database datalink datatype date datetime_interval_code datetime_interval_precision day db deallocate debug dec decimal declare default defaults deferrable deferred defined definer degree delete delimiter delimiters dense_rank depends depth deref derived desc describe descriptor detach detail deterministic diagnostics dictionary disable discard disconnect dispatch distinct dlnewcopy dlpreviouscopy dlurlcomplete dlurlcompleteonly dlurlcompletewrite dlurlpath dlurlpathonly dlurlpathwrite dlurlscheme dlurlserver dlvalue do document domain double drop dump dynamic dynamic_function dynamic_function_code each element else elseif elsif empty enable encoding encrypted end end_frame end_partition endexec enforced enum equals errcode error escape event every except exception exclude excluding exclusive exec execute exists exit exp explain expression extension external extract false family fetch file filter final first first_value flag float floor following for force foreach foreign fortran forward found frame_row free freeze from fs full function functions fusion g general generated get global go goto grant granted greatest group grouping groups handler having header hex hierarchy hint hold hour id identity if ignore ilike immediate immediately immutable implementation implicit import in include including increment indent index indexes indicator info inherit inherits initially inline inner inout input insensitive insert instance instantiable instead int integer integrity intersect intersection interval into invoker is isnull isolation join k key key_member key_type label lag language large last last_value lateral lead leading leakproof least left length level library like like_regex limit link listen ln load local localtime localtimestamp location locator lock locked log logged loop lower m map mapping match matched materialized max max_cardinality maxvalue member merge message message_length message_octet_length message_text method min minute minvalue mod mode modifies module month more move multiset mumps name names namespace national natural nchar nclob nesting new next nfc nfd nfkc nfkd nil no none normalize normalized not nothing notice notify notnull nowait nth_value ntile null nullable nullif nulls number numeric object occurrences_regex octet_length octets of off offset oids old on only open operator option options or order ordering ordinality others out outer output over overlaps overlay overriding owned owner p pad parallel parameter parameter_mode parameter_name parameter_ordinal_position parameter_specific_catalog parameter_specific_name parameter_specific_schema parser partial partition pascal passing passthrough password path percent percent_rank percentile_cont percentile_disc perform period permission pg_context pg_datatype_name pg_exception_context pg_exception_detail pg_exception_hint placing plans pli policy portion position position_regex power precedes preceding precision prepare prepared preserve primary print_strict_params prior privileges procedural procedure procedures program public publication query quote raise range rank read reads real reassign recheck recovery recursive ref references referencing refresh regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy regr_syy reindex relative release rename repeatable replace replica requiring reset respect restart restore restrict result result_oid return returned_cardinality returned_length returned_octet_length returned_sqlstate returning returns reverse revoke right role rollback rollup routine routine_catalog routine_name routine_schema routines row row_count row_number rows rowtype rule savepoint scale schema schema_name schemas scope scope_catalog scope_name scope_schema scroll search second section security select selective self sensitive sequence sequences serializable server server_name session session_user set setof sets share show similar simple size skip slice smallint snapshot some source space specific specific_name specifictype sql sqlcode sqlerror sqlexception sqlstate sqlwarning sqrt stable stacked standalone start state statement static statistics stddev_pop stddev_samp stdin stdout storage strict strip structure style subclass_origin submultiset subscription substring substring_regex succeeds sum symmetric sysid system system_time system_user t table table_name tables tablesample tablespace temp template temporary text then ties time timestamp timezone_hour timezone_minute to token top_level_count trailing transaction transaction_active transactions_committed transactions_rolled_back transform transforms translate translate_regex translation treat trigger trigger_catalog trigger_name trigger_schema trim trim_array true truncate trusted type types uescape unbounded uncommitted under unencrypted union unique unknown unlink unlisten unlogged unnamed unnest until untyped update upper uri usage use_column use_variable user user_defined_type_catalog user_defined_type_code user_defined_type_name user_defined_type_schema using vacuum valid validate validator value value_of values var_pop var_samp varbinary varchar variable_conflict variadic varying verbose version versioning view views volatile warning when whenever where while whitespace width_bucket window with within without work wrapper write xml xmlagg xmlattributes xmlbinary xmlcast xmlcomment xmlconcat xmldeclaration xmldocument xmlelement xmlexists xmlforest xmliterate xmlnamespaces xmlparse xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltext xmlvalidate year yes zone"), // https://www.postgresql.org/docs/11/datatype.html - builtin: set( - 'bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float8 inet integer int int4 interval json jsonb line lseg macaddr macaddr8 money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time without zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml', - ), - atoms: set('false true null unknown'), + builtin: set("bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float8 inet integer int int4 interval json jsonb line lseg macaddr macaddr8 money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time zone timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml"), + atoms: set("false true null unknown"), operatorChars: /^[*\/+\-%<>!=&|^\/#@?~]/, backslashStringEscapes: false, - dateSQL: set('date time timestamp'), - support: set( - 'ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast escapeConstant', - ), + dateSQL: set("date time timestamp"), + support: set("decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast escapeConstant") }); // Google's SQL-like query language, GQL - CodeMirror.defineMIME('text/x-gql', { - name: 'sql', - keywords: set( - 'ancestor and asc by contains desc descendant distinct from group has in is limit offset on order select superset where', - ), - atoms: set('false true'), - builtin: set( - 'blob datetime first key __key__ string integer double boolean null', - ), - operatorChars: /^[*+\-%<>!=]/, + CodeMirror.defineMIME("text/x-gql", { + name: "sql", + keywords: set("ancestor and asc by contains desc descendant distinct from group has in is limit offset on order select superset where"), + atoms: set("false true"), + builtin: set("blob datetime first key __key__ string integer double boolean null"), + operatorChars: /^[*+\-%<>!=]/ }); // Greenplum - CodeMirror.defineMIME('text/x-gpsql', { - name: 'sql', - client: set('source'), + CodeMirror.defineMIME("text/x-gpsql", { + name: "sql", + client: set("source"), //https://github.com/greenplum-db/gpdb/blob/master/src/include/parser/kwlist.h - keywords: set( - 'abort absolute access action active add admin after aggregate all also alter always analyse analyze and any array as asc assertion assignment asymmetric at authorization backward before begin between bigint binary bit boolean both by cache called cascade cascaded case cast chain char character characteristics check checkpoint class close cluster coalesce codegen collate column comment commit committed concurrency concurrently configuration connection constraint constraints contains content continue conversion copy cost cpu_rate_limit create createdb createexttable createrole createuser cross csv cube current current_catalog current_date current_role current_schema current_time current_timestamp current_user cursor cycle data database day deallocate dec decimal declare decode default defaults deferrable deferred definer delete delimiter delimiters deny desc dictionary disable discard distinct distributed do document domain double drop dxl each else enable encoding encrypted end enum errors escape every except exchange exclude excluding exclusive execute exists explain extension external extract false family fetch fields filespace fill filter first float following for force foreign format forward freeze from full function global grant granted greatest group group_id grouping handler hash having header hold host hour identity if ignore ilike immediate immutable implicit in including inclusive increment index indexes inherit inherits initially inline inner inout input insensitive insert instead int integer intersect interval into invoker is isnull isolation join key language large last leading least left level like limit list listen load local localtime localtimestamp location lock log login mapping master match maxvalue median merge minute minvalue missing mode modifies modify month move name names national natural nchar new newline next no nocreatedb nocreateexttable nocreaterole nocreateuser noinherit nologin none noovercommit nosuperuser not nothing notify notnull nowait null nullif nulls numeric object of off offset oids old on only operator option options or order ordered others out outer over overcommit overlaps overlay owned owner parser partial partition partitions passing password percent percentile_cont percentile_disc placing plans position preceding precision prepare prepared preserve primary prior privileges procedural procedure protocol queue quote randomly range read readable reads real reassign recheck recursive ref references reindex reject relative release rename repeatable replace replica reset resource restart restrict returning returns revoke right role rollback rollup rootpartition row rows rule savepoint scatter schema scroll search second security segment select sequence serializable session session_user set setof sets share show similar simple smallint some split sql stable standalone start statement statistics stdin stdout storage strict strip subpartition subpartitions substring superuser symmetric sysid system table tablespace temp template temporary text then threshold ties time timestamp to trailing transaction treat trigger trim true truncate trusted type unbounded uncommitted unencrypted union unique unknown unlisten until update user using vacuum valid validation validator value values varchar variadic varying verbose version view volatile web when where whitespace window with within without work writable write xml xmlattributes xmlconcat xmlelement xmlexists xmlforest xmlparse xmlpi xmlroot xmlserialize year yes zone', - ), - builtin: set( - 'bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float float8 inet integer int int4 interval json jsonb line lseg macaddr macaddr8 money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time without zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml', - ), - atoms: set('false true null unknown'), + keywords: set("abort absolute access action active add admin after aggregate all also alter always analyse analyze and any array as asc assertion assignment asymmetric at authorization backward before begin between bigint binary bit boolean both by cache called cascade cascaded case cast chain char character characteristics check checkpoint class close cluster coalesce codegen collate column comment commit committed concurrency concurrently configuration connection constraint constraints contains content continue conversion copy cost cpu_rate_limit create createdb createexttable createrole createuser cross csv cube current current_catalog current_date current_role current_schema current_time current_timestamp current_user cursor cycle data database day deallocate dec decimal declare decode default defaults deferrable deferred definer delete delimiter delimiters deny desc dictionary disable discard distinct distributed do document domain double drop dxl each else enable encoding encrypted end enum errors escape every except exchange exclude excluding exclusive execute exists explain extension external extract false family fetch fields filespace fill filter first float following for force foreign format forward freeze from full function global grant granted greatest group group_id grouping handler hash having header hold host hour identity if ignore ilike immediate immutable implicit in including inclusive increment index indexes inherit inherits initially inline inner inout input insensitive insert instead int integer intersect interval into invoker is isnull isolation join key language large last leading least left level like limit list listen load local localtime localtimestamp location lock log login mapping master match maxvalue median merge minute minvalue missing mode modifies modify month move name names national natural nchar new newline next no nocreatedb nocreateexttable nocreaterole nocreateuser noinherit nologin none noovercommit nosuperuser not nothing notify notnull nowait null nullif nulls numeric object of off offset oids old on only operator option options or order ordered others out outer over overcommit overlaps overlay owned owner parser partial partition partitions passing password percent percentile_cont percentile_disc placing plans position preceding precision prepare prepared preserve primary prior privileges procedural procedure protocol queue quote randomly range read readable reads real reassign recheck recursive ref references reindex reject relative release rename repeatable replace replica reset resource restart restrict returning returns revoke right role rollback rollup rootpartition row rows rule savepoint scatter schema scroll search second security segment select sequence serializable session session_user set setof sets share show similar simple smallint some split sql stable standalone start statement statistics stdin stdout storage strict strip subpartition subpartitions substring superuser symmetric sysid system table tablespace temp template temporary text then threshold ties time timestamp to trailing transaction treat trigger trim true truncate trusted type unbounded uncommitted unencrypted union unique unknown unlisten until update user using vacuum valid validation validator value values varchar variadic varying verbose version view volatile web when where whitespace window with within without work writable write xml xmlattributes xmlconcat xmlelement xmlexists xmlforest xmlparse xmlpi xmlroot xmlserialize year yes zone"), + builtin: set("bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float float8 inet integer int int4 interval json jsonb line lseg macaddr macaddr8 money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time without zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml"), + atoms: set("false true null unknown"), operatorChars: /^[*+\-%<>!=&|^\/#@?~]/, - dateSQL: set('date time timestamp'), - support: set( - 'ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast', - ), + dateSQL: set("date time timestamp"), + support: set("decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast") }); // Spark SQL - CodeMirror.defineMIME('text/x-sparksql', { - name: 'sql', - keywords: set( - 'add after all alter analyze and anti archive array as asc at between bucket buckets by cache cascade case cast change clear cluster clustered codegen collection column columns comment commit compact compactions compute concatenate cost create cross cube current current_date current_timestamp database databases datata dbproperties defined delete delimited deny desc describe dfs directories distinct distribute drop else end escaped except exchange exists explain export extended external false fields fileformat first following for format formatted from full function functions global grant group grouping having if ignore import in index indexes inner inpath inputformat insert intersect interval into is items join keys last lateral lazy left like limit lines list load local location lock locks logical macro map minus msck natural no not null nulls of on optimize option options or order out outer outputformat over overwrite partition partitioned partitions percent preceding principals purge range recordreader recordwriter recover reduce refresh regexp rename repair replace reset restrict revoke right rlike role roles rollback rollup row rows schema schemas select semi separated serde serdeproperties set sets show skewed sort sorted start statistics stored stratify struct table tables tablesample tblproperties temp temporary terminated then to touch transaction transactions transform true truncate unarchive unbounded uncache union unlock unset use using values view when where window with', - ), - builtin: set( - 'tinyint smallint int bigint boolean float double string binary timestamp decimal array map struct uniontype delimited serde sequencefile textfile rcfile inputformat outputformat', - ), - atoms: set('false true null'), + CodeMirror.defineMIME("text/x-sparksql", { + name: "sql", + keywords: set("add after all alter analyze and anti archive array as asc at between bucket buckets by cache cascade case cast change clear cluster clustered codegen collection column columns comment commit compact compactions compute concatenate cost create cross cube current current_date current_timestamp database databases data dbproperties defined delete delimited deny desc describe dfs directories distinct distribute drop else end escaped except exchange exists explain export extended external false fields fileformat first following for format formatted from full function functions global grant group grouping having if ignore import in index indexes inner inpath inputformat insert intersect interval into is items join keys last lateral lazy left like limit lines list load local location lock locks logical macro map minus msck natural no not null nulls of on optimize option options or order out outer outputformat over overwrite partition partitioned partitions percent preceding principals purge range recordreader recordwriter recover reduce refresh regexp rename repair replace reset restrict revoke right rlike role roles rollback rollup row rows schema schemas select semi separated serde serdeproperties set sets show skewed sort sorted start statistics stored stratify struct table tables tablesample tblproperties temp temporary terminated then to touch transaction transactions transform true truncate unarchive unbounded uncache union unlock unset use using values view when where window with"), + builtin: set("abs acos acosh add_months aggregate and any approx_count_distinct approx_percentile array array_contains array_distinct array_except array_intersect array_join array_max array_min array_position array_remove array_repeat array_sort array_union arrays_overlap arrays_zip ascii asin asinh assert_true atan atan2 atanh avg base64 between bigint bin binary bit_and bit_count bit_get bit_length bit_or bit_xor bool_and bool_or boolean bround btrim cardinality case cast cbrt ceil ceiling char char_length character_length chr coalesce collect_list collect_set concat concat_ws conv corr cos cosh cot count count_if count_min_sketch covar_pop covar_samp crc32 cume_dist current_catalog current_database current_date current_timestamp current_timezone current_user date date_add date_format date_from_unix_date date_part date_sub date_trunc datediff day dayofmonth dayofweek dayofyear decimal decode degrees delimited dense_rank div double e element_at elt encode every exists exp explode explode_outer expm1 extract factorial filter find_in_set first first_value flatten float floor forall format_number format_string from_csv from_json from_unixtime from_utc_timestamp get_json_object getbit greatest grouping grouping_id hash hex hour hypot if ifnull in initcap inline inline_outer input_file_block_length input_file_block_start input_file_name inputformat instr int isnan isnotnull isnull java_method json_array_length json_object_keys json_tuple kurtosis lag last last_day last_value lcase lead least left length levenshtein like ln locate log log10 log1p log2 lower lpad ltrim make_date make_dt_interval make_interval make_timestamp make_ym_interval map map_concat map_entries map_filter map_from_arrays map_from_entries map_keys map_values map_zip_with max max_by md5 mean min min_by minute mod monotonically_increasing_id month months_between named_struct nanvl negative next_day not now nth_value ntile nullif nvl nvl2 octet_length or outputformat overlay parse_url percent_rank percentile percentile_approx pi pmod posexplode posexplode_outer position positive pow power printf quarter radians raise_error rand randn random rank rcfile reflect regexp regexp_extract regexp_extract_all regexp_like regexp_replace repeat replace reverse right rint rlike round row_number rpad rtrim schema_of_csv schema_of_json second sentences sequence sequencefile serde session_window sha sha1 sha2 shiftleft shiftright shiftrightunsigned shuffle sign signum sin sinh size skewness slice smallint some sort_array soundex space spark_partition_id split sqrt stack std stddev stddev_pop stddev_samp str_to_map string struct substr substring substring_index sum tan tanh textfile timestamp timestamp_micros timestamp_millis timestamp_seconds tinyint to_csv to_date to_json to_timestamp to_unix_timestamp to_utc_timestamp transform transform_keys transform_values translate trim trunc try_add try_divide typeof ucase unbase64 unhex uniontype unix_date unix_micros unix_millis unix_seconds unix_timestamp upper uuid var_pop var_samp variance version weekday weekofyear when width_bucket window xpath xpath_boolean xpath_double xpath_float xpath_int xpath_long xpath_number xpath_short xpath_string xxhash64 year zip_with"), + atoms: set("false true null"), operatorChars: /^[*\/+\-%<>!=~&|^]/, - dateSQL: set('date time timestamp'), - support: set('ODBCdotTable doubleQuote zerolessFloat'), + dateSQL: set("date time timestamp"), + support: set("doubleQuote zerolessFloat") }); // Esper - CodeMirror.defineMIME('text/x-esper', { - name: 'sql', - client: set('source'), + CodeMirror.defineMIME("text/x-esper", { + name: "sql", + client: set("source"), // http://www.espertech.com/esper/release-5.5.0/esper-reference/html/appendix_keywords.html - keywords: set( - 'alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit after all and as at asc avedev avg between by case cast coalesce count create current_timestamp day days delete define desc distinct else end escape events every exists false first from full group having hour hours in inner insert instanceof into irstream is istream join last lastweekday left limit like max match_recognize matches median measures metadatasql min minute minutes msec millisecond milliseconds not null offset on or order outer output partition pattern prev prior regexp retain-union retain-intersection right rstream sec second seconds select set some snapshot sql stddev sum then true unidirectional until update variable weekday when where window', - ), + keywords: set("alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit after all and as at asc avedev avg between by case cast coalesce count create current_timestamp day days delete define desc distinct else end escape events every exists false first from full group having hour hours in inner insert instanceof into irstream is istream join last lastweekday left limit like max match_recognize matches median measures metadatasql min minute minutes msec millisecond milliseconds not null offset on or order outer output partition pattern prev prior regexp retain-union retain-intersection right rstream sec second seconds select set some snapshot sql stddev sum then true unidirectional until update variable weekday when where window"), builtin: {}, - atoms: set('false true null'), + atoms: set("false true null"), operatorChars: /^[*+\-%<>!=&|^\/#@?~]/, - dateSQL: set('time'), - support: set('decimallessFloat zerolessFloat binaryNumber hexNumber'), + dateSQL: set("time"), + support: set("decimallessFloat zerolessFloat binaryNumber hexNumber") + }); + + // Trino (formerly known as Presto) + CodeMirror.defineMIME("text/x-trino", { + name: "sql", + // https://github.com/trinodb/trino/blob/bc7a4eeedde28684c7ae6f74cefcaf7c6e782174/core/trino-parser/src/main/antlr4/io/trino/sql/parser/SqlBase.g4#L859-L1129 + // https://github.com/trinodb/trino/blob/bc7a4eeedde28684c7ae6f74cefcaf7c6e782174/docs/src/main/sphinx/functions/list.rst + keywords: set("abs absent acos add admin after all all_match alter analyze and any any_match approx_distinct approx_most_frequent approx_percentile approx_set arbitrary array_agg array_distinct array_except array_intersect array_join array_max array_min array_position array_remove array_sort array_union arrays_overlap as asc asin at at_timezone atan atan2 authorization avg bar bernoulli beta_cdf between bing_tile bing_tile_at bing_tile_coordinates bing_tile_polygon bing_tile_quadkey bing_tile_zoom_level bing_tiles_around bit_count bitwise_and bitwise_and_agg bitwise_left_shift bitwise_not bitwise_or bitwise_or_agg bitwise_right_shift bitwise_right_shift_arithmetic bitwise_xor bool_and bool_or both by call cardinality cascade case cast catalogs cbrt ceil ceiling char2hexint checksum chr classify coalesce codepoint column columns combinations comment commit committed concat concat_ws conditional constraint contains contains_sequence convex_hull_agg copartition corr cos cosh cosine_similarity count count_if covar_pop covar_samp crc32 create cross cube cume_dist current current_catalog current_date current_groups current_path current_role current_schema current_time current_timestamp current_timezone current_user data date_add date_diff date_format date_parse date_trunc day day_of_month day_of_week day_of_year deallocate default define definer degrees delete dense_rank deny desc describe descriptor distinct distributed dow doy drop e element_at else empty empty_approx_set encoding end error escape evaluate_classifier_predictions every except excluding execute exists exp explain extract false features fetch filter final first first_value flatten floor following for format format_datetime format_number from from_base from_base32 from_base64 from_base64url from_big_endian_32 from_big_endian_64 from_encoded_polyline from_geojson_geometry from_hex from_ieee754_32 from_ieee754_64 from_iso8601_date from_iso8601_timestamp from_iso8601_timestamp_nanos from_unixtime from_unixtime_nanos from_utf8 full functions geometric_mean geometry_from_hadoop_shape geometry_invalid_reason geometry_nearest_points geometry_to_bing_tiles geometry_union geometry_union_agg grant granted grants graphviz great_circle_distance greatest group grouping groups hamming_distance hash_counts having histogram hmac_md5 hmac_sha1 hmac_sha256 hmac_sha512 hour human_readable_seconds if ignore in including index infinity initial inner input insert intersect intersection_cardinality into inverse_beta_cdf inverse_normal_cdf invoker io is is_finite is_infinite is_json_scalar is_nan isolation jaccard_index join json_array json_array_contains json_array_get json_array_length json_exists json_extract json_extract_scalar json_format json_object json_parse json_query json_size json_value keep key keys kurtosis lag last last_day_of_month last_value lateral lead leading learn_classifier learn_libsvm_classifier learn_libsvm_regressor learn_regressor least left length level levenshtein_distance like limit line_interpolate_point line_interpolate_points line_locate_point listagg ln local localtime localtimestamp log log10 log2 logical lower lpad ltrim luhn_check make_set_digest map_agg map_concat map_entries map_filter map_from_entries map_keys map_union map_values map_zip_with match match_recognize matched matches materialized max max_by md5 measures merge merge_set_digest millisecond min min_by minute mod month multimap_agg multimap_from_entries murmur3 nan natural next nfc nfd nfkc nfkd ngrams no none none_match normal_cdf normalize not now nth_value ntile null nullif nulls numeric_histogram object objectid_timestamp of offset omit on one only option or order ordinality outer output over overflow parse_data_size parse_datetime parse_duration partition partitions passing past path pattern per percent_rank permute pi position pow power preceding prepare privileges properties prune qdigest_agg quarter quotes radians rand random range rank read recursive reduce reduce_agg refresh regexp_count regexp_extract regexp_extract_all regexp_like regexp_position regexp_replace regexp_split regr_intercept regr_slope regress rename render repeat repeatable replace reset respect restrict returning reverse revoke rgb right role roles rollback rollup round row_number rows rpad rtrim running scalar schema schemas second security seek select sequence serializable session set sets sha1 sha256 sha512 show shuffle sign simplify_geometry sin skewness skip slice some soundex spatial_partitioning spatial_partitions split split_part split_to_map split_to_multimap spooky_hash_v2_32 spooky_hash_v2_64 sqrt st_area st_asbinary st_astext st_boundary st_buffer st_centroid st_contains st_convexhull st_coorddim st_crosses st_difference st_dimension st_disjoint st_distance st_endpoint st_envelope st_envelopeaspts st_equals st_exteriorring st_geometries st_geometryfromtext st_geometryn st_geometrytype st_geomfrombinary st_interiorringn st_interiorrings st_intersection st_intersects st_isclosed st_isempty st_isring st_issimple st_isvalid st_length st_linefromtext st_linestring st_multipoint st_numgeometries st_numinteriorring st_numpoints st_overlaps st_point st_pointn st_points st_polygon st_relate st_startpoint st_symdifference st_touches st_union st_within st_x st_xmax st_xmin st_y st_ymax st_ymin start starts_with stats stddev stddev_pop stddev_samp string strpos subset substr substring sum system table tables tablesample tan tanh tdigest_agg text then ties timestamp_objectid timezone_hour timezone_minute to to_base to_base32 to_base64 to_base64url to_big_endian_32 to_big_endian_64 to_char to_date to_encoded_polyline to_geojson_geometry to_geometry to_hex to_ieee754_32 to_ieee754_64 to_iso8601 to_milliseconds to_spherical_geography to_timestamp to_unixtime to_utf8 trailing transaction transform transform_keys transform_values translate trim trim_array true truncate try try_cast type typeof uescape unbounded uncommitted unconditional union unique unknown unmatched unnest update upper url_decode url_encode url_extract_fragment url_extract_host url_extract_parameter url_extract_path url_extract_port url_extract_protocol url_extract_query use user using utf16 utf32 utf8 validate value value_at_quantile values values_at_quantiles var_pop var_samp variance verbose version view week week_of_year when where width_bucket wilson_interval_lower wilson_interval_upper window with with_timezone within without word_stem work wrapper write xxhash64 year year_of_week yow zip zip_with"), + // https://github.com/trinodb/trino/blob/bc7a4eeedde28684c7ae6f74cefcaf7c6e782174/core/trino-main/src/main/java/io/trino/metadata/TypeRegistry.java#L131-L168 + // https://github.com/trinodb/trino/blob/bc7a4eeedde28684c7ae6f74cefcaf7c6e782174/plugin/trino-ml/src/main/java/io/trino/plugin/ml/MLPlugin.java#L35 + // https://github.com/trinodb/trino/blob/bc7a4eeedde28684c7ae6f74cefcaf7c6e782174/plugin/trino-mongodb/src/main/java/io/trino/plugin/mongodb/MongoPlugin.java#L32 + // https://github.com/trinodb/trino/blob/bc7a4eeedde28684c7ae6f74cefcaf7c6e782174/plugin/trino-geospatial/src/main/java/io/trino/plugin/geospatial/GeoPlugin.java#L37 + builtin: set("array bigint bingtile boolean char codepoints color date decimal double function geometry hyperloglog int integer interval ipaddress joniregexp json json2016 jsonpath kdbtree likepattern map model objectid p4hyperloglog precision qdigest re2jregexp real regressor row setdigest smallint sphericalgeography tdigest time timestamp tinyint uuid varbinary varchar zone"), + atoms: set("false true null unknown"), + // https://trino.io/docs/current/functions/list.html#id1 + operatorChars: /^[[\]|<>=!\-+*/%]/, + dateSQL: set("date time timestamp zone"), + // hexNumber is necessary for VARBINARY literals, e.g. X'65683F' + // but it also enables 0xFF hex numbers, which Trino doesn't support. + support: set("decimallessFloat zerolessFloat hexNumber") }); }); @@ -598,9 +506,12 @@ Commands parsed and executed by the client (not the server). support: A list of supported syntaxes which are not common, but are supported by more than 1 DBMS. - * ODBCdotTable: .tableName * zerolessFloat: .1 - * doubleQuote + * decimallessFloat: 1. + * hexNumber: X'01AF' X'01af' x'01AF' x'01af' 0x01AF 0x01af + * binaryNumber: b'01' B'01' 0b01 + * doubleQuote: "string" + * escapeConstant: E'' * nCharCast: N'string' * charsetCast: _utf8'string' * commentHash: use # char for comments diff --git a/web/static/lib/codemirror/ttcn.scss b/web/static/lib/codemirror/ttcn.scss index 1af850dc..59067a95 100644 --- a/web/static/lib/codemirror/ttcn.scss +++ b/web/static/lib/codemirror/ttcn.scss @@ -1,197 +1,58 @@ -.cm-s-ttcn.CodeMirror { - background: #f5f2f0; - color: black; -} -.cm-s-ttcn .CodeMirror-overlayscroll-vertical { - width: 8px; - transition: width 0.15s linear; -} -.cm-s-ttcn .CodeMirror-overlayscroll-vertical > div { - background: rgba(0, 0, 0, 0.4); -} -.cm-s-ttcn .CodeMirror-overlayscroll-vertical:hover { - width: 12px; -} -.cm-s-ttcn .CodeMirror-overlayscroll-vertical:hover > div { - border-radius: 6px; -} -.cm-s-ttcn .CodeMirror-gutters { - border-right: 1px solid #999; -} -.cm-s-ttcn .CodeMirror-gutter, -.cm-s-ttcn .CodeMirror-linenumbers { - width: 1.4em; - background: #f5f2f0; - padding-right: 0.8em; -} -.cm-s-ttcn pre.CodeMirror-line, -.cm-s-ttcn pre.CodeMirror-line-like { - padding: 0 0.8em; -} +.cm-s-ttcn .cm-quote { color: #090; } +.cm-s-ttcn .cm-negative { color: #d44; } +.cm-s-ttcn .cm-positive { color: #292; } +.cm-s-ttcn .cm-header, .cm-strong { font-weight: bold; } +.cm-s-ttcn .cm-em { font-style: italic; } +.cm-s-ttcn .cm-strikethrough { text-decoration: line-through; } +.cm-s-ttcn .cm-header { color: #00f; font-weight: bold; } -.cm-s-ttcn .cm-quote { - color: #090; -} -.cm-s-ttcn .cm-negative { - color: #d44; -} -.cm-s-ttcn .cm-positive { - color: #292; -} -.cm-s-ttcn .cm-header, -.cm-strong { - font-weight: bold; -} -.cm-s-ttcn .cm-em { - font-style: italic; -} -.cm-s-ttcn .cm-link { - text-decoration: underline; -} -.cm-s-ttcn .cm-strikethrough { - text-decoration: line-through; -} -.cm-s-ttcn .cm-header { - color: #00f; - font-weight: bold; -} +.cm-s-ttcn .cm-atom { color: #219; } +.cm-s-ttcn .cm-attribute { color: #00c; } +.cm-s-ttcn .cm-bracket { color: #997; } +.cm-s-ttcn .cm-comment { color: #333333; } +.cm-s-ttcn .cm-def { color: #00f; } +.cm-s-ttcn .cm-error { color: #f00; } +.cm-s-ttcn .cm-hr { color: #999; } +.cm-s-ttcn .cm-invalidchar { color: #f00; } +.cm-s-ttcn .cm-keyword { font-weight:bold; } +.cm-s-ttcn .cm-link { color: #00c; text-decoration: underline; } +.cm-s-ttcn .cm-meta { color: #555; } +.cm-s-ttcn .cm-qualifier { color: #555; } +.cm-s-ttcn .cm-string { color: #006400; } +.cm-s-ttcn .cm-string-2 { color: #f50; } +.cm-s-ttcn .cm-strong { font-weight: bold; } +.cm-s-ttcn .cm-tag { color: #170; } +.cm-s-ttcn .cm-variable { color: #8B2252; } +.cm-s-ttcn .cm-variable-2 { color: #05a; } +.cm-s-ttcn .cm-variable-3, .cm-s-ttcn .cm-type { color: #085; } -.cm-s-ttcn .cm-atom { - color: #905; -} -.cm-s-ttcn .cm-attribute { - color: #690; -} -.cm-s-ttcn .cm-bracket { - color: #997; -} -.cm-s-ttcn .cm-comment { - color: #333333; -} -.cm-s-ttcn .cm-def { - color: #00f; -} -.cm-s-ttcn .cm-em { - font-style: italic; -} -.cm-s-ttcn .cm-error { - color: #f00; -} -.cm-s-ttcn .cm-hr { - color: #999; -} -.cm-s-ttcn .cm-invalidchar { - color: #f00; -} -.cm-s-ttcn .cm-keyword { - color: #07a; -} -.cm-s-ttcn .cm-link { - color: #00c; - text-decoration: underline; -} -.cm-s-ttcn .cm-meta { - color: #555; -} -.cm-s-ttcn .cm-negative { - color: #d44; -} -.cm-s-ttcn .cm-positive { - color: #292; -} -.cm-s-ttcn .cm-qualifier { - color: #555; -} -.cm-s-ttcn .cm-strikethrough { - text-decoration: line-through; -} -.cm-s-ttcn .cm-string { - color: #690; -} -.cm-s-ttcn .cm-string-2 { - color: #f50; -} -.cm-s-ttcn .cm-strong { - font-weight: bold; -} -.cm-s-ttcn .cm-tag { - color: #170; -} -.cm-s-ttcn .cm-variable { - color: #8b2252; -} -.cm-s-ttcn .cm-variable-2 { - color: #05a; -} -.cm-s-ttcn .cm-variable-3, -.cm-s-ttcn .cm-type { - color: #085; -} - -.cm-s-ttcn .cm-invalidchar { - color: #f00; -} - -.cm-s-ttcn .cm-operator { - color: #9a6e3a; - background: hsla(0, 0%, 100%, 0.5); -} /* ASN */ .cm-s-ttcn .cm-accessTypes, -.cm-s-ttcn .cm-compareTypes { - color: #27408b; -} -.cm-s-ttcn .cm-cmipVerbs { - color: #8b2252; -} -.cm-s-ttcn .cm-modifier { - color: #d2691e; -} -.cm-s-ttcn .cm-status { - color: #8b4545; -} -.cm-s-ttcn .cm-storage { - color: #a020f0; -} -.cm-s-ttcn .cm-tags { - color: #006400; -} +.cm-s-ttcn .cm-compareTypes { color: #27408B; } +.cm-s-ttcn .cm-cmipVerbs { color: #8B2252; } +.cm-s-ttcn .cm-modifier { color:#D2691E; } +.cm-s-ttcn .cm-status { color:#8B4545; } +.cm-s-ttcn .cm-storage { color:#A020F0; } +.cm-s-ttcn .cm-tags { color:#006400; } /* CFG */ -.cm-s-ttcn .cm-externalCommands { - color: #8b4545; - font-weight: bold; -} +.cm-s-ttcn .cm-externalCommands { color: #8B4545; font-weight:bold; } .cm-s-ttcn .cm-fileNCtrlMaskOptions, -.cm-s-ttcn .cm-sectionTitle { - color: #2e8b57; - font-weight: bold; -} +.cm-s-ttcn .cm-sectionTitle { color: #2E8B57; font-weight:bold; } /* TTCN */ .cm-s-ttcn .cm-booleanConsts, .cm-s-ttcn .cm-otherConsts, -.cm-s-ttcn .cm-verdictConsts { - color: #006400; -} +.cm-s-ttcn .cm-verdictConsts { color: #006400; } .cm-s-ttcn .cm-configOps, .cm-s-ttcn .cm-functionOps, .cm-s-ttcn .cm-portOps, .cm-s-ttcn .cm-sutOps, .cm-s-ttcn .cm-timerOps, -.cm-s-ttcn .cm-verdictOps { - color: #0000ff; -} +.cm-s-ttcn .cm-verdictOps { color: #0000FF; } .cm-s-ttcn .cm-preprocessor, .cm-s-ttcn .cm-templateMatch, -.cm-s-ttcn .cm-ttcn3Macros { - color: #27408b; -} -.cm-s-ttcn .cm-types { - color: #a52a2a; - font-weight: bold; -} -.cm-s-ttcn .cm-visibilityModifiers { - font-weight: bold; -} +.cm-s-ttcn .cm-ttcn3Macros { color: #27408B; } +.cm-s-ttcn .cm-types { color: #A52A2A; font-weight:bold; } +.cm-s-ttcn .cm-visibilityModifiers { font-weight:bold; } diff --git a/web/static/lib/prism/prism.js b/web/static/lib/prism/prism.js index 36e42d90..393d1e88 100644 --- a/web/static/lib/prism/prism.js +++ b/web/static/lib/prism/prism.js @@ -1,884 +1,1909 @@ -/* PrismJS 1.25.0 -https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript+ini+python+sql+toml */ -var _self = - 'undefined' != typeof window - ? window - : 'undefined' != typeof WorkerGlobalScope && - self instanceof WorkerGlobalScope - ? self - : {}, - Prism = (function (u) { - var c = /\blang(?:uage)?-([\w-]+)\b/i, - n = 0, - e = {}, - M = { - manual: u.Prism && u.Prism.manual, - disableWorkerMessageHandler: - u.Prism && u.Prism.disableWorkerMessageHandler, - util: { - encode: function e(n) { - return n instanceof W - ? new W(n.type, e(n.content), n.alias) - : Array.isArray(n) - ? n.map(e) - : n - .replace(/&/g, '&') - .replace(/= l.reach); - y += m.value.length, m = m.next - ) { - var b = m.value; - if (t.length > n.length) return; - if (!(b instanceof W)) { - var k, - x = 1; - if (h) { - if (!(k = z(v, y, n, f))) break; - var w = k.index, - A = k.index + k[0].length, - P = y; - for (P += m.value.length; P <= w; ) - (m = m.next), (P += m.value.length); - if ( - ((P -= m.value.length), - (y = P), - m.value instanceof W) - ) - continue; - for ( - var E = m; - E !== t.tail && - (P < A || 'string' == typeof E.value); - E = E.next - ) - x++, (P += E.value.length); - x--, (b = n.slice(y, P)), (k.index -= y); - } else if (!(k = z(v, 0, b, f))) continue; - var w = k.index, - S = k[0], - O = b.slice(0, w), - L = b.slice(w + S.length), - N = y + b.length; - l && N > l.reach && (l.reach = N); - var j = m.prev; - O && ((j = I(t, j, O)), (y += O.length)), q(t, j, x); - var C = new W(o, g ? M.tokenize(S, g) : S, d, S); - if (((m = I(t, j, C)), L && I(t, m, L), 1 < x)) { - var _ = { cause: o + ',' + u, reach: N }; - e(n, t, r, m.prev, y, _), - l && _.reach > l.reach && (l.reach = _.reach); - } - } - } - } - } - })(e, a, n, a.head, 0), - (function (e) { - var n = [], - t = e.head.next; - for (; t !== e.tail; ) n.push(t.value), (t = t.next); - return n; - })(a) - ); - }, - hooks: { - all: {}, - add: function (e, n) { - var t = M.hooks.all; - (t[e] = t[e] || []), t[e].push(n); - }, - run: function (e, n) { - var t = M.hooks.all[e]; - if (t && t.length) for (var r, a = 0; (r = t[a++]); ) r(n); - }, - }, - Token: W, - }; - function W(e, n, t, r) { - (this.type = e), - (this.content = n), - (this.alias = t), - (this.length = 0 | (r || '').length); - } - function z(e, n, t, r) { - e.lastIndex = n; - var a = e.exec(t); - if (a && r && a[1]) { - var i = a[1].length; - (a.index += i), (a[0] = a[0].slice(i)); - } - return a; - } - function i() { - var e = { value: null, prev: null, next: null }, - n = { value: null, prev: e, next: null }; - (e.next = n), (this.head = e), (this.tail = n), (this.length = 0); - } - function I(e, n, t) { - var r = n.next, - a = { value: t, prev: n, next: r }; - return (n.next = a), (r.prev = a), e.length++, a; - } - function q(e, n, t) { - for (var r = n.next, a = 0; a < t && r !== e.tail; a++) r = r.next; - ((n.next = r).prev = n), (e.length -= a); - } - if ( - ((u.Prism = M), - (W.stringify = function n(e, t) { - if ('string' == typeof e) return e; - if (Array.isArray(e)) { - var r = ''; - return ( - e.forEach(function (e) { - r += n(e, t); - }), - r - ); - } - var a = { - type: e.type, - content: n(e.content, t), - tag: 'span', - classes: ['token', e.type], - attributes: {}, - language: t, - }, - i = e.alias; - i && - (Array.isArray(i) - ? Array.prototype.push.apply(a.classes, i) - : a.classes.push(i)), - M.hooks.run('wrap', a); - var l = ''; - for (var o in a.attributes) - l += - ' ' + - o + - '="' + - (a.attributes[o] || '').replace(/"/g, '"') + - '"'; - return ( - '<' + - a.tag + - ' class="' + - a.classes.join(' ') + - '"' + - l + - '>' + - a.content + - '' - ); - }), - !u.document) - ) - return ( - u.addEventListener && - (M.disableWorkerMessageHandler || - u.addEventListener( - 'message', - function (e) { - var n = JSON.parse(e.data), - t = n.language, - r = n.code, - a = n.immediateClose; - u.postMessage(M.highlight(r, M.languages[t], t)), - a && u.close(); - }, - !1, - )), - M - ); - var t = M.util.currentScript(); - function r() { - M.manual || M.highlightAll(); - } - if ( - (t && - ((M.filename = t.src), - t.hasAttribute('data-manual') && (M.manual = !0)), - !M.manual) - ) { - var a = document.readyState; - 'loading' === a || ('interactive' === a && t && t.defer) - ? document.addEventListener('DOMContentLoaded', r) - : window.requestAnimationFrame - ? window.requestAnimationFrame(r) - : window.setTimeout(r, 16); - } - return M; - })(_self); -'undefined' != typeof module && module.exports && (module.exports = Prism), - 'undefined' != typeof global && (global.Prism = Prism); -(Prism.languages.markup = { - comment: { pattern: //, greedy: !0 }, - prolog: { pattern: /<\?[\s\S]+?\?>/, greedy: !0 }, - doctype: { - pattern: - /"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i, - greedy: !0, - inside: { - 'internal-subset': { - pattern: /(^[^\[]*\[)[\s\S]+(?=\]>$)/, - lookbehind: !0, - greedy: !0, - inside: null, - }, - string: { pattern: /"[^"]*"|'[^']*'/, greedy: !0 }, - punctuation: /^$|[[\]]/, - 'doctype-tag': /^DOCTYPE/i, - name: /[^\s<>'"]+/, - }, - }, - cdata: { pattern: //i, greedy: !0 }, - tag: { - pattern: - /<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/, - greedy: !0, - inside: { - tag: { - pattern: /^<\/?[^\s>\/]+/, - inside: { punctuation: /^<\/?/, namespace: /^[^\s>\/:]+:/ }, - }, - 'special-attr': [], - 'attr-value': { - pattern: /=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/, - inside: { - punctuation: [{ pattern: /^=/, alias: 'attr-equals' }, /"|'/], - }, - }, - punctuation: /\/?>/, - 'attr-name': { - pattern: /[^\s>\/]+/, - inside: { namespace: /^[^\s>\/:]+:/ }, - }, - }, - }, - entity: [ - { pattern: /&[\da-z]{1,8};/i, alias: 'named-entity' }, - /&#x?[\da-f]{1,8};/i, - ], -}), - (Prism.languages.markup.tag.inside['attr-value'].inside.entity = - Prism.languages.markup.entity), - (Prism.languages.markup.doctype.inside['internal-subset'].inside = - Prism.languages.markup), - Prism.hooks.add('wrap', function (a) { - 'entity' === a.type && - (a.attributes.title = a.content.replace(/&/, '&')); - }), - Object.defineProperty(Prism.languages.markup.tag, 'addInlined', { - value: function (a, e) { - var s = {}; - (s['language-' + e] = { - pattern: /(^$)/i, - lookbehind: !0, - inside: Prism.languages[e], - }), - (s.cdata = /^$/i); - var t = { - 'included-cdata': { pattern: //i, inside: s }, - }; - t['language-' + e] = { pattern: /[\s\S]+/, inside: Prism.languages[e] }; - var n = {}; - (n[a] = { - pattern: RegExp( - '(<__[^>]*>)(?:))*\\]\\]>|(?!)'.replace( - /__/g, - function () { - return a; - }, - ), - 'i', - ), - lookbehind: !0, - greedy: !0, - inside: t, - }), - Prism.languages.insertBefore('markup', 'cdata', n); - }, - }), - Object.defineProperty(Prism.languages.markup.tag, 'addAttribute', { - value: function (a, e) { - Prism.languages.markup.tag.inside['special-attr'].push({ - pattern: RegExp( - '(^|["\'\\s])(?:' + - a + - ')\\s*=\\s*(?:"[^"]*"|\'[^\']*\'|[^\\s\'">=]+(?=[\\s>]))', - 'i', - ), - lookbehind: !0, - inside: { - 'attr-name': /^[^\s=]+/, - 'attr-value': { - pattern: /=[\s\S]+/, - inside: { - value: { - pattern: /(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/, - lookbehind: !0, - alias: [e, 'language-' + e], - inside: Prism.languages[e], - }, - punctuation: [{ pattern: /^=/, alias: 'attr-equals' }, /"|'/], - }, - }, - }, - }); - }, - }), - (Prism.languages.html = Prism.languages.markup), - (Prism.languages.mathml = Prism.languages.markup), - (Prism.languages.svg = Prism.languages.markup), - (Prism.languages.xml = Prism.languages.extend('markup', {})), - (Prism.languages.ssml = Prism.languages.xml), - (Prism.languages.atom = Prism.languages.xml), - (Prism.languages.rss = Prism.languages.xml); -!(function (s) { - var e = - /(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/; - (s.languages.css = { - comment: /\/\*[\s\S]*?\*\//, - atrule: { - pattern: /@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/, - inside: { - rule: /^@[\w-]+/, - 'selector-function-argument': { - pattern: - /(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/, - lookbehind: !0, - alias: 'selector', - }, - keyword: { - pattern: /(^|[^\w-])(?:and|not|only|or)(?![\w-])/, - lookbehind: !0, - }, - }, - }, - url: { - pattern: RegExp( - '\\burl\\((?:' + e.source + '|(?:[^\\\\\r\n()"\']|\\\\[^])*)\\)', - 'i', - ), - greedy: !0, - inside: { - function: /^url/i, - punctuation: /^\(|\)$/, - string: { pattern: RegExp('^' + e.source + '$'), alias: 'url' }, - }, - }, - selector: { - pattern: RegExp( - '(^|[{}\\s])[^{}\\s](?:[^{};"\'\\s]|\\s+(?![\\s{])|' + - e.source + - ')*(?=\\s*\\{)', - ), - lookbehind: !0, - }, - string: { pattern: e, greedy: !0 }, - property: { - pattern: - /(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i, - lookbehind: !0, - }, - important: /!important\b/i, - function: { pattern: /(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i, lookbehind: !0 }, - punctuation: /[(){};:,]/, - }), - (s.languages.css.atrule.inside.rest = s.languages.css); - var t = s.languages.markup; - t && (t.tag.addInlined('style', 'css'), t.tag.addAttribute('style', 'css')); -})(Prism); -Prism.languages.clike = { - comment: [ - { pattern: /(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/, lookbehind: !0, greedy: !0 }, - { pattern: /(^|[^\\:])\/\/.*/, lookbehind: !0, greedy: !0 }, - ], - string: { - pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, - greedy: !0, - }, - 'class-name': { - pattern: - /(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i, - lookbehind: !0, - inside: { punctuation: /[.\\]/ }, - }, - keyword: - /\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/, - boolean: /\b(?:false|true)\b/, - function: /\b\w+(?=\()/, - number: /\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i, - operator: /[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/, - punctuation: /[{}[\];(),.:]/, +/* PrismJS 1.30.0 +https://prismjs.com/download.html#themes=prism&languages=markup+css+bash+ini+properties+python+sql */ +/// + +var _self = (typeof window !== 'undefined') + ? window // if in browser + : ( + (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) + ? self // if in worker + : {} // if in node js + ); + +/** + * Prism: Lightweight, robust, elegant syntax highlighting + * + * @license MIT + * @author Lea Verou + * @namespace + * @public + */ +var Prism = (function (_self) { + + // Private helper vars + var lang = /(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i; + var uniqueId = 0; + + // The grammar object for plaintext + var plainTextGrammar = {}; + + + var _ = { + /** + * By default, Prism will attempt to highlight all code elements (by calling {@link Prism.highlightAll}) on the + * current page after the page finished loading. This might be a problem if e.g. you wanted to asynchronously load + * additional languages or plugins yourself. + * + * By setting this value to `true`, Prism will not automatically highlight all code elements on the page. + * + * You obviously have to change this value before the automatic highlighting started. To do this, you can add an + * empty Prism object into the global scope before loading the Prism script like this: + * + * ```js + * window.Prism = window.Prism || {}; + * Prism.manual = true; + * // add a new +
+ diff --git a/web/templates/error.html.j2 b/web/templates/error.html.j2 index cfcdf887..1416ccfa 100644 --- a/web/templates/error.html.j2 +++ b/web/templates/error.html.j2 @@ -1,12 +1,12 @@ {% extends "layout.html.j2" %} {% block body_auth %} -
-

Opps, that was an error (lol)

-

{{ message }}

-

Trace

-
+  
+

Opps, that was an error (lol)

+

{{ message }}

+

Trace

+
 {{ trace }}
                                 
-
+
{% endblock body_auth %} diff --git a/web/templates/layout.html.j2 b/web/templates/layout.html.j2 index f4bc7c55..255e94c3 100644 --- a/web/templates/layout.html.j2 +++ b/web/templates/layout.html.j2 @@ -1,126 +1,151 @@ - + + {% cache None %} - - - - - - - - - - - - - {% assets "css" %} + + + + + + + + + + + + + {% assets "css" %} - {% endassets %} -{% endcache %} -Atlas Automation Hub - {{ title }} -Atlas Automation Hub - {{ title }} + - + - + - + - + - + - + - + -{% block head %} -{% endblock head %} + crossorigin + /> + {% block head %} + {% endblock head %} -{% block css %} -{% endblock css %} - - + {% block css %} + {% endblock css %} + + {% if config['DEMO'] and not config["TEST"] %} - {% include "demo.html.j2" %} - + {% include "demo.html.j2" %} {% endif %} {% block body_auth %} - {% include "sections/head.html.j2" %} - -
-
- -
-
-
- {% include "sections/flashes.html.j2" %} - - {% block body %} - {% endblock body %} + {% include "sections/head.html.j2" %} +
+
+
+
+
+ {% include "sections/flashes.html.j2" %} + + {% block body %} + {% endblock body %} +
{% endblock body_auth %} {% block js %} {% endblock js %} - - -{% assets "scroll" %} + + {% assets "scroll" %} -{% endassets %} -{% assets "codemirror" %} + {% endassets %} + {% assets "codemirror" %} -{% endassets %} -{% assets "js_search" %} + {% endassets %} + {% assets "js_search" %} -{% endassets %} -{% assets "js_flatpickr" %} + {% endassets %} + {% assets "js_flatpickr" %} -{% endassets %} -{% assets "js" %} + {% endassets %} + {% assets "js" %} -{% endassets %} -{% assets "js_tables" %} + {% endassets %} + {% assets "js_tables" %} -{% endassets %} + {% endassets %} diff --git a/web/templates/not_authorized.html.j2 b/web/templates/not_authorized.html.j2 index c8265849..aaadfdf5 100644 --- a/web/templates/not_authorized.html.j2 +++ b/web/templates/not_authorized.html.j2 @@ -1,30 +1,30 @@ {% extends "layout.html.j2" %} {% block body_auth %} - {% with messages = get_flashed_messages() %} -
-
-
- {% if messages %} -
-
- - - - {% for message in messages %}{{ message }}{% endfor %} -
-
- {% endif %} -
-
- - - - You are not authorized to access this site. -
-
-
+ {% with messages = get_flashed_messages() %} +
+
+
+ {% if messages %} +
+
+ + + + {% for message in messages %}{{ message }}{% endfor %} +
+
+ {% endif %} +
+
+ + + + You are not authorized to access this site.
+
- {% endwith %} +
+
+ {% endwith %} {% endblock body_auth %} diff --git a/web/templates/pages/admin.html.j2 b/web/templates/pages/admin.html.j2 index 9bb1282e..66fcef38 100644 --- a/web/templates/pages/admin.html.j2 +++ b/web/templates/pages/admin.html.j2 @@ -1,111 +1,125 @@ {% extends "layout.html.j2" %} {% block body %} -

- Admin Area -
-

-
-

App Tasks

+

+ Admin Area +
+

+ + + + +
+
+
+
+
-
-

Scheduler Tasks

- -
- - -
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
{% endblock body %} diff --git a/web/templates/pages/connection/all.html.j2 b/web/templates/pages/connection/all.html.j2 index 8f21c1da..5a35ef85 100644 --- a/web/templates/pages/connection/all.html.j2 +++ b/web/templates/pages/connection/all.html.j2 @@ -1,58 +1,72 @@ {% extends "layout.html.j2" %} {% block crumbs %} - + {% endblock crumbs %} {% block body %} -

Connections

- {% if connections|length == 0 %} -
Get started by creating a connection!
- {% else %} -
- {% for d in connections %} +

Connections

+ {% if connections|length == 0 %} +
+ Get started by creating a connection! +
+ {% else %} +
+ {% for d in connections %} + {# prettier-ignore-start #} {% if loop.index0 > 0 and loop.index0 % 4 == 0 or loop.index0==connections|length %}
{% endif %} - {% if loop.index0 % 4 == 0 or loop.index0 ==0 %}
{% endif %} -
-
- - - - - - - {% if d.description %}

{{ d.description }}

{% endif %} -
-

Contact Information

-

- {% if d.address and d.address != "" %} -

Address
- {{ d.address }} -
-
- {% endif %} - {% if d.primary_contact %} - Name: {{ d.primary_contact }} -
- {% endif %} - {% if d.primary_contact_email %} - Email: - {{ d.primary_contact_email }} -
- {% endif %} - {% if d.primary_contact_phone %}Phone: {{ d.primary_contact_phone }}{% endif %} -

-
-
-
- {% endfor %} + {% if loop.index0 % 4 == 0 or loop.index0 ==0 %}
{% endif %} + {# prettier-ignore-end #} +
+
+ + + + + + + {% if d.description %} +

{{ d.description }}

+ {% endif %} +
+

Contact Information

+

+ {% if d.address and d.address != "" %} +

Address
+ {{ d.address }} +
+
+ {% endif %} + {% if d.primary_contact %} + Name: {{ d.primary_contact }} +
+ {% endif %} + {% if d.primary_contact_email %} + Email: + {{ d.primary_contact_email }} +
+ {% endif %} + {% if d.primary_contact_phone %} + Phone: {{ d.primary_contact_phone }} + {% endif %} +

+
+
- {% endif %} + {% endfor %} +
+ {% endif %} {% endblock body %} diff --git a/web/templates/pages/connection/database_edit.html.j2 b/web/templates/pages/connection/database_edit.html.j2 index e4ad89a7..5131b5d6 100644 --- a/web/templates/pages/connection/database_edit.html.j2 +++ b/web/templates/pages/connection/database_edit.html.j2 @@ -1,98 +1,128 @@ {% extends "layout.html.j2" %} {% block crumbs %} - -{% endblock crumbs %} - -{% block body %} -

+

-
-
- - -
-
- -
- -
-
-
- - -
-
- - -
- - - -
+
+ + +{% endblock crumbs %} + +{% block body %} +

+ {% if database %} + Editing + {{ database }} + {% else %} + New Database Connection + {% endif %} +

+
+
+ + +
+
+ +
+ +
+
+
+ + +
+
+ + +
+ + + +
{% endblock body %} diff --git a/web/templates/pages/connection/ftp_edit.html.j2 b/web/templates/pages/connection/ftp_edit.html.j2 index 18b8b2c6..d7011a49 100644 --- a/web/templates/pages/connection/ftp_edit.html.j2 +++ b/web/templates/pages/connection/ftp_edit.html.j2 @@ -1,114 +1,131 @@ {% extends "layout.html.j2" %} {% block crumbs %} - -{% endblock crumbs %} - -{% block body %} -

+

-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - + + + +{% endblock crumbs %} + +{% block body %} +

+ {% if ftp %} + Editing + {{ ftp }} + {% else %} + New FTP Connection + {% endif %} +

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

+ +

+ - - +
+
+ + {% endblock body %} diff --git a/web/templates/pages/connection/gpg_edit.html.j2 b/web/templates/pages/connection/gpg_edit.html.j2 index 4378f721..34c76a65 100644 --- a/web/templates/pages/connection/gpg_edit.html.j2 +++ b/web/templates/pages/connection/gpg_edit.html.j2 @@ -1,63 +1,78 @@ {% extends "layout.html.j2" %} {% block crumbs %} - -{% endblock crumbs %} - -{% block body %} -

+

-
-
- - -
-
- -
- - - -
+
+ + +{% endblock crumbs %} + +{% block body %} +

+ {% if gpg %} + Editing + {{ gpg }} + {% else %} + New GPG Connection + {% endif %} +

+
+
+ + +
+
+ +
+ + + +
{% endblock body %} diff --git a/web/templates/pages/connection/new.html.j2 b/web/templates/pages/connection/new.html.j2 index d5cba672..0dff571a 100644 --- a/web/templates/pages/connection/new.html.j2 +++ b/web/templates/pages/connection/new.html.j2 @@ -1,92 +1,108 @@ {% extends "layout.html.j2" %} {% block crumbs %} - -{% endblock crumbs %} - -{% block body %} -

+

- -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
- -
+
+ + +{% endblock crumbs %} + +{% block body %} +

+ {% if connection %} + Editing + {{ connection }} + {% else %} + New Connection + {% endif %} +

+ +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
{% endblock body %} diff --git a/web/templates/pages/connection/one.html.j2 b/web/templates/pages/connection/one.html.j2 index 810a8466..428c0f88 100644 --- a/web/templates/pages/connection/one.html.j2 +++ b/web/templates/pages/connection/one.html.j2 @@ -1,563 +1,656 @@ {% extends "layout.html.j2" %} {% block crumbs %} - + {% endblock crumbs %} {% block body %} -

{{ connection }}

- {% if connection.description %}

{{ connection.description }}

{% endif %} -
-

- - - - - Edit +

{{ connection }}

+ {% if connection.description %} +

{{ connection.description }}

+ {% endif %} +
+ {% if connection.address or connection.primary_contact or connection.primary_contact or connection.primary_contact_email or connection.primary_contact_phone %} +
+

Contact Information

+
+ {% if connection.address %} +

Address

+ {{ connection.address }} +
+
+ {% endif %} + {% if connection.primary_contact %} + Name: {{ connection.primary_contact }} +
+ {% endif %} + {% if connection.primary_contact_email %} + Email: + {{ connection.primary_contact_email }} +
+ {% endif %} + {% if connection.primary_contact_phone %} + Phone: {{ connection.primary_contact_phone }} + {% endif %} +
+
+ {% endif %} + {% if connection.database|length > 0 %} + + {% endif %} + {% if connection.sftp|length > 0 %} + + {% endif %} + {% if connection.ftp|length > 0 %} + - {% if connection.address or connection.primary_contact or connection.primary_contact or connection.primary_contact_email or connection.primary_contact_phone %} -
-

Contact Information

-
- {% if connection.address %} -

Address

- {{ connection.address }} -
-
- {% endif %} - {% if connection.primary_contact %} - Name: {{ connection.primary_contact }} -
- {% endif %} - {% if connection.primary_contact_email %} - Email: - {{ connection.primary_contact_email }} -
- {% endif %} - {% if connection.primary_contact_phone %}Phone: {{ connection.primary_contact_phone }}{% endif %} + {% endif %} + {% if connection.smb|length > 0 %} +
+

SMB Connections

+ {% for s in connection.smb %} +
+
+

{{ s }}

+
+
+
+
+
- {% endif %} - {% if connection.database|length > 0 %} -
-

Database Connections

- {% for s in connection.database %} -
-
-

{{ s }} - {{ s.database_type.name }}

-
-
-
-
-
-
-
- - {% if s.timeout %} -

- Timeout: {{ s.timeout }} (minutes) -

- {% endif %} -
{{ s.connection_string|decrypt }}
- {% endfor %} + +
+ Server Name: + {{ s.server_name or "unknown" }} +
+ Share Name: + {{ s.share_name or "unknown" }} + {% if s.path %} +
+ Path: + {{ s.path|clean_path or "/" }} + {% endif %} + {% if s.username %} +
+ Username: + {{ s.username }} + {% endif %} + {% if s.password %} +
+ Password: + + + + + + + + + Copy + + + {% endif %}
- {% endif %} - {% if connection.sftp|length > 0 %} -
-

SFTP Connections

- {% for s in connection.sftp %} -
-
-

{{ s }}

-
-
-
-
-
-
-
- -
- Address: - {{ s.address or "unknown" }}:{{ s.port or '22' }} - {% if s.path %} -
- Path: - {{ s.path|clean_path or "/" }} - {% endif %} - {% if s.username %} -
- Username: - {{ s.username }} - {% endif %} - {% if s.password %} -
- Password: - - - - - - - - - Copy - - - {% endif %} - {% if s.key_password %} -
- Key Password: - - - - - - - - - Copy - - - {% endif %} - {% if s.key and s.key != "" %} -
- SSH Key:
{{ s.key|decrypt }}
- {% endif %} -
- {% endfor %} + {% endfor %} +
+ {% endif %} + {% if connection.ssh|length > 0 %} +
+

SSH Connections

+ {% for s in connection.ssh %} +
+
+

{{ s }}

+
+
+
+
+
+
- {% endif %} - {% if connection.ftp|length > 0 %} -
-

FTP Connections

- {% for s in connection.ftp %} -
-
-

{{ s }}

-
-
-
-
-
-
-
- -
- Address: - {{ s.address or "unknown" }} - {% if s.path %} -
- Path: - {{ s.path|clean_path or "/" }} - {% endif %} - {% if s.username %} -
- Username: - {{ s.username }} - {% endif %} - {% if s.password %} -
- Password: - - - - - - - - - Copy - - - {% endif %} -
- {% endfor %} + - {% endif %} - {% if connection.smb|length > 0 %} -
-

SMB Connections

- {% for s in connection.smb %} -
-
-

{{ s }}

-
-
-
-
-
-
-
- -
- Server Name: - {{ s.server_name or "unknown" }} -
- Server IP: - {{ s.server_ip or "unknown" }} -
- Share Name: - {{ s.share_name or "unknown" }} - {% if s.path %} -
- Path: - {{ s.path|clean_path or "/" }} - {% endif %} - {% if s.username %} -
- Username: - {{ s.username }} - {% endif %} - {% if s.password %} -
- Password: - - - - - - - - - Copy - - - {% endif %} -
- {% endfor %} +
+ Address: + {{ s.address or "unknown" }}:{{ s.port or '22' }} + {% if s.path %} +
+ Path: + {{ s.path|clean_path or "/" }} + {% endif %} + {% if s.username %} +
+ Username: + {{ s.username }} + {% endif %} + {% if s.password %} +
+ Password: + + + + + + + + + Copy + + + {% endif %} + {% if s.key and s.key != "" %} +
+ SSH Key: +
{{ s.key|decrypt }}
+ {% endif %}
- {% endif %} - {% if connection.ssh|length > 0 %} -
-

SSH Connections

- {% for s in connection.ssh %} -
-
-

{{ s }}

-
-
-
-
-
-
-
- -
- Address: - {{ s.address or "unknown" }}:{{ s.port or '22' }} - {% if s.path %} -
- Path: - {{ s.path|clean_path or "/" }} - {% endif %} - {% if s.username %} -
- Username: - {{ s.username }} - {% endif %} - {% if s.password %} -
- Password: - - - - - - - - - Copy - - - {% endif %} - {% if s.key and s.key != "" %} -
- SSH Key:
{{ s.key|decrypt }}
- {% endif %} -
- {% endfor %} + {% endfor %} +
+ {% endif %} + {% if connection.gpg|length > 0 %} +
+

GPG Connections

+ {% for s in connection.gpg %} +

{{ s }}

+ - {% endif %} - {% if connection.gpg|length > 0 %} -
-

GPG Connections

- {% for s in connection.gpg %} -

{{ s }}

- -
- {% if s.key and s.key != "" %} -
- GPG Key:
{{ s.key|decrypt }}
- {% endif %} -
- {% endfor %} +
+ {% if s.key and s.key != "" %} +
+ GPG Key: +
{{ s.key|decrypt }}
+ {% endif %}
- {% endif %} -

Tasks using this destination

- -
-
+ {% endfor %}
+ {% endif %} +

Tasks using this destination

+ +
+
+
{% endblock body %} diff --git a/web/templates/pages/connection/sftp_edit.html.j2 b/web/templates/pages/connection/sftp_edit.html.j2 index b274ec14..4db11094 100644 --- a/web/templates/pages/connection/sftp_edit.html.j2 +++ b/web/templates/pages/connection/sftp_edit.html.j2 @@ -1,146 +1,173 @@ {% extends "layout.html.j2" %} {% block crumbs %} - -{% endblock crumbs %} - -{% block body %} -

+

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

- -

- -
+ + + +{% endblock crumbs %} + +{% block body %} +

+ {% if sftp %} + Editing + {{ sftp }} + {% else %} + New SFTP Connection + {% endif %} +

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

+ +

+ -
- +
+
+
+ +
+

+ +

+ - - - - +
+
+
+ +
+ + + + {% endblock body %} diff --git a/web/templates/pages/connection/smb_edit.html.j2 b/web/templates/pages/connection/smb_edit.html.j2 index 9258af9f..b1ef1ace 100644 --- a/web/templates/pages/connection/smb_edit.html.j2 +++ b/web/templates/pages/connection/smb_edit.html.j2 @@ -1,138 +1,141 @@ {% extends "layout.html.j2" %} {% block crumbs %} - -{% endblock crumbs %} - -{% block body %} -

+

-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - + + + +{% endblock crumbs %} + +{% block body %} +

+ {% if smb %} + Editing + {{ smb }} + {% else %} + New SMB Connection + {% endif %} +

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

+ +

+ - - +
+
+ + {% endblock body %} diff --git a/web/templates/pages/connection/ssh_edit.html.j2 b/web/templates/pages/connection/ssh_edit.html.j2 index 0740e255..34c6d3d3 100644 --- a/web/templates/pages/connection/ssh_edit.html.j2 +++ b/web/templates/pages/connection/ssh_edit.html.j2 @@ -1,114 +1,131 @@ {% extends "layout.html.j2" %} {% block crumbs %} - -{% endblock crumbs %} - -{% block body %} -

+

-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - + + + +{% endblock crumbs %} + +{% block body %} +

+ {% if ssh %} + Editing + {{ ssh }} + {% else %} + New SSH Connection + {% endif %} +

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

+ +

+ - - +
+
+ + {% endblock body %} diff --git a/web/templates/pages/dashboard/dashboard.html.j2 b/web/templates/pages/dashboard/dashboard.html.j2 index 24c13b4f..c8968060 100644 --- a/web/templates/pages/dashboard/dashboard.html.j2 +++ b/web/templates/pages/dashboard/dashboard.html.j2 @@ -1,96 +1,122 @@ {% extends "layout.html.j2" %} {% block body %} -

Dashboard

-

Run Plan

-
-
+

Dashboard

+

Run Plan

+
+
+
+
+ -
-
- +
+
+ -
- -
-
-
-
-
-
- -
-
-
-
- +
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
{% endblock body %} diff --git a/web/templates/pages/dashboard/schedule.html.j2 b/web/templates/pages/dashboard/schedule.html.j2 index 59021468..ca26c05e 100644 --- a/web/templates/pages/dashboard/schedule.html.j2 +++ b/web/templates/pages/dashboard/schedule.html.j2 @@ -1,23 +1,28 @@
- {% if schedule and schedule_index %} -
-
- {% for index in schedule_index %}
{% endfor %} -
- -
-
-
- {% for col in schedule %} -
-
-
-
-
- {% endfor %} -
+ {% if schedule and schedule_index %} +
+
+ {% for index in schedule_index %} +
+ {% endfor %} +
+
- {% endif %} +
+
+ {% for col in schedule %} +
+
+
+
+ {% endfor %} +
+
+ {% endif %}
diff --git a/web/templates/pages/login.html.j2 b/web/templates/pages/login.html.j2 index 470764ff..ee21a15b 100644 --- a/web/templates/pages/login.html.j2 +++ b/web/templates/pages/login.html.j2 @@ -1,59 +1,74 @@ {% extends "layout.html.j2" %} {% block body_auth %} - {% with messages = get_flashed_messages() %} -
-
-
-
-

Atlas Automation Hub

- {% if messages %} -
-
- - - - {% for message in messages %}{{ message }}{% endfor %} -
-
- {% endif %} - {% if config['DEMO'] %} - - - {% else %} -
- - -
-
- - -
- -
- Note: you must be part of the analytics team to access this website. -
- {% endif %} -
-
- © - - Riverside Healthcare -
+ {% with messages = get_flashed_messages() %} +
+
+
+
+

Atlas Automation Hub

+ {% if messages %} +
+
+ + + + {% for message in messages %}{{ message }}{% endfor %}
-
+ + {% endif %} + {% if config['DEMO'] %} + + + {% else %} +
+ + +
+
+ + +
+ +
+ Note: you must be part of the analytics team to access this + website. +
+ {% endif %} + +
+ © + + Riverside Healthcare +
- {% endwith %} +
+
+ {% endwith %} {% endblock body_auth %} diff --git a/web/templates/pages/logout.html.j2 b/web/templates/pages/logout.html.j2 index 9e404fa6..4ca27d84 100644 --- a/web/templates/pages/logout.html.j2 +++ b/web/templates/pages/logout.html.j2 @@ -1,23 +1,28 @@ {% extends "layout.html.j2" %} {% block head %} - + {% endblock head %} {% block body_auth %} -
-
-
-

Bye.

- log back in -
- © - - Riverside Healthcare -
-
+
+
+
+

Bye.

+ log back in +
+ © + + Riverside Healthcare
+
+
{% endblock body_auth %} diff --git a/web/templates/pages/project/all.html.j2 b/web/templates/pages/project/all.html.j2 index 8badbc19..9b462c01 100644 --- a/web/templates/pages/project/all.html.j2 +++ b/web/templates/pages/project/all.html.j2 @@ -1,53 +1,61 @@ {% extends "layout.html.j2" %} {% block crumbs %} - + {% endblock crumbs %} {% block body %} -

- {% if user %} - {{ user }}'s - {% else %} - All - {% endif %} - Projects -

-
- {% for owner in owners %} - - - {{ owner[0] }} - - {{ owner[2] }} - - - - {% endfor %} -
-
-
-
+

+ {% if user %} + {{ user }}'s + {% else %} + All + {% endif %} + Projects +

+
+ {% for owner in owners %} + + + {{ owner[0] }} + + {{ owner[2] }} + + + + {% endfor %} +
+
+
+
{% endblock body %} diff --git a/web/templates/pages/project/cron.html.j2 b/web/templates/pages/project/cron.html.j2 index 95ac326f..91445144 100644 --- a/web/templates/pages/project/cron.html.j2 +++ b/web/templates/pages/project/cron.html.j2 @@ -1,125 +1,131 @@ -

Cron Schedule - Run on specific dates/times

+

+ Cron Schedule - Run on specific dates/times +

- - - + + +
-
-
-
-

Info

-
-
- Only one field is required="required", if the current date matches all the filed out field the task will run. Ex. Choose "Day of Week" = 6 and "Hour" = 7 and the project will run every Sunday at 7 AM. -
- Leaving an option blank will treat it as a wildcard. See - this article - for examples. -
-
-
- - +
+
+
+

Info

-
- - +
+ Only one field is required, if the current date matches all the filled out + fields the task will run. Ex. Choose "Day of Week" = 6 and "Hour" filed + out field the task will run. Ex. Choose "Day of Week" = 6 and "Hour" = 7 + and the project will run every Sunday at 7 AM. +
+ Leaving an option blank will treat it as a wildcard. See + this article for what is allowed.
-
- - +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+ +
+
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- -
-
- -
- -
-
-
- -
-
- -
- -
+
+
+ +
+
+ +
+
+
diff --git a/web/templates/pages/project/interval.html.j2 b/web/templates/pages/project/interval.html.j2 index 3086edce..47f10c92 100644 --- a/web/templates/pages/project/interval.html.j2 +++ b/web/templates/pages/project/interval.html.j2 @@ -1,73 +1,112 @@

- Interval Schedule - Run with specific duration - between - runs + Interval Schedule - Run with specific duration + between + runs

- - - + + +
-
-
- - +
+
+ + +
+
+ + +
+ +
+
+
-
- - + - -
-
- -
- +
+ +
+
+
- -
-
- -
- + +
diff --git a/web/templates/pages/project/new.html.j2 b/web/templates/pages/project/new.html.j2 index 1e80c77f..46a6a849 100644 --- a/web/templates/pages/project/new.html.j2 +++ b/web/templates/pages/project/new.html.j2 @@ -1,150 +1,177 @@ {% extends "layout.html.j2" %} {% block crumbs %} - + {% endblock crumbs %} {% block body %} -

- {% if p %} - Editing - {{ p }} - {% else %} - New Project - {% endif %} -

-
-
-
- -
- -
-
-
- -
- -
-
- {% if p %} -
- - - -
- {% endif %} -
- - - -
-
-
- {% include "pages/project/cron.html.j2" %} - +

+ {% if p %} + Editing + {{ p }} + {% else %} + New Project + {% endif %} +

+ {% if error %} +
+ Error: {{ error }} +
+ {% endif %} + +
+
+ +
+
-
- {% include "pages/project/interval.html.j2" %} - +
+
+ +
+
-
- {% include "pages/project/oneoff.html.j2" %} - +
+ {% if p %} +
+ + +
-
-

Global Parameters

-

- Parameters are key=value pairs, and can use parse(...) with embedded - strftime patterns - . Project parameters are passed to child tasks. -

-
- {% if p.params %} - {% for param in p.params %} -
-
-
-

- -

-
- +
{% include "pages/project/cron.html.j2" %}
+
{% include "pages/project/interval.html.j2" %}
+
{% include "pages/project/oneoff.html.j2" %}
+
+

Global Parameters

+

+ Parameters are key=value pairs, and can use + parse(...) with embedded + strftime patterns + . Project parameters are passed to child tasks. +

+
+ {% if p.params %} + {% for param in p.params %} +
+
+
+

+ +

+
+
+

+ +

+
-
-

- -

-
-
- {% endfor %} - {% endif %} -
- -
- - + fa-eye + {%- else -%} + fa-eye-slash + {%- endif -%}" + > + + + +
+
+

+ +

+
+
+ {% endfor %} + {% endif %} + + +
+ + {% endblock body %} diff --git a/web/templates/pages/project/one.html.j2 b/web/templates/pages/project/one.html.j2 index dfc7927d..e5081892 100644 --- a/web/templates/pages/project/one.html.j2 +++ b/web/templates/pages/project/one.html.j2 @@ -1,235 +1,227 @@ {% extends "layout.html.j2" %} {% block crumbs %} - + {% endblock crumbs %} {% block body %} -

{{ p }}

-

{{ p.description }}

- Last edited {{ (p.updated or p.created)|datetime_format_easy }} -
-

- - - - - Edit - -

-

- - - - - Delete - -

-

- - - - - Duplicate - -

+

{{ p }}

+

{{ p.description }}

+ Last edited {{ (p.updated or p.created)|datetime_format_easy }} + +
+
+ {% if p.sequence_tasks == 1 %} + Tasks will run in sequence by rank (ascending) with tasks having same + rank running at same time. + {% else %} + Tasks will run in parallel. + {% endif %} + {% if p.next_run %} +
+ Next Run: {{ p.next_run }} + {% endif %}
-
-
- {% if p.sequence_tasks == 1 %} - Tasks will run in sequence by rank (ascending) and then name (alpha ascending). - {% else %} - Tasks will run in parallel. +
+ {% if p.cron == 1 or p.intv==1 or p.ooff==1 %} +
+

Schedule

+ {% if p.cron == 1 %} +

Cron Schedule - Run on specific dates/times

+
+ Run + + {{ cron_desc }} + + + {% if p.cron_start_date != None %} + starting on + {{ p.cron_start_date }} + , {% endif %} - {% if task.next_run %} -
- Next Run: {{ task.next_run }} +
+ + {% if p.cron_end_date != None %} + ending on + {{ p.cron_end_date }} + . + {% else %} + with no end date. {% endif %} +
-
- {% if p.cron == 1 or p.intv==1 or p.ooff==1 %} -
-

Schedule

- {% if p.cron == 1 %} -

Cron Schedule - Run on specific dates/times

-
- Run - - - {% if p.cron_month != None or p.cron_year != None %}every{% endif %} - {% if p.cron_month != None %}{{ p.cron_month|cron_month }},{% endif %} - {% if p.cron_year != None %}{{ p.cron_year }}{% endif %} - - - - {% if p.cron_week != None %} - on the - {{ p.cron_week|num_st }} - week of the year, - {% endif %} - - - - {% if p.cron_week_day != None %} - on - {{ p.cron_week_day|cron_week_day }} - , - {% endif %} - - - - {% if p.cron_day != None %} - on the - {{ p.cron_day|num_st }} - day of the month, - {% endif %} - - - - {% if p.cron_hour or p.cron_min or p.cron_sec %} - at - {{ p.cron_hour|time }}:{{ p.cron_min|time }}:{{ p.cron_sec|time }} - (hh:mm:ss), - {% endif %} - - - - {% if p.cron_start_date != None %} - starting on - {{ p.cron_start_date }} - , - {% endif %} - - - {% if p.cron_end_date != None %} - ending on - {{ p.cron_end_date }} - . - {% else %} - with no end date. - {% endif %} - -
- {% endif %} - {% if p.intv == 1 %} -

- Interval Schedule - Run with specific duration - between - runs -

-
- {% if p.intv_type != None %} - Run every - {{ (p.intv_value,p.intv_type)|intv_name }} - {% endif %} - {% if p.intv_start_date != None %} - starting on - {{ p.intv_start_date }} - , - {% endif %} - {% if p.intv_end_date != None %} - ending on - {{ p.intv_end_date }} - . - {% else %} - with no end date. - {% endif %} -
- {% endif %} - {% if p.ooff == 1 %} -

Date Schedule - Run one time

-
- Running on - {{ p.ooff_date }}. -
- {% endif %} + {% endif %} + {% if p.intv == 1 %} +

+ Interval Schedule - Run with specific duration + between + runs +

+
+ {% if p.intv_type != None %} + Run every + {{ (p.intv_value,p.intv_type)|intv_name }} + {% endif %} + {% if p.intv_start_date != None %} + starting on + {{ p.intv_start_date }} + , + {% endif %} + {% if p.intv_end_date != None %} + ending on + {{ p.intv_end_date }} + . + {% else %} + with no end date. + {% endif %}
- {% else %} -
-
Project has no run schedule!
-
- {% endif %} - {% if p.params %} -
-

Global Parameters

- {% if has_secrets %}{% endif %} -

-{%- for param in p.params -%}
-{{ param.key }}={% if param.sensitive == 1 %}*******{% else %}{{param.value|decrypt}}{% endif %}
-{%  endfor -%}
-        
- + {% endif %} + {% if p.ooff == 1 %} +

Date Schedule - Run one time

+
+ Running on + {{ p.ooff_date }}.
- {% endif %} + {% endif %} +
+ {% else %} +
+
Project has no run schedule!
+
+ {% endif %} + {% if p.params %}
-

Tasks

- -
-
-
+

Global Parameters

+ {% if has_secrets %} + + {% endif %} +

+      {% for param in p.params %}
+        {{- param.key -}}={% if param.sensitive == 1 %}*******{% else %}{{ param.value|decrypt }}{% endif %}
+      {% endfor %}
+        
+ +
+ {% endif %} + {% endblock body %} diff --git a/web/templates/pages/project/oneoff.html.j2 b/web/templates/pages/project/oneoff.html.j2 index be9c3027..3c3847a0 100644 --- a/web/templates/pages/project/oneoff.html.j2 +++ b/web/templates/pages/project/oneoff.html.j2 @@ -1,32 +1,42 @@ -

Date Schedule - Run one time

+

+ Date Schedule - Run one time +

- - - + + +
-
- -
-
- -
- +
+ +
+
+
+ +
diff --git a/web/templates/pages/task/all.html.j2 b/web/templates/pages/task/all.html.j2 index 8620f2b9..a86d905a 100644 --- a/web/templates/pages/task/all.html.j2 +++ b/web/templates/pages/task/all.html.j2 @@ -1,68 +1,78 @@ {% extends "layout.html.j2" %} {% block crumbs %} - + {% endblock crumbs %} {% block body %} -

- {% if user %} - {{ user }}'s - {% else %} - All - {% endif %} - Tasks -

- {% if owners %} -

Owners

-
- {% for owner in owners %} - - - {{ owner[0] }} - {{ owner[2] }} - - - {% endfor %} -
- {% endif %} - {% if projects %} -

Projects

-
- {% for project in projects %} - - - {{ project[0] }} - {{ project[2] }} - - - {% endfor %} -
+

+ {% if user %} + {{ user }}'s + {% else %} + All {% endif %} -
-
+ Tasks +

+ {% if owners %} +

Owners

+
+ {% for owner in owners %} + + + {{ owner[0] }} + {{ owner[2] }} + + + {% endfor %} +
+ {% endif %} + {% if projects %} +

Projects

+
+ {% for project in projects %} + + + {{ project[0] }} + {{ project[2] }} + + + {% endfor %}
+ {% endif %} +
+
+
{% endblock body %} diff --git a/web/templates/pages/task/code.html.j2 b/web/templates/pages/task/code.html.j2 index b87d7b51..5d387591 100644 --- a/web/templates/pages/task/code.html.j2 +++ b/web/templates/pages/task/code.html.j2 @@ -1,46 +1,59 @@ {% if code %} - {% with rand = code|dateHash %} -
-
-

- -

-

- -

- {% if cache_enabled %} -

- - - - - Refresh Cache - -

- {% endif %} -
-
-
-
-
+  {% with rand = code|dateHash %}
+    
+
+

+ +

+

+ +

+ {% if cache_enabled %} +

+ + + + + Refresh Cache + +

+ {% endif %} +
+
+
+
+
 {{ code }}
                                                                                                 
-
-
+
+
+ {# prettier-ignore-start #} - {% endwith %} + {# prettier-ignore-end #} + {% endwith %} {% endif %} diff --git a/web/templates/pages/task/dest/ftp_dest.html.j2 b/web/templates/pages/task/dest/ftp_dest.html.j2 index 942070ed..afa87663 100644 --- a/web/templates/pages/task/dest/ftp_dest.html.j2 +++ b/web/templates/pages/task/dest/ftp_dest.html.j2 @@ -1,26 +1,37 @@ {% if ftp_dest|length ==0 %} -
-
There are no connections set up. Set up a connection first.
-
+
+
+ There are no connections set up. Set up a connection first. +
+
{% else %} -
- -
- -
+
+ +
+
- {% if org %} - - {% endif %} +
+ {% if org %} + + {% endif %} {% endif %} diff --git a/web/templates/pages/task/dest/gpg_file.html.j2 b/web/templates/pages/task/dest/gpg_file.html.j2 index 3e107c9c..8de9631e 100644 --- a/web/templates/pages/task/dest/gpg_file.html.j2 +++ b/web/templates/pages/task/dest/gpg_file.html.j2 @@ -1,26 +1,37 @@ {% if gpg_file|length ==0 %} -
-
There are no connections set up. Set up a connection first.
-
+
+
+ There are no connections set up. Set up a connection first. +
+
{% else %} -
- -
- -
+
+ +
+
- {% if org %} - - {% endif %} +
+ {% if org %} + + {% endif %} {% endif %} diff --git a/web/templates/pages/task/dest/sftp_dest.html.j2 b/web/templates/pages/task/dest/sftp_dest.html.j2 index af39132f..72d63e2a 100644 --- a/web/templates/pages/task/dest/sftp_dest.html.j2 +++ b/web/templates/pages/task/dest/sftp_dest.html.j2 @@ -1,26 +1,37 @@ {% if sftp_dest|length ==0 %} -
-
There are no connections set up. Set up a connection first.
-
+
+
+ There are no connections set up. Set up a connection first. +
+
{% else %} -
- -
- -
+
+ +
+
- {% if org %} - - {% endif %} +
+ {% if org %} + + {% endif %} {% endif %} diff --git a/web/templates/pages/task/dest/smb_dest.html.j2 b/web/templates/pages/task/dest/smb_dest.html.j2 index 96a3c7d0..e07171ce 100644 --- a/web/templates/pages/task/dest/smb_dest.html.j2 +++ b/web/templates/pages/task/dest/smb_dest.html.j2 @@ -1,26 +1,37 @@ {% if smb_dest|length ==0 %} -
-
There are no connections set up. Set up a connection first.
-
+
+
+ There are no connections set up. Set up a connection first. +
+
{% else %} -
- -
- -
+
+ +
+
- {% if org %} - - {% endif %} +
+ {% if org %} + + {% endif %} {% endif %} diff --git a/web/templates/pages/task/details/data_source.html.j2 b/web/templates/pages/task/details/data_source.html.j2 index 4746488a..d2e0b790 100644 --- a/web/templates/pages/task/details/data_source.html.j2 +++ b/web/templates/pages/task/details/data_source.html.j2 @@ -1,131 +1,165 @@ {% if t.source_type_id in [1,2,3,4,6] %} -
- {% if t.source_type_id == 1 and t.source_database_conn %} - -

Data Source - Database Connection

-
- - {{ t.source_database_conn.connection }}  - / -  {{ t.source_database_conn }} - -
-
-
-
{{ t.source_database_conn.connection_string|decrypt|database_pass }}
-
- {% elif t.source_type_id == 3 and t.source_sftp_conn %} - -

Data Source - SFTP Connection

- {% if t.source_sftp_file %} -
-
    -
  • - Filename: - {{ t.source_sftp_file }} -
  • - {% if t.source_sftp_ignore_delimiter != 1 and t.source_sftp_delimiter %} -
  • - Delimiter: - {{ t.source_sftp_delimiter or "," }} -
  • - {% endif %} -
-
+
+ {% if t.source_type_id == 1 and t.source_database_conn %} + +

Data Source - Database Connection

+
+ + {{ t.source_database_conn.connection }}  + / +  {{ t.source_database_conn }} + +
+
+
+
{{ t.source_database_conn.connection_string|decrypt|database_pass }}
+
+ {% elif t.source_type_id == 3 and t.source_sftp_conn %} + +

Data Source - SFTP Connection

+ {% if t.source_sftp_file %} +
+
    +
  • + Filename: + {{ t.source_sftp_file }} +
  • + {% if t.source_sftp_ignore_delimiter != 1 and t.source_sftp_delimiter %} +
  • + Delimiter: + {{ t.source_sftp_delimiter or "," }} +
  • {% endif %} - - {{ t.source_sftp_conn.connection.name }}  - / -  {{ t.source_sftp_conn.name }} - -
    -
    -
    -
    {{ t.source_sftp_conn.username }}@{{ t.source_sftp_conn.address }}:{{ t.source_sftp_conn.port or '22' }} {{ t.source_sftp_conn.path|clean_path }}{{ t.source_sftp_file }}
    - {% elif t.source_type_id == 4 and t.source_ftp_conn %} - -

    Data Source - FTP Connection

    - {% if t.source_ftp_file %} -
    -
      -
    • - Filename: - {{ t.source_ftp_file }} -
    • - {% if t.source_ftp_ignore_delimiter != 1 and t.source_ftp_delimiter %} -
    • - Delimiter: - {{ t.source_ftp_delimiter or "," }} -
    • - {% endif %} -
    -
    +
+
+ {% endif %} + + {{ t.source_sftp_conn.connection.name }}  + / +  {{ t.source_sftp_conn.name }} + +
+
+
+
{{ t.source_sftp_conn.username }}@{{ t.source_sftp_conn.address }}:{{ t.source_sftp_conn.port or '22' }} {{ t.source_sftp_conn.path|clean_path }}{{ t.source_sftp_file }}
+ {% elif t.source_type_id == 4 and t.source_ftp_conn %} + +

Data Source - FTP Connection

+ {% if t.source_ftp_file %} +
+ +
+ {% endif %} + + {{ t.source_ftp_conn.connection.name }}  + / +  {{ t.source_ftp_conn.name }} + +
+
+
+
{{ t.source_ftp_conn.username }}@{{ t.source_ftp_conn.address|clean_address }} {{ t.source_ftp_conn.path|clean_path }}{{ t.source_ftp_file }}
         
- {% elif t.source_type_id == 2 and t.source_smb_conn %} - -

Data Source - SMB Connection

- {% if t.source_smb_file %} -
-
    -
  • - Filename: - {{ t.source_smb_file }} -
  • - {% if t.source_smb_ignore_delimiter != 1 and t.source_smb_delimiter %} -
  • - Delimiter: - {{ t.source_smb_delimiter or "," }} -
  • - {% endif %} -
-
- {% endif %} - - {{ t.source_smb_conn.connection.name }}  - / -  {{ t.source_smb_conn.name }} - -
-
-
-
smb://{{ t.source_smb_conn.username }}:...@{{ t.source_smb_conn.server_ip }}({{ t.source_smb_conn.server_name }})/{{ t.source_smb_conn.share_name }}/{{ t.source_smb_conn.path|clean_path }}{{ t.source_smb_file }}
- {% elif t.source_type_id == 6 and t.source_ssh_conn %} - -

Data Source - SSH Connection

- - {{ t.source_ssh_conn.connection.name }}  - / -  {{ t.source_ssh_conn.name }} - -
-
-
-
{{ t.source_ssh_conn.username }}@{{ t.source_ssh_conn.address }}:{{ t.source_ssh_conn.port or '22' }}
- {% endif %} -
+ {% elif t.source_type_id == 2 and t.source_smb_conn %} + +

Data Source - SMB Connection

+ {% if t.source_smb_file %} +
+
    +
  • + Filename: + {{ t.source_smb_file }} +
  • +
  • + Ignore Subfolders: + {% if t.source_smb_ignore_subfolders == 1 %}True{% else %}False{% endif %} +
  • +
+
+ {% endif %} + + {{ t.source_smb_conn.connection.name }}  + / +  {{ t.source_smb_conn.name }} + +
+
+
+
smb://{{ t.source_smb_conn.username }}:...@{{ t.source_smb_conn.server_name }}/{{ t.source_smb_conn.share_name }}/{% if t.source_smb_conn.path|clean_path and t.source_smb_conn.path|clean_path not in t.source_smb_file %}{{ t.source_smb_conn.path|clean_path }}{% endif %}{{ t.source_smb_file }}
+ {% elif t.source_type_id == 6 and t.source_ssh_conn %} + +

Data Source - SSH Connection

+ + {{ t.source_ssh_conn.connection.name }}  + / +  {{ t.source_ssh_conn.name }} + +
+
+
+
{{ t.source_ssh_conn.username }}@{{ t.source_ssh_conn.address }}:{{ t.source_ssh_conn.port or '22' }}
+ {% endif %} +
{% endif %} diff --git a/web/templates/pages/task/details/destination.html.j2 b/web/templates/pages/task/details/destination.html.j2 index 2d2fd26c..64ceddb3 100644 --- a/web/templates/pages/task/details/destination.html.j2 +++ b/web/templates/pages/task/details/destination.html.j2 @@ -1,187 +1,251 @@ {% if t.destination_file_name or t.file_gpg_id and t.file_gpg or t.destination_sftp_conn and t.destination_sftp or t.destination_ftp and t.destination_ftp_conn or t.destination_smb and t.destination_smb_conn or t.email_completion == 1 or t.email_error == 1 %} -
-

Destination

- {% if t.destination_file_name %} -

File Information

-
-
    -
  • - File Name: - {{ t.destination_file_name|filename(t.file_type.ext) }} -
    -
    -
    -
  • - {% if t.destination_ignore_delimiter != 1 and t.destination_file_delimiter %} -
  • - File Delimiter: - {{ t.destination_file_delimiter or ',' }} -
  • - {% endif %} - {% if t.destination_file_line_terminator %} -
  • Line End Appending
  • - - {{ t.destination_file_line_terminator or '' }} - - {% endif %} - {% if t.destination_quote_level_id %} -
  • - Quote Level: - {{ t.destination_file_quote_level.name or 'default' }} -
  • - {% endif %} - {% if t.destination_create_zip == 1 %} -
  • - ZIP archive name: - {{ t.destination_zip_name }} -
  • - {% endif %} -
-
- {% endif %} - {% if t.file_gpg_id and t.file_gpg %} - -

GPG Encryption

- - {{ t.file_gpg_conn.connection.name }}  - / -  {{ t.file_gpg_conn.name }} - -
- - {% endif %} - - {% if t.destination_sftp_conn and t.destination_sftp %} -

SFTP Connection

- {% if t.destination_sftp_overwrite == 1 %} -
-
This task will attempt to overwrite files with the same name.
-
+
+

Destination

+ {% if t.destination_file_type_id != 5 %} + {% if t.destination_file_name %} +

File Information

+
+
    +
  • + File Name: + {{ t.destination_file_name|filename(t.file_type.ext) }} +
    +
    +
    +
  • + {% if t.destination_ignore_delimiter != 1 and t.destination_file_delimiter %} +
  • + File Delimiter: + {{ t.destination_file_delimiter or ',' }} +
  • {% endif %} - {% if t.destination_sftp_dont_send_empty_file == 1 %} -
    -
    This task will not upload empty files.
    -
    + {% if t.destination_file_line_terminator %} +
  • Line End Appending
  • + + {{ t.destination_file_line_terminator or '' }} + {% endif %} - - {{ t.destination_sftp_conn.connection.name }}  - / -  {{ t.destination_sftp_conn.name }} - -
    -
    -
    -
    {{ t.destination_sftp_conn.username }}@{{ t.destination_sftp_conn.address }}:{{ t.destination_sftp_conn.port or '22' }} {{ t.destination_sftp_conn.path|clean_path }}{{ t.destination_file_name|filename(t.file_type.ext)}}
    - {% endif %} - {% if t.destination_ftp and t.destination_ftp_conn %} - -

    FTP Connection

    - {% if t.destination_ftp_overwrite == 1 %} -
    -
    This task will attempt to overwrite files with the same name.
    -
    + {% if t.destination_quote_level_id %} +
  • + Quote Level: + {{ t.destination_file_quote_level.name or 'default' }} +
  • {% endif %} - {% if t.destination_ftp_dont_send_empty_file == 1 %} -
    -
    This task will not upload empty files.
    -
    + {% if t.destination_create_zip == 1 %} +
  • + ZIP archive name: + {{ t.destination_zip_name }} +
  • {% endif %} - - {{ t.destination_ftp_conn.connection.name }}  - / -  {{ t.destination_ftp_conn.name }} - -
    -
    +
+
+ {% endif %} + {% if t.file_gpg_id and t.file_gpg %} + +

GPG Encryption

+ + {{ t.file_gpg_conn.connection.name }}  + / +  {{ t.file_gpg_conn.name }} + +
+ + {% endif %} + + {% if t.destination_sftp_conn and t.destination_sftp %} +

SFTP Connection

+ {% if t.destination_sftp_overwrite == 1 %} +
+
+ This task will attempt to overwrite files with the same name.
-
{{ t.destination_ftp_conn.username }}@{{ t.destination_ftp_conn.address|clean_address }} {{ t.destination_ftp_conn.path|clean_path }}{{ t.destination_file_name|filename(t.file_type.ext)}}
+
{% endif %} - {% if t.destination_smb and t.destination_smb_conn %} - -

SMB Connection

- {% if t.destination_smb_overwrite == 1 %} -
-
This task will attempt to overwrite files with the same name.
-
- {% endif %} - {% if t.destination_smb_dont_send_empty_file == 1 %} -
-
This task will not upload empty files.
-
- {% endif %} - - {{ t.destination_smb_conn.connection.name }}  - / -  {{ t.destination_smb_conn.name }} - -
-
+ {% if t.destination_sftp_dont_send_empty_file == 1 %} +
+
+ This task will not upload empty files.
-
smb://{{ t.destination_smb_conn.username }}:...@{{ t.destination_smb_conn.server_ip }}({{ t.destination_smb_conn.server_name }})/{{ t.destination_smb_conn.share_name }}/{{ t.destination_smb_conn.path|clean_path }}{{ t.destination_file_name|filename(t.file_type.ext)}}
+
{% endif %} - {% if t.email_completion == 1 %} - -

Success Email

-
-
    - {% if t.email_completion_file == 1 %}
  • Output file attached to email
  • {% endif %} - {% if t.email_completion_file == 1 and t.email_completion_dont_send_empty_file == 1 %} -
  • Will not send with empty files
  • - {% endif %} - {% if t.email_completion_file == 1 and t.email_completion_file_embed == 1 %} -
  • File will be embedded in email body
  • - {% endif %} - {% if t.email_completion_log == 1 %}
  • Run logs embedded in email
  • {% endif %} -
  • - Email Recipients: - {{ t.email_completion_recipients or "None" }} -
  • -
  • - Email Subject: - {{ t.email_completion_subject or "default" }} -
    -
    -
    -
  • -
+ + {{ t.destination_sftp_conn.connection.name }}  + / +  {{ t.destination_sftp_conn.name }} + +
+
+
+
{{ t.destination_sftp_conn.username }}@{{ t.destination_sftp_conn.address }}:{{ t.destination_sftp_conn.port or '22' }} {{ t.destination_sftp_conn.path|clean_path }}{{ t.destination_file_name|filename(t.file_type.ext) }}
+ {% endif %} + {% if t.destination_ftp and t.destination_ftp_conn %} + +

FTP Connection

+ {% if t.destination_ftp_overwrite == 1 %} +
+
+ This task will attempt to overwrite files with the same name.
- {% if t.email_completion_message|length > 0 %} -

Message

-
{{ t.email_completion_message }}
- {% endif %} +
{% endif %} - - {% if t.email_error == 1 %} -

Error Email

-
-
    -
  • - Email Recipients: - {{ t.email_error_recipients or "None" }} -
  • -
  • - Email Subject: - {{ t.email_error_subject or "default" }} -
  • -
+ {% if t.destination_ftp_dont_send_empty_file == 1 %} +
+
+ This task will not upload empty files.
- {% if t.email_error_message|length > 0 %} -

Message

-
{{ t.email_error_message }}
- {% endif %} +
{% endif %} -
+ + {{ t.destination_ftp_conn.connection.name }}  + / +  {{ t.destination_ftp_conn.name }} + +
+
+
+
{{ t.destination_ftp_conn.username }}@{{ t.destination_ftp_conn.address|clean_address }} {{ t.destination_ftp_conn.path|clean_path }}{{ t.destination_file_name|filename(t.file_type.ext) }}
+ {% endif %} + {% if t.destination_smb and t.destination_smb_conn %} + +

SMB Connection

+ {% if t.destination_smb_overwrite == 1 %} +
+
+ This task will attempt to overwrite files with the same name. +
+
+ {% endif %} + {% if t.destination_smb_dont_send_empty_file == 1 %} +
+
+ This task will not upload empty files. +
+
+ {% endif %} + + {{ t.destination_smb_conn.connection.name }}  + / +  {{ t.destination_smb_conn.name }} + +
+
+
+
smb://{{ t.destination_smb_conn.username }}:...@{{ t.destination_smb_conn.server_name }}/{{ t.destination_smb_conn.share_name }}/{{ t.destination_smb_conn.path|clean_path }}{{ t.destination_file_name|filename(t.file_type.ext) }}
+ {% endif %} + {% endif %} + {% if t.email_completion == 1 %} + +

Success Email

+
+
    + {% if t.email_completion_file == 1 %} +
  • Output file attached to email
  • + {% endif %} + {% if t.email_completion_file == 1 and t.email_completion_dont_send_empty_file == 1 %} +
  • Will not send with empty files
  • + {% endif %} + {% if t.email_completion_file == 1 and t.email_completion_file_embed == 1 %} +
  • File will be embedded in email body
  • + {% endif %} + {% if t.email_completion_log == 1 %} +
  • Run logs embedded in email
  • + {% endif %} +
  • + Email Recipients: + {{ t.email_completion_recipients or "None" }} +
  • +
  • + Email Subject: + {{ t.email_completion_subject or "default" }} +
    +
    +
    +
  • +
+
+ {% if t.email_completion_message|length > 0 %} +

Message

+
{{ t.email_completion_message }}
+ {% endif %} + {% endif %} + + {% if t.email_error == 1 %} +

Error Email

+
+
    +
  • + Email Recipients: + {{ t.email_error_recipients or "None" }} +
  • +
  • + Email Subject: + {{ t.email_error_subject or "default" }} +
  • +
+
+ {% if t.email_error_message|length > 0 %} +

Message

+
{{ t.email_error_message }}
+ {% endif %} + {% endif %} +
{% endif %} diff --git a/web/templates/pages/task/details/processing.html.j2 b/web/templates/pages/task/details/processing.html.j2 index a188a212..0d42e47d 100644 --- a/web/templates/pages/task/details/processing.html.j2 +++ b/web/templates/pages/task/details/processing.html.j2 @@ -1,125 +1,167 @@ {% if t.processing_type_id != 'none' and t.processing_type_id != None %} -
- {% if t.processing_git and t.processing_type_id == 4 %} - -

Processing Script - GIT Address

- {{ t.processing_git }} -
-
-
- {% elif t.processing_url and t.processing_type_id == 5 %} - -

Processing Script - Web Address

- {{ t.processing_url }} -
-
-
- {% elif t.processing_type_id == 7 and t.processing_devops %} - -

Processing Script - Devops Address

- {{ t.processing_devops }} -
-
-
- {% elif t.processing_type_id == 1 and t.processing_smb_conn %} - -

Processing Script - SMB Connection

-
-
    -
  • - Filename: - {{ t.processing_smb_file }} -
  • -
-
- - {{ t.processing_smb_conn.connection.name }}  - / -  {{ t.processing_smb_conn.name }} - -
-
-
-
smb://{{ t.processing_smb_conn.username }}:...@{{ t.processing_smb_conn.server_ip }}({{ t.processing_smb_conn.server_name }})/{{ t.processing_smb_conn.share_name }}/{{ t.processing_smb_conn.path|clean_path }}{{ t.processing_smb_file }}
- {% elif t.processing_type_id == 2 and t.processing_sftp_conn %} - -

Processing Script - SFTP Connection

-
-
    -
  • - Filename: - {{ t.processing_sftp_file }} -
  • -
-
- - {{ t.processing_sftp_conn.connection.name }}  - / -  {{ t.processing_sftp_conn.name }} - -
-
-
-
{{ t.processing_sftp_conn.username }}@{{ t.processing_sftp_conn.address }}:{{ t.processing_sftp_conn.port or '22' }} {{ t.processing_sftp_conn.path|clean_path }}{{ t.processing_sftp_file }}
- {% elif t.processing_type_id == 3 and t.processing_ftp_conn %} - -

Processing Script - FTP Connection

-
-
    -
  • - Filename: - {{ t.processing_sftp_file }} -
  • - {% if t.processing_sftp_ignore_delimiter != 1 and t.processing_sftp_delimiter %} -
  • - Delimiter: - {{ t.processing_sftp_delimiter or "," }} -
  • - {% endif %} -
-
- - {{ t.processing_ftp_conn.connection.name }}  - / -  {{ t.processing_ftp_conn.name }} - -
-
-
-
{{ t.processing_ftp_conn.username }}@{{ t.processing_ftp_conn.address|clean_address }} {{ t.processing_ftp_conn.path|clean_path }}{{ t.processing_ftp_file }}
+  
+ {% if t.processing_git and t.processing_type_id == 4 %} + +

Processing Script - GIT Address

+ {{ t.processing_git }} +
+
+
+ {% elif t.processing_url and t.processing_type_id == 5 %} + +

Processing Script - Web Address

+ {{ t.processing_url }} +
+
+
+ {% elif t.processing_type_id == 7 and t.processing_devops %} + +

Processing Script - Devops Address

+ {{ t.processing_devops }} +
+
+
+ {% elif t.processing_type_id == 1 and t.processing_smb_conn %} + +

Processing Script - SMB Connection

+
+
    +
  • + Filename: + {{ t.processing_smb_file }} +
  • +
+
+ + {{ t.processing_smb_conn.connection.name }}  + / +  {{ t.processing_smb_conn.name }} + +
+
+
+
smb://{{ t.processing_smb_conn.username }}:...@{{ t.processing_smb_conn.server_name }}/{{ t.processing_smb_conn.share_name }}/{{ t.processing_smb_conn.path|clean_path }}{{ t.processing_smb_file }}
+ {% elif t.processing_type_id == 2 and t.processing_sftp_conn %} + +

Processing Script - SFTP Connection

+
+
    +
  • + Filename: + {{ t.processing_sftp_file }} +
  • +
+
+ + {{ t.processing_sftp_conn.connection.name }}  + / +  {{ t.processing_sftp_conn.name }} + +
+
+
+
{{ t.processing_sftp_conn.username }}@{{ t.processing_sftp_conn.address }}:{{ t.processing_sftp_conn.port or '22' }} {{ t.processing_sftp_conn.path|clean_path }}{{ t.processing_sftp_file }}
+ {% elif t.processing_type_id == 3 and t.processing_ftp_conn %} + +

Processing Script - FTP Connection

+
+
    +
  • + Filename: + {{ t.processing_ftp_file }} +
  • + {% if t.processing_ftp_ignore_delimiter != 1 and t.processing_ftp_delimiter %} +
  • + Delimiter: + {{ t.processing_ftp_delimiter or "," }} +
  • + {% endif %} +
+
+ + {{ t.processing_ftp_conn.connection.name }}  + / +  {{ t.processing_ftp_conn.name }} + +
+
+
+
{{ t.processing_ftp_conn.username }}@{{ t.processing_ftp_conn.address|clean_address }} {{ t.processing_ftp_conn.path|clean_path }}{{ t.processing_ftp_file }}
                 
- {% elif t.processing_code and t.processing_type_id == 6 %} - -

Processing Script - Source Code Connection

- {% with code = t.processing_code %} - {% include "pages/task/code.html.j2" %} - - {% endwith %} - {% endif %} - {% if t.processing_command %} -

Command

-
{{ t.processing_command }}
- {% endif %} -
+ {% elif t.processing_code and t.processing_type_id == 6 %} + +

Processing Script - Source Code Connection

+ {% with code = t.processing_code %} + {% include "pages/task/code.html.j2" %} + {% endwith %} + {% endif %} + {% if t.processing_command %} +

Command

+
{{ t.processing_command }}
+ {% endif %} +
{% endif %} diff --git a/web/templates/pages/task/details/query_location.html.j2 b/web/templates/pages/task/details/query_location.html.j2 index 1c5b80de..fab259e4 100644 --- a/web/templates/pages/task/details/query_location.html.j2 +++ b/web/templates/pages/task/details/query_location.html.j2 @@ -1,152 +1,193 @@ {% if t.source_type_id in [1,6] %} -
-

Query

-

Settings

- {% if t.source_type_id == 1 %} -
-
    -
  • - {% if t.source_query_include_header !=1 %} - Do not include - {% else %} - Include - {% endif %} - query headers -
  • -
  • - {% if t.enable_source_cache ==1 %} - Query cache enabled - {% else %} - Query cache not enabled - {% endif %} -
  • - {% if t.source_require_sql_output ==1 %}
  • SQL output is required for task to be successful
  • {% endif %} -
-
- {% endif %} - {% if t.source_git and t.source_type_id == 1 and t.source_query_type_id == 1 %} - - -
-
-
- {% elif t.source_devops and t.source_type_id == 1 and t.source_query_type_id == 7 %} - - -
-
-
- {% elif t.source_url and t.source_type_id == 1 and t.source_query_type_id == 3 %} - - -
-
-
- {% elif t.source_query_type_id == 2 and t.query_smb_conn %} - -

SMB Connection

-
-
    -
  • - Filename: - {{ t.query_smb_file }} -
  • -
-
- - {{ t.query_smb_conn.connection.name }}  - / -  {{ t.query_smb_conn.name }} - -
-
-
-
smb://{{ t.query_smb_conn.username }}:...@{{ t.query_smb_conn.server_ip }}({{ t.query_smb_conn.server_name }})/{{ t.query_smb_conn.share_name }}/{{ t.query_smb_conn.path|clean_path }}{{ t.query_smb_file }}
- {% elif t.source_query_type_id == 5 and t.query_sftp_conn %} - -

SFTP Connection

-
-
    -
  • - Filename: - {{ t.query_sftp_file }} -
  • - {% if t.query_sftp_ignore_delimiter != 1 and t.query_sftp_delimiter %} -
  • - Delimiter: - {{ t.query_sftp_delimiter or "," }} -
  • - {% endif %} -
-
- - {{ t.query_sftp_conn.connection.name }}  - / -  {{ t.query_sftp_conn.name }} - -
-
-
-
{{ t.query_sftp_conn.username }}@{{ t.query_sftp_conn.address }}:{{ t.query_sftp_conn.port or '22' }} {{ t.query_sftp_conn.path|clean_path }}{{ t.query_sftp_file }}
- {% elif t.source_query_type_id == 6 and t.query_ftp_conn %} - -

FTP Connection

-
-
    -
  • - Filename: - {{ t.query_ftp_file }} -
  • - {% if t.query_ftp_ignore_delimiter != 1 and t.query_ftp_delimiter %} -
  • - Delimiter: - {{ t.query_ftp_delimiter or "," }} -
  • - {% endif %} -
-
- - {{ t.query_ftp_conn.connection.name }}  - / -  {{ t.query_ftp_conn.name }} - -
-
-
-
{{ t.query_ftp_conn.username }}@{{ t.query_ftp_conn.address|clean_address }}{{ t.query_ftp_conn.path|clean_path }}{{ t.source_ftp_file }}
- {% elif t.source_code and t.source_query_type_id == 4 %} - -
-
-
- {% endif %} -
+
+

Query

+

Settings

+ {% if t.source_type_id == 1 %} +
+
    +
  • + {% if t.source_query_include_header !=1 %} + Do not include + {% else %} + Include + {% endif %} + query headers +
  • +
  • + {% if t.enable_source_cache ==1 %} + Query cache enabled + {% else %} + Query cache not enabled + {% endif %} +
  • + {% if t.source_require_sql_output ==1 %} +
  • SQL output is required for task to be successful
  • + {% endif %} +
+
+ {% endif %} + {% if t.source_git and t.source_type_id == 1 and t.source_query_type_id == 1 %} + + +
+
+
+ {% elif t.source_devops and t.source_type_id == 1 and t.source_query_type_id == 7 %} + + +
+
+
+ {% elif t.source_url and t.source_type_id == 1 and t.source_query_type_id == 3 %} + + +
+
+
+ {% elif t.source_query_type_id == 2 and t.query_smb_conn %} + +

SMB Connection

+
+
    +
  • + Filename: + {{ t.query_smb_file }} +
  • +
+
+ + {{ t.query_smb_conn.connection.name }}  + / +  {{ t.query_smb_conn.name }} + +
+
+
+
smb://{{ t.query_smb_conn.username }}:...@{{ t.query_smb_conn.server_name }}/{{ t.query_smb_conn.share_name }}/{{ t.query_smb_conn.path|clean_path }}{{ t.query_smb_file }}
+ {% elif t.source_query_type_id == 5 and t.query_sftp_conn %} + +

SFTP Connection

+
+
    +
  • + Filename: + {{ t.query_sftp_file }} +
  • + {% if t.query_sftp_ignore_delimiter != 1 and t.query_sftp_delimiter %} +
  • + Delimiter: + {{ t.query_sftp_delimiter or "," }} +
  • + {% endif %} +
+
+ + {{ t.query_sftp_conn.connection.name }}  + / +  {{ t.query_sftp_conn.name }} + +
+
+
+
{{ t.query_sftp_conn.username }}@{{ t.query_sftp_conn.address }}:{{ t.query_sftp_conn.port or '22' }} {{ t.query_sftp_conn.path|clean_path }}{{ t.query_sftp_file }}
+ {% elif t.source_query_type_id == 6 and t.query_ftp_conn %} + +

FTP Connection

+
+
    +
  • + Filename: + {{ t.query_ftp_file }} +
  • + {% if t.query_ftp_ignore_delimiter != 1 and t.query_ftp_delimiter %} +
  • + Delimiter: + {{ t.query_ftp_delimiter or "," }} +
  • + {% endif %} +
+
+ + {{ t.query_ftp_conn.connection.name }}  + / +  {{ t.query_ftp_conn.name }} + +
+
+
+
{{ t.query_ftp_conn.username }}@{{ t.query_ftp_conn.address|clean_address }}{{ t.query_ftp_conn.path|clean_path }}{{ t.source_ftp_file }}
+ {% elif t.source_code and t.source_query_type_id == 4 %} + +
+
+
+ {% endif %} +
{% endif %} diff --git a/web/templates/pages/task/new.html.j2 b/web/templates/pages/task/new.html.j2 index 37af3615..11ada9f9 100644 --- a/web/templates/pages/task/new.html.j2 +++ b/web/templates/pages/task/new.html.j2 @@ -1,140 +1,226 @@ {% extends "layout.html.j2" %} - {% block crumbs %} - + {% endblock crumbs %} - {% block body %} -

- {% if t %} - Editing - {{ t.name }} - {% else %} - New Task - {% endif %} -

-
-
-
- -
- -
-
-
- -
- +

+ {% if t %} + Editing + {{ t.name }} + {% else %} + New Task + {% endif %} +

+ + {% if t %} +
+
+
+ + + Editing: {{ t.name }} + + + +
+ + + +
+
+
+
+ {% endif %} + + + + +
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+

Task Parameters

+

+ Parameters are key=value pairs, and can use + parse(...) with embedded + strftime patterns + . Task parameters override project parameters. +

+
+ {% if t.params %} + {% for param in t.params %} +
+
+
+

+ +

-
-
- -
- +
+

+ +

+
+

+ +

+
-
-
-

Task Parameters

-

- Parameters are key=value pairs, and can use parse(...) with embedded - strftime patterns - . Task parameters override project parameters. -

-
- {% if t.params %} - {% for param in t.params %} -
-
-
-

- -

-
-
-

- -

- -
-

- -

-
-
- {% endfor %} - {% endif %} -
- -
- {% include "pages/task/new/data_source.html.j2" %} - {% include "pages/task/new/query_location.html.j2" %} - {% include "pages/task/new/processing.html.j2" %} - {% include "pages/task/new/destination.html.j2" %} - - - + {% endfor %} + {% endif %} +
+ +
+ {% include "pages/task/new/data_source.html.j2" %} + {% include "pages/task/new/query_location.html.j2" %} + {% include "pages/task/new/processing.html.j2" %} + {% include "pages/task/new/destination.html.j2" %} + + {% endblock body %} diff --git a/web/templates/pages/task/new/data_source.html.j2 b/web/templates/pages/task/new/data_source.html.j2 index eb0cd274..d9539fe6 100644 --- a/web/templates/pages/task/new/data_source.html.j2 +++ b/web/templates/pages/task/new/data_source.html.j2 @@ -1,236 +1,336 @@
-

Data Source

+

Data Source

+
+
+ +
+
+
-
- -
-
-
-
- -
- -
-
-
- {% if t and t.source_database_id %} - {% include "pages/task/source/database_source.html.j2" %} - - {% endif %} -
-
- -
-
- -
- -
-
-
- {% if t and t.source_smb_id %} - {% include "pages/task/source/smb_source.html.j2" %} - - {% endif %} -
-
- - - -
-
- - - -
-
- - -
-
- -
-
- -
- -
-
-
- {% if t and t.source_sftp_id %} - {% include "pages/task/source/sftp_source.html.j2" %} - - {% endif %} -
-
- - - -
-
- - - -
-
- - -
-
- -
-
- -
- -
-
-
- {% if t and t.source_ftp_id %} - {% include "pages/task/source/ftp_source.html.j2" %} - - {% endif %} -
-
- - - -
-
- - - -
-
- - -
-
- -
-
- -
- -
-
-
- {% if t and t.source_ssh_id %} - {% include "pages/task/source/ssh_source.html.j2" %} - - {% endif %} -
- -
+
+
+ +
+ +
+
+
+ {% if t and t.source_ssh_id %} + {% include "pages/task/source/ssh_source.html.j2" %} + {% endif %} +
+ +
diff --git a/web/templates/pages/task/new/destination.html.j2 b/web/templates/pages/task/new/destination.html.j2 index 0c641126..0986609d 100644 --- a/web/templates/pages/task/new/destination.html.j2 +++ b/web/templates/pages/task/new/destination.html.j2 @@ -1,456 +1,666 @@
-

Data Destination

-

File Properties

-
- -
- -
+

Data Destination

+

File Properties

+
+ +
+
+
+