diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index efe7b42..c2dfe1f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,7 +16,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v4 with: - python-version: '3.12' + python-version: '3.13' cache: "poetry" - name: Setup Node.js uses: actions/setup-node@v3 diff --git a/Makefile b/Makefile index f1753bf..bf5e4e7 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,7 @@ clean: .PHONY: fix fix: @echo "Run ruff" - @exec poetry run ruff --fix fastadmin tests docs examples + @exec poetry run ruff check --fix fastadmin tests docs examples @echo "Run isort" @exec poetry run isort fastadmin tests docs examples @echo "Run black" @@ -21,7 +21,7 @@ fix: .PHONY: lint lint: @echo "Run ruff" - @exec poetry run ruff fastadmin tests docs examples + @exec poetry run ruff check fastadmin tests docs examples @echo "Run isort" @exec poetry run isort --check-only fastadmin tests docs examples @echo "Run black" @@ -34,7 +34,7 @@ lint: # -n auto : fix django .PHONY: test test: - @exec poetry run pytest --cov=fastadmin --cov-report=term-missing --cov-report=xml --cov-fail-under=80 -s tests + @exec poetry run pytest -n 1 --cov=fastadmin --cov-report=term-missing --cov-report=xml --cov-fail-under=80 -s tests @exec make -C frontend test .PHONY: kill diff --git a/docs/build.py b/docs/build.py index 35a4205..dd9adb8 100644 --- a/docs/build.py +++ b/docs/build.py @@ -1,12 +1,12 @@ import inspect import os +import re import sys from datetime import datetime, timezone from pathlib import Path from django.apps import apps from django.apps.registry import Apps -from htmlmin import minify from jinja2 import Environment, FileSystemLoader, select_autoescape from fastadmin.settings import ROOT_DIR, Settings @@ -18,6 +18,12 @@ Apps.check_apps_ready = lambda x: None +def html_minify(html: str) -> str: + html = re.sub(r">\s+<", "><", html) + html = re.sub(r"\s+", " ", html) + return html.strip() + + class App: label = "app" @@ -39,6 +45,12 @@ def read_cls_docstring(cls): def get_versions(): return [ + { + "version": "0.2.20", + "changes": [ + "Fix for _id fields. Bump packages for backend and frontend.", + ], + }, { "version": "0.2.19", "changes": [ @@ -648,7 +660,7 @@ def build(): index_template = env.get_template("templates/index.html") index_html = index_template.render(**context) with Path.open(Path("index.html"), "w") as fh: - fh.write(minify(index_html)) + fh.write(html_minify(index_html)) readme_template = env.get_template("templates/readme.md") readme_md = readme_template.render(**context) diff --git a/docs/index.html b/docs/index.html index 79de874..da80e2d 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,1314 +1 @@ - FastAdmin | Documentation

FastAdmin | Documentation

  • Created: 7 March 2023
  • Updated: 03 January 2025

Introduction

FastAdmin is an easy-to-use Admin Dashboard App for FastAPI/Django/Flask inspired by Django Admin.

FastAdmin was built with relations in mind and admiration for the excellent and popular Django Admin. It's engraved in its design that you may configure your admin dashboard for FastAPI/Django/Flask easiest way.

FastAdmin is designed to be minimalistic, functional and yet familiar.


Getting Started

If you have any questions that are beyond the scope of the documentation, Please feel free to email us.

Installation

Follow the steps below to setup FastAdmin:

Install the package using pip:

Note: For zsh and macos use: pip install fastadmin[fastapi,django]

-  
-
-pip install fastadmin[fastapi,django]  # for fastapi with django orm
-pip install fastadmin[fastapi,tortoise-orm]  # for fastapi with tortoise orm
-pip install fastadmin[fastapi,pony]  # for fastapi with pony orm
-pip install fastadmin[fastapi,sqlalchemy]  # for fastapi with sqlalchemy orm
-pip install fastadmin[django]  # for django with django orm
-pip install fastadmin[django,pony]  # for django with pony orm
-pip install fastadmin[flask,sqlalchemy]  # for flask with sqlalchemy
-
-  
-

Install the package using poetry:

-  
-
-poetry add 'fastadmin[fastapi,django]'  # for fastapi with django orm
-poetry add 'fastadmin[fastapi,tortoise-orm]'  # for fastapi with tortoise orm
-poetry add 'fastadmin[fastapi,pony]'  # for fastapi with pony orm
-poetry add 'fastadmin[fastapi,sqlalchemy]'  # for fastapi with sqlalchemy orm
-poetry add 'fastadmin[django]'  # for django with django orm
-poetry add 'fastadmin[django,pony]'  # for django with pony orm
-poetry add 'fastadmin[flask,sqlalchemy]'  # for flask with sqlalchemy
-
-  
-

Configure required settings using virtual environment variables:

Note: You can add these variables to .env and use python-dotenv to load them. See all settings here

-  
-
-export ADMIN_USER_MODEL=User
-export ADMIN_USER_MODEL_USERNAME_FIELD=username
-export ADMIN_SECRET_KEY=secret_key
-
-  
-

Quick Tutorial

Setup FastAdmin for a framework

-  
-from fastapi import FastAPI
-
-from fastadmin import fastapi_app as admin_app
-
-app = FastAPI()
-
-app.mount("/admin", admin_app)
-
-  
-
-  
-from django.urls import path
-
-from fastadmin import get_django_admin_urls as get_admin_urls
-from fastadmin.settings import settings
-
-urlpatterns = [
-    path(f"{settings.ADMIN_PREFIX}/", get_admin_urls()),
-]
-
-  
-
-  
-from flask import Flask
-
-from fastadmin import flask_app as admin_app
-
-app = Flask(__name__)
-
-app.register_blueprint(admin_app, url_prefix="/admin")
-
-  
-

Register ORM models

-  
-from uuid import UUID
-
-import bcrypt
-from tortoise import fields
-from tortoise.models import Model
-
-from fastadmin import TortoiseModelAdmin, register
-
-
-class User(Model):
-    username = fields.CharField(max_length=255, unique=True)
-    hash_password = fields.CharField(max_length=255)
-    is_superuser = fields.BooleanField(default=False)
-    is_active = fields.BooleanField(default=False)
-
-    def __str__(self):
-        return self.username
-
-
-@register(User)
-class UserAdmin(TortoiseModelAdmin):
-    exclude = ("hash_password",)
-    list_display = ("id", "username", "is_superuser", "is_active")
-    list_display_links = ("id", "username")
-    list_filter = ("id", "username", "is_superuser", "is_active")
-    search_fields = ("username",)
-
-    async def authenticate(self, username: str, password: str) -> UUID | int | None:
-        user = await User.filter(username=username, is_superuser=True).first()
-        if not user:
-            return None
-        if not bcrypt.checkpw(password.encode(), user.hash_password.encode()):
-            return None
-        return user.id
-
-  
-
-  
-from django.db import models
-
-from fastadmin import DjangoModelAdmin, register
-
-
-class User(models.Model):
-    username = models.CharField(max_length=255, unique=True)
-    hash_password = models.CharField(max_length=255)
-    is_superuser = models.BooleanField(default=False)
-    is_active = models.BooleanField(default=False)
-
-    def __str__(self):
-        return self.username
-
-
-@register(User)
-class UserAdmin(DjangoModelAdmin):
-    exclude = ("hash_password",)
-    list_display = ("id", "username", "is_superuser", "is_active")
-    list_display_links = ("id", "username")
-    list_filter = ("id", "username", "is_superuser", "is_active")
-    search_fields = ("username",)
-
-    def authenticate(self, username, password):
-        obj = User.objects.filter(username=username, is_superuser=True).first()
-        if not obj:
-            return None
-        if not obj.check_password(password):
-            return None
-        return obj.id
-
-  
-
-  
-import bcrypt
-from sqlalchemy import Boolean, Integer, String, select
-from sqlalchemy.ext.asyncio import async_sessionmaker, create_async_engine
-from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
-
-from fastadmin import SqlAlchemyModelAdmin, register
-
-sqlalchemy_engine = create_async_engine(
-    "sqlite+aiosqlite:///:memory:",
-    echo=True,
-)
-sqlalchemy_sessionmaker = async_sessionmaker(sqlalchemy_engine, expire_on_commit=False)
-
-
-class Base(DeclarativeBase):
-    pass
-
-
-class User(Base):
-    __tablename__ = "user"
-
-    id: Mapped[int] = mapped_column(Integer, primary_key=True, nullable=False)
-    username: Mapped[str] = mapped_column(String(length=255), nullable=False)
-    hash_password: Mapped[str] = mapped_column(String(length=255), nullable=False)
-    is_superuser: Mapped[bool] = mapped_column(Boolean, default=False, nullable=False)
-    is_active: Mapped[bool] = mapped_column(Boolean, default=False, nullable=False)
-
-    def __str__(self):
-        return self.username
-
-
-@register(User, sqlalchemy_sessionmaker=sqlalchemy_sessionmaker)
-class UserAdmin(SqlAlchemyModelAdmin):
-    exclude = ("hash_password",)
-    list_display = ("id", "username", "is_superuser", "is_active")
-    list_display_links = ("id", "username")
-    list_filter = ("id", "username", "is_superuser", "is_active")
-    search_fields = ("username",)
-
-    async def authenticate(self, username, password):
-        sessionmaker = self.get_sessionmaker()
-        async with sessionmaker() as session:
-            query = select(User).filter_by(username=username, password=password, is_superuser=True)
-            result = await session.scalars(query)
-            user = result.first()
-            if not user:
-                return None
-            if not bcrypt.checkpw(password.encode(), user.hash_password.encode()):
-                return None
-            return user.id
-
-  
-
-  
-import bcrypt
-from pony.orm import Database, PrimaryKey, Required, db_session
-
-from fastadmin import PonyORMModelAdmin, register
-
-db = Database()
-db.bind(provider="sqlite", filename=":memory:", create_db=True)
-
-
-class User(db.Entity):  # type: ignore [name-defined]
-    _table_ = "user"
-    id = PrimaryKey(int, auto=True)
-    username = Required(str)
-    hash_password = Required(str)
-    is_superuser = Required(bool, default=False)
-    is_active = Required(bool, default=False)
-
-    def __str__(self):
-        return self.username
-
-
-@register(User)
-class UserAdmin(PonyORMModelAdmin):
-    exclude = ("hash_password",)
-    list_display = ("id", "username", "is_superuser", "is_active")
-    list_display_links = ("id", "username")
-    list_filter = ("id", "username", "is_superuser", "is_active")
-    search_fields = ("username",)
-
-    @db_session
-    def authenticate(self, username, password):
-        user = next((f for f in self.model_cls.select(username=username, password=password, is_superuser=True)), None)
-        if not user:
-            return None
-        if not bcrypt.checkpw(password.encode(), user.hash_password.encode()):
-            return None
-        return user.id
-
-  
-

Settings

There are settings with default values:

Note: Export virtual environment variables or create .env file with variables and use python-dotenv package.

-  
-class Settings:
-    """Settings"""
-
-    # This value is the prefix you used for mounting FastAdmin app for FastAPI.
-    ADMIN_PREFIX: str = os.getenv("ADMIN_PREFIX", "admin")
-
-    # This value is the site name on sign-in page and on header.
-    ADMIN_SITE_NAME: str = os.getenv("ADMIN_SITE_NAME", "FastAdmin")
-
-    # This value is the logo path on sign-in page.
-    ADMIN_SITE_SIGN_IN_LOGO: str = os.getenv("ADMIN_SITE_SIGN_IN_LOGO", "/admin/static/images/sign-in-logo.svg")
-
-    # This value is the logo path on header.
-    ADMIN_SITE_HEADER_LOGO: str = os.getenv("ADMIN_SITE_HEADER_LOGO", "/admin/static/images/header-logo.svg")
-
-    # This value is the favicon path.
-    ADMIN_SITE_FAVICON: str = os.getenv("ADMIN_SITE_FAVICON", "/admin/static/images/favicon.png")
-
-    # This value is the primary color for FastAdmin.
-    ADMIN_PRIMARY_COLOR: str = os.getenv("ADMIN_PRIMARY_COLOR", "#009485")
-
-    # This value is the session id key to store session id in http only cookies.
-    ADMIN_SESSION_ID_KEY: str = os.getenv("ADMIN_SESSION_ID_KEY", "admin_session_id")
-
-    # This value is the expired_at period (in sec) for session id.
-    ADMIN_SESSION_EXPIRED_AT: int = os.getenv("ADMIN_SESSION_EXPIRED_AT", 144000)  # in sec
-
-    # This value is the date format for JS widgets.
-    ADMIN_DATE_FORMAT: str = os.getenv("ADMIN_DATE_FORMAT", "YYYY-MM-DD")
-
-    # This value is the datetime format for JS widgets.
-    ADMIN_DATETIME_FORMAT: str = os.getenv("ADMIN_DATETIME_FORMAT", "YYYY-MM-DD HH:mm")
-
-    # This value is the time format for JS widgets.
-    ADMIN_TIME_FORMAT: str = os.getenv("ADMIN_TIME_FORMAT", "HH:mm:ss")
-
-    # This value is the name for User db/orm model class for authentication.
-    ADMIN_USER_MODEL: str = os.getenv("ADMIN_USER_MODEL")
-
-    # This value is the username field for User db/orm model for for authentication.
-    ADMIN_USER_MODEL_USERNAME_FIELD: str = os.getenv("ADMIN_USER_MODEL_USERNAME_FIELD")
-
-    # This value is the key to securing signed data - it is vital you keep this secure,
-    # or attackers could use it to generate their own signed values.
-    ADMIN_SECRET_KEY: str = os.getenv("ADMIN_SECRET_KEY")
-
-    # This value disables the crop image feature in FastAdmin.
-    ADMIN_DISABLE_CROP_IMAGE: bool = os.getenv("ADMIN_DISABLE_CROP_IMAGE", False)
-
-  
-

Note: Settings without default values are required.


Dashboard Widget Admins

Registering Widgets

Register Dashboard widgets

-  
-import datetime
-
-from tortoise import Tortoise, fields
-from tortoise.models import Model
-
-from fastadmin import DashboardWidgetAdmin, DashboardWidgetType, WidgetType, register_widget
-
-
-class DashboardUser(Model):
-    username = fields.CharField(max_length=255, unique=True)
-    hash_password = fields.CharField(max_length=255)
-    is_superuser = fields.BooleanField(default=False)
-    is_active = fields.BooleanField(default=False)
-
-    def __str__(self):
-        return self.username
-
-
-@register_widget
-class UsersDashboardWidgetAdmin(DashboardWidgetAdmin):
-    title = "Users"
-    dashboard_widget_type = DashboardWidgetType.ChartLine
-
-    x_field = "date"
-    x_field_filter_widget_type = WidgetType.DatePicker
-    x_field_filter_widget_props: dict[str, str] = {"picker": "month"}  # noqa: RUF012
-    x_field_periods = ["day", "week", "month", "year"]  # noqa: RUF012
-
-    y_field = "count"
-
-    async def get_data(
-        self,
-        min_x_field: str | None = None,
-        max_x_field: str | None = None,
-        period_x_field: str | None = None,
-    ) -> dict:
-        conn = Tortoise.get_connection("default")
-
-        if not min_x_field:
-            min_x_field_date = datetime.datetime.now(tz=datetime.UTC) - datetime.timedelta(days=360)
-        else:
-            min_x_field_date = datetime.datetime.fromisoformat(min_x_field)
-        if not max_x_field:
-            max_x_field_date = datetime.datetime.now(tz=datetime.UTC) + datetime.timedelta(days=1)
-        else:
-            max_x_field_date = datetime.datetime.fromisoformat(max_x_field)
-
-        if not period_x_field or period_x_field not in (self.x_field_periods or []):
-            period_x_field = "month"
-
-        results = await conn.execute_query_dict(
-            """
-                SELECT
-                    to_char(date_trunc($1, "user"."created_at")::date, 'dd/mm/yyyy') "date",
-                    COUNT("user"."id") "count"
-                FROM "user"
-                WHERE "user"."created_at" >= $2 AND "user"."created_at" <= $3
-                GROUP BY "date" ORDER BY "date"
-            """,
-            [period_x_field, min_x_field_date, max_x_field_date],
-        )
-        return {
-            "results": results,
-            "min_x_field": min_x_field_date.isoformat(),
-            "max_x_field": max_x_field_date.isoformat(),
-            "period_x_field": period_x_field,
-        }
-
-  
-
-  
-import datetime
-
-from django.db import connection, models
-
-from fastadmin import DashboardWidgetAdmin, DashboardWidgetType, WidgetType, register_widget
-
-
-class DashboardUser(models.Model):
-    username = models.CharField(max_length=255, unique=True)
-    hash_password = models.CharField(max_length=255)
-    is_superuser = models.BooleanField(default=False)
-    is_active = models.BooleanField(default=False)
-
-    def __str__(self):
-        return self.username
-
-
-@register_widget
-class UsersDashboardWidgetAdmin(DashboardWidgetAdmin):
-    title = "Users"
-    dashboard_widget_type = DashboardWidgetType.ChartLine
-
-    x_field = "date"
-    x_field_filter_widget_type = WidgetType.DatePicker
-    x_field_filter_widget_props: dict[str, str] = {"picker": "month"}  # noqa: RUF012
-    x_field_periods = ["day", "week", "month", "year"]  # noqa: RUF012
-
-    y_field = "count"
-
-    def get_data(  # type: ignore [override]
-        self,
-        min_x_field: str | None = None,
-        max_x_field: str | None = None,
-        period_x_field: str | None = None,
-    ) -> dict:
-        def dictfetchall(cursor):
-            columns = [col[0] for col in cursor.description]
-            return [dict(zip(columns, row, strict=True)) for row in cursor.fetchall()]
-
-        with connection.cursor() as c:
-            if not min_x_field:
-                min_x_field_date = datetime.datetime.now(tz=datetime.UTC) - datetime.timedelta(days=360)
-            else:
-                min_x_field_date = datetime.datetime.fromisoformat(min_x_field)
-            if not max_x_field:
-                max_x_field_date = datetime.datetime.now(tz=datetime.UTC) + datetime.timedelta(days=1)
-            else:
-                max_x_field_date = datetime.datetime.fromisoformat(max_x_field)
-
-            if not period_x_field or period_x_field not in (self.x_field_periods or []):
-                period_x_field = "month"
-
-            c.execute(
-                """
-                    SELECT
-                        to_char(date_trunc($1, "user"."created_at")::date, 'dd/mm/yyyy') "date",
-                        COUNT("user"."id") "count"
-                    FROM "user"
-                    WHERE "user"."created_at" >= $2 AND "user"."created_at" <= $3
-                    GROUP BY "date" ORDER BY "date"
-                """,
-                [period_x_field, min_x_field_date, max_x_field_date],
-            )
-            results = dictfetchall(c)
-            return {
-                "results": results,
-                "min_x_field": min_x_field_date.isoformat(),
-                "max_x_field": max_x_field_date.isoformat(),
-                "period_x_field": period_x_field,
-            }
-
-  
-
-  
-See example for Tortoise ORM
-  
-
-  
-See example for Tortoise ORM
-  
-

Methods and Attributes

There are methods and attributes for Dashboard Widget Admin:

-  
-class DashboardWidgetAdmin:
-    title: str
-    dashboard_widget_type: DashboardWidgetType
-    x_field: str
-    y_field: str | None = None
-    series_field: str | None = None
-    x_field_filter_widget_type: WidgetType | None = None
-    x_field_filter_widget_props: dict[str, Any] | None = None
-    x_field_periods: list[str] | None = None
-
-    async def get_data(
-        self,
-        min_x_field: str | None = None,
-        max_x_field: str | None = None,
-        period_x_field: str | None = None,
-    ) -> dict[str, Any]:
-        """This method is used to get data for dashboard widget.
-
-        :params min_x_field: A minimum value for x_field.
-        :params max_x_field: A maximum value for x_field.
-        :params period_x_field: A period value for x_field.
-        :return: A dict with data.
-        """
-        raise NotImplementedError
-
-  
-

Note: Please see antd charts for x_field_filter_widget_props.

Chart Types

There are widget types which fastadmin dashboard supports:

-  
-class DashboardWidgetType(str, Enum):
-    """Dashboard Widget type"""
-
-    ChartLine = "ChartLine"
-    ChartArea = "ChartArea"
-    ChartColumn = "ChartColumn"
-    ChartBar = "ChartBar"
-    ChartPie = "ChartPie"
-
-  
-

Note: Please see antd charts for more details (e.g. to see how they look like).


Model Admins

Registering Models

-  
-from uuid import UUID
-
-import bcrypt
-from tortoise import fields
-from tortoise.models import Model
-
-from fastadmin import TortoiseModelAdmin, WidgetType, action, register
-
-
-class ModelUser(Model):
-    username = fields.CharField(max_length=255, unique=True)
-    hash_password = fields.CharField(max_length=255)
-    is_superuser = fields.BooleanField(default=False)
-    is_active = fields.BooleanField(default=False)
-
-    def __str__(self):
-        return self.username
-
-
-@register(ModelUser)
-class UserAdmin(TortoiseModelAdmin):
-    list_display = ("username", "is_superuser", "is_active")
-    list_display_links = ("username",)
-    list_filter = (
-        "username",
-        "is_superuser",
-        "is_active",
-    )
-    search_fields = (
-        "id",
-        "username",
-    )
-    fieldsets = (
-        (None, {"fields": ("username", "hash_password")}),
-        ("Permissions", {"fields": ("is_active", "is_superuser")}),
-    )
-    formfield_overrides = {  # noqa: RUF012
-        "username": (WidgetType.SlugInput, {"required": True}),
-        "password": (WidgetType.PasswordInput, {"passwordModalForm": True}),
-    }
-    actions = (
-        *TortoiseModelAdmin.actions,
-        "activate",
-        "deactivate",
-    )
-
-    async def authenticate(self, username: str, password: str) -> int | None:
-        user = await self.model_cls.filter(phone=username, is_superuser=True).first()
-        if not user:
-            return None
-        if not bcrypt.checkpw(password.encode(), user.hash_password.encode()):
-            return None
-        return user.id
-
-    async def change_password(self, id: UUID | int, password: str) -> None:
-        user = await self.model_cls.filter(id=id).first()
-        if not user:
-            return
-        user.hash_password = bcrypt.hashpw(password.encode(), bcrypt.gensalt()).decode()
-        await user.save(update_fields=("hash_password",))
-
-    @action(description="Set as active")
-    async def activate(self, ids: list[int]) -> None:
-        await self.model_cls.filter(id__in=ids).update(is_active=True)
-
-    @action(description="Deactivate")
-    async def deactivate(self, ids: list[int]) -> None:
-        await self.model_cls.filter(id__in=ids).update(is_active=False)
-
-  
-

See example for Tortoise ORM

See example for Tortoise ORM

See example for Tortoise ORM

Authentication

You have to implement methods authenticate and change_password in Modal Admin for User model. See example above.

Methods and Attributes

There are methods and attributes for Model Admin:

-  
-class BaseModelAdmin:
-    """Base class for model admin"""
-
-    # Use it only if you use several orms in your project.
-    model_name_prefix: str | None = None
-
-    # A list of actions to make available on the change list page.
-    # You have to implement methods with names like action_name in your ModelAdmin class and decorate them with @action decorator.
-    # Example of usage:
-    #
-    # actions = ("make_published",)
-    # @action(
-    #     description="Mark selected stories as published",
-    # )
-    # async def make_published(self, objs: list[Any]) -> None:
-    #     ...
-    actions: Sequence[str] = ()
-
-    # Controls where on the page the actions bar appears.
-    # By default, the admin changelist displays actions at the top of the page (actions_on_top = False; actions_on_bottom = True).
-    # Example of usage: actions_on_top = True
-    actions_on_top: bool = False
-
-    # Controls where on the page the actions bar appears.
-    # By default, the admin changelist displays actions at the top of the page (actions_on_top = False; actions_on_bottom = True).
-    # Example of usage: actions_on_bottom = False
-    actions_on_bottom: bool = True
-
-    # Controls whether a selection counter is displayed next to the action dropdown. By default, the admin changelist will display it
-    # Example of usage: actions_selection_counter = False
-    actions_selection_counter: bool = True
-
-    # Not supported setting
-    # date_hierarchy
-
-    # This attribute overrides the default display value for record's fields that are empty (None, empty string, etc.). The default value is - (a dash).
-    # Example of usage: empty_value_display = "N/A"
-    empty_value_display: str = "-"
-
-    # This attribute, if given, should be a list of field names to exclude from the form.
-    # Example of usage: exclude = ("password", "otp")
-    exclude: Sequence[str] = ()
-
-    # Use the fields option to make simple layout changes in the forms on the “add” and “change” pages
-    # such as showing only a subset of available fields, modifying their order, or grouping them into rows.
-    # For more complex layout needs, see the fieldsets option.
-    # Example of usage: fields = ("id", "mobile_number", "email", "is_superuser", "is_active", "created_at")
-    fields: Sequence[str] = ()
-
-    # Set fieldsets to control the layout of admin “add” and “change” pages.
-    # fieldsets is a list of two-tuples, in which each two-tuple represents a fieldset on the admin form page. (A fieldset is a “section” of the form.)
-    fieldsets: Sequence[tuple[str | None, dict[str, Sequence[str]]]] = ()
-
-    # By default, a ManyToManyField is displayed in the admin dashboard with a select multiple.
-    # However, multiple-select boxes can be difficult to use when selecting many items.
-    # Adding a ManyToManyField to this list will instead use a nifty unobtrusive JavaScript “filter” interface that allows searching within the options.
-    # The unselected and selected options appear in two boxes side by side. See filter_vertical to use a vertical interface.
-    # Example of usage: filter_horizontal = ("groups", "user_permissions")
-    filter_horizontal: Sequence[str] = ()
-
-    # Same as filter_horizontal, but uses a vertical display of the filter interface with the box of unselected options appearing above the box of selected options.
-    # Example of usage: filter_vertical = ("groups", "user_permissions")
-    filter_vertical: Sequence[str] = ()
-
-    # Not supported setting
-    # form
-
-    # This provides a quick-and-dirty way to override some of the Field options for use in the admin.
-    # formfield_overrides is a dictionary mapping a field class to a dict
-    # of arguments to pass to the field at construction time.
-    # Example of usage:
-    # formfield_overrides = {
-    #     "description": (WidgetType.RichTextArea, {})
-    # }
-    formfield_overrides: dict[str, tuple[WidgetType, dict]] = {}  # noqa: RUF012
-
-    # Set list_display to control which fields are displayed on the list page of the admin.
-    # If you don't set list_display, the admin site will display a single column that displays the __str__() representation of each object
-    # Example of usage: list_display = ("id", "mobile_number", "email", "is_superuser", "is_active", "created_at")
-    list_display: Sequence[str] = ()
-
-    # Use list_display_links to control if and which fields in list_display should be linked to the “change” page for an object.
-    # Example of usage: list_display_links = ("id", "mobile_number", "email")
-    list_display_links: Sequence[str] = ()
-
-    # A dictionary containing the field names and the corresponding widget type and
-    # column widths (px, %) for the list view.
-    # Example of usage:
-    # list_display_widths = {
-    #     "id": "100px",
-    # }
-    list_display_widths: dict[str, str] = {}  # noqa: RUF012
-
-    # Set list_filter to activate filters in the tabel columns of the list page of the admin.
-    # Example of usage: list_filter = ("is_superuser", "is_active", "created_at")
-    list_filter: Sequence[str] = ()
-
-    # By default, applied filters are preserved on the list view after creating, editing, or deleting an object.
-    # You can have filters cleared by setting this attribute to False.
-    # Example of usage: preserve_filters = False
-    preserve_filters: bool = True
-
-    # Set list_max_show_all to control how many items can appear on a “Show all” admin change list page.
-    # The admin will display a “Show all” link on the change list only if the total result count is less than or equal to this setting. By default, this is set to 200.
-    # Example of usage: list_max_show_all = 100
-    list_max_show_all: int = 200
-
-    # Set list_per_page to control how many items appear on each paginated admin list page. By default, this is set to 10.
-    # Example of usage: list_per_page = 50
-    list_per_page = 10
-
-    # Set list_select_related to tell ORM to use select_related() in retrieving the list of objects on the admin list page.
-    # This can save you a bunch of database queries.
-    # Example of usage: list_select_related = ("user",)
-    list_select_related: Sequence[str] = ()
-
-    # Set ordering to specify how lists of objects should be ordered in the admin views.
-    # This should be a list or tuple in the same format as a model's ordering parameter.
-    # Example of usage: ordering = ("-created_at",)
-    ordering: Sequence[str] = ()
-
-    # Not supported setting
-    # paginator
-
-    # When set, the given fields will use a bit of JavaScript to populate from the fields assigned.
-    # The main use for this functionality is
-    # to automatically generate the value for SlugField fields from one or more other fields.
-    # The generated value is produced by concatenating the values of the source fields,
-    # and then by transforming that result into a valid slug
-    # (e.g. substituting dashes for spaces and lowercasing ASCII letters).
-    # prepopulated_fields: dict[str, Sequence[str]] = {}
-
-    # By default, FastAPI admin uses a select-box interface (select) for fields that are ForeignKey or have choices set.
-    # If a field is present in radio_fields, FastAPI admin will use a radio-button interface instead.
-    # Example of usage: radio_fields = ("user",)
-    radio_fields: Sequence[str] = ()
-
-    # Not supported setting (all fk, m2m uses select js widget as default)
-    # autocomplete_fields
-
-    # By default, FastAPI admin uses a select-box interface (select) for fields that are ForeignKey.
-    # Sometimes you don't want to incur the overhead of having to select all the related instances to display in the drop-down.
-    # raw_id_fields is a list of fields you would like to change into an Input widget for either a ForeignKey or ManyToManyField.
-    # Example of usage: raw_id_fields = ("user",)
-    raw_id_fields: Sequence[str] = ()
-
-    # By default the admin shows all fields as editable.
-    # Any fields in this option (which should be a list or tuple) will display its data as-is and non-editable.
-    # Example of usage: readonly_fields = ("created_at",)
-    readonly_fields: Sequence[str] = ()
-
-    # Set search_fields to enable a search box on the admin list page.
-    # This should be set to a list of field names that will be searched whenever somebody submits a search query in that text box.
-    # Example of usage: search_fields = ("mobile_number", "email")
-    search_fields: Sequence[str] = ()
-
-    # Set search_help_text to specify a descriptive text for the search box which will be displayed below it.
-    # Example of usage: search_help_text = "Search by mobile number or email"
-    search_help_text: str = ""
-
-    # Set show_full_result_count to control whether the full count of objects should be displayed
-    # on a filtered admin page (e.g. 99 results (103 total)).
-    # If this option is set to False, a text like 99 results (Show all) is displayed instead.
-    # Example of usage: show_full_result_count = True
-    show_full_result_count: bool = False
-
-    # By default, the list page allows sorting by all model fields
-    # If you want to disable sorting for some columns, set sortable_by to a collection (e.g. list, tuple, or set)
-    # of the subset of list_display that you want to be sortable.
-    # An empty collection disables sorting for all columns.
-    # Example of usage: sortable_by = ("mobile_number", "email")
-    sortable_by: Sequence[str] = ()
-
-    # An override to the verbose_name from the model's inner Meta class.
-    verbose_name: str | None = None
-
-    # An override to the verbose_name_plural from the model's inner Meta class.
-    verbose_name_plural: str | None = None
-
-    def __init__(self, model_cls: Any):
-        """This method is used to initialize admin class.
-
-        :params model_cls: an orm/db model class.
-        """
-        self.model_cls = model_cls
-
-    @staticmethod
-    def get_model_pk_name(orm_model_cls: Any) -> str:
-        """This method is used to get model pk name.
-
-        :return: A str.
-        """
-        raise NotImplementedError
-
-    def get_model_fields_with_widget_types(
-        self,
-        with_m2m: bool | None = None,
-        with_upload: bool | None = None,
-    ) -> list[ModelFieldWidgetSchema]:
-        """This method is used to get model fields with widget types.
-
-        :params with_m2m: a flag to include m2m fields.
-        :params with_upload: a flag to include upload fields.
-        :return: A list of ModelFieldWidgetSchema.
-        """
-        raise NotImplementedError
-
-    async def orm_get_list(
-        self,
-        offset: int | None = None,
-        limit: int | None = None,
-        search: str | None = None,
-        sort_by: str | None = None,
-        filters: dict | None = None,
-    ) -> tuple[list[Any], int]:
-        """This method is used to get list of orm/db model objects.
-
-        :params offset: an offset for pagination.
-        :params limit: a limit for pagination.
-        :params search: a search query.
-        :params sort_by: a sort by field name.
-        :params filters: a dict of filters.
-        :return: A tuple of list of objects and total count.
-        """
-        raise NotImplementedError
-
-    async def orm_get_obj(self, id: UUID | int) -> Any | None:
-        """This method is used to get orm/db model object.
-
-        :params id: an id of object.
-        :return: An object or None.
-        """
-        raise NotImplementedError
-
-    async def orm_save_obj(self, id: UUID | Any | None, payload: dict) -> Any:
-        """This method is used to save orm/db model object.
-
-        :params id: an id of object.
-        :params payload: a dict of payload.
-        :return: An object.
-        """
-        raise NotImplementedError
-
-    async def orm_delete_obj(self, id: UUID | int) -> None:
-        """This method is used to delete orm/db model object.
-
-        :params id: an id of object.
-        :return: None.
-        """
-        raise NotImplementedError
-
-    async def orm_get_m2m_ids(self, obj: Any, field: str) -> list[int | UUID]:
-        """This method is used to get m2m ids.
-
-        :params obj: an object.
-        :params field: a m2m field name.
-
-        :return: A list of ids.
-        """
-        raise NotImplementedError
-
-    async def orm_save_m2m_ids(self, obj: Any, field: str, ids: list[int | UUID]) -> None:
-        """This method is used to get m2m ids.
-
-        :params obj: an object.
-        :params field: a m2m field name.
-        :params ids: a list of ids.
-
-        :return: A list of ids.
-        """
-        raise NotImplementedError
-
-    async def orm_save_upload_field(self, obj: Any, field: str, base64: str) -> None:
-        """This method is used to save upload field.
-
-        :params obj: an object.
-        :params field: a m2m field name.
-        :params base64: a base64 string.
-
-        :return: A list of ids.
-        """
-        raise NotImplementedError
-
-    @classmethod
-    def get_sessionmaker(cls) -> Any:
-        """This method is used to get db session maker for sqlalchemy.
-
-        :return: A db session maker.
-        """
-        return cls.db_session_maker
-
-    @classmethod
-    def set_sessionmaker(cls, db_session_maker: Any) -> None:
-        """This method is used to set db session maker for sqlalchemy.
-
-        :params db_session: a db session maker.
-        :return: None.
-        """
-        cls.db_session_maker = db_session_maker
-
-    def get_fields_for_serialize(self) -> set[str]:
-        """This method is used to get fields for serialize.
-
-        :return: A set of fields.
-        """
-        fields = self.get_model_fields_with_widget_types()
-        fields_for_serialize = {field.name for field in fields}
-        if self.fields:
-            fields_for_serialize &= set(self.fields)
-        if self.exclude:
-            fields_for_serialize -= set(self.exclude)
-        if self.list_display:
-            fields_for_serialize |= set(self.list_display)
-        return fields_for_serialize
-
-    async def serialize_obj_attributes(
-        self, obj: Any, attributes_to_serizalize: list[ModelFieldWidgetSchema]
-    ) -> dict[str, Any]:
-        """Serialize orm model obj attribute to dict.
-
-        :params obj: an object.
-        :params attributes_to_serizalize: a list of attributes to serialize.
-        :return: A dict of serialized attributes.
-        """
-        serialized_dict = {field.name: getattr(obj, field.column_name) for field in attributes_to_serizalize}
-        if inspect.iscoroutinefunction(obj.__str__):
-            str_fn = obj.__str__
-        else:
-            str_fn = sync_to_async(obj.__str__)
-        serialized_dict["__str__"] = await str_fn()
-        return serialized_dict
-
-    async def serialize_obj(self, obj: Any, list_view: bool = False) -> dict:
-        """Serialize orm model obj to dict.
-
-        :params obj: an object.
-        :params exclude_fields: a list of fields to exclude.
-        :return: A dict.
-        """
-        fields = self.get_model_fields_with_widget_types()
-        fields_for_serialize = self.get_fields_for_serialize()
-
-        obj_dict = {}
-        attributes_to_serizalize = []
-        for field in fields:
-            if field.name not in fields_for_serialize:
-                continue
-            if field.is_m2m and list_view:
-                continue
-            if field.is_m2m:
-                obj_dict[field.name] = await self.orm_get_m2m_ids(obj, field.column_name)
-            else:
-                attributes_to_serizalize.append(field)
-
-        obj_dict.update(await self.serialize_obj_attributes(obj, attributes_to_serizalize))
-
-        for field_name in fields_for_serialize:
-            display_field_function = getattr(self, field_name, None)
-            if not display_field_function or not hasattr(display_field_function, "is_display"):
-                continue
-
-            if inspect.iscoroutinefunction(display_field_function):
-                display_field_function_fn = display_field_function
-            else:
-                display_field_function_fn = sync_to_async(display_field_function)
-
-            obj_dict[field_name] = await display_field_function_fn(obj)
-
-        return obj_dict
-
-    def deserialize_value(self, field: ModelFieldWidgetSchema, value: Any) -> Any:
-        if not value:
-            return value
-        match field.form_widget_type:
-            case WidgetType.TimePicker:
-                return datetime.datetime.fromisoformat(value).time()
-            case WidgetType.DatePicker | WidgetType.DateTimePicker:
-                return datetime.datetime.fromisoformat(value)
-            case _:
-                return value
-
-    async def get_list(
-        self,
-        offset: int | None = None,
-        limit: int | None = None,
-        search: str | None = None,
-        sort_by: str | None = None,
-        filters: dict | None = None,
-    ) -> tuple[list[dict], int]:
-        """This method is used to get list of seriaized objects.
-
-        :params offset: an offset for pagination.
-        :params limit: a limit for pagination.
-        :params search: a search query.
-        :params sort_by: a sort by field name.
-        :params filters: a dict of filters.
-        :return: A tuple of list of dict and total count.
-        """
-        objs, total = await self.orm_get_list(
-            offset=offset,
-            limit=limit,
-            search=search,
-            sort_by=sort_by,
-            filters=filters,
-        )
-        serialized_objs = []
-        for obj in objs:
-            serialized_objs.append(await self.serialize_obj(obj, list_view=True))
-        return serialized_objs, total
-
-    async def get_obj(self, id: UUID | int) -> dict | None:
-        """This method is used to get serialized object by id.
-
-        :params id: an id of object.
-        :return: A dict or None.
-        """
-        obj = await self.orm_get_obj(id)
-        if not obj:
-            return None
-        return await self.serialize_obj(obj)
-
-    async def save_model(self, id: UUID | int | None, payload: dict) -> dict | None:
-        """This method is used to save orm/db model object.
-
-        :params id: an id of object.
-        :params payload: a payload from request.
-        :return: A saved object or None.
-        """
-        fields = self.get_model_fields_with_widget_types(with_m2m=False, with_upload=False)
-        m2m_fields = self.get_model_fields_with_widget_types(with_m2m=True)
-        upload_fields = self.get_model_fields_with_widget_types(with_upload=True)
-
-        fields_payload = {
-            field.column_name: self.deserialize_value(field, payload[field.name])
-            for field in fields
-            if field.name in payload
-        }
-        obj = await self.orm_save_obj(id, fields_payload)
-        if not obj:
-            return None
-
-        for upload_field in upload_fields:
-            if upload_field.name in payload and is_valid_base64(payload[upload_field.name]):
-                await self.orm_save_upload_field(obj, upload_field.column_name, payload[upload_field.name])
-
-        for m2m_field in m2m_fields:
-            if m2m_field.name in payload:
-                await self.orm_save_m2m_ids(obj, m2m_field.column_name, payload[m2m_field.name])
-
-        return await self.serialize_obj(obj)
-
-    async def delete_model(self, id: UUID | int) -> None:
-        """This method is used to delete orm/db model object.
-
-        :params id: an id of object.
-        :return: None.
-        """
-        await self.orm_delete_obj(id)
-
-    async def get_export(
-        self,
-        export_format: ExportFormat | None,
-        offset: int | None = None,
-        limit: int | None = None,
-        search: str | None = None,
-        sort_by: str | None = None,
-        filters: dict | None = None,
-    ) -> StringIO | BytesIO | None:
-        """This method is used to get export data (str or bytes stream).
-
-        :params export_format: a n export format (CSV at default).
-        :params offset: an offset for pagination.
-        :params limit: a limit for pagination.
-        :params search: a search query.
-        :params sort_by: a sort by field name.
-        :params filters: a dict of filters.
-        :return: A StringIO or BytesIO object.
-        """
-        objs, _ = await self.orm_get_list(offset=offset, limit=limit, search=search, sort_by=sort_by, filters=filters)
-        fields = self.get_model_fields_with_widget_types(with_m2m=False)
-
-        export_fields = [f.name for f in fields]
-
-        match export_format:
-            case ExportFormat.CSV:
-                output = StringIO()
-                writer = csv.DictWriter(output, fieldnames=export_fields)
-                writer.writeheader()
-                for obj in objs:
-                    obj_dict = await self.serialize_obj(obj, list_view=True)
-                    obj_dict = {k: v for k, v in obj_dict.items() if k in export_fields}
-                    writer.writerow(obj_dict)
-                output.seek(0)
-                return output
-            case ExportFormat.JSON:
-
-                class JSONEncoder(json.JSONEncoder):
-                    def default(self, obj):
-                        try:
-                            return super().default(obj)
-                        except TypeError:
-                            return str(obj)
-
-                output = StringIO()
-                json.dump([await self.serialize_obj(obj, list_view=True) for obj in objs], output, cls=JSONEncoder)
-                output.seek(0)
-                return output
-            case _:
-                return None
-
-    async def has_add_permission(self, user_id: UUID | int | None = None) -> bool:
-        """This method is used to check if user has permission to add new model instance.
-
-        :param user_id: The user id.
-        :return: A boolean value.
-        """
-        return True
-
-    async def has_change_permission(self, user_id: UUID | int | None = None) -> bool:
-        """This method is used to check if user has permission to change model instance.
-
-        :param user_id: The user id.
-        :return: A boolean value.
-        """
-        return True
-
-    async def has_delete_permission(self, user_id: UUID | int | None = None) -> bool:
-        """This method is used to check if user has permission to delete model instance.
-
-        :param user_id: The user id.
-        :return: A boolean value.
-        """
-        return True
-
-    async def has_export_permission(self, user_id: UUID | int | None = None) -> bool:
-        """This method is used to check if user has permission to export model instance.
-
-        :param user_id: The user id.
-        :return: A boolean value.
-        """
-        return True
-
-  
-

Specific methods and attributes for Model Admin:

-  
-class ModelAdmin(BaseModelAdmin):
-    """This class is used to create admin model class."""
-
-    # Normally, objects have three save options: “Save”, “Save and continue editing”, and “Save and add another”.
-    # If save_as is True, “Save and add another” will be replaced
-    # by a “Save as new” button that creates a new object (with a new ID) rather than updating the existing object.
-    # Example of usage: save_as = True
-    save_as: bool = False
-
-    # When save_as_continue=True, the default redirect after saving the new object is to the change view for that object.
-    # If you set save_as_continue=False, the redirect will be to the changelist view.
-    # Example of usage: save_as_continue = False
-    save_as_continue: bool = False
-
-    # Normally, the save buttons appear only at the bottom of the forms.
-    # If you set save_on_top, the buttons will appear both on the top and the bottom.
-    # Example of usage: save_on_top = True
-    save_on_top: bool = False
-
-    # Set view_on_site to control whether or not to display the “View on site” link.
-    # This link should bring you to a URL where you can display the saved object.
-    # Example of usage: view_on_site = "http://example.com"
-    view_on_site: str | None = None
-
-    # Inlines
-    inlines: Sequence[type[InlineModelAdmin]] = ()
-
-    async def authenticate(self, username: str, password: str) -> UUID | int | None:
-        """This method is used to implement authentication for settings.ADMIN_USER_MODEL orm/db model.
-
-        :params username: a value for user model settings.ADMIN_USER_MODEL_USERNAME_FIELD field.
-        :params password: a password.
-        :return: An user id or None.
-        """
-        raise NotImplementedError
-
-    async def change_password(self, id: UUID | int, password: str) -> None:
-        """This method is used to change user password.
-
-        :params id: An user id.
-        :params password: A new password.
-        """
-        raise NotImplementedError
-
-    async def save_model(self, id: UUID | int | None, payload: dict) -> dict | None:
-        """This method is used to save orm/db model object.
-
-        :params id: an id of object.
-        :params payload: a payload from request.
-        :return: A saved object or None.
-        """
-        obj = await super().save_model(id, payload)
-        fields = self.get_model_fields_with_widget_types(with_m2m=False, with_upload=False)
-        password_fields = [field.name for field in fields if field.form_widget_type == WidgetType.PasswordInput]
-        if obj and id is None and password_fields:
-            # save hashed password for create
-            pk_name = self.get_model_pk_name(self.model_cls)
-            pk = obj[pk_name]
-            password_values = [payload[field] for field in password_fields if field in payload]
-            if password_values:
-                await self.change_password(pk, password_values[0])
-        return obj
-
-  
-

Form Field Types

There are form field types for model admin:

-  
-class WidgetType(str, Enum):
-    """Widget type"""
-
-    Input = "Input"
-    InputNumber = "InputNumber"
-    SlugInput = "SlugInput"
-    EmailInput = "EmailInput"
-    PhoneInput = "PhoneInput"
-    UrlInput = "UrlInput"
-    PasswordInput = "PasswordInput"
-    TextArea = "TextArea"
-    RichTextArea = "RichTextArea"
-    JsonTextArea = "JsonTextArea"
-    Select = "Select"
-    AsyncSelect = "AsyncSelect"
-    AsyncTransfer = "AsyncTransfer"
-    Switch = "Switch"
-    Checkbox = "Checkbox"
-    TimePicker = "TimePicker"
-    DatePicker = "DatePicker"
-    DateTimePicker = "DateTimePicker"
-    RangePicker = "RangePicker"
-    RadioGroup = "RadioGroup"
-    CheckboxGroup = "CheckboxGroup"
-    Upload = "Upload"
-
-  
-

Note: Please see antd components for more details (e.g. to see how they look like).


Inline Model Admins

Registering Inlines

-  
-from uuid import UUID
-
-import bcrypt
-from tortoise import fields
-from tortoise.models import Model
-
-from fastadmin import TortoiseInlineModelAdmin, TortoiseModelAdmin, WidgetType, action, register
-
-
-class InlineUser(Model):
-    username = fields.CharField(max_length=255, unique=True)
-    hash_password = fields.CharField(max_length=255)
-    is_superuser = fields.BooleanField(default=False)
-    is_active = fields.BooleanField(default=False)
-
-    def __str__(self):
-        return self.username
-
-
-class InlineUserMessage(Model):
-    user = fields.ForeignKeyField("models.InlineUser", related_name="messages")
-    message = fields.TextField()
-
-    def __str__(self):
-        return self.message
-
-
-class UserMessageAdminInline(TortoiseInlineModelAdmin):
-    model = InlineUserMessage
-    list_display = ("user", "message")
-    list_display_links = ("user", "message")
-    list_filter = ("user", "message")
-    search_fields = ("user", "message")
-
-
-@register(InlineUser)
-class UserAdmin(TortoiseModelAdmin):
-    list_display = ("username", "is_superuser", "is_active")
-    list_display_links = ("username",)
-    list_filter = (
-        "username",
-        "is_superuser",
-        "is_active",
-    )
-    search_fields = (
-        "id",
-        "username",
-    )
-    fieldsets = (
-        (None, {"fields": ("username", "hash_password")}),
-        ("Permissions", {"fields": ("is_active", "is_superuser")}),
-    )
-    formfield_overrides = {  # noqa: RUF012
-        "username": (WidgetType.SlugInput, {"required": True}),
-        "password": (WidgetType.PasswordInput, {"passwordModalForm": True}),
-    }
-    actions = (
-        *TortoiseModelAdmin.actions,
-        "activate",
-        "deactivate",
-    )
-
-    inlines = (UserMessageAdminInline,)
-
-    async def authenticate(self, username: str, password: str) -> int | None:
-        user = await self.model_cls.filter(phone=username, is_superuser=True).first()
-        if not user:
-            return None
-        if not bcrypt.checkpw(password.encode(), user.hash_password.encode()):
-            return None
-        return user.id
-
-    async def change_password(self, id: UUID | int, password: str) -> None:
-        user = await self.model_cls.filter(id=id).first()
-        if not user:
-            return
-        user.hash_password = bcrypt.hashpw(password.encode(), bcrypt.gensalt()).decode()
-        await user.save(update_fields=("hash_password",))
-
-    @action(description="Set as active")
-    async def activate(self, ids: list[int]) -> None:
-        await self.model_cls.filter(id__in=ids).update(is_active=True)
-
-    @action(description="Deactivate")
-    async def deactivate(self, ids: list[int]) -> None:
-        await self.model_cls.filter(id__in=ids).update(is_active=False)
-
-  
-

See example for Tortoise ORM

See example for Tortoise ORM

See example for Tortoise ORM

Methods and Attributes

There are methods and attributes for Inline Model Admin:

See BaseModelAdmin class methods and attributes in model admin section.

Specific methods and attributes for Inline Model Admin:

-  
-class InlineModelAdmin(BaseModelAdmin):
-    """This class is used to create admin inline model class."""
-
-    # The model class which the inline is using. This is required.
-    model: Any
-
-    # The name of the foreign key on the model.
-    # In most cases this will be dealt with automatically, but fk_name must be specified explicitly
-    # if there are more than one foreign key to the same parent model.
-    fk_name: str | None = None
-
-    # This controls the maximum number of forms to show in the inline.
-    # This doesn't directly correlate to the number of objects, but can if the value is small enough.
-    # See Limiting the number of editable objects for more information.
-    max_num: int = 10
-
-    # This controls the minimum number of forms to show in the inline.
-    min_num: int = 1
-
-  
-

Changelog

See what's new added, changed, fixed, improved or updated in the latest versions.

v0.2.19

Fix for is_pk for tortoise orm.

v0.2.18

Fixes for m2m fk's sqlalchemy postgres. Convert str to int for them.

v0.2.17

Fixes for fk sqlalchemy postgres. Convert str to int for them.

v0.2.16

Added new setting ADMIN_DISABLE_CROP_IMAGE. So,we can configure crop images on upload.

v0.2.15

Fix password logic for user.

v0.2.14

Make permissions functions awaitable. Bump frontend/backend packages.

v0.2.13

Fix edit page frontend issue for Date field.

v0.2.12

Remove python-dotenv dep. Bump django. Add django example.

v0.2.11

Fixes for examples. Fixes for Pony ORM (delete, update m2m). Allow sorting by custom columns. Fix for list_display ordering.

v0.2.10

Fix issue empty m2m. Optimisation on unit tests. Fix for pony orm. Optimisation on search for tortoise orm.

v0.2.9

Fix issue with modal inline dialogs. Fix issue with m2m multiple select.

v0.2.8

Fix sqlalchemy delete functionality. Add more examples.

v0.2.7

Fix helpers function. Add regexps.

v0.2.6

Add edit btn for async select.

v0.2.5

Fix for async select in inlines.

v0.2.4

Fix dashboard widgets and auto register inlines.

v0.2.3

Fix filters issue on lists. Remove jinja from dependencies.

v0.2.2

Fix bugs with datetime.

v0.2.1

Update packages. Fix linters and tests in vite frontend. Removed pydantic from dependencies.

v0.2.0

Update packages. Use vite instead obsolete react-scripts.


^ \ No newline at end of file +FastAdmin | Documentation

FastAdmin | Documentation

  • Created: 7 March 2023
  • Updated: 15 April 2025

Introduction

FastAdmin is an easy-to-use Admin Dashboard App for FastAPI/Django/Flask inspired by Django Admin.

FastAdmin was built with relations in mind and admiration for the excellent and popular Django Admin. It's engraved in its design that you may configure your admin dashboard for FastAPI/Django/Flask easiest way.

FastAdmin is designed to be minimalistic, functional and yet familiar.


Getting Started

If you have any questions that are beyond the scope of the documentation, Please feel free to email us.

Installation

Follow the steps below to setup FastAdmin:

Install the package using pip:

Note: For zsh and macos use: pip install fastadmin[fastapi,django]

 pip install fastadmin[fastapi,django] # for fastapi with django orm pip install fastadmin[fastapi,tortoise-orm] # for fastapi with tortoise orm pip install fastadmin[fastapi,pony] # for fastapi with pony orm pip install fastadmin[fastapi,sqlalchemy] # for fastapi with sqlalchemy orm pip install fastadmin[django] # for django with django orm pip install fastadmin[django,pony] # for django with pony orm pip install fastadmin[flask,sqlalchemy] # for flask with sqlalchemy 

Install the package using poetry:

 poetry add 'fastadmin[fastapi,django]' # for fastapi with django orm poetry add 'fastadmin[fastapi,tortoise-orm]' # for fastapi with tortoise orm poetry add 'fastadmin[fastapi,pony]' # for fastapi with pony orm poetry add 'fastadmin[fastapi,sqlalchemy]' # for fastapi with sqlalchemy orm poetry add 'fastadmin[django]' # for django with django orm poetry add 'fastadmin[django,pony]' # for django with pony orm poetry add 'fastadmin[flask,sqlalchemy]' # for flask with sqlalchemy 

Configure required settings using virtual environment variables:

Note: You can add these variables to .env and use python-dotenv to load them. See all settings here

 export ADMIN_USER_MODEL=User export ADMIN_USER_MODEL_USERNAME_FIELD=username export ADMIN_SECRET_KEY=secret_key 

Quick Tutorial

Setup FastAdmin for a framework

 from fastapi import FastAPI from fastadmin import fastapi_app as admin_app app = FastAPI() app.mount("/admin", admin_app) 
 from django.urls import path from fastadmin import get_django_admin_urls as get_admin_urls from fastadmin.settings import settings urlpatterns = [ path(f"{settings.ADMIN_PREFIX}/", get_admin_urls()), ] 
 from flask import Flask from fastadmin import flask_app as admin_app app = Flask(__name__) app.register_blueprint(admin_app, url_prefix="/admin") 

Register ORM models

 from uuid import UUID import bcrypt from tortoise import fields from tortoise.models import Model from fastadmin import TortoiseModelAdmin, register class User(Model): username = fields.CharField(max_length=255, unique=True) hash_password = fields.CharField(max_length=255) is_superuser = fields.BooleanField(default=False) is_active = fields.BooleanField(default=False) def __str__(self): return self.username @register(User) class UserAdmin(TortoiseModelAdmin): exclude = ("hash_password",) list_display = ("id", "username", "is_superuser", "is_active") list_display_links = ("id", "username") list_filter = ("id", "username", "is_superuser", "is_active") search_fields = ("username",) async def authenticate(self, username: str, password: str) -> UUID | int | None: user = await User.filter(username=username, is_superuser=True).first() if not user: return None if not bcrypt.checkpw(password.encode(), user.hash_password.encode()): return None return user.id 
 from django.db import models from fastadmin import DjangoModelAdmin, register class User(models.Model): username = models.CharField(max_length=255, unique=True) hash_password = models.CharField(max_length=255) is_superuser = models.BooleanField(default=False) is_active = models.BooleanField(default=False) def __str__(self): return self.username @register(User) class UserAdmin(DjangoModelAdmin): exclude = ("hash_password",) list_display = ("id", "username", "is_superuser", "is_active") list_display_links = ("id", "username") list_filter = ("id", "username", "is_superuser", "is_active") search_fields = ("username",) def authenticate(self, username, password): obj = User.objects.filter(username=username, is_superuser=True).first() if not obj: return None if not obj.check_password(password): return None return obj.id 
 import bcrypt from sqlalchemy import Boolean, Integer, String, select from sqlalchemy.ext.asyncio import async_sessionmaker, create_async_engine from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column from fastadmin import SqlAlchemyModelAdmin, register sqlalchemy_engine = create_async_engine( "sqlite+aiosqlite:///:memory:", echo=True, ) sqlalchemy_sessionmaker = async_sessionmaker(sqlalchemy_engine, expire_on_commit=False) class Base(DeclarativeBase): pass class User(Base): __tablename__ = "user" id: Mapped[int] = mapped_column(Integer, primary_key=True, nullable=False) username: Mapped[str] = mapped_column(String(length=255), nullable=False) hash_password: Mapped[str] = mapped_column(String(length=255), nullable=False) is_superuser: Mapped[bool] = mapped_column(Boolean, default=False, nullable=False) is_active: Mapped[bool] = mapped_column(Boolean, default=False, nullable=False) def __str__(self): return self.username @register(User, sqlalchemy_sessionmaker=sqlalchemy_sessionmaker) class UserAdmin(SqlAlchemyModelAdmin): exclude = ("hash_password",) list_display = ("id", "username", "is_superuser", "is_active") list_display_links = ("id", "username") list_filter = ("id", "username", "is_superuser", "is_active") search_fields = ("username",) async def authenticate(self, username, password): sessionmaker = self.get_sessionmaker() async with sessionmaker() as session: query = select(User).filter_by(username=username, password=password, is_superuser=True) result = await session.scalars(query) user = result.first() if not user: return None if not bcrypt.checkpw(password.encode(), user.hash_password.encode()): return None return user.id 
 import bcrypt from pony.orm import Database, PrimaryKey, Required, db_session from fastadmin import PonyORMModelAdmin, register db = Database() db.bind(provider="sqlite", filename=":memory:", create_db=True) class User(db.Entity): # type: ignore [name-defined] _table_ = "user" id = PrimaryKey(int, auto=True) username = Required(str) hash_password = Required(str) is_superuser = Required(bool, default=False) is_active = Required(bool, default=False) def __str__(self): return self.username @register(User) class UserAdmin(PonyORMModelAdmin): exclude = ("hash_password",) list_display = ("id", "username", "is_superuser", "is_active") list_display_links = ("id", "username") list_filter = ("id", "username", "is_superuser", "is_active") search_fields = ("username",) @db_session def authenticate(self, username, password): user = next((f for f in self.model_cls.select(username=username, password=password, is_superuser=True)), None) if not user: return None if not bcrypt.checkpw(password.encode(), user.hash_password.encode()): return None return user.id 

Settings

There are settings with default values:

Note: Export virtual environment variables or create .env file with variables and use python-dotenv package.

 class Settings: """Settings""" # This value is the prefix you used for mounting FastAdmin app for FastAPI. ADMIN_PREFIX: str = os.getenv("ADMIN_PREFIX", "admin") # This value is the site name on sign-in page and on header. ADMIN_SITE_NAME: str = os.getenv("ADMIN_SITE_NAME", "FastAdmin") # This value is the logo path on sign-in page. ADMIN_SITE_SIGN_IN_LOGO: str = os.getenv("ADMIN_SITE_SIGN_IN_LOGO", "/admin/static/images/sign-in-logo.svg") # This value is the logo path on header. ADMIN_SITE_HEADER_LOGO: str = os.getenv("ADMIN_SITE_HEADER_LOGO", "/admin/static/images/header-logo.svg") # This value is the favicon path. ADMIN_SITE_FAVICON: str = os.getenv("ADMIN_SITE_FAVICON", "/admin/static/images/favicon.png") # This value is the primary color for FastAdmin. ADMIN_PRIMARY_COLOR: str = os.getenv("ADMIN_PRIMARY_COLOR", "#009485") # This value is the session id key to store session id in http only cookies. ADMIN_SESSION_ID_KEY: str = os.getenv("ADMIN_SESSION_ID_KEY", "admin_session_id") # This value is the expired_at period (in sec) for session id. ADMIN_SESSION_EXPIRED_AT: int = os.getenv("ADMIN_SESSION_EXPIRED_AT", 144000) # in sec # This value is the date format for JS widgets. ADMIN_DATE_FORMAT: str = os.getenv("ADMIN_DATE_FORMAT", "YYYY-MM-DD") # This value is the datetime format for JS widgets. ADMIN_DATETIME_FORMAT: str = os.getenv("ADMIN_DATETIME_FORMAT", "YYYY-MM-DD HH:mm") # This value is the time format for JS widgets. ADMIN_TIME_FORMAT: str = os.getenv("ADMIN_TIME_FORMAT", "HH:mm:ss") # This value is the name for User db/orm model class for authentication. ADMIN_USER_MODEL: str = os.getenv("ADMIN_USER_MODEL") # This value is the username field for User db/orm model for for authentication. ADMIN_USER_MODEL_USERNAME_FIELD: str = os.getenv("ADMIN_USER_MODEL_USERNAME_FIELD") # This value is the key to securing signed data - it is vital you keep this secure, # or attackers could use it to generate their own signed values. ADMIN_SECRET_KEY: str = os.getenv("ADMIN_SECRET_KEY") # This value disables the crop image feature in FastAdmin. ADMIN_DISABLE_CROP_IMAGE: bool = os.getenv("ADMIN_DISABLE_CROP_IMAGE", False) 

Note: Settings without default values are required.


Dashboard Widget Admins

Registering Widgets

Register Dashboard widgets

 import datetime from tortoise import Tortoise, fields from tortoise.models import Model from fastadmin import DashboardWidgetAdmin, DashboardWidgetType, WidgetType, register_widget class DashboardUser(Model): username = fields.CharField(max_length=255, unique=True) hash_password = fields.CharField(max_length=255) is_superuser = fields.BooleanField(default=False) is_active = fields.BooleanField(default=False) def __str__(self): return self.username @register_widget class UsersDashboardWidgetAdmin(DashboardWidgetAdmin): title = "Users" dashboard_widget_type = DashboardWidgetType.ChartLine x_field = "date" x_field_filter_widget_type = WidgetType.DatePicker x_field_filter_widget_props: dict[str, str] = {"picker": "month"} # noqa: RUF012 x_field_periods = ["day", "week", "month", "year"] # noqa: RUF012 y_field = "count" async def get_data( self, min_x_field: str | None = None, max_x_field: str | None = None, period_x_field: str | None = None, ) -> dict: conn = Tortoise.get_connection("default") if not min_x_field: min_x_field_date = datetime.datetime.now(tz=datetime.UTC) - datetime.timedelta(days=360) else: min_x_field_date = datetime.datetime.fromisoformat(min_x_field) if not max_x_field: max_x_field_date = datetime.datetime.now(tz=datetime.UTC) + datetime.timedelta(days=1) else: max_x_field_date = datetime.datetime.fromisoformat(max_x_field) if not period_x_field or period_x_field not in (self.x_field_periods or []): period_x_field = "month" results = await conn.execute_query_dict( """ SELECT to_char(date_trunc($1, "user"."created_at")::date, 'dd/mm/yyyy') "date", COUNT("user"."id") "count" FROM "user" WHERE "user"."created_at" >= $2 AND "user"."created_at" <= $3 GROUP BY "date" ORDER BY "date" """, [period_x_field, min_x_field_date, max_x_field_date], ) return { "results": results, "min_x_field": min_x_field_date.isoformat(), "max_x_field": max_x_field_date.isoformat(), "period_x_field": period_x_field, } 
 import datetime from django.db import connection, models from fastadmin import DashboardWidgetAdmin, DashboardWidgetType, WidgetType, register_widget class DashboardUser(models.Model): username = models.CharField(max_length=255, unique=True) hash_password = models.CharField(max_length=255) is_superuser = models.BooleanField(default=False) is_active = models.BooleanField(default=False) def __str__(self): return self.username @register_widget class UsersDashboardWidgetAdmin(DashboardWidgetAdmin): title = "Users" dashboard_widget_type = DashboardWidgetType.ChartLine x_field = "date" x_field_filter_widget_type = WidgetType.DatePicker x_field_filter_widget_props: dict[str, str] = {"picker": "month"} # noqa: RUF012 x_field_periods = ["day", "week", "month", "year"] # noqa: RUF012 y_field = "count" def get_data( # type: ignore [override] self, min_x_field: str | None = None, max_x_field: str | None = None, period_x_field: str | None = None, ) -> dict: def dictfetchall(cursor): columns = [col[0] for col in cursor.description] return [dict(zip(columns, row, strict=True)) for row in cursor.fetchall()] with connection.cursor() as c: if not min_x_field: min_x_field_date = datetime.datetime.now(tz=datetime.UTC) - datetime.timedelta(days=360) else: min_x_field_date = datetime.datetime.fromisoformat(min_x_field) if not max_x_field: max_x_field_date = datetime.datetime.now(tz=datetime.UTC) + datetime.timedelta(days=1) else: max_x_field_date = datetime.datetime.fromisoformat(max_x_field) if not period_x_field or period_x_field not in (self.x_field_periods or []): period_x_field = "month" c.execute( """ SELECT to_char(date_trunc($1, "user"."created_at")::date, 'dd/mm/yyyy') "date", COUNT("user"."id") "count" FROM "user" WHERE "user"."created_at" >= $2 AND "user"."created_at" <= $3 GROUP BY "date" ORDER BY "date" """, [period_x_field, min_x_field_date, max_x_field_date], ) results = dictfetchall(c) return { "results": results, "min_x_field": min_x_field_date.isoformat(), "max_x_field": max_x_field_date.isoformat(), "period_x_field": period_x_field, } 
 See example for Tortoise ORM 
 See example for Tortoise ORM 

Methods and Attributes

There are methods and attributes for Dashboard Widget Admin:

 class DashboardWidgetAdmin: title: str dashboard_widget_type: DashboardWidgetType x_field: str y_field: str | None = None series_field: str | None = None x_field_filter_widget_type: WidgetType | None = None x_field_filter_widget_props: dict[str, Any] | None = None x_field_periods: list[str] | None = None async def get_data( self, min_x_field: str | None = None, max_x_field: str | None = None, period_x_field: str | None = None, ) -> dict[str, Any]: """This method is used to get data for dashboard widget. :params min_x_field: A minimum value for x_field. :params max_x_field: A maximum value for x_field. :params period_x_field: A period value for x_field. :return: A dict with data. """ raise NotImplementedError 

Note: Please see antd charts for x_field_filter_widget_props.

Chart Types

There are widget types which fastadmin dashboard supports:

 class DashboardWidgetType(str, Enum): """Dashboard Widget type""" ChartLine = "ChartLine" ChartArea = "ChartArea" ChartColumn = "ChartColumn" ChartBar = "ChartBar" ChartPie = "ChartPie" 

Note: Please see antd charts for more details (e.g. to see how they look like).


Model Admins

Registering Models

 from uuid import UUID import bcrypt from tortoise import fields from tortoise.models import Model from fastadmin import TortoiseModelAdmin, WidgetType, action, register class ModelUser(Model): username = fields.CharField(max_length=255, unique=True) hash_password = fields.CharField(max_length=255) is_superuser = fields.BooleanField(default=False) is_active = fields.BooleanField(default=False) def __str__(self): return self.username @register(ModelUser) class UserAdmin(TortoiseModelAdmin): list_display = ("username", "is_superuser", "is_active") list_display_links = ("username",) list_filter = ( "username", "is_superuser", "is_active", ) search_fields = ( "id", "username", ) fieldsets = ( (None, {"fields": ("username", "hash_password")}), ("Permissions", {"fields": ("is_active", "is_superuser")}), ) formfield_overrides = { # noqa: RUF012 "username": (WidgetType.SlugInput, {"required": True}), "password": (WidgetType.PasswordInput, {"passwordModalForm": True}), } actions = ( *TortoiseModelAdmin.actions, "activate", "deactivate", ) async def authenticate(self, username: str, password: str) -> int | None: user = await self.model_cls.filter(phone=username, is_superuser=True).first() if not user: return None if not bcrypt.checkpw(password.encode(), user.hash_password.encode()): return None return user.id async def change_password(self, id: UUID | int, password: str) -> None: user = await self.model_cls.filter(id=id).first() if not user: return user.hash_password = bcrypt.hashpw(password.encode(), bcrypt.gensalt()).decode() await user.save(update_fields=("hash_password",)) @action(description="Set as active") async def activate(self, ids: list[int]) -> None: await self.model_cls.filter(id__in=ids).update(is_active=True) @action(description="Deactivate") async def deactivate(self, ids: list[int]) -> None: await self.model_cls.filter(id__in=ids).update(is_active=False) 

See example for Tortoise ORM

See example for Tortoise ORM

See example for Tortoise ORM

Authentication

You have to implement methods authenticate and change_password in Modal Admin for User model. See example above.

Methods and Attributes

There are methods and attributes for Model Admin:

 class BaseModelAdmin: """Base class for model admin""" # Use it only if you use several orms in your project. model_name_prefix: str | None = None # A list of actions to make available on the change list page. # You have to implement methods with names like action_name in your ModelAdmin class and decorate them with @action decorator. # Example of usage: # # actions = ("make_published",) # @action( # description="Mark selected stories as published", # ) # async def make_published(self, objs: list[Any]) -> None: # ... actions: Sequence[str] = () # Controls where on the page the actions bar appears. # By default, the admin changelist displays actions at the top of the page (actions_on_top = False; actions_on_bottom = True). # Example of usage: actions_on_top = True actions_on_top: bool = False # Controls where on the page the actions bar appears. # By default, the admin changelist displays actions at the top of the page (actions_on_top = False; actions_on_bottom = True). # Example of usage: actions_on_bottom = False actions_on_bottom: bool = True # Controls whether a selection counter is displayed next to the action dropdown. By default, the admin changelist will display it # Example of usage: actions_selection_counter = False actions_selection_counter: bool = True # Not supported setting # date_hierarchy # This attribute overrides the default display value for record's fields that are empty (None, empty string, etc.). The default value is - (a dash). # Example of usage: empty_value_display = "N/A" empty_value_display: str = "-" # This attribute, if given, should be a list of field names to exclude from the form. # Example of usage: exclude = ("password", "otp") exclude: Sequence[str] = () # Use the fields option to make simple layout changes in the forms on the “add” and “change” pages # such as showing only a subset of available fields, modifying their order, or grouping them into rows. # For more complex layout needs, see the fieldsets option. # Example of usage: fields = ("id", "mobile_number", "email", "is_superuser", "is_active", "created_at") fields: Sequence[str] = () # Set fieldsets to control the layout of admin “add” and “change” pages. # fieldsets is a list of two-tuples, in which each two-tuple represents a fieldset on the admin form page. (A fieldset is a “section” of the form.) fieldsets: Sequence[tuple[str | None, dict[str, Sequence[str]]]] = () # By default, a ManyToManyField is displayed in the admin dashboard with a select multiple. # However, multiple-select boxes can be difficult to use when selecting many items. # Adding a ManyToManyField to this list will instead use a nifty unobtrusive JavaScript “filter” interface that allows searching within the options. # The unselected and selected options appear in two boxes side by side. See filter_vertical to use a vertical interface. # Example of usage: filter_horizontal = ("groups", "user_permissions") filter_horizontal: Sequence[str] = () # Same as filter_horizontal, but uses a vertical display of the filter interface with the box of unselected options appearing above the box of selected options. # Example of usage: filter_vertical = ("groups", "user_permissions") filter_vertical: Sequence[str] = () # Not supported setting # form # This provides a quick-and-dirty way to override some of the Field options for use in the admin. # formfield_overrides is a dictionary mapping a field class to a dict # of arguments to pass to the field at construction time. # Example of usage: # formfield_overrides = { # "description": (WidgetType.RichTextArea, {}) # } formfield_overrides: dict[str, tuple[WidgetType, dict]] = {} # noqa: RUF012 # Set list_display to control which fields are displayed on the list page of the admin. # If you don't set list_display, the admin site will display a single column that displays the __str__() representation of each object # Example of usage: list_display = ("id", "mobile_number", "email", "is_superuser", "is_active", "created_at") list_display: Sequence[str] = () # Use list_display_links to control if and which fields in list_display should be linked to the “change” page for an object. # Example of usage: list_display_links = ("id", "mobile_number", "email") list_display_links: Sequence[str] = () # A dictionary containing the field names and the corresponding widget type and # column widths (px, %) for the list view. # Example of usage: # list_display_widths = { # "id": "100px", # } list_display_widths: dict[str, str] = {} # noqa: RUF012 # Set list_filter to activate filters in the tabel columns of the list page of the admin. # Example of usage: list_filter = ("is_superuser", "is_active", "created_at") list_filter: Sequence[str] = () # By default, applied filters are preserved on the list view after creating, editing, or deleting an object. # You can have filters cleared by setting this attribute to False. # Example of usage: preserve_filters = False preserve_filters: bool = True # Set list_max_show_all to control how many items can appear on a “Show all” admin change list page. # The admin will display a “Show all” link on the change list only if the total result count is less than or equal to this setting. By default, this is set to 200. # Example of usage: list_max_show_all = 100 list_max_show_all: int = 200 # Set list_per_page to control how many items appear on each paginated admin list page. By default, this is set to 10. # Example of usage: list_per_page = 50 list_per_page = 10 # Set list_select_related to tell ORM to use select_related() in retrieving the list of objects on the admin list page. # This can save you a bunch of database queries. # Example of usage: list_select_related = ("user",) list_select_related: Sequence[str] = () # Set ordering to specify how lists of objects should be ordered in the admin views. # This should be a list or tuple in the same format as a model's ordering parameter. # Example of usage: ordering = ("-created_at",) ordering: Sequence[str] = () # Not supported setting # paginator # When set, the given fields will use a bit of JavaScript to populate from the fields assigned. # The main use for this functionality is # to automatically generate the value for SlugField fields from one or more other fields. # The generated value is produced by concatenating the values of the source fields, # and then by transforming that result into a valid slug # (e.g. substituting dashes for spaces and lowercasing ASCII letters). # prepopulated_fields: dict[str, Sequence[str]] = {} # By default, FastAPI admin uses a select-box interface (select) for fields that are ForeignKey or have choices set. # If a field is present in radio_fields, FastAPI admin will use a radio-button interface instead. # Example of usage: radio_fields = ("user",) radio_fields: Sequence[str] = () # Not supported setting (all fk, m2m uses select js widget as default) # autocomplete_fields # By default, FastAPI admin uses a select-box interface (select) for fields that are ForeignKey. # Sometimes you don't want to incur the overhead of having to select all the related instances to display in the drop-down. # raw_id_fields is a list of fields you would like to change into an Input widget for either a ForeignKey or ManyToManyField. # Example of usage: raw_id_fields = ("user",) raw_id_fields: Sequence[str] = () # By default the admin shows all fields as editable. # Any fields in this option (which should be a list or tuple) will display its data as-is and non-editable. # Example of usage: readonly_fields = ("created_at",) readonly_fields: Sequence[str] = () # Set search_fields to enable a search box on the admin list page. # This should be set to a list of field names that will be searched whenever somebody submits a search query in that text box. # Example of usage: search_fields = ("mobile_number", "email") search_fields: Sequence[str] = () # Set search_help_text to specify a descriptive text for the search box which will be displayed below it. # Example of usage: search_help_text = "Search by mobile number or email" search_help_text: str = "" # Set show_full_result_count to control whether the full count of objects should be displayed # on a filtered admin page (e.g. 99 results (103 total)). # If this option is set to False, a text like 99 results (Show all) is displayed instead. # Example of usage: show_full_result_count = True show_full_result_count: bool = False # By default, the list page allows sorting by all model fields # If you want to disable sorting for some columns, set sortable_by to a collection (e.g. list, tuple, or set) # of the subset of list_display that you want to be sortable. # An empty collection disables sorting for all columns. # Example of usage: sortable_by = ("mobile_number", "email") sortable_by: Sequence[str] = () # An override to the verbose_name from the model's inner Meta class. verbose_name: str | None = None # An override to the verbose_name_plural from the model's inner Meta class. verbose_name_plural: str | None = None def __init__(self, model_cls: Any): """This method is used to initialize admin class. :params model_cls: an orm/db model class. """ self.model_cls = model_cls @staticmethod def get_model_pk_name(orm_model_cls: Any) -> str: """This method is used to get model pk name. :return: A str. """ raise NotImplementedError def get_model_fields_with_widget_types( self, with_m2m: bool | None = None, with_upload: bool | None = None, ) -> list[ModelFieldWidgetSchema]: """This method is used to get model fields with widget types. :params with_m2m: a flag to include m2m fields. :params with_upload: a flag to include upload fields. :return: A list of ModelFieldWidgetSchema. """ raise NotImplementedError async def orm_get_list( self, offset: int | None = None, limit: int | None = None, search: str | None = None, sort_by: str | None = None, filters: dict | None = None, ) -> tuple[list[Any], int]: """This method is used to get list of orm/db model objects. :params offset: an offset for pagination. :params limit: a limit for pagination. :params search: a search query. :params sort_by: a sort by field name. :params filters: a dict of filters. :return: A tuple of list of objects and total count. """ raise NotImplementedError async def orm_get_obj(self, id: UUID | int) -> Any | None: """This method is used to get orm/db model object. :params id: an id of object. :return: An object or None. """ raise NotImplementedError async def orm_save_obj(self, id: UUID | Any | None, payload: dict) -> Any: """This method is used to save orm/db model object. :params id: an id of object. :params payload: a dict of payload. :return: An object. """ raise NotImplementedError async def orm_delete_obj(self, id: UUID | int) -> None: """This method is used to delete orm/db model object. :params id: an id of object. :return: None. """ raise NotImplementedError async def orm_get_m2m_ids(self, obj: Any, field: str) -> list[int | UUID]: """This method is used to get m2m ids. :params obj: an object. :params field: a m2m field name. :return: A list of ids. """ raise NotImplementedError async def orm_save_m2m_ids(self, obj: Any, field: str, ids: list[int | UUID]) -> None: """This method is used to get m2m ids. :params obj: an object. :params field: a m2m field name. :params ids: a list of ids. :return: A list of ids. """ raise NotImplementedError async def orm_save_upload_field(self, obj: Any, field: str, base64: str) -> None: """This method is used to save upload field. :params obj: an object. :params field: a m2m field name. :params base64: a base64 string. :return: A list of ids. """ raise NotImplementedError @classmethod def get_sessionmaker(cls) -> Any: """This method is used to get db session maker for sqlalchemy. :return: A db session maker. """ return cls.db_session_maker @classmethod def set_sessionmaker(cls, db_session_maker: Any) -> None: """This method is used to set db session maker for sqlalchemy. :params db_session: a db session maker. :return: None. """ cls.db_session_maker = db_session_maker def get_fields_for_serialize(self) -> set[str]: """This method is used to get fields for serialize. :return: A set of fields. """ fields = self.get_model_fields_with_widget_types() fields_for_serialize = {field.name for field in fields} if self.fields: fields_for_serialize &= set(self.fields) if self.exclude: fields_for_serialize -= set(self.exclude) if self.list_display: fields_for_serialize |= set(self.list_display) return fields_for_serialize async def serialize_obj_attributes( self, obj: Any, attributes_to_serizalize: list[ModelFieldWidgetSchema] ) -> dict[str, Any]: """Serialize orm model obj attribute to dict. :params obj: an object. :params attributes_to_serizalize: a list of attributes to serialize. :return: A dict of serialized attributes. """ serialized_dict = {field.name: getattr(obj, field.column_name) for field in attributes_to_serizalize} if inspect.iscoroutinefunction(obj.__str__): str_fn = obj.__str__ else: str_fn = sync_to_async(obj.__str__) serialized_dict["__str__"] = await str_fn() return serialized_dict async def serialize_obj(self, obj: Any, list_view: bool = False) -> dict: """Serialize orm model obj to dict. :params obj: an object. :params exclude_fields: a list of fields to exclude. :return: A dict. """ fields = self.get_model_fields_with_widget_types() fields_for_serialize = self.get_fields_for_serialize() obj_dict = {} attributes_to_serizalize = [] for field in fields: if field.name not in fields_for_serialize: continue if field.is_m2m and list_view: continue if field.is_m2m: obj_dict[field.name] = await self.orm_get_m2m_ids(obj, field.column_name) else: attributes_to_serizalize.append(field) obj_dict.update(await self.serialize_obj_attributes(obj, attributes_to_serizalize)) for field_name in fields_for_serialize: display_field_function = getattr(self, field_name, None) if not display_field_function or not hasattr(display_field_function, "is_display"): continue if inspect.iscoroutinefunction(display_field_function): display_field_function_fn = display_field_function else: display_field_function_fn = sync_to_async(display_field_function) obj_dict[field_name] = await display_field_function_fn(obj) return obj_dict def deserialize_value(self, field: ModelFieldWidgetSchema, value: Any) -> Any: if not value: return value match field.form_widget_type: case WidgetType.TimePicker: return datetime.datetime.fromisoformat(value).time() case WidgetType.DatePicker | WidgetType.DateTimePicker: return datetime.datetime.fromisoformat(value) case _: return value async def get_list( self, offset: int | None = None, limit: int | None = None, search: str | None = None, sort_by: str | None = None, filters: dict | None = None, ) -> tuple[list[dict], int]: """This method is used to get list of seriaized objects. :params offset: an offset for pagination. :params limit: a limit for pagination. :params search: a search query. :params sort_by: a sort by field name. :params filters: a dict of filters. :return: A tuple of list of dict and total count. """ objs, total = await self.orm_get_list( offset=offset, limit=limit, search=search, sort_by=sort_by, filters=filters, ) serialized_objs = [] for obj in objs: serialized_objs.append(await self.serialize_obj(obj, list_view=True)) return serialized_objs, total async def get_obj(self, id: UUID | int) -> dict | None: """This method is used to get serialized object by id. :params id: an id of object. :return: A dict or None. """ obj = await self.orm_get_obj(id) if not obj: return None return await self.serialize_obj(obj) async def save_model(self, id: UUID | int | None, payload: dict) -> dict | None: """This method is used to save orm/db model object. :params id: an id of object. :params payload: a payload from request. :return: A saved object or None. """ fields = self.get_model_fields_with_widget_types(with_m2m=False, with_upload=False) m2m_fields = self.get_model_fields_with_widget_types(with_m2m=True) upload_fields = self.get_model_fields_with_widget_types(with_upload=True) fields_payload = { field.column_name: self.deserialize_value(field, payload[field.name]) for field in fields if field.name in payload } obj = await self.orm_save_obj(id, fields_payload) if not obj: return None for upload_field in upload_fields: if upload_field.name in payload and is_valid_base64(payload[upload_field.name]): await self.orm_save_upload_field(obj, upload_field.column_name, payload[upload_field.name]) for m2m_field in m2m_fields: if m2m_field.name in payload: await self.orm_save_m2m_ids(obj, m2m_field.column_name, payload[m2m_field.name]) return await self.serialize_obj(obj) async def delete_model(self, id: UUID | int) -> None: """This method is used to delete orm/db model object. :params id: an id of object. :return: None. """ await self.orm_delete_obj(id) async def get_export( self, export_format: ExportFormat | None, offset: int | None = None, limit: int | None = None, search: str | None = None, sort_by: str | None = None, filters: dict | None = None, ) -> StringIO | BytesIO | None: """This method is used to get export data (str or bytes stream). :params export_format: a n export format (CSV at default). :params offset: an offset for pagination. :params limit: a limit for pagination. :params search: a search query. :params sort_by: a sort by field name. :params filters: a dict of filters. :return: A StringIO or BytesIO object. """ objs, _ = await self.orm_get_list(offset=offset, limit=limit, search=search, sort_by=sort_by, filters=filters) fields = self.get_model_fields_with_widget_types(with_m2m=False) export_fields = [f.name for f in fields] match export_format: case ExportFormat.CSV: output = StringIO() writer = csv.DictWriter(output, fieldnames=export_fields) writer.writeheader() for obj in objs: obj_dict = await self.serialize_obj(obj, list_view=True) obj_dict = {k: v for k, v in obj_dict.items() if k in export_fields} writer.writerow(obj_dict) output.seek(0) return output case ExportFormat.JSON: class JSONEncoder(json.JSONEncoder): def default(self, obj): try: return super().default(obj) except TypeError: return str(obj) output = StringIO() json.dump([await self.serialize_obj(obj, list_view=True) for obj in objs], output, cls=JSONEncoder) output.seek(0) return output case _: return None async def has_add_permission(self, user_id: UUID | int | None = None) -> bool: """This method is used to check if user has permission to add new model instance. :param user_id: The user id. :return: A boolean value. """ return True async def has_change_permission(self, user_id: UUID | int | None = None) -> bool: """This method is used to check if user has permission to change model instance. :param user_id: The user id. :return: A boolean value. """ return True async def has_delete_permission(self, user_id: UUID | int | None = None) -> bool: """This method is used to check if user has permission to delete model instance. :param user_id: The user id. :return: A boolean value. """ return True async def has_export_permission(self, user_id: UUID | int | None = None) -> bool: """This method is used to check if user has permission to export model instance. :param user_id: The user id. :return: A boolean value. """ return True 

Specific methods and attributes for Model Admin:

 class ModelAdmin(BaseModelAdmin): """This class is used to create admin model class.""" # Normally, objects have three save options: “Save”, “Save and continue editing”, and “Save and add another”. # If save_as is True, “Save and add another” will be replaced # by a “Save as new” button that creates a new object (with a new ID) rather than updating the existing object. # Example of usage: save_as = True save_as: bool = False # When save_as_continue=True, the default redirect after saving the new object is to the change view for that object. # If you set save_as_continue=False, the redirect will be to the changelist view. # Example of usage: save_as_continue = False save_as_continue: bool = False # Normally, the save buttons appear only at the bottom of the forms. # If you set save_on_top, the buttons will appear both on the top and the bottom. # Example of usage: save_on_top = True save_on_top: bool = False # Set view_on_site to control whether or not to display the “View on site” link. # This link should bring you to a URL where you can display the saved object. # Example of usage: view_on_site = "http://example.com" view_on_site: str | None = None # Inlines inlines: Sequence[type[InlineModelAdmin]] = () async def authenticate(self, username: str, password: str) -> UUID | int | None: """This method is used to implement authentication for settings.ADMIN_USER_MODEL orm/db model. :params username: a value for user model settings.ADMIN_USER_MODEL_USERNAME_FIELD field. :params password: a password. :return: An user id or None. """ raise NotImplementedError async def change_password(self, id: UUID | int, password: str) -> None: """This method is used to change user password. :params id: An user id. :params password: A new password. """ raise NotImplementedError async def save_model(self, id: UUID | int | None, payload: dict) -> dict | None: """This method is used to save orm/db model object. :params id: an id of object. :params payload: a payload from request. :return: A saved object or None. """ obj = await super().save_model(id, payload) fields = self.get_model_fields_with_widget_types(with_m2m=False, with_upload=False) password_fields = [field.name for field in fields if field.form_widget_type == WidgetType.PasswordInput] if obj and id is None and password_fields: # save hashed password for create pk_name = self.get_model_pk_name(self.model_cls) pk = obj[pk_name] password_values = [payload[field] for field in password_fields if field in payload] if password_values: await self.change_password(pk, password_values[0]) return obj 

Form Field Types

There are form field types for model admin:

 class WidgetType(str, Enum): """Widget type""" Input = "Input" InputNumber = "InputNumber" SlugInput = "SlugInput" EmailInput = "EmailInput" PhoneInput = "PhoneInput" UrlInput = "UrlInput" PasswordInput = "PasswordInput" TextArea = "TextArea" RichTextArea = "RichTextArea" JsonTextArea = "JsonTextArea" Select = "Select" AsyncSelect = "AsyncSelect" AsyncTransfer = "AsyncTransfer" Switch = "Switch" Checkbox = "Checkbox" TimePicker = "TimePicker" DatePicker = "DatePicker" DateTimePicker = "DateTimePicker" RangePicker = "RangePicker" RadioGroup = "RadioGroup" CheckboxGroup = "CheckboxGroup" Upload = "Upload" 

Note: Please see antd components for more details (e.g. to see how they look like).


Inline Model Admins

Registering Inlines

 from uuid import UUID import bcrypt from tortoise import fields from tortoise.models import Model from fastadmin import TortoiseInlineModelAdmin, TortoiseModelAdmin, WidgetType, action, register class InlineUser(Model): username = fields.CharField(max_length=255, unique=True) hash_password = fields.CharField(max_length=255) is_superuser = fields.BooleanField(default=False) is_active = fields.BooleanField(default=False) def __str__(self): return self.username class InlineUserMessage(Model): user = fields.ForeignKeyField("models.InlineUser", related_name="messages") message = fields.TextField() def __str__(self): return self.message class UserMessageAdminInline(TortoiseInlineModelAdmin): model = InlineUserMessage list_display = ("user", "message") list_display_links = ("user", "message") list_filter = ("user", "message") search_fields = ("user", "message") @register(InlineUser) class UserAdmin(TortoiseModelAdmin): list_display = ("username", "is_superuser", "is_active") list_display_links = ("username",) list_filter = ( "username", "is_superuser", "is_active", ) search_fields = ( "id", "username", ) fieldsets = ( (None, {"fields": ("username", "hash_password")}), ("Permissions", {"fields": ("is_active", "is_superuser")}), ) formfield_overrides = { # noqa: RUF012 "username": (WidgetType.SlugInput, {"required": True}), "password": (WidgetType.PasswordInput, {"passwordModalForm": True}), } actions = ( *TortoiseModelAdmin.actions, "activate", "deactivate", ) inlines = (UserMessageAdminInline,) async def authenticate(self, username: str, password: str) -> int | None: user = await self.model_cls.filter(phone=username, is_superuser=True).first() if not user: return None if not bcrypt.checkpw(password.encode(), user.hash_password.encode()): return None return user.id async def change_password(self, id: UUID | int, password: str) -> None: user = await self.model_cls.filter(id=id).first() if not user: return user.hash_password = bcrypt.hashpw(password.encode(), bcrypt.gensalt()).decode() await user.save(update_fields=("hash_password",)) @action(description="Set as active") async def activate(self, ids: list[int]) -> None: await self.model_cls.filter(id__in=ids).update(is_active=True) @action(description="Deactivate") async def deactivate(self, ids: list[int]) -> None: await self.model_cls.filter(id__in=ids).update(is_active=False) 

See example for Tortoise ORM

See example for Tortoise ORM

See example for Tortoise ORM

Methods and Attributes

There are methods and attributes for Inline Model Admin:

See BaseModelAdmin class methods and attributes in model admin section.

Specific methods and attributes for Inline Model Admin:

 class InlineModelAdmin(BaseModelAdmin): """This class is used to create admin inline model class.""" # The model class which the inline is using. This is required. model: Any # The name of the foreign key on the model. # In most cases this will be dealt with automatically, but fk_name must be specified explicitly # if there are more than one foreign key to the same parent model. fk_name: str | None = None # This controls the maximum number of forms to show in the inline. # This doesn't directly correlate to the number of objects, but can if the value is small enough. # See Limiting the number of editable objects for more information. max_num: int = 10 # This controls the minimum number of forms to show in the inline. min_num: int = 1 

Changelog

See what's new added, changed, fixed, improved or updated in the latest versions.

v0.2.20

Fix for _id fields. Bump packages for backend and frontend.

v0.2.19

Fix for is_pk for tortoise orm.

v0.2.18

Fixes for m2m fk's sqlalchemy postgres. Convert str to int for them.

v0.2.17

Fixes for fk sqlalchemy postgres. Convert str to int for them.

v0.2.16

Added new setting ADMIN_DISABLE_CROP_IMAGE. So,we can configure crop images on upload.

v0.2.15

Fix password logic for user.

v0.2.14

Make permissions functions awaitable. Bump frontend/backend packages.

v0.2.13

Fix edit page frontend issue for Date field.

v0.2.12

Remove python-dotenv dep. Bump django. Add django example.

v0.2.11

Fixes for examples. Fixes for Pony ORM (delete, update m2m). Allow sorting by custom columns. Fix for list_display ordering.

v0.2.10

Fix issue empty m2m. Optimisation on unit tests. Fix for pony orm. Optimisation on search for tortoise orm.

v0.2.9

Fix issue with modal inline dialogs. Fix issue with m2m multiple select.

v0.2.8

Fix sqlalchemy delete functionality. Add more examples.

v0.2.7

Fix helpers function. Add regexps.

v0.2.6

Add edit btn for async select.

v0.2.5

Fix for async select in inlines.

v0.2.4

Fix dashboard widgets and auto register inlines.

v0.2.3

Fix filters issue on lists. Remove jinja from dependencies.

v0.2.2

Fix bugs with datetime.

v0.2.1

Update packages. Fix linters and tests in vite frontend. Removed pydantic from dependencies.

v0.2.0

Update packages. Use vite instead obsolete react-scripts.


^ \ No newline at end of file diff --git a/examples/django_djangoorm/poetry.lock b/examples/django_djangoorm/poetry.lock index 2c5094e..c845d14 100644 --- a/examples/django_djangoorm/poetry.lock +++ b/examples/django_djangoorm/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.1.2 and should not be changed by hand. [[package]] name = "asgiref" @@ -6,6 +6,7 @@ version = "3.8.1" description = "ASGI specs, helper code, and adapters" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "asgiref-3.8.1-py3-none-any.whl", hash = "sha256:3e1e3ecc849832fe52ccf2cb6686b7a55f82bb1d6aee72a58826471390335e47"}, {file = "asgiref-3.8.1.tar.gz", hash = "sha256:c343bd80a0bec947a9860adb4c432ffa7db769836c64238fc34bdc3fec84d590"}, @@ -19,17 +20,18 @@ tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"] [[package]] name = "django" -version = "5.1.3" +version = "5.2" description = "A high-level Python web framework that encourages rapid development and clean, pragmatic design." optional = false python-versions = ">=3.10" +groups = ["main"] files = [ - {file = "Django-5.1.3-py3-none-any.whl", hash = "sha256:8b38a9a12da3ae00cb0ba72da985ec4b14de6345046b1e174b1fd7254398f818"}, - {file = "Django-5.1.3.tar.gz", hash = "sha256:c0fa0e619c39325a169208caef234f90baa925227032ad3f44842ba14d75234a"}, + {file = "Django-5.2-py3-none-any.whl", hash = "sha256:91ceed4e3a6db5aedced65e3c8f963118ea9ba753fc620831c77074e620e7d83"}, + {file = "Django-5.2.tar.gz", hash = "sha256:1a47f7a7a3d43ce64570d350e008d2949abe8c7e21737b351b6a1611277c6d89"}, ] [package.dependencies] -asgiref = ">=3.8.1,<4" +asgiref = ">=3.8.1" sqlparse = ">=0.3.1" tzdata = {version = "*", markers = "sys_platform == \"win32\""} @@ -39,13 +41,14 @@ bcrypt = ["bcrypt"] [[package]] name = "fastadmin" -version = "0.2.15" +version = "0.2.19" description = "FastAdmin is an easy-to-use Admin Dashboard App for FastAPI/Flask/Django inspired by Django Admin." optional = false python-versions = "<4.0,>=3.10" +groups = ["main"] files = [ - {file = "fastadmin-0.2.15-py3-none-any.whl", hash = "sha256:4a4ea7f0bc981b3c92422c84d0af9c435c936faac0d37d415a7373cd738cbcf3"}, - {file = "fastadmin-0.2.15.tar.gz", hash = "sha256:92e32a34ae9ce3268657c0383ee1f6489009055c9e67e780d269ebb8199a00de"}, + {file = "fastadmin-0.2.19-py3-none-any.whl", hash = "sha256:49192d74aa94068625b726f5843bfb49697303ec2255f526ce896baf074c7f1e"}, + {file = "fastadmin-0.2.19.tar.gz", hash = "sha256:20a3122967a2a454baef1db760af467e20802293f5b669eeef0a8c5fcb3a03c3"}, ] [package.dependencies] @@ -67,6 +70,7 @@ version = "2.10.1" description = "JSON Web Token implementation in Python" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ {file = "PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb"}, {file = "pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953"}, @@ -80,13 +84,14 @@ tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] [[package]] name = "sqlparse" -version = "0.5.2" +version = "0.5.3" description = "A non-validating SQL parser." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "sqlparse-0.5.2-py3-none-any.whl", hash = "sha256:e99bc85c78160918c3e1d9230834ab8d80fc06c59d03f8db2618f65f65dda55e"}, - {file = "sqlparse-0.5.2.tar.gz", hash = "sha256:9e37b35e16d1cc652a2545f0997c1deb23ea28fa1f3eefe609eee3063c3b105f"}, + {file = "sqlparse-0.5.3-py3-none-any.whl", hash = "sha256:cf2196ed3418f3ba5de6af7e82c694a9fbdbfecccdfc72e281548517081f16ca"}, + {file = "sqlparse-0.5.3.tar.gz", hash = "sha256:09f67787f56a0b16ecdbde1bfc7f5d9c3371ca683cfeaa8e6ff60b4807ec9272"}, ] [package.extras] @@ -95,27 +100,31 @@ doc = ["sphinx"] [[package]] name = "typing-extensions" -version = "4.12.2" +version = "4.13.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" +groups = ["main"] +markers = "python_version == \"3.10\"" files = [ - {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, - {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, + {file = "typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c"}, + {file = "typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef"}, ] [[package]] name = "tzdata" -version = "2024.2" +version = "2025.2" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" +groups = ["main"] +markers = "sys_platform == \"win32\"" files = [ - {file = "tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd"}, - {file = "tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc"}, + {file = "tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8"}, + {file = "tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9"}, ] [metadata] -lock-version = "2.0" +lock-version = "2.1" python-versions = "^3.10" -content-hash = "11d1baea5ab2d153ec2329f325d4d1a29b212e3185e673db446fc11a3fff4a07" +content-hash = "1d0e775af2115149ceb830b665dd832874eacd32a653896678e349a552ca0604" diff --git a/examples/django_djangoorm/pyproject.toml b/examples/django_djangoorm/pyproject.toml index 998f970..5371e3e 100644 --- a/examples/django_djangoorm/pyproject.toml +++ b/examples/django_djangoorm/pyproject.toml @@ -10,8 +10,8 @@ package-mode = false [tool.poetry.dependencies] python = "^3.10" -django = "^5.1" -fastadmin = {"version" = "^0.2.15", extras = ["django"]} +django = "^5.2" +fastadmin = {"version" = "^0.2.19", extras = ["django"]} [build-system] requires = ["poetry-core>=1.0.0"] diff --git a/examples/fastapi_ponyorm/poetry.lock b/examples/fastapi_ponyorm/poetry.lock index cc725db..d0f7775 100644 --- a/examples/fastapi_ponyorm/poetry.lock +++ b/examples/fastapi_ponyorm/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.1.2 and should not be changed by hand. [[package]] name = "annotated-types" @@ -6,6 +6,7 @@ version = "0.7.0" description = "Reusable constraint types to use with typing.Annotated" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, @@ -13,24 +14,25 @@ files = [ [[package]] name = "anyio" -version = "4.6.2.post1" +version = "4.9.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "anyio-4.6.2.post1-py3-none-any.whl", hash = "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d"}, - {file = "anyio-4.6.2.post1.tar.gz", hash = "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c"}, + {file = "anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c"}, + {file = "anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028"}, ] [package.dependencies] exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} idna = ">=2.8" sniffio = ">=1.1" -typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} +typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""} [package.extras] -doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"] +doc = ["Sphinx (>=8.2,<9.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"] +test = ["anyio[trio]", "blockbuster (>=1.5.23)", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1) ; python_version >= \"3.10\"", "uvloop (>=0.21) ; platform_python_implementation == \"CPython\" and platform_system != \"Windows\" and python_version < \"3.14\""] trio = ["trio (>=0.26.1)"] [[package]] @@ -39,6 +41,7 @@ version = "3.8.1" description = "ASGI specs, helper code, and adapters" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "asgiref-3.8.1-py3-none-any.whl", hash = "sha256:3e1e3ecc849832fe52ccf2cb6686b7a55f82bb1d6aee72a58826471390335e47"}, {file = "asgiref-3.8.1.tar.gz", hash = "sha256:c343bd80a0bec947a9860adb4c432ffa7db769836c64238fc34bdc3fec84d590"}, @@ -52,24 +55,26 @@ tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"] [[package]] name = "certifi" -version = "2024.8.30" +version = "2025.1.31" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" +groups = ["main"] files = [ - {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, - {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, + {file = "certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe"}, + {file = "certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651"}, ] [[package]] name = "click" -version = "8.1.7" +version = "8.1.8" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" +groups = ["main"] 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.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, + {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"}, ] [package.dependencies] @@ -81,6 +86,8 @@ version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["main"] +markers = "platform_system == \"Windows\" or sys_platform == \"win32\"" files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, @@ -92,6 +99,7 @@ version = "2.7.0" description = "DNS toolkit" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ {file = "dnspython-2.7.0-py3-none-any.whl", hash = "sha256:b4c34b7d10b51bcc3a5071e7b8dee77939f1e878477eeecc965e9835f63c6c86"}, {file = "dnspython-2.7.0.tar.gz", hash = "sha256:ce9c432eda0dc91cf618a5cedf1a4e142651196bbcd2c80e89ed5a907e5cfaf1"}, @@ -112,6 +120,7 @@ version = "2.2.0" description = "A robust email address syntax and deliverability validation library." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "email_validator-2.2.0-py3-none-any.whl", hash = "sha256:561977c2d73ce3611850a06fa56b414621e0c8faa9d66f2611407d87465da631"}, {file = "email_validator-2.2.0.tar.gz", hash = "sha256:cb690f344c617a714f22e66ae771445a1ceb46821152df8e165c5f9a364582b7"}, @@ -127,6 +136,8 @@ version = "1.2.2" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" +groups = ["main"] +markers = "python_version == \"3.10\"" files = [ {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, @@ -137,13 +148,14 @@ test = ["pytest (>=6)"] [[package]] name = "fastadmin" -version = "0.2.15" +version = "0.2.19" description = "FastAdmin is an easy-to-use Admin Dashboard App for FastAPI/Flask/Django inspired by Django Admin." optional = false python-versions = "<4.0,>=3.10" +groups = ["main"] files = [ - {file = "fastadmin-0.2.15-py3-none-any.whl", hash = "sha256:4a4ea7f0bc981b3c92422c84d0af9c435c936faac0d37d415a7373cd738cbcf3"}, - {file = "fastadmin-0.2.15.tar.gz", hash = "sha256:92e32a34ae9ce3268657c0383ee1f6489009055c9e67e780d269ebb8199a00de"}, + {file = "fastadmin-0.2.19-py3-none-any.whl", hash = "sha256:49192d74aa94068625b726f5843bfb49697303ec2255f526ce896baf074c7f1e"}, + {file = "fastadmin-0.2.19.tar.gz", hash = "sha256:20a3122967a2a454baef1db760af467e20802293f5b669eeef0a8c5fcb3a03c3"}, ] [package.dependencies] @@ -166,6 +178,7 @@ version = "0.112.4" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "fastapi-0.112.4-py3-none-any.whl", hash = "sha256:6d4f9c3301825d4620665cace8e2bc34e303f61c05a5382d1d61a048ea7f2f37"}, {file = "fastapi-0.112.4.tar.gz", hash = "sha256:b1f72e1f72afe7902ccd639ba320abb5d57a309804f45c10ab0ce3693cadeb33"}, @@ -188,16 +201,18 @@ standard = ["email-validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.5)", "htt [[package]] name = "fastapi-cli" -version = "0.0.5" +version = "0.0.7" description = "Run and manage FastAPI apps from the command line with FastAPI CLI. 🚀" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "fastapi_cli-0.0.5-py3-none-any.whl", hash = "sha256:e94d847524648c748a5350673546bbf9bcaeb086b33c24f2e82e021436866a46"}, - {file = "fastapi_cli-0.0.5.tar.gz", hash = "sha256:d30e1239c6f46fcb95e606f02cdda59a1e2fa778a54b64686b3ff27f6211ff9f"}, + {file = "fastapi_cli-0.0.7-py3-none-any.whl", hash = "sha256:d549368ff584b2804336c61f192d86ddea080c11255f375959627911944804f4"}, + {file = "fastapi_cli-0.0.7.tar.gz", hash = "sha256:02b3b65956f526412515907a0793c9094abd4bfb5457b389f645b0ea6ba3605e"}, ] [package.dependencies] +rich-toolkit = ">=0.11.1" typer = ">=0.12.3" uvicorn = {version = ">=0.15.0", extras = ["standard"]} @@ -210,6 +225,7 @@ version = "0.14.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, @@ -217,13 +233,14 @@ files = [ [[package]] name = "httpcore" -version = "1.0.7" +version = "1.0.8" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd"}, - {file = "httpcore-1.0.7.tar.gz", hash = "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c"}, + {file = "httpcore-1.0.8-py3-none-any.whl", hash = "sha256:5254cf149bcb5f75e9d1b2b9f729ea4a4b883d1ad7379fc632b727cec23674be"}, + {file = "httpcore-1.0.8.tar.gz", hash = "sha256:86e94505ed24ea06514883fd44d2bc02d90e77e7979c8eb71b90f41d364a1bad"}, ] [package.dependencies] @@ -242,6 +259,7 @@ version = "0.6.4" description = "A collection of framework independent HTTP protocol utils." optional = false python-versions = ">=3.8.0" +groups = ["main"] files = [ {file = "httptools-0.6.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3c73ce323711a6ffb0d247dcd5a550b8babf0f757e86a52558fe5b86d6fefcc0"}, {file = "httptools-0.6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:345c288418f0944a6fe67be8e6afa9262b18c7626c3ef3c28adc5eabc06a68da"}, @@ -293,13 +311,14 @@ test = ["Cython (>=0.29.24)"] [[package]] name = "httpx" -version = "0.28.0" +version = "0.28.1" description = "The next generation HTTP client." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "httpx-0.28.0-py3-none-any.whl", hash = "sha256:dc0b419a0cfeb6e8b34e85167c0da2671206f5095f1baa9663d23bcfd6b535fc"}, - {file = "httpx-0.28.0.tar.gz", hash = "sha256:0858d3bab51ba7e386637f22a61d8ccddaeec5f3fe4209da3a6168dbb91573e0"}, + {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"}, + {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"}, ] [package.dependencies] @@ -309,7 +328,7 @@ httpcore = "==1.*" idna = "*" [package.extras] -brotli = ["brotli", "brotlicffi"] +brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi ; platform_python_implementation != \"CPython\""] cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] @@ -321,6 +340,7 @@ version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" +groups = ["main"] files = [ {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, @@ -331,13 +351,14 @@ all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2 [[package]] name = "jinja2" -version = "3.1.4" +version = "3.1.6" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" +groups = ["main"] files = [ - {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, - {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, + {file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"}, + {file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"}, ] [package.dependencies] @@ -352,6 +373,7 @@ version = "3.0.0" description = "Python port of markdown-it. Markdown parsing, done right!" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, @@ -376,6 +398,7 @@ version = "3.0.2" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.9" +groups = ["main"] 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"}, @@ -446,6 +469,7 @@ version = "0.1.2" description = "Markdown URL utilities" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, @@ -457,6 +481,7 @@ version = "0.7.19" description = "Pony Object-Relational Mapper" optional = false python-versions = "*" +groups = ["main"] files = [ {file = "pony-0.7.19-py3-none-any.whl", hash = "sha256:5112b4cf40d3f24e93ae66dc5ab7dc6813388efa870e750928d60dc699873cf5"}, {file = "pony-0.7.19.tar.gz", hash = "sha256:f7f83b2981893e49f7f18e8def52ad8fa8f8e6c5f9583b9aaed62d4d85036a0f"}, @@ -464,131 +489,133 @@ files = [ [[package]] name = "pydantic" -version = "2.10.2" +version = "2.11.3" description = "Data validation using Python type hints" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "pydantic-2.10.2-py3-none-any.whl", hash = "sha256:cfb96e45951117c3024e6b67b25cdc33a3cb7b2fa62e239f7af1378358a1d99e"}, - {file = "pydantic-2.10.2.tar.gz", hash = "sha256:2bc2d7f17232e0841cbba4641e65ba1eb6fafb3a08de3a091ff3ce14a197c4fa"}, + {file = "pydantic-2.11.3-py3-none-any.whl", hash = "sha256:a082753436a07f9ba1289c6ffa01cd93db3548776088aa917cc43b63f68fa60f"}, + {file = "pydantic-2.11.3.tar.gz", hash = "sha256:7471657138c16adad9322fe3070c0116dd6c3ad8d649300e3cbdfe91f4db4ec3"}, ] [package.dependencies] annotated-types = ">=0.6.0" -pydantic-core = "2.27.1" +pydantic-core = "2.33.1" typing-extensions = ">=4.12.2" +typing-inspection = ">=0.4.0" [package.extras] email = ["email-validator (>=2.0.0)"] -timezone = ["tzdata"] +timezone = ["tzdata ; python_version >= \"3.9\" and platform_system == \"Windows\""] [[package]] name = "pydantic-core" -version = "2.27.1" +version = "2.33.1" description = "Core functionality for Pydantic validation and serialization" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "pydantic_core-2.27.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:71a5e35c75c021aaf400ac048dacc855f000bdfed91614b4a726f7432f1f3d6a"}, - {file = "pydantic_core-2.27.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f82d068a2d6ecfc6e054726080af69a6764a10015467d7d7b9f66d6ed5afa23b"}, - {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:121ceb0e822f79163dd4699e4c54f5ad38b157084d97b34de8b232bcaad70278"}, - {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4603137322c18eaf2e06a4495f426aa8d8388940f3c457e7548145011bb68e05"}, - {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a33cd6ad9017bbeaa9ed78a2e0752c5e250eafb9534f308e7a5f7849b0b1bfb4"}, - {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15cc53a3179ba0fcefe1e3ae50beb2784dede4003ad2dfd24f81bba4b23a454f"}, - {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45d9c5eb9273aa50999ad6adc6be5e0ecea7e09dbd0d31bd0c65a55a2592ca08"}, - {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8bf7b66ce12a2ac52d16f776b31d16d91033150266eb796967a7e4621707e4f6"}, - {file = "pydantic_core-2.27.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:655d7dd86f26cb15ce8a431036f66ce0318648f8853d709b4167786ec2fa4807"}, - {file = "pydantic_core-2.27.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:5556470f1a2157031e676f776c2bc20acd34c1990ca5f7e56f1ebf938b9ab57c"}, - {file = "pydantic_core-2.27.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f69ed81ab24d5a3bd93861c8c4436f54afdf8e8cc421562b0c7504cf3be58206"}, - {file = "pydantic_core-2.27.1-cp310-none-win32.whl", hash = "sha256:f5a823165e6d04ccea61a9f0576f345f8ce40ed533013580e087bd4d7442b52c"}, - {file = "pydantic_core-2.27.1-cp310-none-win_amd64.whl", hash = "sha256:57866a76e0b3823e0b56692d1a0bf722bffb324839bb5b7226a7dbd6c9a40b17"}, - {file = "pydantic_core-2.27.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ac3b20653bdbe160febbea8aa6c079d3df19310d50ac314911ed8cc4eb7f8cb8"}, - {file = "pydantic_core-2.27.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a5a8e19d7c707c4cadb8c18f5f60c843052ae83c20fa7d44f41594c644a1d330"}, - {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f7059ca8d64fea7f238994c97d91f75965216bcbe5f695bb44f354893f11d52"}, - {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bed0f8a0eeea9fb72937ba118f9db0cb7e90773462af7962d382445f3005e5a4"}, - {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a3cb37038123447cf0f3ea4c74751f6a9d7afef0eb71aa07bf5f652b5e6a132c"}, - {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:84286494f6c5d05243456e04223d5a9417d7f443c3b76065e75001beb26f88de"}, - {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acc07b2cfc5b835444b44a9956846b578d27beeacd4b52e45489e93276241025"}, - {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4fefee876e07a6e9aad7a8c8c9f85b0cdbe7df52b8a9552307b09050f7512c7e"}, - {file = "pydantic_core-2.27.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:258c57abf1188926c774a4c94dd29237e77eda19462e5bb901d88adcab6af919"}, - {file = "pydantic_core-2.27.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:35c14ac45fcfdf7167ca76cc80b2001205a8d5d16d80524e13508371fb8cdd9c"}, - {file = "pydantic_core-2.27.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d1b26e1dff225c31897696cab7d4f0a315d4c0d9e8666dbffdb28216f3b17fdc"}, - {file = "pydantic_core-2.27.1-cp311-none-win32.whl", hash = "sha256:2cdf7d86886bc6982354862204ae3b2f7f96f21a3eb0ba5ca0ac42c7b38598b9"}, - {file = "pydantic_core-2.27.1-cp311-none-win_amd64.whl", hash = "sha256:3af385b0cee8df3746c3f406f38bcbfdc9041b5c2d5ce3e5fc6637256e60bbc5"}, - {file = "pydantic_core-2.27.1-cp311-none-win_arm64.whl", hash = "sha256:81f2ec23ddc1b476ff96563f2e8d723830b06dceae348ce02914a37cb4e74b89"}, - {file = "pydantic_core-2.27.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9cbd94fc661d2bab2bc702cddd2d3370bbdcc4cd0f8f57488a81bcce90c7a54f"}, - {file = "pydantic_core-2.27.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5f8c4718cd44ec1580e180cb739713ecda2bdee1341084c1467802a417fe0f02"}, - {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15aae984e46de8d376df515f00450d1522077254ef6b7ce189b38ecee7c9677c"}, - {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1ba5e3963344ff25fc8c40da90f44b0afca8cfd89d12964feb79ac1411a260ac"}, - {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:992cea5f4f3b29d6b4f7f1726ed8ee46c8331c6b4eed6db5b40134c6fe1768bb"}, - {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0325336f348dbee6550d129b1627cb8f5351a9dc91aad141ffb96d4937bd9529"}, - {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7597c07fbd11515f654d6ece3d0e4e5093edc30a436c63142d9a4b8e22f19c35"}, - {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3bbd5d8cc692616d5ef6fbbbd50dbec142c7e6ad9beb66b78a96e9c16729b089"}, - {file = "pydantic_core-2.27.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:dc61505e73298a84a2f317255fcc72b710b72980f3a1f670447a21efc88f8381"}, - {file = "pydantic_core-2.27.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:e1f735dc43da318cad19b4173dd1ffce1d84aafd6c9b782b3abc04a0d5a6f5bb"}, - {file = "pydantic_core-2.27.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f4e5658dbffe8843a0f12366a4c2d1c316dbe09bb4dfbdc9d2d9cd6031de8aae"}, - {file = "pydantic_core-2.27.1-cp312-none-win32.whl", hash = "sha256:672ebbe820bb37988c4d136eca2652ee114992d5d41c7e4858cdd90ea94ffe5c"}, - {file = "pydantic_core-2.27.1-cp312-none-win_amd64.whl", hash = "sha256:66ff044fd0bb1768688aecbe28b6190f6e799349221fb0de0e6f4048eca14c16"}, - {file = "pydantic_core-2.27.1-cp312-none-win_arm64.whl", hash = "sha256:9a3b0793b1bbfd4146304e23d90045f2a9b5fd5823aa682665fbdaf2a6c28f3e"}, - {file = "pydantic_core-2.27.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:f216dbce0e60e4d03e0c4353c7023b202d95cbaeff12e5fd2e82ea0a66905073"}, - {file = "pydantic_core-2.27.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a2e02889071850bbfd36b56fd6bc98945e23670773bc7a76657e90e6b6603c08"}, - {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42b0e23f119b2b456d07ca91b307ae167cc3f6c846a7b169fca5326e32fdc6cf"}, - {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:764be71193f87d460a03f1f7385a82e226639732214b402f9aa61f0d025f0737"}, - {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1c00666a3bd2f84920a4e94434f5974d7bbc57e461318d6bb34ce9cdbbc1f6b2"}, - {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ccaa88b24eebc0f849ce0a4d09e8a408ec5a94afff395eb69baf868f5183107"}, - {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c65af9088ac534313e1963443d0ec360bb2b9cba6c2909478d22c2e363d98a51"}, - {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:206b5cf6f0c513baffaeae7bd817717140770c74528f3e4c3e1cec7871ddd61a"}, - {file = "pydantic_core-2.27.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:062f60e512fc7fff8b8a9d680ff0ddaaef0193dba9fa83e679c0c5f5fbd018bc"}, - {file = "pydantic_core-2.27.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:a0697803ed7d4af5e4c1adf1670af078f8fcab7a86350e969f454daf598c4960"}, - {file = "pydantic_core-2.27.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:58ca98a950171f3151c603aeea9303ef6c235f692fe555e883591103da709b23"}, - {file = "pydantic_core-2.27.1-cp313-none-win32.whl", hash = "sha256:8065914ff79f7eab1599bd80406681f0ad08f8e47c880f17b416c9f8f7a26d05"}, - {file = "pydantic_core-2.27.1-cp313-none-win_amd64.whl", hash = "sha256:ba630d5e3db74c79300d9a5bdaaf6200172b107f263c98a0539eeecb857b2337"}, - {file = "pydantic_core-2.27.1-cp313-none-win_arm64.whl", hash = "sha256:45cf8588c066860b623cd11c4ba687f8d7175d5f7ef65f7129df8a394c502de5"}, - {file = "pydantic_core-2.27.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:5897bec80a09b4084aee23f9b73a9477a46c3304ad1d2d07acca19723fb1de62"}, - {file = "pydantic_core-2.27.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d0165ab2914379bd56908c02294ed8405c252250668ebcb438a55494c69f44ab"}, - {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b9af86e1d8e4cfc82c2022bfaa6f459381a50b94a29e95dcdda8442d6d83864"}, - {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f6c8a66741c5f5447e047ab0ba7a1c61d1e95580d64bce852e3df1f895c4067"}, - {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9a42d6a8156ff78981f8aa56eb6394114e0dedb217cf8b729f438f643608cbcd"}, - {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:64c65f40b4cd8b0e049a8edde07e38b476da7e3aaebe63287c899d2cff253fa5"}, - {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdcf339322a3fae5cbd504edcefddd5a50d9ee00d968696846f089b4432cf78"}, - {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bf99c8404f008750c846cb4ac4667b798a9f7de673ff719d705d9b2d6de49c5f"}, - {file = "pydantic_core-2.27.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8f1edcea27918d748c7e5e4d917297b2a0ab80cad10f86631e488b7cddf76a36"}, - {file = "pydantic_core-2.27.1-cp38-cp38-musllinux_1_1_armv7l.whl", hash = "sha256:159cac0a3d096f79ab6a44d77a961917219707e2a130739c64d4dd46281f5c2a"}, - {file = "pydantic_core-2.27.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:029d9757eb621cc6e1848fa0b0310310de7301057f623985698ed7ebb014391b"}, - {file = "pydantic_core-2.27.1-cp38-none-win32.whl", hash = "sha256:a28af0695a45f7060e6f9b7092558a928a28553366519f64083c63a44f70e618"}, - {file = "pydantic_core-2.27.1-cp38-none-win_amd64.whl", hash = "sha256:2d4567c850905d5eaaed2f7a404e61012a51caf288292e016360aa2b96ff38d4"}, - {file = "pydantic_core-2.27.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:e9386266798d64eeb19dd3677051f5705bf873e98e15897ddb7d76f477131967"}, - {file = "pydantic_core-2.27.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4228b5b646caa73f119b1ae756216b59cc6e2267201c27d3912b592c5e323b60"}, - {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b3dfe500de26c52abe0477dde16192ac39c98f05bf2d80e76102d394bd13854"}, - {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:aee66be87825cdf72ac64cb03ad4c15ffef4143dbf5c113f64a5ff4f81477bf9"}, - {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b748c44bb9f53031c8cbc99a8a061bc181c1000c60a30f55393b6e9c45cc5bd"}, - {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ca038c7f6a0afd0b2448941b6ef9d5e1949e999f9e5517692eb6da58e9d44be"}, - {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e0bd57539da59a3e4671b90a502da9a28c72322a4f17866ba3ac63a82c4498e"}, - {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ac6c2c45c847bbf8f91930d88716a0fb924b51e0c6dad329b793d670ec5db792"}, - {file = "pydantic_core-2.27.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b94d4ba43739bbe8b0ce4262bcc3b7b9f31459ad120fb595627eaeb7f9b9ca01"}, - {file = "pydantic_core-2.27.1-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:00e6424f4b26fe82d44577b4c842d7df97c20be6439e8e685d0d715feceb9fb9"}, - {file = "pydantic_core-2.27.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:38de0a70160dd97540335b7ad3a74571b24f1dc3ed33f815f0880682e6880131"}, - {file = "pydantic_core-2.27.1-cp39-none-win32.whl", hash = "sha256:7ccebf51efc61634f6c2344da73e366c75e735960b5654b63d7e6f69a5885fa3"}, - {file = "pydantic_core-2.27.1-cp39-none-win_amd64.whl", hash = "sha256:a57847b090d7892f123726202b7daa20df6694cbd583b67a592e856bff603d6c"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3fa80ac2bd5856580e242dbc202db873c60a01b20309c8319b5c5986fbe53ce6"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d950caa237bb1954f1b8c9227b5065ba6875ac9771bb8ec790d956a699b78676"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e4216e64d203e39c62df627aa882f02a2438d18a5f21d7f721621f7a5d3611d"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02a3d637bd387c41d46b002f0e49c52642281edacd2740e5a42f7017feea3f2c"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:161c27ccce13b6b0c8689418da3885d3220ed2eae2ea5e9b2f7f3d48f1d52c27"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:19910754e4cc9c63bc1c7f6d73aa1cfee82f42007e407c0f413695c2f7ed777f"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:e173486019cc283dc9778315fa29a363579372fe67045e971e89b6365cc035ed"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:af52d26579b308921b73b956153066481f064875140ccd1dfd4e77db89dbb12f"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:981fb88516bd1ae8b0cbbd2034678a39dedc98752f264ac9bc5839d3923fa04c"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5fde892e6c697ce3e30c61b239330fc5d569a71fefd4eb6512fc6caec9dd9e2f"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:816f5aa087094099fff7edabb5e01cc370eb21aa1a1d44fe2d2aefdfb5599b31"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c10c309e18e443ddb108f0ef64e8729363adbfd92d6d57beec680f6261556f3"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98476c98b02c8e9b2eec76ac4156fd006628b1b2d0ef27e548ffa978393fd154"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c3027001c28434e7ca5a6e1e527487051136aa81803ac812be51802150d880dd"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:7699b1df36a48169cdebda7ab5a2bac265204003f153b4bd17276153d997670a"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:1c39b07d90be6b48968ddc8c19e7585052088fd7ec8d568bb31ff64c70ae3c97"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:46ccfe3032b3915586e469d4972973f893c0a2bb65669194a5bdea9bacc088c2"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:62ba45e21cf6571d7f716d903b5b7b6d2617e2d5d67c0923dc47b9d41369f840"}, - {file = "pydantic_core-2.27.1.tar.gz", hash = "sha256:62a763352879b84aa31058fc931884055fd75089cccbd9d58bb6afd01141b235"}, + {file = "pydantic_core-2.33.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3077cfdb6125cc8dab61b155fdd714663e401f0e6883f9632118ec12cf42df26"}, + {file = "pydantic_core-2.33.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8ffab8b2908d152e74862d276cf5017c81a2f3719f14e8e3e8d6b83fda863927"}, + {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5183e4f6a2d468787243ebcd70cf4098c247e60d73fb7d68d5bc1e1beaa0c4db"}, + {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:398a38d323f37714023be1e0285765f0a27243a8b1506b7b7de87b647b517e48"}, + {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87d3776f0001b43acebfa86f8c64019c043b55cc5a6a2e313d728b5c95b46969"}, + {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c566dd9c5f63d22226409553531f89de0cac55397f2ab8d97d6f06cfce6d947e"}, + {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0d5f3acc81452c56895e90643a625302bd6be351e7010664151cc55b7b97f89"}, + {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d3a07fadec2a13274a8d861d3d37c61e97a816beae717efccaa4b36dfcaadcde"}, + {file = "pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f99aeda58dce827f76963ee87a0ebe75e648c72ff9ba1174a253f6744f518f65"}, + {file = "pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:902dbc832141aa0ec374f4310f1e4e7febeebc3256f00dc359a9ac3f264a45dc"}, + {file = "pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fe44d56aa0b00d66640aa84a3cbe80b7a3ccdc6f0b1ca71090696a6d4777c091"}, + {file = "pydantic_core-2.33.1-cp310-cp310-win32.whl", hash = "sha256:ed3eb16d51257c763539bde21e011092f127a2202692afaeaccb50db55a31383"}, + {file = "pydantic_core-2.33.1-cp310-cp310-win_amd64.whl", hash = "sha256:694ad99a7f6718c1a498dc170ca430687a39894a60327f548e02a9c7ee4b6504"}, + {file = "pydantic_core-2.33.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6e966fc3caaf9f1d96b349b0341c70c8d6573bf1bac7261f7b0ba88f96c56c24"}, + {file = "pydantic_core-2.33.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bfd0adeee563d59c598ceabddf2c92eec77abcb3f4a391b19aa7366170bd9e30"}, + {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91815221101ad3c6b507804178a7bb5cb7b2ead9ecd600041669c8d805ebd595"}, + {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9fea9c1869bb4742d174a57b4700c6dadea951df8b06de40c2fedb4f02931c2e"}, + {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d20eb4861329bb2484c021b9d9a977566ab16d84000a57e28061151c62b349a"}, + {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb935c5591573ae3201640579f30128ccc10739b45663f93c06796854405505"}, + {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c964fd24e6166420d18fb53996d8c9fd6eac9bf5ae3ec3d03015be4414ce497f"}, + {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:681d65e9011f7392db5aa002b7423cc442d6a673c635668c227c6c8d0e5a4f77"}, + {file = "pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e100c52f7355a48413e2999bfb4e139d2977a904495441b374f3d4fb4a170961"}, + {file = "pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:048831bd363490be79acdd3232f74a0e9951b11b2b4cc058aeb72b22fdc3abe1"}, + {file = "pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:bdc84017d28459c00db6f918a7272a5190bec3090058334e43a76afb279eac7c"}, + {file = "pydantic_core-2.33.1-cp311-cp311-win32.whl", hash = "sha256:32cd11c5914d1179df70406427097c7dcde19fddf1418c787540f4b730289896"}, + {file = "pydantic_core-2.33.1-cp311-cp311-win_amd64.whl", hash = "sha256:2ea62419ba8c397e7da28a9170a16219d310d2cf4970dbc65c32faf20d828c83"}, + {file = "pydantic_core-2.33.1-cp311-cp311-win_arm64.whl", hash = "sha256:fc903512177361e868bc1f5b80ac8c8a6e05fcdd574a5fb5ffeac5a9982b9e89"}, + {file = "pydantic_core-2.33.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1293d7febb995e9d3ec3ea09caf1a26214eec45b0f29f6074abb004723fc1de8"}, + {file = "pydantic_core-2.33.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:99b56acd433386c8f20be5c4000786d1e7ca0523c8eefc995d14d79c7a081498"}, + {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35a5ec3fa8c2fe6c53e1b2ccc2454398f95d5393ab398478f53e1afbbeb4d939"}, + {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b172f7b9d2f3abc0efd12e3386f7e48b576ef309544ac3a63e5e9cdd2e24585d"}, + {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9097b9f17f91eea659b9ec58148c0747ec354a42f7389b9d50701610d86f812e"}, + {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc77ec5b7e2118b152b0d886c7514a4653bcb58c6b1d760134a9fab915f777b3"}, + {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5e3d15245b08fa4a84cefc6c9222e6f37c98111c8679fbd94aa145f9a0ae23d"}, + {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ef99779001d7ac2e2461d8ab55d3373fe7315caefdbecd8ced75304ae5a6fc6b"}, + {file = "pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fc6bf8869e193855e8d91d91f6bf59699a5cdfaa47a404e278e776dd7f168b39"}, + {file = "pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:b1caa0bc2741b043db7823843e1bde8aaa58a55a58fda06083b0569f8b45693a"}, + {file = "pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ec259f62538e8bf364903a7d0d0239447059f9434b284f5536e8402b7dd198db"}, + {file = "pydantic_core-2.33.1-cp312-cp312-win32.whl", hash = "sha256:e14f369c98a7c15772b9da98987f58e2b509a93235582838bd0d1d8c08b68fda"}, + {file = "pydantic_core-2.33.1-cp312-cp312-win_amd64.whl", hash = "sha256:1c607801d85e2e123357b3893f82c97a42856192997b95b4d8325deb1cd0c5f4"}, + {file = "pydantic_core-2.33.1-cp312-cp312-win_arm64.whl", hash = "sha256:8d13f0276806ee722e70a1c93da19748594f19ac4299c7e41237fc791d1861ea"}, + {file = "pydantic_core-2.33.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:70af6a21237b53d1fe7b9325b20e65cbf2f0a848cf77bed492b029139701e66a"}, + {file = "pydantic_core-2.33.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:282b3fe1bbbe5ae35224a0dbd05aed9ccabccd241e8e6b60370484234b456266"}, + {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b315e596282bbb5822d0c7ee9d255595bd7506d1cb20c2911a4da0b970187d3"}, + {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1dfae24cf9921875ca0ca6a8ecb4bb2f13c855794ed0d468d6abbec6e6dcd44a"}, + {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6dd8ecfde08d8bfadaea669e83c63939af76f4cf5538a72597016edfa3fad516"}, + {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f593494876eae852dc98c43c6f260f45abdbfeec9e4324e31a481d948214764"}, + {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:948b73114f47fd7016088e5186d13faf5e1b2fe83f5e320e371f035557fd264d"}, + {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e11f3864eb516af21b01e25fac915a82e9ddad3bb0fb9e95a246067398b435a4"}, + {file = "pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:549150be302428b56fdad0c23c2741dcdb5572413776826c965619a25d9c6bde"}, + {file = "pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:495bc156026efafd9ef2d82372bd38afce78ddd82bf28ef5276c469e57c0c83e"}, + {file = "pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ec79de2a8680b1a67a07490bddf9636d5c2fab609ba8c57597e855fa5fa4dacd"}, + {file = "pydantic_core-2.33.1-cp313-cp313-win32.whl", hash = "sha256:ee12a7be1742f81b8a65b36c6921022301d466b82d80315d215c4c691724986f"}, + {file = "pydantic_core-2.33.1-cp313-cp313-win_amd64.whl", hash = "sha256:ede9b407e39949d2afc46385ce6bd6e11588660c26f80576c11c958e6647bc40"}, + {file = "pydantic_core-2.33.1-cp313-cp313-win_arm64.whl", hash = "sha256:aa687a23d4b7871a00e03ca96a09cad0f28f443690d300500603bd0adba4b523"}, + {file = "pydantic_core-2.33.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:401d7b76e1000d0dd5538e6381d28febdcacb097c8d340dde7d7fc6e13e9f95d"}, + {file = "pydantic_core-2.33.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7aeb055a42d734c0255c9e489ac67e75397d59c6fbe60d155851e9782f276a9c"}, + {file = "pydantic_core-2.33.1-cp313-cp313t-win_amd64.whl", hash = "sha256:338ea9b73e6e109f15ab439e62cb3b78aa752c7fd9536794112e14bee02c8d18"}, + {file = "pydantic_core-2.33.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5ab77f45d33d264de66e1884fca158bc920cb5e27fd0764a72f72f5756ae8bdb"}, + {file = "pydantic_core-2.33.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7aaba1b4b03aaea7bb59e1b5856d734be011d3e6d98f5bcaa98cb30f375f2ad"}, + {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7fb66263e9ba8fea2aa85e1e5578980d127fb37d7f2e292773e7bc3a38fb0c7b"}, + {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3f2648b9262607a7fb41d782cc263b48032ff7a03a835581abbf7a3bec62bcf5"}, + {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:723c5630c4259400818b4ad096735a829074601805d07f8cafc366d95786d331"}, + {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d100e3ae783d2167782391e0c1c7a20a31f55f8015f3293647544df3f9c67824"}, + {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:177d50460bc976a0369920b6c744d927b0ecb8606fb56858ff542560251b19e5"}, + {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a3edde68d1a1f9af1273b2fe798997b33f90308fb6d44d8550c89fc6a3647cf6"}, + {file = "pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a62c3c3ef6a7e2c45f7853b10b5bc4ddefd6ee3cd31024754a1a5842da7d598d"}, + {file = "pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:c91dbb0ab683fa0cd64a6e81907c8ff41d6497c346890e26b23de7ee55353f96"}, + {file = "pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9f466e8bf0a62dc43e068c12166281c2eca72121dd2adc1040f3aa1e21ef8599"}, + {file = "pydantic_core-2.33.1-cp39-cp39-win32.whl", hash = "sha256:ab0277cedb698749caada82e5d099dc9fed3f906a30d4c382d1a21725777a1e5"}, + {file = "pydantic_core-2.33.1-cp39-cp39-win_amd64.whl", hash = "sha256:5773da0ee2d17136b1f1c6fbde543398d452a6ad2a7b54ea1033e2daa739b8d2"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5c834f54f8f4640fd7e4b193f80eb25a0602bba9e19b3cd2fc7ffe8199f5ae02"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:049e0de24cf23766f12cc5cc71d8abc07d4a9deb9061b334b62093dedc7cb068"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a28239037b3d6f16916a4c831a5a0eadf856bdd6d2e92c10a0da3a59eadcf3e"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d3da303ab5f378a268fa7d45f37d7d85c3ec19769f28d2cc0c61826a8de21fe"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:25626fb37b3c543818c14821afe0fd3830bc327a43953bc88db924b68c5723f1"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3ab2d36e20fbfcce8f02d73c33a8a7362980cff717926bbae030b93ae46b56c7"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:2f9284e11c751b003fd4215ad92d325d92c9cb19ee6729ebd87e3250072cdcde"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:048c01eee07d37cbd066fc512b9d8b5ea88ceeb4e629ab94b3e56965ad655add"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5ccd429694cf26af7997595d627dd2637e7932214486f55b8a357edaac9dae8c"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3a371dc00282c4b84246509a5ddc808e61b9864aa1eae9ecc92bb1268b82db4a"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:f59295ecc75a1788af8ba92f2e8c6eeaa5a94c22fc4d151e8d9638814f85c8fc"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08530b8ac922003033f399128505f513e30ca770527cc8bbacf75a84fcc2c74b"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bae370459da6a5466978c0eacf90690cb57ec9d533f8e63e564ef3822bfa04fe"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e3de2777e3b9f4d603112f78006f4ae0acb936e95f06da6cb1a45fbad6bdb4b5"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3a64e81e8cba118e108d7126362ea30e021291b7805d47e4896e52c791be2761"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:52928d8c1b6bda03cc6d811e8923dffc87a2d3c8b3bfd2ce16471c7147a24850"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:1b30d92c9412beb5ac6b10a3eb7ef92ccb14e3f2a8d7732e2d739f58b3aa7544"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:f995719707e0e29f0f41a8aa3bcea6e761a36c9136104d3189eafb83f5cec5e5"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7edbc454a29fc6aeae1e1eecba4f07b63b8d76e76a748532233c4c167b4cb9ea"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:ad05b683963f69a1d5d2c2bdab1274a31221ca737dbbceaa32bcb67359453cdd"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df6a94bf9452c6da9b5d76ed229a5683d0306ccb91cca8e1eea883189780d568"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7965c13b3967909a09ecc91f21d09cfc4576bf78140b988904e94f130f188396"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3f1fdb790440a34f6ecf7679e1863b825cb5ffde858a9197f851168ed08371e5"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:5277aec8d879f8d05168fdd17ae811dd313b8ff894aeeaf7cd34ad28b4d77e33"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8ab581d3530611897d863d1a649fb0644b860286b4718db919bfd51ece41f10b"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0483847fa9ad5e3412265c1bd72aad35235512d9ce9d27d81a56d935ef489672"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:de9e06abe3cc5ec6a2d5f75bc99b0bdca4f5c719a5b34026f8c57efbdecd2ee3"}, + {file = "pydantic_core-2.33.1.tar.gz", hash = "sha256:bcc9c6fdb0ced789245b02b7d6603e17d1563064ddcfc36f046b61c0c05dd9df"}, ] [package.dependencies] @@ -596,13 +623,14 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" [[package]] name = "pygments" -version = "2.18.0" +version = "2.19.1" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, - {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, + {file = "pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c"}, + {file = "pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f"}, ] [package.extras] @@ -614,6 +642,7 @@ version = "2.10.1" description = "JSON Web Token implementation in Python" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ {file = "PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb"}, {file = "pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953"}, @@ -627,13 +656,14 @@ tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] [[package]] name = "python-dotenv" -version = "1.0.1" +version = "1.1.0" description = "Read key-value pairs from a .env file and set them as environment variables" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, - {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, + {file = "python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d"}, + {file = "python_dotenv-1.1.0.tar.gz", hash = "sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5"}, ] [package.extras] @@ -641,13 +671,14 @@ cli = ["click (>=5.0)"] [[package]] name = "python-multipart" -version = "0.0.19" +version = "0.0.20" description = "A streaming multipart parser for Python" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "python_multipart-0.0.19-py3-none-any.whl", hash = "sha256:f8d5b0b9c618575bf9df01c684ded1d94a338839bdd8223838afacfb4bb2082d"}, - {file = "python_multipart-0.0.19.tar.gz", hash = "sha256:905502ef39050557b7a6af411f454bc19526529ca46ae6831508438890ce12cc"}, + {file = "python_multipart-0.0.20-py3-none-any.whl", hash = "sha256:8a62d3a8335e06589fe01f2a3e178cdcc632f3fbe0d492ad9ee0ec35aab1f104"}, + {file = "python_multipart-0.0.20.tar.gz", hash = "sha256:8dd0cab45b8e23064ae09147625994d090fa46f5b0d1e13af944c331a7fa9d13"}, ] [[package]] @@ -656,6 +687,7 @@ version = "6.0.2" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {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"}, @@ -714,13 +746,14 @@ files = [ [[package]] name = "rich" -version = "13.9.4" +version = "14.0.0" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" optional = false python-versions = ">=3.8.0" +groups = ["main"] files = [ - {file = "rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90"}, - {file = "rich-13.9.4.tar.gz", hash = "sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098"}, + {file = "rich-14.0.0-py3-none-any.whl", hash = "sha256:1c9491e1951aac09caffd42f448ee3d04e58923ffe14993f6e83068dc395d7e0"}, + {file = "rich-14.0.0.tar.gz", hash = "sha256:82f1bc23a6a21ebca4ae0c45af9bdbc492ed20231dcb63f297d6d1021a9d5725"}, ] [package.dependencies] @@ -731,12 +764,30 @@ typing-extensions = {version = ">=4.0.0,<5.0", markers = "python_version < \"3.1 [package.extras] jupyter = ["ipywidgets (>=7.5.1,<9)"] +[[package]] +name = "rich-toolkit" +version = "0.14.1" +description = "Rich toolkit for building command-line applications" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "rich_toolkit-0.14.1-py3-none-any.whl", hash = "sha256:dc92c0117d752446d04fdc828dbca5873bcded213a091a5d3742a2beec2e6559"}, + {file = "rich_toolkit-0.14.1.tar.gz", hash = "sha256:9248e2d087bfc01f3e4c5c8987e05f7fa744d00dd22fa2be3aa6e50255790b3f"}, +] + +[package.dependencies] +click = ">=8.1.7" +rich = ">=13.7.1" +typing-extensions = ">=4.12.2" + [[package]] name = "shellingham" version = "1.5.4" description = "Tool to Detect Surrounding Shell" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686"}, {file = "shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de"}, @@ -748,6 +799,7 @@ version = "1.3.1" description = "Sniff out which async library your code is running under" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, @@ -759,6 +811,7 @@ version = "0.38.6" description = "The little ASGI library that shines." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "starlette-0.38.6-py3-none-any.whl", hash = "sha256:4517a1409e2e73ee4951214ba012052b9e16f60e90d73cfb06192c19203bbb05"}, {file = "starlette-0.38.6.tar.gz", hash = "sha256:863a1588f5574e70a821dadefb41e4881ea451a47a3cd1b4df359d4ffefe5ead"}, @@ -772,13 +825,14 @@ full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7 [[package]] name = "typer" -version = "0.14.0" +version = "0.15.2" description = "Typer, build great CLIs. Easy to code. Based on Python type hints." optional = false python-versions = ">=3.7" +groups = ["main"] files = [ - {file = "typer-0.14.0-py3-none-any.whl", hash = "sha256:f476233a25770ab3e7b2eebf7c68f3bc702031681a008b20167573a4b7018f09"}, - {file = "typer-0.14.0.tar.gz", hash = "sha256:af58f737f8d0c0c37b9f955a6d39000b9ff97813afcbeef56af5e37cf743b45a"}, + {file = "typer-0.15.2-py3-none-any.whl", hash = "sha256:46a499c6107d645a9c13f7ee46c5d5096cae6f5fc57dd11eccbbb9ae3e44ddfc"}, + {file = "typer-0.15.2.tar.gz", hash = "sha256:ab2fab47533a813c49fe1f16b1a370fd5819099c00b119e0633df65f22144ba5"}, ] [package.dependencies] @@ -789,24 +843,41 @@ typing-extensions = ">=3.7.4.3" [[package]] name = "typing-extensions" -version = "4.12.2" +version = "4.13.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, - {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, + {file = "typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c"}, + {file = "typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef"}, ] +[[package]] +name = "typing-inspection" +version = "0.4.0" +description = "Runtime typing introspection tools" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "typing_inspection-0.4.0-py3-none-any.whl", hash = "sha256:50e72559fcd2a6367a19f7a7e610e6afcb9fac940c650290eed893d61386832f"}, + {file = "typing_inspection-0.4.0.tar.gz", hash = "sha256:9765c87de36671694a67904bf2c96e395be9c6439bb6c87b5142569dcdd65122"}, +] + +[package.dependencies] +typing-extensions = ">=4.12.0" + [[package]] name = "uvicorn" -version = "0.32.1" +version = "0.34.1" description = "The lightning-fast ASGI server." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "uvicorn-0.32.1-py3-none-any.whl", hash = "sha256:82ad92fd58da0d12af7482ecdb5f2470a04c9c9a53ced65b9bbb4a205377602e"}, - {file = "uvicorn-0.32.1.tar.gz", hash = "sha256:ee9519c246a72b1c084cea8d3b44ed6026e78a4a309cbedae9c37e4cb9fbb175"}, + {file = "uvicorn-0.34.1-py3-none-any.whl", hash = "sha256:984c3a8c7ca18ebaad15995ee7401179212c59521e67bfc390c07fa2b8d2e065"}, + {file = "uvicorn-0.34.1.tar.gz", hash = "sha256:af981725fc4b7ffc5cb3b0e9eda6258a90c4b52cb2a83ce567ae0a7ae1757afc"}, ] [package.dependencies] @@ -817,12 +888,12 @@ httptools = {version = ">=0.6.3", optional = true, markers = "extra == \"standar python-dotenv = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} pyyaml = {version = ">=5.1", optional = true, markers = "extra == \"standard\""} typing-extensions = {version = ">=4.0", markers = "python_version < \"3.11\""} -uvloop = {version = ">=0.14.0,<0.15.0 || >0.15.0,<0.15.1 || >0.15.1", optional = true, markers = "(sys_platform != \"win32\" and sys_platform != \"cygwin\") and platform_python_implementation != \"PyPy\" and extra == \"standard\""} +uvloop = {version = ">=0.14.0,<0.15.0 || >0.15.0,<0.15.1 || >0.15.1", optional = true, markers = "sys_platform != \"win32\" and sys_platform != \"cygwin\" and platform_python_implementation != \"PyPy\" and extra == \"standard\""} watchfiles = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} websockets = {version = ">=10.4", optional = true, markers = "extra == \"standard\""} [package.extras] -standard = ["colorama (>=0.4)", "httptools (>=0.6.3)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"] +standard = ["colorama (>=0.4) ; sys_platform == \"win32\"", "httptools (>=0.6.3)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1) ; sys_platform != \"win32\" and sys_platform != \"cygwin\" and platform_python_implementation != \"PyPy\"", "watchfiles (>=0.13)", "websockets (>=10.4)"] [[package]] name = "uvloop" @@ -830,6 +901,8 @@ version = "0.21.0" description = "Fast implementation of asyncio event loop on top of libuv" optional = false python-versions = ">=3.8.0" +groups = ["main"] +markers = "sys_platform != \"win32\" and sys_platform != \"cygwin\" and platform_python_implementation != \"PyPy\"" files = [ {file = "uvloop-0.21.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ec7e6b09a6fdded42403182ab6b832b71f4edaf7f37a9a0e371a01db5f0cb45f"}, {file = "uvloop-0.21.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:196274f2adb9689a289ad7d65700d37df0c0930fd8e4e743fa4834e850d7719d"}, @@ -877,82 +950,83 @@ test = ["aiohttp (>=3.10.5)", "flake8 (>=5.0,<6.0)", "mypy (>=0.800)", "psutil", [[package]] name = "watchfiles" -version = "1.0.0" +version = "1.0.5" description = "Simple, modern and high performance file watching and code reload in python." optional = false python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "watchfiles-1.0.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:1d19df28f99d6a81730658fbeb3ade8565ff687f95acb59665f11502b441be5f"}, - {file = "watchfiles-1.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:28babb38cf2da8e170b706c4b84aa7e4528a6fa4f3ee55d7a0866456a1662041"}, - {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12ab123135b2f42517f04e720526d41448667ae8249e651385afb5cda31fedc0"}, - {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:13a4f9ee0cd25682679eea5c14fc629e2eaa79aab74d963bc4e21f43b8ea1877"}, - {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e1d9284cc84de7855fcf83472e51d32daf6f6cecd094160192628bc3fee1b78"}, - {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ee5edc939f53466b329bbf2e58333a5461e6c7b50c980fa6117439e2c18b42d"}, - {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5dccfc70480087567720e4e36ec381bba1ed68d7e5f368fe40c93b3b1eba0105"}, - {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c83a6d33a9eda0af6a7470240d1af487807adc269704fe76a4972dd982d16236"}, - {file = "watchfiles-1.0.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:905f69aad276639eff3893759a07d44ea99560e67a1cf46ff389cd62f88872a2"}, - {file = "watchfiles-1.0.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:09551237645d6bff3972592f2aa5424df9290e7a2e15d63c5f47c48cde585935"}, - {file = "watchfiles-1.0.0-cp310-none-win32.whl", hash = "sha256:d2b39aa8edd9e5f56f99a2a2740a251dc58515398e9ed5a4b3e5ff2827060755"}, - {file = "watchfiles-1.0.0-cp310-none-win_amd64.whl", hash = "sha256:2de52b499e1ab037f1a87cb8ebcb04a819bf087b1015a4cf6dcf8af3c2a2613e"}, - {file = "watchfiles-1.0.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:fbd0ab7a9943bbddb87cbc2bf2f09317e74c77dc55b1f5657f81d04666c25269"}, - {file = "watchfiles-1.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:774ef36b16b7198669ce655d4f75b4c3d370e7f1cbdfb997fb10ee98717e2058"}, - {file = "watchfiles-1.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b4fb98100267e6a5ebaff6aaa5d20aea20240584647470be39fe4823012ac96"}, - {file = "watchfiles-1.0.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0fc3bf0effa2d8075b70badfdd7fb839d7aa9cea650d17886982840d71fdeabf"}, - {file = "watchfiles-1.0.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:648e2b6db53eca6ef31245805cd528a16f56fa4cc15aeec97795eaf713c11435"}, - {file = "watchfiles-1.0.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fa13d604fcb9417ae5f2e3de676e66aa97427d888e83662ad205bed35a313176"}, - {file = "watchfiles-1.0.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:936f362e7ff28311b16f0b97ec51e8f2cc451763a3264640c6ed40fb252d1ee4"}, - {file = "watchfiles-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:245fab124b9faf58430da547512d91734858df13f2ddd48ecfa5e493455ffccb"}, - {file = "watchfiles-1.0.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4ff9c7e84e8b644a8f985c42bcc81457240316f900fc72769aaedec9d088055a"}, - {file = "watchfiles-1.0.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9c9a8d8fd97defe935ef8dd53d562e68942ad65067cd1c54d6ed8a088b1d931d"}, - {file = "watchfiles-1.0.0-cp311-none-win32.whl", hash = "sha256:a0abf173975eb9dd17bb14c191ee79999e650997cc644562f91df06060610e62"}, - {file = "watchfiles-1.0.0-cp311-none-win_amd64.whl", hash = "sha256:2a825ba4b32c214e3855b536eb1a1f7b006511d8e64b8215aac06eb680642d84"}, - {file = "watchfiles-1.0.0-cp311-none-win_arm64.whl", hash = "sha256:a5a7a06cfc65e34fd0a765a7623c5ba14707a0870703888e51d3d67107589817"}, - {file = "watchfiles-1.0.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:28fb64b5843d94e2c2483f7b024a1280662a44409bedee8f2f51439767e2d107"}, - {file = "watchfiles-1.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e3750434c83b61abb3163b49c64b04180b85b4dabb29a294513faec57f2ffdb7"}, - {file = "watchfiles-1.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bedf84835069f51c7b026b3ca04e2e747ea8ed0a77c72006172c72d28c9f69fc"}, - {file = "watchfiles-1.0.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:90004553be36427c3d06ec75b804233f8f816374165d5225b93abd94ba6e7234"}, - {file = "watchfiles-1.0.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b46e15c34d4e401e976d6949ad3a74d244600d5c4b88c827a3fdf18691a46359"}, - {file = "watchfiles-1.0.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:487d15927f1b0bd24e7df921913399bb1ab94424c386bea8b267754d698f8f0e"}, - {file = "watchfiles-1.0.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1ff236d7a3f4b0a42f699a22fc374ba526bc55048a70cbb299661158e1bb5e1f"}, - {file = "watchfiles-1.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c01446626574561756067f00b37e6b09c8622b0fc1e9fdbc7cbcea328d4e514"}, - {file = "watchfiles-1.0.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b551c465a59596f3d08170bd7e1c532c7260dd90ed8135778038e13c5d48aa81"}, - {file = "watchfiles-1.0.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e1ed613ee107269f66c2df631ec0fc8efddacface85314d392a4131abe299f00"}, - {file = "watchfiles-1.0.0-cp312-none-win32.whl", hash = "sha256:5f75cd42e7e2254117cf37ff0e68c5b3f36c14543756b2da621408349bd9ca7c"}, - {file = "watchfiles-1.0.0-cp312-none-win_amd64.whl", hash = "sha256:cf517701a4a872417f4e02a136e929537743461f9ec6cdb8184d9a04f4843545"}, - {file = "watchfiles-1.0.0-cp312-none-win_arm64.whl", hash = "sha256:8a2127cd68950787ee36753e6d401c8ea368f73beaeb8e54df5516a06d1ecd82"}, - {file = "watchfiles-1.0.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:95de85c254f7fe8cbdf104731f7f87f7f73ae229493bebca3722583160e6b152"}, - {file = "watchfiles-1.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:533a7cbfe700e09780bb31c06189e39c65f06c7f447326fee707fd02f9a6e945"}, - {file = "watchfiles-1.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a2218e78e2c6c07b1634a550095ac2a429026b2d5cbcd49a594f893f2bb8c936"}, - {file = "watchfiles-1.0.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9122b8fdadc5b341315d255ab51d04893f417df4e6c1743b0aac8bf34e96e025"}, - {file = "watchfiles-1.0.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9272fdbc0e9870dac3b505bce1466d386b4d8d6d2bacf405e603108d50446940"}, - {file = "watchfiles-1.0.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4a3b33c3aefe9067ebd87846806cd5fc0b017ab70d628aaff077ab9abf4d06b3"}, - {file = "watchfiles-1.0.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bc338ce9f8846543d428260fa0f9a716626963148edc937d71055d01d81e1525"}, - {file = "watchfiles-1.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ac778a460ea22d63c7e6fb0bc0f5b16780ff0b128f7f06e57aaec63bd339285"}, - {file = "watchfiles-1.0.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:53ae447f06f8f29f5ab40140f19abdab822387a7c426a369eb42184b021e97eb"}, - {file = "watchfiles-1.0.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:1f73c2147a453315d672c1ad907abe6d40324e34a185b51e15624bc793f93cc6"}, - {file = "watchfiles-1.0.0-cp313-none-win32.whl", hash = "sha256:eba98901a2eab909dbd79681190b9049acc650f6111fde1845484a4450761e98"}, - {file = "watchfiles-1.0.0-cp313-none-win_amd64.whl", hash = "sha256:d562a6114ddafb09c33246c6ace7effa71ca4b6a2324a47f4b09b6445ea78941"}, - {file = "watchfiles-1.0.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:3d94fd83ed54266d789f287472269c0def9120a2022674990bd24ad989ebd7a0"}, - {file = "watchfiles-1.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48051d1c504448b2fcda71c5e6e3610ae45de6a0b8f5a43b961f250be4bdf5a8"}, - {file = "watchfiles-1.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29cf884ad4285d23453c702ed03d689f9c0e865e3c85d20846d800d4787de00f"}, - {file = "watchfiles-1.0.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d3572d4c34c4e9c33d25b3da47d9570d5122f8433b9ac6519dca49c2740d23cd"}, - {file = "watchfiles-1.0.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2c2696611182c85eb0e755b62b456f48debff484b7306b56f05478b843ca8ece"}, - {file = "watchfiles-1.0.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:550109001920a993a4383b57229c717fa73627d2a4e8fcb7ed33c7f1cddb0c85"}, - {file = "watchfiles-1.0.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b555a93c15bd2c71081922be746291d776d47521a00703163e5fbe6d2a402399"}, - {file = "watchfiles-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:947ccba18a38b85c366dafeac8df2f6176342d5992ca240a9d62588b214d731f"}, - {file = "watchfiles-1.0.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ffd98a299b0a74d1b704ef0ed959efb753e656a4e0425c14e46ae4c3cbdd2919"}, - {file = "watchfiles-1.0.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f8c4f3a1210ed099a99e6a710df4ff2f8069411059ffe30fa5f9467ebed1256b"}, - {file = "watchfiles-1.0.0-cp39-none-win32.whl", hash = "sha256:1e176b6b4119b3f369b2b4e003d53a226295ee862c0962e3afd5a1c15680b4e3"}, - {file = "watchfiles-1.0.0-cp39-none-win_amd64.whl", hash = "sha256:2d9c0518fabf4a3f373b0a94bb9e4ea7a1df18dec45e26a4d182aa8918dee855"}, - {file = "watchfiles-1.0.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f159ac795785cde4899e0afa539f4c723fb5dd336ce5605bc909d34edd00b79b"}, - {file = "watchfiles-1.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:c3d258d78341d5d54c0c804a5b7faa66cd30ba50b2756a7161db07ce15363b8d"}, - {file = "watchfiles-1.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bbd0311588c2de7f9ea5cf3922ccacfd0ec0c1922870a2be503cc7df1ca8be7"}, - {file = "watchfiles-1.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9a13ac46b545a7d0d50f7641eefe47d1597e7d1783a5d89e09d080e6dff44b0"}, - {file = "watchfiles-1.0.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b2bca898c1dc073912d3db7fa6926cc08be9575add9e84872de2c99c688bac4e"}, - {file = "watchfiles-1.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:06d828fe2adc4ac8a64b875ca908b892a3603d596d43e18f7948f3fef5fc671c"}, - {file = "watchfiles-1.0.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:074c7618cd6c807dc4eaa0982b4a9d3f8051cd0b72793511848fd64630174b17"}, - {file = "watchfiles-1.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95dc785bc284552d044e561b8f4fe26d01ab5ca40d35852a6572d542adfeb4bc"}, - {file = "watchfiles-1.0.0.tar.gz", hash = "sha256:37566c844c9ce3b5deb964fe1a23378e575e74b114618d211fbda8f59d7b5dab"}, + {file = "watchfiles-1.0.5-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:5c40fe7dd9e5f81e0847b1ea64e1f5dd79dd61afbedb57759df06767ac719b40"}, + {file = "watchfiles-1.0.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8c0db396e6003d99bb2d7232c957b5f0b5634bbd1b24e381a5afcc880f7373fb"}, + {file = "watchfiles-1.0.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b551d4fb482fc57d852b4541f911ba28957d051c8776e79c3b4a51eb5e2a1b11"}, + {file = "watchfiles-1.0.5-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:830aa432ba5c491d52a15b51526c29e4a4b92bf4f92253787f9726fe01519487"}, + {file = "watchfiles-1.0.5-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a16512051a822a416b0d477d5f8c0e67b67c1a20d9acecb0aafa3aa4d6e7d256"}, + {file = "watchfiles-1.0.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bfe0cbc787770e52a96c6fda6726ace75be7f840cb327e1b08d7d54eadc3bc85"}, + {file = "watchfiles-1.0.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d363152c5e16b29d66cbde8fa614f9e313e6f94a8204eaab268db52231fe5358"}, + {file = "watchfiles-1.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ee32c9a9bee4d0b7bd7cbeb53cb185cf0b622ac761efaa2eba84006c3b3a614"}, + {file = "watchfiles-1.0.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:29c7fd632ccaf5517c16a5188e36f6612d6472ccf55382db6c7fe3fcccb7f59f"}, + {file = "watchfiles-1.0.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8e637810586e6fe380c8bc1b3910accd7f1d3a9a7262c8a78d4c8fb3ba6a2b3d"}, + {file = "watchfiles-1.0.5-cp310-cp310-win32.whl", hash = "sha256:cd47d063fbeabd4c6cae1d4bcaa38f0902f8dc5ed168072874ea11d0c7afc1ff"}, + {file = "watchfiles-1.0.5-cp310-cp310-win_amd64.whl", hash = "sha256:86c0df05b47a79d80351cd179893f2f9c1b1cae49d96e8b3290c7f4bd0ca0a92"}, + {file = "watchfiles-1.0.5-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:237f9be419e977a0f8f6b2e7b0475ababe78ff1ab06822df95d914a945eac827"}, + {file = "watchfiles-1.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0da39ff917af8b27a4bdc5a97ac577552a38aac0d260a859c1517ea3dc1a7c4"}, + {file = "watchfiles-1.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cfcb3952350e95603f232a7a15f6c5f86c5375e46f0bd4ae70d43e3e063c13d"}, + {file = "watchfiles-1.0.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:68b2dddba7a4e6151384e252a5632efcaa9bc5d1c4b567f3cb621306b2ca9f63"}, + {file = "watchfiles-1.0.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:95cf944fcfc394c5f9de794ce581914900f82ff1f855326f25ebcf24d5397418"}, + {file = "watchfiles-1.0.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ecf6cd9f83d7c023b1aba15d13f705ca7b7d38675c121f3cc4a6e25bd0857ee9"}, + {file = "watchfiles-1.0.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:852de68acd6212cd6d33edf21e6f9e56e5d98c6add46f48244bd479d97c967c6"}, + {file = "watchfiles-1.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5730f3aa35e646103b53389d5bc77edfbf578ab6dab2e005142b5b80a35ef25"}, + {file = "watchfiles-1.0.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:18b3bd29954bc4abeeb4e9d9cf0b30227f0f206c86657674f544cb032296acd5"}, + {file = "watchfiles-1.0.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ba5552a1b07c8edbf197055bc9d518b8f0d98a1c6a73a293bc0726dce068ed01"}, + {file = "watchfiles-1.0.5-cp311-cp311-win32.whl", hash = "sha256:2f1fefb2e90e89959447bc0420fddd1e76f625784340d64a2f7d5983ef9ad246"}, + {file = "watchfiles-1.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:b6e76ceb1dd18c8e29c73f47d41866972e891fc4cc7ba014f487def72c1cf096"}, + {file = "watchfiles-1.0.5-cp311-cp311-win_arm64.whl", hash = "sha256:266710eb6fddc1f5e51843c70e3bebfb0f5e77cf4f27129278c70554104d19ed"}, + {file = "watchfiles-1.0.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b5eb568c2aa6018e26da9e6c86f3ec3fd958cee7f0311b35c2630fa4217d17f2"}, + {file = "watchfiles-1.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0a04059f4923ce4e856b4b4e5e783a70f49d9663d22a4c3b3298165996d1377f"}, + {file = "watchfiles-1.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e380c89983ce6e6fe2dd1e1921b9952fb4e6da882931abd1824c092ed495dec"}, + {file = "watchfiles-1.0.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fe43139b2c0fdc4a14d4f8d5b5d967f7a2777fd3d38ecf5b1ec669b0d7e43c21"}, + {file = "watchfiles-1.0.5-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee0822ce1b8a14fe5a066f93edd20aada932acfe348bede8aa2149f1a4489512"}, + {file = "watchfiles-1.0.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a0dbcb1c2d8f2ab6e0a81c6699b236932bd264d4cef1ac475858d16c403de74d"}, + {file = "watchfiles-1.0.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a2014a2b18ad3ca53b1f6c23f8cd94a18ce930c1837bd891262c182640eb40a6"}, + {file = "watchfiles-1.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10f6ae86d5cb647bf58f9f655fcf577f713915a5d69057a0371bc257e2553234"}, + {file = "watchfiles-1.0.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1a7bac2bde1d661fb31f4d4e8e539e178774b76db3c2c17c4bb3e960a5de07a2"}, + {file = "watchfiles-1.0.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ab626da2fc1ac277bbf752446470b367f84b50295264d2d313e28dc4405d663"}, + {file = "watchfiles-1.0.5-cp312-cp312-win32.whl", hash = "sha256:9f4571a783914feda92018ef3901dab8caf5b029325b5fe4558c074582815249"}, + {file = "watchfiles-1.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:360a398c3a19672cf93527f7e8d8b60d8275119c5d900f2e184d32483117a705"}, + {file = "watchfiles-1.0.5-cp312-cp312-win_arm64.whl", hash = "sha256:1a2902ede862969077b97523987c38db28abbe09fb19866e711485d9fbf0d417"}, + {file = "watchfiles-1.0.5-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:0b289572c33a0deae62daa57e44a25b99b783e5f7aed81b314232b3d3c81a11d"}, + {file = "watchfiles-1.0.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a056c2f692d65bf1e99c41045e3bdcaea3cb9e6b5a53dcaf60a5f3bd95fc9763"}, + {file = "watchfiles-1.0.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9dca99744991fc9850d18015c4f0438865414e50069670f5f7eee08340d8b40"}, + {file = "watchfiles-1.0.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:894342d61d355446d02cd3988a7326af344143eb33a2fd5d38482a92072d9563"}, + {file = "watchfiles-1.0.5-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ab44e1580924d1ffd7b3938e02716d5ad190441965138b4aa1d1f31ea0877f04"}, + {file = "watchfiles-1.0.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d6f9367b132078b2ceb8d066ff6c93a970a18c3029cea37bfd7b2d3dd2e5db8f"}, + {file = "watchfiles-1.0.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2e55a9b162e06e3f862fb61e399fe9f05d908d019d87bf5b496a04ef18a970a"}, + {file = "watchfiles-1.0.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0125f91f70e0732a9f8ee01e49515c35d38ba48db507a50c5bdcad9503af5827"}, + {file = "watchfiles-1.0.5-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:13bb21f8ba3248386337c9fa51c528868e6c34a707f729ab041c846d52a0c69a"}, + {file = "watchfiles-1.0.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:839ebd0df4a18c5b3c1b890145b5a3f5f64063c2a0d02b13c76d78fe5de34936"}, + {file = "watchfiles-1.0.5-cp313-cp313-win32.whl", hash = "sha256:4a8ec1e4e16e2d5bafc9ba82f7aaecfeec990ca7cd27e84fb6f191804ed2fcfc"}, + {file = "watchfiles-1.0.5-cp313-cp313-win_amd64.whl", hash = "sha256:f436601594f15bf406518af922a89dcaab416568edb6f65c4e5bbbad1ea45c11"}, + {file = "watchfiles-1.0.5-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:2cfb371be97d4db374cba381b9f911dd35bb5f4c58faa7b8b7106c8853e5d225"}, + {file = "watchfiles-1.0.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a3904d88955fda461ea2531fcf6ef73584ca921415d5cfa44457a225f4a42bc1"}, + {file = "watchfiles-1.0.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2b7a21715fb12274a71d335cff6c71fe7f676b293d322722fe708a9ec81d91f5"}, + {file = "watchfiles-1.0.5-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dfd6ae1c385ab481766b3c61c44aca2b3cd775f6f7c0fa93d979ddec853d29d5"}, + {file = "watchfiles-1.0.5-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b659576b950865fdad31fa491d31d37cf78b27113a7671d39f919828587b429b"}, + {file = "watchfiles-1.0.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1909e0a9cd95251b15bff4261de5dd7550885bd172e3536824bf1cf6b121e200"}, + {file = "watchfiles-1.0.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:832ccc221927c860e7286c55c9b6ebcc0265d5e072f49c7f6456c7798d2b39aa"}, + {file = "watchfiles-1.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85fbb6102b3296926d0c62cfc9347f6237fb9400aecd0ba6bbda94cae15f2b3b"}, + {file = "watchfiles-1.0.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:15ac96dd567ad6c71c71f7b2c658cb22b7734901546cd50a475128ab557593ca"}, + {file = "watchfiles-1.0.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4b6227351e11c57ae997d222e13f5b6f1f0700d84b8c52304e8675d33a808382"}, + {file = "watchfiles-1.0.5-cp39-cp39-win32.whl", hash = "sha256:974866e0db748ebf1eccab17862bc0f0303807ed9cda465d1324625b81293a18"}, + {file = "watchfiles-1.0.5-cp39-cp39-win_amd64.whl", hash = "sha256:9848b21ae152fe79c10dd0197304ada8f7b586d3ebc3f27f43c506e5a52a863c"}, + {file = "watchfiles-1.0.5-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f59b870db1f1ae5a9ac28245707d955c8721dd6565e7f411024fa374b5362d1d"}, + {file = "watchfiles-1.0.5-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9475b0093767e1475095f2aeb1d219fb9664081d403d1dff81342df8cd707034"}, + {file = "watchfiles-1.0.5-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc533aa50664ebd6c628b2f30591956519462f5d27f951ed03d6c82b2dfd9965"}, + {file = "watchfiles-1.0.5-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fed1cd825158dcaae36acce7b2db33dcbfd12b30c34317a88b8ed80f0541cc57"}, + {file = "watchfiles-1.0.5-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:554389562c29c2c182e3908b149095051f81d28c2fec79ad6c8997d7d63e0009"}, + {file = "watchfiles-1.0.5-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a74add8d7727e6404d5dc4dcd7fac65d4d82f95928bbee0cf5414c900e86773e"}, + {file = "watchfiles-1.0.5-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb1489f25b051a89fae574505cc26360c8e95e227a9500182a7fe0afcc500ce0"}, + {file = "watchfiles-1.0.5-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0901429650652d3f0da90bad42bdafc1f9143ff3605633c455c999a2d786cac"}, + {file = "watchfiles-1.0.5.tar.gz", hash = "sha256:b7529b5dcc114679d43827d8c35a07c493ad6f083633d573d81c660abc5979e9"}, ] [package.dependencies] @@ -960,83 +1034,84 @@ anyio = ">=3.0.0" [[package]] name = "websockets" -version = "14.1" +version = "15.0.1" description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "websockets-14.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a0adf84bc2e7c86e8a202537b4fd50e6f7f0e4a6b6bf64d7ccb96c4cd3330b29"}, - {file = "websockets-14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90b5d9dfbb6d07a84ed3e696012610b6da074d97453bd01e0e30744b472c8179"}, - {file = "websockets-14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2177ee3901075167f01c5e335a6685e71b162a54a89a56001f1c3e9e3d2ad250"}, - {file = "websockets-14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f14a96a0034a27f9d47fd9788913924c89612225878f8078bb9d55f859272b0"}, - {file = "websockets-14.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f874ba705deea77bcf64a9da42c1f5fc2466d8f14daf410bc7d4ceae0a9fcb0"}, - {file = "websockets-14.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9607b9a442392e690a57909c362811184ea429585a71061cd5d3c2b98065c199"}, - {file = "websockets-14.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:bea45f19b7ca000380fbd4e02552be86343080120d074b87f25593ce1700ad58"}, - {file = "websockets-14.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:219c8187b3ceeadbf2afcf0f25a4918d02da7b944d703b97d12fb01510869078"}, - {file = "websockets-14.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ad2ab2547761d79926effe63de21479dfaf29834c50f98c4bf5b5480b5838434"}, - {file = "websockets-14.1-cp310-cp310-win32.whl", hash = "sha256:1288369a6a84e81b90da5dbed48610cd7e5d60af62df9851ed1d1d23a9069f10"}, - {file = "websockets-14.1-cp310-cp310-win_amd64.whl", hash = "sha256:e0744623852f1497d825a49a99bfbec9bea4f3f946df6eb9d8a2f0c37a2fec2e"}, - {file = "websockets-14.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:449d77d636f8d9c17952628cc7e3b8faf6e92a17ec581ec0c0256300717e1512"}, - {file = "websockets-14.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a35f704be14768cea9790d921c2c1cc4fc52700410b1c10948511039be824aac"}, - {file = "websockets-14.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b1f3628a0510bd58968c0f60447e7a692933589b791a6b572fcef374053ca280"}, - {file = "websockets-14.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c3deac3748ec73ef24fc7be0b68220d14d47d6647d2f85b2771cb35ea847aa1"}, - {file = "websockets-14.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7048eb4415d46368ef29d32133134c513f507fff7d953c18c91104738a68c3b3"}, - {file = "websockets-14.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6cf0ad281c979306a6a34242b371e90e891bce504509fb6bb5246bbbf31e7b6"}, - {file = "websockets-14.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cc1fc87428c1d18b643479caa7b15db7d544652e5bf610513d4a3478dbe823d0"}, - {file = "websockets-14.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f95ba34d71e2fa0c5d225bde3b3bdb152e957150100e75c86bc7f3964c450d89"}, - {file = "websockets-14.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9481a6de29105d73cf4515f2bef8eb71e17ac184c19d0b9918a3701c6c9c4f23"}, - {file = "websockets-14.1-cp311-cp311-win32.whl", hash = "sha256:368a05465f49c5949e27afd6fbe0a77ce53082185bbb2ac096a3a8afaf4de52e"}, - {file = "websockets-14.1-cp311-cp311-win_amd64.whl", hash = "sha256:6d24fc337fc055c9e83414c94e1ee0dee902a486d19d2a7f0929e49d7d604b09"}, - {file = "websockets-14.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ed907449fe5e021933e46a3e65d651f641975a768d0649fee59f10c2985529ed"}, - {file = "websockets-14.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:87e31011b5c14a33b29f17eb48932e63e1dcd3fa31d72209848652310d3d1f0d"}, - {file = "websockets-14.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bc6ccf7d54c02ae47a48ddf9414c54d48af9c01076a2e1023e3b486b6e72c707"}, - {file = "websockets-14.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9777564c0a72a1d457f0848977a1cbe15cfa75fa2f67ce267441e465717dcf1a"}, - {file = "websockets-14.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a655bde548ca98f55b43711b0ceefd2a88a71af6350b0c168aa77562104f3f45"}, - {file = "websockets-14.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3dfff83ca578cada2d19e665e9c8368e1598d4e787422a460ec70e531dbdd58"}, - {file = "websockets-14.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6a6c9bcf7cdc0fd41cc7b7944447982e8acfd9f0d560ea6d6845428ed0562058"}, - {file = "websockets-14.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4b6caec8576e760f2c7dd878ba817653144d5f369200b6ddf9771d64385b84d4"}, - {file = "websockets-14.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:eb6d38971c800ff02e4a6afd791bbe3b923a9a57ca9aeab7314c21c84bf9ff05"}, - {file = "websockets-14.1-cp312-cp312-win32.whl", hash = "sha256:1d045cbe1358d76b24d5e20e7b1878efe578d9897a25c24e6006eef788c0fdf0"}, - {file = "websockets-14.1-cp312-cp312-win_amd64.whl", hash = "sha256:90f4c7a069c733d95c308380aae314f2cb45bd8a904fb03eb36d1a4983a4993f"}, - {file = "websockets-14.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:3630b670d5057cd9e08b9c4dab6493670e8e762a24c2c94ef312783870736ab9"}, - {file = "websockets-14.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:36ebd71db3b89e1f7b1a5deaa341a654852c3518ea7a8ddfdf69cc66acc2db1b"}, - {file = "websockets-14.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5b918d288958dc3fa1c5a0b9aa3256cb2b2b84c54407f4813c45d52267600cd3"}, - {file = "websockets-14.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00fe5da3f037041da1ee0cf8e308374e236883f9842c7c465aa65098b1c9af59"}, - {file = "websockets-14.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8149a0f5a72ca36720981418eeffeb5c2729ea55fa179091c81a0910a114a5d2"}, - {file = "websockets-14.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77569d19a13015e840b81550922056acabc25e3f52782625bc6843cfa034e1da"}, - {file = "websockets-14.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cf5201a04550136ef870aa60ad3d29d2a59e452a7f96b94193bee6d73b8ad9a9"}, - {file = "websockets-14.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:88cf9163ef674b5be5736a584c999e98daf3aabac6e536e43286eb74c126b9c7"}, - {file = "websockets-14.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:836bef7ae338a072e9d1863502026f01b14027250a4545672673057997d5c05a"}, - {file = "websockets-14.1-cp313-cp313-win32.whl", hash = "sha256:0d4290d559d68288da9f444089fd82490c8d2744309113fc26e2da6e48b65da6"}, - {file = "websockets-14.1-cp313-cp313-win_amd64.whl", hash = "sha256:8621a07991add373c3c5c2cf89e1d277e49dc82ed72c75e3afc74bd0acc446f0"}, - {file = "websockets-14.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:01bb2d4f0a6d04538d3c5dfd27c0643269656c28045a53439cbf1c004f90897a"}, - {file = "websockets-14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:414ffe86f4d6f434a8c3b7913655a1a5383b617f9bf38720e7c0799fac3ab1c6"}, - {file = "websockets-14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8fda642151d5affdee8a430bd85496f2e2517be3a2b9d2484d633d5712b15c56"}, - {file = "websockets-14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd7c11968bc3860d5c78577f0dbc535257ccec41750675d58d8dc66aa47fe52c"}, - {file = "websockets-14.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a032855dc7db987dff813583d04f4950d14326665d7e714d584560b140ae6b8b"}, - {file = "websockets-14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b7e7ea2f782408c32d86b87a0d2c1fd8871b0399dd762364c731d86c86069a78"}, - {file = "websockets-14.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:39450e6215f7d9f6f7bc2a6da21d79374729f5d052333da4d5825af8a97e6735"}, - {file = "websockets-14.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ceada5be22fa5a5a4cdeec74e761c2ee7db287208f54c718f2df4b7e200b8d4a"}, - {file = "websockets-14.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:3fc753451d471cff90b8f467a1fc0ae64031cf2d81b7b34e1811b7e2691bc4bc"}, - {file = "websockets-14.1-cp39-cp39-win32.whl", hash = "sha256:14839f54786987ccd9d03ed7f334baec0f02272e7ec4f6e9d427ff584aeea8b4"}, - {file = "websockets-14.1-cp39-cp39-win_amd64.whl", hash = "sha256:d9fd19ecc3a4d5ae82ddbfb30962cf6d874ff943e56e0c81f5169be2fda62979"}, - {file = "websockets-14.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e5dc25a9dbd1a7f61eca4b7cb04e74ae4b963d658f9e4f9aad9cd00b688692c8"}, - {file = "websockets-14.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:04a97aca96ca2acedf0d1f332c861c5a4486fdcba7bcef35873820f940c4231e"}, - {file = "websockets-14.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df174ece723b228d3e8734a6f2a6febbd413ddec39b3dc592f5a4aa0aff28098"}, - {file = "websockets-14.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:034feb9f4286476f273b9a245fb15f02c34d9586a5bc936aff108c3ba1b21beb"}, - {file = "websockets-14.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:660c308dabd2b380807ab64b62985eaccf923a78ebc572bd485375b9ca2b7dc7"}, - {file = "websockets-14.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5a42d3ecbb2db5080fc578314439b1d79eef71d323dc661aa616fb492436af5d"}, - {file = "websockets-14.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:ddaa4a390af911da6f680be8be4ff5aaf31c4c834c1a9147bc21cbcbca2d4370"}, - {file = "websockets-14.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a4c805c6034206143fbabd2d259ec5e757f8b29d0a2f0bf3d2fe5d1f60147a4a"}, - {file = "websockets-14.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:205f672a6c2c671a86d33f6d47c9b35781a998728d2c7c2a3e1cf3333fcb62b7"}, - {file = "websockets-14.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ef440054124728cc49b01c33469de06755e5a7a4e83ef61934ad95fc327fbb0"}, - {file = "websockets-14.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7591d6f440af7f73c4bd9404f3772bfee064e639d2b6cc8c94076e71b2471c1"}, - {file = "websockets-14.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:25225cc79cfebc95ba1d24cd3ab86aaa35bcd315d12fa4358939bd55e9bd74a5"}, - {file = "websockets-14.1-py3-none-any.whl", hash = "sha256:4d4fc827a20abe6d544a119896f6b78ee13fe81cbfef416f3f2ddf09a03f0e2e"}, - {file = "websockets-14.1.tar.gz", hash = "sha256:398b10c77d471c0aab20a845e7a60076b6390bfdaac7a6d2edb0d2c59d75e8d8"}, + {file = "websockets-15.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d63efaa0cd96cf0c5fe4d581521d9fa87744540d4bc999ae6e08595a1014b45b"}, + {file = "websockets-15.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ac60e3b188ec7574cb761b08d50fcedf9d77f1530352db4eef1707fe9dee7205"}, + {file = "websockets-15.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5756779642579d902eed757b21b0164cd6fe338506a8083eb58af5c372e39d9a"}, + {file = "websockets-15.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fdfe3e2a29e4db3659dbd5bbf04560cea53dd9610273917799f1cde46aa725e"}, + {file = "websockets-15.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c2529b320eb9e35af0fa3016c187dffb84a3ecc572bcee7c3ce302bfeba52bf"}, + {file = "websockets-15.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac1e5c9054fe23226fb11e05a6e630837f074174c4c2f0fe442996112a6de4fb"}, + {file = "websockets-15.0.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5df592cd503496351d6dc14f7cdad49f268d8e618f80dce0cd5a36b93c3fc08d"}, + {file = "websockets-15.0.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0a34631031a8f05657e8e90903e656959234f3a04552259458aac0b0f9ae6fd9"}, + {file = "websockets-15.0.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3d00075aa65772e7ce9e990cab3ff1de702aa09be3940d1dc88d5abf1ab8a09c"}, + {file = "websockets-15.0.1-cp310-cp310-win32.whl", hash = "sha256:1234d4ef35db82f5446dca8e35a7da7964d02c127b095e172e54397fb6a6c256"}, + {file = "websockets-15.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:39c1fec2c11dc8d89bba6b2bf1556af381611a173ac2b511cf7231622058af41"}, + {file = "websockets-15.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:823c248b690b2fd9303ba00c4f66cd5e2d8c3ba4aa968b2779be9532a4dad431"}, + {file = "websockets-15.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678999709e68425ae2593acf2e3ebcbcf2e69885a5ee78f9eb80e6e371f1bf57"}, + {file = "websockets-15.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d50fd1ee42388dcfb2b3676132c78116490976f1300da28eb629272d5d93e905"}, + {file = "websockets-15.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d99e5546bf73dbad5bf3547174cd6cb8ba7273062a23808ffea025ecb1cf8562"}, + {file = "websockets-15.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66dd88c918e3287efc22409d426c8f729688d89a0c587c88971a0faa2c2f3792"}, + {file = "websockets-15.0.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8dd8327c795b3e3f219760fa603dcae1dcc148172290a8ab15158cf85a953413"}, + {file = "websockets-15.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8fdc51055e6ff4adeb88d58a11042ec9a5eae317a0a53d12c062c8a8865909e8"}, + {file = "websockets-15.0.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:693f0192126df6c2327cce3baa7c06f2a117575e32ab2308f7f8216c29d9e2e3"}, + {file = "websockets-15.0.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:54479983bd5fb469c38f2f5c7e3a24f9a4e70594cd68cd1fa6b9340dadaff7cf"}, + {file = "websockets-15.0.1-cp311-cp311-win32.whl", hash = "sha256:16b6c1b3e57799b9d38427dda63edcbe4926352c47cf88588c0be4ace18dac85"}, + {file = "websockets-15.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:27ccee0071a0e75d22cb35849b1db43f2ecd3e161041ac1ee9d2352ddf72f065"}, + {file = "websockets-15.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3e90baa811a5d73f3ca0bcbf32064d663ed81318ab225ee4f427ad4e26e5aff3"}, + {file = "websockets-15.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:592f1a9fe869c778694f0aa806ba0374e97648ab57936f092fd9d87f8bc03665"}, + {file = "websockets-15.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0701bc3cfcb9164d04a14b149fd74be7347a530ad3bbf15ab2c678a2cd3dd9a2"}, + {file = "websockets-15.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8b56bdcdb4505c8078cb6c7157d9811a85790f2f2b3632c7d1462ab5783d215"}, + {file = "websockets-15.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0af68c55afbd5f07986df82831c7bff04846928ea8d1fd7f30052638788bc9b5"}, + {file = "websockets-15.0.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64dee438fed052b52e4f98f76c5790513235efaa1ef7f3f2192c392cd7c91b65"}, + {file = "websockets-15.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d5f6b181bb38171a8ad1d6aa58a67a6aa9d4b38d0f8c5f496b9e42561dfc62fe"}, + {file = "websockets-15.0.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5d54b09eba2bada6011aea5375542a157637b91029687eb4fdb2dab11059c1b4"}, + {file = "websockets-15.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3be571a8b5afed347da347bfcf27ba12b069d9d7f42cb8c7028b5e98bbb12597"}, + {file = "websockets-15.0.1-cp312-cp312-win32.whl", hash = "sha256:c338ffa0520bdb12fbc527265235639fb76e7bc7faafbb93f6ba80d9c06578a9"}, + {file = "websockets-15.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:fcd5cf9e305d7b8338754470cf69cf81f420459dbae8a3b40cee57417f4614a7"}, + {file = "websockets-15.0.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ee443ef070bb3b6ed74514f5efaa37a252af57c90eb33b956d35c8e9c10a1931"}, + {file = "websockets-15.0.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5a939de6b7b4e18ca683218320fc67ea886038265fd1ed30173f5ce3f8e85675"}, + {file = "websockets-15.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:746ee8dba912cd6fc889a8147168991d50ed70447bf18bcda7039f7d2e3d9151"}, + {file = "websockets-15.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:595b6c3969023ecf9041b2936ac3827e4623bfa3ccf007575f04c5a6aa318c22"}, + {file = "websockets-15.0.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c714d2fc58b5ca3e285461a4cc0c9a66bd0e24c5da9911e30158286c9b5be7f"}, + {file = "websockets-15.0.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f3c1e2ab208db911594ae5b4f79addeb3501604a165019dd221c0bdcabe4db8"}, + {file = "websockets-15.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:229cf1d3ca6c1804400b0a9790dc66528e08a6a1feec0d5040e8b9eb14422375"}, + {file = "websockets-15.0.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:756c56e867a90fb00177d530dca4b097dd753cde348448a1012ed6c5131f8b7d"}, + {file = "websockets-15.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:558d023b3df0bffe50a04e710bc87742de35060580a293c2a984299ed83bc4e4"}, + {file = "websockets-15.0.1-cp313-cp313-win32.whl", hash = "sha256:ba9e56e8ceeeedb2e080147ba85ffcd5cd0711b89576b83784d8605a7df455fa"}, + {file = "websockets-15.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:e09473f095a819042ecb2ab9465aee615bd9c2028e4ef7d933600a8401c79561"}, + {file = "websockets-15.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5f4c04ead5aed67c8a1a20491d54cdfba5884507a48dd798ecaf13c74c4489f5"}, + {file = "websockets-15.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:abdc0c6c8c648b4805c5eacd131910d2a7f6455dfd3becab248ef108e89ab16a"}, + {file = "websockets-15.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a625e06551975f4b7ea7102bc43895b90742746797e2e14b70ed61c43a90f09b"}, + {file = "websockets-15.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d591f8de75824cbb7acad4e05d2d710484f15f29d4a915092675ad3456f11770"}, + {file = "websockets-15.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:47819cea040f31d670cc8d324bb6435c6f133b8c7a19ec3d61634e62f8d8f9eb"}, + {file = "websockets-15.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac017dd64572e5c3bd01939121e4d16cf30e5d7e110a119399cf3133b63ad054"}, + {file = "websockets-15.0.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:4a9fac8e469d04ce6c25bb2610dc535235bd4aa14996b4e6dbebf5e007eba5ee"}, + {file = "websockets-15.0.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363c6f671b761efcb30608d24925a382497c12c506b51661883c3e22337265ed"}, + {file = "websockets-15.0.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2034693ad3097d5355bfdacfffcbd3ef5694f9718ab7f29c29689a9eae841880"}, + {file = "websockets-15.0.1-cp39-cp39-win32.whl", hash = "sha256:3b1ac0d3e594bf121308112697cf4b32be538fb1444468fb0a6ae4feebc83411"}, + {file = "websockets-15.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:b7643a03db5c95c799b89b31c036d5f27eeb4d259c798e878d6937d71832b1e4"}, + {file = "websockets-15.0.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0c9e74d766f2818bb95f84c25be4dea09841ac0f734d1966f415e4edfc4ef1c3"}, + {file = "websockets-15.0.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1009ee0c7739c08a0cd59de430d6de452a55e42d6b522de7aa15e6f67db0b8e1"}, + {file = "websockets-15.0.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76d1f20b1c7a2fa82367e04982e708723ba0e7b8d43aa643d3dcd404d74f1475"}, + {file = "websockets-15.0.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f29d80eb9a9263b8d109135351caf568cc3f80b9928bccde535c235de55c22d9"}, + {file = "websockets-15.0.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b359ed09954d7c18bbc1680f380c7301f92c60bf924171629c5db97febb12f04"}, + {file = "websockets-15.0.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:cad21560da69f4ce7658ca2cb83138fb4cf695a2ba3e475e0559e05991aa8122"}, + {file = "websockets-15.0.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7f493881579c90fc262d9cdbaa05a6b54b3811c2f300766748db79f098db9940"}, + {file = "websockets-15.0.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:47b099e1f4fbc95b701b6e85768e1fcdaf1630f3cbe4765fa216596f12310e2e"}, + {file = "websockets-15.0.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67f2b6de947f8c757db2db9c71527933ad0019737ec374a8a6be9a956786aaf9"}, + {file = "websockets-15.0.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d08eb4c2b7d6c41da6ca0600c077e93f5adcfd979cd777d747e9ee624556da4b"}, + {file = "websockets-15.0.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b826973a4a2ae47ba357e4e82fa44a463b8f168e1ca775ac64521442b19e87f"}, + {file = "websockets-15.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:21c1fa28a6a7e3cbdc171c694398b6df4744613ce9b36b1a498e816787e28123"}, + {file = "websockets-15.0.1-py3-none-any.whl", hash = "sha256:f7a866fbc1e97b5c617ee4116daaa09b722101d4a3c170c787450ba409f9736f"}, + {file = "websockets-15.0.1.tar.gz", hash = "sha256:82544de02076bafba038ce055ee6412d68da13ab47f0c60cab827346de828dee"}, ] [metadata] -lock-version = "2.0" +lock-version = "2.1" python-versions = "^3.10" -content-hash = "7fe885adbb3d863c903fae587bbcd6e3aa475564f46a33ebd4401d373736941c" +content-hash = "1b47a802c50a425136fd1066802af1d74079f8d0967a24345ff11a566c19a6dd" diff --git a/examples/fastapi_ponyorm/pyproject.toml b/examples/fastapi_ponyorm/pyproject.toml index efbb156..5b64430 100644 --- a/examples/fastapi_ponyorm/pyproject.toml +++ b/examples/fastapi_ponyorm/pyproject.toml @@ -1,5 +1,5 @@ [tool.poetry] -name = "fastadmin-fastapi-ponyeorm" +name = "fastadmin-fastapi-ponyorm" version = "0.1.0" description = "FastAdmin Example (FastAPI + Pony ORM)" authors = ["Dmitrii "] @@ -10,8 +10,8 @@ package-mode = false [tool.poetry.dependencies] python = "^3.10" -fastapi = {"version" = "^0.112.0", extras = ["standard"]} -fastadmin = {"version" = "^0.2.15", extras = ["fastapi", "pony"]} +fastapi = {"version" = "^0.112.4", extras = ["standard"]} +fastadmin = {"version" = "^0.2.19", extras = ["fastapi", "pony"]} [build-system] requires = ["poetry-core>=1.0.0"] diff --git a/examples/fastapi_sqlalchemy/poetry.lock b/examples/fastapi_sqlalchemy/poetry.lock index 7cb4807..96d8a8c 100644 --- a/examples/fastapi_sqlalchemy/poetry.lock +++ b/examples/fastapi_sqlalchemy/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.1.2 and should not be changed by hand. [[package]] name = "aiosqlite" @@ -6,6 +6,7 @@ version = "0.20.0" description = "asyncio bridge to the standard sqlite3 module" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "aiosqlite-0.20.0-py3-none-any.whl", hash = "sha256:36a1deaca0cac40ebe32aac9977a6e2bbc7f5189f23f4a54d5908986729e5bd6"}, {file = "aiosqlite-0.20.0.tar.gz", hash = "sha256:6d35c8c256637f4672f843c31021464090805bf925385ac39473fb16eaaca3d7"}, @@ -24,6 +25,7 @@ version = "0.7.0" description = "Reusable constraint types to use with typing.Annotated" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, @@ -31,24 +33,25 @@ files = [ [[package]] name = "anyio" -version = "4.6.2.post1" +version = "4.9.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "anyio-4.6.2.post1-py3-none-any.whl", hash = "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d"}, - {file = "anyio-4.6.2.post1.tar.gz", hash = "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c"}, + {file = "anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c"}, + {file = "anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028"}, ] [package.dependencies] exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} idna = ">=2.8" sniffio = ">=1.1" -typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} +typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""} [package.extras] -doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"] +doc = ["Sphinx (>=8.2,<9.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"] +test = ["anyio[trio]", "blockbuster (>=1.5.23)", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1) ; python_version >= \"3.10\"", "uvloop (>=0.21) ; platform_python_implementation == \"CPython\" and platform_system != \"Windows\" and python_version < \"3.14\""] trio = ["trio (>=0.26.1)"] [[package]] @@ -57,6 +60,7 @@ version = "3.8.1" description = "ASGI specs, helper code, and adapters" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "asgiref-3.8.1-py3-none-any.whl", hash = "sha256:3e1e3ecc849832fe52ccf2cb6686b7a55f82bb1d6aee72a58826471390335e47"}, {file = "asgiref-3.8.1.tar.gz", hash = "sha256:c343bd80a0bec947a9860adb4c432ffa7db769836c64238fc34bdc3fec84d590"}, @@ -70,24 +74,26 @@ tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"] [[package]] name = "certifi" -version = "2024.8.30" +version = "2025.1.31" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" +groups = ["main"] files = [ - {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, - {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, + {file = "certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe"}, + {file = "certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651"}, ] [[package]] name = "click" -version = "8.1.7" +version = "8.1.8" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" +groups = ["main"] 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.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, + {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"}, ] [package.dependencies] @@ -99,6 +105,8 @@ version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["main"] +markers = "platform_system == \"Windows\" or sys_platform == \"win32\"" files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, @@ -110,6 +118,7 @@ version = "2.7.0" description = "DNS toolkit" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ {file = "dnspython-2.7.0-py3-none-any.whl", hash = "sha256:b4c34b7d10b51bcc3a5071e7b8dee77939f1e878477eeecc965e9835f63c6c86"}, {file = "dnspython-2.7.0.tar.gz", hash = "sha256:ce9c432eda0dc91cf618a5cedf1a4e142651196bbcd2c80e89ed5a907e5cfaf1"}, @@ -130,6 +139,7 @@ version = "2.2.0" description = "A robust email address syntax and deliverability validation library." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "email_validator-2.2.0-py3-none-any.whl", hash = "sha256:561977c2d73ce3611850a06fa56b414621e0c8faa9d66f2611407d87465da631"}, {file = "email_validator-2.2.0.tar.gz", hash = "sha256:cb690f344c617a714f22e66ae771445a1ceb46821152df8e165c5f9a364582b7"}, @@ -145,6 +155,8 @@ version = "1.2.2" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" +groups = ["main"] +markers = "python_version == \"3.10\"" files = [ {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, @@ -155,13 +167,14 @@ test = ["pytest (>=6)"] [[package]] name = "fastadmin" -version = "0.2.15" +version = "0.2.19" description = "FastAdmin is an easy-to-use Admin Dashboard App for FastAPI/Flask/Django inspired by Django Admin." optional = false python-versions = "<4.0,>=3.10" +groups = ["main"] files = [ - {file = "fastadmin-0.2.15-py3-none-any.whl", hash = "sha256:4a4ea7f0bc981b3c92422c84d0af9c435c936faac0d37d415a7373cd738cbcf3"}, - {file = "fastadmin-0.2.15.tar.gz", hash = "sha256:92e32a34ae9ce3268657c0383ee1f6489009055c9e67e780d269ebb8199a00de"}, + {file = "fastadmin-0.2.19-py3-none-any.whl", hash = "sha256:49192d74aa94068625b726f5843bfb49697303ec2255f526ce896baf074c7f1e"}, + {file = "fastadmin-0.2.19.tar.gz", hash = "sha256:20a3122967a2a454baef1db760af467e20802293f5b669eeef0a8c5fcb3a03c3"}, ] [package.dependencies] @@ -184,6 +197,7 @@ version = "0.112.4" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "fastapi-0.112.4-py3-none-any.whl", hash = "sha256:6d4f9c3301825d4620665cace8e2bc34e303f61c05a5382d1d61a048ea7f2f37"}, {file = "fastapi-0.112.4.tar.gz", hash = "sha256:b1f72e1f72afe7902ccd639ba320abb5d57a309804f45c10ab0ce3693cadeb33"}, @@ -206,16 +220,18 @@ standard = ["email-validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.5)", "htt [[package]] name = "fastapi-cli" -version = "0.0.5" +version = "0.0.7" description = "Run and manage FastAPI apps from the command line with FastAPI CLI. 🚀" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "fastapi_cli-0.0.5-py3-none-any.whl", hash = "sha256:e94d847524648c748a5350673546bbf9bcaeb086b33c24f2e82e021436866a46"}, - {file = "fastapi_cli-0.0.5.tar.gz", hash = "sha256:d30e1239c6f46fcb95e606f02cdda59a1e2fa778a54b64686b3ff27f6211ff9f"}, + {file = "fastapi_cli-0.0.7-py3-none-any.whl", hash = "sha256:d549368ff584b2804336c61f192d86ddea080c11255f375959627911944804f4"}, + {file = "fastapi_cli-0.0.7.tar.gz", hash = "sha256:02b3b65956f526412515907a0793c9094abd4bfb5457b389f645b0ea6ba3605e"}, ] [package.dependencies] +rich-toolkit = ">=0.11.1" typer = ">=0.12.3" uvicorn = {version = ">=0.15.0", extras = ["standard"]} @@ -228,6 +244,8 @@ version = "3.1.1" description = "Lightweight in-process concurrent programming" optional = false python-versions = ">=3.7" +groups = ["main"] +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\")" files = [ {file = "greenlet-3.1.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:0bbae94a29c9e5c7e4a2b7f0aae5c17e8e90acbfd3bf6270eeba60c39fce3563"}, {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fde093fb93f35ca72a556cf72c92ea3ebfda3d79fc35bb19fbe685853869a83"}, @@ -314,6 +332,7 @@ version = "0.14.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, @@ -321,13 +340,14 @@ files = [ [[package]] name = "httpcore" -version = "1.0.7" +version = "1.0.8" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd"}, - {file = "httpcore-1.0.7.tar.gz", hash = "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c"}, + {file = "httpcore-1.0.8-py3-none-any.whl", hash = "sha256:5254cf149bcb5f75e9d1b2b9f729ea4a4b883d1ad7379fc632b727cec23674be"}, + {file = "httpcore-1.0.8.tar.gz", hash = "sha256:86e94505ed24ea06514883fd44d2bc02d90e77e7979c8eb71b90f41d364a1bad"}, ] [package.dependencies] @@ -346,6 +366,7 @@ version = "0.6.4" description = "A collection of framework independent HTTP protocol utils." optional = false python-versions = ">=3.8.0" +groups = ["main"] files = [ {file = "httptools-0.6.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3c73ce323711a6ffb0d247dcd5a550b8babf0f757e86a52558fe5b86d6fefcc0"}, {file = "httptools-0.6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:345c288418f0944a6fe67be8e6afa9262b18c7626c3ef3c28adc5eabc06a68da"}, @@ -397,13 +418,14 @@ test = ["Cython (>=0.29.24)"] [[package]] name = "httpx" -version = "0.28.0" +version = "0.28.1" description = "The next generation HTTP client." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "httpx-0.28.0-py3-none-any.whl", hash = "sha256:dc0b419a0cfeb6e8b34e85167c0da2671206f5095f1baa9663d23bcfd6b535fc"}, - {file = "httpx-0.28.0.tar.gz", hash = "sha256:0858d3bab51ba7e386637f22a61d8ccddaeec5f3fe4209da3a6168dbb91573e0"}, + {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"}, + {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"}, ] [package.dependencies] @@ -413,7 +435,7 @@ httpcore = "==1.*" idna = "*" [package.extras] -brotli = ["brotli", "brotlicffi"] +brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi ; platform_python_implementation != \"CPython\""] cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] @@ -425,6 +447,7 @@ version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" +groups = ["main"] files = [ {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, @@ -435,13 +458,14 @@ all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2 [[package]] name = "jinja2" -version = "3.1.4" +version = "3.1.6" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" +groups = ["main"] files = [ - {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, - {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, + {file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"}, + {file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"}, ] [package.dependencies] @@ -456,6 +480,7 @@ version = "3.0.0" description = "Python port of markdown-it. Markdown parsing, done right!" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, @@ -480,6 +505,7 @@ version = "3.0.2" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.9" +groups = ["main"] 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"}, @@ -550,6 +576,7 @@ version = "0.1.2" description = "Markdown URL utilities" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, @@ -557,131 +584,133 @@ files = [ [[package]] name = "pydantic" -version = "2.10.2" +version = "2.11.3" description = "Data validation using Python type hints" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "pydantic-2.10.2-py3-none-any.whl", hash = "sha256:cfb96e45951117c3024e6b67b25cdc33a3cb7b2fa62e239f7af1378358a1d99e"}, - {file = "pydantic-2.10.2.tar.gz", hash = "sha256:2bc2d7f17232e0841cbba4641e65ba1eb6fafb3a08de3a091ff3ce14a197c4fa"}, + {file = "pydantic-2.11.3-py3-none-any.whl", hash = "sha256:a082753436a07f9ba1289c6ffa01cd93db3548776088aa917cc43b63f68fa60f"}, + {file = "pydantic-2.11.3.tar.gz", hash = "sha256:7471657138c16adad9322fe3070c0116dd6c3ad8d649300e3cbdfe91f4db4ec3"}, ] [package.dependencies] annotated-types = ">=0.6.0" -pydantic-core = "2.27.1" +pydantic-core = "2.33.1" typing-extensions = ">=4.12.2" +typing-inspection = ">=0.4.0" [package.extras] email = ["email-validator (>=2.0.0)"] -timezone = ["tzdata"] +timezone = ["tzdata ; python_version >= \"3.9\" and platform_system == \"Windows\""] [[package]] name = "pydantic-core" -version = "2.27.1" +version = "2.33.1" description = "Core functionality for Pydantic validation and serialization" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "pydantic_core-2.27.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:71a5e35c75c021aaf400ac048dacc855f000bdfed91614b4a726f7432f1f3d6a"}, - {file = "pydantic_core-2.27.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f82d068a2d6ecfc6e054726080af69a6764a10015467d7d7b9f66d6ed5afa23b"}, - {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:121ceb0e822f79163dd4699e4c54f5ad38b157084d97b34de8b232bcaad70278"}, - {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4603137322c18eaf2e06a4495f426aa8d8388940f3c457e7548145011bb68e05"}, - {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a33cd6ad9017bbeaa9ed78a2e0752c5e250eafb9534f308e7a5f7849b0b1bfb4"}, - {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15cc53a3179ba0fcefe1e3ae50beb2784dede4003ad2dfd24f81bba4b23a454f"}, - {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45d9c5eb9273aa50999ad6adc6be5e0ecea7e09dbd0d31bd0c65a55a2592ca08"}, - {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8bf7b66ce12a2ac52d16f776b31d16d91033150266eb796967a7e4621707e4f6"}, - {file = "pydantic_core-2.27.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:655d7dd86f26cb15ce8a431036f66ce0318648f8853d709b4167786ec2fa4807"}, - {file = "pydantic_core-2.27.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:5556470f1a2157031e676f776c2bc20acd34c1990ca5f7e56f1ebf938b9ab57c"}, - {file = "pydantic_core-2.27.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f69ed81ab24d5a3bd93861c8c4436f54afdf8e8cc421562b0c7504cf3be58206"}, - {file = "pydantic_core-2.27.1-cp310-none-win32.whl", hash = "sha256:f5a823165e6d04ccea61a9f0576f345f8ce40ed533013580e087bd4d7442b52c"}, - {file = "pydantic_core-2.27.1-cp310-none-win_amd64.whl", hash = "sha256:57866a76e0b3823e0b56692d1a0bf722bffb324839bb5b7226a7dbd6c9a40b17"}, - {file = "pydantic_core-2.27.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ac3b20653bdbe160febbea8aa6c079d3df19310d50ac314911ed8cc4eb7f8cb8"}, - {file = "pydantic_core-2.27.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a5a8e19d7c707c4cadb8c18f5f60c843052ae83c20fa7d44f41594c644a1d330"}, - {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f7059ca8d64fea7f238994c97d91f75965216bcbe5f695bb44f354893f11d52"}, - {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bed0f8a0eeea9fb72937ba118f9db0cb7e90773462af7962d382445f3005e5a4"}, - {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a3cb37038123447cf0f3ea4c74751f6a9d7afef0eb71aa07bf5f652b5e6a132c"}, - {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:84286494f6c5d05243456e04223d5a9417d7f443c3b76065e75001beb26f88de"}, - {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acc07b2cfc5b835444b44a9956846b578d27beeacd4b52e45489e93276241025"}, - {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4fefee876e07a6e9aad7a8c8c9f85b0cdbe7df52b8a9552307b09050f7512c7e"}, - {file = "pydantic_core-2.27.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:258c57abf1188926c774a4c94dd29237e77eda19462e5bb901d88adcab6af919"}, - {file = "pydantic_core-2.27.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:35c14ac45fcfdf7167ca76cc80b2001205a8d5d16d80524e13508371fb8cdd9c"}, - {file = "pydantic_core-2.27.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d1b26e1dff225c31897696cab7d4f0a315d4c0d9e8666dbffdb28216f3b17fdc"}, - {file = "pydantic_core-2.27.1-cp311-none-win32.whl", hash = "sha256:2cdf7d86886bc6982354862204ae3b2f7f96f21a3eb0ba5ca0ac42c7b38598b9"}, - {file = "pydantic_core-2.27.1-cp311-none-win_amd64.whl", hash = "sha256:3af385b0cee8df3746c3f406f38bcbfdc9041b5c2d5ce3e5fc6637256e60bbc5"}, - {file = "pydantic_core-2.27.1-cp311-none-win_arm64.whl", hash = "sha256:81f2ec23ddc1b476ff96563f2e8d723830b06dceae348ce02914a37cb4e74b89"}, - {file = "pydantic_core-2.27.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9cbd94fc661d2bab2bc702cddd2d3370bbdcc4cd0f8f57488a81bcce90c7a54f"}, - {file = "pydantic_core-2.27.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5f8c4718cd44ec1580e180cb739713ecda2bdee1341084c1467802a417fe0f02"}, - {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15aae984e46de8d376df515f00450d1522077254ef6b7ce189b38ecee7c9677c"}, - {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1ba5e3963344ff25fc8c40da90f44b0afca8cfd89d12964feb79ac1411a260ac"}, - {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:992cea5f4f3b29d6b4f7f1726ed8ee46c8331c6b4eed6db5b40134c6fe1768bb"}, - {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0325336f348dbee6550d129b1627cb8f5351a9dc91aad141ffb96d4937bd9529"}, - {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7597c07fbd11515f654d6ece3d0e4e5093edc30a436c63142d9a4b8e22f19c35"}, - {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3bbd5d8cc692616d5ef6fbbbd50dbec142c7e6ad9beb66b78a96e9c16729b089"}, - {file = "pydantic_core-2.27.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:dc61505e73298a84a2f317255fcc72b710b72980f3a1f670447a21efc88f8381"}, - {file = "pydantic_core-2.27.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:e1f735dc43da318cad19b4173dd1ffce1d84aafd6c9b782b3abc04a0d5a6f5bb"}, - {file = "pydantic_core-2.27.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f4e5658dbffe8843a0f12366a4c2d1c316dbe09bb4dfbdc9d2d9cd6031de8aae"}, - {file = "pydantic_core-2.27.1-cp312-none-win32.whl", hash = "sha256:672ebbe820bb37988c4d136eca2652ee114992d5d41c7e4858cdd90ea94ffe5c"}, - {file = "pydantic_core-2.27.1-cp312-none-win_amd64.whl", hash = "sha256:66ff044fd0bb1768688aecbe28b6190f6e799349221fb0de0e6f4048eca14c16"}, - {file = "pydantic_core-2.27.1-cp312-none-win_arm64.whl", hash = "sha256:9a3b0793b1bbfd4146304e23d90045f2a9b5fd5823aa682665fbdaf2a6c28f3e"}, - {file = "pydantic_core-2.27.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:f216dbce0e60e4d03e0c4353c7023b202d95cbaeff12e5fd2e82ea0a66905073"}, - {file = "pydantic_core-2.27.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a2e02889071850bbfd36b56fd6bc98945e23670773bc7a76657e90e6b6603c08"}, - {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42b0e23f119b2b456d07ca91b307ae167cc3f6c846a7b169fca5326e32fdc6cf"}, - {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:764be71193f87d460a03f1f7385a82e226639732214b402f9aa61f0d025f0737"}, - {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1c00666a3bd2f84920a4e94434f5974d7bbc57e461318d6bb34ce9cdbbc1f6b2"}, - {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ccaa88b24eebc0f849ce0a4d09e8a408ec5a94afff395eb69baf868f5183107"}, - {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c65af9088ac534313e1963443d0ec360bb2b9cba6c2909478d22c2e363d98a51"}, - {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:206b5cf6f0c513baffaeae7bd817717140770c74528f3e4c3e1cec7871ddd61a"}, - {file = "pydantic_core-2.27.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:062f60e512fc7fff8b8a9d680ff0ddaaef0193dba9fa83e679c0c5f5fbd018bc"}, - {file = "pydantic_core-2.27.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:a0697803ed7d4af5e4c1adf1670af078f8fcab7a86350e969f454daf598c4960"}, - {file = "pydantic_core-2.27.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:58ca98a950171f3151c603aeea9303ef6c235f692fe555e883591103da709b23"}, - {file = "pydantic_core-2.27.1-cp313-none-win32.whl", hash = "sha256:8065914ff79f7eab1599bd80406681f0ad08f8e47c880f17b416c9f8f7a26d05"}, - {file = "pydantic_core-2.27.1-cp313-none-win_amd64.whl", hash = "sha256:ba630d5e3db74c79300d9a5bdaaf6200172b107f263c98a0539eeecb857b2337"}, - {file = "pydantic_core-2.27.1-cp313-none-win_arm64.whl", hash = "sha256:45cf8588c066860b623cd11c4ba687f8d7175d5f7ef65f7129df8a394c502de5"}, - {file = "pydantic_core-2.27.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:5897bec80a09b4084aee23f9b73a9477a46c3304ad1d2d07acca19723fb1de62"}, - {file = "pydantic_core-2.27.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d0165ab2914379bd56908c02294ed8405c252250668ebcb438a55494c69f44ab"}, - {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b9af86e1d8e4cfc82c2022bfaa6f459381a50b94a29e95dcdda8442d6d83864"}, - {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f6c8a66741c5f5447e047ab0ba7a1c61d1e95580d64bce852e3df1f895c4067"}, - {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9a42d6a8156ff78981f8aa56eb6394114e0dedb217cf8b729f438f643608cbcd"}, - {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:64c65f40b4cd8b0e049a8edde07e38b476da7e3aaebe63287c899d2cff253fa5"}, - {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdcf339322a3fae5cbd504edcefddd5a50d9ee00d968696846f089b4432cf78"}, - {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bf99c8404f008750c846cb4ac4667b798a9f7de673ff719d705d9b2d6de49c5f"}, - {file = "pydantic_core-2.27.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8f1edcea27918d748c7e5e4d917297b2a0ab80cad10f86631e488b7cddf76a36"}, - {file = "pydantic_core-2.27.1-cp38-cp38-musllinux_1_1_armv7l.whl", hash = "sha256:159cac0a3d096f79ab6a44d77a961917219707e2a130739c64d4dd46281f5c2a"}, - {file = "pydantic_core-2.27.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:029d9757eb621cc6e1848fa0b0310310de7301057f623985698ed7ebb014391b"}, - {file = "pydantic_core-2.27.1-cp38-none-win32.whl", hash = "sha256:a28af0695a45f7060e6f9b7092558a928a28553366519f64083c63a44f70e618"}, - {file = "pydantic_core-2.27.1-cp38-none-win_amd64.whl", hash = "sha256:2d4567c850905d5eaaed2f7a404e61012a51caf288292e016360aa2b96ff38d4"}, - {file = "pydantic_core-2.27.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:e9386266798d64eeb19dd3677051f5705bf873e98e15897ddb7d76f477131967"}, - {file = "pydantic_core-2.27.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4228b5b646caa73f119b1ae756216b59cc6e2267201c27d3912b592c5e323b60"}, - {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b3dfe500de26c52abe0477dde16192ac39c98f05bf2d80e76102d394bd13854"}, - {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:aee66be87825cdf72ac64cb03ad4c15ffef4143dbf5c113f64a5ff4f81477bf9"}, - {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b748c44bb9f53031c8cbc99a8a061bc181c1000c60a30f55393b6e9c45cc5bd"}, - {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ca038c7f6a0afd0b2448941b6ef9d5e1949e999f9e5517692eb6da58e9d44be"}, - {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e0bd57539da59a3e4671b90a502da9a28c72322a4f17866ba3ac63a82c4498e"}, - {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ac6c2c45c847bbf8f91930d88716a0fb924b51e0c6dad329b793d670ec5db792"}, - {file = "pydantic_core-2.27.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b94d4ba43739bbe8b0ce4262bcc3b7b9f31459ad120fb595627eaeb7f9b9ca01"}, - {file = "pydantic_core-2.27.1-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:00e6424f4b26fe82d44577b4c842d7df97c20be6439e8e685d0d715feceb9fb9"}, - {file = "pydantic_core-2.27.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:38de0a70160dd97540335b7ad3a74571b24f1dc3ed33f815f0880682e6880131"}, - {file = "pydantic_core-2.27.1-cp39-none-win32.whl", hash = "sha256:7ccebf51efc61634f6c2344da73e366c75e735960b5654b63d7e6f69a5885fa3"}, - {file = "pydantic_core-2.27.1-cp39-none-win_amd64.whl", hash = "sha256:a57847b090d7892f123726202b7daa20df6694cbd583b67a592e856bff603d6c"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3fa80ac2bd5856580e242dbc202db873c60a01b20309c8319b5c5986fbe53ce6"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d950caa237bb1954f1b8c9227b5065ba6875ac9771bb8ec790d956a699b78676"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e4216e64d203e39c62df627aa882f02a2438d18a5f21d7f721621f7a5d3611d"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02a3d637bd387c41d46b002f0e49c52642281edacd2740e5a42f7017feea3f2c"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:161c27ccce13b6b0c8689418da3885d3220ed2eae2ea5e9b2f7f3d48f1d52c27"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:19910754e4cc9c63bc1c7f6d73aa1cfee82f42007e407c0f413695c2f7ed777f"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:e173486019cc283dc9778315fa29a363579372fe67045e971e89b6365cc035ed"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:af52d26579b308921b73b956153066481f064875140ccd1dfd4e77db89dbb12f"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:981fb88516bd1ae8b0cbbd2034678a39dedc98752f264ac9bc5839d3923fa04c"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5fde892e6c697ce3e30c61b239330fc5d569a71fefd4eb6512fc6caec9dd9e2f"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:816f5aa087094099fff7edabb5e01cc370eb21aa1a1d44fe2d2aefdfb5599b31"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c10c309e18e443ddb108f0ef64e8729363adbfd92d6d57beec680f6261556f3"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98476c98b02c8e9b2eec76ac4156fd006628b1b2d0ef27e548ffa978393fd154"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c3027001c28434e7ca5a6e1e527487051136aa81803ac812be51802150d880dd"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:7699b1df36a48169cdebda7ab5a2bac265204003f153b4bd17276153d997670a"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:1c39b07d90be6b48968ddc8c19e7585052088fd7ec8d568bb31ff64c70ae3c97"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:46ccfe3032b3915586e469d4972973f893c0a2bb65669194a5bdea9bacc088c2"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:62ba45e21cf6571d7f716d903b5b7b6d2617e2d5d67c0923dc47b9d41369f840"}, - {file = "pydantic_core-2.27.1.tar.gz", hash = "sha256:62a763352879b84aa31058fc931884055fd75089cccbd9d58bb6afd01141b235"}, + {file = "pydantic_core-2.33.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3077cfdb6125cc8dab61b155fdd714663e401f0e6883f9632118ec12cf42df26"}, + {file = "pydantic_core-2.33.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8ffab8b2908d152e74862d276cf5017c81a2f3719f14e8e3e8d6b83fda863927"}, + {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5183e4f6a2d468787243ebcd70cf4098c247e60d73fb7d68d5bc1e1beaa0c4db"}, + {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:398a38d323f37714023be1e0285765f0a27243a8b1506b7b7de87b647b517e48"}, + {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87d3776f0001b43acebfa86f8c64019c043b55cc5a6a2e313d728b5c95b46969"}, + {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c566dd9c5f63d22226409553531f89de0cac55397f2ab8d97d6f06cfce6d947e"}, + {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0d5f3acc81452c56895e90643a625302bd6be351e7010664151cc55b7b97f89"}, + {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d3a07fadec2a13274a8d861d3d37c61e97a816beae717efccaa4b36dfcaadcde"}, + {file = "pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f99aeda58dce827f76963ee87a0ebe75e648c72ff9ba1174a253f6744f518f65"}, + {file = "pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:902dbc832141aa0ec374f4310f1e4e7febeebc3256f00dc359a9ac3f264a45dc"}, + {file = "pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fe44d56aa0b00d66640aa84a3cbe80b7a3ccdc6f0b1ca71090696a6d4777c091"}, + {file = "pydantic_core-2.33.1-cp310-cp310-win32.whl", hash = "sha256:ed3eb16d51257c763539bde21e011092f127a2202692afaeaccb50db55a31383"}, + {file = "pydantic_core-2.33.1-cp310-cp310-win_amd64.whl", hash = "sha256:694ad99a7f6718c1a498dc170ca430687a39894a60327f548e02a9c7ee4b6504"}, + {file = "pydantic_core-2.33.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6e966fc3caaf9f1d96b349b0341c70c8d6573bf1bac7261f7b0ba88f96c56c24"}, + {file = "pydantic_core-2.33.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bfd0adeee563d59c598ceabddf2c92eec77abcb3f4a391b19aa7366170bd9e30"}, + {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91815221101ad3c6b507804178a7bb5cb7b2ead9ecd600041669c8d805ebd595"}, + {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9fea9c1869bb4742d174a57b4700c6dadea951df8b06de40c2fedb4f02931c2e"}, + {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d20eb4861329bb2484c021b9d9a977566ab16d84000a57e28061151c62b349a"}, + {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb935c5591573ae3201640579f30128ccc10739b45663f93c06796854405505"}, + {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c964fd24e6166420d18fb53996d8c9fd6eac9bf5ae3ec3d03015be4414ce497f"}, + {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:681d65e9011f7392db5aa002b7423cc442d6a673c635668c227c6c8d0e5a4f77"}, + {file = "pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e100c52f7355a48413e2999bfb4e139d2977a904495441b374f3d4fb4a170961"}, + {file = "pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:048831bd363490be79acdd3232f74a0e9951b11b2b4cc058aeb72b22fdc3abe1"}, + {file = "pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:bdc84017d28459c00db6f918a7272a5190bec3090058334e43a76afb279eac7c"}, + {file = "pydantic_core-2.33.1-cp311-cp311-win32.whl", hash = "sha256:32cd11c5914d1179df70406427097c7dcde19fddf1418c787540f4b730289896"}, + {file = "pydantic_core-2.33.1-cp311-cp311-win_amd64.whl", hash = "sha256:2ea62419ba8c397e7da28a9170a16219d310d2cf4970dbc65c32faf20d828c83"}, + {file = "pydantic_core-2.33.1-cp311-cp311-win_arm64.whl", hash = "sha256:fc903512177361e868bc1f5b80ac8c8a6e05fcdd574a5fb5ffeac5a9982b9e89"}, + {file = "pydantic_core-2.33.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1293d7febb995e9d3ec3ea09caf1a26214eec45b0f29f6074abb004723fc1de8"}, + {file = "pydantic_core-2.33.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:99b56acd433386c8f20be5c4000786d1e7ca0523c8eefc995d14d79c7a081498"}, + {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35a5ec3fa8c2fe6c53e1b2ccc2454398f95d5393ab398478f53e1afbbeb4d939"}, + {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b172f7b9d2f3abc0efd12e3386f7e48b576ef309544ac3a63e5e9cdd2e24585d"}, + {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9097b9f17f91eea659b9ec58148c0747ec354a42f7389b9d50701610d86f812e"}, + {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc77ec5b7e2118b152b0d886c7514a4653bcb58c6b1d760134a9fab915f777b3"}, + {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5e3d15245b08fa4a84cefc6c9222e6f37c98111c8679fbd94aa145f9a0ae23d"}, + {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ef99779001d7ac2e2461d8ab55d3373fe7315caefdbecd8ced75304ae5a6fc6b"}, + {file = "pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fc6bf8869e193855e8d91d91f6bf59699a5cdfaa47a404e278e776dd7f168b39"}, + {file = "pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:b1caa0bc2741b043db7823843e1bde8aaa58a55a58fda06083b0569f8b45693a"}, + {file = "pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ec259f62538e8bf364903a7d0d0239447059f9434b284f5536e8402b7dd198db"}, + {file = "pydantic_core-2.33.1-cp312-cp312-win32.whl", hash = "sha256:e14f369c98a7c15772b9da98987f58e2b509a93235582838bd0d1d8c08b68fda"}, + {file = "pydantic_core-2.33.1-cp312-cp312-win_amd64.whl", hash = "sha256:1c607801d85e2e123357b3893f82c97a42856192997b95b4d8325deb1cd0c5f4"}, + {file = "pydantic_core-2.33.1-cp312-cp312-win_arm64.whl", hash = "sha256:8d13f0276806ee722e70a1c93da19748594f19ac4299c7e41237fc791d1861ea"}, + {file = "pydantic_core-2.33.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:70af6a21237b53d1fe7b9325b20e65cbf2f0a848cf77bed492b029139701e66a"}, + {file = "pydantic_core-2.33.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:282b3fe1bbbe5ae35224a0dbd05aed9ccabccd241e8e6b60370484234b456266"}, + {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b315e596282bbb5822d0c7ee9d255595bd7506d1cb20c2911a4da0b970187d3"}, + {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1dfae24cf9921875ca0ca6a8ecb4bb2f13c855794ed0d468d6abbec6e6dcd44a"}, + {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6dd8ecfde08d8bfadaea669e83c63939af76f4cf5538a72597016edfa3fad516"}, + {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f593494876eae852dc98c43c6f260f45abdbfeec9e4324e31a481d948214764"}, + {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:948b73114f47fd7016088e5186d13faf5e1b2fe83f5e320e371f035557fd264d"}, + {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e11f3864eb516af21b01e25fac915a82e9ddad3bb0fb9e95a246067398b435a4"}, + {file = "pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:549150be302428b56fdad0c23c2741dcdb5572413776826c965619a25d9c6bde"}, + {file = "pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:495bc156026efafd9ef2d82372bd38afce78ddd82bf28ef5276c469e57c0c83e"}, + {file = "pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ec79de2a8680b1a67a07490bddf9636d5c2fab609ba8c57597e855fa5fa4dacd"}, + {file = "pydantic_core-2.33.1-cp313-cp313-win32.whl", hash = "sha256:ee12a7be1742f81b8a65b36c6921022301d466b82d80315d215c4c691724986f"}, + {file = "pydantic_core-2.33.1-cp313-cp313-win_amd64.whl", hash = "sha256:ede9b407e39949d2afc46385ce6bd6e11588660c26f80576c11c958e6647bc40"}, + {file = "pydantic_core-2.33.1-cp313-cp313-win_arm64.whl", hash = "sha256:aa687a23d4b7871a00e03ca96a09cad0f28f443690d300500603bd0adba4b523"}, + {file = "pydantic_core-2.33.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:401d7b76e1000d0dd5538e6381d28febdcacb097c8d340dde7d7fc6e13e9f95d"}, + {file = "pydantic_core-2.33.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7aeb055a42d734c0255c9e489ac67e75397d59c6fbe60d155851e9782f276a9c"}, + {file = "pydantic_core-2.33.1-cp313-cp313t-win_amd64.whl", hash = "sha256:338ea9b73e6e109f15ab439e62cb3b78aa752c7fd9536794112e14bee02c8d18"}, + {file = "pydantic_core-2.33.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5ab77f45d33d264de66e1884fca158bc920cb5e27fd0764a72f72f5756ae8bdb"}, + {file = "pydantic_core-2.33.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7aaba1b4b03aaea7bb59e1b5856d734be011d3e6d98f5bcaa98cb30f375f2ad"}, + {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7fb66263e9ba8fea2aa85e1e5578980d127fb37d7f2e292773e7bc3a38fb0c7b"}, + {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3f2648b9262607a7fb41d782cc263b48032ff7a03a835581abbf7a3bec62bcf5"}, + {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:723c5630c4259400818b4ad096735a829074601805d07f8cafc366d95786d331"}, + {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d100e3ae783d2167782391e0c1c7a20a31f55f8015f3293647544df3f9c67824"}, + {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:177d50460bc976a0369920b6c744d927b0ecb8606fb56858ff542560251b19e5"}, + {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a3edde68d1a1f9af1273b2fe798997b33f90308fb6d44d8550c89fc6a3647cf6"}, + {file = "pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a62c3c3ef6a7e2c45f7853b10b5bc4ddefd6ee3cd31024754a1a5842da7d598d"}, + {file = "pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:c91dbb0ab683fa0cd64a6e81907c8ff41d6497c346890e26b23de7ee55353f96"}, + {file = "pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9f466e8bf0a62dc43e068c12166281c2eca72121dd2adc1040f3aa1e21ef8599"}, + {file = "pydantic_core-2.33.1-cp39-cp39-win32.whl", hash = "sha256:ab0277cedb698749caada82e5d099dc9fed3f906a30d4c382d1a21725777a1e5"}, + {file = "pydantic_core-2.33.1-cp39-cp39-win_amd64.whl", hash = "sha256:5773da0ee2d17136b1f1c6fbde543398d452a6ad2a7b54ea1033e2daa739b8d2"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5c834f54f8f4640fd7e4b193f80eb25a0602bba9e19b3cd2fc7ffe8199f5ae02"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:049e0de24cf23766f12cc5cc71d8abc07d4a9deb9061b334b62093dedc7cb068"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a28239037b3d6f16916a4c831a5a0eadf856bdd6d2e92c10a0da3a59eadcf3e"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d3da303ab5f378a268fa7d45f37d7d85c3ec19769f28d2cc0c61826a8de21fe"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:25626fb37b3c543818c14821afe0fd3830bc327a43953bc88db924b68c5723f1"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3ab2d36e20fbfcce8f02d73c33a8a7362980cff717926bbae030b93ae46b56c7"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:2f9284e11c751b003fd4215ad92d325d92c9cb19ee6729ebd87e3250072cdcde"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:048c01eee07d37cbd066fc512b9d8b5ea88ceeb4e629ab94b3e56965ad655add"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5ccd429694cf26af7997595d627dd2637e7932214486f55b8a357edaac9dae8c"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3a371dc00282c4b84246509a5ddc808e61b9864aa1eae9ecc92bb1268b82db4a"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:f59295ecc75a1788af8ba92f2e8c6eeaa5a94c22fc4d151e8d9638814f85c8fc"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08530b8ac922003033f399128505f513e30ca770527cc8bbacf75a84fcc2c74b"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bae370459da6a5466978c0eacf90690cb57ec9d533f8e63e564ef3822bfa04fe"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e3de2777e3b9f4d603112f78006f4ae0acb936e95f06da6cb1a45fbad6bdb4b5"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3a64e81e8cba118e108d7126362ea30e021291b7805d47e4896e52c791be2761"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:52928d8c1b6bda03cc6d811e8923dffc87a2d3c8b3bfd2ce16471c7147a24850"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:1b30d92c9412beb5ac6b10a3eb7ef92ccb14e3f2a8d7732e2d739f58b3aa7544"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:f995719707e0e29f0f41a8aa3bcea6e761a36c9136104d3189eafb83f5cec5e5"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7edbc454a29fc6aeae1e1eecba4f07b63b8d76e76a748532233c4c167b4cb9ea"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:ad05b683963f69a1d5d2c2bdab1274a31221ca737dbbceaa32bcb67359453cdd"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df6a94bf9452c6da9b5d76ed229a5683d0306ccb91cca8e1eea883189780d568"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7965c13b3967909a09ecc91f21d09cfc4576bf78140b988904e94f130f188396"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3f1fdb790440a34f6ecf7679e1863b825cb5ffde858a9197f851168ed08371e5"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:5277aec8d879f8d05168fdd17ae811dd313b8ff894aeeaf7cd34ad28b4d77e33"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8ab581d3530611897d863d1a649fb0644b860286b4718db919bfd51ece41f10b"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0483847fa9ad5e3412265c1bd72aad35235512d9ce9d27d81a56d935ef489672"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:de9e06abe3cc5ec6a2d5f75bc99b0bdca4f5c719a5b34026f8c57efbdecd2ee3"}, + {file = "pydantic_core-2.33.1.tar.gz", hash = "sha256:bcc9c6fdb0ced789245b02b7d6603e17d1563064ddcfc36f046b61c0c05dd9df"}, ] [package.dependencies] @@ -689,13 +718,14 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" [[package]] name = "pygments" -version = "2.18.0" +version = "2.19.1" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, - {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, + {file = "pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c"}, + {file = "pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f"}, ] [package.extras] @@ -707,6 +737,7 @@ version = "2.10.1" description = "JSON Web Token implementation in Python" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ {file = "PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb"}, {file = "pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953"}, @@ -720,13 +751,14 @@ tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] [[package]] name = "python-dotenv" -version = "1.0.1" +version = "1.1.0" description = "Read key-value pairs from a .env file and set them as environment variables" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, - {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, + {file = "python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d"}, + {file = "python_dotenv-1.1.0.tar.gz", hash = "sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5"}, ] [package.extras] @@ -734,13 +766,14 @@ cli = ["click (>=5.0)"] [[package]] name = "python-multipart" -version = "0.0.19" +version = "0.0.20" description = "A streaming multipart parser for Python" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "python_multipart-0.0.19-py3-none-any.whl", hash = "sha256:f8d5b0b9c618575bf9df01c684ded1d94a338839bdd8223838afacfb4bb2082d"}, - {file = "python_multipart-0.0.19.tar.gz", hash = "sha256:905502ef39050557b7a6af411f454bc19526529ca46ae6831508438890ce12cc"}, + {file = "python_multipart-0.0.20-py3-none-any.whl", hash = "sha256:8a62d3a8335e06589fe01f2a3e178cdcc632f3fbe0d492ad9ee0ec35aab1f104"}, + {file = "python_multipart-0.0.20.tar.gz", hash = "sha256:8dd0cab45b8e23064ae09147625994d090fa46f5b0d1e13af944c331a7fa9d13"}, ] [[package]] @@ -749,6 +782,7 @@ version = "6.0.2" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {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"}, @@ -807,13 +841,14 @@ files = [ [[package]] name = "rich" -version = "13.9.4" +version = "14.0.0" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" optional = false python-versions = ">=3.8.0" +groups = ["main"] files = [ - {file = "rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90"}, - {file = "rich-13.9.4.tar.gz", hash = "sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098"}, + {file = "rich-14.0.0-py3-none-any.whl", hash = "sha256:1c9491e1951aac09caffd42f448ee3d04e58923ffe14993f6e83068dc395d7e0"}, + {file = "rich-14.0.0.tar.gz", hash = "sha256:82f1bc23a6a21ebca4ae0c45af9bdbc492ed20231dcb63f297d6d1021a9d5725"}, ] [package.dependencies] @@ -824,12 +859,30 @@ typing-extensions = {version = ">=4.0.0,<5.0", markers = "python_version < \"3.1 [package.extras] jupyter = ["ipywidgets (>=7.5.1,<9)"] +[[package]] +name = "rich-toolkit" +version = "0.14.1" +description = "Rich toolkit for building command-line applications" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "rich_toolkit-0.14.1-py3-none-any.whl", hash = "sha256:dc92c0117d752446d04fdc828dbca5873bcded213a091a5d3742a2beec2e6559"}, + {file = "rich_toolkit-0.14.1.tar.gz", hash = "sha256:9248e2d087bfc01f3e4c5c8987e05f7fa744d00dd22fa2be3aa6e50255790b3f"}, +] + +[package.dependencies] +click = ">=8.1.7" +rich = ">=13.7.1" +typing-extensions = ">=4.12.2" + [[package]] name = "shellingham" version = "1.5.4" description = "Tool to Detect Surrounding Shell" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686"}, {file = "shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de"}, @@ -841,6 +894,7 @@ version = "1.3.1" description = "Sniff out which async library your code is running under" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, @@ -848,80 +902,81 @@ files = [ [[package]] name = "sqlalchemy" -version = "2.0.36" +version = "2.0.40" description = "Database Abstraction Library" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ - {file = "SQLAlchemy-2.0.36-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:59b8f3adb3971929a3e660337f5dacc5942c2cdb760afcabb2614ffbda9f9f72"}, - {file = "SQLAlchemy-2.0.36-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:37350015056a553e442ff672c2d20e6f4b6d0b2495691fa239d8aa18bb3bc908"}, - {file = "SQLAlchemy-2.0.36-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8318f4776c85abc3f40ab185e388bee7a6ea99e7fa3a30686580b209eaa35c08"}, - {file = "SQLAlchemy-2.0.36-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c245b1fbade9c35e5bd3b64270ab49ce990369018289ecfde3f9c318411aaa07"}, - {file = "SQLAlchemy-2.0.36-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:69f93723edbca7342624d09f6704e7126b152eaed3cdbb634cb657a54332a3c5"}, - {file = "SQLAlchemy-2.0.36-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f9511d8dd4a6e9271d07d150fb2f81874a3c8c95e11ff9af3a2dfc35fe42ee44"}, - {file = "SQLAlchemy-2.0.36-cp310-cp310-win32.whl", hash = "sha256:c3f3631693003d8e585d4200730616b78fafd5a01ef8b698f6967da5c605b3fa"}, - {file = "SQLAlchemy-2.0.36-cp310-cp310-win_amd64.whl", hash = "sha256:a86bfab2ef46d63300c0f06936bd6e6c0105faa11d509083ba8f2f9d237fb5b5"}, - {file = "SQLAlchemy-2.0.36-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fd3a55deef00f689ce931d4d1b23fa9f04c880a48ee97af488fd215cf24e2a6c"}, - {file = "SQLAlchemy-2.0.36-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4f5e9cd989b45b73bd359f693b935364f7e1f79486e29015813c338450aa5a71"}, - {file = "SQLAlchemy-2.0.36-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0ddd9db6e59c44875211bc4c7953a9f6638b937b0a88ae6d09eb46cced54eff"}, - {file = "SQLAlchemy-2.0.36-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2519f3a5d0517fc159afab1015e54bb81b4406c278749779be57a569d8d1bb0d"}, - {file = "SQLAlchemy-2.0.36-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59b1ee96617135f6e1d6f275bbe988f419c5178016f3d41d3c0abb0c819f75bb"}, - {file = "SQLAlchemy-2.0.36-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:39769a115f730d683b0eb7b694db9789267bcd027326cccc3125e862eb03bfd8"}, - {file = "SQLAlchemy-2.0.36-cp311-cp311-win32.whl", hash = "sha256:66bffbad8d6271bb1cc2f9a4ea4f86f80fe5e2e3e501a5ae2a3dc6a76e604e6f"}, - {file = "SQLAlchemy-2.0.36-cp311-cp311-win_amd64.whl", hash = "sha256:23623166bfefe1487d81b698c423f8678e80df8b54614c2bf4b4cfcd7c711959"}, - {file = "SQLAlchemy-2.0.36-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7b64e6ec3f02c35647be6b4851008b26cff592a95ecb13b6788a54ef80bbdd4"}, - {file = "SQLAlchemy-2.0.36-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:46331b00096a6db1fdc052d55b101dbbfc99155a548e20a0e4a8e5e4d1362855"}, - {file = "SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdf3386a801ea5aba17c6410dd1dc8d39cf454ca2565541b5ac42a84e1e28f53"}, - {file = "SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac9dfa18ff2a67b09b372d5db8743c27966abf0e5344c555d86cc7199f7ad83a"}, - {file = "SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:90812a8933df713fdf748b355527e3af257a11e415b613dd794512461eb8a686"}, - {file = "SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1bc330d9d29c7f06f003ab10e1eaced295e87940405afe1b110f2eb93a233588"}, - {file = "SQLAlchemy-2.0.36-cp312-cp312-win32.whl", hash = "sha256:79d2e78abc26d871875b419e1fd3c0bca31a1cb0043277d0d850014599626c2e"}, - {file = "SQLAlchemy-2.0.36-cp312-cp312-win_amd64.whl", hash = "sha256:b544ad1935a8541d177cb402948b94e871067656b3a0b9e91dbec136b06a2ff5"}, - {file = "SQLAlchemy-2.0.36-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b5cc79df7f4bc3d11e4b542596c03826063092611e481fcf1c9dfee3c94355ef"}, - {file = "SQLAlchemy-2.0.36-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3c01117dd36800f2ecaa238c65365b7b16497adc1522bf84906e5710ee9ba0e8"}, - {file = "SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9bc633f4ee4b4c46e7adcb3a9b5ec083bf1d9a97c1d3854b92749d935de40b9b"}, - {file = "SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e46ed38affdfc95d2c958de328d037d87801cfcbea6d421000859e9789e61c2"}, - {file = "SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b2985c0b06e989c043f1dc09d4fe89e1616aadd35392aea2844f0458a989eacf"}, - {file = "SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a121d62ebe7d26fec9155f83f8be5189ef1405f5973ea4874a26fab9f1e262c"}, - {file = "SQLAlchemy-2.0.36-cp313-cp313-win32.whl", hash = "sha256:0572f4bd6f94752167adfd7c1bed84f4b240ee6203a95e05d1e208d488d0d436"}, - {file = "SQLAlchemy-2.0.36-cp313-cp313-win_amd64.whl", hash = "sha256:8c78ac40bde930c60e0f78b3cd184c580f89456dd87fc08f9e3ee3ce8765ce88"}, - {file = "SQLAlchemy-2.0.36-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:be9812b766cad94a25bc63bec11f88c4ad3629a0cec1cd5d4ba48dc23860486b"}, - {file = "SQLAlchemy-2.0.36-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50aae840ebbd6cdd41af1c14590e5741665e5272d2fee999306673a1bb1fdb4d"}, - {file = "SQLAlchemy-2.0.36-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4557e1f11c5f653ebfdd924f3f9d5ebfc718283b0b9beebaa5dd6b77ec290971"}, - {file = "SQLAlchemy-2.0.36-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:07b441f7d03b9a66299ce7ccf3ef2900abc81c0db434f42a5694a37bd73870f2"}, - {file = "SQLAlchemy-2.0.36-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:28120ef39c92c2dd60f2721af9328479516844c6b550b077ca450c7d7dc68575"}, - {file = "SQLAlchemy-2.0.36-cp37-cp37m-win32.whl", hash = "sha256:b81ee3d84803fd42d0b154cb6892ae57ea6b7c55d8359a02379965706c7efe6c"}, - {file = "SQLAlchemy-2.0.36-cp37-cp37m-win_amd64.whl", hash = "sha256:f942a799516184c855e1a32fbc7b29d7e571b52612647866d4ec1c3242578fcb"}, - {file = "SQLAlchemy-2.0.36-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3d6718667da04294d7df1670d70eeddd414f313738d20a6f1d1f379e3139a545"}, - {file = "SQLAlchemy-2.0.36-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:72c28b84b174ce8af8504ca28ae9347d317f9dba3999e5981a3cd441f3712e24"}, - {file = "SQLAlchemy-2.0.36-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b11d0cfdd2b095e7b0686cf5fabeb9c67fae5b06d265d8180715b8cfa86522e3"}, - {file = "SQLAlchemy-2.0.36-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e32092c47011d113dc01ab3e1d3ce9f006a47223b18422c5c0d150af13a00687"}, - {file = "SQLAlchemy-2.0.36-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:6a440293d802d3011028e14e4226da1434b373cbaf4a4bbb63f845761a708346"}, - {file = "SQLAlchemy-2.0.36-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c54a1e53a0c308a8e8a7dffb59097bff7facda27c70c286f005327f21b2bd6b1"}, - {file = "SQLAlchemy-2.0.36-cp38-cp38-win32.whl", hash = "sha256:1e0d612a17581b6616ff03c8e3d5eff7452f34655c901f75d62bd86449d9750e"}, - {file = "SQLAlchemy-2.0.36-cp38-cp38-win_amd64.whl", hash = "sha256:8958b10490125124463095bbdadda5aa22ec799f91958e410438ad6c97a7b793"}, - {file = "SQLAlchemy-2.0.36-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dc022184d3e5cacc9579e41805a681187650e170eb2fd70e28b86192a479dcaa"}, - {file = "SQLAlchemy-2.0.36-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b817d41d692bf286abc181f8af476c4fbef3fd05e798777492618378448ee689"}, - {file = "SQLAlchemy-2.0.36-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4e46a888b54be23d03a89be510f24a7652fe6ff660787b96cd0e57a4ebcb46d"}, - {file = "SQLAlchemy-2.0.36-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4ae3005ed83f5967f961fd091f2f8c5329161f69ce8480aa8168b2d7fe37f06"}, - {file = "SQLAlchemy-2.0.36-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:03e08af7a5f9386a43919eda9de33ffda16b44eb11f3b313e6822243770e9763"}, - {file = "SQLAlchemy-2.0.36-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:3dbb986bad3ed5ceaf090200eba750b5245150bd97d3e67343a3cfed06feecf7"}, - {file = "SQLAlchemy-2.0.36-cp39-cp39-win32.whl", hash = "sha256:9fe53b404f24789b5ea9003fc25b9a3988feddebd7e7b369c8fac27ad6f52f28"}, - {file = "SQLAlchemy-2.0.36-cp39-cp39-win_amd64.whl", hash = "sha256:af148a33ff0349f53512a049c6406923e4e02bf2f26c5fb285f143faf4f0e46a"}, - {file = "SQLAlchemy-2.0.36-py3-none-any.whl", hash = "sha256:fddbe92b4760c6f5d48162aef14824add991aeda8ddadb3c31d56eb15ca69f8e"}, - {file = "sqlalchemy-2.0.36.tar.gz", hash = "sha256:7f2767680b6d2398aea7082e45a774b2b0767b5c8d8ffb9c8b683088ea9b29c5"}, + {file = "SQLAlchemy-2.0.40-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:ae9597cab738e7cc823f04a704fb754a9249f0b6695a6aeb63b74055cd417a96"}, + {file = "SQLAlchemy-2.0.40-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37a5c21ab099a83d669ebb251fddf8f5cee4d75ea40a5a1653d9c43d60e20867"}, + {file = "SQLAlchemy-2.0.40-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bece9527f5a98466d67fb5d34dc560c4da964240d8b09024bb21c1246545e04e"}, + {file = "SQLAlchemy-2.0.40-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:8bb131ffd2165fae48162c7bbd0d97c84ab961deea9b8bab16366543deeab625"}, + {file = "SQLAlchemy-2.0.40-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:9408fd453d5f8990405cc9def9af46bfbe3183e6110401b407c2d073c3388f47"}, + {file = "SQLAlchemy-2.0.40-cp37-cp37m-win32.whl", hash = "sha256:00a494ea6f42a44c326477b5bee4e0fc75f6a80c01570a32b57e89cf0fbef85a"}, + {file = "SQLAlchemy-2.0.40-cp37-cp37m-win_amd64.whl", hash = "sha256:c7b927155112ac858357ccf9d255dd8c044fd9ad2dc6ce4c4149527c901fa4c3"}, + {file = "sqlalchemy-2.0.40-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f1ea21bef99c703f44444ad29c2c1b6bd55d202750b6de8e06a955380f4725d7"}, + {file = "sqlalchemy-2.0.40-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:afe63b208153f3a7a2d1a5b9df452b0673082588933e54e7c8aac457cf35e758"}, + {file = "sqlalchemy-2.0.40-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a8aae085ea549a1eddbc9298b113cffb75e514eadbb542133dd2b99b5fb3b6af"}, + {file = "sqlalchemy-2.0.40-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ea9181284754d37db15156eb7be09c86e16e50fbe77610e9e7bee09291771a1"}, + {file = "sqlalchemy-2.0.40-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5434223b795be5c5ef8244e5ac98056e290d3a99bdcc539b916e282b160dda00"}, + {file = "sqlalchemy-2.0.40-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:15d08d5ef1b779af6a0909b97be6c1fd4298057504eb6461be88bd1696cb438e"}, + {file = "sqlalchemy-2.0.40-cp310-cp310-win32.whl", hash = "sha256:cd2f75598ae70bcfca9117d9e51a3b06fe29edd972fdd7fd57cc97b4dbf3b08a"}, + {file = "sqlalchemy-2.0.40-cp310-cp310-win_amd64.whl", hash = "sha256:2cbafc8d39ff1abdfdda96435f38fab141892dc759a2165947d1a8fffa7ef596"}, + {file = "sqlalchemy-2.0.40-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f6bacab7514de6146a1976bc56e1545bee247242fab030b89e5f70336fc0003e"}, + {file = "sqlalchemy-2.0.40-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5654d1ac34e922b6c5711631f2da497d3a7bffd6f9f87ac23b35feea56098011"}, + {file = "sqlalchemy-2.0.40-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35904d63412db21088739510216e9349e335f142ce4a04b69e2528020ee19ed4"}, + {file = "sqlalchemy-2.0.40-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c7a80ed86d6aaacb8160a1caef6680d4ddd03c944d985aecee940d168c411d1"}, + {file = "sqlalchemy-2.0.40-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:519624685a51525ddaa7d8ba8265a1540442a2ec71476f0e75241eb8263d6f51"}, + {file = "sqlalchemy-2.0.40-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2ee5f9999a5b0e9689bed96e60ee53c3384f1a05c2dd8068cc2e8361b0df5b7a"}, + {file = "sqlalchemy-2.0.40-cp311-cp311-win32.whl", hash = "sha256:c0cae71e20e3c02c52f6b9e9722bca70e4a90a466d59477822739dc31ac18b4b"}, + {file = "sqlalchemy-2.0.40-cp311-cp311-win_amd64.whl", hash = "sha256:574aea2c54d8f1dd1699449f332c7d9b71c339e04ae50163a3eb5ce4c4325ee4"}, + {file = "sqlalchemy-2.0.40-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:9d3b31d0a1c44b74d3ae27a3de422dfccd2b8f0b75e51ecb2faa2bf65ab1ba0d"}, + {file = "sqlalchemy-2.0.40-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:37f7a0f506cf78c80450ed1e816978643d3969f99c4ac6b01104a6fe95c5490a"}, + {file = "sqlalchemy-2.0.40-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bb933a650323e476a2e4fbef8997a10d0003d4da996aad3fd7873e962fdde4d"}, + {file = "sqlalchemy-2.0.40-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6959738971b4745eea16f818a2cd086fb35081383b078272c35ece2b07012716"}, + {file = "sqlalchemy-2.0.40-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:110179728e442dae85dd39591beb74072ae4ad55a44eda2acc6ec98ead80d5f2"}, + {file = "sqlalchemy-2.0.40-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8040680eaacdce4d635f12c55c714f3d4c7f57da2bc47a01229d115bd319191"}, + {file = "sqlalchemy-2.0.40-cp312-cp312-win32.whl", hash = "sha256:650490653b110905c10adac69408380688cefc1f536a137d0d69aca1069dc1d1"}, + {file = "sqlalchemy-2.0.40-cp312-cp312-win_amd64.whl", hash = "sha256:2be94d75ee06548d2fc591a3513422b873490efb124048f50556369a834853b0"}, + {file = "sqlalchemy-2.0.40-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:915866fd50dd868fdcc18d61d8258db1bf9ed7fbd6dfec960ba43365952f3b01"}, + {file = "sqlalchemy-2.0.40-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4a4c5a2905a9ccdc67a8963e24abd2f7afcd4348829412483695c59e0af9a705"}, + {file = "sqlalchemy-2.0.40-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55028d7a3ebdf7ace492fab9895cbc5270153f75442a0472d8516e03159ab364"}, + {file = "sqlalchemy-2.0.40-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6cfedff6878b0e0d1d0a50666a817ecd85051d12d56b43d9d425455e608b5ba0"}, + {file = "sqlalchemy-2.0.40-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bb19e30fdae77d357ce92192a3504579abe48a66877f476880238a962e5b96db"}, + {file = "sqlalchemy-2.0.40-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:16d325ea898f74b26ffcd1cf8c593b0beed8714f0317df2bed0d8d1de05a8f26"}, + {file = "sqlalchemy-2.0.40-cp313-cp313-win32.whl", hash = "sha256:a669cbe5be3c63f75bcbee0b266779706f1a54bcb1000f302685b87d1b8c1500"}, + {file = "sqlalchemy-2.0.40-cp313-cp313-win_amd64.whl", hash = "sha256:641ee2e0834812d657862f3a7de95e0048bdcb6c55496f39c6fa3d435f6ac6ad"}, + {file = "sqlalchemy-2.0.40-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:50f5885bbed261fc97e2e66c5156244f9704083a674b8d17f24c72217d29baf5"}, + {file = "sqlalchemy-2.0.40-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cf0e99cdb600eabcd1d65cdba0d3c91418fee21c4aa1d28db47d095b1064a7d8"}, + {file = "sqlalchemy-2.0.40-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe147fcd85aaed53ce90645c91ed5fca0cc88a797314c70dfd9d35925bd5d106"}, + {file = "sqlalchemy-2.0.40-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baf7cee56bd552385c1ee39af360772fbfc2f43be005c78d1140204ad6148438"}, + {file = "sqlalchemy-2.0.40-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:4aeb939bcac234b88e2d25d5381655e8353fe06b4e50b1c55ecffe56951d18c2"}, + {file = "sqlalchemy-2.0.40-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c268b5100cfeaa222c40f55e169d484efa1384b44bf9ca415eae6d556f02cb08"}, + {file = "sqlalchemy-2.0.40-cp38-cp38-win32.whl", hash = "sha256:46628ebcec4f23a1584fb52f2abe12ddb00f3bb3b7b337618b80fc1b51177aff"}, + {file = "sqlalchemy-2.0.40-cp38-cp38-win_amd64.whl", hash = "sha256:7e0505719939e52a7b0c65d20e84a6044eb3712bb6f239c6b1db77ba8e173a37"}, + {file = "sqlalchemy-2.0.40-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c884de19528e0fcd9dc34ee94c810581dd6e74aef75437ff17e696c2bfefae3e"}, + {file = "sqlalchemy-2.0.40-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1abb387710283fc5983d8a1209d9696a4eae9db8d7ac94b402981fe2fe2e39ad"}, + {file = "sqlalchemy-2.0.40-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cfa124eda500ba4b0d3afc3e91ea27ed4754e727c7f025f293a22f512bcd4c9"}, + {file = "sqlalchemy-2.0.40-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b6b28d303b9d57c17a5164eb1fd2d5119bb6ff4413d5894e74873280483eeb5"}, + {file = "sqlalchemy-2.0.40-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:b5a5bbe29c10c5bfd63893747a1bf6f8049df607638c786252cb9243b86b6706"}, + {file = "sqlalchemy-2.0.40-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f0fda83e113bb0fb27dc003685f32a5dcb99c9c4f41f4fa0838ac35265c23b5c"}, + {file = "sqlalchemy-2.0.40-cp39-cp39-win32.whl", hash = "sha256:957f8d85d5e834397ef78a6109550aeb0d27a53b5032f7a57f2451e1adc37e98"}, + {file = "sqlalchemy-2.0.40-cp39-cp39-win_amd64.whl", hash = "sha256:1ffdf9c91428e59744f8e6f98190516f8e1d05eec90e936eb08b257332c5e870"}, + {file = "sqlalchemy-2.0.40-py3-none-any.whl", hash = "sha256:32587e2e1e359276957e6fe5dad089758bc042a971a8a09ae8ecf7a8fe23d07a"}, + {file = "sqlalchemy-2.0.40.tar.gz", hash = "sha256:d827099289c64589418ebbcaead0145cd19f4e3e8a93919a0100247af245fa00"}, ] [package.dependencies] -greenlet = {version = "!=0.4.17", optional = true, markers = "python_version < \"3.13\" 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\") or extra == \"asyncio\""} +greenlet = {version = ">=1", optional = true, 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\") or extra == \"asyncio\""} typing-extensions = ">=4.6.0" [package.extras] -aiomysql = ["aiomysql (>=0.2.0)", "greenlet (!=0.4.17)"] -aioodbc = ["aioodbc", "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)"] +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"] @@ -932,7 +987,7 @@ mysql-connector = ["mysql-connector-python"] 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"] @@ -947,6 +1002,7 @@ version = "0.38.6" description = "The little ASGI library that shines." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "starlette-0.38.6-py3-none-any.whl", hash = "sha256:4517a1409e2e73ee4951214ba012052b9e16f60e90d73cfb06192c19203bbb05"}, {file = "starlette-0.38.6.tar.gz", hash = "sha256:863a1588f5574e70a821dadefb41e4881ea451a47a3cd1b4df359d4ffefe5ead"}, @@ -960,13 +1016,14 @@ full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7 [[package]] name = "typer" -version = "0.14.0" +version = "0.15.2" description = "Typer, build great CLIs. Easy to code. Based on Python type hints." optional = false python-versions = ">=3.7" +groups = ["main"] files = [ - {file = "typer-0.14.0-py3-none-any.whl", hash = "sha256:f476233a25770ab3e7b2eebf7c68f3bc702031681a008b20167573a4b7018f09"}, - {file = "typer-0.14.0.tar.gz", hash = "sha256:af58f737f8d0c0c37b9f955a6d39000b9ff97813afcbeef56af5e37cf743b45a"}, + {file = "typer-0.15.2-py3-none-any.whl", hash = "sha256:46a499c6107d645a9c13f7ee46c5d5096cae6f5fc57dd11eccbbb9ae3e44ddfc"}, + {file = "typer-0.15.2.tar.gz", hash = "sha256:ab2fab47533a813c49fe1f16b1a370fd5819099c00b119e0633df65f22144ba5"}, ] [package.dependencies] @@ -977,24 +1034,41 @@ typing-extensions = ">=3.7.4.3" [[package]] name = "typing-extensions" -version = "4.12.2" +version = "4.13.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, - {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, + {file = "typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c"}, + {file = "typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef"}, ] +[[package]] +name = "typing-inspection" +version = "0.4.0" +description = "Runtime typing introspection tools" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "typing_inspection-0.4.0-py3-none-any.whl", hash = "sha256:50e72559fcd2a6367a19f7a7e610e6afcb9fac940c650290eed893d61386832f"}, + {file = "typing_inspection-0.4.0.tar.gz", hash = "sha256:9765c87de36671694a67904bf2c96e395be9c6439bb6c87b5142569dcdd65122"}, +] + +[package.dependencies] +typing-extensions = ">=4.12.0" + [[package]] name = "uvicorn" -version = "0.32.1" +version = "0.34.1" description = "The lightning-fast ASGI server." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "uvicorn-0.32.1-py3-none-any.whl", hash = "sha256:82ad92fd58da0d12af7482ecdb5f2470a04c9c9a53ced65b9bbb4a205377602e"}, - {file = "uvicorn-0.32.1.tar.gz", hash = "sha256:ee9519c246a72b1c084cea8d3b44ed6026e78a4a309cbedae9c37e4cb9fbb175"}, + {file = "uvicorn-0.34.1-py3-none-any.whl", hash = "sha256:984c3a8c7ca18ebaad15995ee7401179212c59521e67bfc390c07fa2b8d2e065"}, + {file = "uvicorn-0.34.1.tar.gz", hash = "sha256:af981725fc4b7ffc5cb3b0e9eda6258a90c4b52cb2a83ce567ae0a7ae1757afc"}, ] [package.dependencies] @@ -1005,12 +1079,12 @@ httptools = {version = ">=0.6.3", optional = true, markers = "extra == \"standar python-dotenv = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} pyyaml = {version = ">=5.1", optional = true, markers = "extra == \"standard\""} typing-extensions = {version = ">=4.0", markers = "python_version < \"3.11\""} -uvloop = {version = ">=0.14.0,<0.15.0 || >0.15.0,<0.15.1 || >0.15.1", optional = true, markers = "(sys_platform != \"win32\" and sys_platform != \"cygwin\") and platform_python_implementation != \"PyPy\" and extra == \"standard\""} +uvloop = {version = ">=0.14.0,<0.15.0 || >0.15.0,<0.15.1 || >0.15.1", optional = true, markers = "sys_platform != \"win32\" and sys_platform != \"cygwin\" and platform_python_implementation != \"PyPy\" and extra == \"standard\""} watchfiles = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} websockets = {version = ">=10.4", optional = true, markers = "extra == \"standard\""} [package.extras] -standard = ["colorama (>=0.4)", "httptools (>=0.6.3)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"] +standard = ["colorama (>=0.4) ; sys_platform == \"win32\"", "httptools (>=0.6.3)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1) ; sys_platform != \"win32\" and sys_platform != \"cygwin\" and platform_python_implementation != \"PyPy\"", "watchfiles (>=0.13)", "websockets (>=10.4)"] [[package]] name = "uvloop" @@ -1018,6 +1092,8 @@ version = "0.21.0" description = "Fast implementation of asyncio event loop on top of libuv" optional = false python-versions = ">=3.8.0" +groups = ["main"] +markers = "sys_platform != \"win32\" and sys_platform != \"cygwin\" and platform_python_implementation != \"PyPy\"" files = [ {file = "uvloop-0.21.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ec7e6b09a6fdded42403182ab6b832b71f4edaf7f37a9a0e371a01db5f0cb45f"}, {file = "uvloop-0.21.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:196274f2adb9689a289ad7d65700d37df0c0930fd8e4e743fa4834e850d7719d"}, @@ -1065,82 +1141,83 @@ test = ["aiohttp (>=3.10.5)", "flake8 (>=5.0,<6.0)", "mypy (>=0.800)", "psutil", [[package]] name = "watchfiles" -version = "1.0.0" +version = "1.0.5" description = "Simple, modern and high performance file watching and code reload in python." optional = false python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "watchfiles-1.0.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:1d19df28f99d6a81730658fbeb3ade8565ff687f95acb59665f11502b441be5f"}, - {file = "watchfiles-1.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:28babb38cf2da8e170b706c4b84aa7e4528a6fa4f3ee55d7a0866456a1662041"}, - {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12ab123135b2f42517f04e720526d41448667ae8249e651385afb5cda31fedc0"}, - {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:13a4f9ee0cd25682679eea5c14fc629e2eaa79aab74d963bc4e21f43b8ea1877"}, - {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e1d9284cc84de7855fcf83472e51d32daf6f6cecd094160192628bc3fee1b78"}, - {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ee5edc939f53466b329bbf2e58333a5461e6c7b50c980fa6117439e2c18b42d"}, - {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5dccfc70480087567720e4e36ec381bba1ed68d7e5f368fe40c93b3b1eba0105"}, - {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c83a6d33a9eda0af6a7470240d1af487807adc269704fe76a4972dd982d16236"}, - {file = "watchfiles-1.0.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:905f69aad276639eff3893759a07d44ea99560e67a1cf46ff389cd62f88872a2"}, - {file = "watchfiles-1.0.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:09551237645d6bff3972592f2aa5424df9290e7a2e15d63c5f47c48cde585935"}, - {file = "watchfiles-1.0.0-cp310-none-win32.whl", hash = "sha256:d2b39aa8edd9e5f56f99a2a2740a251dc58515398e9ed5a4b3e5ff2827060755"}, - {file = "watchfiles-1.0.0-cp310-none-win_amd64.whl", hash = "sha256:2de52b499e1ab037f1a87cb8ebcb04a819bf087b1015a4cf6dcf8af3c2a2613e"}, - {file = "watchfiles-1.0.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:fbd0ab7a9943bbddb87cbc2bf2f09317e74c77dc55b1f5657f81d04666c25269"}, - {file = "watchfiles-1.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:774ef36b16b7198669ce655d4f75b4c3d370e7f1cbdfb997fb10ee98717e2058"}, - {file = "watchfiles-1.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b4fb98100267e6a5ebaff6aaa5d20aea20240584647470be39fe4823012ac96"}, - {file = "watchfiles-1.0.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0fc3bf0effa2d8075b70badfdd7fb839d7aa9cea650d17886982840d71fdeabf"}, - {file = "watchfiles-1.0.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:648e2b6db53eca6ef31245805cd528a16f56fa4cc15aeec97795eaf713c11435"}, - {file = "watchfiles-1.0.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fa13d604fcb9417ae5f2e3de676e66aa97427d888e83662ad205bed35a313176"}, - {file = "watchfiles-1.0.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:936f362e7ff28311b16f0b97ec51e8f2cc451763a3264640c6ed40fb252d1ee4"}, - {file = "watchfiles-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:245fab124b9faf58430da547512d91734858df13f2ddd48ecfa5e493455ffccb"}, - {file = "watchfiles-1.0.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4ff9c7e84e8b644a8f985c42bcc81457240316f900fc72769aaedec9d088055a"}, - {file = "watchfiles-1.0.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9c9a8d8fd97defe935ef8dd53d562e68942ad65067cd1c54d6ed8a088b1d931d"}, - {file = "watchfiles-1.0.0-cp311-none-win32.whl", hash = "sha256:a0abf173975eb9dd17bb14c191ee79999e650997cc644562f91df06060610e62"}, - {file = "watchfiles-1.0.0-cp311-none-win_amd64.whl", hash = "sha256:2a825ba4b32c214e3855b536eb1a1f7b006511d8e64b8215aac06eb680642d84"}, - {file = "watchfiles-1.0.0-cp311-none-win_arm64.whl", hash = "sha256:a5a7a06cfc65e34fd0a765a7623c5ba14707a0870703888e51d3d67107589817"}, - {file = "watchfiles-1.0.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:28fb64b5843d94e2c2483f7b024a1280662a44409bedee8f2f51439767e2d107"}, - {file = "watchfiles-1.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e3750434c83b61abb3163b49c64b04180b85b4dabb29a294513faec57f2ffdb7"}, - {file = "watchfiles-1.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bedf84835069f51c7b026b3ca04e2e747ea8ed0a77c72006172c72d28c9f69fc"}, - {file = "watchfiles-1.0.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:90004553be36427c3d06ec75b804233f8f816374165d5225b93abd94ba6e7234"}, - {file = "watchfiles-1.0.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b46e15c34d4e401e976d6949ad3a74d244600d5c4b88c827a3fdf18691a46359"}, - {file = "watchfiles-1.0.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:487d15927f1b0bd24e7df921913399bb1ab94424c386bea8b267754d698f8f0e"}, - {file = "watchfiles-1.0.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1ff236d7a3f4b0a42f699a22fc374ba526bc55048a70cbb299661158e1bb5e1f"}, - {file = "watchfiles-1.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c01446626574561756067f00b37e6b09c8622b0fc1e9fdbc7cbcea328d4e514"}, - {file = "watchfiles-1.0.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b551c465a59596f3d08170bd7e1c532c7260dd90ed8135778038e13c5d48aa81"}, - {file = "watchfiles-1.0.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e1ed613ee107269f66c2df631ec0fc8efddacface85314d392a4131abe299f00"}, - {file = "watchfiles-1.0.0-cp312-none-win32.whl", hash = "sha256:5f75cd42e7e2254117cf37ff0e68c5b3f36c14543756b2da621408349bd9ca7c"}, - {file = "watchfiles-1.0.0-cp312-none-win_amd64.whl", hash = "sha256:cf517701a4a872417f4e02a136e929537743461f9ec6cdb8184d9a04f4843545"}, - {file = "watchfiles-1.0.0-cp312-none-win_arm64.whl", hash = "sha256:8a2127cd68950787ee36753e6d401c8ea368f73beaeb8e54df5516a06d1ecd82"}, - {file = "watchfiles-1.0.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:95de85c254f7fe8cbdf104731f7f87f7f73ae229493bebca3722583160e6b152"}, - {file = "watchfiles-1.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:533a7cbfe700e09780bb31c06189e39c65f06c7f447326fee707fd02f9a6e945"}, - {file = "watchfiles-1.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a2218e78e2c6c07b1634a550095ac2a429026b2d5cbcd49a594f893f2bb8c936"}, - {file = "watchfiles-1.0.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9122b8fdadc5b341315d255ab51d04893f417df4e6c1743b0aac8bf34e96e025"}, - {file = "watchfiles-1.0.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9272fdbc0e9870dac3b505bce1466d386b4d8d6d2bacf405e603108d50446940"}, - {file = "watchfiles-1.0.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4a3b33c3aefe9067ebd87846806cd5fc0b017ab70d628aaff077ab9abf4d06b3"}, - {file = "watchfiles-1.0.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bc338ce9f8846543d428260fa0f9a716626963148edc937d71055d01d81e1525"}, - {file = "watchfiles-1.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ac778a460ea22d63c7e6fb0bc0f5b16780ff0b128f7f06e57aaec63bd339285"}, - {file = "watchfiles-1.0.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:53ae447f06f8f29f5ab40140f19abdab822387a7c426a369eb42184b021e97eb"}, - {file = "watchfiles-1.0.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:1f73c2147a453315d672c1ad907abe6d40324e34a185b51e15624bc793f93cc6"}, - {file = "watchfiles-1.0.0-cp313-none-win32.whl", hash = "sha256:eba98901a2eab909dbd79681190b9049acc650f6111fde1845484a4450761e98"}, - {file = "watchfiles-1.0.0-cp313-none-win_amd64.whl", hash = "sha256:d562a6114ddafb09c33246c6ace7effa71ca4b6a2324a47f4b09b6445ea78941"}, - {file = "watchfiles-1.0.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:3d94fd83ed54266d789f287472269c0def9120a2022674990bd24ad989ebd7a0"}, - {file = "watchfiles-1.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48051d1c504448b2fcda71c5e6e3610ae45de6a0b8f5a43b961f250be4bdf5a8"}, - {file = "watchfiles-1.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29cf884ad4285d23453c702ed03d689f9c0e865e3c85d20846d800d4787de00f"}, - {file = "watchfiles-1.0.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d3572d4c34c4e9c33d25b3da47d9570d5122f8433b9ac6519dca49c2740d23cd"}, - {file = "watchfiles-1.0.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2c2696611182c85eb0e755b62b456f48debff484b7306b56f05478b843ca8ece"}, - {file = "watchfiles-1.0.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:550109001920a993a4383b57229c717fa73627d2a4e8fcb7ed33c7f1cddb0c85"}, - {file = "watchfiles-1.0.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b555a93c15bd2c71081922be746291d776d47521a00703163e5fbe6d2a402399"}, - {file = "watchfiles-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:947ccba18a38b85c366dafeac8df2f6176342d5992ca240a9d62588b214d731f"}, - {file = "watchfiles-1.0.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ffd98a299b0a74d1b704ef0ed959efb753e656a4e0425c14e46ae4c3cbdd2919"}, - {file = "watchfiles-1.0.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f8c4f3a1210ed099a99e6a710df4ff2f8069411059ffe30fa5f9467ebed1256b"}, - {file = "watchfiles-1.0.0-cp39-none-win32.whl", hash = "sha256:1e176b6b4119b3f369b2b4e003d53a226295ee862c0962e3afd5a1c15680b4e3"}, - {file = "watchfiles-1.0.0-cp39-none-win_amd64.whl", hash = "sha256:2d9c0518fabf4a3f373b0a94bb9e4ea7a1df18dec45e26a4d182aa8918dee855"}, - {file = "watchfiles-1.0.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f159ac795785cde4899e0afa539f4c723fb5dd336ce5605bc909d34edd00b79b"}, - {file = "watchfiles-1.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:c3d258d78341d5d54c0c804a5b7faa66cd30ba50b2756a7161db07ce15363b8d"}, - {file = "watchfiles-1.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bbd0311588c2de7f9ea5cf3922ccacfd0ec0c1922870a2be503cc7df1ca8be7"}, - {file = "watchfiles-1.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9a13ac46b545a7d0d50f7641eefe47d1597e7d1783a5d89e09d080e6dff44b0"}, - {file = "watchfiles-1.0.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b2bca898c1dc073912d3db7fa6926cc08be9575add9e84872de2c99c688bac4e"}, - {file = "watchfiles-1.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:06d828fe2adc4ac8a64b875ca908b892a3603d596d43e18f7948f3fef5fc671c"}, - {file = "watchfiles-1.0.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:074c7618cd6c807dc4eaa0982b4a9d3f8051cd0b72793511848fd64630174b17"}, - {file = "watchfiles-1.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95dc785bc284552d044e561b8f4fe26d01ab5ca40d35852a6572d542adfeb4bc"}, - {file = "watchfiles-1.0.0.tar.gz", hash = "sha256:37566c844c9ce3b5deb964fe1a23378e575e74b114618d211fbda8f59d7b5dab"}, + {file = "watchfiles-1.0.5-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:5c40fe7dd9e5f81e0847b1ea64e1f5dd79dd61afbedb57759df06767ac719b40"}, + {file = "watchfiles-1.0.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8c0db396e6003d99bb2d7232c957b5f0b5634bbd1b24e381a5afcc880f7373fb"}, + {file = "watchfiles-1.0.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b551d4fb482fc57d852b4541f911ba28957d051c8776e79c3b4a51eb5e2a1b11"}, + {file = "watchfiles-1.0.5-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:830aa432ba5c491d52a15b51526c29e4a4b92bf4f92253787f9726fe01519487"}, + {file = "watchfiles-1.0.5-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a16512051a822a416b0d477d5f8c0e67b67c1a20d9acecb0aafa3aa4d6e7d256"}, + {file = "watchfiles-1.0.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bfe0cbc787770e52a96c6fda6726ace75be7f840cb327e1b08d7d54eadc3bc85"}, + {file = "watchfiles-1.0.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d363152c5e16b29d66cbde8fa614f9e313e6f94a8204eaab268db52231fe5358"}, + {file = "watchfiles-1.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ee32c9a9bee4d0b7bd7cbeb53cb185cf0b622ac761efaa2eba84006c3b3a614"}, + {file = "watchfiles-1.0.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:29c7fd632ccaf5517c16a5188e36f6612d6472ccf55382db6c7fe3fcccb7f59f"}, + {file = "watchfiles-1.0.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8e637810586e6fe380c8bc1b3910accd7f1d3a9a7262c8a78d4c8fb3ba6a2b3d"}, + {file = "watchfiles-1.0.5-cp310-cp310-win32.whl", hash = "sha256:cd47d063fbeabd4c6cae1d4bcaa38f0902f8dc5ed168072874ea11d0c7afc1ff"}, + {file = "watchfiles-1.0.5-cp310-cp310-win_amd64.whl", hash = "sha256:86c0df05b47a79d80351cd179893f2f9c1b1cae49d96e8b3290c7f4bd0ca0a92"}, + {file = "watchfiles-1.0.5-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:237f9be419e977a0f8f6b2e7b0475ababe78ff1ab06822df95d914a945eac827"}, + {file = "watchfiles-1.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0da39ff917af8b27a4bdc5a97ac577552a38aac0d260a859c1517ea3dc1a7c4"}, + {file = "watchfiles-1.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cfcb3952350e95603f232a7a15f6c5f86c5375e46f0bd4ae70d43e3e063c13d"}, + {file = "watchfiles-1.0.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:68b2dddba7a4e6151384e252a5632efcaa9bc5d1c4b567f3cb621306b2ca9f63"}, + {file = "watchfiles-1.0.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:95cf944fcfc394c5f9de794ce581914900f82ff1f855326f25ebcf24d5397418"}, + {file = "watchfiles-1.0.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ecf6cd9f83d7c023b1aba15d13f705ca7b7d38675c121f3cc4a6e25bd0857ee9"}, + {file = "watchfiles-1.0.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:852de68acd6212cd6d33edf21e6f9e56e5d98c6add46f48244bd479d97c967c6"}, + {file = "watchfiles-1.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5730f3aa35e646103b53389d5bc77edfbf578ab6dab2e005142b5b80a35ef25"}, + {file = "watchfiles-1.0.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:18b3bd29954bc4abeeb4e9d9cf0b30227f0f206c86657674f544cb032296acd5"}, + {file = "watchfiles-1.0.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ba5552a1b07c8edbf197055bc9d518b8f0d98a1c6a73a293bc0726dce068ed01"}, + {file = "watchfiles-1.0.5-cp311-cp311-win32.whl", hash = "sha256:2f1fefb2e90e89959447bc0420fddd1e76f625784340d64a2f7d5983ef9ad246"}, + {file = "watchfiles-1.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:b6e76ceb1dd18c8e29c73f47d41866972e891fc4cc7ba014f487def72c1cf096"}, + {file = "watchfiles-1.0.5-cp311-cp311-win_arm64.whl", hash = "sha256:266710eb6fddc1f5e51843c70e3bebfb0f5e77cf4f27129278c70554104d19ed"}, + {file = "watchfiles-1.0.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b5eb568c2aa6018e26da9e6c86f3ec3fd958cee7f0311b35c2630fa4217d17f2"}, + {file = "watchfiles-1.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0a04059f4923ce4e856b4b4e5e783a70f49d9663d22a4c3b3298165996d1377f"}, + {file = "watchfiles-1.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e380c89983ce6e6fe2dd1e1921b9952fb4e6da882931abd1824c092ed495dec"}, + {file = "watchfiles-1.0.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fe43139b2c0fdc4a14d4f8d5b5d967f7a2777fd3d38ecf5b1ec669b0d7e43c21"}, + {file = "watchfiles-1.0.5-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee0822ce1b8a14fe5a066f93edd20aada932acfe348bede8aa2149f1a4489512"}, + {file = "watchfiles-1.0.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a0dbcb1c2d8f2ab6e0a81c6699b236932bd264d4cef1ac475858d16c403de74d"}, + {file = "watchfiles-1.0.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a2014a2b18ad3ca53b1f6c23f8cd94a18ce930c1837bd891262c182640eb40a6"}, + {file = "watchfiles-1.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10f6ae86d5cb647bf58f9f655fcf577f713915a5d69057a0371bc257e2553234"}, + {file = "watchfiles-1.0.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1a7bac2bde1d661fb31f4d4e8e539e178774b76db3c2c17c4bb3e960a5de07a2"}, + {file = "watchfiles-1.0.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ab626da2fc1ac277bbf752446470b367f84b50295264d2d313e28dc4405d663"}, + {file = "watchfiles-1.0.5-cp312-cp312-win32.whl", hash = "sha256:9f4571a783914feda92018ef3901dab8caf5b029325b5fe4558c074582815249"}, + {file = "watchfiles-1.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:360a398c3a19672cf93527f7e8d8b60d8275119c5d900f2e184d32483117a705"}, + {file = "watchfiles-1.0.5-cp312-cp312-win_arm64.whl", hash = "sha256:1a2902ede862969077b97523987c38db28abbe09fb19866e711485d9fbf0d417"}, + {file = "watchfiles-1.0.5-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:0b289572c33a0deae62daa57e44a25b99b783e5f7aed81b314232b3d3c81a11d"}, + {file = "watchfiles-1.0.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a056c2f692d65bf1e99c41045e3bdcaea3cb9e6b5a53dcaf60a5f3bd95fc9763"}, + {file = "watchfiles-1.0.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9dca99744991fc9850d18015c4f0438865414e50069670f5f7eee08340d8b40"}, + {file = "watchfiles-1.0.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:894342d61d355446d02cd3988a7326af344143eb33a2fd5d38482a92072d9563"}, + {file = "watchfiles-1.0.5-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ab44e1580924d1ffd7b3938e02716d5ad190441965138b4aa1d1f31ea0877f04"}, + {file = "watchfiles-1.0.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d6f9367b132078b2ceb8d066ff6c93a970a18c3029cea37bfd7b2d3dd2e5db8f"}, + {file = "watchfiles-1.0.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2e55a9b162e06e3f862fb61e399fe9f05d908d019d87bf5b496a04ef18a970a"}, + {file = "watchfiles-1.0.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0125f91f70e0732a9f8ee01e49515c35d38ba48db507a50c5bdcad9503af5827"}, + {file = "watchfiles-1.0.5-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:13bb21f8ba3248386337c9fa51c528868e6c34a707f729ab041c846d52a0c69a"}, + {file = "watchfiles-1.0.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:839ebd0df4a18c5b3c1b890145b5a3f5f64063c2a0d02b13c76d78fe5de34936"}, + {file = "watchfiles-1.0.5-cp313-cp313-win32.whl", hash = "sha256:4a8ec1e4e16e2d5bafc9ba82f7aaecfeec990ca7cd27e84fb6f191804ed2fcfc"}, + {file = "watchfiles-1.0.5-cp313-cp313-win_amd64.whl", hash = "sha256:f436601594f15bf406518af922a89dcaab416568edb6f65c4e5bbbad1ea45c11"}, + {file = "watchfiles-1.0.5-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:2cfb371be97d4db374cba381b9f911dd35bb5f4c58faa7b8b7106c8853e5d225"}, + {file = "watchfiles-1.0.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a3904d88955fda461ea2531fcf6ef73584ca921415d5cfa44457a225f4a42bc1"}, + {file = "watchfiles-1.0.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2b7a21715fb12274a71d335cff6c71fe7f676b293d322722fe708a9ec81d91f5"}, + {file = "watchfiles-1.0.5-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dfd6ae1c385ab481766b3c61c44aca2b3cd775f6f7c0fa93d979ddec853d29d5"}, + {file = "watchfiles-1.0.5-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b659576b950865fdad31fa491d31d37cf78b27113a7671d39f919828587b429b"}, + {file = "watchfiles-1.0.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1909e0a9cd95251b15bff4261de5dd7550885bd172e3536824bf1cf6b121e200"}, + {file = "watchfiles-1.0.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:832ccc221927c860e7286c55c9b6ebcc0265d5e072f49c7f6456c7798d2b39aa"}, + {file = "watchfiles-1.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85fbb6102b3296926d0c62cfc9347f6237fb9400aecd0ba6bbda94cae15f2b3b"}, + {file = "watchfiles-1.0.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:15ac96dd567ad6c71c71f7b2c658cb22b7734901546cd50a475128ab557593ca"}, + {file = "watchfiles-1.0.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4b6227351e11c57ae997d222e13f5b6f1f0700d84b8c52304e8675d33a808382"}, + {file = "watchfiles-1.0.5-cp39-cp39-win32.whl", hash = "sha256:974866e0db748ebf1eccab17862bc0f0303807ed9cda465d1324625b81293a18"}, + {file = "watchfiles-1.0.5-cp39-cp39-win_amd64.whl", hash = "sha256:9848b21ae152fe79c10dd0197304ada8f7b586d3ebc3f27f43c506e5a52a863c"}, + {file = "watchfiles-1.0.5-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f59b870db1f1ae5a9ac28245707d955c8721dd6565e7f411024fa374b5362d1d"}, + {file = "watchfiles-1.0.5-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9475b0093767e1475095f2aeb1d219fb9664081d403d1dff81342df8cd707034"}, + {file = "watchfiles-1.0.5-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc533aa50664ebd6c628b2f30591956519462f5d27f951ed03d6c82b2dfd9965"}, + {file = "watchfiles-1.0.5-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fed1cd825158dcaae36acce7b2db33dcbfd12b30c34317a88b8ed80f0541cc57"}, + {file = "watchfiles-1.0.5-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:554389562c29c2c182e3908b149095051f81d28c2fec79ad6c8997d7d63e0009"}, + {file = "watchfiles-1.0.5-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a74add8d7727e6404d5dc4dcd7fac65d4d82f95928bbee0cf5414c900e86773e"}, + {file = "watchfiles-1.0.5-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb1489f25b051a89fae574505cc26360c8e95e227a9500182a7fe0afcc500ce0"}, + {file = "watchfiles-1.0.5-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0901429650652d3f0da90bad42bdafc1f9143ff3605633c455c999a2d786cac"}, + {file = "watchfiles-1.0.5.tar.gz", hash = "sha256:b7529b5dcc114679d43827d8c35a07c493ad6f083633d573d81c660abc5979e9"}, ] [package.dependencies] @@ -1148,83 +1225,84 @@ anyio = ">=3.0.0" [[package]] name = "websockets" -version = "14.1" +version = "15.0.1" description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "websockets-14.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a0adf84bc2e7c86e8a202537b4fd50e6f7f0e4a6b6bf64d7ccb96c4cd3330b29"}, - {file = "websockets-14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90b5d9dfbb6d07a84ed3e696012610b6da074d97453bd01e0e30744b472c8179"}, - {file = "websockets-14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2177ee3901075167f01c5e335a6685e71b162a54a89a56001f1c3e9e3d2ad250"}, - {file = "websockets-14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f14a96a0034a27f9d47fd9788913924c89612225878f8078bb9d55f859272b0"}, - {file = "websockets-14.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f874ba705deea77bcf64a9da42c1f5fc2466d8f14daf410bc7d4ceae0a9fcb0"}, - {file = "websockets-14.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9607b9a442392e690a57909c362811184ea429585a71061cd5d3c2b98065c199"}, - {file = "websockets-14.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:bea45f19b7ca000380fbd4e02552be86343080120d074b87f25593ce1700ad58"}, - {file = "websockets-14.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:219c8187b3ceeadbf2afcf0f25a4918d02da7b944d703b97d12fb01510869078"}, - {file = "websockets-14.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ad2ab2547761d79926effe63de21479dfaf29834c50f98c4bf5b5480b5838434"}, - {file = "websockets-14.1-cp310-cp310-win32.whl", hash = "sha256:1288369a6a84e81b90da5dbed48610cd7e5d60af62df9851ed1d1d23a9069f10"}, - {file = "websockets-14.1-cp310-cp310-win_amd64.whl", hash = "sha256:e0744623852f1497d825a49a99bfbec9bea4f3f946df6eb9d8a2f0c37a2fec2e"}, - {file = "websockets-14.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:449d77d636f8d9c17952628cc7e3b8faf6e92a17ec581ec0c0256300717e1512"}, - {file = "websockets-14.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a35f704be14768cea9790d921c2c1cc4fc52700410b1c10948511039be824aac"}, - {file = "websockets-14.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b1f3628a0510bd58968c0f60447e7a692933589b791a6b572fcef374053ca280"}, - {file = "websockets-14.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c3deac3748ec73ef24fc7be0b68220d14d47d6647d2f85b2771cb35ea847aa1"}, - {file = "websockets-14.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7048eb4415d46368ef29d32133134c513f507fff7d953c18c91104738a68c3b3"}, - {file = "websockets-14.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6cf0ad281c979306a6a34242b371e90e891bce504509fb6bb5246bbbf31e7b6"}, - {file = "websockets-14.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cc1fc87428c1d18b643479caa7b15db7d544652e5bf610513d4a3478dbe823d0"}, - {file = "websockets-14.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f95ba34d71e2fa0c5d225bde3b3bdb152e957150100e75c86bc7f3964c450d89"}, - {file = "websockets-14.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9481a6de29105d73cf4515f2bef8eb71e17ac184c19d0b9918a3701c6c9c4f23"}, - {file = "websockets-14.1-cp311-cp311-win32.whl", hash = "sha256:368a05465f49c5949e27afd6fbe0a77ce53082185bbb2ac096a3a8afaf4de52e"}, - {file = "websockets-14.1-cp311-cp311-win_amd64.whl", hash = "sha256:6d24fc337fc055c9e83414c94e1ee0dee902a486d19d2a7f0929e49d7d604b09"}, - {file = "websockets-14.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ed907449fe5e021933e46a3e65d651f641975a768d0649fee59f10c2985529ed"}, - {file = "websockets-14.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:87e31011b5c14a33b29f17eb48932e63e1dcd3fa31d72209848652310d3d1f0d"}, - {file = "websockets-14.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bc6ccf7d54c02ae47a48ddf9414c54d48af9c01076a2e1023e3b486b6e72c707"}, - {file = "websockets-14.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9777564c0a72a1d457f0848977a1cbe15cfa75fa2f67ce267441e465717dcf1a"}, - {file = "websockets-14.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a655bde548ca98f55b43711b0ceefd2a88a71af6350b0c168aa77562104f3f45"}, - {file = "websockets-14.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3dfff83ca578cada2d19e665e9c8368e1598d4e787422a460ec70e531dbdd58"}, - {file = "websockets-14.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6a6c9bcf7cdc0fd41cc7b7944447982e8acfd9f0d560ea6d6845428ed0562058"}, - {file = "websockets-14.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4b6caec8576e760f2c7dd878ba817653144d5f369200b6ddf9771d64385b84d4"}, - {file = "websockets-14.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:eb6d38971c800ff02e4a6afd791bbe3b923a9a57ca9aeab7314c21c84bf9ff05"}, - {file = "websockets-14.1-cp312-cp312-win32.whl", hash = "sha256:1d045cbe1358d76b24d5e20e7b1878efe578d9897a25c24e6006eef788c0fdf0"}, - {file = "websockets-14.1-cp312-cp312-win_amd64.whl", hash = "sha256:90f4c7a069c733d95c308380aae314f2cb45bd8a904fb03eb36d1a4983a4993f"}, - {file = "websockets-14.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:3630b670d5057cd9e08b9c4dab6493670e8e762a24c2c94ef312783870736ab9"}, - {file = "websockets-14.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:36ebd71db3b89e1f7b1a5deaa341a654852c3518ea7a8ddfdf69cc66acc2db1b"}, - {file = "websockets-14.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5b918d288958dc3fa1c5a0b9aa3256cb2b2b84c54407f4813c45d52267600cd3"}, - {file = "websockets-14.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00fe5da3f037041da1ee0cf8e308374e236883f9842c7c465aa65098b1c9af59"}, - {file = "websockets-14.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8149a0f5a72ca36720981418eeffeb5c2729ea55fa179091c81a0910a114a5d2"}, - {file = "websockets-14.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77569d19a13015e840b81550922056acabc25e3f52782625bc6843cfa034e1da"}, - {file = "websockets-14.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cf5201a04550136ef870aa60ad3d29d2a59e452a7f96b94193bee6d73b8ad9a9"}, - {file = "websockets-14.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:88cf9163ef674b5be5736a584c999e98daf3aabac6e536e43286eb74c126b9c7"}, - {file = "websockets-14.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:836bef7ae338a072e9d1863502026f01b14027250a4545672673057997d5c05a"}, - {file = "websockets-14.1-cp313-cp313-win32.whl", hash = "sha256:0d4290d559d68288da9f444089fd82490c8d2744309113fc26e2da6e48b65da6"}, - {file = "websockets-14.1-cp313-cp313-win_amd64.whl", hash = "sha256:8621a07991add373c3c5c2cf89e1d277e49dc82ed72c75e3afc74bd0acc446f0"}, - {file = "websockets-14.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:01bb2d4f0a6d04538d3c5dfd27c0643269656c28045a53439cbf1c004f90897a"}, - {file = "websockets-14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:414ffe86f4d6f434a8c3b7913655a1a5383b617f9bf38720e7c0799fac3ab1c6"}, - {file = "websockets-14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8fda642151d5affdee8a430bd85496f2e2517be3a2b9d2484d633d5712b15c56"}, - {file = "websockets-14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd7c11968bc3860d5c78577f0dbc535257ccec41750675d58d8dc66aa47fe52c"}, - {file = "websockets-14.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a032855dc7db987dff813583d04f4950d14326665d7e714d584560b140ae6b8b"}, - {file = "websockets-14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b7e7ea2f782408c32d86b87a0d2c1fd8871b0399dd762364c731d86c86069a78"}, - {file = "websockets-14.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:39450e6215f7d9f6f7bc2a6da21d79374729f5d052333da4d5825af8a97e6735"}, - {file = "websockets-14.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ceada5be22fa5a5a4cdeec74e761c2ee7db287208f54c718f2df4b7e200b8d4a"}, - {file = "websockets-14.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:3fc753451d471cff90b8f467a1fc0ae64031cf2d81b7b34e1811b7e2691bc4bc"}, - {file = "websockets-14.1-cp39-cp39-win32.whl", hash = "sha256:14839f54786987ccd9d03ed7f334baec0f02272e7ec4f6e9d427ff584aeea8b4"}, - {file = "websockets-14.1-cp39-cp39-win_amd64.whl", hash = "sha256:d9fd19ecc3a4d5ae82ddbfb30962cf6d874ff943e56e0c81f5169be2fda62979"}, - {file = "websockets-14.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e5dc25a9dbd1a7f61eca4b7cb04e74ae4b963d658f9e4f9aad9cd00b688692c8"}, - {file = "websockets-14.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:04a97aca96ca2acedf0d1f332c861c5a4486fdcba7bcef35873820f940c4231e"}, - {file = "websockets-14.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df174ece723b228d3e8734a6f2a6febbd413ddec39b3dc592f5a4aa0aff28098"}, - {file = "websockets-14.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:034feb9f4286476f273b9a245fb15f02c34d9586a5bc936aff108c3ba1b21beb"}, - {file = "websockets-14.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:660c308dabd2b380807ab64b62985eaccf923a78ebc572bd485375b9ca2b7dc7"}, - {file = "websockets-14.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5a42d3ecbb2db5080fc578314439b1d79eef71d323dc661aa616fb492436af5d"}, - {file = "websockets-14.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:ddaa4a390af911da6f680be8be4ff5aaf31c4c834c1a9147bc21cbcbca2d4370"}, - {file = "websockets-14.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a4c805c6034206143fbabd2d259ec5e757f8b29d0a2f0bf3d2fe5d1f60147a4a"}, - {file = "websockets-14.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:205f672a6c2c671a86d33f6d47c9b35781a998728d2c7c2a3e1cf3333fcb62b7"}, - {file = "websockets-14.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ef440054124728cc49b01c33469de06755e5a7a4e83ef61934ad95fc327fbb0"}, - {file = "websockets-14.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7591d6f440af7f73c4bd9404f3772bfee064e639d2b6cc8c94076e71b2471c1"}, - {file = "websockets-14.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:25225cc79cfebc95ba1d24cd3ab86aaa35bcd315d12fa4358939bd55e9bd74a5"}, - {file = "websockets-14.1-py3-none-any.whl", hash = "sha256:4d4fc827a20abe6d544a119896f6b78ee13fe81cbfef416f3f2ddf09a03f0e2e"}, - {file = "websockets-14.1.tar.gz", hash = "sha256:398b10c77d471c0aab20a845e7a60076b6390bfdaac7a6d2edb0d2c59d75e8d8"}, + {file = "websockets-15.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d63efaa0cd96cf0c5fe4d581521d9fa87744540d4bc999ae6e08595a1014b45b"}, + {file = "websockets-15.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ac60e3b188ec7574cb761b08d50fcedf9d77f1530352db4eef1707fe9dee7205"}, + {file = "websockets-15.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5756779642579d902eed757b21b0164cd6fe338506a8083eb58af5c372e39d9a"}, + {file = "websockets-15.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fdfe3e2a29e4db3659dbd5bbf04560cea53dd9610273917799f1cde46aa725e"}, + {file = "websockets-15.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c2529b320eb9e35af0fa3016c187dffb84a3ecc572bcee7c3ce302bfeba52bf"}, + {file = "websockets-15.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac1e5c9054fe23226fb11e05a6e630837f074174c4c2f0fe442996112a6de4fb"}, + {file = "websockets-15.0.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5df592cd503496351d6dc14f7cdad49f268d8e618f80dce0cd5a36b93c3fc08d"}, + {file = "websockets-15.0.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0a34631031a8f05657e8e90903e656959234f3a04552259458aac0b0f9ae6fd9"}, + {file = "websockets-15.0.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3d00075aa65772e7ce9e990cab3ff1de702aa09be3940d1dc88d5abf1ab8a09c"}, + {file = "websockets-15.0.1-cp310-cp310-win32.whl", hash = "sha256:1234d4ef35db82f5446dca8e35a7da7964d02c127b095e172e54397fb6a6c256"}, + {file = "websockets-15.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:39c1fec2c11dc8d89bba6b2bf1556af381611a173ac2b511cf7231622058af41"}, + {file = "websockets-15.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:823c248b690b2fd9303ba00c4f66cd5e2d8c3ba4aa968b2779be9532a4dad431"}, + {file = "websockets-15.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678999709e68425ae2593acf2e3ebcbcf2e69885a5ee78f9eb80e6e371f1bf57"}, + {file = "websockets-15.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d50fd1ee42388dcfb2b3676132c78116490976f1300da28eb629272d5d93e905"}, + {file = "websockets-15.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d99e5546bf73dbad5bf3547174cd6cb8ba7273062a23808ffea025ecb1cf8562"}, + {file = "websockets-15.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66dd88c918e3287efc22409d426c8f729688d89a0c587c88971a0faa2c2f3792"}, + {file = "websockets-15.0.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8dd8327c795b3e3f219760fa603dcae1dcc148172290a8ab15158cf85a953413"}, + {file = "websockets-15.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8fdc51055e6ff4adeb88d58a11042ec9a5eae317a0a53d12c062c8a8865909e8"}, + {file = "websockets-15.0.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:693f0192126df6c2327cce3baa7c06f2a117575e32ab2308f7f8216c29d9e2e3"}, + {file = "websockets-15.0.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:54479983bd5fb469c38f2f5c7e3a24f9a4e70594cd68cd1fa6b9340dadaff7cf"}, + {file = "websockets-15.0.1-cp311-cp311-win32.whl", hash = "sha256:16b6c1b3e57799b9d38427dda63edcbe4926352c47cf88588c0be4ace18dac85"}, + {file = "websockets-15.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:27ccee0071a0e75d22cb35849b1db43f2ecd3e161041ac1ee9d2352ddf72f065"}, + {file = "websockets-15.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3e90baa811a5d73f3ca0bcbf32064d663ed81318ab225ee4f427ad4e26e5aff3"}, + {file = "websockets-15.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:592f1a9fe869c778694f0aa806ba0374e97648ab57936f092fd9d87f8bc03665"}, + {file = "websockets-15.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0701bc3cfcb9164d04a14b149fd74be7347a530ad3bbf15ab2c678a2cd3dd9a2"}, + {file = "websockets-15.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8b56bdcdb4505c8078cb6c7157d9811a85790f2f2b3632c7d1462ab5783d215"}, + {file = "websockets-15.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0af68c55afbd5f07986df82831c7bff04846928ea8d1fd7f30052638788bc9b5"}, + {file = "websockets-15.0.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64dee438fed052b52e4f98f76c5790513235efaa1ef7f3f2192c392cd7c91b65"}, + {file = "websockets-15.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d5f6b181bb38171a8ad1d6aa58a67a6aa9d4b38d0f8c5f496b9e42561dfc62fe"}, + {file = "websockets-15.0.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5d54b09eba2bada6011aea5375542a157637b91029687eb4fdb2dab11059c1b4"}, + {file = "websockets-15.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3be571a8b5afed347da347bfcf27ba12b069d9d7f42cb8c7028b5e98bbb12597"}, + {file = "websockets-15.0.1-cp312-cp312-win32.whl", hash = "sha256:c338ffa0520bdb12fbc527265235639fb76e7bc7faafbb93f6ba80d9c06578a9"}, + {file = "websockets-15.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:fcd5cf9e305d7b8338754470cf69cf81f420459dbae8a3b40cee57417f4614a7"}, + {file = "websockets-15.0.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ee443ef070bb3b6ed74514f5efaa37a252af57c90eb33b956d35c8e9c10a1931"}, + {file = "websockets-15.0.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5a939de6b7b4e18ca683218320fc67ea886038265fd1ed30173f5ce3f8e85675"}, + {file = "websockets-15.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:746ee8dba912cd6fc889a8147168991d50ed70447bf18bcda7039f7d2e3d9151"}, + {file = "websockets-15.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:595b6c3969023ecf9041b2936ac3827e4623bfa3ccf007575f04c5a6aa318c22"}, + {file = "websockets-15.0.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c714d2fc58b5ca3e285461a4cc0c9a66bd0e24c5da9911e30158286c9b5be7f"}, + {file = "websockets-15.0.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f3c1e2ab208db911594ae5b4f79addeb3501604a165019dd221c0bdcabe4db8"}, + {file = "websockets-15.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:229cf1d3ca6c1804400b0a9790dc66528e08a6a1feec0d5040e8b9eb14422375"}, + {file = "websockets-15.0.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:756c56e867a90fb00177d530dca4b097dd753cde348448a1012ed6c5131f8b7d"}, + {file = "websockets-15.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:558d023b3df0bffe50a04e710bc87742de35060580a293c2a984299ed83bc4e4"}, + {file = "websockets-15.0.1-cp313-cp313-win32.whl", hash = "sha256:ba9e56e8ceeeedb2e080147ba85ffcd5cd0711b89576b83784d8605a7df455fa"}, + {file = "websockets-15.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:e09473f095a819042ecb2ab9465aee615bd9c2028e4ef7d933600a8401c79561"}, + {file = "websockets-15.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5f4c04ead5aed67c8a1a20491d54cdfba5884507a48dd798ecaf13c74c4489f5"}, + {file = "websockets-15.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:abdc0c6c8c648b4805c5eacd131910d2a7f6455dfd3becab248ef108e89ab16a"}, + {file = "websockets-15.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a625e06551975f4b7ea7102bc43895b90742746797e2e14b70ed61c43a90f09b"}, + {file = "websockets-15.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d591f8de75824cbb7acad4e05d2d710484f15f29d4a915092675ad3456f11770"}, + {file = "websockets-15.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:47819cea040f31d670cc8d324bb6435c6f133b8c7a19ec3d61634e62f8d8f9eb"}, + {file = "websockets-15.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac017dd64572e5c3bd01939121e4d16cf30e5d7e110a119399cf3133b63ad054"}, + {file = "websockets-15.0.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:4a9fac8e469d04ce6c25bb2610dc535235bd4aa14996b4e6dbebf5e007eba5ee"}, + {file = "websockets-15.0.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363c6f671b761efcb30608d24925a382497c12c506b51661883c3e22337265ed"}, + {file = "websockets-15.0.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2034693ad3097d5355bfdacfffcbd3ef5694f9718ab7f29c29689a9eae841880"}, + {file = "websockets-15.0.1-cp39-cp39-win32.whl", hash = "sha256:3b1ac0d3e594bf121308112697cf4b32be538fb1444468fb0a6ae4feebc83411"}, + {file = "websockets-15.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:b7643a03db5c95c799b89b31c036d5f27eeb4d259c798e878d6937d71832b1e4"}, + {file = "websockets-15.0.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0c9e74d766f2818bb95f84c25be4dea09841ac0f734d1966f415e4edfc4ef1c3"}, + {file = "websockets-15.0.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1009ee0c7739c08a0cd59de430d6de452a55e42d6b522de7aa15e6f67db0b8e1"}, + {file = "websockets-15.0.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76d1f20b1c7a2fa82367e04982e708723ba0e7b8d43aa643d3dcd404d74f1475"}, + {file = "websockets-15.0.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f29d80eb9a9263b8d109135351caf568cc3f80b9928bccde535c235de55c22d9"}, + {file = "websockets-15.0.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b359ed09954d7c18bbc1680f380c7301f92c60bf924171629c5db97febb12f04"}, + {file = "websockets-15.0.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:cad21560da69f4ce7658ca2cb83138fb4cf695a2ba3e475e0559e05991aa8122"}, + {file = "websockets-15.0.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7f493881579c90fc262d9cdbaa05a6b54b3811c2f300766748db79f098db9940"}, + {file = "websockets-15.0.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:47b099e1f4fbc95b701b6e85768e1fcdaf1630f3cbe4765fa216596f12310e2e"}, + {file = "websockets-15.0.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67f2b6de947f8c757db2db9c71527933ad0019737ec374a8a6be9a956786aaf9"}, + {file = "websockets-15.0.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d08eb4c2b7d6c41da6ca0600c077e93f5adcfd979cd777d747e9ee624556da4b"}, + {file = "websockets-15.0.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b826973a4a2ae47ba357e4e82fa44a463b8f168e1ca775ac64521442b19e87f"}, + {file = "websockets-15.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:21c1fa28a6a7e3cbdc171c694398b6df4744613ce9b36b1a498e816787e28123"}, + {file = "websockets-15.0.1-py3-none-any.whl", hash = "sha256:f7a866fbc1e97b5c617ee4116daaa09b722101d4a3c170c787450ba409f9736f"}, + {file = "websockets-15.0.1.tar.gz", hash = "sha256:82544de02076bafba038ce055ee6412d68da13ab47f0c60cab827346de828dee"}, ] [metadata] -lock-version = "2.0" +lock-version = "2.1" python-versions = "^3.10" -content-hash = "7a0adfbf51a29958943a9badf5d29dc3e8839cf106908d2b3175d9b3b93ce577" +content-hash = "ac304d234e541fc390cbaae52f2bc2670d4702ae8a879c9d8fb6ff697bc8178d" diff --git a/examples/fastapi_sqlalchemy/pyproject.toml b/examples/fastapi_sqlalchemy/pyproject.toml index f17216a..5999673 100644 --- a/examples/fastapi_sqlalchemy/pyproject.toml +++ b/examples/fastapi_sqlalchemy/pyproject.toml @@ -10,8 +10,8 @@ package-mode = false [tool.poetry.dependencies] python = "^3.10" -fastapi = {"version" = "^0.112.0", extras = ["standard"]} -fastadmin = {"version" = "^0.2.15", extras = ["fastapi", "sqlalchemy"]} +fastapi = {"version" = "^0.112.4", extras = ["standard"]} +fastadmin = {"version" = "^0.2.19", extras = ["fastapi", "sqlalchemy"]} aiosqlite = "^0.20.0" [build-system] diff --git a/examples/fastapi_tortoiseorm/poetry.lock b/examples/fastapi_tortoiseorm/poetry.lock index 0dc3b44..a6c31cb 100644 --- a/examples/fastapi_tortoiseorm/poetry.lock +++ b/examples/fastapi_tortoiseorm/poetry.lock @@ -1,22 +1,23 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.1.2 and should not be changed by hand. [[package]] name = "aiosqlite" -version = "0.20.0" +version = "0.21.0" description = "asyncio bridge to the standard sqlite3 module" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "aiosqlite-0.20.0-py3-none-any.whl", hash = "sha256:36a1deaca0cac40ebe32aac9977a6e2bbc7f5189f23f4a54d5908986729e5bd6"}, - {file = "aiosqlite-0.20.0.tar.gz", hash = "sha256:6d35c8c256637f4672f843c31021464090805bf925385ac39473fb16eaaca3d7"}, + {file = "aiosqlite-0.21.0-py3-none-any.whl", hash = "sha256:2549cf4057f95f53dcba16f2b64e8e2791d7e1adedb13197dd8ed77bb226d7d0"}, + {file = "aiosqlite-0.21.0.tar.gz", hash = "sha256:131bb8056daa3bc875608c631c678cda73922a2d4ba8aec373b19f18c17e7aa3"}, ] [package.dependencies] typing_extensions = ">=4.0" [package.extras] -dev = ["attribution (==1.7.0)", "black (==24.2.0)", "coverage[toml] (==7.4.1)", "flake8 (==7.0.0)", "flake8-bugbear (==24.2.6)", "flit (==3.9.0)", "mypy (==1.8.0)", "ufmt (==2.3.0)", "usort (==1.0.8.post1)"] -docs = ["sphinx (==7.2.6)", "sphinx-mdinclude (==0.5.3)"] +dev = ["attribution (==1.7.1)", "black (==24.3.0)", "build (>=1.2)", "coverage[toml] (==7.6.10)", "flake8 (==7.0.0)", "flake8-bugbear (==24.12.12)", "flit (==3.10.1)", "mypy (==1.14.1)", "ufmt (==2.5.1)", "usort (==1.0.8.post1)"] +docs = ["sphinx (==8.1.3)", "sphinx-mdinclude (==0.6.1)"] [[package]] name = "annotated-types" @@ -24,6 +25,7 @@ version = "0.7.0" description = "Reusable constraint types to use with typing.Annotated" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, @@ -31,24 +33,25 @@ files = [ [[package]] name = "anyio" -version = "4.6.2.post1" +version = "4.9.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "anyio-4.6.2.post1-py3-none-any.whl", hash = "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d"}, - {file = "anyio-4.6.2.post1.tar.gz", hash = "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c"}, + {file = "anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c"}, + {file = "anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028"}, ] [package.dependencies] exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} idna = ">=2.8" sniffio = ">=1.1" -typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} +typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""} [package.extras] -doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"] +doc = ["Sphinx (>=8.2,<9.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"] +test = ["anyio[trio]", "blockbuster (>=1.5.23)", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1) ; python_version >= \"3.10\"", "uvloop (>=0.21) ; platform_python_implementation == \"CPython\" and platform_system != \"Windows\" and python_version < \"3.14\""] trio = ["trio (>=0.26.1)"] [[package]] @@ -57,6 +60,7 @@ version = "3.8.1" description = "ASGI specs, helper code, and adapters" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "asgiref-3.8.1-py3-none-any.whl", hash = "sha256:3e1e3ecc849832fe52ccf2cb6686b7a55f82bb1d6aee72a58826471390335e47"}, {file = "asgiref-3.8.1.tar.gz", hash = "sha256:c343bd80a0bec947a9860adb4c432ffa7db769836c64238fc34bdc3fec84d590"}, @@ -70,24 +74,26 @@ tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"] [[package]] name = "certifi" -version = "2024.8.30" +version = "2025.1.31" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" +groups = ["main"] files = [ - {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, - {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, + {file = "certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe"}, + {file = "certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651"}, ] [[package]] name = "click" -version = "8.1.7" +version = "8.1.8" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" +groups = ["main"] 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.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, + {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"}, ] [package.dependencies] @@ -99,6 +105,8 @@ version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["main"] +markers = "platform_system == \"Windows\" or sys_platform == \"win32\"" files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, @@ -110,6 +118,7 @@ version = "2.7.0" description = "DNS toolkit" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ {file = "dnspython-2.7.0-py3-none-any.whl", hash = "sha256:b4c34b7d10b51bcc3a5071e7b8dee77939f1e878477eeecc965e9835f63c6c86"}, {file = "dnspython-2.7.0.tar.gz", hash = "sha256:ce9c432eda0dc91cf618a5cedf1a4e142651196bbcd2c80e89ed5a907e5cfaf1"}, @@ -130,6 +139,7 @@ version = "2.2.0" description = "A robust email address syntax and deliverability validation library." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "email_validator-2.2.0-py3-none-any.whl", hash = "sha256:561977c2d73ce3611850a06fa56b414621e0c8faa9d66f2611407d87465da631"}, {file = "email_validator-2.2.0.tar.gz", hash = "sha256:cb690f344c617a714f22e66ae771445a1ceb46821152df8e165c5f9a364582b7"}, @@ -145,6 +155,8 @@ version = "1.2.2" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" +groups = ["main"] +markers = "python_version == \"3.10\"" files = [ {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, @@ -155,13 +167,14 @@ test = ["pytest (>=6)"] [[package]] name = "fastadmin" -version = "0.2.15" +version = "0.2.19" description = "FastAdmin is an easy-to-use Admin Dashboard App for FastAPI/Flask/Django inspired by Django Admin." optional = false python-versions = "<4.0,>=3.10" +groups = ["main"] files = [ - {file = "fastadmin-0.2.15-py3-none-any.whl", hash = "sha256:4a4ea7f0bc981b3c92422c84d0af9c435c936faac0d37d415a7373cd738cbcf3"}, - {file = "fastadmin-0.2.15.tar.gz", hash = "sha256:92e32a34ae9ce3268657c0383ee1f6489009055c9e67e780d269ebb8199a00de"}, + {file = "fastadmin-0.2.19-py3-none-any.whl", hash = "sha256:49192d74aa94068625b726f5843bfb49697303ec2255f526ce896baf074c7f1e"}, + {file = "fastadmin-0.2.19.tar.gz", hash = "sha256:20a3122967a2a454baef1db760af467e20802293f5b669eeef0a8c5fcb3a03c3"}, ] [package.dependencies] @@ -184,6 +197,7 @@ version = "0.112.4" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "fastapi-0.112.4-py3-none-any.whl", hash = "sha256:6d4f9c3301825d4620665cace8e2bc34e303f61c05a5382d1d61a048ea7f2f37"}, {file = "fastapi-0.112.4.tar.gz", hash = "sha256:b1f72e1f72afe7902ccd639ba320abb5d57a309804f45c10ab0ce3693cadeb33"}, @@ -206,16 +220,18 @@ standard = ["email-validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.5)", "htt [[package]] name = "fastapi-cli" -version = "0.0.5" +version = "0.0.7" description = "Run and manage FastAPI apps from the command line with FastAPI CLI. 🚀" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "fastapi_cli-0.0.5-py3-none-any.whl", hash = "sha256:e94d847524648c748a5350673546bbf9bcaeb086b33c24f2e82e021436866a46"}, - {file = "fastapi_cli-0.0.5.tar.gz", hash = "sha256:d30e1239c6f46fcb95e606f02cdda59a1e2fa778a54b64686b3ff27f6211ff9f"}, + {file = "fastapi_cli-0.0.7-py3-none-any.whl", hash = "sha256:d549368ff584b2804336c61f192d86ddea080c11255f375959627911944804f4"}, + {file = "fastapi_cli-0.0.7.tar.gz", hash = "sha256:02b3b65956f526412515907a0793c9094abd4bfb5457b389f645b0ea6ba3605e"}, ] [package.dependencies] +rich-toolkit = ">=0.11.1" typer = ">=0.12.3" uvicorn = {version = ">=0.15.0", extras = ["standard"]} @@ -228,6 +244,7 @@ version = "0.14.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, @@ -235,13 +252,14 @@ files = [ [[package]] name = "httpcore" -version = "1.0.7" +version = "1.0.8" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd"}, - {file = "httpcore-1.0.7.tar.gz", hash = "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c"}, + {file = "httpcore-1.0.8-py3-none-any.whl", hash = "sha256:5254cf149bcb5f75e9d1b2b9f729ea4a4b883d1ad7379fc632b727cec23674be"}, + {file = "httpcore-1.0.8.tar.gz", hash = "sha256:86e94505ed24ea06514883fd44d2bc02d90e77e7979c8eb71b90f41d364a1bad"}, ] [package.dependencies] @@ -260,6 +278,7 @@ version = "0.6.4" description = "A collection of framework independent HTTP protocol utils." optional = false python-versions = ">=3.8.0" +groups = ["main"] files = [ {file = "httptools-0.6.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3c73ce323711a6ffb0d247dcd5a550b8babf0f757e86a52558fe5b86d6fefcc0"}, {file = "httptools-0.6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:345c288418f0944a6fe67be8e6afa9262b18c7626c3ef3c28adc5eabc06a68da"}, @@ -311,13 +330,14 @@ test = ["Cython (>=0.29.24)"] [[package]] name = "httpx" -version = "0.28.0" +version = "0.28.1" description = "The next generation HTTP client." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "httpx-0.28.0-py3-none-any.whl", hash = "sha256:dc0b419a0cfeb6e8b34e85167c0da2671206f5095f1baa9663d23bcfd6b535fc"}, - {file = "httpx-0.28.0.tar.gz", hash = "sha256:0858d3bab51ba7e386637f22a61d8ccddaeec5f3fe4209da3a6168dbb91573e0"}, + {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"}, + {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"}, ] [package.dependencies] @@ -327,7 +347,7 @@ httpcore = "==1.*" idna = "*" [package.extras] -brotli = ["brotli", "brotlicffi"] +brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi ; platform_python_implementation != \"CPython\""] cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] @@ -339,6 +359,7 @@ version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" +groups = ["main"] files = [ {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, @@ -353,6 +374,7 @@ version = "2.1.0" description = "Simple module to parse ISO 8601 dates" optional = false python-versions = ">=3.7,<4.0" +groups = ["main"] files = [ {file = "iso8601-2.1.0-py3-none-any.whl", hash = "sha256:aac4145c4dcb66ad8b648a02830f5e2ff6c24af20f4f482689be402db2429242"}, {file = "iso8601-2.1.0.tar.gz", hash = "sha256:6b1d3829ee8921c4301998c909f7829fa9ed3cbdac0d3b16af2d743aed1ba8df"}, @@ -360,13 +382,14 @@ files = [ [[package]] name = "jinja2" -version = "3.1.4" +version = "3.1.6" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" +groups = ["main"] files = [ - {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, - {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, + {file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"}, + {file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"}, ] [package.dependencies] @@ -381,6 +404,7 @@ version = "3.0.0" description = "Python port of markdown-it. Markdown parsing, done right!" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, @@ -405,6 +429,7 @@ version = "3.0.2" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.9" +groups = ["main"] 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"}, @@ -475,6 +500,7 @@ version = "0.1.2" description = "Markdown URL utilities" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, @@ -482,131 +508,133 @@ files = [ [[package]] name = "pydantic" -version = "2.10.2" +version = "2.11.3" description = "Data validation using Python type hints" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "pydantic-2.10.2-py3-none-any.whl", hash = "sha256:cfb96e45951117c3024e6b67b25cdc33a3cb7b2fa62e239f7af1378358a1d99e"}, - {file = "pydantic-2.10.2.tar.gz", hash = "sha256:2bc2d7f17232e0841cbba4641e65ba1eb6fafb3a08de3a091ff3ce14a197c4fa"}, + {file = "pydantic-2.11.3-py3-none-any.whl", hash = "sha256:a082753436a07f9ba1289c6ffa01cd93db3548776088aa917cc43b63f68fa60f"}, + {file = "pydantic-2.11.3.tar.gz", hash = "sha256:7471657138c16adad9322fe3070c0116dd6c3ad8d649300e3cbdfe91f4db4ec3"}, ] [package.dependencies] annotated-types = ">=0.6.0" -pydantic-core = "2.27.1" +pydantic-core = "2.33.1" typing-extensions = ">=4.12.2" +typing-inspection = ">=0.4.0" [package.extras] email = ["email-validator (>=2.0.0)"] -timezone = ["tzdata"] +timezone = ["tzdata ; python_version >= \"3.9\" and platform_system == \"Windows\""] [[package]] name = "pydantic-core" -version = "2.27.1" +version = "2.33.1" description = "Core functionality for Pydantic validation and serialization" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "pydantic_core-2.27.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:71a5e35c75c021aaf400ac048dacc855f000bdfed91614b4a726f7432f1f3d6a"}, - {file = "pydantic_core-2.27.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f82d068a2d6ecfc6e054726080af69a6764a10015467d7d7b9f66d6ed5afa23b"}, - {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:121ceb0e822f79163dd4699e4c54f5ad38b157084d97b34de8b232bcaad70278"}, - {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4603137322c18eaf2e06a4495f426aa8d8388940f3c457e7548145011bb68e05"}, - {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a33cd6ad9017bbeaa9ed78a2e0752c5e250eafb9534f308e7a5f7849b0b1bfb4"}, - {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15cc53a3179ba0fcefe1e3ae50beb2784dede4003ad2dfd24f81bba4b23a454f"}, - {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45d9c5eb9273aa50999ad6adc6be5e0ecea7e09dbd0d31bd0c65a55a2592ca08"}, - {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8bf7b66ce12a2ac52d16f776b31d16d91033150266eb796967a7e4621707e4f6"}, - {file = "pydantic_core-2.27.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:655d7dd86f26cb15ce8a431036f66ce0318648f8853d709b4167786ec2fa4807"}, - {file = "pydantic_core-2.27.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:5556470f1a2157031e676f776c2bc20acd34c1990ca5f7e56f1ebf938b9ab57c"}, - {file = "pydantic_core-2.27.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f69ed81ab24d5a3bd93861c8c4436f54afdf8e8cc421562b0c7504cf3be58206"}, - {file = "pydantic_core-2.27.1-cp310-none-win32.whl", hash = "sha256:f5a823165e6d04ccea61a9f0576f345f8ce40ed533013580e087bd4d7442b52c"}, - {file = "pydantic_core-2.27.1-cp310-none-win_amd64.whl", hash = "sha256:57866a76e0b3823e0b56692d1a0bf722bffb324839bb5b7226a7dbd6c9a40b17"}, - {file = "pydantic_core-2.27.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ac3b20653bdbe160febbea8aa6c079d3df19310d50ac314911ed8cc4eb7f8cb8"}, - {file = "pydantic_core-2.27.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a5a8e19d7c707c4cadb8c18f5f60c843052ae83c20fa7d44f41594c644a1d330"}, - {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f7059ca8d64fea7f238994c97d91f75965216bcbe5f695bb44f354893f11d52"}, - {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bed0f8a0eeea9fb72937ba118f9db0cb7e90773462af7962d382445f3005e5a4"}, - {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a3cb37038123447cf0f3ea4c74751f6a9d7afef0eb71aa07bf5f652b5e6a132c"}, - {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:84286494f6c5d05243456e04223d5a9417d7f443c3b76065e75001beb26f88de"}, - {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acc07b2cfc5b835444b44a9956846b578d27beeacd4b52e45489e93276241025"}, - {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4fefee876e07a6e9aad7a8c8c9f85b0cdbe7df52b8a9552307b09050f7512c7e"}, - {file = "pydantic_core-2.27.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:258c57abf1188926c774a4c94dd29237e77eda19462e5bb901d88adcab6af919"}, - {file = "pydantic_core-2.27.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:35c14ac45fcfdf7167ca76cc80b2001205a8d5d16d80524e13508371fb8cdd9c"}, - {file = "pydantic_core-2.27.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d1b26e1dff225c31897696cab7d4f0a315d4c0d9e8666dbffdb28216f3b17fdc"}, - {file = "pydantic_core-2.27.1-cp311-none-win32.whl", hash = "sha256:2cdf7d86886bc6982354862204ae3b2f7f96f21a3eb0ba5ca0ac42c7b38598b9"}, - {file = "pydantic_core-2.27.1-cp311-none-win_amd64.whl", hash = "sha256:3af385b0cee8df3746c3f406f38bcbfdc9041b5c2d5ce3e5fc6637256e60bbc5"}, - {file = "pydantic_core-2.27.1-cp311-none-win_arm64.whl", hash = "sha256:81f2ec23ddc1b476ff96563f2e8d723830b06dceae348ce02914a37cb4e74b89"}, - {file = "pydantic_core-2.27.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9cbd94fc661d2bab2bc702cddd2d3370bbdcc4cd0f8f57488a81bcce90c7a54f"}, - {file = "pydantic_core-2.27.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5f8c4718cd44ec1580e180cb739713ecda2bdee1341084c1467802a417fe0f02"}, - {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15aae984e46de8d376df515f00450d1522077254ef6b7ce189b38ecee7c9677c"}, - {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1ba5e3963344ff25fc8c40da90f44b0afca8cfd89d12964feb79ac1411a260ac"}, - {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:992cea5f4f3b29d6b4f7f1726ed8ee46c8331c6b4eed6db5b40134c6fe1768bb"}, - {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0325336f348dbee6550d129b1627cb8f5351a9dc91aad141ffb96d4937bd9529"}, - {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7597c07fbd11515f654d6ece3d0e4e5093edc30a436c63142d9a4b8e22f19c35"}, - {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3bbd5d8cc692616d5ef6fbbbd50dbec142c7e6ad9beb66b78a96e9c16729b089"}, - {file = "pydantic_core-2.27.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:dc61505e73298a84a2f317255fcc72b710b72980f3a1f670447a21efc88f8381"}, - {file = "pydantic_core-2.27.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:e1f735dc43da318cad19b4173dd1ffce1d84aafd6c9b782b3abc04a0d5a6f5bb"}, - {file = "pydantic_core-2.27.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f4e5658dbffe8843a0f12366a4c2d1c316dbe09bb4dfbdc9d2d9cd6031de8aae"}, - {file = "pydantic_core-2.27.1-cp312-none-win32.whl", hash = "sha256:672ebbe820bb37988c4d136eca2652ee114992d5d41c7e4858cdd90ea94ffe5c"}, - {file = "pydantic_core-2.27.1-cp312-none-win_amd64.whl", hash = "sha256:66ff044fd0bb1768688aecbe28b6190f6e799349221fb0de0e6f4048eca14c16"}, - {file = "pydantic_core-2.27.1-cp312-none-win_arm64.whl", hash = "sha256:9a3b0793b1bbfd4146304e23d90045f2a9b5fd5823aa682665fbdaf2a6c28f3e"}, - {file = "pydantic_core-2.27.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:f216dbce0e60e4d03e0c4353c7023b202d95cbaeff12e5fd2e82ea0a66905073"}, - {file = "pydantic_core-2.27.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a2e02889071850bbfd36b56fd6bc98945e23670773bc7a76657e90e6b6603c08"}, - {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42b0e23f119b2b456d07ca91b307ae167cc3f6c846a7b169fca5326e32fdc6cf"}, - {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:764be71193f87d460a03f1f7385a82e226639732214b402f9aa61f0d025f0737"}, - {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1c00666a3bd2f84920a4e94434f5974d7bbc57e461318d6bb34ce9cdbbc1f6b2"}, - {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ccaa88b24eebc0f849ce0a4d09e8a408ec5a94afff395eb69baf868f5183107"}, - {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c65af9088ac534313e1963443d0ec360bb2b9cba6c2909478d22c2e363d98a51"}, - {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:206b5cf6f0c513baffaeae7bd817717140770c74528f3e4c3e1cec7871ddd61a"}, - {file = "pydantic_core-2.27.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:062f60e512fc7fff8b8a9d680ff0ddaaef0193dba9fa83e679c0c5f5fbd018bc"}, - {file = "pydantic_core-2.27.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:a0697803ed7d4af5e4c1adf1670af078f8fcab7a86350e969f454daf598c4960"}, - {file = "pydantic_core-2.27.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:58ca98a950171f3151c603aeea9303ef6c235f692fe555e883591103da709b23"}, - {file = "pydantic_core-2.27.1-cp313-none-win32.whl", hash = "sha256:8065914ff79f7eab1599bd80406681f0ad08f8e47c880f17b416c9f8f7a26d05"}, - {file = "pydantic_core-2.27.1-cp313-none-win_amd64.whl", hash = "sha256:ba630d5e3db74c79300d9a5bdaaf6200172b107f263c98a0539eeecb857b2337"}, - {file = "pydantic_core-2.27.1-cp313-none-win_arm64.whl", hash = "sha256:45cf8588c066860b623cd11c4ba687f8d7175d5f7ef65f7129df8a394c502de5"}, - {file = "pydantic_core-2.27.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:5897bec80a09b4084aee23f9b73a9477a46c3304ad1d2d07acca19723fb1de62"}, - {file = "pydantic_core-2.27.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d0165ab2914379bd56908c02294ed8405c252250668ebcb438a55494c69f44ab"}, - {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b9af86e1d8e4cfc82c2022bfaa6f459381a50b94a29e95dcdda8442d6d83864"}, - {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f6c8a66741c5f5447e047ab0ba7a1c61d1e95580d64bce852e3df1f895c4067"}, - {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9a42d6a8156ff78981f8aa56eb6394114e0dedb217cf8b729f438f643608cbcd"}, - {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:64c65f40b4cd8b0e049a8edde07e38b476da7e3aaebe63287c899d2cff253fa5"}, - {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdcf339322a3fae5cbd504edcefddd5a50d9ee00d968696846f089b4432cf78"}, - {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bf99c8404f008750c846cb4ac4667b798a9f7de673ff719d705d9b2d6de49c5f"}, - {file = "pydantic_core-2.27.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8f1edcea27918d748c7e5e4d917297b2a0ab80cad10f86631e488b7cddf76a36"}, - {file = "pydantic_core-2.27.1-cp38-cp38-musllinux_1_1_armv7l.whl", hash = "sha256:159cac0a3d096f79ab6a44d77a961917219707e2a130739c64d4dd46281f5c2a"}, - {file = "pydantic_core-2.27.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:029d9757eb621cc6e1848fa0b0310310de7301057f623985698ed7ebb014391b"}, - {file = "pydantic_core-2.27.1-cp38-none-win32.whl", hash = "sha256:a28af0695a45f7060e6f9b7092558a928a28553366519f64083c63a44f70e618"}, - {file = "pydantic_core-2.27.1-cp38-none-win_amd64.whl", hash = "sha256:2d4567c850905d5eaaed2f7a404e61012a51caf288292e016360aa2b96ff38d4"}, - {file = "pydantic_core-2.27.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:e9386266798d64eeb19dd3677051f5705bf873e98e15897ddb7d76f477131967"}, - {file = "pydantic_core-2.27.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4228b5b646caa73f119b1ae756216b59cc6e2267201c27d3912b592c5e323b60"}, - {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b3dfe500de26c52abe0477dde16192ac39c98f05bf2d80e76102d394bd13854"}, - {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:aee66be87825cdf72ac64cb03ad4c15ffef4143dbf5c113f64a5ff4f81477bf9"}, - {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b748c44bb9f53031c8cbc99a8a061bc181c1000c60a30f55393b6e9c45cc5bd"}, - {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ca038c7f6a0afd0b2448941b6ef9d5e1949e999f9e5517692eb6da58e9d44be"}, - {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e0bd57539da59a3e4671b90a502da9a28c72322a4f17866ba3ac63a82c4498e"}, - {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ac6c2c45c847bbf8f91930d88716a0fb924b51e0c6dad329b793d670ec5db792"}, - {file = "pydantic_core-2.27.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b94d4ba43739bbe8b0ce4262bcc3b7b9f31459ad120fb595627eaeb7f9b9ca01"}, - {file = "pydantic_core-2.27.1-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:00e6424f4b26fe82d44577b4c842d7df97c20be6439e8e685d0d715feceb9fb9"}, - {file = "pydantic_core-2.27.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:38de0a70160dd97540335b7ad3a74571b24f1dc3ed33f815f0880682e6880131"}, - {file = "pydantic_core-2.27.1-cp39-none-win32.whl", hash = "sha256:7ccebf51efc61634f6c2344da73e366c75e735960b5654b63d7e6f69a5885fa3"}, - {file = "pydantic_core-2.27.1-cp39-none-win_amd64.whl", hash = "sha256:a57847b090d7892f123726202b7daa20df6694cbd583b67a592e856bff603d6c"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3fa80ac2bd5856580e242dbc202db873c60a01b20309c8319b5c5986fbe53ce6"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d950caa237bb1954f1b8c9227b5065ba6875ac9771bb8ec790d956a699b78676"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e4216e64d203e39c62df627aa882f02a2438d18a5f21d7f721621f7a5d3611d"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02a3d637bd387c41d46b002f0e49c52642281edacd2740e5a42f7017feea3f2c"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:161c27ccce13b6b0c8689418da3885d3220ed2eae2ea5e9b2f7f3d48f1d52c27"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:19910754e4cc9c63bc1c7f6d73aa1cfee82f42007e407c0f413695c2f7ed777f"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:e173486019cc283dc9778315fa29a363579372fe67045e971e89b6365cc035ed"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:af52d26579b308921b73b956153066481f064875140ccd1dfd4e77db89dbb12f"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:981fb88516bd1ae8b0cbbd2034678a39dedc98752f264ac9bc5839d3923fa04c"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5fde892e6c697ce3e30c61b239330fc5d569a71fefd4eb6512fc6caec9dd9e2f"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:816f5aa087094099fff7edabb5e01cc370eb21aa1a1d44fe2d2aefdfb5599b31"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c10c309e18e443ddb108f0ef64e8729363adbfd92d6d57beec680f6261556f3"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98476c98b02c8e9b2eec76ac4156fd006628b1b2d0ef27e548ffa978393fd154"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c3027001c28434e7ca5a6e1e527487051136aa81803ac812be51802150d880dd"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:7699b1df36a48169cdebda7ab5a2bac265204003f153b4bd17276153d997670a"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:1c39b07d90be6b48968ddc8c19e7585052088fd7ec8d568bb31ff64c70ae3c97"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:46ccfe3032b3915586e469d4972973f893c0a2bb65669194a5bdea9bacc088c2"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:62ba45e21cf6571d7f716d903b5b7b6d2617e2d5d67c0923dc47b9d41369f840"}, - {file = "pydantic_core-2.27.1.tar.gz", hash = "sha256:62a763352879b84aa31058fc931884055fd75089cccbd9d58bb6afd01141b235"}, + {file = "pydantic_core-2.33.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3077cfdb6125cc8dab61b155fdd714663e401f0e6883f9632118ec12cf42df26"}, + {file = "pydantic_core-2.33.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8ffab8b2908d152e74862d276cf5017c81a2f3719f14e8e3e8d6b83fda863927"}, + {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5183e4f6a2d468787243ebcd70cf4098c247e60d73fb7d68d5bc1e1beaa0c4db"}, + {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:398a38d323f37714023be1e0285765f0a27243a8b1506b7b7de87b647b517e48"}, + {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87d3776f0001b43acebfa86f8c64019c043b55cc5a6a2e313d728b5c95b46969"}, + {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c566dd9c5f63d22226409553531f89de0cac55397f2ab8d97d6f06cfce6d947e"}, + {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0d5f3acc81452c56895e90643a625302bd6be351e7010664151cc55b7b97f89"}, + {file = "pydantic_core-2.33.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d3a07fadec2a13274a8d861d3d37c61e97a816beae717efccaa4b36dfcaadcde"}, + {file = "pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f99aeda58dce827f76963ee87a0ebe75e648c72ff9ba1174a253f6744f518f65"}, + {file = "pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:902dbc832141aa0ec374f4310f1e4e7febeebc3256f00dc359a9ac3f264a45dc"}, + {file = "pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fe44d56aa0b00d66640aa84a3cbe80b7a3ccdc6f0b1ca71090696a6d4777c091"}, + {file = "pydantic_core-2.33.1-cp310-cp310-win32.whl", hash = "sha256:ed3eb16d51257c763539bde21e011092f127a2202692afaeaccb50db55a31383"}, + {file = "pydantic_core-2.33.1-cp310-cp310-win_amd64.whl", hash = "sha256:694ad99a7f6718c1a498dc170ca430687a39894a60327f548e02a9c7ee4b6504"}, + {file = "pydantic_core-2.33.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6e966fc3caaf9f1d96b349b0341c70c8d6573bf1bac7261f7b0ba88f96c56c24"}, + {file = "pydantic_core-2.33.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bfd0adeee563d59c598ceabddf2c92eec77abcb3f4a391b19aa7366170bd9e30"}, + {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91815221101ad3c6b507804178a7bb5cb7b2ead9ecd600041669c8d805ebd595"}, + {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9fea9c1869bb4742d174a57b4700c6dadea951df8b06de40c2fedb4f02931c2e"}, + {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d20eb4861329bb2484c021b9d9a977566ab16d84000a57e28061151c62b349a"}, + {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb935c5591573ae3201640579f30128ccc10739b45663f93c06796854405505"}, + {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c964fd24e6166420d18fb53996d8c9fd6eac9bf5ae3ec3d03015be4414ce497f"}, + {file = "pydantic_core-2.33.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:681d65e9011f7392db5aa002b7423cc442d6a673c635668c227c6c8d0e5a4f77"}, + {file = "pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e100c52f7355a48413e2999bfb4e139d2977a904495441b374f3d4fb4a170961"}, + {file = "pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:048831bd363490be79acdd3232f74a0e9951b11b2b4cc058aeb72b22fdc3abe1"}, + {file = "pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:bdc84017d28459c00db6f918a7272a5190bec3090058334e43a76afb279eac7c"}, + {file = "pydantic_core-2.33.1-cp311-cp311-win32.whl", hash = "sha256:32cd11c5914d1179df70406427097c7dcde19fddf1418c787540f4b730289896"}, + {file = "pydantic_core-2.33.1-cp311-cp311-win_amd64.whl", hash = "sha256:2ea62419ba8c397e7da28a9170a16219d310d2cf4970dbc65c32faf20d828c83"}, + {file = "pydantic_core-2.33.1-cp311-cp311-win_arm64.whl", hash = "sha256:fc903512177361e868bc1f5b80ac8c8a6e05fcdd574a5fb5ffeac5a9982b9e89"}, + {file = "pydantic_core-2.33.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1293d7febb995e9d3ec3ea09caf1a26214eec45b0f29f6074abb004723fc1de8"}, + {file = "pydantic_core-2.33.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:99b56acd433386c8f20be5c4000786d1e7ca0523c8eefc995d14d79c7a081498"}, + {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35a5ec3fa8c2fe6c53e1b2ccc2454398f95d5393ab398478f53e1afbbeb4d939"}, + {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b172f7b9d2f3abc0efd12e3386f7e48b576ef309544ac3a63e5e9cdd2e24585d"}, + {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9097b9f17f91eea659b9ec58148c0747ec354a42f7389b9d50701610d86f812e"}, + {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc77ec5b7e2118b152b0d886c7514a4653bcb58c6b1d760134a9fab915f777b3"}, + {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5e3d15245b08fa4a84cefc6c9222e6f37c98111c8679fbd94aa145f9a0ae23d"}, + {file = "pydantic_core-2.33.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ef99779001d7ac2e2461d8ab55d3373fe7315caefdbecd8ced75304ae5a6fc6b"}, + {file = "pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fc6bf8869e193855e8d91d91f6bf59699a5cdfaa47a404e278e776dd7f168b39"}, + {file = "pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:b1caa0bc2741b043db7823843e1bde8aaa58a55a58fda06083b0569f8b45693a"}, + {file = "pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ec259f62538e8bf364903a7d0d0239447059f9434b284f5536e8402b7dd198db"}, + {file = "pydantic_core-2.33.1-cp312-cp312-win32.whl", hash = "sha256:e14f369c98a7c15772b9da98987f58e2b509a93235582838bd0d1d8c08b68fda"}, + {file = "pydantic_core-2.33.1-cp312-cp312-win_amd64.whl", hash = "sha256:1c607801d85e2e123357b3893f82c97a42856192997b95b4d8325deb1cd0c5f4"}, + {file = "pydantic_core-2.33.1-cp312-cp312-win_arm64.whl", hash = "sha256:8d13f0276806ee722e70a1c93da19748594f19ac4299c7e41237fc791d1861ea"}, + {file = "pydantic_core-2.33.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:70af6a21237b53d1fe7b9325b20e65cbf2f0a848cf77bed492b029139701e66a"}, + {file = "pydantic_core-2.33.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:282b3fe1bbbe5ae35224a0dbd05aed9ccabccd241e8e6b60370484234b456266"}, + {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b315e596282bbb5822d0c7ee9d255595bd7506d1cb20c2911a4da0b970187d3"}, + {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1dfae24cf9921875ca0ca6a8ecb4bb2f13c855794ed0d468d6abbec6e6dcd44a"}, + {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6dd8ecfde08d8bfadaea669e83c63939af76f4cf5538a72597016edfa3fad516"}, + {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f593494876eae852dc98c43c6f260f45abdbfeec9e4324e31a481d948214764"}, + {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:948b73114f47fd7016088e5186d13faf5e1b2fe83f5e320e371f035557fd264d"}, + {file = "pydantic_core-2.33.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e11f3864eb516af21b01e25fac915a82e9ddad3bb0fb9e95a246067398b435a4"}, + {file = "pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:549150be302428b56fdad0c23c2741dcdb5572413776826c965619a25d9c6bde"}, + {file = "pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:495bc156026efafd9ef2d82372bd38afce78ddd82bf28ef5276c469e57c0c83e"}, + {file = "pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ec79de2a8680b1a67a07490bddf9636d5c2fab609ba8c57597e855fa5fa4dacd"}, + {file = "pydantic_core-2.33.1-cp313-cp313-win32.whl", hash = "sha256:ee12a7be1742f81b8a65b36c6921022301d466b82d80315d215c4c691724986f"}, + {file = "pydantic_core-2.33.1-cp313-cp313-win_amd64.whl", hash = "sha256:ede9b407e39949d2afc46385ce6bd6e11588660c26f80576c11c958e6647bc40"}, + {file = "pydantic_core-2.33.1-cp313-cp313-win_arm64.whl", hash = "sha256:aa687a23d4b7871a00e03ca96a09cad0f28f443690d300500603bd0adba4b523"}, + {file = "pydantic_core-2.33.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:401d7b76e1000d0dd5538e6381d28febdcacb097c8d340dde7d7fc6e13e9f95d"}, + {file = "pydantic_core-2.33.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7aeb055a42d734c0255c9e489ac67e75397d59c6fbe60d155851e9782f276a9c"}, + {file = "pydantic_core-2.33.1-cp313-cp313t-win_amd64.whl", hash = "sha256:338ea9b73e6e109f15ab439e62cb3b78aa752c7fd9536794112e14bee02c8d18"}, + {file = "pydantic_core-2.33.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5ab77f45d33d264de66e1884fca158bc920cb5e27fd0764a72f72f5756ae8bdb"}, + {file = "pydantic_core-2.33.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7aaba1b4b03aaea7bb59e1b5856d734be011d3e6d98f5bcaa98cb30f375f2ad"}, + {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7fb66263e9ba8fea2aa85e1e5578980d127fb37d7f2e292773e7bc3a38fb0c7b"}, + {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3f2648b9262607a7fb41d782cc263b48032ff7a03a835581abbf7a3bec62bcf5"}, + {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:723c5630c4259400818b4ad096735a829074601805d07f8cafc366d95786d331"}, + {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d100e3ae783d2167782391e0c1c7a20a31f55f8015f3293647544df3f9c67824"}, + {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:177d50460bc976a0369920b6c744d927b0ecb8606fb56858ff542560251b19e5"}, + {file = "pydantic_core-2.33.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a3edde68d1a1f9af1273b2fe798997b33f90308fb6d44d8550c89fc6a3647cf6"}, + {file = "pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a62c3c3ef6a7e2c45f7853b10b5bc4ddefd6ee3cd31024754a1a5842da7d598d"}, + {file = "pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:c91dbb0ab683fa0cd64a6e81907c8ff41d6497c346890e26b23de7ee55353f96"}, + {file = "pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9f466e8bf0a62dc43e068c12166281c2eca72121dd2adc1040f3aa1e21ef8599"}, + {file = "pydantic_core-2.33.1-cp39-cp39-win32.whl", hash = "sha256:ab0277cedb698749caada82e5d099dc9fed3f906a30d4c382d1a21725777a1e5"}, + {file = "pydantic_core-2.33.1-cp39-cp39-win_amd64.whl", hash = "sha256:5773da0ee2d17136b1f1c6fbde543398d452a6ad2a7b54ea1033e2daa739b8d2"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5c834f54f8f4640fd7e4b193f80eb25a0602bba9e19b3cd2fc7ffe8199f5ae02"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:049e0de24cf23766f12cc5cc71d8abc07d4a9deb9061b334b62093dedc7cb068"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a28239037b3d6f16916a4c831a5a0eadf856bdd6d2e92c10a0da3a59eadcf3e"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d3da303ab5f378a268fa7d45f37d7d85c3ec19769f28d2cc0c61826a8de21fe"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:25626fb37b3c543818c14821afe0fd3830bc327a43953bc88db924b68c5723f1"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3ab2d36e20fbfcce8f02d73c33a8a7362980cff717926bbae030b93ae46b56c7"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:2f9284e11c751b003fd4215ad92d325d92c9cb19ee6729ebd87e3250072cdcde"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:048c01eee07d37cbd066fc512b9d8b5ea88ceeb4e629ab94b3e56965ad655add"}, + {file = "pydantic_core-2.33.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5ccd429694cf26af7997595d627dd2637e7932214486f55b8a357edaac9dae8c"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3a371dc00282c4b84246509a5ddc808e61b9864aa1eae9ecc92bb1268b82db4a"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:f59295ecc75a1788af8ba92f2e8c6eeaa5a94c22fc4d151e8d9638814f85c8fc"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08530b8ac922003033f399128505f513e30ca770527cc8bbacf75a84fcc2c74b"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bae370459da6a5466978c0eacf90690cb57ec9d533f8e63e564ef3822bfa04fe"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e3de2777e3b9f4d603112f78006f4ae0acb936e95f06da6cb1a45fbad6bdb4b5"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3a64e81e8cba118e108d7126362ea30e021291b7805d47e4896e52c791be2761"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:52928d8c1b6bda03cc6d811e8923dffc87a2d3c8b3bfd2ce16471c7147a24850"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:1b30d92c9412beb5ac6b10a3eb7ef92ccb14e3f2a8d7732e2d739f58b3aa7544"}, + {file = "pydantic_core-2.33.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:f995719707e0e29f0f41a8aa3bcea6e761a36c9136104d3189eafb83f5cec5e5"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7edbc454a29fc6aeae1e1eecba4f07b63b8d76e76a748532233c4c167b4cb9ea"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:ad05b683963f69a1d5d2c2bdab1274a31221ca737dbbceaa32bcb67359453cdd"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df6a94bf9452c6da9b5d76ed229a5683d0306ccb91cca8e1eea883189780d568"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7965c13b3967909a09ecc91f21d09cfc4576bf78140b988904e94f130f188396"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3f1fdb790440a34f6ecf7679e1863b825cb5ffde858a9197f851168ed08371e5"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:5277aec8d879f8d05168fdd17ae811dd313b8ff894aeeaf7cd34ad28b4d77e33"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8ab581d3530611897d863d1a649fb0644b860286b4718db919bfd51ece41f10b"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0483847fa9ad5e3412265c1bd72aad35235512d9ce9d27d81a56d935ef489672"}, + {file = "pydantic_core-2.33.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:de9e06abe3cc5ec6a2d5f75bc99b0bdca4f5c719a5b34026f8c57efbdecd2ee3"}, + {file = "pydantic_core-2.33.1.tar.gz", hash = "sha256:bcc9c6fdb0ced789245b02b7d6603e17d1563064ddcfc36f046b61c0c05dd9df"}, ] [package.dependencies] @@ -614,13 +642,14 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" [[package]] name = "pygments" -version = "2.18.0" +version = "2.19.1" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, - {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, + {file = "pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c"}, + {file = "pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f"}, ] [package.extras] @@ -632,6 +661,7 @@ version = "2.10.1" description = "JSON Web Token implementation in Python" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ {file = "PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb"}, {file = "pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953"}, @@ -645,24 +675,26 @@ tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] [[package]] name = "pypika-tortoise" -version = "0.3.1" +version = "0.5.0" description = "Forked from pypika and streamline just for tortoise-orm" optional = false python-versions = "<4.0,>=3.8" +groups = ["main"] files = [ - {file = "pypika_tortoise-0.3.1-py3-none-any.whl", hash = "sha256:eee0d49c99ed1b932f7c48f8b87d8492aeb3c7e6a48ba69bc462eb9e3b5b20a2"}, - {file = "pypika_tortoise-0.3.1.tar.gz", hash = "sha256:6f9861dd34fd21a009e79b174159e61699da28cb2607617e688b7e79e6c9ef7e"}, + {file = "pypika_tortoise-0.5.0-py3-none-any.whl", hash = "sha256:dbdc47eb52ce17407b05ce9f8560ce93b856d7b28beb01971d956b017846691f"}, + {file = "pypika_tortoise-0.5.0.tar.gz", hash = "sha256:ed0f56761868dc222c03e477578638590b972280b03c7c45cd93345b18b61f58"}, ] [[package]] name = "python-dotenv" -version = "1.0.1" +version = "1.1.0" description = "Read key-value pairs from a .env file and set them as environment variables" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, - {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, + {file = "python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d"}, + {file = "python_dotenv-1.1.0.tar.gz", hash = "sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5"}, ] [package.extras] @@ -670,24 +702,26 @@ cli = ["click (>=5.0)"] [[package]] name = "python-multipart" -version = "0.0.19" +version = "0.0.20" description = "A streaming multipart parser for Python" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "python_multipart-0.0.19-py3-none-any.whl", hash = "sha256:f8d5b0b9c618575bf9df01c684ded1d94a338839bdd8223838afacfb4bb2082d"}, - {file = "python_multipart-0.0.19.tar.gz", hash = "sha256:905502ef39050557b7a6af411f454bc19526529ca46ae6831508438890ce12cc"}, + {file = "python_multipart-0.0.20-py3-none-any.whl", hash = "sha256:8a62d3a8335e06589fe01f2a3e178cdcc632f3fbe0d492ad9ee0ec35aab1f104"}, + {file = "python_multipart-0.0.20.tar.gz", hash = "sha256:8dd0cab45b8e23064ae09147625994d090fa46f5b0d1e13af944c331a7fa9d13"}, ] [[package]] name = "pytz" -version = "2024.2" +version = "2025.2" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" +groups = ["main"] files = [ - {file = "pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725"}, - {file = "pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a"}, + {file = "pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00"}, + {file = "pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3"}, ] [[package]] @@ -696,6 +730,7 @@ version = "6.0.2" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {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"}, @@ -754,13 +789,14 @@ files = [ [[package]] name = "rich" -version = "13.9.4" +version = "14.0.0" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" optional = false python-versions = ">=3.8.0" +groups = ["main"] files = [ - {file = "rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90"}, - {file = "rich-13.9.4.tar.gz", hash = "sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098"}, + {file = "rich-14.0.0-py3-none-any.whl", hash = "sha256:1c9491e1951aac09caffd42f448ee3d04e58923ffe14993f6e83068dc395d7e0"}, + {file = "rich-14.0.0.tar.gz", hash = "sha256:82f1bc23a6a21ebca4ae0c45af9bdbc492ed20231dcb63f297d6d1021a9d5725"}, ] [package.dependencies] @@ -771,12 +807,30 @@ typing-extensions = {version = ">=4.0.0,<5.0", markers = "python_version < \"3.1 [package.extras] jupyter = ["ipywidgets (>=7.5.1,<9)"] +[[package]] +name = "rich-toolkit" +version = "0.14.1" +description = "Rich toolkit for building command-line applications" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "rich_toolkit-0.14.1-py3-none-any.whl", hash = "sha256:dc92c0117d752446d04fdc828dbca5873bcded213a091a5d3742a2beec2e6559"}, + {file = "rich_toolkit-0.14.1.tar.gz", hash = "sha256:9248e2d087bfc01f3e4c5c8987e05f7fa744d00dd22fa2be3aa6e50255790b3f"}, +] + +[package.dependencies] +click = ">=8.1.7" +rich = ">=13.7.1" +typing-extensions = ">=4.12.2" + [[package]] name = "shellingham" version = "1.5.4" description = "Tool to Detect Surrounding Shell" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686"}, {file = "shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de"}, @@ -788,6 +842,7 @@ version = "1.3.1" description = "Sniff out which async library your code is running under" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, @@ -799,6 +854,7 @@ version = "0.38.6" description = "The little ASGI library that shines." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "starlette-0.38.6-py3-none-any.whl", hash = "sha256:4517a1409e2e73ee4951214ba012052b9e16f60e90d73cfb06192c19203bbb05"}, {file = "starlette-0.38.6.tar.gz", hash = "sha256:863a1588f5574e70a821dadefb41e4881ea451a47a3cd1b4df359d4ffefe5ead"}, @@ -812,39 +868,40 @@ full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7 [[package]] name = "tortoise-orm" -version = "0.22.1" +version = "0.25.0" description = "Easy async ORM for python, built with relations in mind" optional = false -python-versions = "<4.0,>=3.8" +python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "tortoise_orm-0.22.1-py3-none-any.whl", hash = "sha256:96b8dbc10956cb5cfb6f02841b238035924a6011b5a9737774a22859e1b7bcbf"}, - {file = "tortoise_orm-0.22.1.tar.gz", hash = "sha256:50cce7ab3eee5321553810ee31f411abde7a1806312655a377801c91e1b2cb77"}, + {file = "tortoise_orm-0.25.0-py3-none-any.whl", hash = "sha256:b853acae52bc309800ec2954f3e261746cdac7e6b0e0a96ba20393dcb100a357"}, + {file = "tortoise_orm-0.25.0.tar.gz", hash = "sha256:7d0aaf31c33a25a9efad8f94b44ee50febae15889f4da119cf184ffe98002673"}, ] [package.dependencies] -aiosqlite = ">=0.16.0,<0.21.0" -iso8601 = ">=2.1.0,<3.0.0" -pydantic = ">=2.0,<2.7.0 || >2.7.0,<3.0" -pypika-tortoise = ">=0.3.0,<0.4.0" +aiosqlite = ">=0.16.0,<1.0.0" +iso8601 = {version = ">=2.1.0,<3.0.0", markers = "python_version < \"4.0\""} +pypika-tortoise = {version = ">=0.5.0,<1.0.0", markers = "python_version < \"4.0\""} pytz = "*" [package.extras] -accel = ["ciso8601", "orjson", "uvloop"] +accel = ["ciso8601 ; sys_platform != \"win32\" and implementation_name == \"cpython\"", "orjson", "uvloop ; sys_platform != \"win32\" and implementation_name == \"cpython\""] aiomysql = ["aiomysql"] -asyncmy = ["asyncmy (>=0.2.8,<0.3.0)"] -asyncodbc = ["asyncodbc (>=0.1.1,<0.2.0)"] +asyncmy = ["asyncmy (>=0.2.8,<1.0.0) ; python_version < \"4.0\""] +asyncodbc = ["asyncodbc (>=0.1.1,<1.0.0) ; python_version < \"4.0\""] asyncpg = ["asyncpg"] psycopg = ["psycopg[binary,pool] (>=3.0.12,<4.0.0)"] [[package]] name = "typer" -version = "0.14.0" +version = "0.15.2" description = "Typer, build great CLIs. Easy to code. Based on Python type hints." optional = false python-versions = ">=3.7" +groups = ["main"] files = [ - {file = "typer-0.14.0-py3-none-any.whl", hash = "sha256:f476233a25770ab3e7b2eebf7c68f3bc702031681a008b20167573a4b7018f09"}, - {file = "typer-0.14.0.tar.gz", hash = "sha256:af58f737f8d0c0c37b9f955a6d39000b9ff97813afcbeef56af5e37cf743b45a"}, + {file = "typer-0.15.2-py3-none-any.whl", hash = "sha256:46a499c6107d645a9c13f7ee46c5d5096cae6f5fc57dd11eccbbb9ae3e44ddfc"}, + {file = "typer-0.15.2.tar.gz", hash = "sha256:ab2fab47533a813c49fe1f16b1a370fd5819099c00b119e0633df65f22144ba5"}, ] [package.dependencies] @@ -855,24 +912,41 @@ typing-extensions = ">=3.7.4.3" [[package]] name = "typing-extensions" -version = "4.12.2" +version = "4.13.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, - {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, + {file = "typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c"}, + {file = "typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef"}, ] +[[package]] +name = "typing-inspection" +version = "0.4.0" +description = "Runtime typing introspection tools" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "typing_inspection-0.4.0-py3-none-any.whl", hash = "sha256:50e72559fcd2a6367a19f7a7e610e6afcb9fac940c650290eed893d61386832f"}, + {file = "typing_inspection-0.4.0.tar.gz", hash = "sha256:9765c87de36671694a67904bf2c96e395be9c6439bb6c87b5142569dcdd65122"}, +] + +[package.dependencies] +typing-extensions = ">=4.12.0" + [[package]] name = "uvicorn" -version = "0.32.1" +version = "0.34.1" description = "The lightning-fast ASGI server." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "uvicorn-0.32.1-py3-none-any.whl", hash = "sha256:82ad92fd58da0d12af7482ecdb5f2470a04c9c9a53ced65b9bbb4a205377602e"}, - {file = "uvicorn-0.32.1.tar.gz", hash = "sha256:ee9519c246a72b1c084cea8d3b44ed6026e78a4a309cbedae9c37e4cb9fbb175"}, + {file = "uvicorn-0.34.1-py3-none-any.whl", hash = "sha256:984c3a8c7ca18ebaad15995ee7401179212c59521e67bfc390c07fa2b8d2e065"}, + {file = "uvicorn-0.34.1.tar.gz", hash = "sha256:af981725fc4b7ffc5cb3b0e9eda6258a90c4b52cb2a83ce567ae0a7ae1757afc"}, ] [package.dependencies] @@ -883,12 +957,12 @@ httptools = {version = ">=0.6.3", optional = true, markers = "extra == \"standar python-dotenv = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} pyyaml = {version = ">=5.1", optional = true, markers = "extra == \"standard\""} typing-extensions = {version = ">=4.0", markers = "python_version < \"3.11\""} -uvloop = {version = ">=0.14.0,<0.15.0 || >0.15.0,<0.15.1 || >0.15.1", optional = true, markers = "(sys_platform != \"win32\" and sys_platform != \"cygwin\") and platform_python_implementation != \"PyPy\" and extra == \"standard\""} +uvloop = {version = ">=0.14.0,<0.15.0 || >0.15.0,<0.15.1 || >0.15.1", optional = true, markers = "sys_platform != \"win32\" and sys_platform != \"cygwin\" and platform_python_implementation != \"PyPy\" and extra == \"standard\""} watchfiles = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} websockets = {version = ">=10.4", optional = true, markers = "extra == \"standard\""} [package.extras] -standard = ["colorama (>=0.4)", "httptools (>=0.6.3)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"] +standard = ["colorama (>=0.4) ; sys_platform == \"win32\"", "httptools (>=0.6.3)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1) ; sys_platform != \"win32\" and sys_platform != \"cygwin\" and platform_python_implementation != \"PyPy\"", "watchfiles (>=0.13)", "websockets (>=10.4)"] [[package]] name = "uvloop" @@ -896,6 +970,8 @@ version = "0.21.0" description = "Fast implementation of asyncio event loop on top of libuv" optional = false python-versions = ">=3.8.0" +groups = ["main"] +markers = "sys_platform != \"win32\" and sys_platform != \"cygwin\" and platform_python_implementation != \"PyPy\"" files = [ {file = "uvloop-0.21.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ec7e6b09a6fdded42403182ab6b832b71f4edaf7f37a9a0e371a01db5f0cb45f"}, {file = "uvloop-0.21.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:196274f2adb9689a289ad7d65700d37df0c0930fd8e4e743fa4834e850d7719d"}, @@ -943,82 +1019,83 @@ test = ["aiohttp (>=3.10.5)", "flake8 (>=5.0,<6.0)", "mypy (>=0.800)", "psutil", [[package]] name = "watchfiles" -version = "1.0.0" +version = "1.0.5" description = "Simple, modern and high performance file watching and code reload in python." optional = false python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "watchfiles-1.0.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:1d19df28f99d6a81730658fbeb3ade8565ff687f95acb59665f11502b441be5f"}, - {file = "watchfiles-1.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:28babb38cf2da8e170b706c4b84aa7e4528a6fa4f3ee55d7a0866456a1662041"}, - {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12ab123135b2f42517f04e720526d41448667ae8249e651385afb5cda31fedc0"}, - {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:13a4f9ee0cd25682679eea5c14fc629e2eaa79aab74d963bc4e21f43b8ea1877"}, - {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e1d9284cc84de7855fcf83472e51d32daf6f6cecd094160192628bc3fee1b78"}, - {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ee5edc939f53466b329bbf2e58333a5461e6c7b50c980fa6117439e2c18b42d"}, - {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5dccfc70480087567720e4e36ec381bba1ed68d7e5f368fe40c93b3b1eba0105"}, - {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c83a6d33a9eda0af6a7470240d1af487807adc269704fe76a4972dd982d16236"}, - {file = "watchfiles-1.0.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:905f69aad276639eff3893759a07d44ea99560e67a1cf46ff389cd62f88872a2"}, - {file = "watchfiles-1.0.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:09551237645d6bff3972592f2aa5424df9290e7a2e15d63c5f47c48cde585935"}, - {file = "watchfiles-1.0.0-cp310-none-win32.whl", hash = "sha256:d2b39aa8edd9e5f56f99a2a2740a251dc58515398e9ed5a4b3e5ff2827060755"}, - {file = "watchfiles-1.0.0-cp310-none-win_amd64.whl", hash = "sha256:2de52b499e1ab037f1a87cb8ebcb04a819bf087b1015a4cf6dcf8af3c2a2613e"}, - {file = "watchfiles-1.0.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:fbd0ab7a9943bbddb87cbc2bf2f09317e74c77dc55b1f5657f81d04666c25269"}, - {file = "watchfiles-1.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:774ef36b16b7198669ce655d4f75b4c3d370e7f1cbdfb997fb10ee98717e2058"}, - {file = "watchfiles-1.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b4fb98100267e6a5ebaff6aaa5d20aea20240584647470be39fe4823012ac96"}, - {file = "watchfiles-1.0.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0fc3bf0effa2d8075b70badfdd7fb839d7aa9cea650d17886982840d71fdeabf"}, - {file = "watchfiles-1.0.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:648e2b6db53eca6ef31245805cd528a16f56fa4cc15aeec97795eaf713c11435"}, - {file = "watchfiles-1.0.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fa13d604fcb9417ae5f2e3de676e66aa97427d888e83662ad205bed35a313176"}, - {file = "watchfiles-1.0.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:936f362e7ff28311b16f0b97ec51e8f2cc451763a3264640c6ed40fb252d1ee4"}, - {file = "watchfiles-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:245fab124b9faf58430da547512d91734858df13f2ddd48ecfa5e493455ffccb"}, - {file = "watchfiles-1.0.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4ff9c7e84e8b644a8f985c42bcc81457240316f900fc72769aaedec9d088055a"}, - {file = "watchfiles-1.0.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9c9a8d8fd97defe935ef8dd53d562e68942ad65067cd1c54d6ed8a088b1d931d"}, - {file = "watchfiles-1.0.0-cp311-none-win32.whl", hash = "sha256:a0abf173975eb9dd17bb14c191ee79999e650997cc644562f91df06060610e62"}, - {file = "watchfiles-1.0.0-cp311-none-win_amd64.whl", hash = "sha256:2a825ba4b32c214e3855b536eb1a1f7b006511d8e64b8215aac06eb680642d84"}, - {file = "watchfiles-1.0.0-cp311-none-win_arm64.whl", hash = "sha256:a5a7a06cfc65e34fd0a765a7623c5ba14707a0870703888e51d3d67107589817"}, - {file = "watchfiles-1.0.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:28fb64b5843d94e2c2483f7b024a1280662a44409bedee8f2f51439767e2d107"}, - {file = "watchfiles-1.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e3750434c83b61abb3163b49c64b04180b85b4dabb29a294513faec57f2ffdb7"}, - {file = "watchfiles-1.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bedf84835069f51c7b026b3ca04e2e747ea8ed0a77c72006172c72d28c9f69fc"}, - {file = "watchfiles-1.0.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:90004553be36427c3d06ec75b804233f8f816374165d5225b93abd94ba6e7234"}, - {file = "watchfiles-1.0.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b46e15c34d4e401e976d6949ad3a74d244600d5c4b88c827a3fdf18691a46359"}, - {file = "watchfiles-1.0.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:487d15927f1b0bd24e7df921913399bb1ab94424c386bea8b267754d698f8f0e"}, - {file = "watchfiles-1.0.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1ff236d7a3f4b0a42f699a22fc374ba526bc55048a70cbb299661158e1bb5e1f"}, - {file = "watchfiles-1.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c01446626574561756067f00b37e6b09c8622b0fc1e9fdbc7cbcea328d4e514"}, - {file = "watchfiles-1.0.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b551c465a59596f3d08170bd7e1c532c7260dd90ed8135778038e13c5d48aa81"}, - {file = "watchfiles-1.0.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e1ed613ee107269f66c2df631ec0fc8efddacface85314d392a4131abe299f00"}, - {file = "watchfiles-1.0.0-cp312-none-win32.whl", hash = "sha256:5f75cd42e7e2254117cf37ff0e68c5b3f36c14543756b2da621408349bd9ca7c"}, - {file = "watchfiles-1.0.0-cp312-none-win_amd64.whl", hash = "sha256:cf517701a4a872417f4e02a136e929537743461f9ec6cdb8184d9a04f4843545"}, - {file = "watchfiles-1.0.0-cp312-none-win_arm64.whl", hash = "sha256:8a2127cd68950787ee36753e6d401c8ea368f73beaeb8e54df5516a06d1ecd82"}, - {file = "watchfiles-1.0.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:95de85c254f7fe8cbdf104731f7f87f7f73ae229493bebca3722583160e6b152"}, - {file = "watchfiles-1.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:533a7cbfe700e09780bb31c06189e39c65f06c7f447326fee707fd02f9a6e945"}, - {file = "watchfiles-1.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a2218e78e2c6c07b1634a550095ac2a429026b2d5cbcd49a594f893f2bb8c936"}, - {file = "watchfiles-1.0.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9122b8fdadc5b341315d255ab51d04893f417df4e6c1743b0aac8bf34e96e025"}, - {file = "watchfiles-1.0.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9272fdbc0e9870dac3b505bce1466d386b4d8d6d2bacf405e603108d50446940"}, - {file = "watchfiles-1.0.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4a3b33c3aefe9067ebd87846806cd5fc0b017ab70d628aaff077ab9abf4d06b3"}, - {file = "watchfiles-1.0.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bc338ce9f8846543d428260fa0f9a716626963148edc937d71055d01d81e1525"}, - {file = "watchfiles-1.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ac778a460ea22d63c7e6fb0bc0f5b16780ff0b128f7f06e57aaec63bd339285"}, - {file = "watchfiles-1.0.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:53ae447f06f8f29f5ab40140f19abdab822387a7c426a369eb42184b021e97eb"}, - {file = "watchfiles-1.0.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:1f73c2147a453315d672c1ad907abe6d40324e34a185b51e15624bc793f93cc6"}, - {file = "watchfiles-1.0.0-cp313-none-win32.whl", hash = "sha256:eba98901a2eab909dbd79681190b9049acc650f6111fde1845484a4450761e98"}, - {file = "watchfiles-1.0.0-cp313-none-win_amd64.whl", hash = "sha256:d562a6114ddafb09c33246c6ace7effa71ca4b6a2324a47f4b09b6445ea78941"}, - {file = "watchfiles-1.0.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:3d94fd83ed54266d789f287472269c0def9120a2022674990bd24ad989ebd7a0"}, - {file = "watchfiles-1.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48051d1c504448b2fcda71c5e6e3610ae45de6a0b8f5a43b961f250be4bdf5a8"}, - {file = "watchfiles-1.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29cf884ad4285d23453c702ed03d689f9c0e865e3c85d20846d800d4787de00f"}, - {file = "watchfiles-1.0.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d3572d4c34c4e9c33d25b3da47d9570d5122f8433b9ac6519dca49c2740d23cd"}, - {file = "watchfiles-1.0.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2c2696611182c85eb0e755b62b456f48debff484b7306b56f05478b843ca8ece"}, - {file = "watchfiles-1.0.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:550109001920a993a4383b57229c717fa73627d2a4e8fcb7ed33c7f1cddb0c85"}, - {file = "watchfiles-1.0.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b555a93c15bd2c71081922be746291d776d47521a00703163e5fbe6d2a402399"}, - {file = "watchfiles-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:947ccba18a38b85c366dafeac8df2f6176342d5992ca240a9d62588b214d731f"}, - {file = "watchfiles-1.0.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ffd98a299b0a74d1b704ef0ed959efb753e656a4e0425c14e46ae4c3cbdd2919"}, - {file = "watchfiles-1.0.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f8c4f3a1210ed099a99e6a710df4ff2f8069411059ffe30fa5f9467ebed1256b"}, - {file = "watchfiles-1.0.0-cp39-none-win32.whl", hash = "sha256:1e176b6b4119b3f369b2b4e003d53a226295ee862c0962e3afd5a1c15680b4e3"}, - {file = "watchfiles-1.0.0-cp39-none-win_amd64.whl", hash = "sha256:2d9c0518fabf4a3f373b0a94bb9e4ea7a1df18dec45e26a4d182aa8918dee855"}, - {file = "watchfiles-1.0.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f159ac795785cde4899e0afa539f4c723fb5dd336ce5605bc909d34edd00b79b"}, - {file = "watchfiles-1.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:c3d258d78341d5d54c0c804a5b7faa66cd30ba50b2756a7161db07ce15363b8d"}, - {file = "watchfiles-1.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bbd0311588c2de7f9ea5cf3922ccacfd0ec0c1922870a2be503cc7df1ca8be7"}, - {file = "watchfiles-1.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9a13ac46b545a7d0d50f7641eefe47d1597e7d1783a5d89e09d080e6dff44b0"}, - {file = "watchfiles-1.0.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b2bca898c1dc073912d3db7fa6926cc08be9575add9e84872de2c99c688bac4e"}, - {file = "watchfiles-1.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:06d828fe2adc4ac8a64b875ca908b892a3603d596d43e18f7948f3fef5fc671c"}, - {file = "watchfiles-1.0.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:074c7618cd6c807dc4eaa0982b4a9d3f8051cd0b72793511848fd64630174b17"}, - {file = "watchfiles-1.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95dc785bc284552d044e561b8f4fe26d01ab5ca40d35852a6572d542adfeb4bc"}, - {file = "watchfiles-1.0.0.tar.gz", hash = "sha256:37566c844c9ce3b5deb964fe1a23378e575e74b114618d211fbda8f59d7b5dab"}, + {file = "watchfiles-1.0.5-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:5c40fe7dd9e5f81e0847b1ea64e1f5dd79dd61afbedb57759df06767ac719b40"}, + {file = "watchfiles-1.0.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8c0db396e6003d99bb2d7232c957b5f0b5634bbd1b24e381a5afcc880f7373fb"}, + {file = "watchfiles-1.0.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b551d4fb482fc57d852b4541f911ba28957d051c8776e79c3b4a51eb5e2a1b11"}, + {file = "watchfiles-1.0.5-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:830aa432ba5c491d52a15b51526c29e4a4b92bf4f92253787f9726fe01519487"}, + {file = "watchfiles-1.0.5-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a16512051a822a416b0d477d5f8c0e67b67c1a20d9acecb0aafa3aa4d6e7d256"}, + {file = "watchfiles-1.0.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bfe0cbc787770e52a96c6fda6726ace75be7f840cb327e1b08d7d54eadc3bc85"}, + {file = "watchfiles-1.0.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d363152c5e16b29d66cbde8fa614f9e313e6f94a8204eaab268db52231fe5358"}, + {file = "watchfiles-1.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ee32c9a9bee4d0b7bd7cbeb53cb185cf0b622ac761efaa2eba84006c3b3a614"}, + {file = "watchfiles-1.0.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:29c7fd632ccaf5517c16a5188e36f6612d6472ccf55382db6c7fe3fcccb7f59f"}, + {file = "watchfiles-1.0.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8e637810586e6fe380c8bc1b3910accd7f1d3a9a7262c8a78d4c8fb3ba6a2b3d"}, + {file = "watchfiles-1.0.5-cp310-cp310-win32.whl", hash = "sha256:cd47d063fbeabd4c6cae1d4bcaa38f0902f8dc5ed168072874ea11d0c7afc1ff"}, + {file = "watchfiles-1.0.5-cp310-cp310-win_amd64.whl", hash = "sha256:86c0df05b47a79d80351cd179893f2f9c1b1cae49d96e8b3290c7f4bd0ca0a92"}, + {file = "watchfiles-1.0.5-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:237f9be419e977a0f8f6b2e7b0475ababe78ff1ab06822df95d914a945eac827"}, + {file = "watchfiles-1.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0da39ff917af8b27a4bdc5a97ac577552a38aac0d260a859c1517ea3dc1a7c4"}, + {file = "watchfiles-1.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cfcb3952350e95603f232a7a15f6c5f86c5375e46f0bd4ae70d43e3e063c13d"}, + {file = "watchfiles-1.0.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:68b2dddba7a4e6151384e252a5632efcaa9bc5d1c4b567f3cb621306b2ca9f63"}, + {file = "watchfiles-1.0.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:95cf944fcfc394c5f9de794ce581914900f82ff1f855326f25ebcf24d5397418"}, + {file = "watchfiles-1.0.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ecf6cd9f83d7c023b1aba15d13f705ca7b7d38675c121f3cc4a6e25bd0857ee9"}, + {file = "watchfiles-1.0.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:852de68acd6212cd6d33edf21e6f9e56e5d98c6add46f48244bd479d97c967c6"}, + {file = "watchfiles-1.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5730f3aa35e646103b53389d5bc77edfbf578ab6dab2e005142b5b80a35ef25"}, + {file = "watchfiles-1.0.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:18b3bd29954bc4abeeb4e9d9cf0b30227f0f206c86657674f544cb032296acd5"}, + {file = "watchfiles-1.0.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ba5552a1b07c8edbf197055bc9d518b8f0d98a1c6a73a293bc0726dce068ed01"}, + {file = "watchfiles-1.0.5-cp311-cp311-win32.whl", hash = "sha256:2f1fefb2e90e89959447bc0420fddd1e76f625784340d64a2f7d5983ef9ad246"}, + {file = "watchfiles-1.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:b6e76ceb1dd18c8e29c73f47d41866972e891fc4cc7ba014f487def72c1cf096"}, + {file = "watchfiles-1.0.5-cp311-cp311-win_arm64.whl", hash = "sha256:266710eb6fddc1f5e51843c70e3bebfb0f5e77cf4f27129278c70554104d19ed"}, + {file = "watchfiles-1.0.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b5eb568c2aa6018e26da9e6c86f3ec3fd958cee7f0311b35c2630fa4217d17f2"}, + {file = "watchfiles-1.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0a04059f4923ce4e856b4b4e5e783a70f49d9663d22a4c3b3298165996d1377f"}, + {file = "watchfiles-1.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e380c89983ce6e6fe2dd1e1921b9952fb4e6da882931abd1824c092ed495dec"}, + {file = "watchfiles-1.0.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fe43139b2c0fdc4a14d4f8d5b5d967f7a2777fd3d38ecf5b1ec669b0d7e43c21"}, + {file = "watchfiles-1.0.5-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee0822ce1b8a14fe5a066f93edd20aada932acfe348bede8aa2149f1a4489512"}, + {file = "watchfiles-1.0.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a0dbcb1c2d8f2ab6e0a81c6699b236932bd264d4cef1ac475858d16c403de74d"}, + {file = "watchfiles-1.0.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a2014a2b18ad3ca53b1f6c23f8cd94a18ce930c1837bd891262c182640eb40a6"}, + {file = "watchfiles-1.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10f6ae86d5cb647bf58f9f655fcf577f713915a5d69057a0371bc257e2553234"}, + {file = "watchfiles-1.0.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1a7bac2bde1d661fb31f4d4e8e539e178774b76db3c2c17c4bb3e960a5de07a2"}, + {file = "watchfiles-1.0.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ab626da2fc1ac277bbf752446470b367f84b50295264d2d313e28dc4405d663"}, + {file = "watchfiles-1.0.5-cp312-cp312-win32.whl", hash = "sha256:9f4571a783914feda92018ef3901dab8caf5b029325b5fe4558c074582815249"}, + {file = "watchfiles-1.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:360a398c3a19672cf93527f7e8d8b60d8275119c5d900f2e184d32483117a705"}, + {file = "watchfiles-1.0.5-cp312-cp312-win_arm64.whl", hash = "sha256:1a2902ede862969077b97523987c38db28abbe09fb19866e711485d9fbf0d417"}, + {file = "watchfiles-1.0.5-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:0b289572c33a0deae62daa57e44a25b99b783e5f7aed81b314232b3d3c81a11d"}, + {file = "watchfiles-1.0.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a056c2f692d65bf1e99c41045e3bdcaea3cb9e6b5a53dcaf60a5f3bd95fc9763"}, + {file = "watchfiles-1.0.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9dca99744991fc9850d18015c4f0438865414e50069670f5f7eee08340d8b40"}, + {file = "watchfiles-1.0.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:894342d61d355446d02cd3988a7326af344143eb33a2fd5d38482a92072d9563"}, + {file = "watchfiles-1.0.5-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ab44e1580924d1ffd7b3938e02716d5ad190441965138b4aa1d1f31ea0877f04"}, + {file = "watchfiles-1.0.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d6f9367b132078b2ceb8d066ff6c93a970a18c3029cea37bfd7b2d3dd2e5db8f"}, + {file = "watchfiles-1.0.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2e55a9b162e06e3f862fb61e399fe9f05d908d019d87bf5b496a04ef18a970a"}, + {file = "watchfiles-1.0.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0125f91f70e0732a9f8ee01e49515c35d38ba48db507a50c5bdcad9503af5827"}, + {file = "watchfiles-1.0.5-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:13bb21f8ba3248386337c9fa51c528868e6c34a707f729ab041c846d52a0c69a"}, + {file = "watchfiles-1.0.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:839ebd0df4a18c5b3c1b890145b5a3f5f64063c2a0d02b13c76d78fe5de34936"}, + {file = "watchfiles-1.0.5-cp313-cp313-win32.whl", hash = "sha256:4a8ec1e4e16e2d5bafc9ba82f7aaecfeec990ca7cd27e84fb6f191804ed2fcfc"}, + {file = "watchfiles-1.0.5-cp313-cp313-win_amd64.whl", hash = "sha256:f436601594f15bf406518af922a89dcaab416568edb6f65c4e5bbbad1ea45c11"}, + {file = "watchfiles-1.0.5-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:2cfb371be97d4db374cba381b9f911dd35bb5f4c58faa7b8b7106c8853e5d225"}, + {file = "watchfiles-1.0.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a3904d88955fda461ea2531fcf6ef73584ca921415d5cfa44457a225f4a42bc1"}, + {file = "watchfiles-1.0.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2b7a21715fb12274a71d335cff6c71fe7f676b293d322722fe708a9ec81d91f5"}, + {file = "watchfiles-1.0.5-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dfd6ae1c385ab481766b3c61c44aca2b3cd775f6f7c0fa93d979ddec853d29d5"}, + {file = "watchfiles-1.0.5-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b659576b950865fdad31fa491d31d37cf78b27113a7671d39f919828587b429b"}, + {file = "watchfiles-1.0.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1909e0a9cd95251b15bff4261de5dd7550885bd172e3536824bf1cf6b121e200"}, + {file = "watchfiles-1.0.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:832ccc221927c860e7286c55c9b6ebcc0265d5e072f49c7f6456c7798d2b39aa"}, + {file = "watchfiles-1.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85fbb6102b3296926d0c62cfc9347f6237fb9400aecd0ba6bbda94cae15f2b3b"}, + {file = "watchfiles-1.0.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:15ac96dd567ad6c71c71f7b2c658cb22b7734901546cd50a475128ab557593ca"}, + {file = "watchfiles-1.0.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4b6227351e11c57ae997d222e13f5b6f1f0700d84b8c52304e8675d33a808382"}, + {file = "watchfiles-1.0.5-cp39-cp39-win32.whl", hash = "sha256:974866e0db748ebf1eccab17862bc0f0303807ed9cda465d1324625b81293a18"}, + {file = "watchfiles-1.0.5-cp39-cp39-win_amd64.whl", hash = "sha256:9848b21ae152fe79c10dd0197304ada8f7b586d3ebc3f27f43c506e5a52a863c"}, + {file = "watchfiles-1.0.5-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f59b870db1f1ae5a9ac28245707d955c8721dd6565e7f411024fa374b5362d1d"}, + {file = "watchfiles-1.0.5-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9475b0093767e1475095f2aeb1d219fb9664081d403d1dff81342df8cd707034"}, + {file = "watchfiles-1.0.5-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc533aa50664ebd6c628b2f30591956519462f5d27f951ed03d6c82b2dfd9965"}, + {file = "watchfiles-1.0.5-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fed1cd825158dcaae36acce7b2db33dcbfd12b30c34317a88b8ed80f0541cc57"}, + {file = "watchfiles-1.0.5-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:554389562c29c2c182e3908b149095051f81d28c2fec79ad6c8997d7d63e0009"}, + {file = "watchfiles-1.0.5-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a74add8d7727e6404d5dc4dcd7fac65d4d82f95928bbee0cf5414c900e86773e"}, + {file = "watchfiles-1.0.5-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb1489f25b051a89fae574505cc26360c8e95e227a9500182a7fe0afcc500ce0"}, + {file = "watchfiles-1.0.5-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0901429650652d3f0da90bad42bdafc1f9143ff3605633c455c999a2d786cac"}, + {file = "watchfiles-1.0.5.tar.gz", hash = "sha256:b7529b5dcc114679d43827d8c35a07c493ad6f083633d573d81c660abc5979e9"}, ] [package.dependencies] @@ -1026,83 +1103,84 @@ anyio = ">=3.0.0" [[package]] name = "websockets" -version = "14.1" +version = "15.0.1" description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "websockets-14.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a0adf84bc2e7c86e8a202537b4fd50e6f7f0e4a6b6bf64d7ccb96c4cd3330b29"}, - {file = "websockets-14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90b5d9dfbb6d07a84ed3e696012610b6da074d97453bd01e0e30744b472c8179"}, - {file = "websockets-14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2177ee3901075167f01c5e335a6685e71b162a54a89a56001f1c3e9e3d2ad250"}, - {file = "websockets-14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f14a96a0034a27f9d47fd9788913924c89612225878f8078bb9d55f859272b0"}, - {file = "websockets-14.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f874ba705deea77bcf64a9da42c1f5fc2466d8f14daf410bc7d4ceae0a9fcb0"}, - {file = "websockets-14.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9607b9a442392e690a57909c362811184ea429585a71061cd5d3c2b98065c199"}, - {file = "websockets-14.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:bea45f19b7ca000380fbd4e02552be86343080120d074b87f25593ce1700ad58"}, - {file = "websockets-14.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:219c8187b3ceeadbf2afcf0f25a4918d02da7b944d703b97d12fb01510869078"}, - {file = "websockets-14.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ad2ab2547761d79926effe63de21479dfaf29834c50f98c4bf5b5480b5838434"}, - {file = "websockets-14.1-cp310-cp310-win32.whl", hash = "sha256:1288369a6a84e81b90da5dbed48610cd7e5d60af62df9851ed1d1d23a9069f10"}, - {file = "websockets-14.1-cp310-cp310-win_amd64.whl", hash = "sha256:e0744623852f1497d825a49a99bfbec9bea4f3f946df6eb9d8a2f0c37a2fec2e"}, - {file = "websockets-14.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:449d77d636f8d9c17952628cc7e3b8faf6e92a17ec581ec0c0256300717e1512"}, - {file = "websockets-14.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a35f704be14768cea9790d921c2c1cc4fc52700410b1c10948511039be824aac"}, - {file = "websockets-14.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b1f3628a0510bd58968c0f60447e7a692933589b791a6b572fcef374053ca280"}, - {file = "websockets-14.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c3deac3748ec73ef24fc7be0b68220d14d47d6647d2f85b2771cb35ea847aa1"}, - {file = "websockets-14.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7048eb4415d46368ef29d32133134c513f507fff7d953c18c91104738a68c3b3"}, - {file = "websockets-14.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6cf0ad281c979306a6a34242b371e90e891bce504509fb6bb5246bbbf31e7b6"}, - {file = "websockets-14.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cc1fc87428c1d18b643479caa7b15db7d544652e5bf610513d4a3478dbe823d0"}, - {file = "websockets-14.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f95ba34d71e2fa0c5d225bde3b3bdb152e957150100e75c86bc7f3964c450d89"}, - {file = "websockets-14.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9481a6de29105d73cf4515f2bef8eb71e17ac184c19d0b9918a3701c6c9c4f23"}, - {file = "websockets-14.1-cp311-cp311-win32.whl", hash = "sha256:368a05465f49c5949e27afd6fbe0a77ce53082185bbb2ac096a3a8afaf4de52e"}, - {file = "websockets-14.1-cp311-cp311-win_amd64.whl", hash = "sha256:6d24fc337fc055c9e83414c94e1ee0dee902a486d19d2a7f0929e49d7d604b09"}, - {file = "websockets-14.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ed907449fe5e021933e46a3e65d651f641975a768d0649fee59f10c2985529ed"}, - {file = "websockets-14.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:87e31011b5c14a33b29f17eb48932e63e1dcd3fa31d72209848652310d3d1f0d"}, - {file = "websockets-14.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bc6ccf7d54c02ae47a48ddf9414c54d48af9c01076a2e1023e3b486b6e72c707"}, - {file = "websockets-14.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9777564c0a72a1d457f0848977a1cbe15cfa75fa2f67ce267441e465717dcf1a"}, - {file = "websockets-14.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a655bde548ca98f55b43711b0ceefd2a88a71af6350b0c168aa77562104f3f45"}, - {file = "websockets-14.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3dfff83ca578cada2d19e665e9c8368e1598d4e787422a460ec70e531dbdd58"}, - {file = "websockets-14.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6a6c9bcf7cdc0fd41cc7b7944447982e8acfd9f0d560ea6d6845428ed0562058"}, - {file = "websockets-14.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4b6caec8576e760f2c7dd878ba817653144d5f369200b6ddf9771d64385b84d4"}, - {file = "websockets-14.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:eb6d38971c800ff02e4a6afd791bbe3b923a9a57ca9aeab7314c21c84bf9ff05"}, - {file = "websockets-14.1-cp312-cp312-win32.whl", hash = "sha256:1d045cbe1358d76b24d5e20e7b1878efe578d9897a25c24e6006eef788c0fdf0"}, - {file = "websockets-14.1-cp312-cp312-win_amd64.whl", hash = "sha256:90f4c7a069c733d95c308380aae314f2cb45bd8a904fb03eb36d1a4983a4993f"}, - {file = "websockets-14.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:3630b670d5057cd9e08b9c4dab6493670e8e762a24c2c94ef312783870736ab9"}, - {file = "websockets-14.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:36ebd71db3b89e1f7b1a5deaa341a654852c3518ea7a8ddfdf69cc66acc2db1b"}, - {file = "websockets-14.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5b918d288958dc3fa1c5a0b9aa3256cb2b2b84c54407f4813c45d52267600cd3"}, - {file = "websockets-14.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00fe5da3f037041da1ee0cf8e308374e236883f9842c7c465aa65098b1c9af59"}, - {file = "websockets-14.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8149a0f5a72ca36720981418eeffeb5c2729ea55fa179091c81a0910a114a5d2"}, - {file = "websockets-14.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77569d19a13015e840b81550922056acabc25e3f52782625bc6843cfa034e1da"}, - {file = "websockets-14.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cf5201a04550136ef870aa60ad3d29d2a59e452a7f96b94193bee6d73b8ad9a9"}, - {file = "websockets-14.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:88cf9163ef674b5be5736a584c999e98daf3aabac6e536e43286eb74c126b9c7"}, - {file = "websockets-14.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:836bef7ae338a072e9d1863502026f01b14027250a4545672673057997d5c05a"}, - {file = "websockets-14.1-cp313-cp313-win32.whl", hash = "sha256:0d4290d559d68288da9f444089fd82490c8d2744309113fc26e2da6e48b65da6"}, - {file = "websockets-14.1-cp313-cp313-win_amd64.whl", hash = "sha256:8621a07991add373c3c5c2cf89e1d277e49dc82ed72c75e3afc74bd0acc446f0"}, - {file = "websockets-14.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:01bb2d4f0a6d04538d3c5dfd27c0643269656c28045a53439cbf1c004f90897a"}, - {file = "websockets-14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:414ffe86f4d6f434a8c3b7913655a1a5383b617f9bf38720e7c0799fac3ab1c6"}, - {file = "websockets-14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8fda642151d5affdee8a430bd85496f2e2517be3a2b9d2484d633d5712b15c56"}, - {file = "websockets-14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd7c11968bc3860d5c78577f0dbc535257ccec41750675d58d8dc66aa47fe52c"}, - {file = "websockets-14.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a032855dc7db987dff813583d04f4950d14326665d7e714d584560b140ae6b8b"}, - {file = "websockets-14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b7e7ea2f782408c32d86b87a0d2c1fd8871b0399dd762364c731d86c86069a78"}, - {file = "websockets-14.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:39450e6215f7d9f6f7bc2a6da21d79374729f5d052333da4d5825af8a97e6735"}, - {file = "websockets-14.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ceada5be22fa5a5a4cdeec74e761c2ee7db287208f54c718f2df4b7e200b8d4a"}, - {file = "websockets-14.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:3fc753451d471cff90b8f467a1fc0ae64031cf2d81b7b34e1811b7e2691bc4bc"}, - {file = "websockets-14.1-cp39-cp39-win32.whl", hash = "sha256:14839f54786987ccd9d03ed7f334baec0f02272e7ec4f6e9d427ff584aeea8b4"}, - {file = "websockets-14.1-cp39-cp39-win_amd64.whl", hash = "sha256:d9fd19ecc3a4d5ae82ddbfb30962cf6d874ff943e56e0c81f5169be2fda62979"}, - {file = "websockets-14.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e5dc25a9dbd1a7f61eca4b7cb04e74ae4b963d658f9e4f9aad9cd00b688692c8"}, - {file = "websockets-14.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:04a97aca96ca2acedf0d1f332c861c5a4486fdcba7bcef35873820f940c4231e"}, - {file = "websockets-14.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df174ece723b228d3e8734a6f2a6febbd413ddec39b3dc592f5a4aa0aff28098"}, - {file = "websockets-14.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:034feb9f4286476f273b9a245fb15f02c34d9586a5bc936aff108c3ba1b21beb"}, - {file = "websockets-14.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:660c308dabd2b380807ab64b62985eaccf923a78ebc572bd485375b9ca2b7dc7"}, - {file = "websockets-14.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5a42d3ecbb2db5080fc578314439b1d79eef71d323dc661aa616fb492436af5d"}, - {file = "websockets-14.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:ddaa4a390af911da6f680be8be4ff5aaf31c4c834c1a9147bc21cbcbca2d4370"}, - {file = "websockets-14.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a4c805c6034206143fbabd2d259ec5e757f8b29d0a2f0bf3d2fe5d1f60147a4a"}, - {file = "websockets-14.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:205f672a6c2c671a86d33f6d47c9b35781a998728d2c7c2a3e1cf3333fcb62b7"}, - {file = "websockets-14.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ef440054124728cc49b01c33469de06755e5a7a4e83ef61934ad95fc327fbb0"}, - {file = "websockets-14.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7591d6f440af7f73c4bd9404f3772bfee064e639d2b6cc8c94076e71b2471c1"}, - {file = "websockets-14.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:25225cc79cfebc95ba1d24cd3ab86aaa35bcd315d12fa4358939bd55e9bd74a5"}, - {file = "websockets-14.1-py3-none-any.whl", hash = "sha256:4d4fc827a20abe6d544a119896f6b78ee13fe81cbfef416f3f2ddf09a03f0e2e"}, - {file = "websockets-14.1.tar.gz", hash = "sha256:398b10c77d471c0aab20a845e7a60076b6390bfdaac7a6d2edb0d2c59d75e8d8"}, + {file = "websockets-15.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d63efaa0cd96cf0c5fe4d581521d9fa87744540d4bc999ae6e08595a1014b45b"}, + {file = "websockets-15.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ac60e3b188ec7574cb761b08d50fcedf9d77f1530352db4eef1707fe9dee7205"}, + {file = "websockets-15.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5756779642579d902eed757b21b0164cd6fe338506a8083eb58af5c372e39d9a"}, + {file = "websockets-15.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fdfe3e2a29e4db3659dbd5bbf04560cea53dd9610273917799f1cde46aa725e"}, + {file = "websockets-15.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c2529b320eb9e35af0fa3016c187dffb84a3ecc572bcee7c3ce302bfeba52bf"}, + {file = "websockets-15.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac1e5c9054fe23226fb11e05a6e630837f074174c4c2f0fe442996112a6de4fb"}, + {file = "websockets-15.0.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5df592cd503496351d6dc14f7cdad49f268d8e618f80dce0cd5a36b93c3fc08d"}, + {file = "websockets-15.0.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0a34631031a8f05657e8e90903e656959234f3a04552259458aac0b0f9ae6fd9"}, + {file = "websockets-15.0.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3d00075aa65772e7ce9e990cab3ff1de702aa09be3940d1dc88d5abf1ab8a09c"}, + {file = "websockets-15.0.1-cp310-cp310-win32.whl", hash = "sha256:1234d4ef35db82f5446dca8e35a7da7964d02c127b095e172e54397fb6a6c256"}, + {file = "websockets-15.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:39c1fec2c11dc8d89bba6b2bf1556af381611a173ac2b511cf7231622058af41"}, + {file = "websockets-15.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:823c248b690b2fd9303ba00c4f66cd5e2d8c3ba4aa968b2779be9532a4dad431"}, + {file = "websockets-15.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678999709e68425ae2593acf2e3ebcbcf2e69885a5ee78f9eb80e6e371f1bf57"}, + {file = "websockets-15.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d50fd1ee42388dcfb2b3676132c78116490976f1300da28eb629272d5d93e905"}, + {file = "websockets-15.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d99e5546bf73dbad5bf3547174cd6cb8ba7273062a23808ffea025ecb1cf8562"}, + {file = "websockets-15.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66dd88c918e3287efc22409d426c8f729688d89a0c587c88971a0faa2c2f3792"}, + {file = "websockets-15.0.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8dd8327c795b3e3f219760fa603dcae1dcc148172290a8ab15158cf85a953413"}, + {file = "websockets-15.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8fdc51055e6ff4adeb88d58a11042ec9a5eae317a0a53d12c062c8a8865909e8"}, + {file = "websockets-15.0.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:693f0192126df6c2327cce3baa7c06f2a117575e32ab2308f7f8216c29d9e2e3"}, + {file = "websockets-15.0.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:54479983bd5fb469c38f2f5c7e3a24f9a4e70594cd68cd1fa6b9340dadaff7cf"}, + {file = "websockets-15.0.1-cp311-cp311-win32.whl", hash = "sha256:16b6c1b3e57799b9d38427dda63edcbe4926352c47cf88588c0be4ace18dac85"}, + {file = "websockets-15.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:27ccee0071a0e75d22cb35849b1db43f2ecd3e161041ac1ee9d2352ddf72f065"}, + {file = "websockets-15.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3e90baa811a5d73f3ca0bcbf32064d663ed81318ab225ee4f427ad4e26e5aff3"}, + {file = "websockets-15.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:592f1a9fe869c778694f0aa806ba0374e97648ab57936f092fd9d87f8bc03665"}, + {file = "websockets-15.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0701bc3cfcb9164d04a14b149fd74be7347a530ad3bbf15ab2c678a2cd3dd9a2"}, + {file = "websockets-15.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8b56bdcdb4505c8078cb6c7157d9811a85790f2f2b3632c7d1462ab5783d215"}, + {file = "websockets-15.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0af68c55afbd5f07986df82831c7bff04846928ea8d1fd7f30052638788bc9b5"}, + {file = "websockets-15.0.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64dee438fed052b52e4f98f76c5790513235efaa1ef7f3f2192c392cd7c91b65"}, + {file = "websockets-15.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d5f6b181bb38171a8ad1d6aa58a67a6aa9d4b38d0f8c5f496b9e42561dfc62fe"}, + {file = "websockets-15.0.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5d54b09eba2bada6011aea5375542a157637b91029687eb4fdb2dab11059c1b4"}, + {file = "websockets-15.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3be571a8b5afed347da347bfcf27ba12b069d9d7f42cb8c7028b5e98bbb12597"}, + {file = "websockets-15.0.1-cp312-cp312-win32.whl", hash = "sha256:c338ffa0520bdb12fbc527265235639fb76e7bc7faafbb93f6ba80d9c06578a9"}, + {file = "websockets-15.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:fcd5cf9e305d7b8338754470cf69cf81f420459dbae8a3b40cee57417f4614a7"}, + {file = "websockets-15.0.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ee443ef070bb3b6ed74514f5efaa37a252af57c90eb33b956d35c8e9c10a1931"}, + {file = "websockets-15.0.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5a939de6b7b4e18ca683218320fc67ea886038265fd1ed30173f5ce3f8e85675"}, + {file = "websockets-15.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:746ee8dba912cd6fc889a8147168991d50ed70447bf18bcda7039f7d2e3d9151"}, + {file = "websockets-15.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:595b6c3969023ecf9041b2936ac3827e4623bfa3ccf007575f04c5a6aa318c22"}, + {file = "websockets-15.0.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c714d2fc58b5ca3e285461a4cc0c9a66bd0e24c5da9911e30158286c9b5be7f"}, + {file = "websockets-15.0.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f3c1e2ab208db911594ae5b4f79addeb3501604a165019dd221c0bdcabe4db8"}, + {file = "websockets-15.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:229cf1d3ca6c1804400b0a9790dc66528e08a6a1feec0d5040e8b9eb14422375"}, + {file = "websockets-15.0.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:756c56e867a90fb00177d530dca4b097dd753cde348448a1012ed6c5131f8b7d"}, + {file = "websockets-15.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:558d023b3df0bffe50a04e710bc87742de35060580a293c2a984299ed83bc4e4"}, + {file = "websockets-15.0.1-cp313-cp313-win32.whl", hash = "sha256:ba9e56e8ceeeedb2e080147ba85ffcd5cd0711b89576b83784d8605a7df455fa"}, + {file = "websockets-15.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:e09473f095a819042ecb2ab9465aee615bd9c2028e4ef7d933600a8401c79561"}, + {file = "websockets-15.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5f4c04ead5aed67c8a1a20491d54cdfba5884507a48dd798ecaf13c74c4489f5"}, + {file = "websockets-15.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:abdc0c6c8c648b4805c5eacd131910d2a7f6455dfd3becab248ef108e89ab16a"}, + {file = "websockets-15.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a625e06551975f4b7ea7102bc43895b90742746797e2e14b70ed61c43a90f09b"}, + {file = "websockets-15.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d591f8de75824cbb7acad4e05d2d710484f15f29d4a915092675ad3456f11770"}, + {file = "websockets-15.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:47819cea040f31d670cc8d324bb6435c6f133b8c7a19ec3d61634e62f8d8f9eb"}, + {file = "websockets-15.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac017dd64572e5c3bd01939121e4d16cf30e5d7e110a119399cf3133b63ad054"}, + {file = "websockets-15.0.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:4a9fac8e469d04ce6c25bb2610dc535235bd4aa14996b4e6dbebf5e007eba5ee"}, + {file = "websockets-15.0.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363c6f671b761efcb30608d24925a382497c12c506b51661883c3e22337265ed"}, + {file = "websockets-15.0.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2034693ad3097d5355bfdacfffcbd3ef5694f9718ab7f29c29689a9eae841880"}, + {file = "websockets-15.0.1-cp39-cp39-win32.whl", hash = "sha256:3b1ac0d3e594bf121308112697cf4b32be538fb1444468fb0a6ae4feebc83411"}, + {file = "websockets-15.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:b7643a03db5c95c799b89b31c036d5f27eeb4d259c798e878d6937d71832b1e4"}, + {file = "websockets-15.0.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0c9e74d766f2818bb95f84c25be4dea09841ac0f734d1966f415e4edfc4ef1c3"}, + {file = "websockets-15.0.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1009ee0c7739c08a0cd59de430d6de452a55e42d6b522de7aa15e6f67db0b8e1"}, + {file = "websockets-15.0.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76d1f20b1c7a2fa82367e04982e708723ba0e7b8d43aa643d3dcd404d74f1475"}, + {file = "websockets-15.0.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f29d80eb9a9263b8d109135351caf568cc3f80b9928bccde535c235de55c22d9"}, + {file = "websockets-15.0.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b359ed09954d7c18bbc1680f380c7301f92c60bf924171629c5db97febb12f04"}, + {file = "websockets-15.0.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:cad21560da69f4ce7658ca2cb83138fb4cf695a2ba3e475e0559e05991aa8122"}, + {file = "websockets-15.0.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7f493881579c90fc262d9cdbaa05a6b54b3811c2f300766748db79f098db9940"}, + {file = "websockets-15.0.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:47b099e1f4fbc95b701b6e85768e1fcdaf1630f3cbe4765fa216596f12310e2e"}, + {file = "websockets-15.0.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67f2b6de947f8c757db2db9c71527933ad0019737ec374a8a6be9a956786aaf9"}, + {file = "websockets-15.0.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d08eb4c2b7d6c41da6ca0600c077e93f5adcfd979cd777d747e9ee624556da4b"}, + {file = "websockets-15.0.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b826973a4a2ae47ba357e4e82fa44a463b8f168e1ca775ac64521442b19e87f"}, + {file = "websockets-15.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:21c1fa28a6a7e3cbdc171c694398b6df4744613ce9b36b1a498e816787e28123"}, + {file = "websockets-15.0.1-py3-none-any.whl", hash = "sha256:f7a866fbc1e97b5c617ee4116daaa09b722101d4a3c170c787450ba409f9736f"}, + {file = "websockets-15.0.1.tar.gz", hash = "sha256:82544de02076bafba038ce055ee6412d68da13ab47f0c60cab827346de828dee"}, ] [metadata] -lock-version = "2.0" +lock-version = "2.1" python-versions = "^3.10" -content-hash = "40519536ff8fc9ef680f9ba91cd9218668b03c25b93b220842efb4036d713dd1" +content-hash = "39cf946038d2ddecb602ddfae3bb09106ed2d46fd5c618786e92fa148d6498d6" diff --git a/examples/fastapi_tortoiseorm/pyproject.toml b/examples/fastapi_tortoiseorm/pyproject.toml index 5a55a2f..47d5ec6 100644 --- a/examples/fastapi_tortoiseorm/pyproject.toml +++ b/examples/fastapi_tortoiseorm/pyproject.toml @@ -10,8 +10,8 @@ package-mode = false [tool.poetry.dependencies] python = "^3.10" -fastapi = {"version" = "^0.112.0", extras = ["standard"]} -fastadmin = {"version" = "^0.2.15", extras = ["fastapi", "tortoise-orm"]} +fastapi = {"version" = "^0.112.4", extras = ["standard"]} +fastadmin = {"version" = "^0.2.19", extras = ["fastapi", "tortoise-orm"]} [build-system] requires = ["poetry-core>=1.0.0"] diff --git a/fastadmin/api/frameworks/django/app/urls.py b/fastadmin/api/frameworks/django/app/urls.py index b4a43c3..d49059c 100644 --- a/fastadmin/api/frameworks/django/app/urls.py +++ b/fastadmin/api/frameworks/django/app/urls.py @@ -41,7 +41,7 @@ def get_admin_urls(): path("api/action//", action), path("api/configuration", configuration), re_path( - r"^%s(?P.*)$" % re.escape("static"), + r"^%s(?P.*)$" % re.escape("static"), # noqa: UP031 serve, kwargs={"document_root": ROOT_DIR / "static"}, ), diff --git a/fastadmin/models/helpers.py b/fastadmin/models/helpers.py index 35698d9..336381a 100644 --- a/fastadmin/models/helpers.py +++ b/fastadmin/models/helpers.py @@ -110,8 +110,7 @@ async def generate_models_schema( :return: A list of models / inline models schemas. """ models_schemas: list[ModelSchema | InlineModelSchema] = [] - for orm_model_cls in admin_models: - admin_model_obj: ModelAdmin | InlineModelAdmin = admin_models[orm_model_cls] + for orm_model_cls, admin_model_obj in admin_models.items(): orm_model_fields = admin_model_obj.get_model_fields_with_widget_types() orm_model_fields_for_serialize = admin_model_obj.get_fields_for_serialize() diff --git a/fastadmin/models/orms/django.py b/fastadmin/models/orms/django.py index 40014f5..46f57ec 100644 --- a/fastadmin/models/orms/django.py +++ b/fastadmin/models/orms/django.py @@ -113,7 +113,18 @@ def get_model_fields_with_widget_types( form_widget_props["mode"] = "tags" filter_widget_type = WidgetType.Select filter_widget_props["mode"] = "tags" - case "SmallAutoField" | "AutoField" | "BigAutoField" | "SmallIntegerField" | "BigIntegerField" | "PositiveIntegerField" | "PositiveSmallIntegerField" | "IntegerField" | "FloatField" | "DecimalField": + case ( + "SmallAutoField" + | "AutoField" + | "BigAutoField" + | "SmallIntegerField" + | "BigIntegerField" + | "PositiveIntegerField" + | "PositiveSmallIntegerField" + | "IntegerField" + | "FloatField" + | "DecimalField" + ): form_widget_type = WidgetType.InputNumber filter_widget_type = WidgetType.InputNumber case "DateField": diff --git a/fastadmin/models/orms/ponyorm.py b/fastadmin/models/orms/ponyorm.py index a6ad59f..fd0ea3b 100644 --- a/fastadmin/models/orms/ponyorm.py +++ b/fastadmin/models/orms/ponyorm.py @@ -267,7 +267,8 @@ def orm_get_list( # TODO: support icontains here filter_expr = f""""{search}" in m.{search_field}""" qs_ids = qs.filter(filter_expr) - ids += [o.id for o in qs_ids] + objs = list(qs_ids) + ids += [o.id for o in objs] qs = qs.filter(lambda m: m.id in set(ids)) ordering = [sort_by] if sort_by else self.ordering @@ -298,7 +299,7 @@ def orm_get_obj(self, id: UUID | int) -> Any | None: :params id: an id of object. :return: An object. """ - return next((i for i in self.model_cls.select(**{self.get_model_pk_name(self.model_cls): id})), None) + return self.model_cls.select(**{self.get_model_pk_name(self.model_cls): id}).first() @sync_to_async @db_session @@ -310,7 +311,7 @@ def orm_save_obj(self, id: UUID | Any | None, payload: dict) -> Any: :return: An object. """ if id: - obj = next((i for i in self.model_cls.select(**{self.get_model_pk_name(self.model_cls): id})), None) + obj = self.model_cls.select(**{self.get_model_pk_name(self.model_cls): id}).first() if not obj: return None obj.set(**payload) @@ -328,7 +329,7 @@ def orm_delete_obj(self, id: UUID | int) -> None: :params id: an id of object. :return: None. """ - obj = next((i for i in self.model_cls.select(**{self.get_model_pk_name(self.model_cls): id})), None) + obj = self.model_cls.select(**{self.get_model_pk_name(self.model_cls): id}).first() if not obj: return obj.delete() @@ -346,7 +347,7 @@ def orm_get_m2m_ids(self, obj: Any, field: str) -> list[int | UUID]: :return: A list of ids. """ key_id = self.get_model_pk_name(self.model_cls) - obj = next((i for i in self.model_cls.select(**{key_id: getattr(obj, key_id)})), None) + obj = self.model_cls.select(**{key_id: getattr(obj, key_id)}).first() if not obj: return [] rel_model_cls = getattr(self.model_cls, field).py_type @@ -365,7 +366,7 @@ def orm_save_m2m_ids(self, obj: Any, field: str, ids: list[int | UUID]) -> None: :return: A list of ids. """ key_id = self.get_model_pk_name(self.model_cls) - obj = next((i for i in self.model_cls.select(**{key_id: getattr(obj, key_id)})), None) + obj = self.model_cls.select(**{key_id: getattr(obj, key_id)}).first() if not obj: return getattr(obj, field).clear() @@ -388,7 +389,6 @@ def orm_save_upload_field(self, obj: Any, field: str, base64: str) -> None: :return: A list of ids. """ - ... @sync_to_async @db_session @@ -403,7 +403,7 @@ def serialize_obj_attributes( """ data = {} key_id = self.get_model_pk_name(self.model_cls) - obj = next((i for i in self.model_cls.select(**{key_id: getattr(obj, key_id)})), None) + obj = self.model_cls.select(**{key_id: getattr(obj, key_id)}).first() if not obj: return data diff --git a/fastadmin/models/orms/sqlalchemy.py b/fastadmin/models/orms/sqlalchemy.py index 9019932..36651cb 100644 --- a/fastadmin/models/orms/sqlalchemy.py +++ b/fastadmin/models/orms/sqlalchemy.py @@ -437,7 +437,6 @@ async def orm_save_upload_field(self, obj: Any, field: str, base64: str) -> None :return: A list of ids. """ - ... class SqlAlchemyModelAdmin(SqlAlchemyMixin, ModelAdmin): diff --git a/fastadmin/models/orms/tortoise.py b/fastadmin/models/orms/tortoise.py index 64b1898..430600a 100644 --- a/fastadmin/models/orms/tortoise.py +++ b/fastadmin/models/orms/tortoise.py @@ -351,7 +351,6 @@ async def orm_save_upload_field(self, obj: Any, field: str, base64: str) -> None :return: A list of ids. """ - ... class TortoiseModelAdmin(TortoiseMixin, ModelAdmin): diff --git a/fastadmin/static/assets/worker-D1fCgYB7.js b/fastadmin/static/assets/worker-D1fCgYB7.js new file mode 100644 index 0000000..c7d3232 --- /dev/null +++ b/fastadmin/static/assets/worker-D1fCgYB7.js @@ -0,0 +1,13 @@ +var iN=Object.defineProperty,sN=Object.defineProperties;var oN=Object.getOwnPropertyDescriptors;var q0=Object.getOwnPropertySymbols;var aN=Object.prototype.hasOwnProperty,uN=Object.prototype.propertyIsEnumerable;var R0=Se=>{throw TypeError(Se)},Ot=Math.pow,Oc=(Se,se,Re)=>se in Se?iN(Se,se,{enumerable:!0,configurable:!0,writable:!0,value:Re}):Se[se]=Re,ir=(Se,se)=>{for(var Re in se||(se={}))aN.call(se,Re)&&Oc(Se,Re,se[Re]);if(q0)for(var Re of q0(se))uN.call(se,Re)&&Oc(Se,Re,se[Re]);return Se},Ac=(Se,se)=>sN(Se,oN(se));var Te=(Se,se,Re)=>Oc(Se,typeof se!="symbol"?se+"":se,Re),Ic=(Se,se,Re)=>se.has(Se)||R0("Cannot "+Re);var gt=(Se,se,Re)=>(Ic(Se,se,"read from private field"),Re?Re.call(Se):se.get(Se)),Tc=(Se,se,Re)=>se.has(Se)?R0("Cannot add the same private member more than once"):se instanceof WeakSet?se.add(Se):se.set(Se,Re),hn=(Se,se,Re,Er)=>(Ic(Se,se,"write to private field"),Er?Er.call(Se,Re):se.set(Se,Re),Re),kc=(Se,se,Re)=>(Ic(Se,se,"access private method"),Re);(function(){"use strict";function Se(e,r){var t={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&r.indexOf(n)<0&&(t[n]=e[n]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(e);i{r.has(a.id)||(r.add(a.id),e.push(a))})}return!1}function xr(e,r,t,n){if(t(e))return!0;r.add(e.id);for(const s of n(e.id))if(!r.has(s.id)&&xr(s,r,t,n))return!0;return!1}const Cc=()=>!0;class O0{constructor(r){Te(this,"graph");Te(this,"nodeFilter");Te(this,"edgeFilter");Te(this,"cacheEnabled");Te(this,"inEdgesMap",new Map);Te(this,"outEdgesMap",new Map);Te(this,"bothEdgesMap",new Map);Te(this,"allNodesMap",new Map);Te(this,"allEdgesMap",new Map);Te(this,"clearCache",()=>{this.inEdgesMap.clear(),this.outEdgesMap.clear(),this.bothEdgesMap.clear(),this.allNodesMap.clear(),this.allEdgesMap.clear()});Te(this,"refreshCache",()=>{this.clearCache(),this.updateCache(this.graph.getAllNodes().map(r=>r.id))});Te(this,"updateCache",r=>{const t=new Set;r.forEach(n=>{const i=this.bothEdgesMap.get(n);if(i&&i.forEach(s=>t.add(s.id)),!this.hasNode(n))this.inEdgesMap.delete(n),this.outEdgesMap.delete(n),this.bothEdgesMap.delete(n),this.allNodesMap.delete(n);else{const s=this.graph.getRelatedEdges(n,"in").filter(this.edgeFilter),a=this.graph.getRelatedEdges(n,"out").filter(this.edgeFilter),o=Array.from(new Set([...s,...a]));o.forEach(c=>t.add(c.id)),this.inEdgesMap.set(n,s),this.outEdgesMap.set(n,a),this.bothEdgesMap.set(n,o),this.allNodesMap.set(n,this.graph.getNode(n))}}),t.forEach(n=>{this.hasEdge(n)?this.allEdgesMap.set(n,this.graph.getEdge(n)):this.allEdgesMap.delete(n)})});Te(this,"handleGraphChanged",r=>{const t=new Set;r.changes.forEach(n=>{switch(n.type){case"NodeAdded":t.add(n.value.id);break;case"NodeDataUpdated":t.add(n.id);break;case"EdgeAdded":t.add(n.value.source),t.add(n.value.target);break;case"EdgeUpdated":(n.propertyName==="source"||n.propertyName==="target")&&(t.add(n.oldValue),t.add(n.newValue));break;case"EdgeDataUpdated":if(r.graph.hasEdge(n.id)){const i=r.graph.getEdge(n.id);t.add(i.source),t.add(i.target)}break;case"EdgeRemoved":t.add(n.value.source),t.add(n.value.target);break;case"NodeRemoved":t.add(n.value.id);break}}),this.updateCache(t)});this.graph=r.graph;const t=r.nodeFilter||Cc,n=r.edgeFilter||Cc;this.nodeFilter=t,this.edgeFilter=i=>{const{source:s,target:a}=this.graph.getEdgeDetail(i.id);return!t(s)||!t(a)?!1:n(i,s,a)},r.cache==="auto"?(this.cacheEnabled=!0,this.startAutoCache()):r.cache==="manual"?this.cacheEnabled=!0:this.cacheEnabled=!1}startAutoCache(){this.refreshCache(),this.graph.on("changed",this.handleGraphChanged)}stopAutoCache(){this.graph.off("changed",this.handleGraphChanged)}checkNodeExistence(r){this.getNode(r)}hasNode(r){if(!this.graph.hasNode(r))return!1;const t=this.graph.getNode(r);return this.nodeFilter(t)}areNeighbors(r,t){return this.checkNodeExistence(r),this.getNeighbors(t).some(n=>n.id===r)}getNode(r){const t=this.graph.getNode(r);if(!this.nodeFilter(t))throw new Error("Node not found for id: "+r);return t}getRelatedEdges(r,t){return this.checkNodeExistence(r),this.cacheEnabled?t==="in"?this.inEdgesMap.get(r):t==="out"?this.outEdgesMap.get(r):this.bothEdgesMap.get(r):this.graph.getRelatedEdges(r,t).filter(this.edgeFilter)}getDegree(r,t){return this.getRelatedEdges(r,t).length}getSuccessors(r){const n=this.getRelatedEdges(r,"out").map(i=>this.getNode(i.target));return Array.from(new Set(n))}getPredecessors(r){const n=this.getRelatedEdges(r,"in").map(i=>this.getNode(i.source));return Array.from(new Set(n))}getNeighbors(r){const t=this.getPredecessors(r),n=this.getSuccessors(r);return Array.from(new Set([...t,...n]))}hasEdge(r){if(!this.graph.hasEdge(r))return!1;const t=this.graph.getEdge(r);return this.edgeFilter(t)}getEdge(r){const t=this.graph.getEdge(r);if(!this.edgeFilter(t))throw new Error("Edge not found for id: "+r);return t}getEdgeDetail(r){const t=this.getEdge(r);return{edge:t,source:this.getNode(t.source),target:this.getNode(t.target)}}hasTreeStructure(r){return this.graph.hasTreeStructure(r)}getRoots(r){return this.graph.getRoots(r).filter(this.nodeFilter)}getChildren(r,t){return this.checkNodeExistence(r),this.graph.getChildren(r,t).filter(this.nodeFilter)}getParent(r,t){this.checkNodeExistence(r);const n=this.graph.getParent(r,t);return!n||!this.nodeFilter(n)?null:n}getAllNodes(){return this.cacheEnabled?Array.from(this.allNodesMap.values()):this.graph.getAllNodes().filter(this.nodeFilter)}getAllEdges(){return this.cacheEnabled?Array.from(this.allEdgesMap.values()):this.graph.getAllEdges().filter(this.edgeFilter)}bfs(r,t,n="out"){const i={in:this.getPredecessors.bind(this),out:this.getSuccessors.bind(this),both:this.getNeighbors.bind(this)}[n];dn([this.getNode(r)],new Set,t,i)}dfs(r,t,n="out"){const i={in:this.getPredecessors.bind(this),out:this.getSuccessors.bind(this),both:this.getNeighbors.bind(this)}[n];xr(this.getNode(r),new Set,t,i)}}class Be extends Er{constructor(t){super();Te(this,"nodeMap",new Map);Te(this,"edgeMap",new Map);Te(this,"inEdgesMap",new Map);Te(this,"outEdgesMap",new Map);Te(this,"bothEdgesMap",new Map);Te(this,"treeIndices",new Map);Te(this,"changes",[]);Te(this,"batchCount",0);Te(this,"onChanged",()=>{});Te(this,"batch",t=>{this.batchCount+=1,t(),this.batchCount-=1,this.batchCount||this.commit()});t&&(t.nodes&&this.addNodes(t.nodes),t.edges&&this.addEdges(t.edges),t.tree&&this.addTree(t.tree),t.onChanged&&(this.onChanged=t.onChanged))}commit(){const t=this.changes;this.changes=[];const n={graph:this,changes:t};this.emit("changed",n),this.onChanged(n)}reduceChanges(t){let n=[];return t.forEach(i=>{switch(i.type){case"NodeRemoved":{let s=!1;n=n.filter(a=>{if(a.type==="NodeAdded"){const o=a.value.id===i.value.id;return o&&(s=!0),!o}else{if(a.type==="NodeDataUpdated")return a.id!==i.value.id;if(a.type==="TreeStructureChanged")return a.nodeId!==i.value.id}return!0}),s||n.push(i);break}case"EdgeRemoved":{let s=!1;n=n.filter(a=>{if(a.type==="EdgeAdded"){const o=a.value.id===i.value.id;return o&&(s=!0),!o}else if(a.type==="EdgeDataUpdated"||a.type==="EdgeUpdated")return a.id!==i.value.id;return!0}),s||n.push(i);break}case"NodeDataUpdated":case"EdgeDataUpdated":case"EdgeUpdated":{const s=n.findIndex(o=>o.type===i.type&&o.id===i.id&&(i.propertyName===void 0||o.propertyName===i.propertyName)),a=n[s];a?i.propertyName!==void 0?a.newValue=i.newValue:(n.splice(s,1),n.push(i)):n.push(i);break}case"TreeStructureDetached":{n=n.filter(s=>s.type==="TreeStructureAttached"||s.type==="TreeStructureChanged"?s.treeKey!==i.treeKey:!0),n.push(i);break}case"TreeStructureChanged":{const s=n.find(a=>a.type==="TreeStructureChanged"&&a.treeKey===i.treeKey&&a.nodeId===i.nodeId);s?s.newParentId=i.newParentId:n.push(i);break}default:n.push(i);break}}),n}checkNodeExistence(t){this.getNode(t)}hasNode(t){return this.nodeMap.has(t)}areNeighbors(t,n){return this.getNeighbors(n).some(i=>i.id===t)}getNode(t){const n=this.nodeMap.get(t);if(!n)throw new Error("Node not found for id: "+t);return n}getRelatedEdges(t,n){if(this.checkNodeExistence(t),n==="in"){const i=this.inEdgesMap.get(t);return Array.from(i)}else if(n==="out"){const i=this.outEdgesMap.get(t);return Array.from(i)}else{const i=this.bothEdgesMap.get(t);return Array.from(i)}}getDegree(t,n){return this.getRelatedEdges(t,n).length}getSuccessors(t){const i=this.getRelatedEdges(t,"out").map(s=>this.getNode(s.target));return Array.from(new Set(i))}getPredecessors(t){const i=this.getRelatedEdges(t,"in").map(s=>this.getNode(s.source));return Array.from(new Set(i))}getNeighbors(t){const n=this.getPredecessors(t),i=this.getSuccessors(t);return Array.from(new Set([...n,...i]))}doAddNode(t){if(this.hasNode(t.id))throw new Error("Node already exists: "+t.id);this.nodeMap.set(t.id,t),this.inEdgesMap.set(t.id,new Set),this.outEdgesMap.set(t.id,new Set),this.bothEdgesMap.set(t.id,new Set),this.treeIndices.forEach(n=>{n.childrenMap.set(t.id,new Set)}),this.changes.push({type:"NodeAdded",value:t})}addNodes(t){this.batch(()=>{for(const n of t)this.doAddNode(n)})}addNode(t){this.addNodes([t])}doRemoveNode(t){const n=this.getNode(t),i=this.bothEdgesMap.get(t);i==null||i.forEach(s=>this.doRemoveEdge(s.id)),this.nodeMap.delete(t),this.treeIndices.forEach(s=>{var o,c;(o=s.childrenMap.get(t))==null||o.forEach(f=>{s.parentMap.delete(f.id)});const a=s.parentMap.get(t);a&&((c=s.childrenMap.get(a.id))==null||c.delete(n)),s.parentMap.delete(t),s.childrenMap.delete(t)}),this.bothEdgesMap.delete(t),this.inEdgesMap.delete(t),this.outEdgesMap.delete(t),this.changes.push({type:"NodeRemoved",value:n})}removeNodes(t){this.batch(()=>{t.forEach(n=>this.doRemoveNode(n))})}removeNode(t){this.removeNodes([t])}updateNodeDataProperty(t,n,i){const s=this.getNode(t);this.batch(()=>{const a=s.data[n],o=i;s.data[n]=o,this.changes.push({type:"NodeDataUpdated",id:t,propertyName:n,oldValue:a,newValue:o})})}mergeNodeData(t,n){this.batch(()=>{Object.entries(n).forEach(([i,s])=>{this.updateNodeDataProperty(t,i,s)})})}updateNodeData(...t){const n=t[0],i=this.getNode(n);if(typeof t[1]=="string"){this.updateNodeDataProperty(n,t[1],t[2]);return}let s;if(typeof t[1]=="function"){const a=t[1];s=a(i.data)}else typeof t[1]=="object"&&(s=t[1]);this.batch(()=>{const a=i.data,o=s;i.data=s,this.changes.push({type:"NodeDataUpdated",id:n,oldValue:a,newValue:o})})}checkEdgeExistence(t){if(!this.hasEdge(t))throw new Error("Edge not found for id: "+t)}hasEdge(t){return this.edgeMap.has(t)}getEdge(t){return this.checkEdgeExistence(t),this.edgeMap.get(t)}getEdgeDetail(t){const n=this.getEdge(t);return{edge:n,source:this.getNode(n.source),target:this.getNode(n.target)}}doAddEdge(t){if(this.hasEdge(t.id))throw new Error("Edge already exists: "+t.id);this.checkNodeExistence(t.source),this.checkNodeExistence(t.target),this.edgeMap.set(t.id,t);const n=this.inEdgesMap.get(t.target),i=this.outEdgesMap.get(t.source),s=this.bothEdgesMap.get(t.source),a=this.bothEdgesMap.get(t.target);n.add(t),i.add(t),s.add(t),a.add(t),this.changes.push({type:"EdgeAdded",value:t})}addEdges(t){this.batch(()=>{for(const n of t)this.doAddEdge(n)})}addEdge(t){this.addEdges([t])}doRemoveEdge(t){const n=this.getEdge(t),i=this.outEdgesMap.get(n.source),s=this.inEdgesMap.get(n.target),a=this.bothEdgesMap.get(n.source),o=this.bothEdgesMap.get(n.target);i.delete(n),s.delete(n),a.delete(n),o.delete(n),this.edgeMap.delete(t),this.changes.push({type:"EdgeRemoved",value:n})}removeEdges(t){this.batch(()=>{t.forEach(n=>this.doRemoveEdge(n))})}removeEdge(t){this.removeEdges([t])}updateEdgeSource(t,n){const i=this.getEdge(t);this.checkNodeExistence(n);const s=i.source,a=n;this.outEdgesMap.get(s).delete(i),this.bothEdgesMap.get(s).delete(i),this.outEdgesMap.get(a).add(i),this.bothEdgesMap.get(a).add(i),i.source=n,this.batch(()=>{this.changes.push({type:"EdgeUpdated",id:t,propertyName:"source",oldValue:s,newValue:a})})}updateEdgeTarget(t,n){const i=this.getEdge(t);this.checkNodeExistence(n);const s=i.target,a=n;this.inEdgesMap.get(s).delete(i),this.bothEdgesMap.get(s).delete(i),this.inEdgesMap.get(a).add(i),this.bothEdgesMap.get(a).add(i),i.target=n,this.batch(()=>{this.changes.push({type:"EdgeUpdated",id:t,propertyName:"target",oldValue:s,newValue:a})})}updateEdgeDataProperty(t,n,i){const s=this.getEdge(t);this.batch(()=>{const a=s.data[n],o=i;s.data[n]=o,this.changes.push({type:"EdgeDataUpdated",id:t,propertyName:n,oldValue:a,newValue:o})})}updateEdgeData(...t){const n=t[0],i=this.getEdge(n);if(typeof t[1]=="string"){this.updateEdgeDataProperty(n,t[1],t[2]);return}let s;if(typeof t[1]=="function"){const a=t[1];s=a(i.data)}else typeof t[1]=="object"&&(s=t[1]);this.batch(()=>{const a=i.data,o=s;i.data=s,this.changes.push({type:"EdgeDataUpdated",id:n,oldValue:a,newValue:o})})}mergeEdgeData(t,n){this.batch(()=>{Object.entries(n).forEach(([i,s])=>{this.updateEdgeDataProperty(t,i,s)})})}checkTreeExistence(t){if(!this.hasTreeStructure(t))throw new Error("Tree structure not found for treeKey: "+t)}hasTreeStructure(t){return this.treeIndices.has(t)}attachTreeStructure(t){this.treeIndices.has(t)||(this.treeIndices.set(t,{parentMap:new Map,childrenMap:new Map}),this.batch(()=>{this.changes.push({type:"TreeStructureAttached",treeKey:t})}))}detachTreeStructure(t){this.checkTreeExistence(t),this.treeIndices.delete(t),this.batch(()=>{this.changes.push({type:"TreeStructureDetached",treeKey:t})})}addTree(t,n){this.batch(()=>{this.attachTreeStructure(n);const i=[],s=Array.isArray(t)?t:[t];for(;s.length;){const a=s.shift();i.push(a),a.children&&s.push(...a.children)}this.addNodes(i),i.forEach(a=>{var o;(o=a.children)==null||o.forEach(c=>{this.setParent(c.id,a.id,n)})})})}getRoots(t){return this.checkTreeExistence(t),this.getAllNodes().filter(n=>!this.getParent(n.id,t))}getChildren(t,n){this.checkNodeExistence(t),this.checkTreeExistence(n);const s=this.treeIndices.get(n).childrenMap.get(t);return Array.from(s||[])}getParent(t,n){return this.checkNodeExistence(t),this.checkTreeExistence(n),this.treeIndices.get(n).parentMap.get(t)||null}getAncestors(t,n){const i=[];let s=this.getNode(t),a;for(;a=this.getParent(s.id,n);)i.push(a),s=a;return i}setParent(t,n,i){var l,p;this.checkTreeExistence(i);const s=this.treeIndices.get(i);if(!s)return;const a=this.getNode(t),o=s.parentMap.get(t);if((o==null?void 0:o.id)===n)return;if(n==null){o&&((l=s.childrenMap.get(o.id))==null||l.delete(a)),s.parentMap.delete(t);return}const c=this.getNode(n);s.parentMap.set(t,c),o&&((p=s.childrenMap.get(o.id))==null||p.delete(a));let f=s.childrenMap.get(c.id);f||(f=new Set,s.childrenMap.set(c.id,f)),f.add(a),this.batch(()=>{this.changes.push({type:"TreeStructureChanged",treeKey:i,nodeId:t,oldParentId:o==null?void 0:o.id,newParentId:c.id})})}dfsTree(t,n,i){const s=a=>this.getChildren(a,i);return xr(this.getNode(t),new Set,n,s)}bfsTree(t,n,i){const s=a=>this.getChildren(a,i);return dn([this.getNode(t)],new Set,n,s)}getAllNodes(){return Array.from(this.nodeMap.values())}getAllEdges(){return Array.from(this.edgeMap.values())}bfs(t,n,i="out"){const s={in:this.getPredecessors.bind(this),out:this.getSuccessors.bind(this),both:this.getNeighbors.bind(this)}[i];return dn([this.getNode(t)],new Set,n,s)}dfs(t,n,i="out"){const s={in:this.getPredecessors.bind(this),out:this.getSuccessors.bind(this),both:this.getNeighbors.bind(this)}[i];return xr(this.getNode(t),new Set,n,s)}clone(){const t=this.getAllNodes().map(s=>Ac(ir({},s),{data:ir({},s.data)})),n=this.getAllEdges().map(s=>Ac(ir({},s),{data:ir({},s.data)})),i=new Be({nodes:t,edges:n});return this.treeIndices.forEach(({parentMap:s,childrenMap:a},o)=>{const c=new Map;s.forEach((l,p)=>{c.set(p,i.getNode(l.id))});const f=new Map;a.forEach((l,p)=>{f.set(p,new Set(Array.from(l).map(m=>i.getNode(m.id))))}),i.treeIndices.set(o,{parentMap:c,childrenMap:f})}),i}toJSON(){return JSON.stringify({nodes:this.getAllNodes(),edges:this.getAllEdges()})}createView(t){return new O0(ir({graph:this},t))}}/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */const Pc=Symbol("Comlink.proxy"),A0=Symbol("Comlink.endpoint"),I0=Symbol("Comlink.releaseProxy"),gn=Symbol("Comlink.finalizer"),Nr=Symbol("Comlink.thrown"),Lc=e=>typeof e=="object"&&e!==null||typeof e=="function",T0={canHandle:e=>Lc(e)&&e[Pc],serialize(e){const{port1:r,port2:t}=new MessageChannel;return pn(e,r),[t,[t]]},deserialize(e){return e.start(),P0(e)}},k0={canHandle:e=>Lc(e)&&Nr in e,serialize({value:e}){let r;return e instanceof Error?r={isError:!0,value:{message:e.message,name:e.name,stack:e.stack}}:r={isError:!1,value:e},[r,[]]},deserialize(e){throw e.isError?Object.assign(new Error(e.value.message),e.value):e.value}},Dc=new Map([["proxy",T0],["throw",k0]]);function j0(e,r){for(const t of e)if(r===t||t==="*"||t instanceof RegExp&&t.test(r))return!0;return!1}function pn(e,r=globalThis,t=["*"]){r.addEventListener("message",function n(i){if(!i||!i.data)return;if(!j0(t,i.origin)){console.warn(`Invalid origin '${i.origin}' for comlink proxy`);return}const{id:s,type:a,path:o}=Object.assign({path:[]},i.data),c=(i.data.argumentList||[]).map(Ct);let f;try{const l=o.slice(0,-1).reduce((m,y)=>m[y],e),p=o.reduce((m,y)=>m[y],e);switch(a){case"GET":f=p;break;case"SET":l[o.slice(-1)[0]]=Ct(i.data.value),f=!0;break;case"APPLY":f=p.apply(l,c);break;case"CONSTRUCT":{const m=new p(...c);f=B0(m)}break;case"ENDPOINT":{const{port1:m,port2:y}=new MessageChannel;pn(e,y),f=F0(m,[m])}break;case"RELEASE":f=void 0;break;default:return}}catch(l){f={value:l,[Nr]:0}}Promise.resolve(f).catch(l=>({value:l,[Nr]:0})).then(l=>{const[p,m]=Rr(l);r.postMessage(Object.assign(Object.assign({},p),{id:s}),m),a==="RELEASE"&&(r.removeEventListener("message",n),zc(r),gn in e&&typeof e[gn]=="function"&&e[gn]())}).catch(l=>{const[p,m]=Rr({value:new TypeError("Unserializable return value"),[Nr]:0});r.postMessage(Object.assign(Object.assign({},p),{id:s}),m)})}),r.start&&r.start()}function C0(e){return e.constructor.name==="MessagePort"}function zc(e){C0(e)&&e.close()}function P0(e,r){const t=new Map;return e.addEventListener("message",function(i){const{data:s}=i;if(!s||!s.id)return;const a=t.get(s.id);if(a)try{a(s)}finally{t.delete(s.id)}}),vn(e,t,[],r)}function Mr(e){if(e)throw new Error("Proxy has been released and is not useable")}function Fc(e){return Ut(e,new Map,{type:"RELEASE"}).then(()=>{zc(e)})}const Sr=new WeakMap,qr="FinalizationRegistry"in globalThis&&new FinalizationRegistry(e=>{const r=(Sr.get(e)||0)-1;Sr.set(e,r),r===0&&Fc(e)});function L0(e,r){const t=(Sr.get(r)||0)+1;Sr.set(r,t),qr&&qr.register(e,r,e)}function D0(e){qr&&qr.unregister(e)}function vn(e,r,t=[],n=function(){}){let i=!1;const s=new Proxy(n,{get(a,o){if(Mr(i),o===I0)return()=>{D0(s),Fc(e),r.clear(),i=!0};if(o==="then"){if(t.length===0)return{then:()=>s};const c=Ut(e,r,{type:"GET",path:t.map(f=>f.toString())}).then(Ct);return c.then.bind(c)}return vn(e,r,[...t,o])},set(a,o,c){Mr(i);const[f,l]=Rr(c);return Ut(e,r,{type:"SET",path:[...t,o].map(p=>p.toString()),value:f},l).then(Ct)},apply(a,o,c){Mr(i);const f=t[t.length-1];if(f===A0)return Ut(e,r,{type:"ENDPOINT"}).then(Ct);if(f==="bind")return vn(e,r,t.slice(0,-1));const[l,p]=Bc(c);return Ut(e,r,{type:"APPLY",path:t.map(m=>m.toString()),argumentList:l},p).then(Ct)},construct(a,o){Mr(i);const[c,f]=Bc(o);return Ut(e,r,{type:"CONSTRUCT",path:t.map(l=>l.toString()),argumentList:c},f).then(Ct)}});return L0(s,e),s}function z0(e){return Array.prototype.concat.apply([],e)}function Bc(e){const r=e.map(Rr);return[r.map(t=>t[0]),z0(r.map(t=>t[1]))]}const $c=new WeakMap;function F0(e,r){return $c.set(e,r),e}function B0(e){return Object.assign(e,{[Pc]:!0})}function Rr(e){for(const[r,t]of Dc)if(t.canHandle(e)){const[n,i]=t.serialize(e);return[{type:"HANDLER",name:r,value:n},i]}return[{type:"RAW",value:e},$c.get(e)||[]]}function Ct(e){switch(e.type){case"HANDLER":return Dc.get(e.name).deserialize(e.value);case"RAW":return e.value}}function Ut(e,r,t,n){return new Promise(i=>{const s=$0();r.set(s,i),e.start&&e.start(),e.postMessage(Object.assign({id:s},t),n)})}function $0(){return new Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join("-")}function wt(e){return typeof e=="function"}function G0(e){return e==null}function mn(e){return Array.isArray(e)}var Vt=function(e){var r=typeof e;return e!==null&&r==="object"||r==="function"};function U0(e,r){if(e){var t;if(mn(e))for(var n=0,i=e.length;n{if(e!=="next"&&e!=="prev")return r},Wc=e=>{e.prev.next=e.next,e.next.prev=e.prev,delete e.next,delete e.prev};let Q0=class{constructor(){const r={};r.prev=r,r.next=r.prev,this.shortcut=r}dequeue(){const r=this.shortcut,t=r.prev;if(t&&t!==r)return Wc(t),t}enqueue(r){const t=this.shortcut;r.prev&&r.next&&Wc(r),r.next=t.next,t.next.prev=r,t.next=r,r.prev=t}toString(){const r=[],t=this.shortcut;let n=t.prev;for(;n!==t;)r.push(JSON.stringify(n,J0)),n=n==null?void 0:n.prev;return`[${r.join(", ")}]`}};class H0 extends Q0{}const em=()=>1,tm=(e,r)=>{var t;if(e.getAllNodes().length<=1)return[];const n=nm(e,r||em);return(t=rm(n.graph,n.buckets,n.zeroIdx).map(s=>e.getRelatedEdges(s.v,"out").filter(({target:a})=>a===s.w)))===null||t===void 0?void 0:t.flat()},rm=(e,r,t)=>{let n=[];const i=r[r.length-1],s=r[0];let a;for(;e.getAllNodes().length;){for(;a=s.dequeue();)wn(e,r,t,a);for(;a=i.dequeue();)wn(e,r,t,a);if(e.getAllNodes().length){for(let o=r.length-2;o>0;--o)if(a=r[o].dequeue(),a){n=n.concat(wn(e,r,t,a,!0));break}}}return n},wn=(e,r,t,n,i)=>{var s,a;const o=[];return e.hasNode(n.v)&&((s=e.getRelatedEdges(n.v,"in"))===null||s===void 0||s.forEach(c=>{const f=c.data.weight,l=e.getNode(c.source);i&&o.push({v:c.source,w:c.target,in:0,out:0}),l.data.out===void 0&&(l.data.out=0),l.data.out-=f,bn(r,t,Object.assign({v:l.id},l.data))}),(a=e.getRelatedEdges(n.v,"out"))===null||a===void 0||a.forEach(c=>{const f=c.data.weight,l=c.target,p=e.getNode(l);p.data.in===void 0&&(p.data.in=0),p.data.in-=f,bn(r,t,Object.assign({v:p.id},p.data))}),e.removeNode(n.v)),i?o:void 0},nm=(e,r)=>{const t=new Be;let n=0,i=0;e.getAllNodes().forEach(c=>{t.addNode({id:c.id,data:{v:c.id,in:0,out:0}})}),e.getAllEdges().forEach(c=>{const f=t.getRelatedEdges(c.source,"out").find(p=>p.target===c.target),l=(r==null?void 0:r(c))||1;f?t.updateEdgeData(f==null?void 0:f.id,Object.assign(Object.assign({},f.data),{weight:f.data.weight+l})):t.addEdge({id:c.id,source:c.source,target:c.target,data:{weight:l}}),i=Math.max(i,t.getNode(c.source).data.out+=l),n=Math.max(n,t.getNode(c.target).data.in+=l)});const s=[],a=i+n+3;for(let c=0;c{bn(s,o,Object.assign({v:c.id},t.getNode(c.id).data))}),{buckets:s,zeroIdx:o,graph:t}},bn=(e,r,t)=>{t.out?t.in?e[t.out-t.in+r].enqueue(t):e[e.length-1].enqueue(t):e[0].enqueue(t)},im=(e,r)=>{const n=tm(e,(i=>s=>s.data.weight||1)());n==null||n.forEach(i=>{const s=i.data;e.removeEdge(i.id),s.forwardName=i.data.name,s.reversed=!0,e.addEdge({id:i.id,source:i.target,target:i.source,data:Object.assign({},s)})})},sm=e=>{e.getAllEdges().forEach(r=>{const t=r.data;if(t.reversed){e.removeEdge(r.id);const n=t.forwardName;delete t.reversed,delete t.forwardName,e.addEdge({id:r.id,source:r.target,target:r.source,data:Object.assign(Object.assign({},t),{forwardName:n})})}})},om=(e,r)=>Number(e)-Number(r),Wt=(e,r,t,n)=>{let i;do i=`${n}${Math.random()}`;while(e.hasNode(i));return t.dummy=r,e.addNode({id:i,data:t}),i},am=e=>{const r=new Be;return e.getAllNodes().forEach(t=>{r.addNode(Object.assign({},t))}),e.getAllEdges().forEach(t=>{const n=r.getRelatedEdges(t.source,"out").find(i=>i.target===t.target);n?r.updateEdgeData(n==null?void 0:n.id,Object.assign(Object.assign({},n.data),{weight:n.data.weight+t.data.weight||0,minlen:Math.max(n.data.minlen,t.data.minlen||1)})):r.addEdge({id:t.id,source:t.source,target:t.target,data:{weight:t.data.weight||0,minlen:t.data.minlen||1}})}),r},Yc=e=>{const r=new Be;return e.getAllNodes().forEach(t=>{e.getChildren(t.id).length||r.addNode(Object.assign({},t))}),e.getAllEdges().forEach(t=>{r.addEdge(t)}),r},um=(e,r)=>e==null?void 0:e.reduce((t,n,i)=>(t[n]=r[i],t),{}),Kc=(e,r)=>{const t=Number(e.x),n=Number(e.y),i=Number(r.x)-t,s=Number(r.y)-n;let a=Number(e.width)/2,o=Number(e.height)/2;if(!i&&!s)return{x:0,y:0};let c,f;return Math.abs(s)*a>Math.abs(i)*o?(s<0&&(o=-o),c=o*i/s,f=o):(i<0&&(a=-a),c=a,f=a*s/i),{x:t+c,y:n+f}},or=e=>{const r=[],t=Zc(e)+1;for(let n=0;n{const i=n.data.rank;i!==void 0&&r[i]&&r[i].push(n.id)});for(let n=0;nom(e.getNode(i).data.order,e.getNode(s).data.order));return r},cm=e=>{const r=e.getAllNodes().filter(n=>n.data.rank!==void 0).map(n=>n.data.rank),t=Math.min(...r);e.getAllNodes().forEach(n=>{n.data.hasOwnProperty("rank")&&t!==1/0&&(n.data.rank-=t)})},fm=(e,r=0)=>{const t=e.getAllNodes(),n=t.filter(o=>o.data.rank!==void 0).map(o=>o.data.rank),i=Math.min(...n),s=[];t.forEach(o=>{const c=(o.data.rank||0)-i;s[c]||(s[c]=[]),s[c].push(o.id)});let a=0;for(let o=0;o{const l=e.getNode(f);l&&(l.data.rank=l.data.rank||0,l.data.rank+=a)}))}},Xc=(e,r,t,n)=>{const i={width:0,height:0};return me(t)&&me(n)&&(i.rank=t,i.order=n),Wt(e,"border",i,r)},Zc=e=>{let r;return e.getAllNodes().forEach(t=>{const n=t.data.rank;n!==void 0&&(r===void 0||n>r)&&(r=n)}),r||(r=0),r},lm=(e,r)=>{const t={lhs:[],rhs:[]};return e==null||e.forEach(n=>{r(n)?t.lhs.push(n):t.rhs.push(n)}),t},_n=(e,r)=>e.reduce((t,n)=>{const i=r(t),s=r(n);return i>s?n:t}),Jc=(e,r,t,n,i,s)=>{n.includes(r.id)||(n.push(r.id),t||s.push(r.id),i(r.id).forEach(a=>Jc(e,a,t,n,i,s)),t&&s.push(r.id))},Qc=(e,r,t,n)=>{const i=Array.isArray(r)?r:[r],s=c=>e.getNeighbors(c),a=[],o=[];return i.forEach(c=>{if(e.hasNode(c.id))Jc(e,c,t==="post",o,s,a);else throw new Error(`Graph does not have node: ${c}`)}),a},hm=e=>{const r=t=>{const n=e.getChildren(t),i=e.getNode(t);if(n!=null&&n.length&&n.forEach(s=>r(s.id)),i.data.hasOwnProperty("minRank")){i.data.borderLeft=[],i.data.borderRight=[];for(let s=i.data.minRank,a=i.data.maxRank+1;sr(t.id))},Hc=(e,r,t,n,i,s)=>{const a={rank:s,borderType:r,width:0,height:0},o=i.data[r][s-1],c=Wt(e,"border",a,t);i.data[r][s]=c,e.setParent(c,n),o&&e.addEdge({id:`e${Math.random()}`,source:o,target:c,data:{weight:1}})},dm=(e,r)=>{const t=r.toLowerCase();(t==="lr"||t==="rl")&&ef(e)},gm=(e,r)=>{const t=r.toLowerCase();(t==="bt"||t==="rl")&&pm(e),(t==="lr"||t==="rl")&&(vm(e),ef(e))},ef=e=>{e.getAllNodes().forEach(r=>{tf(r)}),e.getAllEdges().forEach(r=>{tf(r)})},tf=e=>{const r=e.data.width;e.data.width=e.data.height,e.data.height=r},pm=e=>{e.getAllNodes().forEach(r=>{En(r.data)}),e.getAllEdges().forEach(r=>{var t;(t=r.data.points)===null||t===void 0||t.forEach(n=>En(n)),r.data.hasOwnProperty("y")&&En(r.data)})},En=e=>{e!=null&&e.y&&(e.y=-e.y)},vm=e=>{e.getAllNodes().forEach(r=>{xn(r.data)}),e.getAllEdges().forEach(r=>{var t;(t=r.data.points)===null||t===void 0||t.forEach(n=>xn(n)),r.data.hasOwnProperty("x")&&xn(r.data)})},xn=e=>{const r=e.x;e.x=e.y,e.y=r},mm=e=>{const r=Wt(e,"root",{},"_root"),t=ym(e);let n=Math.max(...Object.values(t));Math.abs(n)===1/0&&(n=1);const i=n-1,s=2*i+1;e.getAllEdges().forEach(o=>{o.data.minlen*=s});const a=wm(e)+1;return e.getRoots().forEach(o=>{rf(e,r,s,a,i,t,o.id)}),{nestingRoot:r,nodeRankFactor:s}},rf=(e,r,t,n,i,s,a)=>{const o=e.getChildren(a);if(!(o!=null&&o.length)){a!==r&&e.addEdge({id:`e${Math.random()}`,source:r,target:a,data:{weight:0,minlen:t}});return}const c=Xc(e,"_bt"),f=Xc(e,"_bb"),l=e.getNode(a);e.setParent(c,a),l.data.borderTop=c,e.setParent(f,a),l.data.borderBottom=f,o==null||o.forEach(p=>{rf(e,r,t,n,i,s,p.id);const m=p.data.borderTop?p.data.borderTop:p.id,y=p.data.borderBottom?p.data.borderBottom:p.id,x=p.data.borderTop?n:2*n,_=m!==y?1:i-s[a]+1;e.addEdge({id:`e${Math.random()}`,source:c,target:m,data:{minlen:_,weight:x,nestingEdge:!0}}),e.addEdge({id:`e${Math.random()}`,source:y,target:f,data:{minlen:_,weight:x,nestingEdge:!0}})}),e.getParent(a)||e.addEdge({id:`e${Math.random()}`,source:r,target:c,data:{weight:0,minlen:i+s[a]}})},ym=e=>{const r={},t=(n,i)=>{const s=e.getChildren(n);s==null||s.forEach(a=>t(a.id,i+1)),r[n]=i};return e.getRoots().forEach(n=>t(n.id,1)),r},wm=e=>{let r=0;return e.getAllEdges().forEach(t=>{r+=t.data.weight}),r},bm=(e,r)=>{r&&e.removeNode(r),e.getAllEdges().forEach(t=>{t.data.nestingEdge&&e.removeEdge(t.id)})},_m="edge",nf="edge-label",Em=(e,r)=>{e.getAllEdges().forEach(t=>xm(e,t,r))},xm=(e,r,t)=>{let n=r.source,i=e.getNode(n).data.rank;const s=r.target,a=e.getNode(s).data.rank,o=r.data.labelRank;if(a===i+1)return;e.removeEdge(r.id);let c,f,l;for(l=0,++i;i{r.forEach(t=>{let n=e.getNode(t);const{data:i}=n,s=i.originalEdge;let a;s&&e.addEdge(s);let o=t;for(;n.data.dummy;)a=e.getSuccessors(o)[0],e.removeNode(o),s.data.points.push({x:n.data.x,y:n.data.y}),n.data.dummy===nf&&(s.data.x=n.data.x,s.data.y=n.data.y,s.data.width=n.data.width,s.data.height=n.data.height),o=a.id,n=e.getNode(o)})},Mm=(e,r,t)=>{const n={};let i;t==null||t.forEach(s=>{let a=e.getParent(s),o,c;for(;a;){if(o=e.getParent(a.id),o?(c=n[o.id],n[o.id]=a.id):(c=i,i=a.id),c&&c!==a.id){r.hasNode(c)||r.addNode({id:c,data:{}}),r.hasNode(a.id)||r.addNode({id:a.id,data:{}}),r.hasEdge(`e${c}-${a.id}`)||r.addEdge({id:`e${c}-${a.id}`,source:c,target:a.id,data:{}});return}a=o}})},Sm=(e,r,t)=>{const n=qm(e),i=new Be({tree:[{id:n,children:[],data:{}}]});return e.getAllNodes().forEach(s=>{const a=e.getParent(s.id);(s.data.rank===r||s.data.minRank<=r&&r<=s.data.maxRank)&&(i.hasNode(s.id)||i.addNode(Object.assign({},s)),a!=null&&a.id&&!i.hasNode(a==null?void 0:a.id)&&i.addNode(Object.assign({},a)),i.setParent(s.id,(a==null?void 0:a.id)||n),e.getRelatedEdges(s.id,t).forEach(o=>{const c=o.source===s.id?o.target:o.source;i.hasNode(c)||i.addNode(Object.assign({},e.getNode(c)));const f=i.getRelatedEdges(c,"out").find(({target:p})=>p===s.id),l=f!==void 0?f.data.weight:0;f?i.updateEdgeData(f.id,Object.assign(Object.assign({},f.data),{weight:o.data.weight+l})):i.addEdge({id:o.id,source:c,target:s.id,data:{weight:o.data.weight+l}})}),s.data.hasOwnProperty("minRank")&&i.updateNodeData(s.id,Object.assign(Object.assign({},s.data),{borderLeft:s.data.borderLeft[r],borderRight:s.data.borderRight[r]})))}),i},qm=e=>{let r;for(;e.hasNode(r=`_root${Math.random()}`););return r},Rm=(e,r,t)=>{const n=um(t,t.map((l,p)=>p)),s=r.map(l=>{const p=e.getRelatedEdges(l,"out").map(m=>({pos:n[m.target]||0,weight:m.data.weight}));return p==null?void 0:p.sort((m,y)=>m.pos-y.pos)}).flat().filter(l=>l!==void 0);let a=1;for(;a{if(l){let p=l.pos+a;c[p]+=l.weight;let m=0;for(;p>0;)p%2&&(m+=c[p+1]),p=p-1>>1,c[p]+=l.weight;f+=l.weight*m}}),f},sf=(e,r)=>{let t=0;for(let n=1;n<(r==null?void 0:r.length);n+=1)t+=Rm(e,r[n-1],r[n]);return t},of=e=>{const r={},t=e.getAllNodes(),n=t.map(f=>{var l;return(l=f.data.rank)!==null&&l!==void 0?l:-1/0}),i=Math.max(...n),s=[];for(let f=0;fe.getNode(f.id).data.rank-e.getNode(l.id).data.rank),c=a.filter(f=>e.getNode(f.id).data.fixorder!==void 0).sort((f,l)=>e.getNode(f.id).data.fixorder-e.getNode(l.id).data.fixorder);return c==null||c.forEach(f=>{isNaN(e.getNode(f.id).data.rank)||s[e.getNode(f.id).data.rank].push(f.id),r[f.id]=!0}),a==null||a.forEach(f=>e.dfsTree(f.id,l=>{if(r.hasOwnProperty(l.id))return!0;r[l.id]=!0,isNaN(l.data.rank)||s[l.data.rank].push(l.id)})),s},Om=(e,r)=>r.map(t=>{const n=e.getRelatedEdges(t,"in");if(!(n!=null&&n.length))return{v:t};const i={sum:0,weight:0};return n==null||n.forEach(s=>{const a=e.getNode(s.source);i.sum+=s.data.weight*a.data.order,i.weight+=s.data.weight}),{v:t,barycenter:i.sum/i.weight,weight:i.weight}}),Am=(e,r)=>{var t,n,i;const s={};e==null||e.forEach((o,c)=>{s[o.v]={i:c,indegree:0,in:[],out:[],vs:[o.v]};const f=s[o.v];o.barycenter!==void 0&&(f.barycenter=o.barycenter,f.weight=o.weight)}),(t=r.getAllEdges())===null||t===void 0||t.forEach(o=>{const c=s[o.source],f=s[o.target];c!==void 0&&f!==void 0&&(f.indegree++,c.out.push(s[o.target]))});const a=(i=(n=Object.values(s)).filter)===null||i===void 0?void 0:i.call(n,o=>!o.indegree);return Im(a)},Im=e=>{var r,t;const n=[],i=c=>f=>{f.merged||(f.barycenter===void 0||c.barycenter===void 0||f.barycenter>=c.barycenter)&&Tm(c,f)},s=c=>f=>{f.in.push(c),--f.indegree===0&&e.push(f)};for(;e!=null&&e.length;){const c=e.pop();n.push(c),(r=c.in.reverse())===null||r===void 0||r.forEach(f=>i(c)(f)),(t=c.out)===null||t===void 0||t.forEach(f=>s(c)(f))}const a=n.filter(c=>!c.merged),o=["vs","i","barycenter","weight"];return a.map(c=>{const f={};return o==null||o.forEach(l=>{c[l]!==void 0&&(f[l]=c[l])}),f})},Tm=(e,r)=>{var t;let n=0,i=0;e.weight&&(n+=e.barycenter*e.weight,i+=e.weight),r.weight&&(n+=r.barycenter*r.weight,i+=r.weight),e.vs=(t=r.vs)===null||t===void 0?void 0:t.concat(e.vs),e.barycenter=n/i,e.weight=i,e.i=Math.min(r.i,e.i),r.merged=!0},km=(e,r,t,n)=>{const i=lm(e,m=>{const y=m.hasOwnProperty("fixorder")&&!isNaN(m.fixorder);return n?!y&&m.hasOwnProperty("barycenter"):y||m.hasOwnProperty("barycenter")}),s=i.lhs,a=i.rhs.sort((m,y)=>-m.i- -y.i),o=[];let c=0,f=0,l=0;s==null||s.sort(jm(!!r,!!t)),l=af(o,a,l),s==null||s.forEach(m=>{var y;l+=(y=m.vs)===null||y===void 0?void 0:y.length,o.push(m.vs),c+=m.barycenter*m.weight,f+=m.weight,l=af(o,a,l)});const p={vs:o.flat()};return f&&(p.barycenter=c/f,p.weight=f),p},af=(e,r,t)=>{let n=t,i;for(;r.length&&(i=r[r.length-1]).i<=n;)r.pop(),e==null||e.push(i.vs),n++;return n},jm=(e,r)=>(t,n)=>{if(t.fixorder!==void 0&&n.fixorder!==void 0)return t.fixorder-n.fixorder;if(t.barycentern.barycenter)return 1;if(r&&t.order!==void 0&&n.order!==void 0){if(t.ordern.order)return 1}return e?n.i-t.i:t.i-n.i},uf=(e,r,t,n,i,s)=>{var a,o,c,f;let l=e.getChildren(r).map(E=>E.id);const p=e.getNode(r),m=p?p.data.borderLeft:void 0,y=p?p.data.borderRight:void 0,x={};m&&(l=l==null?void 0:l.filter(E=>E!==m&&E!==y));const _=Om(e,l||[]);_==null||_.forEach(E=>{var N;if(!((N=e.getChildren(E.v))===null||N===void 0)&&N.length){const S=uf(e,E.v,t,n,s);x[E.v]=S,S.hasOwnProperty("barycenter")&&Pm(E,S)}});const b=Am(_,t);Cm(b,x),(a=b.filter(E=>E.vs.length>0))===null||a===void 0||a.forEach(E=>{const N=e.getNode(E.vs[0]);N&&(E.fixorder=N.data.fixorder,E.order=N.data.order)});const w=km(b,n,i,s);if(m&&(w.vs=[m,w.vs,y].flat(),!((o=e.getPredecessors(m))===null||o===void 0)&&o.length)){const E=e.getNode(((c=e.getPredecessors(m))===null||c===void 0?void 0:c[0].id)||""),N=e.getNode(((f=e.getPredecessors(y))===null||f===void 0?void 0:f[0].id)||"");w.hasOwnProperty("barycenter")||(w.barycenter=0,w.weight=0),w.barycenter=(w.barycenter*w.weight+E.data.order+N.data.order)/(w.weight+2),w.weight+=2}return w},Cm=(e,r)=>{e==null||e.forEach(t=>{var n;const i=(n=t.vs)===null||n===void 0?void 0:n.map(s=>r[s]?r[s].vs:s);t.vs=i.flat()})},Pm=(e,r)=>{e.barycenter!==void 0?(e.barycenter=(e.barycenter*e.weight+r.barycenter*r.weight)/(e.weight+r.weight),e.weight+=r.weight):(e.barycenter=r.barycenter,e.weight=r.weight)},Lm=(e,r)=>{const t=Zc(e),n=[],i=[];for(let l=1;l-1;l--)i.push(l);const s=cf(e,n,"in"),a=cf(e,i,"out");let o=of(e);Nn(e,o);let c=Number.POSITIVE_INFINITY,f;for(let l=0,p=0;p<4;++l,++p){ff(l%2?s:a,l%4>=2,!1,r),o=or(e);const m=sf(e,o);m=2,!0,r),o=or(e);const m=sf(e,o);mr.map(n=>Sm(e,n,t)),ff=(e,r,t,n)=>{const i=new Be;e==null||e.forEach(s=>{var a;const o=s.getRoots()[0].id,c=uf(s,o,i,r,t,n);for(let f=0;f<((a=c.vs)===null||a===void 0?void 0:a.length);f++){const l=s.getNode(c.vs[f]);l&&(l.data.order=f)}Mm(s,i,c.vs)})},Nn=(e,r)=>{r==null||r.forEach(t=>{t==null||t.forEach((n,i)=>{e.getNode(n).data.order=i})})},Dm=(e,r)=>{const n=e.getAllNodes().filter(a=>{var o;return!(!((o=e.getChildren(a.id))===null||o===void 0)&&o.length)}).map(a=>a.data.rank),i=Math.max(...n),s=[];for(let a=0;a{const o=e.getNode(a);!o||o.data.dummy||isNaN(o.data.rank)||(o.data.fixorder=s[o.data.rank].length,s[o.data.rank].push(a))})},zm=e=>{const r={};let t=0;const n=i=>{const s=t;e.getChildren(i).forEach(a=>n(a.id)),r[i]={low:s,lim:t++}};return e.getRoots().forEach(i=>n(i.id)),r},Fm=(e,r,t,n)=>{var i,s;const a=[],o=[],c=Math.min(r[t].low,r[n].low),f=Math.max(r[t].lim,r[n].lim);let l,p;l=t;do l=(i=e.getParent(l))===null||i===void 0?void 0:i.id,a.push(l);while(l&&(r[l].low>c||f>r[l].lim));for(p=l,l=n;l&&l!==p;)o.push(l),l=(s=e.getParent(l))===null||s===void 0?void 0:s.id;return{lca:p,path:a.concat(o.reverse())}},Bm=(e,r)=>{const t=zm(e);r.forEach(n=>{var i,s;let a=n,o=e.getNode(a);const c=o.data.originalEdge;if(!c)return;const f=Fm(e,t,c.source,c.target),l=f.path,p=f.lca;let m=0,y=l[m],x=!0;for(;a!==c.target;){if(o=e.getNode(a),x){for(;y!==p&&((i=e.getNode(y))===null||i===void 0?void 0:i.data.maxRank){const t={},n=(i,s)=>{let a=0,o=0;const c=i.length,f=s==null?void 0:s[(s==null?void 0:s.length)-1];return s==null||s.forEach((l,p)=>{var m;const y=Um(e,l),x=y?e.getNode(y.id).data.order:c;(y||l===f)&&((m=s.slice(o,p+1))===null||m===void 0||m.forEach(_=>{var b;(b=e.getPredecessors(_))===null||b===void 0||b.forEach(w=>{var E;const N=e.getNode(w.id),S=N.data.order;(S{const t={};function n(o,c,f,l,p){var m,y;let x;for(let _=c;_{const w=e.getNode(b.id);w.data.dummy&&(w.data.orderp)&&lf(t,b.id,x)}))}function i(o){return JSON.stringify(o.slice(1))}function s(o,c){const f=i(o);c.get(f)||(n(...o),c.set(f,!0))}const a=(o,c)=>{let f=-1,l,p=0;const m=new Map;return c==null||c.forEach((y,x)=>{var _;if(((_=e.getNode(y))===null||_===void 0?void 0:_.data.dummy)==="border"){const b=e.getPredecessors(y)||[];b.length&&(l=e.getNode(b[0].id).data.order,s([c,p,x,f,l],m),p=x,f=l)}s([c,p,c.length,l,o.length],m)}),c};return r!=null&&r.length&&r.reduce(a),t},Um=(e,r)=>{var t,n;if(!((t=e.getNode(r))===null||t===void 0)&&t.data.dummy)return(n=e.getPredecessors(r))===null||n===void 0?void 0:n.find(i=>e.getNode(i.id).data.dummy)},lf=(e,r,t)=>{let n=r,i=t;if(n>i){const a=n;n=i,i=a}let s=e[n];s||(e[n]=s={}),s[i]=!0},Vm=(e,r,t)=>{let n=r,i=t;if(n>i){const s=r;n=i,i=s}return!!e[n]},Wm=(e,r,t,n)=>{const i={},s={},a={};return r==null||r.forEach(o=>{o==null||o.forEach((c,f)=>{i[c]=c,s[c]=c,a[c]=f})}),r==null||r.forEach(o=>{let c=-1;o==null||o.forEach(f=>{let l=n(f).map(p=>p.id);if(l.length){l=l.sort((m,y)=>a[m]-a[y]);const p=(l.length-1)/2;for(let m=Math.floor(p),y=Math.ceil(p);m<=y;++m){const x=l[m];s[f]===f&&c{var o;const c={},f=Km(e,r,t,i,s,a),l=a?"borderLeft":"borderRight",p=(x,_)=>{let b=f.getAllNodes(),w=b.pop();const E={};for(;w;)E[w.id]?x(w.id):(E[w.id]=!0,b.push(w),b=b.concat(_(w.id))),w=b.pop()},m=x=>{c[x]=(f.getRelatedEdges(x,"in")||[]).reduce((_,b)=>Math.max(_,(c[b.source]||0)+b.data.weight),0)},y=x=>{const _=(f.getRelatedEdges(x,"out")||[]).reduce((w,E)=>Math.min(w,(c[E.target]||0)-E.data.weight),Number.POSITIVE_INFINITY),b=e.getNode(x);_!==Number.POSITIVE_INFINITY&&b.data.borderType!==l&&(c[x]=Math.max(c[x],_))};return p(m,f.getPredecessors.bind(f)),p(y,f.getSuccessors.bind(f)),(o=Object.values(n))===null||o===void 0||o.forEach(x=>{c[x]=c[t[x]]}),c},Km=(e,r,t,n,i,s)=>{const a=new Be,o=Qm(n,i,s);return r==null||r.forEach(c=>{let f;c==null||c.forEach(l=>{const p=t[l];if(a.hasNode(p)||a.addNode({id:p,data:{}}),f){const m=t[f],y=a.getRelatedEdges(m,"out").find(x=>x.target===p);y?a.updateEdgeData(y.id,Object.assign(Object.assign({},y.data),{weight:Math.max(o(e,l,f),y.data.weight||0)})):a.addEdge({id:`e${Math.random()}`,source:m,target:p,data:{weight:Math.max(o(e,l,f),0)}})}f=l})}),a},Xm=(e,r)=>_n(Object.values(r),t=>{var n;let i=Number.NEGATIVE_INFINITY,s=Number.POSITIVE_INFINITY;return(n=Object.keys(t))===null||n===void 0||n.forEach(a=>{const o=t[a],c=Hm(e,a)/2;i=Math.max(o+c,i),s=Math.min(o-c,s)}),i-s});function Zm(e,r){const t=Object.values(r),n=Math.min(...t),i=Math.max(...t);["u","d"].forEach(s=>{["l","r"].forEach(a=>{const o=s+a,c=e[o];let f;if(c===r)return;const l=Object.values(c);f=a==="l"?n-Math.min(...l):i-Math.max(...l),f&&(e[o]={},Object.keys(c).forEach(p=>{e[o][p]=c[p]+f}))})})}const Jm=(e,r)=>{const t={};return Object.keys(e.ul).forEach(n=>{if(r)t[n]=e[r.toLowerCase()][n];else{const i=Object.values(e).map(s=>s[n]);t[n]=(i[0]+i[1])/2}}),t},Qm=(e,r,t)=>(n,i,s)=>{const a=n.getNode(i),o=n.getNode(s);let c=0,f=0;if(c+=a.data.width/2,a.data.hasOwnProperty("labelpos"))switch((a.data.labelpos||"").toLowerCase()){case"l":f=-a.data.width/2;break;case"r":f=a.data.width/2;break}if(f&&(c+=t?f:-f),f=0,c+=(a.data.dummy?r:e)/2,c+=(o.data.dummy?r:e)/2,c+=o.data.width/2,o.data.labelpos)switch((o.data.labelpos||"").toLowerCase()){case"l":f=o.data.width/2;break;case"r":f=-o.data.width/2;break}return f&&(c+=t?f:-f),f=0,c},Hm=(e,r)=>e.getNode(r).data.width||0,ey=(e,r)=>{const{ranksep:t=0}=r||{},n=or(e);let i=0;n==null||n.forEach(s=>{const a=s.map(c=>e.getNode(c).data.height),o=Math.max(...a,0);s==null||s.forEach(c=>{e.getNode(c).data.y=i+o/2}),i+=o+t})},ty=(e,r)=>{const{align:t,nodesep:n=0,edgesep:i=0}=r||{},s=or(e),a=Object.assign($m(e,s),Gm(e,s)),o={};let c=[];["u","d"].forEach(l=>{c=l==="u"?s:Object.values(s).reverse(),["l","r"].forEach(p=>{p==="r"&&(c=c.map(_=>Object.values(_).reverse()));const m=(l==="u"?e.getPredecessors:e.getSuccessors).bind(e),y=Wm(e,c,a,m),x=Ym(e,c,y.root,y.align,n,i,p==="r");p==="r"&&Object.keys(x).forEach(_=>x[_]=-x[_]),o[l+p]=x})});const f=Xm(e,o);return f&&Zm(o,f),Jm(o,t)},ry=(e,r)=>{var t;const n=Yc(e);ey(n,r);const i=ty(n,r);(t=Object.keys(i))===null||t===void 0||t.forEach(s=>{n.getNode(s).data.x=i[s]})},hf=e=>{const r={},t=n=>{var i;const s=e.getNode(n);if(!s)return 0;if(r[n])return s.data.rank;r[n]=!0;let a;return(i=e.getRelatedEdges(n,"out"))===null||i===void 0||i.forEach(o=>{const c=t(o.target),f=o.data.minlen,l=c-f;l&&(a===void 0||le.getRelatedEdges(n.id,"in").length===0).forEach(n=>t(n.id))},ny=e=>{const r={};let t;const n=a=>{var o;const c=e.getNode(a);if(!c)return 0;if(r[a])return c.data.rank;r[a]=!0;let f;return(o=e.getRelatedEdges(a,"out"))===null||o===void 0||o.forEach(l=>{const p=n(l.target),m=l.data.minlen,y=p-m;y&&(f===void 0||ye.getRelatedEdges(a.id,"in").length===0).forEach(a=>{a&&n(a.id)}),t===void 0&&(t=0);const i={},s=(a,o)=>{var c;const f=e.getNode(a),l=isNaN(f.data.layer)?o:f.data.layer;(f.data.rank===void 0||f.data.rank{s(p.target,l+p.data.minlen)}))};e.getAllNodes().forEach(a=>{const o=a.data;o&&(isNaN(o.layer)?o.rank-=t:s(a.id,o.layer))})},At=(e,r)=>e.getNode(r.target).data.rank-e.getNode(r.source).data.rank-r.data.minlen,iy=e=>{const r=new Be({tree:[]}),t=e.getAllNodes()[0],n=e.getAllNodes().length;r.addNode(t);let i,s;for(;sy(r,e){const t=n=>{r.getRelatedEdges(n,"both").forEach(i=>{const s=i.source,a=n===s?i.target:s;!e.hasNode(a)&&!At(r,i)&&(e.addNode({id:a,data:{}}),e.addEdge({id:i.id,source:n,target:a,data:{}}),t(a))})};return e.getAllNodes().forEach(n=>t(n.id)),e.getAllNodes().length},oy=e=>{const r=new Be({tree:[]}),t=e.getAllNodes()[0],n=e.getAllNodes().length;r.addNode(t);let i,s;for(;ay(r,e){const t=n=>{var i;(i=r.getRelatedEdges(n,"both"))===null||i===void 0||i.forEach(s=>{const a=s.source,o=n===a?s.target:a;!e.hasNode(o)&&(r.getNode(o).data.layer!==void 0||!At(r,s))&&(e.addNode({id:o,data:{}}),e.addEdge({id:s.id,source:n,target:o,data:{}}),t(o))})};return e.getAllNodes().forEach(n=>t(n.id)),e.getAllNodes().length},df=(e,r)=>_n(r.getAllEdges(),t=>e.hasNode(t.source)!==e.hasNode(t.target)?At(r,t):1/0),gf=(e,r,t)=>{e.getAllNodes().forEach(n=>{const i=r.getNode(n.id);i.data.rank||(i.data.rank=0),i.data.rank+=t})},uy=e=>{const r=am(e);hf(r);const t=iy(r);vf(t),pf(t,r);let n,i;for(;n=ly(t);)i=hy(t,r,n),dy(t,r,n,i)},pf=(e,r)=>{let t=Qc(e,e.getAllNodes(),"post");t=t.slice(0,(t==null?void 0:t.length)-1),t.forEach(n=>{cy(e,r,n)})},cy=(e,r,t)=>{const i=e.getNode(t).data.parent,s=e.getRelatedEdges(t,"both").find(a=>a.target===i||a.source===i);s.data.cutvalue=fy(e,r,t)},fy=(e,r,t)=>{const i=e.getNode(t).data.parent;let s=!0,a=r.getRelatedEdges(t,"out").find(c=>c.target===i),o=0;return a||(s=!1,a=r.getRelatedEdges(i,"out").find(c=>c.target===t)),o=a.data.weight,r.getRelatedEdges(t,"both").forEach(c=>{const f=c.source===t,l=f?c.target:c.source;if(l!==i){const p=f===s,m=c.data.weight;if(o+=p?m:-m,py(e,t,l)){const y=e.getRelatedEdges(t,"both").find(x=>x.source===l||x.target===l).data.cutvalue;o+=p?-y:y}}}),o},vf=(e,r=e.getAllNodes()[0].id)=>{mf(e,{},1,r)},mf=(e,r,t,n,i)=>{var s;const a=t;let o=t;const c=e.getNode(n);return r[n]=!0,(s=e.getNeighbors(n))===null||s===void 0||s.forEach(f=>{r[f.id]||(o=mf(e,r,o,f.id,n))}),c.data.low=a,c.data.lim=o++,i?c.data.parent=i:delete c.data.parent,o},ly=e=>e.getAllEdges().find(r=>r.data.cutvalue<0),hy=(e,r,t)=>{let n=t.source,i=t.target;r.getRelatedEdges(n,"out").find(l=>l.target===i)||(n=t.target,i=t.source);const s=e.getNode(n),a=e.getNode(i);let o=s,c=!1;s.data.lim>a.data.lim&&(o=a,c=!0);const f=r.getAllEdges().filter(l=>c===yf(e.getNode(l.source),o)&&c!==yf(e.getNode(l.target),o));return _n(f,l=>At(r,l))},dy=(e,r,t,n)=>{const i=e.getRelatedEdges(t.source,"both").find(s=>s.source===t.target||s.target===t.target);i&&e.removeEdge(i.id),e.addEdge({id:`e${Math.random()}`,source:n.source,target:n.target,data:{}}),vf(e),pf(e,r),gy(e,r)},gy=(e,r)=>{const t=e.getAllNodes().find(i=>!i.data.parent);let n=Qc(e,t,"pre");n=n.slice(1),n.forEach(i=>{const s=e.getNode(i).data.parent;let a=r.getRelatedEdges(i,"out").find(c=>c.target===s),o=!1;!a&&r.hasNode(s)&&(a=r.getRelatedEdges(s,"out").find(c=>c.target===i),o=!0),r.getNode(i).data.rank=(r.hasNode(s)&&r.getNode(s).data.rank||0)+(o?a==null?void 0:a.data.minlen:-(a==null?void 0:a.data.minlen))})},py=(e,r,t)=>e.getRelatedEdges(r,"both").find(n=>n.source===t||n.target===t),yf=(e,r)=>r.data.low<=e.data.lim&&e.data.lim<=r.data.lim,vy=(e,r)=>{switch(r){case"network-simplex":yy(e);break;case"tight-tree":wf(e);break;case"longest-path":my(e);break;default:wf(e)}},my=hf,wf=e=>{ny(e),oy(e)},yy=e=>{uy(e)},wy=(e,r)=>{const{edgeLabelSpace:t,keepNodeOrder:n,prevGraph:i,rankdir:s,ranksep:a}=r;!n&&i&&_y(e,i);const o=qy(e);t&&(r.ranksep=Ry(o,{rankdir:s,ranksep:a}));let c;try{c=by(o,r)}catch(f){if(f.message==="Not possible to find intersection inside of the rectangle"){console.error(`The following error may be caused by improper layer setting, please make sure your manual layer setting does not violate the graph's structure: +`,f);return}throw f}return Ey(e,o),c},by=(e,r)=>{const{ranker:t,rankdir:n="tb",nodeOrder:i,keepNodeOrder:s,align:a,nodesep:o=50,edgesep:c=20,ranksep:f=50}=r;Ly(e),im(e);const{nestingRoot:l,nodeRankFactor:p}=mm(e);vy(Yc(e),t),Oy(e),fm(e,p),bm(e,l),cm(e),Ay(e),Iy(e);const m=[];Em(e,m),Bm(e,m),hm(e),s&&Dm(e,i),Lm(e,s),Dy(e),dm(e,n),ry(e,{align:a,nodesep:o,edgesep:c,ranksep:f}),zy(e),Py(e),Nm(e,m),jy(e),gm(e,n);const{width:y,height:x}=Ty(e);return ky(e),Cy(e),sm(e),{width:y,height:x}},_y=(e,r)=>{e.getAllNodes().forEach(t=>{const n=e.getNode(t.id);if(r.hasNode(t.id)){const i=r.getNode(t.id);n.data.fixorder=i.data._order,delete i.data._order}else delete n.data.fixorder})},Ey=(e,r)=>{e.getAllNodes().forEach(t=>{var n;const i=e.getNode(t.id);if(i){const s=r.getNode(t.id);i.data.x=s.data.x,i.data.y=s.data.y,i.data._order=s.data.order,i.data._rank=s.data.rank,!((n=r.getChildren(t.id))===null||n===void 0)&&n.length&&(i.data.width=s.data.width,i.data.height=s.data.height)}}),e.getAllEdges().forEach(t=>{const n=e.getEdge(t.id),i=r.getEdge(t.id);n.data.points=i?i.data.points:[],i&&i.data.hasOwnProperty("x")&&(n.data.x=i.data.x,n.data.y=i.data.y)})},xy=["width","height","layer","fixorder"],Ny={width:0,height:0},My=["minlen","weight","width","height","labeloffset"],Sy={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},Mn=["labelpos"],qy=e=>{const r=new Be({tree:[]});return e.getAllNodes().forEach(t=>{const n=_f(e.getNode(t.id).data),i=Object.assign(Object.assign({},Ny),n),s=bf(i,xy);r.hasNode(t.id)||r.addNode({id:t.id,data:Object.assign({},s)});const a=e.hasTreeStructure("combo")?e.getParent(t.id,"combo"):e.getParent(t.id);G0(a)||(r.hasNode(a.id)||r.addNode(Object.assign({},a)),r.setParent(t.id,a.id))}),e.getAllEdges().forEach(t=>{const n=_f(e.getEdge(t.id).data),i={};Mn==null||Mn.forEach(s=>{n[s]!==void 0&&(i[s]=n[s])}),r.addEdge({id:t.id,source:t.source,target:t.target,data:Object.assign({},Sy,bf(n,My),i)})}),r},Ry=(e,r)=>{const{ranksep:t=0,rankdir:n}=r;return e.getAllNodes().forEach(i=>{isNaN(i.data.layer)||i.data.layer||(i.data.layer=0)}),e.getAllEdges().forEach(i=>{var s;i.data.minlen*=2,((s=i.data.labelpos)===null||s===void 0?void 0:s.toLowerCase())!=="c"&&(n==="TB"||n==="BT"?i.data.width+=i.data.labeloffset:i.data.height+=i.data.labeloffset)}),t/2},Oy=e=>{e.getAllEdges().forEach(r=>{if(r.data.width&&r.data.height){const t=e.getNode(r.source),n=e.getNode(r.target),i={e:r,rank:(n.data.rank-t.data.rank)/2+t.data.rank};Wt(e,"edge-proxy",i,"_ep")}})},Ay=e=>{let r=0;return e.getAllNodes().forEach(t=>{var n,i;t.data.borderTop&&(t.data.minRank=(n=e.getNode(t.data.borderTop))===null||n===void 0?void 0:n.data.rank,t.data.maxRank=(i=e.getNode(t.data.borderBottom))===null||i===void 0?void 0:i.data.rank,r=Math.max(r,t.data.maxRank||-1/0))}),r},Iy=e=>{e.getAllNodes().forEach(r=>{r.data.dummy==="edge-proxy"&&(e.getEdge(r.data.e.id).data.labelRank=r.data.rank,e.removeNode(r.id))})},Ty=(e,r)=>{let t,n=0,i,s=0;const{marginx:a=0,marginy:o=0}={},c=f=>{if(!f.data)return;const l=f.data.x,p=f.data.y,m=f.data.width,y=f.data.height;!isNaN(l)&&!isNaN(m)&&(t===void 0&&(t=l-m/2),t=Math.min(t,l-m/2),n=Math.max(n,l+m/2)),!isNaN(p)&&!isNaN(y)&&(i===void 0&&(i=p-y/2),i=Math.min(i,p-y/2),s=Math.max(s,p+y/2))};return e.getAllNodes().forEach(f=>{c(f)}),e.getAllEdges().forEach(f=>{f!=null&&f.data.hasOwnProperty("x")&&c(f)}),t-=a,i-=o,e.getAllNodes().forEach(f=>{f.data.x-=t,f.data.y-=i}),e.getAllEdges().forEach(f=>{var l;(l=f.data.points)===null||l===void 0||l.forEach(p=>{p.x-=t,p.y-=i}),f.data.hasOwnProperty("x")&&(f.data.x-=t),f.data.hasOwnProperty("y")&&(f.data.y-=i)}),{width:n-t+a,height:s-i+o}},ky=e=>{e.getAllEdges().forEach(r=>{const t=e.getNode(r.source),n=e.getNode(r.target);let i,s;r.data.points?(i=r.data.points[0],s=r.data.points[r.data.points.length-1]):(r.data.points=[],i={x:n.data.x,y:n.data.y},s={x:t.data.x,y:t.data.y}),r.data.points.unshift(Kc(t.data,i)),r.data.points.push(Kc(n.data,s))})},jy=e=>{e.getAllEdges().forEach(r=>{if(r.data.hasOwnProperty("x"))switch((r.data.labelpos==="l"||r.data.labelpos==="r")&&(r.data.width-=r.data.labeloffset),r.data.labelpos){case"l":r.data.x-=r.data.width/2+r.data.labeloffset;break;case"r":r.data.x+=r.data.width/2+r.data.labeloffset;break}})},Cy=e=>{e.getAllEdges().forEach(r=>{var t;r.data.reversed&&((t=r.data.points)===null||t===void 0||t.reverse())})},Py=e=>{e.getAllNodes().forEach(r=>{var t,n,i;if(!((t=e.getChildren(r.id))===null||t===void 0)&&t.length){const s=e.getNode(r.id),a=e.getNode(s.data.borderTop),o=e.getNode(s.data.borderBottom),c=e.getNode(s.data.borderLeft[((n=s.data.borderLeft)===null||n===void 0?void 0:n.length)-1]),f=e.getNode(s.data.borderRight[((i=s.data.borderRight)===null||i===void 0?void 0:i.length)-1]);s.data.width=Math.abs((f==null?void 0:f.data.x)-(c==null?void 0:c.data.x))||10,s.data.height=Math.abs((o==null?void 0:o.data.y)-(a==null?void 0:a.data.y))||10,s.data.x=((c==null?void 0:c.data.x)||0)+s.data.width/2,s.data.y=((a==null?void 0:a.data.y)||0)+s.data.height/2}}),e.getAllNodes().forEach(r=>{r.data.dummy==="border"&&e.removeNode(r.id)})},Ly=e=>{e.getAllEdges().forEach(r=>{if(r.source===r.target){const t=e.getNode(r.source);t.data.selfEdges||(t.data.selfEdges=[]),t.data.selfEdges.push(r),e.removeEdge(r.id)}})},Dy=e=>{const r=or(e);r==null||r.forEach(t=>{let n=0;t==null||t.forEach((i,s)=>{var a;const o=e.getNode(i);o.data.order=s+n,(a=o.data.selfEdges)===null||a===void 0||a.forEach(c=>{Wt(e,"selfedge",{width:c.data.width,height:c.data.height,rank:o.data.rank,order:s+ ++n,e:c},"_se")}),delete o.data.selfEdges})})},zy=e=>{e.getAllNodes().forEach(r=>{const t=e.getNode(r.id);if(t.data.dummy==="selfedge"){const n=e.getNode(t.data.e.source),i=n.data.x+n.data.width/2,s=n.data.y,a=t.data.x-i,o=n.data.height/2;e.hasEdge(t.data.e.id)?e.updateEdgeData(t.data.e.id,t.data.e.data):e.addEdge({id:t.data.e.id,source:t.data.e.source,target:t.data.e.target,data:t.data.e.data}),e.removeNode(r.id),t.data.e.data.points=[{x:i+2*a/3,y:s-o},{x:i+5*a/6,y:s-o},{y:s,x:i+a},{x:i+5*a/6,y:s+o},{x:i+2*a/3,y:s+o}],t.data.e.data.x=t.data.x,t.data.e.data.y=t.data.y}})},bf=(e,r)=>{const t={};return r==null||r.forEach(n=>{e[n]!==void 0&&(t[n]=+e[n])}),t},_f=(e={})=>{const r={};return Object.keys(e).forEach(t=>{r[t.toLowerCase()]=e[t]}),r},bt=Array.isArray,Ef=e=>{const r=[],t=e.length;for(let n=0;nr[i][n]+r[n][s]&&(r[i][s]=r[i][n]+r[n][s]);return r},xf=(e,r)=>{const{nodes:t,edges:n}=e,i=[],s={};if(!t)throw new Error("invalid nodes data!");return t&&t.forEach((a,o)=>{s[a.id]=o;const c=[];i.push(c)}),n==null||n.forEach(a=>{const{source:o,target:c}=a,f=s[o],l=s[c];f===void 0||l===void 0||(i[f][l]=1,i[l][f]=1)}),i},Fy=(e,r)=>{const t=[];return e.forEach(n=>{const i=[];n.forEach(s=>{i.push(s*r)}),t.push(i)}),t},By=e=>{let r=1/0,t=1/0,n=-1/0,i=-1/0;return e.forEach(s=>{let a=s.data.size;bt(a)?a.length===1&&(a=[a[0],a[0]]):me(a)?a=[a,a]:(a===void 0||isNaN(a))&&(a=[30,30]);const o=[a[0]/2,a[1]/2],c=s.data.x-o[0],f=s.data.x+o[0],l=s.data.y-o[1],p=s.data.y+o[1];r>c&&(r=c),t>l&&(t=l),nMath.sqrt((e.x-r.x)*(e.x-r.x)+(e.y-r.y)*(e.y-r.y)),Sn=(e,r,t,n="TB",i,s={})=>{if(!(r!=null&&r.length))return;const{stopBranchFn:a,stopAllFn:o}=s;for(let c=0;c{if(e===null)return e;if(e instanceof Date)return new Date(e.getTime());if(e instanceof Array){const r=[];return e.forEach(t=>{r.push(t)}),r.map(t=>qn(t))}if(typeof e=="object"){const r={};return Object.keys(e).forEach(t=>{r[t]=qn(e[t])}),r}return e},it=(e,r)=>{const t=qn(e);return t.data=t.data||{},r&&(me(t.data.x)||(t.data.x=Math.random()*r[0]),me(t.data.y)||(t.data.y=Math.random()*r[1])),t};function ar(e){if(!e)return[0,0,0];if(me(e))return[e,e,e];if(e.length===0)return[0,0,0];const[r,t=r,n=r]=e;return[r,t,n]}function Pt(e,r){let t;return wt(r)?t=r:me(r)?t=()=>r:t=()=>e,t}function Rn(e,r,t=!0){return!r&&r!==0?n=>{const{size:i}=n.data||{};return i?Array.isArray(i)?t?Math.max(...i)||e:i:Vt(i)&&i.width&&i.height?t?Math.max(i.width,i.height)||e:[i.width,i.height]:i:e}:wt(r)?r:me(r)?()=>r:Array.isArray(r)?()=>t?Math.max(...r)||e:r:Vt(r)&&r.width&&r.height?()=>t?Math.max(r.width,r.height)||e:[r.width,r.height]:()=>e}const On=(e,r,t=10)=>{let n;const i=typeof r=="function"?r:()=>r||0;return e?Array.isArray(e)?n=a=>e:wt(e)?n=e:n=a=>e:n=a=>{var o,c,f;if(!((o=a.data)===null||o===void 0)&&o.bboxSize)return(c=a.data)===null||c===void 0?void 0:c.bboxSize;if(!((f=a.data)===null||f===void 0)&&f.size){const l=a.data.size;return Array.isArray(l)?l:Vt(l)?[l.width,l.height]:l}return t},a=>{const o=n(a),c=i(a);return Math.max(...ar(o))+c}},$y={rankdir:"TB",nodesep:50,ranksep:50,edgeLabelSpace:!0,ranker:"tight-tree",controlPoints:!1,radial:!1,focusNode:null};class Gy{constructor(r={}){this.options=r,this.id="antv-dagre",this.options=Object.assign(Object.assign({},$y),r)}execute(r,t){return se(this,void 0,void 0,function*(){return this.genericDagreLayout(!1,r,t)})}assign(r,t){return se(this,void 0,void 0,function*(){yield this.genericDagreLayout(!0,r,t)})}genericDagreLayout(r,t,n){return se(this,void 0,void 0,function*(){const i=Object.assign(Object.assign({},this.options),n),{nodeSize:s,align:a,rankdir:o="TB",ranksep:c,nodesep:f,ranksepFunc:l,nodesepFunc:p,edgeLabelSpace:m,ranker:y,nodeOrder:x,begin:_,controlPoints:b,radial:w,sortByCombo:E,preset:N}=i,S=new Be({tree:[]}),R=Pt(c||50,l),A=Pt(f||50,p);let j=A,I=R;(o==="LR"||o==="RL")&&(j=R,I=A);const D=Rn(10,s,!1),z=t.getAllNodes(),$=t.getAllEdges();z.forEach(Z=>{const ce=ar(D(Z)),pe=I(Z),he=j(Z),ie=ce[0]+2*he,_e=ce[1]+2*pe,G=Z.data.layer;me(G)?S.addNode({id:Z.id,data:{width:ie,height:_e,layer:G}}):S.addNode({id:Z.id,data:{width:ie,height:_e}})}),E&&(S.attachTreeStructure("combo"),z.forEach(Z=>{const{parentId:ce}=Z.data;ce!==void 0&&S.hasNode(ce)&&S.setParent(Z.id,ce,"combo")})),$.forEach(Z=>{S.addEdge({id:Z.id,source:Z.source,target:Z.target,data:{weight:Z.data.weight||1}})});let V;N!=null&&N.length&&(V=new Be({nodes:N})),wy(S,{prevGraph:V,edgeLabelSpace:m,keepNodeOrder:!!x,nodeOrder:x||[],acyclicer:"greedy",ranker:y,rankdir:o,nodesep:f,align:a});const Y=[0,0];if(_){let Z=1/0,ce=1/0;S.getAllNodes().forEach(pe=>{Z>pe.data.x&&(Z=pe.data.x),ce>pe.data.y&&(ce=pe.data.y)}),S.getAllEdges().forEach(pe=>{var he;(he=pe.data.points)===null||he===void 0||he.forEach(ie=>{Z>ie.x&&(Z=ie.x),ce>ie.y&&(ce=ie.y)})}),Y[0]=_[0]-Z,Y[1]=_[1]-ce}const ee=o==="LR"||o==="RL";if(!w){const Z=new Set,pe=o==="BT"||o==="RL"?(G,P)=>P-G:(G,P)=>G-P;S.getAllNodes().forEach(G=>{G.data.x=G.data.x+Y[0],G.data.y=G.data.y+Y[1],Z.add(ee?G.data.x:G.data.y)});const he=Array.from(Z).sort(pe),ie=ee?(G,P)=>G.x!==P.x:(G,P)=>G.y!==P.y,_e=ee?(G,P,X)=>{const te=Math.max(P.y,X.y),le=Math.min(P.y,X.y);return G.filter(xe=>xe.y<=te&&xe.y>=le)}:(G,P,X)=>{const te=Math.max(P.x,X.x),le=Math.min(P.x,X.x);return G.filter(xe=>xe.x<=te&&xe.x>=le)};S.getAllEdges().forEach((G,P)=>{var X;m&&b&&G.data.type!=="loop"&&(G.data.controlPoints=Uy((X=G.data.points)===null||X===void 0?void 0:X.map(({x:te,y:le})=>({x:te+Y[0],y:le+Y[1]})),S.getNode(G.source),S.getNode(G.target),he,ee,ie,_e))})}let J=[];J=S.getAllNodes().map(Z=>it(Z));const ue=S.getAllEdges();return r&&(J.forEach(Z=>{t.mergeNodeData(Z.id,{x:Z.data.x,y:Z.data.y})}),ue.forEach(Z=>{t.mergeEdgeData(Z.id,{controlPoints:Z.data.controlPoints})})),{nodes:J,edges:ue}})}}const Uy=(e,r,t,n,i,s,a)=>{let o=(e==null?void 0:e.slice(1,e.length-1))||[];if(r&&t){let{x:c,y:f}=r.data,{x:l,y:p}=t.data;if(i&&(c=r.data.y,f=r.data.x,l=t.data.y,p=t.data.x),p!==f&&c!==l){const m=n.indexOf(f),y=n[m+1];if(y){const b=o[0],w=i?{x:(f+y)/2,y:(b==null?void 0:b.y)||l}:{x:(b==null?void 0:b.x)||l,y:(f+y)/2};(!b||s(b,w))&&o.unshift(w)}const x=n.indexOf(p),_=Math.abs(x-m);if(_===1)o=a(o,r.data,t.data),o.length||o.push(i?{x:(f+p)/2,y:c}:{x:c,y:(f+p)/2});else if(_>1){const b=n[x-1];if(b){const w=o[o.length-1],E=i?{x:(p+b)/2,y:(w==null?void 0:w.y)||l}:{x:(w==null?void 0:w.x)||c,y:(p+b)/2};(!w||s(w,E))&&o.push(E)}}}}return o},Lt=(e,r,t)=>{const n=e.getAllNodes(),i=e.getAllEdges();if(!(n!=null&&n.length))return{nodes:[],edges:i};if(n.length===1)return r&&e.mergeNodeData(n[0].id,{x:t[0],y:t[1]}),{nodes:[Object.assign(Object.assign({},n[0]),{data:Object.assign(Object.assign({},n[0].data),{x:t[0],y:t[1]})})],edges:i}},Vy={radius:null,startRadius:null,endRadius:null,startAngle:0,endAngle:2*Math.PI,clockwise:!0,divisions:1,ordering:null,angleRatio:1};class Wy{constructor(r={}){this.options=r,this.id="circular",this.options=Object.assign(Object.assign({},Vy),r)}execute(r,t){return se(this,void 0,void 0,function*(){return this.genericCircularLayout(!1,r,t)})}assign(r,t){return se(this,void 0,void 0,function*(){yield this.genericCircularLayout(!0,r,t)})}genericCircularLayout(r,t,n){return se(this,void 0,void 0,function*(){const i=Object.assign(Object.assign({},this.options),n),{width:s,height:a,center:o,divisions:c,startAngle:f=0,endAngle:l=2*Math.PI,angleRatio:p,ordering:m,clockwise:y,nodeSpacing:x,nodeSize:_}=i,b=t.getAllNodes(),w=t.getAllEdges(),[E,N,S]=Ky(s,a,o),R=b==null?void 0:b.length;if(!R||R===1)return Lt(t,r,S);const A=(l-f)/R;let{radius:j,startRadius:I,endRadius:D}=i;if(x){const ee=Pt(10,x),J=Rn(10,_);let ue=-1/0;b.forEach(Z=>{const ce=J(Z);ue{ce===0?be+=ue||10:be+=(ee(Z)||0)+(ue||10)}),j=be/(2*Math.PI)}else!j&&!I&&!D?j=Math.min(N,E)/2:!I&&D?I=D:I&&!D&&(D=I);const z=A*p;let $=[];m==="topology"?$=Mf(t,b):m==="topology-directed"?$=Mf(t,b,!0):m==="degree"?$=Yy(t,b):$=b.map(ee=>it(ee));const V=Math.ceil(R/c);for(let ee=0;ee{t.mergeNodeData(ee.id,{x:ee.data.x,y:ee.data.y})}),{nodes:$,edges:w}})}}const Mf=(e,r,t=!1)=>{const n=[it(r[0])],i={},s=r.length;i[r[0].id]=!0;let a=0;return r.forEach((o,c)=>{if(c!==0)if((c===s-1||e.getDegree(o.id,"both")!==e.getDegree(r[c+1].id,"both")||e.areNeighbors(n[a].id,o.id))&&!i[o.id])n.push(it(o)),i[o.id]=!0,a++;else{const f=t?e.getSuccessors(n[a].id):e.getNeighbors(n[a].id);let l=!1;for(let m=0;m{t.push(it(n))}),t.sort((n,i)=>e.getDegree(n.id,"both")-e.getDegree(i.id,"both")),t}const Ky=(e,r,t)=>{let n=e,i=r,s=t;return!n&&typeof window!="undefined"&&(n=window.innerWidth),!i&&typeof window!="undefined"&&(i=window.innerHeight),s||(s=[n/2,i/2]),[n,i,s]},Xy={nodeSize:30,nodeSpacing:10,preventOverlap:!1,sweep:void 0,equidistant:!1,startAngle:3/2*Math.PI,clockwise:!0,maxLevelDiff:void 0,sortBy:"degree"};class An{constructor(r={}){this.options=r,this.id="concentric",this.options=Object.assign(Object.assign({},Xy),r)}execute(r,t){return se(this,void 0,void 0,function*(){return this.genericConcentricLayout(!1,r,t)})}assign(r,t){return se(this,void 0,void 0,function*(){yield this.genericConcentricLayout(!0,r,t)})}genericConcentricLayout(r,t,n){return se(this,void 0,void 0,function*(){const i=Object.assign(Object.assign({},this.options),n),{center:s,width:a,height:o,sortBy:c,maxLevelDiff:f,sweep:l,clockwise:p,equidistant:m,preventOverlap:y,startAngle:x=3/2*Math.PI,nodeSize:_,nodeSpacing:b}=i,w=t.getAllNodes(),E=t.getAllEdges(),N=!a&&typeof window!="undefined"?window.innerWidth:a,S=!o&&typeof window!="undefined"?window.innerHeight:o,R=s||[N/2,S/2];if(!(w!=null&&w.length)||w.length===1)return Lt(t,r,R);const A=[];let j,I=0;bt(_)?j=Math.max(_[0],_[1]):wt(_)?(j=-1/0,w.forEach(Z=>{const ce=Math.max(...ar(_(Z)));ce>j&&(j=ce)})):j=_,bt(b)?I=Math.max(b[0],b[1]):me(b)&&(I=b),w.forEach(Z=>{const ce=it(Z);A.push(ce);let pe=j;const{data:he}=ce;bt(he.size)?pe=Math.max(he.size[0],he.size[1]):me(he.size)?pe=he.size:Vt(he.size)&&(pe=Math.max(he.size.width,he.size.height)),j=Math.max(j,pe),wt(b)&&(I=Math.max(b(Z),I))});const D={};A.forEach((Z,ce)=>{D[Z.id]=ce});let z=c;(!sr(z)||A[0].data[z]===void 0)&&(z="degree"),z==="degree"?A.sort((Z,ce)=>t.getDegree(ce.id,"both")-t.getDegree(Z.id,"both")):A.sort((Z,ce)=>ce.data[z]-Z.data[z]);const $=A[0],V=(f||(z==="degree"?t.getDegree($.id,"both"):$.data[z]))/4,Y=[{nodes:[]}];let ee=Y[0];A.forEach(Z=>{if(ee.nodes.length>0){const ce=Math.abs(z==="degree"?t.getDegree(ee.nodes[0].id,"both")-t.getDegree(Z.id,"both"):ee.nodes[0].data[z]-Z.data[z]);V&&ce>=V&&(ee={nodes:[]},Y.push(ee))}ee.nodes.push(Z)});let J=j+I;if(!y){const Z=Y.length>0&&Y[0].nodes.length>1,pe=(Math.min(N,S)/2-J)/(Y.length+(Z?1:0));J=Math.min(J,pe)}let ue=0;if(Y.forEach(Z=>{const ce=l===void 0?2*Math.PI-2*Math.PI/Z.nodes.length:l;if(Z.dTheta=ce/Math.max(1,Z.nodes.length-1),Z.nodes.length>1&&y){const pe=Math.cos(Z.dTheta)-Math.cos(0),he=Math.sin(Z.dTheta)-Math.sin(0),ie=Math.sqrt(J*J/(pe*pe+he*he));ue=Math.max(ie,ue)}Z.r=ue,ue+=J}),m){let Z=0,ce=0;for(let pe=0;pe{he===0&&(ce=pe.r||0),pe.r=ce,ce+=Z})}return Y.forEach(Z=>{const ce=Z.dTheta||0,pe=Z.r||0;Z.nodes.forEach((he,ie)=>{const _e=x+(p?1:-1)*ce*ie;he.data.x=R[0]+pe*Math.cos(_e),he.data.y=R[1]+pe*Math.sin(_e)})}),r&&A.forEach(Z=>t.mergeNodeData(Z.id,{x:Z.data.x,y:Z.data.y})),{nodes:A,edges:E}})}}function Zy(e){const r=+this._x.call(null,e),t=+this._y.call(null,e);return Sf(this.cover(r,t),r,t,e)}function Sf(e,r,t,n){if(isNaN(r)||isNaN(t))return e;var i,s=e._root,a={data:n},o=e._x0,c=e._y0,f=e._x1,l=e._y1,p,m,y,x,_,b,w,E;if(!s)return e._root=a,e;for(;s.length;)if((_=r>=(p=(o+f)/2))?o=p:f=p,(b=t>=(m=(c+l)/2))?c=m:l=m,i=s,!(s=s[w=b<<1|_]))return i[w]=a,e;if(y=+e._x.call(null,s.data),x=+e._y.call(null,s.data),r===y&&t===x)return a.next=s,i?i[w]=a:e._root=a,e;do i=i?i[w]=new Array(4):e._root=new Array(4),(_=r>=(p=(o+f)/2))?o=p:f=p,(b=t>=(m=(c+l)/2))?c=m:l=m;while((w=b<<1|_)===(E=(x>=m)<<1|y>=p));return i[E]=s,i[w]=a,e}function Jy(e){var r,t,n=e.length,i,s,a=new Array(n),o=new Array(n),c=1/0,f=1/0,l=-1/0,p=-1/0;for(t=0;tl&&(l=i),sp&&(p=s));if(c>l||f>p)return this;for(this.cover(c,f).cover(l,p),t=0;te||e>=i||n>r||r>=s;)switch(f=(rl||(o=x.y0)>p||(c=x.x1)=w)<<1|e>=b)&&(x=m[m.length-1],m[m.length-1]=m[m.length-1-_],m[m.length-1-_]=x)}else{var E=e-+this._x.call(null,y.data),N=r-+this._y.call(null,y.data),S=E*E+N*N;if(S=(m=(a+c)/2))?a=m:c=m,(_=p>=(y=(o+f)/2))?o=y:f=y,r=t,!(t=t[b=_<<1|x]))return this;if(!t.length)break;(r[b+1&3]||r[b+2&3]||r[b+3&3])&&(n=r,w=b)}for(;t.data!==e;)if(i=t,!(t=t.next))return this;return(s=t.next)&&delete t.next,i?(s?i.next=s:delete i.next,this):r?(s?r[b]=s:delete r[b],(t=r[0]||r[1]||r[2]||r[3])&&t===(r[3]||r[2]||r[1]||r[0])&&!t.length&&(n?n[w]=t:this._root=t),this):(this._root=s,this)}function nw(e){for(var r=0,t=e.length;r=(x=(c+p)/2))?c=x:p=x,(R=t>=(_=(f+m)/2))?f=_:m=_,(A=n>=(b=(l+y)/2))?l=b:y=b,s=a,!(a=a[j=A<<2|R<<1|S]))return s[j]=o,e;if(w=+e._x.call(null,a.data),E=+e._y.call(null,a.data),N=+e._z.call(null,a.data),r===w&&t===E&&n===N)return o.next=a,s?s[j]=o:e._root=o,e;do s=s?s[j]=new Array(8):e._root=new Array(8),(S=r>=(x=(c+p)/2))?c=x:p=x,(R=t>=(_=(f+m)/2))?f=_:m=_,(A=n>=(b=(l+y)/2))?l=b:y=b;while((j=A<<2|R<<1|S)===(I=(N>=b)<<2|(E>=_)<<1|w>=x));return s[I]=a,s[j]=o,e}function dw(e){Array.isArray(e)||(e=Array.from(e));const r=e.length,t=new Float64Array(r),n=new Float64Array(r),i=new Float64Array(r);let s=1/0,a=1/0,o=1/0,c=-1/0,f=-1/0,l=-1/0;for(let p=0,m,y,x,_;pc&&(c=y),xf&&(f=x),_l&&(l=_));if(s>c||a>f||o>l)return this;this.cover(s,a,o).cover(c,f,l);for(let p=0;pe||e>=a||i>r||r>=o||s>t||t>=c;)switch(m=(tx||(f=N.y0)>_||(l=N.z0)>b||(p=N.x1)=j)<<2|(r>=A)<<1|e>=R)&&(N=w[w.length-1],w[w.length-1]=w[w.length-1-S],w[w.length-1-S]=N)}else{var I=e-+this._x.call(null,E.data),D=r-+this._y.call(null,E.data),z=t-+this._z.call(null,E.data),$=I*I+D*D+z*z;if($Math.sqrt(Ot(e-n,2)+Ot(r-i,2)+Ot(t-s,2));function ww(e,r,t,n){const i=[],s=e-n,a=r-n,o=t-n,c=e+n,f=r+n,l=t+n;return this.visit((p,m,y,x,_,b,w)=>{if(!p.length)do{const E=p.data;yw(e,r,t,this._x(E),this._y(E),this._z(E))<=n&&i.push(E)}while(p=p.next);return m>c||y>f||x>l||_=(_=(a+f)/2))?a=_:f=_,(N=y>=(b=(o+l)/2))?o=b:l=b,(S=x>=(w=(c+p)/2))?c=w:p=w,r=t,!(t=t[R=S<<2|N<<1|E]))return this;if(!t.length)break;(r[R+1&7]||r[R+2&7]||r[R+3&7]||r[R+4&7]||r[R+5&7]||r[R+6&7]||r[R+7&7])&&(n=r,A=R)}for(;t.data!==e;)if(i=t,!(t=t.next))return this;return(s=t.next)&&delete t.next,i?(s?i.next=s:delete i.next,this):r?(s?r[R]=s:delete r[R],(t=r[0]||r[1]||r[2]||r[3]||r[4]||r[5]||r[6]||r[7])&&t===(r[7]||r[6]||r[5]||r[4]||r[3]||r[2]||r[1]||r[0])&&!t.length&&(n?n[A]=t:this._root=t),this):(this._root=s,this)}function _w(e){for(var r=0,t=e.length;r{const{nodeStrength:m,x:y,y:x,z:_,size:b}=l.data;return{x:y,y:x,z:_,size:b,index:p,id:l.id,vx:0,vy:0,vz:0,weight:s*m}}),c=(i===2?Yt(o,l=>l.x,l=>l.y):Ar(o,l=>l.x,l=>l.y,l=>l.z)).visitAfter(jw),f=new Map;return o.forEach(l=>{f.set(l.id,l),Pw(l,c,i)}),o.map((l,p)=>{const{id:m,data:y}=a[p],{mass:x=1}=y;n[m]={x:l.vx/x,y:l.vy/x,z:l.vz/x}}),n}function jw(e){let r=0,t=0,n=0,i=0,s=0;const a=e.length;if(a){for(let o=0;o{var o;if(((o=e.data)===null||o===void 0?void 0:o.id)===s.id)return;const c=[t,n,i][a-1],f=s.x-e.x||kn,l=s.y-e.y||kn,p=s.z-e.z||kn,m=[f,l,p],y=c-r;let x=0;for(let w=0;wCw(n,i,s,a,o,e,t))}const Lw={dimensions:2,maxIteration:500,gravity:10,factor:1,edgeStrength:50,nodeStrength:1e3,coulombDisScale:.005,damping:.9,maxSpeed:200,minMovement:.4,interval:.02,linkDistance:200,clusterNodeStrength:20,preventOverlap:!0,distanceThresholdMode:"mean"};class Af{constructor(r={}){this.options=r,this.id="force",this.timeInterval=0,this.judgingDistance=0,this.running=!1,this.options=Object.assign(Object.assign({},Lw),r)}execute(r,t){return se(this,void 0,void 0,function*(){return this.genericForceLayout(!1,r,t)})}assign(r,t){return se(this,void 0,void 0,function*(){yield this.genericForceLayout(!0,r,t)})}stop(){this.timeInterval&&typeof window!="undefined"&&window.clearInterval(this.timeInterval),this.running=!1}tick(r=this.options.maxIteration||1){if(this.lastResult)return this.lastResult;for(let n=0;(this.judgingDistance>this.lastOptions.minMovement||n<1)&&nthis.lastGraph.mergeNodeData(n.id,{x:n.data.x,y:n.data.y,z:this.options.dimensions===3?n.data.z:void 0})),t}genericForceLayout(r,t,n){return se(this,void 0,void 0,function*(){const i=Object.assign(Object.assign({},this.options),n),s=t.getAllNodes(),a=t.getAllEdges(),o=this.formatOptions(i,t),{dimensions:c,width:f,height:l,nodeSize:p,getMass:m,nodeStrength:y,edgeStrength:x,linkDistance:_}=o,b=s.map((I,D)=>Object.assign(Object.assign({},I),{data:Object.assign(Object.assign({},I.data),{x:me(I.data.x)?I.data.x:Math.random()*f,y:me(I.data.y)?I.data.y:Math.random()*l,z:me(I.data.z)?I.data.z:Math.random()*Math.sqrt(f*l),size:p(I)||30,mass:m(I),nodeStrength:y(I)})})),w=a.map(I=>Object.assign(Object.assign({},I),{data:Object.assign(Object.assign({},I.data),{edgeStrength:x(I),linkDistance:_(I,t.getNode(I.source),t.getNode(I.target))})}));if(!(s!=null&&s.length))return this.lastResult={nodes:[],edges:a},{nodes:[],edges:a};const E={};s.forEach((I,D)=>{E[I.id]={x:0,y:0,z:0}});const N=new Be({nodes:b,edges:w});this.formatCentripetal(o,N);const{maxIteration:S,minMovement:R,onTick:A}=o;if(this.lastLayoutNodes=b,this.lastLayoutEdges=w,this.lastAssign=r,this.lastGraph=t,this.lastCalcGraph=N,this.lastOptions=o,this.lastVelMap=E,typeof window=="undefined")return;let j=0;return new Promise(I=>{this.timeInterval=window.setInterval(()=>{(!s||!this.running)&&I({nodes:jn(t,b),edges:a}),this.runOneStep(N,t,j,E,o),this.updatePosition(t,N,E,o),r&&b.forEach(D=>t.mergeNodeData(D.id,{x:D.data.x,y:D.data.y,z:c===3?D.data.z:void 0})),A==null||A({nodes:jn(t,b),edges:a}),j++,(j>=S||this.judgingDistance{let f=1;me(c==null?void 0:c.data.mass)&&(f=c==null?void 0:c.data.mass);const l=t.getDegree(c.id,"both");return!l||l<5?f:l*5*f}),n.nodeSize=On(r.nodeSize,r.nodeSpacing);const o=r.linkDistance?Pt(1,r.linkDistance):c=>1+n.nodeSize(t.getNode(c.source))+n.nodeSize(t.getNode(c.target));return n.linkDistance=o,n.nodeStrength=Pt(1,r.nodeStrength),n.edgeStrength=Pt(1,r.edgeStrength),n}formatCentripetal(r,t){const{dimensions:n,centripetalOptions:i,center:s,clusterNodeStrength:a,leafCluster:o,clustering:c,nodeClusterBy:f}=r,l=t.getAllNodes(),p=i||{leaf:2,single:2,others:1,center:w=>({x:s[0],y:s[1],z:n===3?s[2]:void 0})};typeof a!="function"&&(r.clusterNodeStrength=w=>a);let m,y;if(o&&f&&(m=If(t,f),y=Array.from(new Set(l==null?void 0:l.map(w=>w.data[f])))||[],r.centripetalOptions=Object.assign(p,{single:100,leaf:w=>{const{siblingLeaves:E,sameTypeLeaves:N}=m[w.id]||{};return(N==null?void 0:N.length)===(E==null?void 0:E.length)||(y==null?void 0:y.length)===1?1:r.clusterNodeStrength(w)},others:1,center:w=>{const E=t.getDegree(w.id,"both");if(!E)return{x:100,y:100,z:0};let N;if(E===1){const{sameTypeLeaves:S=[]}=m[w.id]||{};S.length===1?N=void 0:S.length>1&&(N=Tf(S))}else N=void 0;return{x:N==null?void 0:N.x,y:N==null?void 0:N.y,z:N==null?void 0:N.z}}})),c&&f){m||(m=If(t,f)),y||(y=Array.from(new Set(l.map(E=>E.data[f])))),y=y.filter(E=>E!==void 0);const w={};y.forEach(E=>{const N=l.filter(S=>S.data[f]===E).map(S=>t.getNode(S.id));w[E]=Tf(N)}),r.centripetalOptions=Object.assign(p,{single:E=>r.clusterNodeStrength(E),leaf:E=>r.clusterNodeStrength(E),others:E=>r.clusterNodeStrength(E),center:E=>{const N=w[E.data[f]];return{x:N==null?void 0:N.x,y:N==null?void 0:N.y,z:N==null?void 0:N.z}}})}const{leaf:x,single:_,others:b}=r.centripetalOptions||{};x&&typeof x!="function"&&(r.centripetalOptions.leaf=()=>x),_&&typeof _!="function"&&(r.centripetalOptions.single=()=>_),b&&typeof b!="function"&&(r.centripetalOptions.others=()=>b)}runOneStep(r,t,n,i,s){const a={},o=r.getAllNodes(),c=r.getAllEdges();if(!(o!=null&&o.length))return;const{monitor:f}=s;if(this.calRepulsive(r,a,s),c&&this.calAttractive(r,a,s),this.calGravity(r,t,a,s),this.updateVelocity(r,a,i,s),f){const l=this.calTotalEnergy(a,o);f({energy:l,nodes:t.getAllNodes(),edges:t.getAllEdges(),iterations:n})}}calTotalEnergy(r,t){if(!(t!=null&&t.length))return 0;let n=0;return t.forEach((i,s)=>{const a=r[i.id].x,o=r[i.id].y,c=this.options.dimensions===3?r[i.id].z:0,f=a*a+o*o+c*c,{mass:l=1}=i.data;n+=l*f*.5}),n}calRepulsive(r,t,n){const{dimensions:i,factor:s,coulombDisScale:a}=n;kw(r,s,a*a,t,i)}calAttractive(r,t,n){const{dimensions:i,nodeSize:s}=n;r.getAllEdges().forEach((a,o)=>{const{source:c,target:f}=a,l=r.getNode(c),p=r.getNode(f);if(!l||!p)return;let m=p.data.x-l.data.x,y=p.data.y-l.data.y,x=i===3?p.data.z-l.data.z:0;!m&&!y&&(m=Math.random()*.01,y=Math.random()*.01,i===3&&!x&&(x=Math.random()*.01));const _=Math.sqrt(m*m+y*y+x*x);if(_{const{id:_,data:b}=x,{mass:w,x:E,y:N,z:S}=b,R=t.getNode(_);let A=0,j=0,I=0,D=m;const z=r.getDegree(_,"in"),$=r.getDegree(_,"out"),V=r.getDegree(_,"both"),Y=s==null?void 0:s(R,V);if(Y){const[ee,J,ue]=Y;A=E-ee,j=N-J,D=ue}else A=E-p[0],j=N-p[1],I=S-p[2];if(D&&(n[_].x-=D*A/w,n[_].y-=D*j/w,n[_].z-=D*I/w),y){const{leaf:ee,single:J,others:ue,center:be}=y,{x:Z,y:ce,z:pe,centerStrength:he}=(be==null?void 0:be(R,o,c,f,l))||{x:0,y:0,z:0,centerStrength:0};if(!me(Z)||!me(ce))return;const ie=(E-Z)/w,_e=(N-ce)/w,G=(S-pe)/w;if(he&&(n[_].x-=he*ie,n[_].y-=he*_e,n[_].z-=he*G),V===0){const X=J(R);if(!X)return;n[_].x-=X*ie,n[_].y-=X*_e,n[_].z-=X*G;return}if(z===0||$===0){const X=ee(R,o,c);if(!X)return;n[_].x-=X*ie,n[_].y-=X*_e,n[_].z-=X*G;return}const P=ue(R);if(!P)return;n[_].x-=P*ie,n[_].y-=P*_e,n[_].z-=P*G}})}updateVelocity(r,t,n,i){const{damping:s,maxSpeed:a,interval:o,dimensions:c}=i,f=r.getAllNodes();f!=null&&f.length&&f.forEach(l=>{const{id:p}=l;let m=(n[p].x+t[p].x*o)*s||.01,y=(n[p].y+t[p].y*o)*s||.01,x=c===3?(n[p].z+t[p].z*o)*s||.01:0;const _=Math.sqrt(m*m+y*y+x*x);if(_>a){const b=a/_;m=b*m,y=b*y,x=b*x}n[p]={x:m,y,z:x}})}updatePosition(r,t,n,i){const{distanceThresholdMode:s,interval:a,dimensions:o}=i,c=t.getAllNodes();if(!(c!=null&&c.length)){this.judgingDistance=0;return}let f=0;s==="max"?this.judgingDistance=-1/0:s==="min"&&(this.judgingDistance=1/0),c.forEach(l=>{const{id:p}=l,m=r.getNode(p);if(me(m.data.fx)&&me(m.data.fy)){t.mergeNodeData(p,{x:m.data.fx,y:m.data.fy,z:o===3?m.data.fz:void 0});return}const y=n[p].x*a,x=n[p].y*a,_=o===3?n[p].z*a:0;t.mergeNodeData(p,{x:l.data.x+y,y:l.data.y+x,z:l.data.z+_});const b=Math.sqrt(y*y+x*x+_*_);switch(s){case"max":this.judgingDistanceb&&(this.judgingDistance=b);break;default:f=f+b;break}}),(!s||s==="mean")&&(this.judgingDistance=f/c.length)}}const If=(e,r)=>{const t=e.getAllNodes();if(!(t!=null&&t.length))return{};const n={};return t.forEach((i,s)=>{e.getDegree(i.id,"both")===1&&(n[i.id]=Dw(e,"leaf",i,r))}),n},Dw=(e,r,t,n)=>{const i=e.getDegree(t.id,"in"),s=e.getDegree(t.id,"out");let a=t,o=[];i===0?(a=e.getSuccessors(t.id)[0],o=e.getNeighbors(a.id)):s===0&&(a=e.getPredecessors(t.id)[0],o=e.getNeighbors(a.id)),o=o.filter(f=>e.getDegree(f.id,"in")===0||e.getDegree(f.id,"out")===0);const c=zw(e,r,n,t,o);return{coreNode:a,siblingLeaves:o,sameTypeLeaves:c}},zw=(e,r,t,n,i)=>{const s=n.data[t]||"";let a=(i==null?void 0:i.filter(o=>o.data[t]===s))||[];return a=a.filter(o=>e.getDegree(o.id,"in")===0||e.getDegree(o.id,"out")===0),a},Tf=e=>{const r={x:0,y:0};e.forEach(n=>{const{x:i,y:s}=n.data;r.x+=i||0,r.y+=s||0});const t=e.length||1;return{x:r.x/t,y:r.y/t}},jn=(e,r)=>r.map(t=>{const{id:n,data:i}=t,s=e.getNode(n);return Object.assign(Object.assign({},s),{data:Object.assign(Object.assign({},s.data),{x:i.x,y:i.y,z:i.z})})});var Ir=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function kf(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function jf(e){if(Object.prototype.hasOwnProperty.call(e,"__esModule"))return e;var r=e.default;if(typeof r=="function"){var t=function n(){return this instanceof n?Reflect.construct(r,arguments,this.constructor):r.apply(this,arguments)};t.prototype=r.prototype}else t={};return Object.defineProperty(t,"__esModule",{value:!0}),Object.keys(e).forEach(function(n){var i=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,i.get?i:{enumerable:!0,get:function(){return e[n]}})}),t}var we={};const Fw=Object.prototype.toString;function ur(e){const r=Fw.call(e);return r.endsWith("Array]")&&!r.includes("Big")}var Bw=Object.freeze({__proto__:null,isAnyArray:ur}),$w=jf(Bw);function Gw(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!ur(e))throw new TypeError("input must be an array");if(e.length===0)throw new TypeError("input must not be empty");var t=r.fromIndex,n=t===void 0?0:t,i=r.toIndex,s=i===void 0?e.length:i;if(n<0||n>=e.length||!Number.isInteger(n))throw new Error("fromIndex must be a positive integer smaller than length");if(s<=n||s>e.length||!Number.isInteger(s))throw new Error("toIndex must be an integer greater than fromIndex and at most equal to length");for(var a=e[n],o=n+1;oa&&(a=e[o]);return a}function Uw(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!ur(e))throw new TypeError("input must be an array");if(e.length===0)throw new TypeError("input must not be empty");var t=r.fromIndex,n=t===void 0?0:t,i=r.toIndex,s=i===void 0?e.length:i;if(n<0||n>=e.length||!Number.isInteger(n))throw new Error("fromIndex must be a positive integer smaller than length");if(s<=n||s>e.length||!Number.isInteger(s))throw new Error("toIndex must be an integer greater than fromIndex and at most equal to length");for(var a=e[n],o=n+1;o1&&arguments[1]!==void 0?arguments[1]:{};if(ur(e)){if(e.length===0)throw new TypeError("input must not be empty")}else throw new TypeError("input must be an array");var t;if(r.output!==void 0){if(!ur(r.output))throw new TypeError("output option must be an array if specified");t=r.output}else t=new Array(e.length);var n=Uw(e),i=Gw(e);if(n===i)throw new RangeError("minimum and maximum input values are equal. Cannot rescale a constant array");var s=r.min,a=s===void 0?r.autoMinMax?n:0:s,o=r.max,c=o===void 0?r.autoMinMax?i:1:o;if(a>=c)throw new RangeError("min option must be smaller than max option");for(var f=(c-a)/(i-n),l=0;l=0&&h?` ${c(M,g-1)}`:c(M,g)).padEnd(g)}function c(M,g){let h=M.toString();if(h.length<=g)return h;let u=M.toFixed(g);if(u.length>g&&(u=M.toFixed(Math.max(0,g-(u.length-g)))),u.length<=g&&!u.startsWith("0.000")&&!u.startsWith("-0.000"))return u;let d=M.toExponential(g);return d.length>g&&(d=M.toExponential(Math.max(0,g-(d.length-g)))),d.slice(0)}function f(M,g){M.prototype.add=function(u){return typeof u=="number"?this.addS(u):this.addM(u)},M.prototype.addS=function(u){for(let d=0;d>u);return this},M.prototype.signPropagatingRightShiftM=function(u){if(u=g.checkMatrix(u),this.rows!==u.rows||this.columns!==u.columns)throw new RangeError("Matrices dimensions must be equal");for(let d=0;d>u.get(d,v));return this},M.signPropagatingRightShift=function(u,d){return new g(u).signPropagatingRightShift(d)},M.prototype.rightShift=function(u){return typeof u=="number"?this.rightShiftS(u):this.rightShiftM(u)},M.prototype.rightShiftS=function(u){for(let d=0;d>>u);return this},M.prototype.rightShiftM=function(u){if(u=g.checkMatrix(u),this.rows!==u.rows||this.columns!==u.columns)throw new RangeError("Matrices dimensions must be equal");for(let d=0;d>>u.get(d,v));return this},M.rightShift=function(u,d){return new g(u).rightShift(d)},M.prototype.zeroFillRightShift=M.prototype.rightShift,M.prototype.zeroFillRightShiftS=M.prototype.rightShiftS,M.prototype.zeroFillRightShiftM=M.prototype.rightShiftM,M.zeroFillRightShift=M.rightShift,M.prototype.not=function(){for(let u=0;uu)throw new RangeError("Row index out of range")}function p(M,g,h){let u=h?M.columns:M.columns-1;if(g<0||g>u)throw new RangeError("Column index out of range")}function m(M,g){if(g.to1DArray&&(g=g.to1DArray()),g.length!==M.columns)throw new RangeError("vector size must be the same as the number of columns");return g}function y(M,g){if(g.to1DArray&&(g=g.to1DArray()),g.length!==M.rows)throw new RangeError("vector size must be the same as the number of rows");return g}function x(M,g){if(!e.isAnyArray(g))throw new TypeError("row indices must be an array");for(let h=0;h=M.rows)throw new RangeError("row indices are out of range")}function _(M,g){if(!e.isAnyArray(g))throw new TypeError("column indices must be an array");for(let h=0;h=M.columns)throw new RangeError("column indices are out of range")}function b(M,g,h,u,d){if(arguments.length!==5)throw new RangeError("expected 4 arguments");if(E("startRow",g),E("endRow",h),E("startColumn",u),E("endColumn",d),g>h||u>d||g<0||g>=M.rows||h<0||h>=M.rows||u<0||u>=M.columns||d<0||d>=M.columns)throw new RangeError("Submatrix indices are out of range")}function w(M,g=0){let h=[];for(let u=0;u=v)throw new RangeError("min must be smaller than max");let O=v-d,T=new P(g,h);for(let k=0;ku?(v=!0,u=h):(d=!1,v=!0);g++}return d}isReducedEchelonForm(){let g=0,h=0,u=-1,d=!0,v=!1;for(;gu?(v=!0,u=h):(d=!1,v=!0);for(let q=h+1;qg.get(d,u)&&(d=v);if(g.get(d,u)===0)u++;else{g.swapRows(h,d);let v=g.get(h,u);for(let q=u;q=0;)if(g.maxRow(d)===0)d--;else{let v=0,q=!1;for(;vh[u]&&(h[u]=this.get(u,d));return h}case"column":{const h=new Array(this.columns).fill(Number.NEGATIVE_INFINITY);for(let u=0;uh[d]&&(h[d]=this.get(u,d));return h}case void 0:{let h=this.get(0,0);for(let u=0;uh&&(h=this.get(u,d));return h}default:throw new Error(`invalid option: ${g}`)}}maxIndex(){N(this);let g=this.get(0,0),h=[0,0];for(let u=0;ug&&(g=this.get(u,d),h[0]=u,h[1]=d);return h}min(g){if(this.isEmpty())return NaN;switch(g){case"row":{const h=new Array(this.rows).fill(Number.POSITIVE_INFINITY);for(let u=0;uh&&(h=this.get(g,u));return h}maxRowIndex(g){l(this,g),N(this);let h=this.get(g,0),u=[g,0];for(let d=1;dh&&(h=this.get(g,d),u[1]=d);return u}minRow(g){if(l(this,g),this.isEmpty())return NaN;let h=this.get(g,0);for(let u=1;uh&&(h=this.get(u,g));return h}maxColumnIndex(g){p(this,g),N(this);let h=this.get(0,g),u=[0,g];for(let d=1;dh&&(h=this.get(d,g),u[0]=d);return u}minColumn(g){if(p(this,g),this.isEmpty())return NaN;let h=this.get(0,g);for(let u=1;u1;d/=2)(d&1)!==0&&(h=h.mmul(u)),u=u.mmul(u);return h}strassen2x2(g){g=P.checkMatrix(g);let h=new P(2,2);const u=this.get(0,0),d=g.get(0,0),v=this.get(0,1),q=g.get(0,1),O=this.get(1,0),T=g.get(1,0),k=this.get(1,1),B=g.get(1,1),C=(u+k)*(d+B),W=(O+k)*d,ne=u*(q-B),U=k*(T-d),K=(u+v)*B,oe=(O-u)*(d+q),L=(v-k)*(T+B),re=C+U-K+L,fe=ne+K,ve=W+U,ye=C-W+ne+oe;return h.set(0,0,re),h.set(0,1,fe),h.set(1,0,ve),h.set(1,1,ye),h}strassen3x3(g){g=P.checkMatrix(g);let h=new P(3,3);const u=this.get(0,0),d=this.get(0,1),v=this.get(0,2),q=this.get(1,0),O=this.get(1,1),T=this.get(1,2),k=this.get(2,0),B=this.get(2,1),C=this.get(2,2),W=g.get(0,0),ne=g.get(0,1),U=g.get(0,2),K=g.get(1,0),oe=g.get(1,1),L=g.get(1,2),re=g.get(2,0),fe=g.get(2,1),ve=g.get(2,2),ye=(u+d+v-q-O-B-C)*oe,je=(u-q)*(-ne+oe),de=O*(-W+ne+K-oe-L-re+ve),ge=(-u+q+O)*(W-ne+oe),Ae=(q+O)*(-W+ne),F=u*W,Q=(-u+k+B)*(W-U+L),ae=(-u+k)*(U-L),H=(k+B)*(-W+U),Ce=(u+d+v-O-T-k-B)*L,qe=B*(-W+U+K-oe-L-re+fe),Ie=(-v+B+C)*(oe+re-fe),Pe=(v-C)*(oe-fe),Xe=v*re,dt=(B+C)*(-re+fe),Ge=(-v+O+T)*(L+re-ve),yt=(v-T)*(L-ve),Rt=(O+T)*(-re+ve),Ne=d*K,Ze=T*fe,st=q*U,ot=k*ne,Ue=C*ve,Xx=F+Xe+Ne,Zx=ye+ge+Ae+F+Ie+Xe+dt,Jx=F+Q+H+Ce+Xe+Ge+Rt,Qx=je+de+ge+F+Xe+Ge+yt,Hx=je+ge+Ae+F+Ze,eN=Xe+Ge+yt+Rt+st,tN=F+Q+ae+qe+Ie+Pe+Xe,rN=Ie+Pe+Xe+dt+ot,nN=F+Q+ae+H+Ue;return h.set(0,0,Xx),h.set(0,1,Zx),h.set(0,2,Jx),h.set(1,0,Qx),h.set(1,1,Hx),h.set(1,2,eN),h.set(2,0,tN),h.set(2,1,rN),h.set(2,2,nN),h}mmulStrassen(g){g=P.checkMatrix(g);let h=this.clone(),u=h.rows,d=h.columns,v=g.rows,q=g.columns;d!==v&&console.warn(`Multiplying ${u} x ${d} and ${v} x ${q} matrix: dimensions do not match.`);function O(C,W,ne){let U=C.rows,K=C.columns;if(U===W&&K===ne)return C;{let oe=ie.zeros(W,ne);return oe=oe.setSubMatrix(C,0,0),oe}}let T=Math.max(u,v),k=Math.max(d,q);h=O(h,T,k),g=O(g,T,k);function B(C,W,ne,U){if(ne<=512||U<=512)return C.mmul(W);ne%2===1&&U%2===1?(C=O(C,ne+1,U+1),W=O(W,ne+1,U+1)):ne%2===1?(C=O(C,ne+1,U),W=O(W,ne+1,U)):U%2===1&&(C=O(C,ne,U+1),W=O(W,ne,U+1));let K=parseInt(C.rows/2,10),oe=parseInt(C.columns/2,10),L=C.subMatrix(0,K-1,0,oe-1),re=W.subMatrix(0,K-1,0,oe-1),fe=C.subMatrix(0,K-1,oe,C.columns-1),ve=W.subMatrix(0,K-1,oe,W.columns-1),ye=C.subMatrix(K,C.rows-1,0,oe-1),je=W.subMatrix(K,W.rows-1,0,oe-1),de=C.subMatrix(K,C.rows-1,oe,C.columns-1),ge=W.subMatrix(K,W.rows-1,oe,W.columns-1),Ae=B(ie.add(L,de),ie.add(re,ge),K,oe),F=B(ie.add(ye,de),re,K,oe),Q=B(L,ie.sub(ve,ge),K,oe),ae=B(de,ie.sub(je,re),K,oe),H=B(ie.add(L,fe),ge,K,oe),Ce=B(ie.sub(ye,L),ie.add(re,ve),K,oe),qe=B(ie.sub(fe,de),ie.add(je,ge),K,oe),Ie=ie.add(Ae,ae);Ie.sub(H),Ie.add(qe);let Pe=ie.add(Q,H),Xe=ie.add(F,ae),dt=ie.sub(Ae,F);dt.add(Q),dt.add(Ce);let Ge=ie.zeros(2*Ie.rows,2*Ie.columns);return Ge=Ge.setSubMatrix(Ie,0,0),Ge=Ge.setSubMatrix(Pe,Ie.rows,0),Ge=Ge.setSubMatrix(Xe,0,Ie.columns),Ge=Ge.setSubMatrix(dt,Ie.rows,Ie.columns),Ge.subMatrix(0,ne-1,0,U-1)}return B(h,g,T,k)}scaleRows(g={}){if(typeof g!="object")throw new TypeError("options must be an object");const{min:h=0,max:u=1}=g;if(!Number.isFinite(h))throw new TypeError("min must be a number");if(!Number.isFinite(u))throw new TypeError("max must be a number");if(h>=u)throw new RangeError("min must be smaller than max");let d=new P(this.rows,this.columns);for(let v=0;v0&&r(q,{min:h,max:u,output:q}),d.setRow(v,q)}return d}scaleColumns(g={}){if(typeof g!="object")throw new TypeError("options must be an object");const{min:h=0,max:u=1}=g;if(!Number.isFinite(h))throw new TypeError("min must be a number");if(!Number.isFinite(u))throw new TypeError("max must be a number");if(h>=u)throw new RangeError("min must be smaller than max");let d=new P(this.rows,this.columns);for(let v=0;vu||h<0||h>=this.columns||u<0||u>=this.columns)throw new RangeError("Argument out of range");let d=new P(g.length,u-h+1);for(let v=0;v=this.rows)throw new RangeError(`Row index out of range: ${g[v]}`);d.set(v,q-h,this.get(g[v],q))}return d}subMatrixColumn(g,h,u){if(h===void 0&&(h=0),u===void 0&&(u=this.rows-1),h>u||h<0||h>=this.rows||u<0||u>=this.rows)throw new RangeError("Argument out of range");let d=new P(u-h+1,g.length);for(let v=0;v=this.columns)throw new RangeError(`Column index out of range: ${g[v]}`);d.set(q-h,v,this.get(q,g[v]))}return d}setSubMatrix(g,h,u){if(g=P.checkMatrix(g),g.isEmpty())return this;let d=h+g.rows-1,v=u+g.columns-1;b(this,h,d,u,v);for(let q=0;qtypeof g=="number")}ie.random=ie.rand,ie.randomInt=ie.randInt,ie.diagonal=ie.diag,ie.prototype.diagonal=ie.prototype.diag,ie.identity=ie.eye,ie.prototype.negate=ie.prototype.neg,ie.prototype.tensorProduct=ie.prototype.kroneckerProduct;const fn=class fn extends ie{constructor(h,u){super();Tc(this,_r);Te(this,"data");if(fn.isMatrix(h))kc(this,_r,jc).call(this,h.rows,h.columns),fn.copy(h,this);else if(Number.isInteger(h)&&h>=0)kc(this,_r,jc).call(this,h,u);else if(e.isAnyArray(h)){const d=h;if(h=d.length,u=h?d[0].length:0,typeof u!="number")throw new TypeError("Data must be a 2D array with at least one element");this.data=[];for(let v=0;v=0)for(let d=0;d=0)hn(this,He,new P(h,h));else if(hn(this,He,new P(h)),!this.isSymmetric())throw new TypeError("not symmetric data")}get size(){return gt(this,He).size}get rows(){return gt(this,He).rows}get columns(){return gt(this,He).columns}get diagonalSize(){return this.rows}static isSymmetricMatrix(h){return P.isMatrix(h)&&h.klassType==="SymmetricMatrix"}static zeros(h){return new this(h)}static ones(h){return new this(h).fill(1)}clone(){const h=new ln(this.diagonalSize);for(const[u,d,v]of this.upperRightEntries())h.set(u,d,v);return h}toMatrix(){return new P(this)}get(h,u){return gt(this,He).get(h,u)}set(h,u,d){return gt(this,He).set(h,u,d),gt(this,He).set(u,h,d),this}removeCross(h){return gt(this,He).removeRow(h),gt(this,He).removeColumn(h),this}addCross(h,u){u===void 0&&(u=h,h=this.diagonalSize);const d=u.slice();return d.splice(h,1),gt(this,He).addRow(h,d),gt(this,He).addColumn(h,u),this}applyMask(h){if(h.length!==this.diagonalSize)throw new RangeError("Mask size do not match with matrix size");const u=[];for(const[d,v]of h.entries())v||u.push(d);u.reverse();for(const d of u)this.removeCross(d);return this}toCompact(){const{diagonalSize:h}=this,u=new Array(h*(h+1)/2);for(let d=0,v=0,q=0;q=h&&(d=++v);return u}static fromCompact(h){const u=h.length,d=(Math.sqrt(8*u+1)-1)/2;if(!Number.isInteger(d))throw new TypeError(`This array is not a compact representation of a Symmetric Matrix, ${JSON.stringify(h)}`);const v=new ln(d);for(let q=0,O=0,T=0;T=d&&(q=++O);return v}*upperRightEntries(){for(let h=0,u=0;h=this.diagonalSize&&(u=++h)}}*upperRightValues(){for(let h=0,u=0;h=this.diagonalSize&&(u=++h)}};He=new WeakMap;let X=ln;X.prototype.klassType="SymmetricMatrix";class te extends X{static isDistanceMatrix(g){return X.isSymmetricMatrix(g)&&g.klassSubType==="DistanceMatrix"}constructor(g){if(super(g),!this.isDistance())throw new TypeError("Provided arguments do no produce a distance matrix")}set(g,h,u){return g===h&&(u=0),super.set(g,h,u)}addCross(g,h){return h===void 0&&(h=g,g=this.diagonalSize),h=h.slice(),h[g]=0,super.addCross(g,h)}toSymmetricMatrix(){return new X(this)}clone(){const g=new te(this.diagonalSize);for(const[h,u,d]of this.upperRightEntries())h!==u&&g.set(h,u,d);return g}toCompact(){const{diagonalSize:g}=this,h=(g-1)*g/2,u=new Array(h);for(let d=1,v=0,q=0;q=g&&(d=++v+1);return u}static fromCompact(g){const h=g.length;if(h===0)return new this(0);const u=(Math.sqrt(8*h+1)+1)/2;if(!Number.isInteger(u))throw new TypeError(`This array is not a compact representation of a DistanceMatrix, ${JSON.stringify(g)}`);const d=new this(u);for(let v=1,q=0,O=0;O=u&&(v=++q+1);return d}}te.prototype.klassSubType="DistanceMatrix";class le extends ie{constructor(g,h,u){super(),this.matrix=g,this.rows=h,this.columns=u}}class xe extends le{constructor(g,h){p(g,h),super(g,g.rows,1),this.column=h}set(g,h,u){return this.matrix.set(g,this.column,u),this}get(g){return this.matrix.get(g,this.column)}}class De extends le{constructor(g,h){_(g,h),super(g,g.rows,h.length),this.columnIndices=h}set(g,h,u){return this.matrix.set(g,this.columnIndices[h],u),this}get(g,h){return this.matrix.get(g,this.columnIndices[h])}}class Je extends le{constructor(g){super(g,g.rows,g.columns)}set(g,h,u){return this.matrix.set(g,this.columns-h-1,u),this}get(g,h){return this.matrix.get(g,this.columns-h-1)}}class rr extends le{constructor(g){super(g,g.rows,g.columns)}set(g,h,u){return this.matrix.set(this.rows-g-1,h,u),this}get(g,h){return this.matrix.get(this.rows-g-1,h)}}class Qe extends le{constructor(g,h){l(g,h),super(g,1,g.columns),this.row=h}set(g,h,u){return this.matrix.set(this.row,h,u),this}get(g,h){return this.matrix.get(this.row,h)}}class Ve extends le{constructor(g,h){x(g,h),super(g,h.length,g.columns),this.rowIndices=h}set(g,h,u){return this.matrix.set(this.rowIndices[g],h,u),this}get(g,h){return this.matrix.get(this.rowIndices[g],h)}}class Ee extends le{constructor(g,h,u){x(g,h),_(g,u),super(g,h.length,u.length),this.rowIndices=h,this.columnIndices=u}set(g,h,u){return this.matrix.set(this.rowIndices[g],this.columnIndices[h],u),this}get(g,h){return this.matrix.get(this.rowIndices[g],this.columnIndices[h])}}class Mt extends le{constructor(g,h,u,d,v){b(g,h,u,d,v),super(g,u-h+1,v-d+1),this.startRow=h,this.startColumn=d}set(g,h,u){return this.matrix.set(this.startRow+g,this.startColumn+h,u),this}get(g,h){return this.matrix.get(this.startRow+g,this.startColumn+h)}}class Me extends le{constructor(g){super(g,g.columns,g.rows)}set(g,h,u){return this.matrix.set(h,g,u),this}get(g,h){return this.matrix.get(h,g)}}class St extends ie{constructor(g,h={}){const{rows:u=1}=h;if(g.length%u!==0)throw new Error("the data length is not divisible by the number of rows");super(),this.rows=u,this.columns=g.length/u,this.data=g}set(g,h,u){let d=this._calculateIndex(g,h);return this.data[d]=u,this}get(g,h){let u=this._calculateIndex(g,h);return this.data[u]}_calculateIndex(g,h){return g*this.columns+h}}class Fe extends ie{constructor(g){super(),this.data=g,this.rows=g.length,this.columns=g[0].length}set(g,h,u){return this.data[g][h]=u,this}get(g,h){return this.data[g][h]}}function qc(M,g){if(e.isAnyArray(M))return M[0]&&e.isAnyArray(M[0])?new Fe(M):new St(M,g);throw new Error("the argument is not an array")}class qt{constructor(g){g=Fe.checkMatrix(g);let h=g.clone(),u=h.rows,d=h.columns,v=new Float64Array(u),q=1,O,T,k,B,C,W,ne,U,K;for(O=0;OMath.abs(U[B])&&(B=O);if(B!==T){for(k=0;k=0;k--){for(T=0;Tq?d.set(v,q,g.get(v,q)):v===q?d.set(v,q,1):d.set(v,q,0);return d}get upperTriangularMatrix(){let g=this.LU,h=g.rows,u=g.columns,d=new P(h,u);for(let v=0;vMath.abs(g)?(h=g/M,Math.abs(M)*Math.sqrt(1+h*h)):g!==0?(h=M/g,Math.abs(g)*Math.sqrt(1+h*h)):0}class Ye{constructor(g){g=Fe.checkMatrix(g);let h=g.clone(),u=g.rows,d=g.columns,v=new Float64Array(d),q,O,T,k;for(T=0;T=0;k--){for(T=0;T=0;O--){for(v=0;v=0;F--)if(U[F]!==0){for(let Q=F+1;Q=0;F--){if(F0;){let F,Q;for(F=de-2;F>=-1&&F!==-1;F--){const ae=Number.MIN_VALUE+Ae*Math.abs(U[F]+Math.abs(U[F+1]));if(Math.abs(L[F])<=ae||Number.isNaN(L[F])){L[F]=0;break}}if(F===de-2)Q=4;else{let ae;for(ae=de-1;ae>=F&&ae!==F;ae--){let H=(ae!==de?Math.abs(L[ae]):0)+(ae!==F+1?Math.abs(L[ae-1]):0);if(Math.abs(U[ae])<=Ae*H){U[ae]=0;break}}ae===F?Q=3:ae===de-1?Q=1:(Q=2,F=ae)}switch(F++,Q){case 1:{let ae=L[de-2];L[de-2]=0;for(let H=de-2;H>=F;H--){let Ce=We(U[H],ae),qe=U[H]/Ce,Ie=ae/Ce;if(U[H]=Ce,H!==F&&(ae=-Ie*L[H-1],L[H-1]=qe*L[H-1]),k)for(let Pe=0;Pe=U[F+1]);){let ae=U[F];if(U[F]=U[F+1],U[F+1]=ae,k&&Fh&&v.set(B,C,g.get(B,C)/this.s[C]);let q=this.U,O=q.rows,T=q.columns,k=new P(u,O);for(let B=0;Bg&&h++;return h}get diagonal(){return Array.from(this.s)}get threshold(){return Number.EPSILON/2*Math.max(this.m,this.n)*this.s[0]}get leftSingularVectors(){return this.U}get rightSingularVectors(){return this.V}get diagonalMatrix(){return P.diag(this.s)}}function nr(M,g=!1){return M=Fe.checkMatrix(M),g?new ht(M).inverse():sn(M,P.eye(M.rows))}function sn(M,g,h=!1){return M=Fe.checkMatrix(M),g=Fe.checkMatrix(g),h?new ht(M).solve(g):M.isSquare()?new qt(M).solve(g):new Ye(M).solve(g)}function Gt(M){if(M=P.checkMatrix(M),M.isSquare()){if(M.columns===0)return 1;let g,h,u,d;if(M.columns===2)return g=M.get(0,0),h=M.get(0,1),u=M.get(1,0),d=M.get(1,1),g*d-h*u;if(M.columns===3){let v,q,O;return v=new Ee(M,[1,2],[1,2]),q=new Ee(M,[1,2],[0,2]),O=new Ee(M,[1,2],[0,1]),g=M.get(0,0),h=M.get(0,1),u=M.get(0,2),g*Gt(v)-h*Gt(q)+u*Gt(O)}else return new qt(M).determinant}else throw Error("determinant can only be calculated for a square matrix")}function jt(M,g){let h=[];for(let u=0;ud)return new Array(g.rows+1).fill(0);{let v=g.addRow(h,[0]);for(let q=0;qg?v[q]=1/v[q]:v[q]=0;return d.mmul(P.diag(v).mmul(u.transpose()))}function un(M,g=M,h={}){M=new P(M);let u=!1;if(typeof g=="object"&&!P.isMatrix(g)&&!e.isAnyArray(g)?(h=g,g=M,u=!0):g=new P(g),M.rows!==g.rows)throw new TypeError("Both matrices must have the same number of rows");const{center:d=!0}=h;d&&(M=M.center("column"),u||(g=g.center("column")));const v=M.transpose().mmul(g);for(let q=0;q0?d.set(v,v+1,h[v]):h[v]<0&&d.set(v,v-1,h[v])}return d}}function Vx(M,g,h,u){let d,v,q,O,T,k,B,C;for(T=0;T0;O--){for(C=0,q=0,k=0;k0&&(v=-v),g[O]=C*v,q=q-d*v,h[O-1]=d-v,T=0;Tk)do{for(d=h[k],C=(h[k+1]-d)/(2*g[k]),W=We(C,1),C<0&&(W=-W),h[k]=g[k]/(C+W),h[k+1]=g[k]*(C+W),ne=h[k+1],v=d-h[k],q=k+2;q=k;q--)for(oe=K,K=U,fe=re,d=U*g[q],v=U*C,W=We(C,g[q]),g[q+1]=re*W,re=g[q]/W,U=C/W,C=U*h[q]-re*d,h[q+1]=v+re*(U*d+re*h[q]),T=0;Tje*ye);h[k]=h[k]+ve,g[k]=0}for(q=0;q=C;k--)h[k]=g.get(k,C-1)/W,T+=h[k]*h[k];for(O=Math.sqrt(T),h[C]>0&&(O=-O),T=T-h[C]*O,h[C]=h[C]-O,B=C;B=C;k--)q+=h[k]*g.get(k,B);for(q=q/T,k=C;k<=v;k++)g.set(k,B,g.get(k,B)-q*h[k])}for(k=0;k<=v;k++){for(q=0,B=v;B>=C;B--)q+=h[B]*g.get(k,B);for(q=q/T,B=C;B<=v;B++)g.set(k,B,g.get(k,B)-q*h[B])}h[C]=W*h[C],g.set(C,C-1,W*O)}}for(k=0;k=d+1;C--)if(g.get(C,C-1)!==0){for(k=C+1;k<=v;k++)h[k]=g.get(k,C-1);for(B=C;B<=v;B++){for(O=0,k=C;k<=v;k++)O+=h[k]*u.get(k,B);for(O=O/h[C]/g.get(C,C-1),k=C;k<=v;k++)u.set(k,B,u.get(k,B)+O*h[k])}}}function Kx(M,g,h,u,d){let v=M-1,q=0,O=M-1,T=Number.EPSILON,k=0,B=0,C=0,W=0,ne=0,U=0,K=0,oe=0,L,re,fe,ve,ye,je,de,ge,Ae,F,Q,ae,H,Ce,qe;for(L=0;LO)&&(h[L]=d.get(L,L),g[L]=0),re=Math.max(L-1,0);re=q;){for(ve=v;ve>q&&(U=Math.abs(d.get(ve-1,ve-1))+Math.abs(d.get(ve,ve)),U===0&&(U=B),!(Math.abs(d.get(ve,ve-1))=0){for(K=C>=0?C+K:C-K,h[v-1]=ge+K,h[v]=h[v-1],K!==0&&(h[v]=ge-de/K),g[v-1]=0,g[v]=0,ge=d.get(v,v-1),U=Math.abs(ge)+Math.abs(K),C=ge/U,W=K/U,ne=Math.sqrt(C*C+W*W),C=C/ne,W=W/ne,re=v-1;re0)){for(U=Math.sqrt(U),Ae=ve&&(K=d.get(ye,ye),ne=ge-K,U=Ae-K,C=(ne*U-de)/d.get(ye+1,ye)+d.get(ye,ye+1),W=d.get(ye+1,ye+1)-K-ne-U,ne=d.get(ye+2,ye+1),U=Math.abs(C)+Math.abs(W)+Math.abs(ne),C=C/U,W=W/U,ne=ne/U,!(ye===ve||Math.abs(d.get(ye,ye-1))*(Math.abs(W)+Math.abs(ne))ye+2&&d.set(L,L-3,0);for(fe=ye;fe<=v-1&&(Ce=fe!==v-1,fe!==ye&&(C=d.get(fe,fe-1),W=d.get(fe+1,fe-1),ne=Ce?d.get(fe+2,fe-1):0,ge=Math.abs(C)+Math.abs(W)+Math.abs(ne),ge!==0&&(C=C/ge,W=W/ge,ne=ne/ge)),ge!==0);fe++)if(U=Math.sqrt(C*C+W*W+ne*ne),C<0&&(U=-U),U!==0){for(fe!==ye?d.set(fe,fe-1,-U*ge):ve!==ye&&d.set(fe,fe-1,-d.get(fe,fe-1)),C=C+U,ge=C/U,Ae=W/U,K=ne/U,W=W/C,ne=ne/C,re=fe;re=0;v--)if(C=h[v],W=g[v],W===0)for(ve=v,d.set(v,v,1),L=v-1;L>=0;L--){for(de=d.get(L,L)-C,ne=0,re=ve;re<=v;re++)ne=ne+d.get(L,re)*d.get(re,v);if(g[L]<0)K=de,U=ne;else if(ve=L,g[L]===0?d.set(L,v,de!==0?-ne/de:-ne/(T*B)):(ge=d.get(L,L+1),Ae=d.get(L+1,L),W=(h[L]-C)*(h[L]-C)+g[L]*g[L],je=(ge*U-K*ne)/W,d.set(L,v,je),d.set(L+1,v,Math.abs(ge)>Math.abs(K)?(-ne-de*je)/ge:(-U-Ae*je)/K)),je=Math.abs(d.get(L,v)),T*je*je>1)for(re=L;re<=v;re++)d.set(re,v,d.get(re,v)/je)}else if(W<0)for(ve=v-1,Math.abs(d.get(v,v-1))>Math.abs(d.get(v-1,v))?(d.set(v-1,v-1,W/d.get(v,v-1)),d.set(v-1,v,-(d.get(v,v)-C)/d.get(v,v-1))):(qe=cn(0,-d.get(v-1,v),d.get(v-1,v-1)-C,W),d.set(v-1,v-1,qe[0]),d.set(v-1,v,qe[1])),d.set(v,v-1,0),d.set(v,v,1),L=v-2;L>=0;L--){for(F=0,Q=0,re=ve;re<=v;re++)F=F+d.get(L,re)*d.get(re,v-1),Q=Q+d.get(L,re)*d.get(re,v);if(de=d.get(L,L)-C,g[L]<0)K=de,ne=F,U=Q;else if(ve=L,g[L]===0?(qe=cn(-F,-Q,de,W),d.set(L,v-1,qe[0]),d.set(L,v,qe[1])):(ge=d.get(L,L+1),Ae=d.get(L+1,L),ae=(h[L]-C)*(h[L]-C)+g[L]*g[L]-W*W,H=(h[L]-C)*2*W,ae===0&&H===0&&(ae=T*B*(Math.abs(de)+Math.abs(W)+Math.abs(ge)+Math.abs(Ae)+Math.abs(K))),qe=cn(ge*ne-K*F+W*Q,ge*U-K*Q-W*F,ae,H),d.set(L,v-1,qe[0]),d.set(L,v,qe[1]),Math.abs(ge)>Math.abs(K)+Math.abs(W)?(d.set(L+1,v-1,(-F-de*d.get(L,v-1)+W*d.get(L,v))/ge),d.set(L+1,v,(-Q-de*d.get(L,v)-W*d.get(L,v-1))/ge)):(qe=cn(-ne-Ae*d.get(L,v-1),-U-Ae*d.get(L,v),K,W),d.set(L+1,v-1,qe[0]),d.set(L+1,v,qe[1]))),je=Math.max(Math.abs(d.get(L,v-1)),Math.abs(d.get(L,v))),T*je*je>1)for(re=L;re<=v;re++)d.set(re,v-1,d.get(re,v-1)/je),d.set(re,v,d.get(re,v)/je)}for(L=0;LO)for(re=L;re=q;re--)for(L=q;L<=O;L++){for(K=0,fe=q;fe<=Math.min(re,O);fe++)K=K+u.get(L,fe)*d.get(fe,re);u.set(L,re,K)}}}function cn(M,g,h,u){let d,v;return Math.abs(h)>Math.abs(u)?(d=u/h,v=h+d*u,[(M+d*g)/v,(g-d*M)/v]):(d=h/u,v=u+d*h,[(d*M+g)/v,(d*g-M)/v])}class M0{constructor(g){if(g=Fe.checkMatrix(g),!g.isSymmetric())throw new Error("Matrix is not symmetric");let h=g,u=h.rows,d=new P(u,u),v=!0,q,O,T;for(O=0;O0),d.set(O,O,Math.sqrt(Math.max(k,0))),T=O+1;T=0;T--)for(O=0;Oq;ne++)C=g.transpose().mmul(O).div(O.transpose().mmul(O).get(0,0)),C=C.div(C.norm()),k=g.mmul(C).div(C.transpose().mmul(C).get(0,0)),ne>0&&(T=k.clone().sub(W).pow(2).sum()),W=k.clone(),u?(B=u.transpose().mmul(k).div(k.transpose().mmul(k).get(0,0)),B=B.div(B.norm()),O=u.mmul(B).div(B.transpose().mmul(B).get(0,0))):O=k;if(u){let ne=g.transpose().mmul(k).div(k.transpose().mmul(k).get(0,0));ne=ne.div(ne.norm());let U=g.clone().sub(k.clone().mmul(ne.transpose())),K=O.transpose().mmul(k).div(k.transpose().mmul(k).get(0,0)),oe=u.clone().sub(k.clone().mulS(K.get(0,0)).mmul(B.transpose()));this.t=k,this.p=ne.transpose(),this.w=C.transpose(),this.q=B,this.u=O,this.s=k.transpose().mmul(k),this.xResidual=U,this.yResidual=oe,this.betas=K}else this.w=C.transpose(),this.s=k.transpose().mmul(k).sqrt(),d?this.t=k.clone().div(this.s.get(0,0)):this.t=k,this.xResidual=g.sub(k.mmul(C.transpose()))}}return we.AbstractMatrix=ie,we.CHO=M0,we.CholeskyDecomposition=M0,we.DistanceMatrix=te,we.EVD=mt,we.EigenvalueDecomposition=mt,we.LU=qt,we.LuDecomposition=qt,we.Matrix=P,we.MatrixColumnSelectionView=De,we.MatrixColumnView=xe,we.MatrixFlipColumnView=Je,we.MatrixFlipRowView=rr,we.MatrixRowSelectionView=Ve,we.MatrixRowView=Qe,we.MatrixSelectionView=Ee,we.MatrixSubView=Mt,we.MatrixTransposeView=Me,we.NIPALS=S0,we.Nipals=S0,we.QR=Ye,we.QrDecomposition=Ye,we.SVD=ht,we.SingularValueDecomposition=ht,we.SymmetricMatrix=X,we.WrapperMatrix1D=St,we.WrapperMatrix2D=Fe,we.correlation=vt,we.covariance=un,we.default=P,we.determinant=Gt,we.inverse=nr,we.linearDependencies=an,we.pseudoInverse=Rc,we.solve=sn,we.wrap=qc,we}var Tr=Kw(),Pf=kf(Tr);const It=Tr.Matrix,Lf=Tr.SingularValueDecomposition;Pf.Matrix?Pf.Matrix:Tr.Matrix;const Xw={center:[0,0],linkDistance:50};class Df{constructor(r={}){this.options=r,this.id="mds",this.options=Object.assign(Object.assign({},Xw),r)}execute(r,t){return se(this,void 0,void 0,function*(){return this.genericMDSLayout(!1,r,t)})}assign(r,t){return se(this,void 0,void 0,function*(){yield this.genericMDSLayout(!0,r,t)})}genericMDSLayout(r,t,n){return se(this,void 0,void 0,function*(){const i=Object.assign(Object.assign({},this.options),n),{center:s=[0,0],linkDistance:a=50}=i,o=t.getAllNodes(),c=t.getAllEdges();if(!(o!=null&&o.length)||o.length===1)return Lt(t,r,s);const f=xf({nodes:o,edges:c}),l=Ef(f);Zw(l);const p=Fy(l,a),m=Jw(p),y=[];return m.forEach((_,b)=>{const w=it(o[b]);w.data.x=_[0]+s[0],w.data.y=_[1]+s[1],y.push(w)}),r&&y.forEach(_=>t.mergeNodeData(_.id,{x:_.data.x,y:_.data.y})),{nodes:y,edges:c}})}}const Zw=e=>{let r=-999999;e.forEach(t=>{t.forEach(n=>{n!==1/0&&r{t.forEach((i,s)=>{i===1/0&&(e[n][s]=r)})})},Jw=e=>{const t=It.mul(It.pow(e,2),-.5),n=t.mean("row"),i=t.mean("column"),s=t.mean();t.add(s).subRowVector(n).subColumnVector(i);const a=new Lf(t),o=It.sqrt(a.diagonalMatrix).diagonal();return a.leftSingularVectors.toJSON().map(c=>It.mul([c],[o]).toJSON()[0].splice(0,2))};function zf(e){return!!e.tick&&!!e.stop}const Qw={gForce:!0,force2:!0,d3force:!0,fruchterman:!0,forceAtlas2:!0,force:!0,"graphin-force":!0},Hw={center:[0,0],comboPadding:10,treeKey:"combo"};class e1{constructor(r={}){this.options=r,this.id="comboCombined",this.options=Object.assign(Object.assign({},Hw),r)}execute(r,t){return se(this,void 0,void 0,function*(){return this.genericComboCombinedLayout(!1,r,t)})}assign(r,t){return se(this,void 0,void 0,function*(){yield this.genericComboCombinedLayout(!0,r,t)})}genericComboCombinedLayout(r,t,n){return se(this,void 0,void 0,function*(){const i=this.initVals(Object.assign(Object.assign({},this.options),n)),{center:s,treeKey:a,outerLayout:o}=i,c=t.getAllNodes().filter(I=>!I.data._isCombo),f=t.getAllNodes().filter(I=>I.data._isCombo),l=t.getAllEdges(),p=c==null?void 0:c.length;if(!p||p===1)return Lt(t,r,s);const m=[],y=new Map;c.forEach(I=>{y.set(I.id,I)});const x=new Map;f.forEach(I=>{x.set(I.id,I)});const _=new Map,b=this.getInnerGraphs(t,a,y,x,l,i,_);yield Promise.all(b);const w=new Map,E=[],N=new Map;let S=!0;t.getRoots(a).forEach(I=>{const D=_.get(I.id),z=x.get(I.id)||y.get(I.id),$={id:I.id,data:Object.assign(Object.assign({},I.data),{x:D.data.x||z.data.x,y:D.data.y||z.data.y,fx:D.data.fx||z.data.fx,fy:D.data.fy||z.data.fy,mass:D.data.mass||z.data.mass,size:D.data.size})};E.push($),w.set(I.id,!0),!isNaN($.data.x)&&$.data.x!==0&&!isNaN($.data.y)&&$.data.y!==0?S=!1:($.data.x=Math.random()*100,$.data.y=Math.random()*100),Sn(t,[I],V=>{V.id!==I.id&&N.set(V.id,I.id)},"TB",a)});const R=[];l.forEach(I=>{const D=N.get(I.source)||I.source,z=N.get(I.target)||I.target;D!==z&&w.has(D)&&w.has(z)&&R.push({id:I.id,source:D,target:z,data:{}})});let A;if(E!=null&&E.length){if(E.length===1)E[0].data.x=s[0],E[0].data.y=s[1];else{const I=new Be({nodes:E,edges:R}),D=o||new Af;S&&Qw[D.id]&&(yield(E.length<100?new Df:new An).assign(I));const z=Object.assign({center:s,kg:5,preventOverlap:!0,animate:!1},D.id==="force"?{gravity:1,factor:4,linkDistance:($,V,Y)=>{const ee=Math.max(...V.data.size)||32,J=Math.max(...Y.data.size)||32;return ee/2+J/2+200}}:{});A=yield Ff(D,I,z)}_.forEach(I=>{var D;const z=A.nodes.find(Y=>Y.id===I.id);if(z){const{x:Y,y:ee}=z.data;I.data.visited=!0,I.data.x=Y,I.data.y=ee,m.push({id:I.id,data:{x:Y,y:ee}})}const{x:$,y:V}=I.data;(D=I.data.nodes)===null||D===void 0||D.forEach(Y=>{m.push({id:Y.id,data:{x:Y.data.x+$,y:Y.data.y+V}})})}),_.forEach(({data:I})=>{const{x:D,y:z,visited:$,nodes:V}=I;V==null||V.forEach(Y=>{if(!$){const ee=m.find(J=>J.id===Y.id);ee.data.x+=D||0,ee.data.y+=z||0}})})}return r&&m.forEach(I=>{t.mergeNodeData(I.id,{x:I.data.x,y:I.data.y})}),{nodes:m,edges:l}})}initVals(r){const t=Object.assign({},r),{nodeSize:n,spacing:i,comboPadding:s}=r;let a,o;if(me(i)?o=()=>i:wt(i)?o=i:o=()=>0,t.spacing=o,!n)a=f=>{const l=o(f);return f.size?bt(f.size)?((f.size[0]>f.size[1]?f.size[0]:f.size[1])+l)/2:Vt(f.size)?((f.size.width>f.size.height?f.size.width:f.size.height)+l)/2:(f.size+l)/2:32+l/2};else if(wt(n))a=f=>{const l=n(f),p=o(f);return bt(f.size)?((f.size[0]>f.size[1]?f.size[0]:f.size[1])+p)/2:((l||32)+p)/2};else if(bt(n)){const l=(n[0]>n[1]?n[0]:n[1])/2;a=p=>l+o(p)/2}else{const f=n/2;a=l=>f+o(l)/2}t.nodeSize=a;let c;return me(s)?c=()=>s:bt(s)?c=()=>Math.max.apply(null,s):wt(s)?c=s:c=()=>0,t.comboPadding=c,t}getInnerGraphs(r,t,n,i,s,a,o){const{nodeSize:c,comboPadding:f,spacing:l,innerLayout:p}=a,m=p||new An({}),y={center:[0,0],preventOverlap:!0,nodeSpacing:l},x=[],_=b=>{let w=(f==null?void 0:f(b))||10;return bt(w)&&(w=Math.max(...w)),{size:w?[w*2,w*2]:[30,30],padding:w}};return r.getRoots(t).forEach(b=>{o.set(b.id,{id:b.id,data:{nodes:[],size:_(b).size}});let w=Promise.resolve();Sn(r,[b],E=>{var N;if(!E.data._isCombo)return;const{size:S,padding:R}=_(E);if(!(!((N=r.getChildren(E.id,t))===null||N===void 0)&&N.length))o.set(E.id,{id:E.id,data:Object.assign(Object.assign({},E.data),{size:S})});else{const A=o.get(E.id);o.set(E.id,{id:E.id,data:Object.assign({nodes:[]},A==null?void 0:A.data)});const j=new Map,I=r.getChildren(E.id,t).map($=>{if($.data._isCombo)return o.has($.id)||o.set($.id,{id:$.id,data:Object.assign({},$.data)}),j.set($.id,!0),o.get($.id);const V=n.get($.id)||i.get($.id);return j.set($.id,!0),{id:$.id,data:Object.assign(Object.assign({},V.data),$.data)}}),D={nodes:I,edges:s.filter($=>j.has($.source)&&j.has($.target))};let z=1/0;I.forEach($=>{var V;let{size:Y}=$.data;Y||(Y=((V=o.get($.id))===null||V===void 0?void 0:V.data.size)||(c==null?void 0:c($))||[30,30]),me(Y)&&(Y=[Y,Y]);const[ee,J]=Y;z>ee&&(z=ee),z>J&&(z=J),$.data.size=Y}),w=w.then(()=>se(this,void 0,void 0,function*(){const $=new Be(D);yield Ff(m,$,y,!0);const{minX:V,minY:Y,maxX:ee,maxY:J}=By(I),ue={x:(ee+V)/2,y:(J+Y)/2};D.nodes.forEach(Z=>{Z.data.x-=ue.x,Z.data.y-=ue.y});const be=[Math.max(ee-V,z)+R*2,Math.max(J-Y,z)+R*2];o.get(E.id).data.size=be,o.get(E.id).data.nodes=I}))}return!0},"BT",t),x.push(w)}),x}}function Ff(e,r,t,n){var i;return se(this,void 0,void 0,function*(){return zf(e)?(e.execute(r,t),e.stop(),e.tick((i=t.iterations)!==null&&i!==void 0?i:300)):n?yield e.assign(r,t):yield e.execute(r,t)})}function t1(e,r){var t,n=1;e==null&&(e=0),r==null&&(r=0);function i(){var s,a=t.length,o,c=0,f=0;for(s=0;sm.index){var $=y-I.x-I.vx,V=x-I.y-I.vy,Y=$*$+V*V;Yy+z||Ax+z||jf.r&&(f.r=f[l].r)}function c(){if(r){var f,l=r.length,p;for(t=new Array(l),f=0;f[r(R,A,a),R])),S;for(b=0,o=new Array(w);b{}};function Cn(){for(var e=0,r=arguments.length,t={},n;e=0&&(n=t.slice(i+1),t=t.slice(0,i)),t&&!r.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}})}kr.prototype=Cn.prototype={constructor:kr,on:function(e,r){var t=this._,n=u1(e+"",t),i,s=-1,a=n.length;if(arguments.length<2){for(;++s0)for(var t=new Array(i),n=0,i,s;n=0&&e._call.call(void 0,r),e=e._next;--Kt}function Wf(){Dt=(Cr=hr.now())+Pr,Kt=cr=0;try{l1()}finally{Kt=0,d1(),Dt=0}}function h1(){var e=hr.now(),r=e-Cr;r>Gf&&(Pr-=r,Cr=e)}function d1(){for(var e,r=jr,t,n=1/0;r;)r._call?(n>r._time&&(n=r._time),e=r,r=r._next):(t=r._next,r._next=null,r=e?e._next=t:jr=t);lr=e,Dn(n)}function Dn(e){if(!Kt){cr&&(cr=clearTimeout(cr));var r=e-Dt;r>24?(e<1/0&&(cr=setTimeout(Wf,e-hr.now()-Pr)),fr&&(fr=clearInterval(fr))):(fr||(Cr=hr.now(),fr=setInterval(h1,Gf)),Kt=1,Uf(Wf))}}const g1=1664525,p1=1013904223,Yf=4294967296;function v1(){let e=1;return()=>(e=(g1*e+p1)%Yf)/Yf}function m1(e){return e.x}function y1(e){return e.y}var w1=10,b1=Math.PI*(3-Math.sqrt(5));function _1(e){var r,t=1,n=.001,i=1-Math.pow(n,1/300),s=0,a=.6,o=new Map,c=Ln(p),f=Cn("tick","end"),l=v1();e==null&&(e=[]);function p(){m(),f.call("tick",r),t1?(b==null?o.delete(_):o.set(_,x(b)),r):o.get(_)},find:function(_,b,w){var E=0,N=e.length,S,R,A,j,I;for(w==null?w=1/0:w*=w,E=0;E1?(f.on(_,b),r):f.on(_)}}}function E1(){var e,r,t,n,i=$e(-30),s,a=1,o=1/0,c=.81;function f(y){var x,_=e.length,b=Yt(e,m1,y1).visitAfter(p);for(n=y,x=0;x<_;++x)r=e[x],b.visit(m)}function l(){if(e){var y,x=e.length,_;for(s=new Array(x),y=0;y=o)return;(y.data!==r||y.next)&&(w===0&&(w=Tt(t),S+=w*w),E===0&&(E=Tt(t),S+=E*E),St.id},manyBody:{},center:{x:0,y:0}},this.context={options:{},assign:!1,nodes:[],edges:[]},Uc(this.options,r),this.options.forceSimulation&&(this.simulation=this.options.forceSimulation)}execute(r,t){return se(this,void 0,void 0,function*(){return this.genericLayout(!1,r,t)})}assign(r,t){return se(this,void 0,void 0,function*(){yield this.genericLayout(!0,r,t)})}stop(){this.simulation.stop()}tick(r){return this.simulation.tick(r),this.getResult()}restart(){this.simulation.restart()}setFixedPosition(r,t){const n=this.context.nodes.find(i=>i.id===r);n&&t.forEach((i,s)=>{if(typeof i=="number"||i===null){const a=["fx","fy","fz"][s];n[a]=i}})}getOptions(r){var t,n;const i=Uc({},this.options,r);return i.collide&&((t=i.collide)===null||t===void 0?void 0:t.radius)===void 0&&(i.collide=i.collide||{},i.collide.radius=(n=i.nodeSize)!==null&&n!==void 0?n:10),i.iterations===void 0&&(i.link&&i.link.iterations===void 0&&(i.iterations=i.link.iterations),i.collide&&i.collide.iterations===void 0&&(i.iterations=i.collide.iterations)),this.context.options=i,i}genericLayout(r,t,n){var i;return se(this,void 0,void 0,function*(){const s=this.getOptions(n),a=t.getAllNodes().map(({id:l,data:p})=>Object.assign(Object.assign({id:l},p),Vc(p.data,this.config.inputNodeAttrs))),o=t.getAllEdges().map(l=>Object.assign({},l));Object.assign(this.context,{assign:r,nodes:a,edges:o,graph:t});const c=new Promise(l=>{this.resolver=l}),f=this.setSimulation(s);return f.nodes(a),(i=f.force("link"))===null||i===void 0||i.links(o),c})}getResult(){const{assign:r,nodes:t,edges:n,graph:i}=this.context,s=t.map(o=>({id:o.id,data:Object.assign(Object.assign({},o.data),Vc(o,this.config.outputNodeAttrs))})),a=n.map(({id:o,source:c,target:f,data:l})=>({id:o,source:typeof c=="object"?c.id:c,target:typeof f=="object"?f.id:f,data:l}));return r&&s.forEach(o=>i.mergeNodeData(o.id,o.data)),{nodes:s,edges:a}}initSimulation(){return _1()}setSimulation(r){const t=this.simulation||this.options.forceSimulation||this.initSimulation();return this.simulation||(this.simulation=t.on("tick",()=>{var n;return(n=r.onTick)===null||n===void 0?void 0:n.call(r,this.getResult())}).on("end",()=>{var n;return(n=this.resolver)===null||n===void 0?void 0:n.call(this,this.getResult())})),Xf(t,this.config.simulationAttrs.map(n=>[n,r[n]])),Object.entries(this.forceMap).forEach(([n,i])=>{const s=n;if(r[n]){let a=t.force(s);a||(a=i(),t.force(s,a)),Xf(a,Object.entries(r[s]))}else t.force(s,null)}),t}}const Xf=(e,r)=>r.reduce((t,[n,i])=>!t[n]||i===void 0?t:t[n].call(e,i),e);function S1(e,r,t){var n,i=1;e==null&&(e=0),r==null&&(r=0),t==null&&(t=0);function s(){var a,o=n.length,c,f=0,l=0,p=0;for(a=0;a=(c=(a+o)/2))?a=c:o=c,n=i,!(i=i[p=+l]))return n[p]=s,e;if(f=+e._x.call(null,i.data),r===f)return s.next=i,n?n[p]=s:e._root=s,e;do n=n?n[p]=new Array(2):e._root=new Array(2),(l=r>=(c=(a+o)/2))?a=c:o=c;while((p=+l)==(m=+(f>=c)));return n[m]=i,n[p]=s,e}function R1(e){Array.isArray(e)||(e=Array.from(e));const r=e.length,t=new Float64Array(r);let n=1/0,i=-1/0;for(let s=0,a;si&&(i=a));if(n>i)return this;this.cover(n).cover(i);for(let s=0;se||e>=t;)switch(a=+(ea||(s=f.x1)=p))&&(f=o[o.length-1],o[o.length-1]=o[o.length-1-l],o[o.length-1-l]=f)}else{var m=Math.abs(e-+this._x.call(null,c.data));m=(f=(a+o)/2))?a=f:o=f,r=t,!(t=t[p=+l]))return this;if(!t.length)break;r[p+1&1]&&(n=r,m=p)}for(;t.data!==e;)if(i=t,!(t=t.next))return this;return(s=t.next)&&delete t.next,i?(s?i.next=s:delete i.next,this):r?(s?r[p]=s:delete r[p],(t=r[0]||r[1])&&t===(r[1]||r[0])&&!t.length&&(n?n[m]=t:this._root=t),this):(this._root=s,this)}function j1(e){for(var r=0,t=e.length;r1&&(_=y.y+y.vy),t>2&&(b=y.z+y.vz),m.visit(S);function S(R,A,j,I,D,z,$){var V=[A,j,I,D,z,$],Y=V[0],ee=V[1],J=V[2],ue=V[t],be=V[t+1],Z=V[t+2],ce=R.data,pe=R.r,he=w+pe;if(ce){if(ce.index>y.index){var ie=x-ce.x-ce.vx,_e=t>1?_-ce.y-ce.vy:0,G=t>2?b-ce.z-ce.vz:0,P=ie*ie+_e*_e+G*G;P1&&_e===0&&(_e=at(i),P+=_e*_e),t>2&&G===0&&(G=at(i),P+=G*G),P=(he-(P=Math.sqrt(P)))/P*s,y.vx+=(ie*=P)*(he=(pe*=pe)/(E+pe)),t>1&&(y.vy+=(_e*=P)*he),t>2&&(y.vz+=(G*=P)*he),ce.vx-=ie*(he=1-he),t>1&&(ce.vy-=_e*he),t>2&&(ce.vz-=G*he))}return}return Y>x+he||ue1&&(ee>_+he||be<_-he)||t>2&&(J>b+he||Zl.r&&(l.r=l[p].r)}function f(){if(r){var l,p=r.length,m;for(n=new Array(p),l=0;ltypeof m=="function")||Math.random,t=p.find(m=>[1,2,3].includes(m))||2,f()},o.iterations=function(l){return arguments.length?(a=+l,o):a},o.strength=function(l){return arguments.length?(s=+l,o):s},o.radius=function(l){return arguments.length?(e=typeof l=="function"?l:Le(+l),f(),o):e},o}function G1(e){return e.index}function Hf(e,r){var t=e.get(r);if(!t)throw new Error("node not found: "+r);return t}function U1(e){var r=G1,t=m,n,i=Le(30),s,a,o,c,f,l,p=1;e==null&&(e=[]);function m(w){return 1/Math.min(c[w.source.index],c[w.target.index])}function y(w){for(var E=0,N=e.length;E1&&(D=j.y+j.vy-A.y-A.vy||at(l)),o>2&&(z=j.z+j.vz-A.z-A.vz||at(l)),$=Math.sqrt(I*I+D*D+z*z),$=($-s[S])/$*w*n[S],I*=$,D*=$,z*=$,j.vx-=I*(V=f[S]),o>1&&(j.vy-=D*V),o>2&&(j.vz-=z*V),A.vx+=I*(V=1-V),o>1&&(A.vy+=D*V),o>2&&(A.vz+=z*V)}function x(){if(a){var w,E=a.length,N=e.length,S=new Map(a.map((A,j)=>[r(A,j,a),A])),R;for(w=0,c=new Array(E);wtypeof N=="function")||Math.random,o=E.find(N=>[1,2,3].includes(N))||2,x()},y.links=function(w){return arguments.length?(e=w,x(),y):e},y.id=function(w){return arguments.length?(r=w,y):r},y.iterations=function(w){return arguments.length?(p=+w,y):p},y.strength=function(w){return arguments.length?(t=typeof w=="function"?w:Le(+w),_(),y):t},y.distance=function(w){return arguments.length?(i=typeof w=="function"?w:Le(+w),b(),y):i},y}const V1=1664525,W1=1013904223,el=4294967296;function Y1(){let e=1;return()=>(e=(V1*e+W1)%el)/el}var tl=3;function $n(e){return e.x}function rl(e){return e.y}function K1(e){return e.z}var X1=10,Z1=Math.PI*(3-Math.sqrt(5)),J1=Math.PI*20/(9+Math.sqrt(221));function Q1(e,r){r=r||2;var t=Math.min(tl,Math.max(1,Math.round(r))),n,i=1,s=.001,a=1-Math.pow(s,1/300),o=0,c=.6,f=new Map,l=Ln(y),p=Cn("tick","end"),m=Y1();e==null&&(e=[]);function y(){x(),p.call("tick",n),i1&&(S.fy==null?S.y+=S.vy*=c:(S.y=S.fy,S.vy=0)),t>2&&(S.fz==null?S.z+=S.vz*=c:(S.z=S.fz,S.vz=0));return n}function _(){for(var w=0,E=e.length,N;w1&&isNaN(N.y)||t>2&&isNaN(N.z)){var S=X1*(t>2?Math.cbrt(.5+w):t>1?Math.sqrt(.5+w):w),R=w*Z1,A=w*J1;t===1?N.x=S:t===2?(N.x=S*Math.cos(R),N.y=S*Math.sin(R)):(N.x=S*Math.sin(R)*Math.cos(A),N.y=S*Math.cos(R),N.z=S*Math.sin(R)*Math.sin(A))}(isNaN(N.vx)||t>1&&isNaN(N.vy)||t>2&&isNaN(N.vz))&&(N.vx=0,t>1&&(N.vy=0),t>2&&(N.vz=0))}}function b(w){return w.initialize&&w.initialize(e,m,t),w}return _(),n={tick:x,restart:function(){return l.restart(y),n},stop:function(){return l.stop(),n},numDimensions:function(w){return arguments.length?(t=Math.min(tl,Math.max(1,Math.round(w))),f.forEach(b),n):t},nodes:function(w){return arguments.length?(e=w,_(),f.forEach(b),n):e},alpha:function(w){return arguments.length?(i=+w,n):i},alphaMin:function(w){return arguments.length?(s=+w,n):s},alphaDecay:function(w){return arguments.length?(a=+w,n):+a},alphaTarget:function(w){return arguments.length?(o=+w,n):o},velocityDecay:function(w){return arguments.length?(c=1-w,n):1-c},randomSource:function(w){return arguments.length?(m=w,f.forEach(b),n):m},force:function(w,E){return arguments.length>1?(E==null?f.delete(w):f.set(w,b(E)),n):f.get(w)},find:function(){var w=Array.prototype.slice.call(arguments),E=w.shift()||0,N=(t>1?w.shift():null)||0,S=(t>2?w.shift():null)||0,R=w.shift()||1/0,A=0,j=e.length,I,D,z,$,V,Y;for(R*=R,A=0;A1?(p.on(w,E),n):p.on(w)}}}function H1(){var e,r,t,n,i,s=Le(-30),a,o=1,c=1/0,f=.81;function l(x){var _,b=e.length,w=(r===1?zn(e,$n):r===2?Yt(e,$n,rl):r===3?Ar(e,$n,rl,K1):null).visitAfter(m);for(i=x,_=0;_1&&(x.y=S/E),r>2&&(x.z=R/E)}else{b=x,b.x=b.data.x,r>1&&(b.y=b.data.y),r>2&&(b.z=b.data.z);do _+=a[b.data.index];while(b=b.next)}x.value=_}function y(x,_,b,w,E){if(!x.value)return!0;var N=[b,w,E][r-1],S=x.x-t.x,R=r>1?x.y-t.y:0,A=r>2?x.z-t.z:0,j=N-_,I=S*S+R*R+A*A;if(j*j/f1&&R===0&&(R=at(n),I+=R*R),r>2&&A===0&&(A=at(n),I+=A*A),I1&&(t.vy+=R*x.value*i/I),r>2&&(t.vz+=A*x.value*i/I)),!0;if(x.length||I>=c)return;(x.data!==t||x.next)&&(S===0&&(S=at(n),I+=S*S),r>1&&R===0&&(R=at(n),I+=R*R),r>2&&A===0&&(A=at(n),I+=A*A),I1&&(t.vy+=R*j),r>2&&(t.vz+=A*j));while(x=x.next)}return l.initialize=function(x,..._){e=x,n=_.find(b=>typeof b=="function")||Math.random,r=_.find(b=>[1,2,3].includes(b))||2,p()},l.strength=function(x){return arguments.length?(s=typeof x=="function"?x:Le(+x),p(),l):s},l.distanceMin=function(x){return arguments.length?(o=x*x,l):Math.sqrt(o)},l.distanceMax=function(x){return arguments.length?(c=x*x,l):Math.sqrt(c)},l.theta=function(x){return arguments.length?(f=x*x,l):Math.sqrt(f)},l}function eb(e,r,t,n){var i,s,a=Le(.1),o,c;typeof e!="function"&&(e=Le(+e)),r==null&&(r=0),t==null&&(t=0),n==null&&(n=0);function f(p){for(var m=0,y=i.length;m1&&(x.vy+=b*N),s>2&&(x.vz+=w*N)}}function l(){if(i){var p,m=i.length;for(o=new Array(m),c=new Array(m),p=0;p[1,2,3].includes(y))||2,l()},f.strength=function(p){return arguments.length?(a=typeof p=="function"?p:Le(+p),l(),f):a},f.radius=function(p){return arguments.length?(e=typeof p=="function"?p:Le(+p),l(),f):e},f.x=function(p){return arguments.length?(r=+p,f):r},f.y=function(p){return arguments.length?(t=+p,f):t},f.z=function(p){return arguments.length?(n=+p,f):n},f}function tb(e){var r=Le(.1),t,n,i;typeof e!="function"&&(e=Le(e==null?0:+e));function s(o){for(var c=0,f=t.length,l;cr.id},manyBody:{},center:{x:0,y:0,z:0}}}initSimulation(){return Q1()}}function Gn(e){throw new Error('Could not dynamically require "'+e+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var Un,nl;function sb(){if(nl)return Un;nl=1;function e(){this.__data__=[],this.size=0}return Un=e,Un}var Vn,il;function Xt(){if(il)return Vn;il=1;function e(r,t){return r===t||r!==r&&t!==t}return Vn=e,Vn}var Wn,sl;function Lr(){if(sl)return Wn;sl=1;var e=Xt();function r(t,n){for(var i=t.length;i--;)if(e(t[i][0],n))return i;return-1}return Wn=r,Wn}var Yn,ol;function ob(){if(ol)return Yn;ol=1;var e=Lr(),r=Array.prototype,t=r.splice;function n(i){var s=this.__data__,a=e(s,i);if(a<0)return!1;var o=s.length-1;return a==o?s.pop():t.call(s,a,1),--this.size,!0}return Yn=n,Yn}var Kn,al;function ab(){if(al)return Kn;al=1;var e=Lr();function r(t){var n=this.__data__,i=e(n,t);return i<0?void 0:n[i][1]}return Kn=r,Kn}var Xn,ul;function ub(){if(ul)return Xn;ul=1;var e=Lr();function r(t){return e(this.__data__,t)>-1}return Xn=r,Xn}var Zn,cl;function cb(){if(cl)return Zn;cl=1;var e=Lr();function r(t,n){var i=this.__data__,s=e(i,t);return s<0?(++this.size,i.push([t,n])):i[s][1]=n,this}return Zn=r,Zn}var Jn,fl;function Dr(){if(fl)return Jn;fl=1;var e=sb(),r=ob(),t=ab(),n=ub(),i=cb();function s(a){var o=-1,c=a==null?0:a.length;for(this.clear();++o-1&&n%1==0&&n-1&&t%1==0&&t<=e}return Xi=r,Xi}var Ji,fh;function Pb(){if(fh)return Ji;fh=1;var e=zt(),r=Zi(),t=pt(),n="[object Arguments]",i="[object Array]",s="[object Boolean]",a="[object Date]",o="[object Error]",c="[object Function]",f="[object Map]",l="[object Number]",p="[object Object]",m="[object RegExp]",y="[object Set]",x="[object String]",_="[object WeakMap]",b="[object ArrayBuffer]",w="[object DataView]",E="[object Float32Array]",N="[object Float64Array]",S="[object Int8Array]",R="[object Int16Array]",A="[object Int32Array]",j="[object Uint8Array]",I="[object Uint8ClampedArray]",D="[object Uint16Array]",z="[object Uint32Array]",$={};$[E]=$[N]=$[S]=$[R]=$[A]=$[j]=$[I]=$[D]=$[z]=!0,$[n]=$[i]=$[b]=$[s]=$[w]=$[a]=$[o]=$[c]=$[f]=$[l]=$[p]=$[m]=$[y]=$[x]=$[_]=!1;function V(Y){return t(Y)&&r(Y.length)&&!!$[e(Y)]}return Ji=V,Ji}var Qi,lh;function Vr(){if(lh)return Qi;lh=1;function e(r){return function(t){return r(t)}}return Qi=e,Qi}var mr={exports:{}};mr.exports;var hh;function Hi(){return hh||(hh=1,function(e,r){var t=vl(),n=r&&!r.nodeType&&r,i=n&&!0&&e&&!e.nodeType&&e,s=i&&i.exports===n,a=s&&t.process,o=function(){try{var c=i&&i.require&&i.require("util").types;return c||a&&a.binding&&a.binding("util")}catch(f){}}();e.exports=o}(mr,mr.exports)),mr.exports}var es,dh;function yr(){if(dh)return es;dh=1;var e=Pb(),r=Vr(),t=Hi(),n=t&&t.isTypedArray,i=n?r(n):e;return es=i,es}var ts,gh;function ph(){if(gh)return ts;gh=1;var e=kb(),r=pr(),t=ze(),n=Jt(),i=Ur(),s=yr(),a=Object.prototype,o=a.hasOwnProperty;function c(f,l){var p=t(f),m=!p&&r(f),y=!p&&!m&&n(f),x=!p&&!m&&!y&&s(f),_=p||m||y||x,b=_?e(f.length,String):[],w=b.length;for(var E in f)(l||o.call(f,E))&&!(_&&(E=="length"||y&&(E=="offset"||E=="parent")||x&&(E=="buffer"||E=="byteLength"||E=="byteOffset")||i(E,w)))&&b.push(E);return b}return ts=c,ts}var rs,vh;function Wr(){if(vh)return rs;vh=1;var e=Object.prototype;function r(t){var n=t&&t.constructor,i=typeof n=="function"&&n.prototype||e;return t===i}return rs=r,rs}var ns,mh;function yh(){if(mh)return ns;mh=1;function e(r,t){return function(n){return r(t(n))}}return ns=e,ns}var is,wh;function Lb(){if(wh)return is;wh=1;var e=yh(),r=e(Object.keys,Object);return is=r,is}var ss,bh;function os(){if(bh)return ss;bh=1;var e=Wr(),r=Lb(),t=Object.prototype,n=t.hasOwnProperty;function i(s){if(!e(s))return r(s);var a=[];for(var o in Object(s))n.call(s,o)&&o!="constructor"&&a.push(o);return a}return ss=i,ss}var as,_h;function Et(){if(_h)return as;_h=1;var e=dr(),r=Zi();function t(n){return n!=null&&r(n.length)&&!e(n)}return as=t,as}var us,Eh;function kt(){if(Eh)return us;Eh=1;var e=ph(),r=os(),t=Et();function n(i){return t(i)?e(i):r(i)}return us=n,us}var cs,xh;function Db(){if(xh)return cs;xh=1;var e=gr(),r=kt();function t(n,i){return n&&e(i,r(i),n)}return cs=t,cs}var fs,Nh;function zb(){if(Nh)return fs;Nh=1;function e(r){var t=[];if(r!=null)for(var n in Object(r))t.push(n);return t}return fs=e,fs}var ls,Mh;function Fb(){if(Mh)return ls;Mh=1;var e=ut(),r=Wr(),t=zb(),n=Object.prototype,i=n.hasOwnProperty;function s(a){if(!e(a))return t(a);var o=r(a),c=[];for(var f in a)f=="constructor"&&(o||!i.call(a,f))||c.push(f);return c}return ls=s,ls}var hs,Sh;function Bt(){if(Sh)return hs;Sh=1;var e=ph(),r=Fb(),t=Et();function n(i){return t(i)?e(i,!0):r(i)}return hs=n,hs}var ds,qh;function Bb(){if(qh)return ds;qh=1;var e=gr(),r=Bt();function t(n,i){return n&&e(i,r(i),n)}return ds=t,ds}var wr={exports:{}};wr.exports;var Rh;function Oh(){return Rh||(Rh=1,function(e,r){var t=ft(),n=r&&!r.nodeType&&r,i=n&&!0&&e&&!e.nodeType&&e,s=i&&i.exports===n,a=s?t.Buffer:void 0,o=a?a.allocUnsafe:void 0;function c(f,l){if(l)return f.slice();var p=f.length,m=o?o(p):new f.constructor(p);return f.copy(m),m}e.exports=c}(wr,wr.exports)),wr.exports}var gs,Ah;function Ih(){if(Ah)return gs;Ah=1;function e(r,t){var n=-1,i=r.length;for(t||(t=Array(i));++ny))return!1;var _=p.get(a),b=p.get(o);if(_&&b)return _==o&&b==a;var w=-1,E=!0,N=c&i?new e:void 0;for(p.set(a,o),p.set(o,a);++w0&&s(l)?i>1?t(l,i-1,s,a,o):e(o,l):a||(o[o.length]=l)}return o}return ga=t,ga}var va,Hg;function D_(){if(Hg)return va;Hg=1;function e(r,t,n){switch(n.length){case 0:return r.call(t);case 1:return r.call(t,n[0]);case 2:return r.call(t,n[0],n[1]);case 3:return r.call(t,n[0],n[1],n[2])}return r.apply(t,n)}return va=e,va}var ma,ep;function tp(){if(ep)return ma;ep=1;var e=D_(),r=Math.max;function t(n,i,s){return i=r(i===void 0?n.length-1:i,0),function(){for(var a=arguments,o=-1,c=r(a.length-i,0),f=Array(c);++o0){if(++s>=e)return arguments[0]}else s=0;return i.apply(void 0,arguments)}}return wa=n,wa}var ba,ip;function sp(){if(ip)return ba;ip=1;var e=z_(),r=F_(),t=r(e);return ba=t,ba}var _a,op;function Qr(){if(op)return _a;op=1;var e=$t(),r=tp(),t=sp();function n(i,s){return t(r(i,s,e),i+"")}return _a=n,_a}var Ea,ap;function up(){if(ap)return Ea;ap=1;function e(r,t,n,i){for(var s=r.length,a=n+(i?1:-1);i?a--:++a-1}return Sa=r,Sa}var qa,dp;function V_(){if(dp)return qa;dp=1;function e(r,t,n){for(var i=-1,s=r==null?0:r.length;++i=a){var w=f?null:i(c);if(w)return s(w);x=!1,m=n,b=new e}else b=f?[]:_;e:for(;++p1?y.setNode(x,p):y.setNode(x)}),this},i.prototype.setNode=function(l,p){return e.has(this._nodes,l)?(arguments.length>1&&(this._nodes[l]=p),this):(this._nodes[l]=arguments.length>1?p:this._defaultNodeLabelFn(l),this._isCompound&&(this._parent[l]=t,this._children[l]={},this._children[t][l]=!0),this._in[l]={},this._preds[l]={},this._out[l]={},this._sucs[l]={},++this._nodeCount,this)},i.prototype.node=function(l){return this._nodes[l]},i.prototype.hasNode=function(l){return e.has(this._nodes,l)},i.prototype.removeNode=function(l){var p=this;if(e.has(this._nodes,l)){var m=function(y){p.removeEdge(p._edgeObjs[y])};delete this._nodes[l],this._isCompound&&(this._removeFromParentsChildList(l),delete this._parent[l],e.each(this.children(l),function(y){p.setParent(y)}),delete this._children[l]),e.each(e.keys(this._in[l]),m),delete this._in[l],delete this._preds[l],e.each(e.keys(this._out[l]),m),delete this._out[l],delete this._sucs[l],--this._nodeCount}return this},i.prototype.setParent=function(l,p){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(e.isUndefined(p))p=t;else{p+="";for(var m=p;!e.isUndefined(m);m=this.parent(m))if(m===l)throw new Error("Setting "+p+" as parent of "+l+" would create a cycle");this.setNode(p)}return this.setNode(l),this._removeFromParentsChildList(l),this._parent[l]=p,this._children[p][l]=!0,this},i.prototype._removeFromParentsChildList=function(l){delete this._children[this._parent[l]][l]},i.prototype.parent=function(l){if(this._isCompound){var p=this._parent[l];if(p!==t)return p}},i.prototype.children=function(l){if(e.isUndefined(l)&&(l=t),this._isCompound){var p=this._children[l];if(p)return e.keys(p)}else{if(l===t)return this.nodes();if(this.hasNode(l))return[]}},i.prototype.predecessors=function(l){var p=this._preds[l];if(p)return e.keys(p)},i.prototype.successors=function(l){var p=this._sucs[l];if(p)return e.keys(p)},i.prototype.neighbors=function(l){var p=this.predecessors(l);if(p)return e.union(p,this.successors(l))},i.prototype.isLeaf=function(l){var p;return this.isDirected()?p=this.successors(l):p=this.neighbors(l),p.length===0},i.prototype.filterNodes=function(l){var p=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});p.setGraph(this.graph());var m=this;e.each(this._nodes,function(_,b){l(b)&&p.setNode(b,_)}),e.each(this._edgeObjs,function(_){p.hasNode(_.v)&&p.hasNode(_.w)&&p.setEdge(_,m.edge(_))});var y={};function x(_){var b=m.parent(_);return b===void 0||p.hasNode(b)?(y[_]=b,b):b in y?y[b]:x(b)}return this._isCompound&&e.each(p.nodes(),function(_){p.setParent(_,x(_))}),p},i.prototype.setDefaultEdgeLabel=function(l){return e.isFunction(l)||(l=e.constant(l)),this._defaultEdgeLabelFn=l,this},i.prototype.edgeCount=function(){return this._edgeCount},i.prototype.edges=function(){return e.values(this._edgeObjs)},i.prototype.setPath=function(l,p){var m=this,y=arguments;return e.reduce(l,function(x,_){return y.length>1?m.setEdge(x,_,p):m.setEdge(x,_),_}),this},i.prototype.setEdge=function(){var l,p,m,y,x=!1,_=arguments[0];typeof _=="object"&&_!==null&&"v"in _?(l=_.v,p=_.w,m=_.name,arguments.length===2&&(y=arguments[1],x=!0)):(l=_,p=arguments[1],m=arguments[3],arguments.length>2&&(y=arguments[2],x=!0)),l=""+l,p=""+p,e.isUndefined(m)||(m=""+m);var b=o(this._isDirected,l,p,m);if(e.has(this._edgeLabels,b))return x&&(this._edgeLabels[b]=y),this;if(!e.isUndefined(m)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(l),this.setNode(p),this._edgeLabels[b]=x?y:this._defaultEdgeLabelFn(l,p,m);var w=c(this._isDirected,l,p,m);return l=w.v,p=w.w,Object.freeze(w),this._edgeObjs[b]=w,s(this._preds[p],l),s(this._sucs[l],p),this._in[p][b]=w,this._out[l][b]=w,this._edgeCount++,this},i.prototype.edge=function(l,p,m){var y=arguments.length===1?f(this._isDirected,arguments[0]):o(this._isDirected,l,p,m);return this._edgeLabels[y]},i.prototype.hasEdge=function(l,p,m){var y=arguments.length===1?f(this._isDirected,arguments[0]):o(this._isDirected,l,p,m);return e.has(this._edgeLabels,y)},i.prototype.removeEdge=function(l,p,m){var y=arguments.length===1?f(this._isDirected,arguments[0]):o(this._isDirected,l,p,m),x=this._edgeObjs[y];return x&&(l=x.v,p=x.w,delete this._edgeLabels[y],delete this._edgeObjs[y],a(this._preds[p],l),a(this._sucs[l],p),delete this._in[p][y],delete this._out[l][y],this._edgeCount--),this},i.prototype.inEdges=function(l,p){var m=this._in[l];if(m){var y=e.values(m);return p?e.filter(y,function(x){return x.v===p}):y}},i.prototype.outEdges=function(l,p){var m=this._out[l];if(m){var y=e.values(m);return p?e.filter(y,function(x){return x.w===p}):y}},i.prototype.nodeEdges=function(l,p){var m=this.inEdges(l,p);if(m)return m.concat(this.outEdges(l,p))};function s(l,p){l[p]?l[p]++:l[p]=1}function a(l,p){--l[p]||delete l[p]}function o(l,p,m,y){var x=""+p,_=""+m;if(!l&&x>_){var b=x;x=_,_=b}return x+n+_+n+(e.isUndefined(y)?r:y)}function c(l,p,m,y){var x=""+p,_=""+m;if(!l&&x>_){var b=x;x=_,_=b}var w={v:x,w:_};return y&&(w.name=y),w}function f(l,p){return o(l,p.v,p.w,p.name)}return Pa}var Da,Mp;function J_(){return Mp||(Mp=1,Da="2.1.8"),Da}var za,Sp;function Q_(){return Sp||(Sp=1,za={Graph:La(),version:J_()}),za}var Fa,qp;function H_(){if(qp)return Fa;qp=1;var e=ct(),r=La();Fa={write:t,read:s};function t(a){var o={options:{directed:a.isDirected(),multigraph:a.isMultigraph(),compound:a.isCompound()},nodes:n(a),edges:i(a)};return e.isUndefined(a.graph())||(o.value=e.clone(a.graph())),o}function n(a){return e.map(a.nodes(),function(o){var c=a.node(o),f=a.parent(o),l={v:o};return e.isUndefined(c)||(l.value=c),e.isUndefined(f)||(l.parent=f),l})}function i(a){return e.map(a.edges(),function(o){var c=a.edge(o),f={v:o.v,w:o.w};return e.isUndefined(o.name)||(f.name=o.name),e.isUndefined(c)||(f.value=c),f})}function s(a){var o=new r(a.options).setGraph(a.value);return e.each(a.nodes,function(c){o.setNode(c.v,c.value),c.parent&&o.setParent(c.v,c.parent)}),e.each(a.edges,function(c){o.setEdge({v:c.v,w:c.w,name:c.name},c.value)}),o}return Fa}var Ba,Rp;function eE(){if(Rp)return Ba;Rp=1;var e=ct();Ba=r;function r(t){var n={},i=[],s;function a(o){e.has(n,o)||(n[o]=!0,s.push(o),e.each(t.successors(o),a),e.each(t.predecessors(o),a))}return e.each(t.nodes(),function(o){s=[],a(o),s.length&&i.push(s)}),i}return Ba}var $a,Op;function Ap(){if(Op)return $a;Op=1;var e=ct();$a=r;function r(){this._arr=[],this._keyIndices={}}return r.prototype.size=function(){return this._arr.length},r.prototype.keys=function(){return this._arr.map(function(t){return t.key})},r.prototype.has=function(t){return e.has(this._keyIndices,t)},r.prototype.priority=function(t){var n=this._keyIndices[t];if(n!==void 0)return this._arr[n].priority},r.prototype.min=function(){if(this.size()===0)throw new Error("Queue underflow");return this._arr[0].key},r.prototype.add=function(t,n){var i=this._keyIndices;if(t=String(t),!e.has(i,t)){var s=this._arr,a=s.length;return i[t]=a,s.push({key:t,priority:n}),this._decrease(a),!0}return!1},r.prototype.removeMin=function(){this._swap(0,this._arr.length-1);var t=this._arr.pop();return delete this._keyIndices[t.key],this._heapify(0),t.key},r.prototype.decrease=function(t,n){var i=this._keyIndices[t];if(n>this._arr[i].priority)throw new Error("New priority is greater than current priority. Key: "+t+" Old: "+this._arr[i].priority+" New: "+n);this._arr[i].priority=n,this._decrease(i)},r.prototype._heapify=function(t){var n=this._arr,i=2*t,s=i+1,a=t;i>1,!(n[s].priority0&&(p=l.removeMin(),m=f[p],m.distance!==Number.POSITIVE_INFINITY);)c(p).forEach(y);return f}return Ga}var Ua,kp;function tE(){if(kp)return Ua;kp=1;var e=Tp(),r=ct();Ua=t;function t(n,i,s){return r.transform(n.nodes(),function(a,o){a[o]=e(n,o,i,s)},{})}return Ua}var Va,jp;function Cp(){if(jp)return Va;jp=1;var e=ct();Va=r;function r(t){var n=0,i=[],s={},a=[];function o(c){var f=s[c]={onStack:!0,lowlink:n,index:n++};if(i.push(c),t.successors(c).forEach(function(m){e.has(s,m)?s[m].onStack&&(f.lowlink=Math.min(f.lowlink,s[m].index)):(o(m),f.lowlink=Math.min(f.lowlink,s[m].lowlink))}),f.lowlink===f.index){var l=[],p;do p=i.pop(),s[p].onStack=!1,l.push(p);while(c!==p);a.push(l)}}return t.nodes().forEach(function(c){e.has(s,c)||o(c)}),a}return Va}var Wa,Pp;function rE(){if(Pp)return Wa;Pp=1;var e=ct(),r=Cp();Wa=t;function t(n){return e.filter(r(n),function(i){return i.length>1||i.length===1&&n.hasEdge(i[0],i[0])})}return Wa}var Ya,Lp;function nE(){if(Lp)return Ya;Lp=1;var e=ct();Ya=t;var r=e.constant(1);function t(i,s,a){return n(i,s||r,a||function(o){return i.outEdges(o)})}function n(i,s,a){var o={},c=i.nodes();return c.forEach(function(f){o[f]={},o[f][f]={distance:0},c.forEach(function(l){f!==l&&(o[f][l]={distance:Number.POSITIVE_INFINITY})}),a(f).forEach(function(l){var p=l.v===f?l.w:l.v,m=s(l);o[f][p]={distance:m,predecessor:f}})}),c.forEach(function(f){var l=o[f];c.forEach(function(p){var m=o[p];c.forEach(function(y){var x=m[f],_=l[y],b=m[y],w=x.distance+_.distance;w0;){if(f=c.removeMin(),e.has(o,f))a.setEdge(f,o[f]);else{if(p)throw new Error("Input graph is not connected: "+i);p=!0}i.nodeEdges(f).forEach(l)}return a}return Ha}var eu,Wp;function uE(){return Wp||(Wp=1,eu={components:eE(),dijkstra:Tp(),dijkstraAll:tE(),findCycles:rE(),floydWarshall:nE(),isAcyclic:iE(),postorder:sE(),preorder:oE(),prim:aE(),tarjan:Cp(),topsort:zp()}),eu}var tu,Yp;function cE(){if(Yp)return tu;Yp=1;var e=Q_();return tu={Graph:e.Graph,json:H_(),alg:uE(),version:e.version},tu}var ru,Kp;function lt(){if(Kp)return ru;Kp=1;var e;if(typeof Gn=="function")try{e=cE()}catch(r){}return e||(e=window.graphlib),ru=e,ru}var nu,Xp;function fE(){if(Xp)return nu;Xp=1;var e=wd(),r=1,t=4;function n(i){return e(i,r|t)}return nu=n,nu}var iu,Zp;function Hr(){if(Zp)return iu;Zp=1;var e=Xt(),r=Et(),t=Ur(),n=ut();function i(s,a,o){if(!n(o))return!1;var c=typeof a;return(c=="number"?r(o)&&t(a,o.length):c=="string"&&a in o)?e(o[a],s):!1}return iu=i,iu}var su,Jp;function lE(){if(Jp)return su;Jp=1;var e=Qr(),r=Xt(),t=Hr(),n=Bt(),i=Object.prototype,s=i.hasOwnProperty,a=e(function(o,c){o=Object(o);var f=-1,l=c.length,p=l>2?c[2]:void 0;for(p&&t(c[0],c[1],p)&&(l=1);++f-1?c[f?s[l]:l]:void 0}}return ou=n,ou}var au,Hp;function dE(){if(Hp)return au;Hp=1;var e=/\s/;function r(t){for(var n=t.length;n--&&e.test(t.charAt(n)););return n}return au=r,au}var uu,ev;function gE(){if(ev)return uu;ev=1;var e=dE(),r=/^\s+/;function t(n){return n&&n.slice(0,e(n)+1).replace(r,"")}return uu=t,uu}var cu,tv;function pE(){if(tv)return cu;tv=1;var e=gE(),r=ut(),t=Ht(),n=NaN,i=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,a=/^0o[0-7]+$/i,o=parseInt;function c(f){if(typeof f=="number")return f;if(t(f))return n;if(r(f)){var l=typeof f.valueOf=="function"?f.valueOf():f;f=r(l)?l+"":l}if(typeof f!="string")return f===0?f:+f;f=e(f);var p=s.test(f);return p||a.test(f)?o(f.slice(2),p?2:8):i.test(f)?n:+f}return cu=c,cu}var fu,rv;function nv(){if(rv)return fu;rv=1;var e=pE(),r=1/0,t=17976931348623157e292;function n(i){if(!i)return i===0?i:0;if(i=e(i),i===r||i===-1/0){var s=i<0?-1:1;return s*t}return i===i?i:0}return fu=n,fu}var lu,iv;function vE(){if(iv)return lu;iv=1;var e=nv();function r(t){var n=e(t),i=n%1;return n===n?i?n-i:n:0}return lu=r,lu}var hu,sv;function mE(){if(sv)return hu;sv=1;var e=up(),r=xt(),t=vE(),n=Math.max;function i(s,a,o){var c=s==null?0:s.length;if(!c)return-1;var f=o==null?0:t(o);return f<0&&(f=n(c+f,0)),e(s,r(a,3),f)}return hu=i,hu}var du,ov;function yE(){if(ov)return du;ov=1;var e=hE(),r=mE(),t=e(r);return du=t,du}var gu,av;function uv(){if(av)return gu;av=1;var e=pa();function r(t){var n=t==null?0:t.length;return n?e(t,1):[]}return gu=r,gu}var pu,cv;function wE(){if(cv)return pu;cv=1;var e=eo(),r=Od(),t=Bt();function n(i,s){return i==null?i:e(i,r(s),t)}return pu=n,pu}var vu,fv;function bE(){if(fv)return vu;fv=1;function e(r){var t=r==null?0:r.length;return t?r[t-1]:void 0}return vu=e,vu}var mu,lv;function _E(){if(lv)return mu;lv=1;var e=$r(),r=ro(),t=xt();function n(i,s){var a={};return s=t(s,3),r(i,function(o,c,f){e(a,c,s(o,c,f))}),a}return mu=n,mu}var yu,hv;function wu(){if(hv)return yu;hv=1;var e=Ht();function r(t,n,i){for(var s=-1,a=t.length;++st}return bu=e,bu}var _u,gv;function xE(){if(gv)return _u;gv=1;var e=wu(),r=EE(),t=$t();function n(i){return i&&i.length?e(i,t,r):void 0}return _u=n,_u}var Eu,pv;function vv(){if(pv)return Eu;pv=1;var e=$r(),r=Xt();function t(n,i,s){(s!==void 0&&!r(n[i],s)||s===void 0&&!(i in n))&&e(n,i,s)}return Eu=t,Eu}var xu,mv;function NE(){if(mv)return xu;mv=1;var e=zt(),r=Yr(),t=pt(),n="[object Object]",i=Function.prototype,s=Object.prototype,a=i.toString,o=s.hasOwnProperty,c=a.call(Object);function f(l){if(!t(l)||e(l)!=n)return!1;var p=r(l);if(p===null)return!0;var m=o.call(p,"constructor")&&p.constructor;return typeof m=="function"&&m instanceof m&&a.call(m)==c}return xu=f,xu}var Nu,yv;function wv(){if(yv)return Nu;yv=1;function e(r,t){if(!(t==="constructor"&&typeof r[t]=="function")&&t!="__proto__")return r[t]}return Nu=e,Nu}var Mu,bv;function ME(){if(bv)return Mu;bv=1;var e=gr(),r=Bt();function t(n){return e(n,r(n))}return Mu=t,Mu}var Su,_v;function SE(){if(_v)return Su;_v=1;var e=vv(),r=Oh(),t=ud(),n=Ih(),i=dd(),s=pr(),a=ze(),o=yp(),c=Jt(),f=dr(),l=ut(),p=NE(),m=yr(),y=wv(),x=ME();function _(b,w,E,N,S,R,A){var j=y(b,E),I=y(w,E),D=A.get(I);if(D){e(b,E,D);return}var z=R?R(j,I,E+"",b,w,A):void 0,$=z===void 0;if($){var V=a(I),Y=!V&&c(I),ee=!V&&!Y&&m(I);z=I,V||Y||ee?a(j)?z=j:o(j)?z=n(j):Y?($=!1,z=r(I,!0)):ee?($=!1,z=t(I,!0)):z=[]:p(I)||s(I)?(z=j,s(j)?z=x(j):(!l(j)||f(j))&&(z=i(I))):$=!1}$&&(A.set(I,z),S(z,I,N,R,A),A.delete(I)),e(b,E,z)}return Su=_,Su}var qu,Ev;function qE(){if(Ev)return qu;Ev=1;var e=Br(),r=vv(),t=eo(),n=SE(),i=ut(),s=Bt(),a=wv();function o(c,f,l,p,m){c!==f&&t(f,function(y,x){if(m||(m=new e),i(y))n(c,f,x,l,o,p,m);else{var _=p?p(a(c,x),y,x+"",c,f,m):void 0;_===void 0&&(_=y),r(c,x,_)}},s)}return qu=o,qu}var Ru,xv;function RE(){if(xv)return Ru;xv=1;var e=Qr(),r=Hr();function t(n){return e(function(i,s){var a=-1,o=s.length,c=o>1?s[o-1]:void 0,f=o>2?s[2]:void 0;for(c=n.length>3&&typeof c=="function"?(o--,c):void 0,f&&r(s[0],s[1],f)&&(c=o<3?void 0:c,o=1),i=Object(i);++an||o&&c&&l&&!f&&!p||s&&c&&l||!i&&l||!a)return 1;if(!s&&!o&&!p&&t=f)return l;var p=i[s];return l*(p=="desc"?-1:1)}}return t.index-n.index}return Uu=r,Uu}var Vu,Bv;function UE(){if(Bv)return Vu;Bv=1;var e=Xr(),r=Jr(),t=xt(),n=Lg(),i=BE(),s=Vr(),a=GE(),o=$t(),c=ze();function f(l,p,m){p.length?p=e(p,function(_){return c(_)?function(b){return r(b,_.length===1?_[0]:_)}:_}):p=[o];var y=-1;p=e(p,s(t));var x=n(l,function(_,b,w){var E=e(p,function(N){return N(_)});return{criteria:E,index:++y,value:_}});return i(x,function(_,b){return a(_,b,m)})}return Vu=f,Vu}var Wu,$v;function VE(){if($v)return Wu;$v=1;var e=pa(),r=UE(),t=Qr(),n=Hr(),i=t(function(s,a){if(s==null)return[];var o=a.length;return o>1&&n(s,a[0],a[1])?a=[]:o>2&&n(a[0],a[1],a[2])&&(a=[a[0]]),r(s,e(a,1),[])});return Wu=i,Wu}var Yu,Gv;function WE(){if(Gv)return Yu;Gv=1;var e=hg(),r=0;function t(n){var i=++r;return e(n)+i}return Yu=t,Yu}var Ku,Uv;function YE(){if(Uv)return Ku;Uv=1;function e(r,t,n){for(var i=-1,s=r.length,a=t.length,o={};++i0;--b)if(_=l[b].dequeue(),_){m=m.concat(a(f,l,p,_,!0));break}}}return m}function a(f,l,p,m,y){var x=y?[]:void 0;return e.forEach(f.inEdges(m.v),function(_){var b=f.edge(_),w=f.node(_.v);y&&x.push({v:_.v,w:_.w}),w.out-=b,c(l,p,w)}),e.forEach(f.outEdges(m.v),function(_){var b=f.edge(_),w=_.w,E=f.node(w);E.in-=b,c(l,p,E)}),f.removeNode(m.v),x}function o(f,l){var p=new r,m=0,y=0;e.forEach(f.nodes(),function(b){p.setNode(b,{v:b,in:0,out:0})}),e.forEach(f.edges(),function(b){var w=p.edge(b.v,b.w)||0,E=l(b),N=w+E;p.setEdge(b.v,b.w,N),y=Math.max(y,p.node(b.v).out+=E),m=Math.max(m,p.node(b.w).in+=E)});var x=e.range(y+m+3).map(function(){return new t}),_=m+1;return e.forEach(p.nodes(),function(b){c(x,_,p.node(b))}),{graph:p,buckets:x,zeroIdx:_}}function c(f,l,p){p.out?p.in?f[p.out-p.in+l].enqueue(p):f[f.length-1].enqueue(p):f[0].enqueue(p)}return Qu}var Hu,Xv;function JE(){if(Xv)return Hu;Xv=1;var e=ke(),r=ZE();Hu={run:t,undo:i};function t(s){var a=s.graph().acyclicer==="greedy"?r(s,o(s)):n(s);e.forEach(a,function(c){var f=s.edge(c);s.removeEdge(c),f.forwardName=c.name,f.reversed=!0,s.setEdge(c.w,c.v,f,e.uniqueId("rev"))});function o(c){return function(f){return c.edge(f).weight}}}function n(s){var a=[],o={},c={};function f(l){e.has(c,l)||(c[l]=!0,o[l]=!0,e.forEach(s.outEdges(l),function(p){e.has(o,p.w)?a.push(p):f(p.w)}),delete o[l])}return e.forEach(s.nodes(),f),a}function i(s){e.forEach(s.edges(),function(a){var o=s.edge(a);if(o.reversed){s.removeEdge(a);var c=o.forwardName;delete o.reversed,delete o.forwardName,s.setEdge(a.w,a.v,o,c)}})}return Hu}var ec,Zv;function nt(){if(Zv)return ec;Zv=1;var e=ke(),r=lt().Graph;ec={addDummyNode:t,simplify:n,asNonCompoundGraph:i,successorWeights:s,predecessorWeights:a,intersectRect:o,buildLayerMatrix:c,normalizeRanks:f,removeEmptyRanks:l,addBorderNode:p,maxRank:m,partition:y,time:x,notime:_};function t(b,w,E,N){var S;do S=e.uniqueId(N);while(b.hasNode(S));return E.dummy=w,b.setNode(S,E),S}function n(b){var w=new r().setGraph(b.graph());return e.forEach(b.nodes(),function(E){w.setNode(E,b.node(E))}),e.forEach(b.edges(),function(E){var N=w.edge(E.v,E.w)||{weight:0,minlen:1},S=b.edge(E);w.setEdge(E.v,E.w,{weight:N.weight+S.weight,minlen:Math.max(N.minlen,S.minlen)})}),w}function i(b){var w=new r({multigraph:b.isMultigraph()}).setGraph(b.graph());return e.forEach(b.nodes(),function(E){b.children(E).length||w.setNode(E,b.node(E))}),e.forEach(b.edges(),function(E){w.setEdge(E,b.edge(E))}),w}function s(b){var w=e.map(b.nodes(),function(E){var N={};return e.forEach(b.outEdges(E),function(S){N[S.w]=(N[S.w]||0)+b.edge(S).weight}),N});return e.zipObject(b.nodes(),w)}function a(b){var w=e.map(b.nodes(),function(E){var N={};return e.forEach(b.inEdges(E),function(S){N[S.v]=(N[S.v]||0)+b.edge(S).weight}),N});return e.zipObject(b.nodes(),w)}function o(b,w){var E=b.x,N=b.y,S=w.x-E,R=w.y-N,A=b.width/2,j=b.height/2;if(!S&&!R)throw new Error("Not possible to find intersection inside of the rectangle");var I,D;return Math.abs(R)*A>Math.abs(S)*j?(R<0&&(j=-j),I=j*S/R,D=j):(S<0&&(A=-A),I=A,D=A*R/S),{x:E+I,y:N+D}}function c(b){var w=e.map(e.range(m(b)+1),function(){return[]});return e.forEach(b.nodes(),function(E){var N=b.node(E),S=N.rank;e.isUndefined(S)||(w[S][N.order]=E)}),w}function f(b){var w=e.min(e.map(b.nodes(),function(E){return b.node(E).rank}));e.forEach(b.nodes(),function(E){var N=b.node(E);e.has(N,"rank")&&(N.rank-=w)})}function l(b){var w=e.min(e.map(b.nodes(),function(R){return b.node(R).rank})),E=[];e.forEach(b.nodes(),function(R){var A=b.node(R).rank-w;E[A]||(E[A]=[]),E[A].push(R)});var N=0,S=b.graph().nodeRankFactor;e.forEach(E,function(R,A){e.isUndefined(R)&&A%S!==0?--N:N&&e.forEach(R,function(j){b.node(j).rank+=N})})}function p(b,w,E,N){var S={width:0,height:0};return arguments.length>=4&&(S.rank=E,S.order=N),t(b,"border",S,w)}function m(b){return e.max(e.map(b.nodes(),function(w){var E=b.node(w).rank;if(!e.isUndefined(E))return E}))}function y(b,w){var E={lhs:[],rhs:[]};return e.forEach(b,function(N){w(N)?E.lhs.push(N):E.rhs.push(N)}),E}function x(b,w){var E=e.now();try{return w()}finally{console.log(b+" time: "+(e.now()-E)+"ms")}}function _(b,w){return w()}return ec}var tc,Jv;function QE(){if(Jv)return tc;Jv=1;var e=ke(),r=nt();tc={run:t,undo:i};function t(s){s.graph().dummyChains=[],e.forEach(s.edges(),function(a){n(s,a)})}function n(s,a){var o=a.v,c=s.node(o).rank,f=a.w,l=s.node(f).rank,p=a.name,m=s.edge(a),y=m.labelRank;if(l!==c+1){s.removeEdge(a);var x,_,b;for(b=0,++c;cD.lim&&(z=D,$=!0);var V=e.filter(S.edges(),function(Y){return $===E(N,N.node(Y.v),z)&&$!==E(N,N.node(Y.w),z)});return e.minBy(V,function(Y){return t(S,Y)})}function _(N,S,R,A){var j=R.v,I=R.w;N.removeEdge(j,I),N.setEdge(A.v,A.w,{}),p(N),c(N,S),b(N,S)}function b(N,S){var R=e.find(N.nodes(),function(j){return!S.node(j).parent}),A=i(N,R);A=A.slice(1),e.forEach(A,function(j){var I=N.node(j).parent,D=S.edge(j,I),z=!1;D||(D=S.edge(I,j),z=!0),S.node(j).rank=S.node(I).rank+(z?D.minlen:-D.minlen)})}function w(N,S,R){return N.hasEdge(S,R)}function E(N,S,R){return R.low<=S.lim&&S.lim<=R.lim}return ic}var sc,r0;function ex(){if(r0)return sc;r0=1;var e=en(),r=e.longestPath,t=e0(),n=HE();sc=i;function i(c){switch(c.graph().ranker){case"network-simplex":o(c);break;case"tight-tree":a(c);break;case"longest-path":s(c);break;default:o(c)}}var s=r;function a(c){r(c),t(c)}function o(c){n(c)}return sc}var oc,n0;function tx(){if(n0)return oc;n0=1;var e=ke();oc=r;function r(i){var s=n(i);e.forEach(i.graph().dummyChains,function(a){for(var o=i.node(a),c=o.edgeObj,f=t(i,s,c.v,c.w),l=f.path,p=f.lca,m=0,y=l[m],x=!0;a!==c.w;){if(o=i.node(a),x){for(;(y=l[m])!==p&&i.node(y).maxRankl||p>s[m].lim));for(y=m,m=o;(m=i.parent(m))!==y;)f.push(m);return{path:c.concat(f.reverse()),lca:y}}function n(i){var s={},a=0;function o(c){var f=a;e.forEach(i.children(c),o),s[c]={low:f,lim:a++}}return e.forEach(i.children(),o),s}return oc}var ac,i0;function rx(){if(i0)return ac;i0=1;var e=ke(),r=nt();ac={run:t,cleanup:a};function t(o){var c=r.addDummyNode(o,"root",{},"_root"),f=i(o),l=e.max(e.values(f))-1,p=2*l+1;o.graph().nestingRoot=c,e.forEach(o.edges(),function(y){o.edge(y).minlen*=p});var m=s(o)+1;e.forEach(o.children(),function(y){n(o,c,p,m,l,f,y)}),o.graph().nodeRankFactor=p}function n(o,c,f,l,p,m,y){var x=o.children(y);if(!x.length){y!==c&&o.setEdge(c,y,{weight:0,minlen:f});return}var _=r.addBorderNode(o,"_bt"),b=r.addBorderNode(o,"_bb"),w=o.node(y);o.setParent(_,y),w.borderTop=_,o.setParent(b,y),w.borderBottom=b,e.forEach(x,function(E){n(o,c,f,l,p,m,E);var N=o.node(E),S=N.borderTop?N.borderTop:E,R=N.borderBottom?N.borderBottom:E,A=N.borderTop?l:2*l,j=S!==R?1:p-m[y]+1;o.setEdge(_,S,{weight:A,minlen:j,nestingEdge:!0}),o.setEdge(R,b,{weight:A,minlen:j,nestingEdge:!0})}),o.parent(y)||o.setEdge(c,_,{weight:0,minlen:p+m[y]})}function i(o){var c={};function f(l,p){var m=o.children(l);m&&m.length&&e.forEach(m,function(y){f(y,p+1)}),c[l]=p}return e.forEach(o.children(),function(l){f(l,1)}),c}function s(o){return e.reduce(o.edges(),function(c,f){return c+o.edge(f).weight},0)}function a(o){var c=o.graph();o.removeNode(c.nestingRoot),delete c.nestingRoot,e.forEach(o.edges(),function(f){var l=o.edge(f);l.nestingEdge&&o.removeEdge(f)})}return ac}var uc,s0;function nx(){if(s0)return uc;s0=1;var e=ke(),r=nt();uc=t;function t(i){function s(a){var o=i.children(a),c=i.node(a);if(o.length&&e.forEach(o,s),e.has(c,"minRank")){c.borderLeft=[],c.borderRight=[];for(var f=c.minRank,l=c.maxRank+1;f0;)y%2&&(x+=l[y+1]),y=y-1>>1,l[y]+=m.weight;p+=m.weight*x})),p}return lc}var hc,c0;function ax(){if(c0)return hc;c0=1;var e=ke();hc=r;function r(t,n){return e.map(n,function(i){var s=t.inEdges(i);if(s.length){var a=e.reduce(s,function(o,c){var f=t.edge(c),l=t.node(c.v);return{sum:o.sum+f.weight*l.order,weight:o.weight+f.weight}},{sum:0,weight:0});return{v:i,barycenter:a.sum/a.weight,weight:a.weight}}else return{v:i}})}return hc}var dc,f0;function ux(){if(f0)return dc;f0=1;var e=ke();dc=r;function r(i,s){var a={};e.forEach(i,function(c,f){var l=a[c.v]={indegree:0,in:[],out:[],vs:[c.v],i:f};e.isUndefined(c.barycenter)||(l.barycenter=c.barycenter,l.weight=c.weight)}),e.forEach(s.edges(),function(c){var f=a[c.v],l=a[c.w];!e.isUndefined(f)&&!e.isUndefined(l)&&(l.indegree++,f.out.push(a[c.w]))});var o=e.filter(a,function(c){return!c.indegree});return t(o)}function t(i){var s=[];function a(f){return function(l){l.merged||(e.isUndefined(l.barycenter)||e.isUndefined(f.barycenter)||l.barycenter>=f.barycenter)&&n(f,l)}}function o(f){return function(l){l.in.push(f),--l.indegree===0&&i.push(l)}}for(;i.length;){var c=i.pop();s.push(c),e.forEach(c.in.reverse(),a(c)),e.forEach(c.out,o(c))}return e.map(e.filter(s,function(f){return!f.merged}),function(f){return e.pick(f,["vs","i","barycenter","weight"])})}function n(i,s){var a=0,o=0;i.weight&&(a+=i.barycenter*i.weight,o+=i.weight),s.weight&&(a+=s.barycenter*s.weight,o+=s.weight),i.vs=s.vs.concat(i.vs),i.barycenter=a/o,i.weight=o,i.i=Math.min(s.i,i.i),s.merged=!0}return dc}var gc,l0;function cx(){if(l0)return gc;l0=1;var e=ke(),r=nt();gc=t;function t(s,a){var o=r.partition(s,function(_){return e.has(_,"barycenter")}),c=o.lhs,f=e.sortBy(o.rhs,function(_){return-_.i}),l=[],p=0,m=0,y=0;c.sort(i(!!a)),y=n(l,f,y),e.forEach(c,function(_){y+=_.vs.length,l.push(_.vs),p+=_.barycenter*_.weight,m+=_.weight,y=n(l,f,y)});var x={vs:e.flatten(l,!0)};return m&&(x.barycenter=p/m,x.weight=m),x}function n(s,a,o){for(var c;a.length&&(c=e.last(a)).i<=o;)a.pop(),s.push(c.vs),o++;return o}function i(s){return function(a,o){return a.barycentero.barycenter?1:s?o.i-a.i:a.i-o.i}}return gc}var pc,h0;function fx(){if(h0)return pc;h0=1;var e=ke(),r=ax(),t=ux(),n=cx();pc=i;function i(o,c,f,l){var p=o.children(c),m=o.node(c),y=m?m.borderLeft:void 0,x=m?m.borderRight:void 0,_={};y&&(p=e.filter(p,function(R){return R!==y&&R!==x}));var b=r(o,p);e.forEach(b,function(R){if(o.children(R.v).length){var A=i(o,R.v,f,l);_[R.v]=A,e.has(A,"barycenter")&&a(R,A)}});var w=t(b,f);s(w,_);var E=n(w,l);if(y&&(E.vs=e.flatten([y,E.vs,x],!0),o.predecessors(y).length)){var N=o.node(o.predecessors(y)[0]),S=o.node(o.predecessors(x)[0]);e.has(E,"barycenter")||(E.barycenter=0,E.weight=0),E.barycenter=(E.barycenter*E.weight+N.order+S.order)/(E.weight+2),E.weight+=2}return E}function s(o,c){e.forEach(o,function(f){f.vs=e.flatten(f.vs.map(function(l){return c[l]?c[l].vs:l}),!0)})}function a(o,c){e.isUndefined(o.barycenter)?(o.barycenter=c.barycenter,o.weight=c.weight):(o.barycenter=(o.barycenter*o.weight+c.barycenter*c.weight)/(o.weight+c.weight),o.weight+=c.weight)}return pc}var vc,d0;function lx(){if(d0)return vc;d0=1;var e=ke(),r=lt().Graph;vc=t;function t(i,s,a){var o=n(i),c=new r({compound:!0}).setGraph({root:o}).setDefaultNodeLabel(function(f){return i.node(f)});return e.forEach(i.nodes(),function(f){var l=i.node(f),p=i.parent(f);(l.rank===s||l.minRank<=s&&s<=l.maxRank)&&(c.setNode(f),c.setParent(f,p||o),e.forEach(i[a](f),function(m){var y=m.v===f?m.w:m.v,x=c.edge(y,f),_=e.isUndefined(x)?0:x.weight;c.setEdge(y,f,{weight:i.edge(m).weight+_})}),e.has(l,"minRank")&&c.setNode(f,{borderLeft:l.borderLeft[s],borderRight:l.borderRight[s]}))}),c}function n(i){for(var s;i.hasNode(s=e.uniqueId("_root")););return s}return vc}var mc,g0;function hx(){if(g0)return mc;g0=1;var e=ke();mc=r;function r(t,n,i){var s={},a;e.forEach(i,function(o){for(var c=t.parent(o),f,l;c;){if(f=t.parent(c),f?(l=s[f],s[f]=c):(l=a,a=c),l&&l!==c){n.setEdge(l,c);return}c=f}})}return mc}var yc,p0;function dx(){if(p0)return yc;p0=1;var e=ke(),r=sx(),t=ox(),n=fx(),i=lx(),s=hx(),a=lt().Graph,o=nt();yc=c;function c(m){var y=o.maxRank(m),x=f(m,e.range(1,y+1),"inEdges"),_=f(m,e.range(y-1,-1,-1),"outEdges"),b=r(m);p(m,b);for(var w=Number.POSITIVE_INFINITY,E,N=0,S=0;S<4;++N,++S){l(N%2?x:_,N%4>=2),b=o.buildLayerMatrix(m);var R=t(m,b);Rz)&&a(N,Y,$)})})}function R(A,j){var I=-1,D,z=0;return e.forEach(j,function($,V){if(w.node($).dummy==="border"){var Y=w.predecessors($);Y.length&&(D=w.node(Y[0]).order,S(j,z,V,I,D),z=V,I=D)}S(j,z,j.length,D,A.length)}),j}return e.reduce(E,R),N}function s(w,E){if(w.node(E).dummy)return e.find(w.predecessors(E),function(N){return w.node(N).dummy})}function a(w,E,N){if(E>N){var S=E;E=N,N=S}var R=w[E];R||(w[E]=R={}),R[N]=!0}function o(w,E,N){if(E>N){var S=E;E=N,N=S}return e.has(w[E],N)}function c(w,E,N,S){var R={},A={},j={};return e.forEach(E,function(I){e.forEach(I,function(D,z){R[D]=D,A[D]=D,j[D]=z})}),e.forEach(E,function(I){var D=-1;e.forEach(I,function(z){var $=S(z);if($.length){$=e.sortBy($,function(ue){return j[ue]});for(var V=($.length-1)/2,Y=Math.floor(V),ee=Math.ceil(V);Y<=ee;++Y){var J=$[Y];A[z]===z&&D({}));const a=t.getAllNodes(),o=t.getAllEdges();[...a,...o].some(({id:f})=>me(f))&&console.error("Dagre layout only support string id, it will convert number to string."),t.getAllNodes().forEach(f=>{const{id:l}=f,p=Object.assign({},f.data);if(i!==void 0){const[m,y]=ar(wt(i)?i(f):i);Object.assign(p,{width:m,height:y})}s.setNode(l.toString(),p)}),t.getAllEdges().forEach(({id:f,source:l,target:p})=>{s.setEdge(l.toString(),p.toString(),{id:f})}),bx.layout(s);const c={nodes:[],edges:[]};return s.nodes().forEach(f=>{const l=s.node(f);c.nodes.push({id:f,data:l}),r&&t.mergeNodeData(f,l)}),s.edges().forEach(f=>{const l=s.edge(f),{id:p}=l,m=Se(l,["id"]),{v:y,w:x}=f;c.edges.push({id:p,source:y,target:x,data:m}),r&&t.mergeEdgeData(p,m)}),c})}}tn.defaultOptions={};class Mc{constructor(r){this.id=r.id||0,this.rx=r.rx,this.ry=r.ry,this.fx=0,this.fy=0,this.mass=r.mass,this.degree=r.degree,this.g=r.g||0}distanceTo(r){const t=this.rx-r.rx,n=this.ry-r.ry;return Math.hypot(t,n)}setPos(r,t){this.rx=r,this.ry=t}resetForce(){this.fx=0,this.fy=0}addForce(r){const t=r.rx-this.rx,n=r.ry-this.ry;let i=Math.hypot(t,n);i=i<1e-4?1e-4:i;const s=this.g*(this.degree+1)*(r.degree+1)/i;this.fx+=s*t/i,this.fy+=s*n/i}in(r){return r.contains(this.rx,this.ry)}add(r){const t=this.mass+r.mass,n=(this.rx*this.mass+r.rx*r.mass)/t,i=(this.ry*this.mass+r.ry*r.mass)/t,s=this.degree+r.degree,a={rx:n,ry:i,mass:t,degree:s};return new Mc(a)}}class er{constructor(r){this.xmid=r.xmid,this.ymid=r.ymid,this.length=r.length,this.massCenter=r.massCenter||[0,0],this.mass=r.mass||1}getLength(){return this.length}contains(r,t){const n=this.length/2;return r<=this.xmid+n&&r>=this.xmid-n&&t<=this.ymid+n&&t>=this.ymid-n}NW(){const r=this.xmid-this.length/4,t=this.ymid+this.length/4,n=this.length/2,i={xmid:r,ymid:t,length:n};return new er(i)}NE(){const r=this.xmid+this.length/4,t=this.ymid+this.length/4,n=this.length/2,i={xmid:r,ymid:t,length:n};return new er(i)}SW(){const r=this.xmid-this.length/4,t=this.ymid-this.length/4,n=this.length/2,i={xmid:r,ymid:t,length:n};return new er(i)}SE(){const r=this.xmid+this.length/4,t=this.ymid-this.length/4,n=this.length/2,i={xmid:r,ymid:t,length:n};return new er(i)}}class tr{constructor(r){this.body=null,this.quad=null,this.NW=null,this.NE=null,this.SW=null,this.SE=null,this.theta=.5,r!=null&&(this.quad=r)}insert(r){if(this.body==null){this.body=r;return}this._isExternal()?(this.quad&&(this.NW=new tr(this.quad.NW()),this.NE=new tr(this.quad.NE()),this.SW=new tr(this.quad.SW()),this.SE=new tr(this.quad.SE())),this._putBody(this.body),this._putBody(r),this.body=this.body.add(r)):(this.body=this.body.add(r),this._putBody(r))}_putBody(r){this.quad&&(r.in(this.quad.NW())&&this.NW?this.NW.insert(r):r.in(this.quad.NE())&&this.NE?this.NE.insert(r):r.in(this.quad.SW())&&this.SW?this.SW.insert(r):r.in(this.quad.SE())&&this.SE&&this.SE.insert(r))}_isExternal(){return this.NW==null&&this.NE==null&&this.SW==null&&this.SE==null}updateForce(r){if(!(this.body==null||r===this.body))if(this._isExternal())r.addForce(this.body);else{const t=this.quad?this.quad.getLength():0,n=this.body.distanceTo(r);t/nit(w,[o,c])),x=i.filter(w=>{const{source:E,target:N}=w;return E!==N}),_=new Be({nodes:y,edges:x}),b=this.getSizes(_,p);if(this.run(_,t,l,b,r,a),f){for(let E=0;E250&&(n.barnesHut=!0),c===void 0&&t>100&&(n.prune=!0),f===0&&!c?(n.maxIteration=250,t<=200&&t>100?n.maxIteration=1e3:t>200&&(n.maxIteration=1200)):f===0&&c&&(n.maxIteration=100,t<=200&&t>100?n.maxIteration=500:t>200&&(n.maxIteration=950)),l||(n.kr=50,t>100&&t<=500?n.kr=20:t>500&&(n.kr=1)),p||(n.kg=20,t>100&&t<=500?n.kg=10:t>500&&(n.kg=1)),n}run(r,t,n,i,s,a){const{kr:o,barnesHut:c,onTick:f}=a,l=r.getAllNodes();let p=0,m=n;const y={},x={},_={};for(let b=0;b0;)p=this.oneStep(r,{iter:m,preventOverlapIters:50,krPrime:100,sg:p,forces:y,preForces:x,bodies:_,sizes:i},a),m--,f==null||f({nodes:l,edges:t.getAllEdges()});return r}oneStep(r,t,n){const{iter:i,preventOverlapIters:s,krPrime:a,sg:o,preForces:c,bodies:f,sizes:l}=t;let{forces:p}=t;const{preventOverlap:m,barnesHut:y}=n,x=r.getAllNodes();for(let _=0;_s||!m)?p=this.getOptRepGraForces(r,p,f,n):p=this.getRepGraForces(r,i,s,p,a,l,n),this.updatePos(r,p,c,o,n)}getAttrForces(r,t,n,i,s,a){const{preventOverlap:o,dissuadeHubs:c,mode:f,prune:l}=a,p=r.getAllEdges();for(let m=0;m0&&(R=S,A=S),s[y][0]+=R*N[0],s[x][0]-=A*N[0],s[y][1]+=R*N[1],s[x][1]-=A*N[1]}return s}getOptRepGraForces(r,t,n,i){const{kg:s,center:a,prune:o}=i,c=r.getAllNodes(),f=c.length;let l=9e10,p=-9e10,m=9e10,y=-9e10;for(let E=0;E=p&&(p=S.x),S.x<=l&&(l=S.x),S.y>=y&&(y=S.y),S.y<=m&&(m=S.y))}const x=Math.max(p-l,y-m),_={xmid:(p+l)/2,ymid:(y+m)/2,length:x,massCenter:a,mass:f},b=new er(_),w=new tr(b);for(let E=0;E0&&(z=f*(w+1)*(j+1)/D),i[b.id][0]-=z*I[0],i[A.id][0]+=z*I[0],i[b.id][1]-=z*I[1],i[A.id][1]+=z*I[1]}const E=[b.data.x-p[0],b.data.y-p[1]],N=Math.hypot(E[0],E[1]);E[0]=E[0]/N,E[1]=E[1]/N;const S=l*(w+1);i[b.id][0]-=S*E[0],i[b.id][1]-=S*E[1]}return i}updatePos(r,t,n,i,s){const{ks:a,tao:o,prune:c,ksmax:f}=s,l=r.getAllNodes(),p=l.length,m=[],y=[];let x=0,_=0,b=i;for(let E=0;E1.5*w?1.5*w:b);for(let E=0;EI?I:A;const D=A*t[N][0],z=A*t[N][1];r.mergeNodeData(N,{x:S.x+D,y:S.y+z})}return b}}const xx={maxIteration:1e3,gravity:10,speed:5,clustering:!1,clusterGravity:10,width:300,height:300,nodeClusterBy:"cluster"},Nx=800;class Mx{constructor(r={}){this.options=r,this.id="fruchterman",this.timeInterval=0,this.running=!1,this.options=Object.assign(Object.assign({},xx),r)}execute(r,t){return se(this,void 0,void 0,function*(){return this.genericFruchtermanLayout(!1,r,t)})}assign(r,t){return se(this,void 0,void 0,function*(){yield this.genericFruchtermanLayout(!0,r,t)})}stop(){this.timeInterval&&typeof window!="undefined"&&window.clearInterval(this.timeInterval),this.running=!1}tick(r=this.options.maxIteration||1){if(this.lastResult)return this.lastResult;for(let n=0;nthis.lastGraph.mergeNodeData(n.id,{x:n.data.x,y:n.data.y,z:this.options.dimensions===3?n.data.z:void 0})),t}genericFruchtermanLayout(r,t,n){return se(this,void 0,void 0,function*(){if(this.running)return;const i=this.formatOptions(n),{dimensions:s,width:a,height:o,center:c,clustering:f,nodeClusterBy:l,maxIteration:p,onTick:m}=i,y=t.getAllNodes(),x=t.getAllEdges();if(!(y!=null&&y.length)){const N={nodes:[],edges:x};return this.lastResult=N,N}if(y.length===1){r&&t.mergeNodeData(y[0].id,{x:c[0],y:c[1],z:s===3?c[2]:void 0});const N={nodes:[Object.assign(Object.assign({},y[0]),{data:Object.assign(Object.assign({},y[0].data),{x:c[0],y:c[1],z:s===3?c[2]:void 0})})],edges:x};return this.lastResult=N,N}const _=y.map(N=>it(N,[a,o])),b=new Be({nodes:_,edges:x}),w={};if(f&&_.forEach(N=>{const S=N.data[l];w[S]||(w[S]={name:S,cx:0,cy:0,count:0})}),this.lastLayoutNodes=_,this.lastLayoutEdges=x,this.lastAssign=r,this.lastGraph=b,this.lastOptions=i,this.lastClusterMap=w,typeof window=="undefined")return;let E=0;return new Promise(N=>{this.timeInterval=window.setInterval(()=>{if(!this.running){N({nodes:_,edges:x});return}this.runOneStep(b,w,i),r&&_.forEach(({id:S,data:R})=>t.mergeNodeData(S,{x:R.x,y:R.y,z:s===3?R.z:void 0})),m==null||m({nodes:_,edges:x}),E++,E>=p&&(window.clearInterval(this.timeInterval),N({nodes:_,edges:x}))},0),this.running=!0})})}formatOptions(r={}){const t=Object.assign(Object.assign({},this.options),r),{clustering:n,nodeClusterBy:i}=t,{center:s,width:a,height:o}=t;return t.width=!a&&typeof window!="undefined"?window.innerWidth:a,t.height=!o&&typeof window!="undefined"?window.innerHeight:o,t.center=s||[t.width/2,t.height/2],t.clustering=n&&!!i,t}runOneStep(r,t,n){const{dimensions:i,height:s,width:a,gravity:o,center:c,speed:f,clustering:l,nodeClusterBy:p,clusterGravity:m}=n,y=s*a,x=Math.sqrt(y)/10,_=r.getAllNodes(),b=y/(_.length+1),w=Math.sqrt(b),E={};if(this.applyCalculate(r,E,w,b),l){for(const S in t)t[S].cx=0,t[S].cy=0,t[S].count=0;_.forEach(S=>{const{data:R}=S,A=t[R[p]];me(R.x)&&(A.cx+=R.x),me(R.y)&&(A.cy+=R.y),A.count++});for(const S in t)t[S].cx/=t[S].count,t[S].cy/=t[S].count;const N=m||o;_.forEach((S,R)=>{const{id:A,data:j}=S;if(!me(j.x)||!me(j.y))return;const I=t[j[p]],D=Math.sqrt((j.x-I.cx)*(j.x-I.cx)+(j.y-I.cy)*(j.y-I.cy)),z=w*N;E[A].x-=z*(j.x-I.cx)/D,E[A].y-=z*(j.y-I.cy)/D})}_.forEach((N,S)=>{const{id:R,data:A}=N;if(!me(A.x)||!me(A.y))return;const j=.01*w*o;E[R].x-=j*(A.x-c[0]),E[R].y-=j*(A.y-c[1]),i===3&&(E[R].z-=j*(A.z-c[2]))}),_.forEach((N,S)=>{const{id:R,data:A}=N;if(me(A.fx)&&me(A.fy)){A.x=A.fx,A.y=A.fy,i===3&&(A.z=A.fz);return}if(!me(A.x)||!me(A.y))return;const j=Math.sqrt(E[R].x*E[R].x+E[R].y*E[R].y+(i===3?E[R].z*E[R].z:0));if(j>0){const I=Math.min(x*(f/Nx),j);r.mergeNodeData(R,{x:A.x+E[R].x/j*I,y:A.y+E[R].y/j*I,z:i===3?A.z+E[R].z/j*I:void 0})}})}applyCalculate(r,t,n,i){this.calRepulsive(r,t,i),this.calAttractive(r,t,n)}calRepulsive(r,t,n){const i=r.getAllNodes();i.forEach(({data:s,id:a},o)=>{t[a]={x:0,y:0,z:0},i.forEach(({data:c,id:f},l)=>{if(o<=l||!me(s.x)||!me(c.x)||!me(s.y)||!me(c.y))return;let p=s.x-c.x,m=s.y-c.y,y=this.options.dimensions===3?s.z-c.z:0,x=p*p+m*m+y*y;x===0&&(x=1,p=.01,m=.01,y=.01);const _=n/x,b=p*_,w=m*_,E=y*_;t[a].x+=b,t[a].y+=w,t[f].x-=b,t[f].y-=w,this.options.dimensions===3&&(t[a].z+=E,t[f].z-=E)})})}calAttractive(r,t,n){r.getAllEdges().forEach(s=>{const{source:a,target:o}=s;if(!a||!o||a===o)return;const{data:c}=r.getNode(a),{data:f}=r.getNode(o);if(!me(f.x)||!me(c.x)||!me(f.y)||!me(c.y))return;const l=f.x-c.x,p=f.y-c.y,m=this.options.dimensions===3?f.z-c.z:0,y=Math.sqrt(l*l+p*p+m*m)/n,x=l*y,_=p*y,b=m*y;t[a].x+=x,t[a].y+=_,t[o].x-=x,t[o].y-=_,this.options.dimensions===3&&(t[a].z+=b,t[o].z-=b)})}}const Sx={begin:[0,0],preventOverlap:!0,preventOverlapPadding:10,condense:!1,rows:void 0,cols:void 0,position:void 0,sortBy:"degree",nodeSize:30,width:300,height:300};class qx{constructor(r={}){this.options=r,this.id="grid",this.options=Object.assign(Object.assign({},Sx),r)}execute(r,t){return se(this,void 0,void 0,function*(){return this.genericGridLayout(!1,r,t)})}assign(r,t){return se(this,void 0,void 0,function*(){yield this.genericGridLayout(!0,r,t)})}genericGridLayout(r,t,n){return se(this,void 0,void 0,function*(){const i=Object.assign(Object.assign({},this.options),n),{begin:s=[0,0],condense:a,preventOverlapPadding:o,preventOverlap:c,rows:f,cols:l,nodeSpacing:p,nodeSize:m,width:y,height:x,position:_}=i;let{sortBy:b}=i;const w=t.getAllNodes(),E=t.getAllEdges(),N=w==null?void 0:w.length;if(!N||N===1)return Lt(t,r,s);const S=w.map(J=>it(J));b!=="id"&&(!sr(b)||S[0].data[b]===void 0)&&(b="degree"),b==="degree"?S.sort((J,ue)=>t.getDegree(ue.id,"both")-t.getDegree(J.id,"both")):b==="id"?S.sort((J,ue)=>me(ue.id)&&me(J.id)?ue.id-J.id:`${J.id}`.localeCompare(`${ue.id}`)):S.sort((J,ue)=>ue.data[b]-J.data[b]);const R=!y&&typeof window!="undefined"?window.innerWidth:y,A=!x&&typeof window!="undefined"?window.innerHeight:x,j=N,I={rows:f,cols:l};if(f!=null&&l!=null)I.rows=f,I.cols=l;else if(f!=null&&l==null)I.rows=f,I.cols=Math.ceil(j/I.rows);else if(f==null&&l!=null)I.cols=l,I.rows=Math.ceil(j/I.cols);else{const J=Math.sqrt(j*A/R);I.rows=Math.round(J),I.cols=Math.round(R/A*J)}if(I.rows=Math.max(I.rows,1),I.cols=Math.max(I.cols,1),I.cols*I.rows>j){const J=rn(I),ue=nn(I);(J-1)*ue>=j?rn(I,J-1):(ue-1)*J>=j&&nn(I,ue-1)}else for(;I.cols*I.rows=j?nn(I,ue+1):rn(I,J+1)}let D=a?0:R/I.cols,z=a?0:A/I.rows;if(c||p){const J=Pt(10,p),ue=Rn(30,m,!1);S.forEach(be=>{(!be.data.x||!be.data.y)&&(be.data.x=0,be.data.y=0);const Z=t.getNode(be.id),[ce,pe]=ar(ue(Z)||30),he=J!==void 0?J(be):o,ie=ce+he,_e=pe+he;D=Math.max(D,ie),z=Math.max(z,_e)})}const $={},V={row:0,col:0},Y={};for(let J=0;J{t.mergeNodeData(J.id,{x:J.data.x,y:J.data.y})}),ee})}}const rn=(e,r)=>{let t;const n=e.rows||5,i=e.cols||5;return r==null?t=Math.min(n,i):Math.min(n,i)===e.rows?e.rows=r:e.cols=r,t},nn=(e,r)=>{let t;const n=e.rows||5,i=e.cols||5;return r==null?t=Math.max(n,i):Math.max(n,i)===e.rows?e.rows=r:e.cols=r,t},Sc=(e,r)=>e[`c-${r.row}-${r.col}`]||!1,x0=(e,r)=>e[`c-${r.row}-${r.col}`]=!0,N0=(e,r)=>{const t=e.cols||5;r.col++,r.col>=t&&(r.col=0,r.row++)},Rx=(e,r,t,n,i,s,a,o)=>{let c,f;const l=i[e.id];if(l)c=l.col*t+t/2+r[0],f=l.row*n+n/2+r[1];else{for(;Sc(o,a);)N0(s,a);c=a.col*t+t/2+r[0],f=a.row*n+n/2+r[1],x0(o,a),N0(s,a)}e.data.x=c,e.data.y=f},Ox=(e,r,t)=>{try{const n=It.mul(It.pow(r,2),-.5),i=n.mean("row"),s=n.mean("column"),a=n.mean();n.add(a).subRowVector(i).subColumnVector(s);const o=new Lf(n),c=It.sqrt(o.diagonalMatrix).diagonal();return o.leftSingularVectors.toJSON().map(f=>It.mul([f],[c]).toJSON()[0].splice(0,e))}catch(n){const i=[];for(let s=0;s{const t=Object.assign(Object.assign({},Ix),r),{positions:n,iterations:i,width:s,k:a,speed:o=100,strictRadial:c,focusIdx:f,radii:l=[],nodeSizeFunc:p}=t,m=e.getAllNodes(),y=[],x=s/10;for(let _=0;_{y[w]={x:0,y:0}}),kx(m,n,y,a,l,p),jx(n,y,o,c,f,x,s,l);return n},kx=(e,r,t,n,i,s)=>{r.forEach((a,o)=>{t[o]={x:0,y:0},r.forEach((c,f)=>{if(o===f||i[o]!==i[f])return;let l=a.x-c.x,p=a.y-c.y,m=Math.sqrt(l*l+p*p);if(m===0){m=1;const y=o>f?1:-1;l=.01*y,p=.01*y}if(m{const c=s||a/10;return n&&r.forEach((f,l)=>{const p=e[l].x-e[i].x,m=e[l].y-e[i].y,y=Math.sqrt(p*p+m*m);let x=m/y,_=-p/y;const b=Math.sqrt(f.x*f.x+f.y*f.y);let w=Math.acos((x*f.x+_*f.y)/b);w>Math.PI/2&&(w-=Math.PI/2,x*=-1,_*=-1);const E=Math.cos(w)*b;f.x=x*E,f.y=_*E}),e.forEach((f,l)=>{if(l===i)return;const p=Math.sqrt(r[l].x*r[l].x+r[l].y*r[l].y);if(p>0&&l!==i){const m=Math.min(c*(t/Ax),p);if(f.x+=r[l].x/p*m,f.y+=r[l].y/p*m,n){let y=f.x-e[i].x,x=f.y-e[i].y;const _=Math.sqrt(y*y+x*x);y=y/_*o[l],x=x/_*o[l],f.x=e[i].x+y,f.y=e[i].y+x}}}),e},Cx={maxIteration:1e3,focusNode:null,unitRadius:null,linkDistance:50,preventOverlap:!1,strictRadial:!0,maxPreventOverlapIteration:200,sortStrength:10};class Px{constructor(r={}){this.options=r,this.id="radial",this.options=Object.assign(Object.assign({},Cx),r)}execute(r,t){return se(this,void 0,void 0,function*(){return this.genericRadialLayout(!1,r,t)})}assign(r,t){return se(this,void 0,void 0,function*(){yield this.genericRadialLayout(!0,r,t)})}genericRadialLayout(r,t,n){return se(this,void 0,void 0,function*(){const i=Object.assign(Object.assign({},this.options),n),{width:s,height:a,center:o,focusNode:c,unitRadius:f,nodeSize:l,nodeSpacing:p,strictRadial:m,preventOverlap:y,maxPreventOverlapIteration:x,sortBy:_,linkDistance:b=50,sortStrength:w=10,maxIteration:E=1e3}=i,N=t.getAllNodes(),S=t.getAllEdges(),R=!s&&typeof window!="undefined"?window.innerWidth:s,A=!a&&typeof window!="undefined"?window.innerHeight:a,j=o||[R/2,A/2];if(!(N!=null&&N.length)||N.length===1)return Lt(t,r,j);let I=N[0];if(sr(c)){for(let te=0;tej[0]?j[0]:R-j[0],J=A-j[1]>j[1]?j[1]:A-j[1];ee===0&&(ee=R/2),J===0&&(J=A/2);const ue=Math.min(ee,J),be=Math.max(...Y),Z=[],ce=f||ue/be;Y.forEach((te,le)=>{Z[le]=te*ce});const pe=Lx(N,$,b,Z,ce,_,w),he=Dx(pe),ie=Ox(b,pe,b);let _e=ie.map(([te,le])=>({x:(isNaN(te)?Math.random()*b:te)-ie[D][0],y:(isNaN(le)?Math.random()*b:le)-ie[D][1]}));this.run(E,_e,he,pe,Z,D);let G;if(y){G=On(l,p);const te={nodes:N,nodeSizeFunc:G,positions:_e,radii:Z,height:A,width:R,strictRadial:!!m,focusIdx:D,iterations:x||200,k:_e.length/4.5};_e=Tx(t,te)}const P=[];return _e.forEach((te,le)=>{const xe=it(N[le]);xe.data.x=te.x+j[0],xe.data.y=te.y+j[1],P.push(xe)}),r&&P.forEach(te=>t.mergeNodeData(te.id,{x:te.data.x,y:te.data.y})),{nodes:P,edges:S}})}run(r,t,n,i,s,a){for(let o=0;o<=r;o++){const c=o/r;this.oneIteration(c,t,s,i,n,a)}}oneIteration(r,t,n,i,s,a){const o=1-r;t.forEach((c,f)=>{const l=Nf(c,{x:0,y:0}),p=l===0?0:1/l;if(f===a)return;let m=0,y=0,x=0;t.forEach((b,w)=>{if(f===w)return;const E=Nf(c,b),N=E===0?0:1/E,S=i[w][f];x+=s[f][w],m+=s[f][w]*(b.x+S*(c.x-b.x)*N),y+=s[f][w]*(b.y+S*(c.y-b.y)*N)});const _=n[f]===0?0:1/n[f];x*=o,x+=r*_*_,m*=o,m+=r*_*c.x*p,c.x=m/x,y*=o,y+=r*_*c.y*p,c.y=y/x})}}const Lx=(e,r,t,n,i,s,a)=>{if(!e)return[];const o=[];if(r){const c={};r.forEach((f,l)=>{const p=[];f.forEach((m,y)=>{var x,_;if(l===y)p.push(0);else if(n[l]===n[y])if(s==="data")p.push(m*(Math.abs(l-y)*a)/(n[l]/i));else if(s){let b,w;if(c[e[l].id])b=c[e[l].id];else{const E=(s==="id"?e[l].id:(x=e[l].data)===null||x===void 0?void 0:x[s])||0;sr(E)?b=E.charCodeAt(0):b=E,c[e[l].id]=b}if(c[e[y].id])w=c[e[y].id];else{const E=(s==="id"?e[y].id:(_=e[y].data)===null||_===void 0?void 0:_[s])||0;sr(E)?w=E.charCodeAt(0):w=E,c[e[y].id]=w}p.push(m*(Math.abs(b-w)*a)/(n[l]/i))}else p.push(m*t/(n[l]/i));else{const b=(t+i)/2;p.push(m*b)}}),o.push(p)})}return o},Dx=e=>{const r=e.length,t=e[0].length,n=[];for(let i=0;i{let t=-1;return e.forEach((n,i)=>{n.id===r&&(t=i)}),Math.max(t,0)},Fx=(e,r,t)=>{const n=e.length;for(let i=0;i{let t=0;for(let n=0;nt?e[r][n]:t);return t},$x={center:[0,0],width:300,height:300};class Gx{constructor(r={}){this.options=r,this.id="random",this.options=Object.assign(Object.assign({},$x),r)}execute(r,t){return se(this,void 0,void 0,function*(){return this.genericRandomLayout(!1,r,t)})}assign(r,t){return se(this,void 0,void 0,function*(){yield this.genericRandomLayout(!0,r,t)})}genericRandomLayout(r,t,n){return se(this,void 0,void 0,function*(){const i=Object.assign(Object.assign({},this.options),n),{center:s,width:a,height:o}=i,c=t.getAllNodes(),f=.9,l=!a&&typeof window!="undefined"?window.innerWidth:a,p=!o&&typeof window!="undefined"?window.innerHeight:o,m=s||[l/2,p/2],y=[];return c&&c.forEach(_=>{y.push({id:_.id,data:{x:(Math.random()-.5)*f*l+m[0],y:(Math.random()-.5)*f*p+m[1]}})}),r&&y.forEach(_=>t.mergeNodeData(_.id,{x:_.data.x,y:_.data.y})),{nodes:y,edges:t.getAllEdges()}})}}const Ux={circular:Wy,concentric:An,mds:Df,random:Gx,grid:qx,radial:Px,force:Af,d3force:Kf,"d3-force-3d":ib,fruchterman:Mx,forceAtlas2:Ex,dagre:tn,antvDagre:Gy,comboCombined:e1};let Nt;pn({stopLayout(){Nt!=null&&Nt.stop&&Nt.stop()},calculateLayout(e,r){return se(this,void 0,void 0,function*(){const{layout:{id:t,options:n,iterations:i},nodes:s,edges:a}=e,o=new Be({nodes:s,edges:a}),c=Ux[t];if(c)Nt=new c(n);else throw new Error(`Unknown layout id: ${t}`);let f=yield Nt.execute(o);return zf(Nt)&&(Nt.stop(),f=Nt.tick(i)),[f,r]})}})})(); diff --git a/fastadmin/static/assets/worker-DRNcaZ-V.js b/fastadmin/static/assets/worker-DRNcaZ-V.js new file mode 100644 index 0000000..9773c3e --- /dev/null +++ b/fastadmin/static/assets/worker-DRNcaZ-V.js @@ -0,0 +1,13 @@ +var iN=Object.defineProperty,sN=Object.defineProperties;var oN=Object.getOwnPropertyDescriptors;var q0=Object.getOwnPropertySymbols;var aN=Object.prototype.hasOwnProperty,uN=Object.prototype.propertyIsEnumerable;var R0=Se=>{throw TypeError(Se)},Ot=Math.pow,Oc=(Se,se,Re)=>se in Se?iN(Se,se,{enumerable:!0,configurable:!0,writable:!0,value:Re}):Se[se]=Re,ir=(Se,se)=>{for(var Re in se||(se={}))aN.call(se,Re)&&Oc(Se,Re,se[Re]);if(q0)for(var Re of q0(se))uN.call(se,Re)&&Oc(Se,Re,se[Re]);return Se},Ac=(Se,se)=>sN(Se,oN(se));var Te=(Se,se,Re)=>Oc(Se,typeof se!="symbol"?se+"":se,Re),Ic=(Se,se,Re)=>se.has(Se)||R0("Cannot "+Re);var gt=(Se,se,Re)=>(Ic(Se,se,"read from private field"),Re?Re.call(Se):se.get(Se)),Tc=(Se,se,Re)=>se.has(Se)?R0("Cannot add the same private member more than once"):se instanceof WeakSet?se.add(Se):se.set(Se,Re),hn=(Se,se,Re,Er)=>(Ic(Se,se,"write to private field"),Er?Er.call(Se,Re):se.set(Se,Re),Re),kc=(Se,se,Re)=>(Ic(Se,se,"access private method"),Re);(function(){"use strict";function Se(e,r){var t={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&r.indexOf(n)<0&&(t[n]=e[n]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(e);i{r.has(a.id)||(r.add(a.id),e.push(a))})}return!1}function xr(e,r,t,n){if(t(e))return!0;r.add(e.id);for(const s of n(e.id))if(!r.has(s.id)&&xr(s,r,t,n))return!0;return!1}const Cc=()=>!0;class O0{constructor(r){Te(this,"graph");Te(this,"nodeFilter");Te(this,"edgeFilter");Te(this,"cacheEnabled");Te(this,"inEdgesMap",new Map);Te(this,"outEdgesMap",new Map);Te(this,"bothEdgesMap",new Map);Te(this,"allNodesMap",new Map);Te(this,"allEdgesMap",new Map);Te(this,"clearCache",()=>{this.inEdgesMap.clear(),this.outEdgesMap.clear(),this.bothEdgesMap.clear(),this.allNodesMap.clear(),this.allEdgesMap.clear()});Te(this,"refreshCache",()=>{this.clearCache(),this.updateCache(this.graph.getAllNodes().map(r=>r.id))});Te(this,"updateCache",r=>{const t=new Set;r.forEach(n=>{const i=this.bothEdgesMap.get(n);if(i&&i.forEach(s=>t.add(s.id)),!this.hasNode(n))this.inEdgesMap.delete(n),this.outEdgesMap.delete(n),this.bothEdgesMap.delete(n),this.allNodesMap.delete(n);else{const s=this.graph.getRelatedEdges(n,"in").filter(this.edgeFilter),a=this.graph.getRelatedEdges(n,"out").filter(this.edgeFilter),o=Array.from(new Set([...s,...a]));o.forEach(c=>t.add(c.id)),this.inEdgesMap.set(n,s),this.outEdgesMap.set(n,a),this.bothEdgesMap.set(n,o),this.allNodesMap.set(n,this.graph.getNode(n))}}),t.forEach(n=>{this.hasEdge(n)?this.allEdgesMap.set(n,this.graph.getEdge(n)):this.allEdgesMap.delete(n)})});Te(this,"handleGraphChanged",r=>{const t=new Set;r.changes.forEach(n=>{switch(n.type){case"NodeAdded":t.add(n.value.id);break;case"NodeDataUpdated":t.add(n.id);break;case"EdgeAdded":t.add(n.value.source),t.add(n.value.target);break;case"EdgeUpdated":(n.propertyName==="source"||n.propertyName==="target")&&(t.add(n.oldValue),t.add(n.newValue));break;case"EdgeDataUpdated":if(r.graph.hasEdge(n.id)){const i=r.graph.getEdge(n.id);t.add(i.source),t.add(i.target)}break;case"EdgeRemoved":t.add(n.value.source),t.add(n.value.target);break;case"NodeRemoved":t.add(n.value.id);break}}),this.updateCache(t)});this.graph=r.graph;const t=r.nodeFilter||Cc,n=r.edgeFilter||Cc;this.nodeFilter=t,this.edgeFilter=i=>{const{source:s,target:a}=this.graph.getEdgeDetail(i.id);return!t(s)||!t(a)?!1:n(i,s,a)},r.cache==="auto"?(this.cacheEnabled=!0,this.startAutoCache()):r.cache==="manual"?this.cacheEnabled=!0:this.cacheEnabled=!1}startAutoCache(){this.refreshCache(),this.graph.on("changed",this.handleGraphChanged)}stopAutoCache(){this.graph.off("changed",this.handleGraphChanged)}checkNodeExistence(r){this.getNode(r)}hasNode(r){if(!this.graph.hasNode(r))return!1;const t=this.graph.getNode(r);return this.nodeFilter(t)}areNeighbors(r,t){return this.checkNodeExistence(r),this.getNeighbors(t).some(n=>n.id===r)}getNode(r){const t=this.graph.getNode(r);if(!this.nodeFilter(t))throw new Error("Node not found for id: "+r);return t}getRelatedEdges(r,t){return this.checkNodeExistence(r),this.cacheEnabled?t==="in"?this.inEdgesMap.get(r):t==="out"?this.outEdgesMap.get(r):this.bothEdgesMap.get(r):this.graph.getRelatedEdges(r,t).filter(this.edgeFilter)}getDegree(r,t){return this.getRelatedEdges(r,t).length}getSuccessors(r){const n=this.getRelatedEdges(r,"out").map(i=>this.getNode(i.target));return Array.from(new Set(n))}getPredecessors(r){const n=this.getRelatedEdges(r,"in").map(i=>this.getNode(i.source));return Array.from(new Set(n))}getNeighbors(r){const t=this.getPredecessors(r),n=this.getSuccessors(r);return Array.from(new Set([...t,...n]))}hasEdge(r){if(!this.graph.hasEdge(r))return!1;const t=this.graph.getEdge(r);return this.edgeFilter(t)}getEdge(r){const t=this.graph.getEdge(r);if(!this.edgeFilter(t))throw new Error("Edge not found for id: "+r);return t}getEdgeDetail(r){const t=this.getEdge(r);return{edge:t,source:this.getNode(t.source),target:this.getNode(t.target)}}hasTreeStructure(r){return this.graph.hasTreeStructure(r)}getRoots(r){return this.graph.getRoots(r).filter(this.nodeFilter)}getChildren(r,t){return this.checkNodeExistence(r),this.graph.getChildren(r,t).filter(this.nodeFilter)}getParent(r,t){this.checkNodeExistence(r);const n=this.graph.getParent(r,t);return!n||!this.nodeFilter(n)?null:n}getAllNodes(){return this.cacheEnabled?Array.from(this.allNodesMap.values()):this.graph.getAllNodes().filter(this.nodeFilter)}getAllEdges(){return this.cacheEnabled?Array.from(this.allEdgesMap.values()):this.graph.getAllEdges().filter(this.edgeFilter)}bfs(r,t,n="out"){const i={in:this.getPredecessors.bind(this),out:this.getSuccessors.bind(this),both:this.getNeighbors.bind(this)}[n];dn([this.getNode(r)],new Set,t,i)}dfs(r,t,n="out"){const i={in:this.getPredecessors.bind(this),out:this.getSuccessors.bind(this),both:this.getNeighbors.bind(this)}[n];xr(this.getNode(r),new Set,t,i)}}class Be extends Er{constructor(t){super();Te(this,"nodeMap",new Map);Te(this,"edgeMap",new Map);Te(this,"inEdgesMap",new Map);Te(this,"outEdgesMap",new Map);Te(this,"bothEdgesMap",new Map);Te(this,"treeIndices",new Map);Te(this,"changes",[]);Te(this,"batchCount",0);Te(this,"onChanged",()=>{});Te(this,"batch",t=>{this.batchCount+=1,t(),this.batchCount-=1,this.batchCount||this.commit()});t&&(t.nodes&&this.addNodes(t.nodes),t.edges&&this.addEdges(t.edges),t.tree&&this.addTree(t.tree),t.onChanged&&(this.onChanged=t.onChanged))}commit(){const t=this.changes;this.changes=[];const n={graph:this,changes:t};this.emit("changed",n),this.onChanged(n)}reduceChanges(t){let n=[];return t.forEach(i=>{switch(i.type){case"NodeRemoved":{let s=!1;n=n.filter(a=>{if(a.type==="NodeAdded"){const o=a.value.id===i.value.id;return o&&(s=!0),!o}else{if(a.type==="NodeDataUpdated")return a.id!==i.value.id;if(a.type==="TreeStructureChanged")return a.nodeId!==i.value.id}return!0}),s||n.push(i);break}case"EdgeRemoved":{let s=!1;n=n.filter(a=>{if(a.type==="EdgeAdded"){const o=a.value.id===i.value.id;return o&&(s=!0),!o}else if(a.type==="EdgeDataUpdated"||a.type==="EdgeUpdated")return a.id!==i.value.id;return!0}),s||n.push(i);break}case"NodeDataUpdated":case"EdgeDataUpdated":case"EdgeUpdated":{const s=n.findIndex(o=>o.type===i.type&&o.id===i.id&&(i.propertyName===void 0||o.propertyName===i.propertyName)),a=n[s];a?i.propertyName!==void 0?a.newValue=i.newValue:(n.splice(s,1),n.push(i)):n.push(i);break}case"TreeStructureDetached":{n=n.filter(s=>s.type==="TreeStructureAttached"||s.type==="TreeStructureChanged"?s.treeKey!==i.treeKey:!0),n.push(i);break}case"TreeStructureChanged":{const s=n.find(a=>a.type==="TreeStructureChanged"&&a.treeKey===i.treeKey&&a.nodeId===i.nodeId);s?s.newParentId=i.newParentId:n.push(i);break}default:n.push(i);break}}),n}checkNodeExistence(t){this.getNode(t)}hasNode(t){return this.nodeMap.has(t)}areNeighbors(t,n){return this.getNeighbors(n).some(i=>i.id===t)}getNode(t){const n=this.nodeMap.get(t);if(!n)throw new Error("Node not found for id: "+t);return n}getRelatedEdges(t,n){if(this.checkNodeExistence(t),n==="in"){const i=this.inEdgesMap.get(t);return Array.from(i)}else if(n==="out"){const i=this.outEdgesMap.get(t);return Array.from(i)}else{const i=this.bothEdgesMap.get(t);return Array.from(i)}}getDegree(t,n){return this.getRelatedEdges(t,n).length}getSuccessors(t){const i=this.getRelatedEdges(t,"out").map(s=>this.getNode(s.target));return Array.from(new Set(i))}getPredecessors(t){const i=this.getRelatedEdges(t,"in").map(s=>this.getNode(s.source));return Array.from(new Set(i))}getNeighbors(t){const n=this.getPredecessors(t),i=this.getSuccessors(t);return Array.from(new Set([...n,...i]))}doAddNode(t){if(this.hasNode(t.id))throw new Error("Node already exists: "+t.id);this.nodeMap.set(t.id,t),this.inEdgesMap.set(t.id,new Set),this.outEdgesMap.set(t.id,new Set),this.bothEdgesMap.set(t.id,new Set),this.treeIndices.forEach(n=>{n.childrenMap.set(t.id,new Set)}),this.changes.push({type:"NodeAdded",value:t})}addNodes(t){this.batch(()=>{for(const n of t)this.doAddNode(n)})}addNode(t){this.addNodes([t])}doRemoveNode(t){const n=this.getNode(t),i=this.bothEdgesMap.get(t);i==null||i.forEach(s=>this.doRemoveEdge(s.id)),this.nodeMap.delete(t),this.treeIndices.forEach(s=>{var o,c;(o=s.childrenMap.get(t))==null||o.forEach(f=>{s.parentMap.delete(f.id)});const a=s.parentMap.get(t);a&&((c=s.childrenMap.get(a.id))==null||c.delete(n)),s.parentMap.delete(t),s.childrenMap.delete(t)}),this.bothEdgesMap.delete(t),this.inEdgesMap.delete(t),this.outEdgesMap.delete(t),this.changes.push({type:"NodeRemoved",value:n})}removeNodes(t){this.batch(()=>{t.forEach(n=>this.doRemoveNode(n))})}removeNode(t){this.removeNodes([t])}updateNodeDataProperty(t,n,i){const s=this.getNode(t);this.batch(()=>{const a=s.data[n],o=i;s.data[n]=o,this.changes.push({type:"NodeDataUpdated",id:t,propertyName:n,oldValue:a,newValue:o})})}mergeNodeData(t,n){this.batch(()=>{Object.entries(n).forEach(([i,s])=>{this.updateNodeDataProperty(t,i,s)})})}updateNodeData(...t){const n=t[0],i=this.getNode(n);if(typeof t[1]=="string"){this.updateNodeDataProperty(n,t[1],t[2]);return}let s;if(typeof t[1]=="function"){const a=t[1];s=a(i.data)}else typeof t[1]=="object"&&(s=t[1]);this.batch(()=>{const a=i.data,o=s;i.data=s,this.changes.push({type:"NodeDataUpdated",id:n,oldValue:a,newValue:o})})}checkEdgeExistence(t){if(!this.hasEdge(t))throw new Error("Edge not found for id: "+t)}hasEdge(t){return this.edgeMap.has(t)}getEdge(t){return this.checkEdgeExistence(t),this.edgeMap.get(t)}getEdgeDetail(t){const n=this.getEdge(t);return{edge:n,source:this.getNode(n.source),target:this.getNode(n.target)}}doAddEdge(t){if(this.hasEdge(t.id))throw new Error("Edge already exists: "+t.id);this.checkNodeExistence(t.source),this.checkNodeExistence(t.target),this.edgeMap.set(t.id,t);const n=this.inEdgesMap.get(t.target),i=this.outEdgesMap.get(t.source),s=this.bothEdgesMap.get(t.source),a=this.bothEdgesMap.get(t.target);n.add(t),i.add(t),s.add(t),a.add(t),this.changes.push({type:"EdgeAdded",value:t})}addEdges(t){this.batch(()=>{for(const n of t)this.doAddEdge(n)})}addEdge(t){this.addEdges([t])}doRemoveEdge(t){const n=this.getEdge(t),i=this.outEdgesMap.get(n.source),s=this.inEdgesMap.get(n.target),a=this.bothEdgesMap.get(n.source),o=this.bothEdgesMap.get(n.target);i.delete(n),s.delete(n),a.delete(n),o.delete(n),this.edgeMap.delete(t),this.changes.push({type:"EdgeRemoved",value:n})}removeEdges(t){this.batch(()=>{t.forEach(n=>this.doRemoveEdge(n))})}removeEdge(t){this.removeEdges([t])}updateEdgeSource(t,n){const i=this.getEdge(t);this.checkNodeExistence(n);const s=i.source,a=n;this.outEdgesMap.get(s).delete(i),this.bothEdgesMap.get(s).delete(i),this.outEdgesMap.get(a).add(i),this.bothEdgesMap.get(a).add(i),i.source=n,this.batch(()=>{this.changes.push({type:"EdgeUpdated",id:t,propertyName:"source",oldValue:s,newValue:a})})}updateEdgeTarget(t,n){const i=this.getEdge(t);this.checkNodeExistence(n);const s=i.target,a=n;this.inEdgesMap.get(s).delete(i),this.bothEdgesMap.get(s).delete(i),this.inEdgesMap.get(a).add(i),this.bothEdgesMap.get(a).add(i),i.target=n,this.batch(()=>{this.changes.push({type:"EdgeUpdated",id:t,propertyName:"target",oldValue:s,newValue:a})})}updateEdgeDataProperty(t,n,i){const s=this.getEdge(t);this.batch(()=>{const a=s.data[n],o=i;s.data[n]=o,this.changes.push({type:"EdgeDataUpdated",id:t,propertyName:n,oldValue:a,newValue:o})})}updateEdgeData(...t){const n=t[0],i=this.getEdge(n);if(typeof t[1]=="string"){this.updateEdgeDataProperty(n,t[1],t[2]);return}let s;if(typeof t[1]=="function"){const a=t[1];s=a(i.data)}else typeof t[1]=="object"&&(s=t[1]);this.batch(()=>{const a=i.data,o=s;i.data=s,this.changes.push({type:"EdgeDataUpdated",id:n,oldValue:a,newValue:o})})}mergeEdgeData(t,n){this.batch(()=>{Object.entries(n).forEach(([i,s])=>{this.updateEdgeDataProperty(t,i,s)})})}checkTreeExistence(t){if(!this.hasTreeStructure(t))throw new Error("Tree structure not found for treeKey: "+t)}hasTreeStructure(t){return this.treeIndices.has(t)}attachTreeStructure(t){this.treeIndices.has(t)||(this.treeIndices.set(t,{parentMap:new Map,childrenMap:new Map}),this.batch(()=>{this.changes.push({type:"TreeStructureAttached",treeKey:t})}))}detachTreeStructure(t){this.checkTreeExistence(t),this.treeIndices.delete(t),this.batch(()=>{this.changes.push({type:"TreeStructureDetached",treeKey:t})})}addTree(t,n){this.batch(()=>{this.attachTreeStructure(n);const i=[],s=Array.isArray(t)?t:[t];for(;s.length;){const a=s.shift();i.push(a),a.children&&s.push(...a.children)}this.addNodes(i),i.forEach(a=>{var o;(o=a.children)==null||o.forEach(c=>{this.setParent(c.id,a.id,n)})})})}getRoots(t){return this.checkTreeExistence(t),this.getAllNodes().filter(n=>!this.getParent(n.id,t))}getChildren(t,n){this.checkNodeExistence(t),this.checkTreeExistence(n);const s=this.treeIndices.get(n).childrenMap.get(t);return Array.from(s||[])}getParent(t,n){return this.checkNodeExistence(t),this.checkTreeExistence(n),this.treeIndices.get(n).parentMap.get(t)||null}getAncestors(t,n){const i=[];let s=this.getNode(t),a;for(;a=this.getParent(s.id,n);)i.push(a),s=a;return i}setParent(t,n,i){var l,p;this.checkTreeExistence(i);const s=this.treeIndices.get(i);if(!s)return;const a=this.getNode(t),o=s.parentMap.get(t);if((o==null?void 0:o.id)===n)return;if(n==null){o&&((l=s.childrenMap.get(o.id))==null||l.delete(a)),s.parentMap.delete(t);return}const c=this.getNode(n);s.parentMap.set(t,c),o&&((p=s.childrenMap.get(o.id))==null||p.delete(a));let f=s.childrenMap.get(c.id);f||(f=new Set,s.childrenMap.set(c.id,f)),f.add(a),this.batch(()=>{this.changes.push({type:"TreeStructureChanged",treeKey:i,nodeId:t,oldParentId:o==null?void 0:o.id,newParentId:c.id})})}dfsTree(t,n,i){const s=a=>this.getChildren(a,i);return xr(this.getNode(t),new Set,n,s)}bfsTree(t,n,i){const s=a=>this.getChildren(a,i);return dn([this.getNode(t)],new Set,n,s)}getAllNodes(){return Array.from(this.nodeMap.values())}getAllEdges(){return Array.from(this.edgeMap.values())}bfs(t,n,i="out"){const s={in:this.getPredecessors.bind(this),out:this.getSuccessors.bind(this),both:this.getNeighbors.bind(this)}[i];return dn([this.getNode(t)],new Set,n,s)}dfs(t,n,i="out"){const s={in:this.getPredecessors.bind(this),out:this.getSuccessors.bind(this),both:this.getNeighbors.bind(this)}[i];return xr(this.getNode(t),new Set,n,s)}clone(){const t=this.getAllNodes().map(s=>Ac(ir({},s),{data:ir({},s.data)})),n=this.getAllEdges().map(s=>Ac(ir({},s),{data:ir({},s.data)})),i=new Be({nodes:t,edges:n});return this.treeIndices.forEach(({parentMap:s,childrenMap:a},o)=>{const c=new Map;s.forEach((l,p)=>{c.set(p,i.getNode(l.id))});const f=new Map;a.forEach((l,p)=>{f.set(p,new Set(Array.from(l).map(m=>i.getNode(m.id))))}),i.treeIndices.set(o,{parentMap:c,childrenMap:f})}),i}toJSON(){return JSON.stringify({nodes:this.getAllNodes(),edges:this.getAllEdges()})}createView(t){return new O0(ir({graph:this},t))}}/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */const Pc=Symbol("Comlink.proxy"),A0=Symbol("Comlink.endpoint"),I0=Symbol("Comlink.releaseProxy"),gn=Symbol("Comlink.finalizer"),Nr=Symbol("Comlink.thrown"),Lc=e=>typeof e=="object"&&e!==null||typeof e=="function",T0={canHandle:e=>Lc(e)&&e[Pc],serialize(e){const{port1:r,port2:t}=new MessageChannel;return pn(e,r),[t,[t]]},deserialize(e){return e.start(),P0(e)}},k0={canHandle:e=>Lc(e)&&Nr in e,serialize({value:e}){let r;return e instanceof Error?r={isError:!0,value:{message:e.message,name:e.name,stack:e.stack}}:r={isError:!1,value:e},[r,[]]},deserialize(e){throw e.isError?Object.assign(new Error(e.value.message),e.value):e.value}},Dc=new Map([["proxy",T0],["throw",k0]]);function j0(e,r){for(const t of e)if(r===t||t==="*"||t instanceof RegExp&&t.test(r))return!0;return!1}function pn(e,r=globalThis,t=["*"]){r.addEventListener("message",function n(i){if(!i||!i.data)return;if(!j0(t,i.origin)){console.warn(`Invalid origin '${i.origin}' for comlink proxy`);return}const{id:s,type:a,path:o}=Object.assign({path:[]},i.data),c=(i.data.argumentList||[]).map(Ct);let f;try{const l=o.slice(0,-1).reduce((m,y)=>m[y],e),p=o.reduce((m,y)=>m[y],e);switch(a){case"GET":f=p;break;case"SET":l[o.slice(-1)[0]]=Ct(i.data.value),f=!0;break;case"APPLY":f=p.apply(l,c);break;case"CONSTRUCT":{const m=new p(...c);f=B0(m)}break;case"ENDPOINT":{const{port1:m,port2:y}=new MessageChannel;pn(e,y),f=F0(m,[m])}break;case"RELEASE":f=void 0;break;default:return}}catch(l){f={value:l,[Nr]:0}}Promise.resolve(f).catch(l=>({value:l,[Nr]:0})).then(l=>{const[p,m]=Rr(l);r.postMessage(Object.assign(Object.assign({},p),{id:s}),m),a==="RELEASE"&&(r.removeEventListener("message",n),zc(r),gn in e&&typeof e[gn]=="function"&&e[gn]())}).catch(l=>{const[p,m]=Rr({value:new TypeError("Unserializable return value"),[Nr]:0});r.postMessage(Object.assign(Object.assign({},p),{id:s}),m)})}),r.start&&r.start()}function C0(e){return e.constructor.name==="MessagePort"}function zc(e){C0(e)&&e.close()}function P0(e,r){const t=new Map;return e.addEventListener("message",function(i){const{data:s}=i;if(!s||!s.id)return;const a=t.get(s.id);if(a)try{a(s)}finally{t.delete(s.id)}}),vn(e,t,[],r)}function Mr(e){if(e)throw new Error("Proxy has been released and is not useable")}function Fc(e){return Ut(e,new Map,{type:"RELEASE"}).then(()=>{zc(e)})}const Sr=new WeakMap,qr="FinalizationRegistry"in globalThis&&new FinalizationRegistry(e=>{const r=(Sr.get(e)||0)-1;Sr.set(e,r),r===0&&Fc(e)});function L0(e,r){const t=(Sr.get(r)||0)+1;Sr.set(r,t),qr&&qr.register(e,r,e)}function D0(e){qr&&qr.unregister(e)}function vn(e,r,t=[],n=function(){}){let i=!1;const s=new Proxy(n,{get(a,o){if(Mr(i),o===I0)return()=>{D0(s),Fc(e),r.clear(),i=!0};if(o==="then"){if(t.length===0)return{then:()=>s};const c=Ut(e,r,{type:"GET",path:t.map(f=>f.toString())}).then(Ct);return c.then.bind(c)}return vn(e,r,[...t,o])},set(a,o,c){Mr(i);const[f,l]=Rr(c);return Ut(e,r,{type:"SET",path:[...t,o].map(p=>p.toString()),value:f},l).then(Ct)},apply(a,o,c){Mr(i);const f=t[t.length-1];if(f===A0)return Ut(e,r,{type:"ENDPOINT"}).then(Ct);if(f==="bind")return vn(e,r,t.slice(0,-1));const[l,p]=Bc(c);return Ut(e,r,{type:"APPLY",path:t.map(m=>m.toString()),argumentList:l},p).then(Ct)},construct(a,o){Mr(i);const[c,f]=Bc(o);return Ut(e,r,{type:"CONSTRUCT",path:t.map(l=>l.toString()),argumentList:c},f).then(Ct)}});return L0(s,e),s}function z0(e){return Array.prototype.concat.apply([],e)}function Bc(e){const r=e.map(Rr);return[r.map(t=>t[0]),z0(r.map(t=>t[1]))]}const $c=new WeakMap;function F0(e,r){return $c.set(e,r),e}function B0(e){return Object.assign(e,{[Pc]:!0})}function Rr(e){for(const[r,t]of Dc)if(t.canHandle(e)){const[n,i]=t.serialize(e);return[{type:"HANDLER",name:r,value:n},i]}return[{type:"RAW",value:e},$c.get(e)||[]]}function Ct(e){switch(e.type){case"HANDLER":return Dc.get(e.name).deserialize(e.value);case"RAW":return e.value}}function Ut(e,r,t,n){return new Promise(i=>{const s=$0();r.set(s,i),e.start&&e.start(),e.postMessage(Object.assign({id:s},t),n)})}function $0(){return new Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join("-")}function wt(e){return typeof e=="function"}function G0(e){return e==null}function mn(e){return Array.isArray(e)}var Vt=function(e){var r=typeof e;return e!==null&&r==="object"||r==="function"};function U0(e,r){if(e){var t;if(mn(e))for(var n=0,i=e.length;n{if(e!=="next"&&e!=="prev")return r},Wc=e=>{e.prev.next=e.next,e.next.prev=e.prev,delete e.next,delete e.prev};let Q0=class{constructor(){const r={};r.prev=r,r.next=r.prev,this.shortcut=r}dequeue(){const r=this.shortcut,t=r.prev;if(t&&t!==r)return Wc(t),t}enqueue(r){const t=this.shortcut;r.prev&&r.next&&Wc(r),r.next=t.next,t.next.prev=r,t.next=r,r.prev=t}toString(){const r=[],t=this.shortcut;let n=t.prev;for(;n!==t;)r.push(JSON.stringify(n,J0)),n=n==null?void 0:n.prev;return`[${r.join(", ")}]`}};class H0 extends Q0{}const em=()=>1,tm=(e,r)=>{var t;if(e.getAllNodes().length<=1)return[];const n=nm(e,r||em);return(t=rm(n.graph,n.buckets,n.zeroIdx).map(s=>e.getRelatedEdges(s.v,"out").filter(({target:a})=>a===s.w)))===null||t===void 0?void 0:t.flat()},rm=(e,r,t)=>{let n=[];const i=r[r.length-1],s=r[0];let a;for(;e.getAllNodes().length;){for(;a=s.dequeue();)wn(e,r,t,a);for(;a=i.dequeue();)wn(e,r,t,a);if(e.getAllNodes().length){for(let o=r.length-2;o>0;--o)if(a=r[o].dequeue(),a){n=n.concat(wn(e,r,t,a,!0));break}}}return n},wn=(e,r,t,n,i)=>{var s,a;const o=[];return e.hasNode(n.v)&&((s=e.getRelatedEdges(n.v,"in"))===null||s===void 0||s.forEach(c=>{const f=c.data.weight,l=e.getNode(c.source);i&&o.push({v:c.source,w:c.target,in:0,out:0}),l.data.out===void 0&&(l.data.out=0),l.data.out-=f,bn(r,t,Object.assign({v:l.id},l.data))}),(a=e.getRelatedEdges(n.v,"out"))===null||a===void 0||a.forEach(c=>{const f=c.data.weight,l=c.target,p=e.getNode(l);p.data.in===void 0&&(p.data.in=0),p.data.in-=f,bn(r,t,Object.assign({v:p.id},p.data))}),e.removeNode(n.v)),i?o:void 0},nm=(e,r)=>{const t=new Be;let n=0,i=0;e.getAllNodes().forEach(c=>{t.addNode({id:c.id,data:{v:c.id,in:0,out:0}})}),e.getAllEdges().forEach(c=>{const f=t.getRelatedEdges(c.source,"out").find(p=>p.target===c.target),l=(r==null?void 0:r(c))||1;f?t.updateEdgeData(f==null?void 0:f.id,Object.assign(Object.assign({},f.data),{weight:f.data.weight+l})):t.addEdge({id:c.id,source:c.source,target:c.target,data:{weight:l}}),i=Math.max(i,t.getNode(c.source).data.out+=l),n=Math.max(n,t.getNode(c.target).data.in+=l)});const s=[],a=i+n+3;for(let c=0;c{bn(s,o,Object.assign({v:c.id},t.getNode(c.id).data))}),{buckets:s,zeroIdx:o,graph:t}},bn=(e,r,t)=>{t.out?t.in?e[t.out-t.in+r].enqueue(t):e[e.length-1].enqueue(t):e[0].enqueue(t)},im=(e,r)=>{const n=tm(e,(i=>s=>s.data.weight||1)());n==null||n.forEach(i=>{const s=i.data;e.removeEdge(i.id),s.forwardName=i.data.name,s.reversed=!0,e.addEdge({id:i.id,source:i.target,target:i.source,data:Object.assign({},s)})})},sm=e=>{e.getAllEdges().forEach(r=>{const t=r.data;if(t.reversed){e.removeEdge(r.id);const n=t.forwardName;delete t.reversed,delete t.forwardName,e.addEdge({id:r.id,source:r.target,target:r.source,data:Object.assign(Object.assign({},t),{forwardName:n})})}})},om=(e,r)=>Number(e)-Number(r),Wt=(e,r,t,n)=>{let i;do i=`${n}${Math.random()}`;while(e.hasNode(i));return t.dummy=r,e.addNode({id:i,data:t}),i},am=e=>{const r=new Be;return e.getAllNodes().forEach(t=>{r.addNode(Object.assign({},t))}),e.getAllEdges().forEach(t=>{const n=r.getRelatedEdges(t.source,"out").find(i=>i.target===t.target);n?r.updateEdgeData(n==null?void 0:n.id,Object.assign(Object.assign({},n.data),{weight:n.data.weight+t.data.weight||0,minlen:Math.max(n.data.minlen,t.data.minlen||1)})):r.addEdge({id:t.id,source:t.source,target:t.target,data:{weight:t.data.weight||0,minlen:t.data.minlen||1}})}),r},Yc=e=>{const r=new Be;return e.getAllNodes().forEach(t=>{e.getChildren(t.id).length||r.addNode(Object.assign({},t))}),e.getAllEdges().forEach(t=>{r.addEdge(t)}),r},um=(e,r)=>e==null?void 0:e.reduce((t,n,i)=>(t[n]=r[i],t),{}),Kc=(e,r)=>{const t=Number(e.x),n=Number(e.y),i=Number(r.x)-t,s=Number(r.y)-n;let a=Number(e.width)/2,o=Number(e.height)/2;if(!i&&!s)return{x:0,y:0};let c,f;return Math.abs(s)*a>Math.abs(i)*o?(s<0&&(o=-o),c=o*i/s,f=o):(i<0&&(a=-a),c=a,f=a*s/i),{x:t+c,y:n+f}},or=e=>{const r=[],t=Zc(e)+1;for(let n=0;n{const i=n.data.rank;i!==void 0&&r[i]&&r[i].push(n.id)});for(let n=0;nom(e.getNode(i).data.order,e.getNode(s).data.order));return r},cm=e=>{const r=e.getAllNodes().filter(n=>n.data.rank!==void 0).map(n=>n.data.rank),t=Math.min(...r);e.getAllNodes().forEach(n=>{n.data.hasOwnProperty("rank")&&t!==1/0&&(n.data.rank-=t)})},fm=(e,r=0)=>{const t=e.getAllNodes(),n=t.filter(o=>o.data.rank!==void 0).map(o=>o.data.rank),i=Math.min(...n),s=[];t.forEach(o=>{const c=(o.data.rank||0)-i;s[c]||(s[c]=[]),s[c].push(o.id)});let a=0;for(let o=0;o{const l=e.getNode(f);l&&(l.data.rank=l.data.rank||0,l.data.rank+=a)}))}},Xc=(e,r,t,n)=>{const i={width:0,height:0};return me(t)&&me(n)&&(i.rank=t,i.order=n),Wt(e,"border",i,r)},Zc=e=>{let r;return e.getAllNodes().forEach(t=>{const n=t.data.rank;n!==void 0&&(r===void 0||n>r)&&(r=n)}),r||(r=0),r},lm=(e,r)=>{const t={lhs:[],rhs:[]};return e==null||e.forEach(n=>{r(n)?t.lhs.push(n):t.rhs.push(n)}),t},_n=(e,r)=>e.reduce((t,n)=>{const i=r(t),s=r(n);return i>s?n:t}),Jc=(e,r,t,n,i,s)=>{n.includes(r.id)||(n.push(r.id),t||s.push(r.id),i(r.id).forEach(a=>Jc(e,a,t,n,i,s)),t&&s.push(r.id))},Qc=(e,r,t,n)=>{const i=Array.isArray(r)?r:[r],s=c=>e.getNeighbors(c),a=[],o=[];return i.forEach(c=>{if(e.hasNode(c.id))Jc(e,c,t==="post",o,s,a);else throw new Error(`Graph does not have node: ${c}`)}),a},hm=e=>{const r=t=>{const n=e.getChildren(t),i=e.getNode(t);if(n!=null&&n.length&&n.forEach(s=>r(s.id)),i.data.hasOwnProperty("minRank")){i.data.borderLeft=[],i.data.borderRight=[];for(let s=i.data.minRank,a=i.data.maxRank+1;sr(t.id))},Hc=(e,r,t,n,i,s)=>{const a={rank:s,borderType:r,width:0,height:0},o=i.data[r][s-1],c=Wt(e,"border",a,t);i.data[r][s]=c,e.setParent(c,n),o&&e.addEdge({id:`e${Math.random()}`,source:o,target:c,data:{weight:1}})},dm=(e,r)=>{const t=r.toLowerCase();(t==="lr"||t==="rl")&&ef(e)},gm=(e,r)=>{const t=r.toLowerCase();(t==="bt"||t==="rl")&&pm(e),(t==="lr"||t==="rl")&&(vm(e),ef(e))},ef=e=>{e.getAllNodes().forEach(r=>{tf(r)}),e.getAllEdges().forEach(r=>{tf(r)})},tf=e=>{const r=e.data.width;e.data.width=e.data.height,e.data.height=r},pm=e=>{e.getAllNodes().forEach(r=>{En(r.data)}),e.getAllEdges().forEach(r=>{var t;(t=r.data.points)===null||t===void 0||t.forEach(n=>En(n)),r.data.hasOwnProperty("y")&&En(r.data)})},En=e=>{e!=null&&e.y&&(e.y=-e.y)},vm=e=>{e.getAllNodes().forEach(r=>{xn(r.data)}),e.getAllEdges().forEach(r=>{var t;(t=r.data.points)===null||t===void 0||t.forEach(n=>xn(n)),r.data.hasOwnProperty("x")&&xn(r.data)})},xn=e=>{const r=e.x;e.x=e.y,e.y=r},mm=e=>{const r=Wt(e,"root",{},"_root"),t=ym(e);let n=Math.max(...Object.values(t));Math.abs(n)===1/0&&(n=1);const i=n-1,s=2*i+1;e.getAllEdges().forEach(o=>{o.data.minlen*=s});const a=wm(e)+1;return e.getRoots().forEach(o=>{rf(e,r,s,a,i,t,o.id)}),{nestingRoot:r,nodeRankFactor:s}},rf=(e,r,t,n,i,s,a)=>{const o=e.getChildren(a);if(!(o!=null&&o.length)){a!==r&&e.addEdge({id:`e${Math.random()}`,source:r,target:a,data:{weight:0,minlen:t}});return}const c=Xc(e,"_bt"),f=Xc(e,"_bb"),l=e.getNode(a);e.setParent(c,a),l.data.borderTop=c,e.setParent(f,a),l.data.borderBottom=f,o==null||o.forEach(p=>{rf(e,r,t,n,i,s,p.id);const m=p.data.borderTop?p.data.borderTop:p.id,y=p.data.borderBottom?p.data.borderBottom:p.id,x=p.data.borderTop?n:2*n,_=m!==y?1:i-s[a]+1;e.addEdge({id:`e${Math.random()}`,source:c,target:m,data:{minlen:_,weight:x,nestingEdge:!0}}),e.addEdge({id:`e${Math.random()}`,source:y,target:f,data:{minlen:_,weight:x,nestingEdge:!0}})}),e.getParent(a)||e.addEdge({id:`e${Math.random()}`,source:r,target:c,data:{weight:0,minlen:i+s[a]}})},ym=e=>{const r={},t=(n,i)=>{const s=e.getChildren(n);s==null||s.forEach(a=>t(a.id,i+1)),r[n]=i};return e.getRoots().forEach(n=>t(n.id,1)),r},wm=e=>{let r=0;return e.getAllEdges().forEach(t=>{r+=t.data.weight}),r},bm=(e,r)=>{r&&e.removeNode(r),e.getAllEdges().forEach(t=>{t.data.nestingEdge&&e.removeEdge(t.id)})},_m="edge",nf="edge-label",Em=(e,r)=>{e.getAllEdges().forEach(t=>xm(e,t,r))},xm=(e,r,t)=>{let n=r.source,i=e.getNode(n).data.rank;const s=r.target,a=e.getNode(s).data.rank,o=r.data.labelRank;if(a===i+1)return;e.removeEdge(r.id);let c,f,l;for(l=0,++i;i{r.forEach(t=>{let n=e.getNode(t);const{data:i}=n,s=i.originalEdge;let a;s&&e.addEdge(s);let o=t;for(;n.data.dummy;)a=e.getSuccessors(o)[0],e.removeNode(o),s.data.points.push({x:n.data.x,y:n.data.y}),n.data.dummy===nf&&(s.data.x=n.data.x,s.data.y=n.data.y,s.data.width=n.data.width,s.data.height=n.data.height),o=a.id,n=e.getNode(o)})},Mm=(e,r,t)=>{const n={};let i;t==null||t.forEach(s=>{let a=e.getParent(s),o,c;for(;a;){if(o=e.getParent(a.id),o?(c=n[o.id],n[o.id]=a.id):(c=i,i=a.id),c&&c!==a.id){r.hasNode(c)||r.addNode({id:c,data:{}}),r.hasNode(a.id)||r.addNode({id:a.id,data:{}}),r.hasEdge(`e${c}-${a.id}`)||r.addEdge({id:`e${c}-${a.id}`,source:c,target:a.id,data:{}});return}a=o}})},Sm=(e,r,t)=>{const n=qm(e),i=new Be({tree:[{id:n,children:[],data:{}}]});return e.getAllNodes().forEach(s=>{const a=e.getParent(s.id);(s.data.rank===r||s.data.minRank<=r&&r<=s.data.maxRank)&&(i.hasNode(s.id)||i.addNode(Object.assign({},s)),a!=null&&a.id&&!i.hasNode(a==null?void 0:a.id)&&i.addNode(Object.assign({},a)),i.setParent(s.id,(a==null?void 0:a.id)||n),e.getRelatedEdges(s.id,t).forEach(o=>{const c=o.source===s.id?o.target:o.source;i.hasNode(c)||i.addNode(Object.assign({},e.getNode(c)));const f=i.getRelatedEdges(c,"out").find(({target:p})=>p===s.id),l=f!==void 0?f.data.weight:0;f?i.updateEdgeData(f.id,Object.assign(Object.assign({},f.data),{weight:o.data.weight+l})):i.addEdge({id:o.id,source:c,target:s.id,data:{weight:o.data.weight+l}})}),s.data.hasOwnProperty("minRank")&&i.updateNodeData(s.id,Object.assign(Object.assign({},s.data),{borderLeft:s.data.borderLeft[r],borderRight:s.data.borderRight[r]})))}),i},qm=e=>{let r;for(;e.hasNode(r=`_root${Math.random()}`););return r},Rm=(e,r,t)=>{const n=um(t,t.map((l,p)=>p)),s=r.map(l=>{const p=e.getRelatedEdges(l,"out").map(m=>({pos:n[m.target]||0,weight:m.data.weight}));return p==null?void 0:p.sort((m,y)=>m.pos-y.pos)}).flat().filter(l=>l!==void 0);let a=1;for(;a{if(l){let p=l.pos+a;c[p]+=l.weight;let m=0;for(;p>0;)p%2&&(m+=c[p+1]),p=p-1>>1,c[p]+=l.weight;f+=l.weight*m}}),f},sf=(e,r)=>{let t=0;for(let n=1;n<(r==null?void 0:r.length);n+=1)t+=Rm(e,r[n-1],r[n]);return t},of=e=>{const r={},t=e.getAllNodes(),n=t.map(f=>{var l;return(l=f.data.rank)!==null&&l!==void 0?l:-1/0}),i=Math.max(...n),s=[];for(let f=0;fe.getNode(f.id).data.rank-e.getNode(l.id).data.rank),c=a.filter(f=>e.getNode(f.id).data.fixorder!==void 0).sort((f,l)=>e.getNode(f.id).data.fixorder-e.getNode(l.id).data.fixorder);return c==null||c.forEach(f=>{isNaN(e.getNode(f.id).data.rank)||s[e.getNode(f.id).data.rank].push(f.id),r[f.id]=!0}),a==null||a.forEach(f=>e.dfsTree(f.id,l=>{if(r.hasOwnProperty(l.id))return!0;r[l.id]=!0,isNaN(l.data.rank)||s[l.data.rank].push(l.id)})),s},Om=(e,r)=>r.map(t=>{const n=e.getRelatedEdges(t,"in");if(!(n!=null&&n.length))return{v:t};const i={sum:0,weight:0};return n==null||n.forEach(s=>{const a=e.getNode(s.source);i.sum+=s.data.weight*a.data.order,i.weight+=s.data.weight}),{v:t,barycenter:i.sum/i.weight,weight:i.weight}}),Am=(e,r)=>{var t,n,i;const s={};e==null||e.forEach((o,c)=>{s[o.v]={i:c,indegree:0,in:[],out:[],vs:[o.v]};const f=s[o.v];o.barycenter!==void 0&&(f.barycenter=o.barycenter,f.weight=o.weight)}),(t=r.getAllEdges())===null||t===void 0||t.forEach(o=>{const c=s[o.source],f=s[o.target];c!==void 0&&f!==void 0&&(f.indegree++,c.out.push(s[o.target]))});const a=(i=(n=Object.values(s)).filter)===null||i===void 0?void 0:i.call(n,o=>!o.indegree);return Im(a)},Im=e=>{var r,t;const n=[],i=c=>f=>{f.merged||(f.barycenter===void 0||c.barycenter===void 0||f.barycenter>=c.barycenter)&&Tm(c,f)},s=c=>f=>{f.in.push(c),--f.indegree===0&&e.push(f)};for(;e!=null&&e.length;){const c=e.pop();n.push(c),(r=c.in.reverse())===null||r===void 0||r.forEach(f=>i(c)(f)),(t=c.out)===null||t===void 0||t.forEach(f=>s(c)(f))}const a=n.filter(c=>!c.merged),o=["vs","i","barycenter","weight"];return a.map(c=>{const f={};return o==null||o.forEach(l=>{c[l]!==void 0&&(f[l]=c[l])}),f})},Tm=(e,r)=>{var t;let n=0,i=0;e.weight&&(n+=e.barycenter*e.weight,i+=e.weight),r.weight&&(n+=r.barycenter*r.weight,i+=r.weight),e.vs=(t=r.vs)===null||t===void 0?void 0:t.concat(e.vs),e.barycenter=n/i,e.weight=i,e.i=Math.min(r.i,e.i),r.merged=!0},km=(e,r,t,n)=>{const i=lm(e,m=>{const y=m.hasOwnProperty("fixorder")&&!isNaN(m.fixorder);return n?!y&&m.hasOwnProperty("barycenter"):y||m.hasOwnProperty("barycenter")}),s=i.lhs,a=i.rhs.sort((m,y)=>-m.i- -y.i),o=[];let c=0,f=0,l=0;s==null||s.sort(jm(!!r,!!t)),l=af(o,a,l),s==null||s.forEach(m=>{var y;l+=(y=m.vs)===null||y===void 0?void 0:y.length,o.push(m.vs),c+=m.barycenter*m.weight,f+=m.weight,l=af(o,a,l)});const p={vs:o.flat()};return f&&(p.barycenter=c/f,p.weight=f),p},af=(e,r,t)=>{let n=t,i;for(;r.length&&(i=r[r.length-1]).i<=n;)r.pop(),e==null||e.push(i.vs),n++;return n},jm=(e,r)=>(t,n)=>{if(t.fixorder!==void 0&&n.fixorder!==void 0)return t.fixorder-n.fixorder;if(t.barycentern.barycenter)return 1;if(r&&t.order!==void 0&&n.order!==void 0){if(t.ordern.order)return 1}return e?n.i-t.i:t.i-n.i},uf=(e,r,t,n,i,s)=>{var a,o,c,f;let l=e.getChildren(r).map(E=>E.id);const p=e.getNode(r),m=p?p.data.borderLeft:void 0,y=p?p.data.borderRight:void 0,x={};m&&(l=l==null?void 0:l.filter(E=>E!==m&&E!==y));const _=Om(e,l||[]);_==null||_.forEach(E=>{var N;if(!((N=e.getChildren(E.v))===null||N===void 0)&&N.length){const S=uf(e,E.v,t,n,s);x[E.v]=S,S.hasOwnProperty("barycenter")&&Pm(E,S)}});const b=Am(_,t);Cm(b,x),(a=b.filter(E=>E.vs.length>0))===null||a===void 0||a.forEach(E=>{const N=e.getNode(E.vs[0]);N&&(E.fixorder=N.data.fixorder,E.order=N.data.order)});const w=km(b,n,i,s);if(m&&(w.vs=[m,w.vs,y].flat(),!((o=e.getPredecessors(m))===null||o===void 0)&&o.length)){const E=e.getNode(((c=e.getPredecessors(m))===null||c===void 0?void 0:c[0].id)||""),N=e.getNode(((f=e.getPredecessors(y))===null||f===void 0?void 0:f[0].id)||"");w.hasOwnProperty("barycenter")||(w.barycenter=0,w.weight=0),w.barycenter=(w.barycenter*w.weight+E.data.order+N.data.order)/(w.weight+2),w.weight+=2}return w},Cm=(e,r)=>{e==null||e.forEach(t=>{var n;const i=(n=t.vs)===null||n===void 0?void 0:n.map(s=>r[s]?r[s].vs:s);t.vs=i.flat()})},Pm=(e,r)=>{e.barycenter!==void 0?(e.barycenter=(e.barycenter*e.weight+r.barycenter*r.weight)/(e.weight+r.weight),e.weight+=r.weight):(e.barycenter=r.barycenter,e.weight=r.weight)},Lm=(e,r)=>{const t=Zc(e),n=[],i=[];for(let l=1;l-1;l--)i.push(l);const s=cf(e,n,"in"),a=cf(e,i,"out");let o=of(e);Nn(e,o);let c=Number.POSITIVE_INFINITY,f;for(let l=0,p=0;p<4;++l,++p){ff(l%2?s:a,l%4>=2,!1,r),o=or(e);const m=sf(e,o);m=2,!0,r),o=or(e);const m=sf(e,o);mr.map(n=>Sm(e,n,t)),ff=(e,r,t,n)=>{const i=new Be;e==null||e.forEach(s=>{var a;const o=s.getRoots()[0].id,c=uf(s,o,i,r,t,n);for(let f=0;f<((a=c.vs)===null||a===void 0?void 0:a.length);f++){const l=s.getNode(c.vs[f]);l&&(l.data.order=f)}Mm(s,i,c.vs)})},Nn=(e,r)=>{r==null||r.forEach(t=>{t==null||t.forEach((n,i)=>{e.getNode(n).data.order=i})})},Dm=(e,r)=>{const n=e.getAllNodes().filter(a=>{var o;return!(!((o=e.getChildren(a.id))===null||o===void 0)&&o.length)}).map(a=>a.data.rank),i=Math.max(...n),s=[];for(let a=0;a{const o=e.getNode(a);!o||o.data.dummy||isNaN(o.data.rank)||(o.data.fixorder=s[o.data.rank].length,s[o.data.rank].push(a))})},zm=e=>{const r={};let t=0;const n=i=>{const s=t;e.getChildren(i).forEach(a=>n(a.id)),r[i]={low:s,lim:t++}};return e.getRoots().forEach(i=>n(i.id)),r},Fm=(e,r,t,n)=>{var i,s;const a=[],o=[],c=Math.min(r[t].low,r[n].low),f=Math.max(r[t].lim,r[n].lim);let l,p;l=t;do l=(i=e.getParent(l))===null||i===void 0?void 0:i.id,a.push(l);while(l&&(r[l].low>c||f>r[l].lim));for(p=l,l=n;l&&l!==p;)o.push(l),l=(s=e.getParent(l))===null||s===void 0?void 0:s.id;return{lca:p,path:a.concat(o.reverse())}},Bm=(e,r)=>{const t=zm(e);r.forEach(n=>{var i,s;let a=n,o=e.getNode(a);const c=o.data.originalEdge;if(!c)return;const f=Fm(e,t,c.source,c.target),l=f.path,p=f.lca;let m=0,y=l[m],x=!0;for(;a!==c.target;){if(o=e.getNode(a),x){for(;y!==p&&((i=e.getNode(y))===null||i===void 0?void 0:i.data.maxRank){const t={},n=(i,s)=>{let a=0,o=0;const c=i.length,f=s==null?void 0:s[(s==null?void 0:s.length)-1];return s==null||s.forEach((l,p)=>{var m;const y=Um(e,l),x=y?e.getNode(y.id).data.order:c;(y||l===f)&&((m=s.slice(o,p+1))===null||m===void 0||m.forEach(_=>{var b;(b=e.getPredecessors(_))===null||b===void 0||b.forEach(w=>{var E;const N=e.getNode(w.id),S=N.data.order;(S{const t={};function n(o,c,f,l,p){var m,y;let x;for(let _=c;_{const w=e.getNode(b.id);w.data.dummy&&(w.data.orderp)&&lf(t,b.id,x)}))}function i(o){return JSON.stringify(o.slice(1))}function s(o,c){const f=i(o);c.get(f)||(n(...o),c.set(f,!0))}const a=(o,c)=>{let f=-1,l,p=0;const m=new Map;return c==null||c.forEach((y,x)=>{var _;if(((_=e.getNode(y))===null||_===void 0?void 0:_.data.dummy)==="border"){const b=e.getPredecessors(y)||[];b.length&&(l=e.getNode(b[0].id).data.order,s([c,p,x,f,l],m),p=x,f=l)}s([c,p,c.length,l,o.length],m)}),c};return r!=null&&r.length&&r.reduce(a),t},Um=(e,r)=>{var t,n;if(!((t=e.getNode(r))===null||t===void 0)&&t.data.dummy)return(n=e.getPredecessors(r))===null||n===void 0?void 0:n.find(i=>e.getNode(i.id).data.dummy)},lf=(e,r,t)=>{let n=r,i=t;if(n>i){const a=n;n=i,i=a}let s=e[n];s||(e[n]=s={}),s[i]=!0},Vm=(e,r,t)=>{let n=r,i=t;if(n>i){const s=r;n=i,i=s}return!!e[n]},Wm=(e,r,t,n)=>{const i={},s={},a={};return r==null||r.forEach(o=>{o==null||o.forEach((c,f)=>{i[c]=c,s[c]=c,a[c]=f})}),r==null||r.forEach(o=>{let c=-1;o==null||o.forEach(f=>{let l=n(f).map(p=>p.id);if(l.length){l=l.sort((m,y)=>a[m]-a[y]);const p=(l.length-1)/2;for(let m=Math.floor(p),y=Math.ceil(p);m<=y;++m){const x=l[m];s[f]===f&&c{var o;const c={},f=Km(e,r,t,i,s,a),l=a?"borderLeft":"borderRight",p=(x,_)=>{let b=f.getAllNodes(),w=b.pop();const E={};for(;w;)E[w.id]?x(w.id):(E[w.id]=!0,b.push(w),b=b.concat(_(w.id))),w=b.pop()},m=x=>{c[x]=(f.getRelatedEdges(x,"in")||[]).reduce((_,b)=>Math.max(_,(c[b.source]||0)+b.data.weight),0)},y=x=>{const _=(f.getRelatedEdges(x,"out")||[]).reduce((w,E)=>Math.min(w,(c[E.target]||0)-E.data.weight),Number.POSITIVE_INFINITY),b=e.getNode(x);_!==Number.POSITIVE_INFINITY&&b.data.borderType!==l&&(c[x]=Math.max(c[x],_))};return p(m,f.getPredecessors.bind(f)),p(y,f.getSuccessors.bind(f)),(o=Object.values(n))===null||o===void 0||o.forEach(x=>{c[x]=c[t[x]]}),c},Km=(e,r,t,n,i,s)=>{const a=new Be,o=Qm(n,i,s);return r==null||r.forEach(c=>{let f;c==null||c.forEach(l=>{const p=t[l];if(a.hasNode(p)||a.addNode({id:p,data:{}}),f){const m=t[f],y=a.getRelatedEdges(m,"out").find(x=>x.target===p);y?a.updateEdgeData(y.id,Object.assign(Object.assign({},y.data),{weight:Math.max(o(e,l,f),y.data.weight||0)})):a.addEdge({id:`e${Math.random()}`,source:m,target:p,data:{weight:Math.max(o(e,l,f),0)}})}f=l})}),a},Xm=(e,r)=>_n(Object.values(r),t=>{var n;let i=Number.NEGATIVE_INFINITY,s=Number.POSITIVE_INFINITY;return(n=Object.keys(t))===null||n===void 0||n.forEach(a=>{const o=t[a],c=Hm(e,a)/2;i=Math.max(o+c,i),s=Math.min(o-c,s)}),i-s});function Zm(e,r){const t=Object.values(r),n=Math.min(...t),i=Math.max(...t);["u","d"].forEach(s=>{["l","r"].forEach(a=>{const o=s+a,c=e[o];let f;if(c===r)return;const l=Object.values(c);f=a==="l"?n-Math.min(...l):i-Math.max(...l),f&&(e[o]={},Object.keys(c).forEach(p=>{e[o][p]=c[p]+f}))})})}const Jm=(e,r)=>{const t={};return Object.keys(e.ul).forEach(n=>{if(r)t[n]=e[r.toLowerCase()][n];else{const i=Object.values(e).map(s=>s[n]);t[n]=(i[0]+i[1])/2}}),t},Qm=(e,r,t)=>(n,i,s)=>{const a=n.getNode(i),o=n.getNode(s);let c=0,f=0;if(c+=a.data.width/2,a.data.hasOwnProperty("labelpos"))switch((a.data.labelpos||"").toLowerCase()){case"l":f=-a.data.width/2;break;case"r":f=a.data.width/2;break}if(f&&(c+=t?f:-f),f=0,c+=(a.data.dummy?r:e)/2,c+=(o.data.dummy?r:e)/2,c+=o.data.width/2,o.data.labelpos)switch((o.data.labelpos||"").toLowerCase()){case"l":f=o.data.width/2;break;case"r":f=-o.data.width/2;break}return f&&(c+=t?f:-f),f=0,c},Hm=(e,r)=>e.getNode(r).data.width||0,ey=(e,r)=>{const{ranksep:t=0}=r||{},n=or(e);let i=0;n==null||n.forEach(s=>{const a=s.map(c=>e.getNode(c).data.height),o=Math.max(...a,0);s==null||s.forEach(c=>{e.getNode(c).data.y=i+o/2}),i+=o+t})},ty=(e,r)=>{const{align:t,nodesep:n=0,edgesep:i=0}=r||{},s=or(e),a=Object.assign($m(e,s),Gm(e,s)),o={};let c=[];["u","d"].forEach(l=>{c=l==="u"?s:Object.values(s).reverse(),["l","r"].forEach(p=>{p==="r"&&(c=c.map(_=>Object.values(_).reverse()));const m=(l==="u"?e.getPredecessors:e.getSuccessors).bind(e),y=Wm(e,c,a,m),x=Ym(e,c,y.root,y.align,n,i,p==="r");p==="r"&&Object.keys(x).forEach(_=>x[_]=-x[_]),o[l+p]=x})});const f=Xm(e,o);return f&&Zm(o,f),Jm(o,t)},ry=(e,r)=>{var t;const n=Yc(e);ey(n,r);const i=ty(n,r);(t=Object.keys(i))===null||t===void 0||t.forEach(s=>{n.getNode(s).data.x=i[s]})},hf=e=>{const r={},t=n=>{var i;const s=e.getNode(n);if(!s)return 0;if(r[n])return s.data.rank;r[n]=!0;let a;return(i=e.getRelatedEdges(n,"out"))===null||i===void 0||i.forEach(o=>{const c=t(o.target),f=o.data.minlen,l=c-f;l&&(a===void 0||le.getRelatedEdges(n.id,"in").length===0).forEach(n=>t(n.id))},ny=e=>{const r={};let t;const n=a=>{var o;const c=e.getNode(a);if(!c)return 0;if(r[a])return c.data.rank;r[a]=!0;let f;return(o=e.getRelatedEdges(a,"out"))===null||o===void 0||o.forEach(l=>{const p=n(l.target),m=l.data.minlen,y=p-m;y&&(f===void 0||ye.getRelatedEdges(a.id,"in").length===0).forEach(a=>{a&&n(a.id)}),t===void 0&&(t=0);const i={},s=(a,o)=>{var c;const f=e.getNode(a),l=isNaN(f.data.layer)?o:f.data.layer;(f.data.rank===void 0||f.data.rank{s(p.target,l+p.data.minlen)}))};e.getAllNodes().forEach(a=>{const o=a.data;o&&(isNaN(o.layer)?o.rank-=t:s(a.id,o.layer))})},At=(e,r)=>e.getNode(r.target).data.rank-e.getNode(r.source).data.rank-r.data.minlen,iy=e=>{const r=new Be({tree:[]}),t=e.getAllNodes()[0],n=e.getAllNodes().length;r.addNode(t);let i,s;for(;sy(r,e){const t=n=>{r.getRelatedEdges(n,"both").forEach(i=>{const s=i.source,a=n===s?i.target:s;!e.hasNode(a)&&!At(r,i)&&(e.addNode({id:a,data:{}}),e.addEdge({id:i.id,source:n,target:a,data:{}}),t(a))})};return e.getAllNodes().forEach(n=>t(n.id)),e.getAllNodes().length},oy=e=>{const r=new Be({tree:[]}),t=e.getAllNodes()[0],n=e.getAllNodes().length;r.addNode(t);let i,s;for(;ay(r,e){const t=n=>{var i;(i=r.getRelatedEdges(n,"both"))===null||i===void 0||i.forEach(s=>{const a=s.source,o=n===a?s.target:a;!e.hasNode(o)&&(r.getNode(o).data.layer!==void 0||!At(r,s))&&(e.addNode({id:o,data:{}}),e.addEdge({id:s.id,source:n,target:o,data:{}}),t(o))})};return e.getAllNodes().forEach(n=>t(n.id)),e.getAllNodes().length},df=(e,r)=>_n(r.getAllEdges(),t=>e.hasNode(t.source)!==e.hasNode(t.target)?At(r,t):1/0),gf=(e,r,t)=>{e.getAllNodes().forEach(n=>{const i=r.getNode(n.id);i.data.rank||(i.data.rank=0),i.data.rank+=t})},uy=e=>{const r=am(e);hf(r);const t=iy(r);vf(t),pf(t,r);let n,i;for(;n=ly(t);)i=hy(t,r,n),dy(t,r,n,i)},pf=(e,r)=>{let t=Qc(e,e.getAllNodes(),"post");t=t.slice(0,(t==null?void 0:t.length)-1),t.forEach(n=>{cy(e,r,n)})},cy=(e,r,t)=>{const i=e.getNode(t).data.parent,s=e.getRelatedEdges(t,"both").find(a=>a.target===i||a.source===i);s.data.cutvalue=fy(e,r,t)},fy=(e,r,t)=>{const i=e.getNode(t).data.parent;let s=!0,a=r.getRelatedEdges(t,"out").find(c=>c.target===i),o=0;return a||(s=!1,a=r.getRelatedEdges(i,"out").find(c=>c.target===t)),o=a.data.weight,r.getRelatedEdges(t,"both").forEach(c=>{const f=c.source===t,l=f?c.target:c.source;if(l!==i){const p=f===s,m=c.data.weight;if(o+=p?m:-m,py(e,t,l)){const y=e.getRelatedEdges(t,"both").find(x=>x.source===l||x.target===l).data.cutvalue;o+=p?-y:y}}}),o},vf=(e,r=e.getAllNodes()[0].id)=>{mf(e,{},1,r)},mf=(e,r,t,n,i)=>{var s;const a=t;let o=t;const c=e.getNode(n);return r[n]=!0,(s=e.getNeighbors(n))===null||s===void 0||s.forEach(f=>{r[f.id]||(o=mf(e,r,o,f.id,n))}),c.data.low=a,c.data.lim=o++,i?c.data.parent=i:delete c.data.parent,o},ly=e=>e.getAllEdges().find(r=>r.data.cutvalue<0),hy=(e,r,t)=>{let n=t.source,i=t.target;r.getRelatedEdges(n,"out").find(l=>l.target===i)||(n=t.target,i=t.source);const s=e.getNode(n),a=e.getNode(i);let o=s,c=!1;s.data.lim>a.data.lim&&(o=a,c=!0);const f=r.getAllEdges().filter(l=>c===yf(e.getNode(l.source),o)&&c!==yf(e.getNode(l.target),o));return _n(f,l=>At(r,l))},dy=(e,r,t,n)=>{const i=e.getRelatedEdges(t.source,"both").find(s=>s.source===t.target||s.target===t.target);i&&e.removeEdge(i.id),e.addEdge({id:`e${Math.random()}`,source:n.source,target:n.target,data:{}}),vf(e),pf(e,r),gy(e,r)},gy=(e,r)=>{const t=e.getAllNodes().find(i=>!i.data.parent);let n=Qc(e,t,"pre");n=n.slice(1),n.forEach(i=>{const s=e.getNode(i).data.parent;let a=r.getRelatedEdges(i,"out").find(c=>c.target===s),o=!1;!a&&r.hasNode(s)&&(a=r.getRelatedEdges(s,"out").find(c=>c.target===i),o=!0),r.getNode(i).data.rank=(r.hasNode(s)&&r.getNode(s).data.rank||0)+(o?a==null?void 0:a.data.minlen:-(a==null?void 0:a.data.minlen))})},py=(e,r,t)=>e.getRelatedEdges(r,"both").find(n=>n.source===t||n.target===t),yf=(e,r)=>r.data.low<=e.data.lim&&e.data.lim<=r.data.lim,vy=(e,r)=>{switch(r){case"network-simplex":yy(e);break;case"tight-tree":wf(e);break;case"longest-path":my(e);break;default:wf(e)}},my=hf,wf=e=>{ny(e),oy(e)},yy=e=>{uy(e)},wy=(e,r)=>{const{edgeLabelSpace:t,keepNodeOrder:n,prevGraph:i,rankdir:s,ranksep:a}=r;!n&&i&&_y(e,i);const o=qy(e);t&&(r.ranksep=Ry(o,{rankdir:s,ranksep:a}));let c;try{c=by(o,r)}catch(f){if(f.message==="Not possible to find intersection inside of the rectangle"){console.error(`The following error may be caused by improper layer setting, please make sure your manual layer setting does not violate the graph's structure: +`,f);return}throw f}return Ey(e,o),c},by=(e,r)=>{const{ranker:t,rankdir:n="tb",nodeOrder:i,keepNodeOrder:s,align:a,nodesep:o=50,edgesep:c=20,ranksep:f=50}=r;Ly(e),im(e);const{nestingRoot:l,nodeRankFactor:p}=mm(e);vy(Yc(e),t),Oy(e),fm(e,p),bm(e,l),cm(e),Ay(e),Iy(e);const m=[];Em(e,m),Bm(e,m),hm(e),s&&Dm(e,i),Lm(e,s),Dy(e),dm(e,n),ry(e,{align:a,nodesep:o,edgesep:c,ranksep:f}),zy(e),Py(e),Nm(e,m),jy(e),gm(e,n);const{width:y,height:x}=Ty(e);return ky(e),Cy(e),sm(e),{width:y,height:x}},_y=(e,r)=>{e.getAllNodes().forEach(t=>{const n=e.getNode(t.id);if(r.hasNode(t.id)){const i=r.getNode(t.id);n.data.fixorder=i.data._order,delete i.data._order}else delete n.data.fixorder})},Ey=(e,r)=>{e.getAllNodes().forEach(t=>{var n;const i=e.getNode(t.id);if(i){const s=r.getNode(t.id);i.data.x=s.data.x,i.data.y=s.data.y,i.data._order=s.data.order,i.data._rank=s.data.rank,!((n=r.getChildren(t.id))===null||n===void 0)&&n.length&&(i.data.width=s.data.width,i.data.height=s.data.height)}}),e.getAllEdges().forEach(t=>{const n=e.getEdge(t.id),i=r.getEdge(t.id);n.data.points=i?i.data.points:[],i&&i.data.hasOwnProperty("x")&&(n.data.x=i.data.x,n.data.y=i.data.y)})},xy=["width","height","layer","fixorder"],Ny={width:0,height:0},My=["minlen","weight","width","height","labeloffset"],Sy={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},Mn=["labelpos"],qy=e=>{const r=new Be({tree:[]});return e.getAllNodes().forEach(t=>{const n=_f(e.getNode(t.id).data),i=Object.assign(Object.assign({},Ny),n),s=bf(i,xy);r.hasNode(t.id)||r.addNode({id:t.id,data:Object.assign({},s)});const a=e.hasTreeStructure("combo")?e.getParent(t.id,"combo"):e.getParent(t.id);G0(a)||(r.hasNode(a.id)||r.addNode(Object.assign({},a)),r.setParent(t.id,a.id))}),e.getAllEdges().forEach(t=>{const n=_f(e.getEdge(t.id).data),i={};Mn==null||Mn.forEach(s=>{n[s]!==void 0&&(i[s]=n[s])}),r.addEdge({id:t.id,source:t.source,target:t.target,data:Object.assign({},Sy,bf(n,My),i)})}),r},Ry=(e,r)=>{const{ranksep:t=0,rankdir:n}=r;return e.getAllNodes().forEach(i=>{isNaN(i.data.layer)||i.data.layer||(i.data.layer=0)}),e.getAllEdges().forEach(i=>{var s;i.data.minlen*=2,((s=i.data.labelpos)===null||s===void 0?void 0:s.toLowerCase())!=="c"&&(n==="TB"||n==="BT"?i.data.width+=i.data.labeloffset:i.data.height+=i.data.labeloffset)}),t/2},Oy=e=>{e.getAllEdges().forEach(r=>{if(r.data.width&&r.data.height){const t=e.getNode(r.source),n=e.getNode(r.target),i={e:r,rank:(n.data.rank-t.data.rank)/2+t.data.rank};Wt(e,"edge-proxy",i,"_ep")}})},Ay=e=>{let r=0;return e.getAllNodes().forEach(t=>{var n,i;t.data.borderTop&&(t.data.minRank=(n=e.getNode(t.data.borderTop))===null||n===void 0?void 0:n.data.rank,t.data.maxRank=(i=e.getNode(t.data.borderBottom))===null||i===void 0?void 0:i.data.rank,r=Math.max(r,t.data.maxRank||-1/0))}),r},Iy=e=>{e.getAllNodes().forEach(r=>{r.data.dummy==="edge-proxy"&&(e.getEdge(r.data.e.id).data.labelRank=r.data.rank,e.removeNode(r.id))})},Ty=(e,r)=>{let t,n=0,i,s=0;const{marginx:a=0,marginy:o=0}={},c=f=>{if(!f.data)return;const l=f.data.x,p=f.data.y,m=f.data.width,y=f.data.height;!isNaN(l)&&!isNaN(m)&&(t===void 0&&(t=l-m/2),t=Math.min(t,l-m/2),n=Math.max(n,l+m/2)),!isNaN(p)&&!isNaN(y)&&(i===void 0&&(i=p-y/2),i=Math.min(i,p-y/2),s=Math.max(s,p+y/2))};return e.getAllNodes().forEach(f=>{c(f)}),e.getAllEdges().forEach(f=>{f!=null&&f.data.hasOwnProperty("x")&&c(f)}),t-=a,i-=o,e.getAllNodes().forEach(f=>{f.data.x-=t,f.data.y-=i}),e.getAllEdges().forEach(f=>{var l;(l=f.data.points)===null||l===void 0||l.forEach(p=>{p.x-=t,p.y-=i}),f.data.hasOwnProperty("x")&&(f.data.x-=t),f.data.hasOwnProperty("y")&&(f.data.y-=i)}),{width:n-t+a,height:s-i+o}},ky=e=>{e.getAllEdges().forEach(r=>{const t=e.getNode(r.source),n=e.getNode(r.target);let i,s;r.data.points?(i=r.data.points[0],s=r.data.points[r.data.points.length-1]):(r.data.points=[],i={x:n.data.x,y:n.data.y},s={x:t.data.x,y:t.data.y}),r.data.points.unshift(Kc(t.data,i)),r.data.points.push(Kc(n.data,s))})},jy=e=>{e.getAllEdges().forEach(r=>{if(r.data.hasOwnProperty("x"))switch((r.data.labelpos==="l"||r.data.labelpos==="r")&&(r.data.width-=r.data.labeloffset),r.data.labelpos){case"l":r.data.x-=r.data.width/2+r.data.labeloffset;break;case"r":r.data.x+=r.data.width/2+r.data.labeloffset;break}})},Cy=e=>{e.getAllEdges().forEach(r=>{var t;r.data.reversed&&((t=r.data.points)===null||t===void 0||t.reverse())})},Py=e=>{e.getAllNodes().forEach(r=>{var t,n,i;if(!((t=e.getChildren(r.id))===null||t===void 0)&&t.length){const s=e.getNode(r.id),a=e.getNode(s.data.borderTop),o=e.getNode(s.data.borderBottom),c=e.getNode(s.data.borderLeft[((n=s.data.borderLeft)===null||n===void 0?void 0:n.length)-1]),f=e.getNode(s.data.borderRight[((i=s.data.borderRight)===null||i===void 0?void 0:i.length)-1]);s.data.width=Math.abs((f==null?void 0:f.data.x)-(c==null?void 0:c.data.x))||10,s.data.height=Math.abs((o==null?void 0:o.data.y)-(a==null?void 0:a.data.y))||10,s.data.x=((c==null?void 0:c.data.x)||0)+s.data.width/2,s.data.y=((a==null?void 0:a.data.y)||0)+s.data.height/2}}),e.getAllNodes().forEach(r=>{r.data.dummy==="border"&&e.removeNode(r.id)})},Ly=e=>{e.getAllEdges().forEach(r=>{if(r.source===r.target){const t=e.getNode(r.source);t.data.selfEdges||(t.data.selfEdges=[]),t.data.selfEdges.push(r),e.removeEdge(r.id)}})},Dy=e=>{const r=or(e);r==null||r.forEach(t=>{let n=0;t==null||t.forEach((i,s)=>{var a;const o=e.getNode(i);o.data.order=s+n,(a=o.data.selfEdges)===null||a===void 0||a.forEach(c=>{Wt(e,"selfedge",{width:c.data.width,height:c.data.height,rank:o.data.rank,order:s+ ++n,e:c},"_se")}),delete o.data.selfEdges})})},zy=e=>{e.getAllNodes().forEach(r=>{const t=e.getNode(r.id);if(t.data.dummy==="selfedge"){const n=e.getNode(t.data.e.source),i=n.data.x+n.data.width/2,s=n.data.y,a=t.data.x-i,o=n.data.height/2;e.hasEdge(t.data.e.id)?e.updateEdgeData(t.data.e.id,t.data.e.data):e.addEdge({id:t.data.e.id,source:t.data.e.source,target:t.data.e.target,data:t.data.e.data}),e.removeNode(r.id),t.data.e.data.points=[{x:i+2*a/3,y:s-o},{x:i+5*a/6,y:s-o},{y:s,x:i+a},{x:i+5*a/6,y:s+o},{x:i+2*a/3,y:s+o}],t.data.e.data.x=t.data.x,t.data.e.data.y=t.data.y}})},bf=(e,r)=>{const t={};return r==null||r.forEach(n=>{e[n]!==void 0&&(t[n]=+e[n])}),t},_f=(e={})=>{const r={};return Object.keys(e).forEach(t=>{r[t.toLowerCase()]=e[t]}),r},bt=Array.isArray,Ef=e=>{const r=[],t=e.length;for(let n=0;nr[i][n]+r[n][s]&&(r[i][s]=r[i][n]+r[n][s]);return r},xf=(e,r)=>{const{nodes:t,edges:n}=e,i=[],s={};if(!t)throw new Error("invalid nodes data!");return t&&t.forEach((a,o)=>{s[a.id]=o;const c=[];i.push(c)}),n==null||n.forEach(a=>{const{source:o,target:c}=a,f=s[o],l=s[c];f===void 0||l===void 0||(i[f][l]=1,i[l][f]=1)}),i},Fy=(e,r)=>{const t=[];return e.forEach(n=>{const i=[];n.forEach(s=>{i.push(s*r)}),t.push(i)}),t},By=e=>{let r=1/0,t=1/0,n=-1/0,i=-1/0;return e.forEach(s=>{let a=s.data.size;bt(a)?a.length===1&&(a=[a[0],a[0]]):me(a)?a=[a,a]:(a===void 0||isNaN(a))&&(a=[30,30]);const o=[a[0]/2,a[1]/2],c=s.data.x-o[0],f=s.data.x+o[0],l=s.data.y-o[1],p=s.data.y+o[1];r>c&&(r=c),t>l&&(t=l),nMath.sqrt((e.x-r.x)*(e.x-r.x)+(e.y-r.y)*(e.y-r.y)),Sn=(e,r,t,n="TB",i,s={})=>{if(!(r!=null&&r.length))return;const{stopBranchFn:a,stopAllFn:o}=s;for(let c=0;c{if(e===null)return e;if(e instanceof Date)return new Date(e.getTime());if(e instanceof Array){const r=[];return e.forEach(t=>{r.push(t)}),r.map(t=>qn(t))}if(typeof e=="object"){const r={};return Object.keys(e).forEach(t=>{r[t]=qn(e[t])}),r}return e},it=(e,r)=>{const t=qn(e);return t.data=t.data||{},r&&(me(t.data.x)||(t.data.x=Math.random()*r[0]),me(t.data.y)||(t.data.y=Math.random()*r[1])),t};function ar(e){if(!e)return[0,0,0];if(me(e))return[e,e,e];if(e.length===0)return[0,0,0];const[r,t=r,n=r]=e;return[r,t,n]}function Pt(e,r){let t;return wt(r)?t=r:me(r)?t=()=>r:t=()=>e,t}function Rn(e,r,t=!0){return!r&&r!==0?n=>{const{size:i}=n.data||{};return i?Array.isArray(i)?t?Math.max(...i)||e:i:Vt(i)&&i.width&&i.height?t?Math.max(i.width,i.height)||e:[i.width,i.height]:i:e}:wt(r)?r:me(r)?()=>r:Array.isArray(r)?()=>t?Math.max(...r)||e:r:Vt(r)&&r.width&&r.height?()=>t?Math.max(r.width,r.height)||e:[r.width,r.height]:()=>e}const On=(e,r,t=10)=>{let n;const i=typeof r=="function"?r:()=>r||0;return e?Array.isArray(e)?n=a=>e:wt(e)?n=e:n=a=>e:n=a=>{var o,c,f;if(!((o=a.data)===null||o===void 0)&&o.bboxSize)return(c=a.data)===null||c===void 0?void 0:c.bboxSize;if(!((f=a.data)===null||f===void 0)&&f.size){const l=a.data.size;return Array.isArray(l)?l:Vt(l)?[l.width,l.height]:l}return t},a=>{const o=n(a),c=i(a);return Math.max(...ar(o))+c}},$y={rankdir:"TB",nodesep:50,ranksep:50,edgeLabelSpace:!0,ranker:"tight-tree",controlPoints:!1,radial:!1,focusNode:null};class Gy{constructor(r={}){this.options=r,this.id="antv-dagre",this.options=Object.assign(Object.assign({},$y),r)}execute(r,t){return se(this,void 0,void 0,function*(){return this.genericDagreLayout(!1,r,t)})}assign(r,t){return se(this,void 0,void 0,function*(){yield this.genericDagreLayout(!0,r,t)})}genericDagreLayout(r,t,n){return se(this,void 0,void 0,function*(){const i=Object.assign(Object.assign({},this.options),n),{nodeSize:s,align:a,rankdir:o="TB",ranksep:c,nodesep:f,ranksepFunc:l,nodesepFunc:p,edgeLabelSpace:m,ranker:y,nodeOrder:x,begin:_,controlPoints:b,radial:w,sortByCombo:E,preset:N}=i,S=new Be({tree:[]}),R=Pt(c||50,l),A=Pt(f||50,p);let j=A,I=R;(o==="LR"||o==="RL")&&(j=R,I=A);const D=Rn(10,s,!1),z=t.getAllNodes(),$=t.getAllEdges();z.forEach(Z=>{const ce=ar(D(Z)),pe=I(Z),he=j(Z),ie=ce[0]+2*he,_e=ce[1]+2*pe,G=Z.data.layer;me(G)?S.addNode({id:Z.id,data:{width:ie,height:_e,layer:G}}):S.addNode({id:Z.id,data:{width:ie,height:_e}})}),E&&(S.attachTreeStructure("combo"),z.forEach(Z=>{const{parentId:ce}=Z.data;ce!==void 0&&S.hasNode(ce)&&S.setParent(Z.id,ce,"combo")})),$.forEach(Z=>{S.addEdge({id:Z.id,source:Z.source,target:Z.target,data:{weight:Z.data.weight||1}})});let V;N!=null&&N.length&&(V=new Be({nodes:N})),wy(S,{prevGraph:V,edgeLabelSpace:m,keepNodeOrder:!!x,nodeOrder:x||[],acyclicer:"greedy",ranker:y,rankdir:o,nodesep:f,align:a});const Y=[0,0];if(_){let Z=1/0,ce=1/0;S.getAllNodes().forEach(pe=>{Z>pe.data.x&&(Z=pe.data.x),ce>pe.data.y&&(ce=pe.data.y)}),S.getAllEdges().forEach(pe=>{var he;(he=pe.data.points)===null||he===void 0||he.forEach(ie=>{Z>ie.x&&(Z=ie.x),ce>ie.y&&(ce=ie.y)})}),Y[0]=_[0]-Z,Y[1]=_[1]-ce}const ee=o==="LR"||o==="RL";if(!w){const Z=new Set,pe=o==="BT"||o==="RL"?(G,P)=>P-G:(G,P)=>G-P;S.getAllNodes().forEach(G=>{G.data.x=G.data.x+Y[0],G.data.y=G.data.y+Y[1],Z.add(ee?G.data.x:G.data.y)});const he=Array.from(Z).sort(pe),ie=ee?(G,P)=>G.x!==P.x:(G,P)=>G.y!==P.y,_e=ee?(G,P,X)=>{const te=Math.max(P.y,X.y),le=Math.min(P.y,X.y);return G.filter(xe=>xe.y<=te&&xe.y>=le)}:(G,P,X)=>{const te=Math.max(P.x,X.x),le=Math.min(P.x,X.x);return G.filter(xe=>xe.x<=te&&xe.x>=le)};S.getAllEdges().forEach((G,P)=>{var X;m&&b&&G.data.type!=="loop"&&(G.data.controlPoints=Uy((X=G.data.points)===null||X===void 0?void 0:X.map(({x:te,y:le})=>({x:te+Y[0],y:le+Y[1]})),S.getNode(G.source),S.getNode(G.target),he,ee,ie,_e))})}let J=[];J=S.getAllNodes().map(Z=>it(Z));const ue=S.getAllEdges();return r&&(J.forEach(Z=>{t.mergeNodeData(Z.id,{x:Z.data.x,y:Z.data.y})}),ue.forEach(Z=>{t.mergeEdgeData(Z.id,{controlPoints:Z.data.controlPoints})})),{nodes:J,edges:ue}})}}const Uy=(e,r,t,n,i,s,a)=>{let o=(e==null?void 0:e.slice(1,e.length-1))||[];if(r&&t){let{x:c,y:f}=r.data,{x:l,y:p}=t.data;if(i&&(c=r.data.y,f=r.data.x,l=t.data.y,p=t.data.x),p!==f&&c!==l){const m=n.indexOf(f),y=n[m+1];if(y){const b=o[0],w=i?{x:(f+y)/2,y:(b==null?void 0:b.y)||l}:{x:(b==null?void 0:b.x)||l,y:(f+y)/2};(!b||s(b,w))&&o.unshift(w)}const x=n.indexOf(p),_=Math.abs(x-m);if(_===1)o=a(o,r.data,t.data),o.length||o.push(i?{x:(f+p)/2,y:c}:{x:c,y:(f+p)/2});else if(_>1){const b=n[x-1];if(b){const w=o[o.length-1],E=i?{x:(p+b)/2,y:(w==null?void 0:w.y)||l}:{x:(w==null?void 0:w.x)||c,y:(p+b)/2};(!w||s(w,E))&&o.push(E)}}}}return o},Lt=(e,r,t)=>{const n=e.getAllNodes(),i=e.getAllEdges();if(!(n!=null&&n.length))return{nodes:[],edges:i};if(n.length===1)return r&&e.mergeNodeData(n[0].id,{x:t[0],y:t[1]}),{nodes:[Object.assign(Object.assign({},n[0]),{data:Object.assign(Object.assign({},n[0].data),{x:t[0],y:t[1]})})],edges:i}},Vy={radius:null,startRadius:null,endRadius:null,startAngle:0,endAngle:2*Math.PI,clockwise:!0,divisions:1,ordering:null,angleRatio:1};class Wy{constructor(r={}){this.options=r,this.id="circular",this.options=Object.assign(Object.assign({},Vy),r)}execute(r,t){return se(this,void 0,void 0,function*(){return this.genericCircularLayout(!1,r,t)})}assign(r,t){return se(this,void 0,void 0,function*(){yield this.genericCircularLayout(!0,r,t)})}genericCircularLayout(r,t,n){return se(this,void 0,void 0,function*(){const i=Object.assign(Object.assign({},this.options),n),{width:s,height:a,center:o,divisions:c,startAngle:f=0,endAngle:l=2*Math.PI,angleRatio:p,ordering:m,clockwise:y,nodeSpacing:x,nodeSize:_}=i,b=t.getAllNodes(),w=t.getAllEdges(),[E,N,S]=Ky(s,a,o),R=b==null?void 0:b.length;if(!R||R===1)return Lt(t,r,S);const A=(l-f)/R;let{radius:j,startRadius:I,endRadius:D}=i;if(x){const ee=Pt(10,x),J=Rn(10,_);let ue=-1/0;b.forEach(Z=>{const ce=J(Z);ue{ce===0?be+=ue||10:be+=(ee(Z)||0)+(ue||10)}),j=be/(2*Math.PI)}else!j&&!I&&!D?j=Math.min(N,E)/2:!I&&D?I=D:I&&!D&&(D=I);const z=A*p;let $=[];m==="topology"?$=Mf(t,b):m==="topology-directed"?$=Mf(t,b,!0):m==="degree"?$=Yy(t,b):$=b.map(ee=>it(ee));const V=Math.ceil(R/c);for(let ee=0;ee{t.mergeNodeData(ee.id,{x:ee.data.x,y:ee.data.y})}),{nodes:$,edges:w}})}}const Mf=(e,r,t=!1)=>{const n=[it(r[0])],i={},s=r.length;i[r[0].id]=!0;let a=0;return r.forEach((o,c)=>{if(c!==0)if((c===s-1||e.getDegree(o.id,"both")!==e.getDegree(r[c+1].id,"both")||e.areNeighbors(n[a].id,o.id))&&!i[o.id])n.push(it(o)),i[o.id]=!0,a++;else{const f=t?e.getSuccessors(n[a].id):e.getNeighbors(n[a].id);let l=!1;for(let m=0;m{t.push(it(n))}),t.sort((n,i)=>e.getDegree(n.id,"both")-e.getDegree(i.id,"both")),t}const Ky=(e,r,t)=>{let n=e,i=r,s=t;return!n&&typeof window!="undefined"&&(n=window.innerWidth),!i&&typeof window!="undefined"&&(i=window.innerHeight),s||(s=[n/2,i/2]),[n,i,s]},Xy={nodeSize:30,nodeSpacing:10,preventOverlap:!1,sweep:void 0,equidistant:!1,startAngle:3/2*Math.PI,clockwise:!0,maxLevelDiff:void 0,sortBy:"degree"};class An{constructor(r={}){this.options=r,this.id="concentric",this.options=Object.assign(Object.assign({},Xy),r)}execute(r,t){return se(this,void 0,void 0,function*(){return this.genericConcentricLayout(!1,r,t)})}assign(r,t){return se(this,void 0,void 0,function*(){yield this.genericConcentricLayout(!0,r,t)})}genericConcentricLayout(r,t,n){return se(this,void 0,void 0,function*(){const i=Object.assign(Object.assign({},this.options),n),{center:s,width:a,height:o,sortBy:c,maxLevelDiff:f,sweep:l,clockwise:p,equidistant:m,preventOverlap:y,startAngle:x=3/2*Math.PI,nodeSize:_,nodeSpacing:b}=i,w=t.getAllNodes(),E=t.getAllEdges(),N=!a&&typeof window!="undefined"?window.innerWidth:a,S=!o&&typeof window!="undefined"?window.innerHeight:o,R=s||[N/2,S/2];if(!(w!=null&&w.length)||w.length===1)return Lt(t,r,R);const A=[];let j,I=0;bt(_)?j=Math.max(_[0],_[1]):wt(_)?(j=-1/0,w.forEach(Z=>{const ce=Math.max(...ar(_(Z)));ce>j&&(j=ce)})):j=_,bt(b)?I=Math.max(b[0],b[1]):me(b)&&(I=b),w.forEach(Z=>{const ce=it(Z);A.push(ce);let pe=j;const{data:he}=ce;bt(he.size)?pe=Math.max(he.size[0],he.size[1]):me(he.size)?pe=he.size:Vt(he.size)&&(pe=Math.max(he.size.width,he.size.height)),j=Math.max(j,pe),wt(b)&&(I=Math.max(b(Z),I))});const D={};A.forEach((Z,ce)=>{D[Z.id]=ce});let z=c;(!sr(z)||A[0].data[z]===void 0)&&(z="degree"),z==="degree"?A.sort((Z,ce)=>t.getDegree(ce.id,"both")-t.getDegree(Z.id,"both")):A.sort((Z,ce)=>ce.data[z]-Z.data[z]);const $=A[0],V=(f||(z==="degree"?t.getDegree($.id,"both"):$.data[z]))/4,Y=[{nodes:[]}];let ee=Y[0];A.forEach(Z=>{if(ee.nodes.length>0){const ce=Math.abs(z==="degree"?t.getDegree(ee.nodes[0].id,"both")-t.getDegree(Z.id,"both"):ee.nodes[0].data[z]-Z.data[z]);V&&ce>=V&&(ee={nodes:[]},Y.push(ee))}ee.nodes.push(Z)});let J=j+I;if(!y){const Z=Y.length>0&&Y[0].nodes.length>1,pe=(Math.min(N,S)/2-J)/(Y.length+(Z?1:0));J=Math.min(J,pe)}let ue=0;if(Y.forEach(Z=>{const ce=l===void 0?2*Math.PI-2*Math.PI/Z.nodes.length:l;if(Z.dTheta=ce/Math.max(1,Z.nodes.length-1),Z.nodes.length>1&&y){const pe=Math.cos(Z.dTheta)-Math.cos(0),he=Math.sin(Z.dTheta)-Math.sin(0),ie=Math.sqrt(J*J/(pe*pe+he*he));ue=Math.max(ie,ue)}Z.r=ue,ue+=J}),m){let Z=0,ce=0;for(let pe=0;pe{he===0&&(ce=pe.r||0),pe.r=ce,ce+=Z})}return Y.forEach(Z=>{const ce=Z.dTheta||0,pe=Z.r||0;Z.nodes.forEach((he,ie)=>{const _e=x+(p?1:-1)*ce*ie;he.data.x=R[0]+pe*Math.cos(_e),he.data.y=R[1]+pe*Math.sin(_e)})}),r&&A.forEach(Z=>t.mergeNodeData(Z.id,{x:Z.data.x,y:Z.data.y})),{nodes:A,edges:E}})}}function Zy(e){const r=+this._x.call(null,e),t=+this._y.call(null,e);return Sf(this.cover(r,t),r,t,e)}function Sf(e,r,t,n){if(isNaN(r)||isNaN(t))return e;var i,s=e._root,a={data:n},o=e._x0,c=e._y0,f=e._x1,l=e._y1,p,m,y,x,_,b,w,E;if(!s)return e._root=a,e;for(;s.length;)if((_=r>=(p=(o+f)/2))?o=p:f=p,(b=t>=(m=(c+l)/2))?c=m:l=m,i=s,!(s=s[w=b<<1|_]))return i[w]=a,e;if(y=+e._x.call(null,s.data),x=+e._y.call(null,s.data),r===y&&t===x)return a.next=s,i?i[w]=a:e._root=a,e;do i=i?i[w]=new Array(4):e._root=new Array(4),(_=r>=(p=(o+f)/2))?o=p:f=p,(b=t>=(m=(c+l)/2))?c=m:l=m;while((w=b<<1|_)===(E=(x>=m)<<1|y>=p));return i[E]=s,i[w]=a,e}function Jy(e){var r,t,n=e.length,i,s,a=new Array(n),o=new Array(n),c=1/0,f=1/0,l=-1/0,p=-1/0;for(t=0;tl&&(l=i),sp&&(p=s));if(c>l||f>p)return this;for(this.cover(c,f).cover(l,p),t=0;te||e>=i||n>r||r>=s;)switch(f=(rl||(o=x.y0)>p||(c=x.x1)=w)<<1|e>=b)&&(x=m[m.length-1],m[m.length-1]=m[m.length-1-_],m[m.length-1-_]=x)}else{var E=e-+this._x.call(null,y.data),N=r-+this._y.call(null,y.data),S=E*E+N*N;if(S=(m=(a+c)/2))?a=m:c=m,(_=p>=(y=(o+f)/2))?o=y:f=y,r=t,!(t=t[b=_<<1|x]))return this;if(!t.length)break;(r[b+1&3]||r[b+2&3]||r[b+3&3])&&(n=r,w=b)}for(;t.data!==e;)if(i=t,!(t=t.next))return this;return(s=t.next)&&delete t.next,i?(s?i.next=s:delete i.next,this):r?(s?r[b]=s:delete r[b],(t=r[0]||r[1]||r[2]||r[3])&&t===(r[3]||r[2]||r[1]||r[0])&&!t.length&&(n?n[w]=t:this._root=t),this):(this._root=s,this)}function nw(e){for(var r=0,t=e.length;r=(x=(c+p)/2))?c=x:p=x,(R=t>=(_=(f+m)/2))?f=_:m=_,(A=n>=(b=(l+y)/2))?l=b:y=b,s=a,!(a=a[j=A<<2|R<<1|S]))return s[j]=o,e;if(w=+e._x.call(null,a.data),E=+e._y.call(null,a.data),N=+e._z.call(null,a.data),r===w&&t===E&&n===N)return o.next=a,s?s[j]=o:e._root=o,e;do s=s?s[j]=new Array(8):e._root=new Array(8),(S=r>=(x=(c+p)/2))?c=x:p=x,(R=t>=(_=(f+m)/2))?f=_:m=_,(A=n>=(b=(l+y)/2))?l=b:y=b;while((j=A<<2|R<<1|S)===(I=(N>=b)<<2|(E>=_)<<1|w>=x));return s[I]=a,s[j]=o,e}function dw(e){Array.isArray(e)||(e=Array.from(e));const r=e.length,t=new Float64Array(r),n=new Float64Array(r),i=new Float64Array(r);let s=1/0,a=1/0,o=1/0,c=-1/0,f=-1/0,l=-1/0;for(let p=0,m,y,x,_;pc&&(c=y),xf&&(f=x),_l&&(l=_));if(s>c||a>f||o>l)return this;this.cover(s,a,o).cover(c,f,l);for(let p=0;pe||e>=a||i>r||r>=o||s>t||t>=c;)switch(m=(tx||(f=N.y0)>_||(l=N.z0)>b||(p=N.x1)=j)<<2|(r>=A)<<1|e>=R)&&(N=w[w.length-1],w[w.length-1]=w[w.length-1-S],w[w.length-1-S]=N)}else{var I=e-+this._x.call(null,E.data),D=r-+this._y.call(null,E.data),z=t-+this._z.call(null,E.data),$=I*I+D*D+z*z;if($Math.sqrt(Ot(e-n,2)+Ot(r-i,2)+Ot(t-s,2));function ww(e,r,t,n){const i=[],s=e-n,a=r-n,o=t-n,c=e+n,f=r+n,l=t+n;return this.visit((p,m,y,x,_,b,w)=>{if(!p.length)do{const E=p.data;yw(e,r,t,this._x(E),this._y(E),this._z(E))<=n&&i.push(E)}while(p=p.next);return m>c||y>f||x>l||_=(_=(a+f)/2))?a=_:f=_,(N=y>=(b=(o+l)/2))?o=b:l=b,(S=x>=(w=(c+p)/2))?c=w:p=w,r=t,!(t=t[R=S<<2|N<<1|E]))return this;if(!t.length)break;(r[R+1&7]||r[R+2&7]||r[R+3&7]||r[R+4&7]||r[R+5&7]||r[R+6&7]||r[R+7&7])&&(n=r,A=R)}for(;t.data!==e;)if(i=t,!(t=t.next))return this;return(s=t.next)&&delete t.next,i?(s?i.next=s:delete i.next,this):r?(s?r[R]=s:delete r[R],(t=r[0]||r[1]||r[2]||r[3]||r[4]||r[5]||r[6]||r[7])&&t===(r[7]||r[6]||r[5]||r[4]||r[3]||r[2]||r[1]||r[0])&&!t.length&&(n?n[A]=t:this._root=t),this):(this._root=s,this)}function _w(e){for(var r=0,t=e.length;r{const{nodeStrength:m,x:y,y:x,z:_,size:b}=l.data;return{x:y,y:x,z:_,size:b,index:p,id:l.id,vx:0,vy:0,vz:0,weight:s*m}}),c=(i===2?Yt(o,l=>l.x,l=>l.y):Ar(o,l=>l.x,l=>l.y,l=>l.z)).visitAfter(jw),f=new Map;return o.forEach(l=>{f.set(l.id,l),Pw(l,c,i)}),o.map((l,p)=>{const{id:m,data:y}=a[p],{mass:x=1}=y;n[m]={x:l.vx/x,y:l.vy/x,z:l.vz/x}}),n}function jw(e){let r=0,t=0,n=0,i=0,s=0;const a=e.length;if(a){for(let o=0;o{var o;if(((o=e.data)===null||o===void 0?void 0:o.id)===s.id)return;const c=[t,n,i][a-1],f=s.x-e.x||kn,l=s.y-e.y||kn,p=s.z-e.z||kn,m=[f,l,p],y=c-r;let x=0;for(let w=0;wCw(n,i,s,a,o,e,t))}const Lw={dimensions:2,maxIteration:500,gravity:10,factor:1,edgeStrength:50,nodeStrength:1e3,coulombDisScale:.005,damping:.9,maxSpeed:200,minMovement:.4,interval:.02,linkDistance:200,clusterNodeStrength:20,preventOverlap:!0,distanceThresholdMode:"mean"};class Af{constructor(r={}){this.options=r,this.id="force",this.timeInterval=0,this.judgingDistance=0,this.running=!1,this.options=Object.assign(Object.assign({},Lw),r)}execute(r,t){return se(this,void 0,void 0,function*(){return this.genericForceLayout(!1,r,t)})}assign(r,t){return se(this,void 0,void 0,function*(){yield this.genericForceLayout(!0,r,t)})}stop(){this.timeInterval&&typeof window!="undefined"&&window.clearInterval(this.timeInterval),this.running=!1}tick(r=this.options.maxIteration||1){if(this.lastResult)return this.lastResult;for(let n=0;(this.judgingDistance>this.lastOptions.minMovement||n<1)&&nthis.lastGraph.mergeNodeData(n.id,{x:n.data.x,y:n.data.y,z:this.options.dimensions===3?n.data.z:void 0})),t}genericForceLayout(r,t,n){return se(this,void 0,void 0,function*(){const i=Object.assign(Object.assign({},this.options),n),s=t.getAllNodes(),a=t.getAllEdges(),o=this.formatOptions(i,t),{dimensions:c,width:f,height:l,nodeSize:p,getMass:m,nodeStrength:y,edgeStrength:x,linkDistance:_}=o,b=s.map((I,D)=>Object.assign(Object.assign({},I),{data:Object.assign(Object.assign({},I.data),{x:me(I.data.x)?I.data.x:Math.random()*f,y:me(I.data.y)?I.data.y:Math.random()*l,z:me(I.data.z)?I.data.z:Math.random()*Math.sqrt(f*l),size:p(I)||30,mass:m(I),nodeStrength:y(I)})})),w=a.map(I=>Object.assign(Object.assign({},I),{data:Object.assign(Object.assign({},I.data),{edgeStrength:x(I),linkDistance:_(I,t.getNode(I.source),t.getNode(I.target))})}));if(!(s!=null&&s.length))return this.lastResult={nodes:[],edges:a},{nodes:[],edges:a};const E={};s.forEach((I,D)=>{E[I.id]={x:0,y:0,z:0}});const N=new Be({nodes:b,edges:w});this.formatCentripetal(o,N);const{maxIteration:S,minMovement:R,onTick:A}=o;if(this.lastLayoutNodes=b,this.lastLayoutEdges=w,this.lastAssign=r,this.lastGraph=t,this.lastCalcGraph=N,this.lastOptions=o,this.lastVelMap=E,typeof window=="undefined")return;let j=0;return new Promise(I=>{this.timeInterval=window.setInterval(()=>{(!s||!this.running)&&I({nodes:jn(t,b),edges:a}),this.runOneStep(N,t,j,E,o),this.updatePosition(t,N,E,o),r&&b.forEach(D=>t.mergeNodeData(D.id,{x:D.data.x,y:D.data.y,z:c===3?D.data.z:void 0})),A==null||A({nodes:jn(t,b),edges:a}),j++,(j>=S||this.judgingDistance{let f=1;me(c==null?void 0:c.data.mass)&&(f=c==null?void 0:c.data.mass);const l=t.getDegree(c.id,"both");return!l||l<5?f:l*5*f}),n.nodeSize=On(r.nodeSize,r.nodeSpacing);const o=r.linkDistance?Pt(1,r.linkDistance):c=>1+n.nodeSize(t.getNode(c.source))+n.nodeSize(t.getNode(c.target));return n.linkDistance=o,n.nodeStrength=Pt(1,r.nodeStrength),n.edgeStrength=Pt(1,r.edgeStrength),n}formatCentripetal(r,t){const{dimensions:n,centripetalOptions:i,center:s,clusterNodeStrength:a,leafCluster:o,clustering:c,nodeClusterBy:f}=r,l=t.getAllNodes(),p=i||{leaf:2,single:2,others:1,center:w=>({x:s[0],y:s[1],z:n===3?s[2]:void 0})};typeof a!="function"&&(r.clusterNodeStrength=w=>a);let m,y;if(o&&f&&(m=If(t,f),y=Array.from(new Set(l==null?void 0:l.map(w=>w.data[f])))||[],r.centripetalOptions=Object.assign(p,{single:100,leaf:w=>{const{siblingLeaves:E,sameTypeLeaves:N}=m[w.id]||{};return(N==null?void 0:N.length)===(E==null?void 0:E.length)||(y==null?void 0:y.length)===1?1:r.clusterNodeStrength(w)},others:1,center:w=>{const E=t.getDegree(w.id,"both");if(!E)return{x:100,y:100,z:0};let N;if(E===1){const{sameTypeLeaves:S=[]}=m[w.id]||{};S.length===1?N=void 0:S.length>1&&(N=Tf(S))}else N=void 0;return{x:N==null?void 0:N.x,y:N==null?void 0:N.y,z:N==null?void 0:N.z}}})),c&&f){m||(m=If(t,f)),y||(y=Array.from(new Set(l.map(E=>E.data[f])))),y=y.filter(E=>E!==void 0);const w={};y.forEach(E=>{const N=l.filter(S=>S.data[f]===E).map(S=>t.getNode(S.id));w[E]=Tf(N)}),r.centripetalOptions=Object.assign(p,{single:E=>r.clusterNodeStrength(E),leaf:E=>r.clusterNodeStrength(E),others:E=>r.clusterNodeStrength(E),center:E=>{const N=w[E.data[f]];return{x:N==null?void 0:N.x,y:N==null?void 0:N.y,z:N==null?void 0:N.z}}})}const{leaf:x,single:_,others:b}=r.centripetalOptions||{};x&&typeof x!="function"&&(r.centripetalOptions.leaf=()=>x),_&&typeof _!="function"&&(r.centripetalOptions.single=()=>_),b&&typeof b!="function"&&(r.centripetalOptions.others=()=>b)}runOneStep(r,t,n,i,s){const a={},o=r.getAllNodes(),c=r.getAllEdges();if(!(o!=null&&o.length))return;const{monitor:f}=s;if(this.calRepulsive(r,a,s),c&&this.calAttractive(r,a,s),this.calGravity(r,t,a,s),this.updateVelocity(r,a,i,s),f){const l=this.calTotalEnergy(a,o);f({energy:l,nodes:t.getAllNodes(),edges:t.getAllEdges(),iterations:n})}}calTotalEnergy(r,t){if(!(t!=null&&t.length))return 0;let n=0;return t.forEach((i,s)=>{const a=r[i.id].x,o=r[i.id].y,c=this.options.dimensions===3?r[i.id].z:0,f=a*a+o*o+c*c,{mass:l=1}=i.data;n+=l*f*.5}),n}calRepulsive(r,t,n){const{dimensions:i,factor:s,coulombDisScale:a}=n;kw(r,s,a*a,t,i)}calAttractive(r,t,n){const{dimensions:i,nodeSize:s}=n;r.getAllEdges().forEach((a,o)=>{const{source:c,target:f}=a,l=r.getNode(c),p=r.getNode(f);if(!l||!p)return;let m=p.data.x-l.data.x,y=p.data.y-l.data.y,x=i===3?p.data.z-l.data.z:0;!m&&!y&&(m=Math.random()*.01,y=Math.random()*.01,i===3&&!x&&(x=Math.random()*.01));const _=Math.sqrt(m*m+y*y+x*x);if(_{const{id:_,data:b}=x,{mass:w,x:E,y:N,z:S}=b,R=t.getNode(_);let A=0,j=0,I=0,D=m;const z=r.getDegree(_,"in"),$=r.getDegree(_,"out"),V=r.getDegree(_,"both"),Y=s==null?void 0:s(R,V);if(Y){const[ee,J,ue]=Y;A=E-ee,j=N-J,D=ue}else A=E-p[0],j=N-p[1],I=S-p[2];if(D&&(n[_].x-=D*A/w,n[_].y-=D*j/w,n[_].z-=D*I/w),y){const{leaf:ee,single:J,others:ue,center:be}=y,{x:Z,y:ce,z:pe,centerStrength:he}=(be==null?void 0:be(R,o,c,f,l))||{x:0,y:0,z:0,centerStrength:0};if(!me(Z)||!me(ce))return;const ie=(E-Z)/w,_e=(N-ce)/w,G=(S-pe)/w;if(he&&(n[_].x-=he*ie,n[_].y-=he*_e,n[_].z-=he*G),V===0){const X=J(R);if(!X)return;n[_].x-=X*ie,n[_].y-=X*_e,n[_].z-=X*G;return}if(z===0||$===0){const X=ee(R,o,c);if(!X)return;n[_].x-=X*ie,n[_].y-=X*_e,n[_].z-=X*G;return}const P=ue(R);if(!P)return;n[_].x-=P*ie,n[_].y-=P*_e,n[_].z-=P*G}})}updateVelocity(r,t,n,i){const{damping:s,maxSpeed:a,interval:o,dimensions:c}=i,f=r.getAllNodes();f!=null&&f.length&&f.forEach(l=>{const{id:p}=l;let m=(n[p].x+t[p].x*o)*s||.01,y=(n[p].y+t[p].y*o)*s||.01,x=c===3?(n[p].z+t[p].z*o)*s||.01:0;const _=Math.sqrt(m*m+y*y+x*x);if(_>a){const b=a/_;m=b*m,y=b*y,x=b*x}n[p]={x:m,y,z:x}})}updatePosition(r,t,n,i){const{distanceThresholdMode:s,interval:a,dimensions:o}=i,c=t.getAllNodes();if(!(c!=null&&c.length)){this.judgingDistance=0;return}let f=0;s==="max"?this.judgingDistance=-1/0:s==="min"&&(this.judgingDistance=1/0),c.forEach(l=>{const{id:p}=l,m=r.getNode(p);if(me(m.data.fx)&&me(m.data.fy)){t.mergeNodeData(p,{x:m.data.fx,y:m.data.fy,z:o===3?m.data.fz:void 0});return}const y=n[p].x*a,x=n[p].y*a,_=o===3?n[p].z*a:0;t.mergeNodeData(p,{x:l.data.x+y,y:l.data.y+x,z:l.data.z+_});const b=Math.sqrt(y*y+x*x+_*_);switch(s){case"max":this.judgingDistanceb&&(this.judgingDistance=b);break;default:f=f+b;break}}),(!s||s==="mean")&&(this.judgingDistance=f/c.length)}}const If=(e,r)=>{const t=e.getAllNodes();if(!(t!=null&&t.length))return{};const n={};return t.forEach((i,s)=>{e.getDegree(i.id,"both")===1&&(n[i.id]=Dw(e,"leaf",i,r))}),n},Dw=(e,r,t,n)=>{const i=e.getDegree(t.id,"in"),s=e.getDegree(t.id,"out");let a=t,o=[];i===0?(a=e.getSuccessors(t.id)[0],o=e.getNeighbors(a.id)):s===0&&(a=e.getPredecessors(t.id)[0],o=e.getNeighbors(a.id)),o=o.filter(f=>e.getDegree(f.id,"in")===0||e.getDegree(f.id,"out")===0);const c=zw(e,r,n,t,o);return{coreNode:a,siblingLeaves:o,sameTypeLeaves:c}},zw=(e,r,t,n,i)=>{const s=n.data[t]||"";let a=(i==null?void 0:i.filter(o=>o.data[t]===s))||[];return a=a.filter(o=>e.getDegree(o.id,"in")===0||e.getDegree(o.id,"out")===0),a},Tf=e=>{const r={x:0,y:0};e.forEach(n=>{const{x:i,y:s}=n.data;r.x+=i||0,r.y+=s||0});const t=e.length||1;return{x:r.x/t,y:r.y/t}},jn=(e,r)=>r.map(t=>{const{id:n,data:i}=t,s=e.getNode(n);return Object.assign(Object.assign({},s),{data:Object.assign(Object.assign({},s.data),{x:i.x,y:i.y,z:i.z})})});var Ir=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function kf(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function jf(e){if(Object.prototype.hasOwnProperty.call(e,"__esModule"))return e;var r=e.default;if(typeof r=="function"){var t=function n(){return this instanceof n?Reflect.construct(r,arguments,this.constructor):r.apply(this,arguments)};t.prototype=r.prototype}else t={};return Object.defineProperty(t,"__esModule",{value:!0}),Object.keys(e).forEach(function(n){var i=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,i.get?i:{enumerable:!0,get:function(){return e[n]}})}),t}var we={};const Fw=Object.prototype.toString;function ur(e){const r=Fw.call(e);return r.endsWith("Array]")&&!r.includes("Big")}var Bw=Object.freeze({__proto__:null,isAnyArray:ur}),$w=jf(Bw);function Gw(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!ur(e))throw new TypeError("input must be an array");if(e.length===0)throw new TypeError("input must not be empty");var t=r.fromIndex,n=t===void 0?0:t,i=r.toIndex,s=i===void 0?e.length:i;if(n<0||n>=e.length||!Number.isInteger(n))throw new Error("fromIndex must be a positive integer smaller than length");if(s<=n||s>e.length||!Number.isInteger(s))throw new Error("toIndex must be an integer greater than fromIndex and at most equal to length");for(var a=e[n],o=n+1;oa&&(a=e[o]);return a}function Uw(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!ur(e))throw new TypeError("input must be an array");if(e.length===0)throw new TypeError("input must not be empty");var t=r.fromIndex,n=t===void 0?0:t,i=r.toIndex,s=i===void 0?e.length:i;if(n<0||n>=e.length||!Number.isInteger(n))throw new Error("fromIndex must be a positive integer smaller than length");if(s<=n||s>e.length||!Number.isInteger(s))throw new Error("toIndex must be an integer greater than fromIndex and at most equal to length");for(var a=e[n],o=n+1;o1&&arguments[1]!==void 0?arguments[1]:{};if(ur(e)){if(e.length===0)throw new TypeError("input must not be empty")}else throw new TypeError("input must be an array");var t;if(r.output!==void 0){if(!ur(r.output))throw new TypeError("output option must be an array if specified");t=r.output}else t=new Array(e.length);var n=Uw(e),i=Gw(e);if(n===i)throw new RangeError("minimum and maximum input values are equal. Cannot rescale a constant array");var s=r.min,a=s===void 0?r.autoMinMax?n:0:s,o=r.max,c=o===void 0?r.autoMinMax?i:1:o;if(a>=c)throw new RangeError("min option must be smaller than max option");for(var f=(c-a)/(i-n),l=0;l=0&&h?` ${c(M,g-1)}`:c(M,g)).padEnd(g)}function c(M,g){let h=M.toString();if(h.length<=g)return h;let u=M.toFixed(g);if(u.length>g&&(u=M.toFixed(Math.max(0,g-(u.length-g)))),u.length<=g&&!u.startsWith("0.000")&&!u.startsWith("-0.000"))return u;let d=M.toExponential(g);return d.length>g&&(d=M.toExponential(Math.max(0,g-(d.length-g)))),d.slice(0)}function f(M,g){M.prototype.add=function(u){return typeof u=="number"?this.addS(u):this.addM(u)},M.prototype.addS=function(u){for(let d=0;d>u);return this},M.prototype.signPropagatingRightShiftM=function(u){if(u=g.checkMatrix(u),this.rows!==u.rows||this.columns!==u.columns)throw new RangeError("Matrices dimensions must be equal");for(let d=0;d>u.get(d,v));return this},M.signPropagatingRightShift=function(u,d){return new g(u).signPropagatingRightShift(d)},M.prototype.rightShift=function(u){return typeof u=="number"?this.rightShiftS(u):this.rightShiftM(u)},M.prototype.rightShiftS=function(u){for(let d=0;d>>u);return this},M.prototype.rightShiftM=function(u){if(u=g.checkMatrix(u),this.rows!==u.rows||this.columns!==u.columns)throw new RangeError("Matrices dimensions must be equal");for(let d=0;d>>u.get(d,v));return this},M.rightShift=function(u,d){return new g(u).rightShift(d)},M.prototype.zeroFillRightShift=M.prototype.rightShift,M.prototype.zeroFillRightShiftS=M.prototype.rightShiftS,M.prototype.zeroFillRightShiftM=M.prototype.rightShiftM,M.zeroFillRightShift=M.rightShift,M.prototype.not=function(){for(let u=0;uu)throw new RangeError("Row index out of range")}function p(M,g,h){let u=h?M.columns:M.columns-1;if(g<0||g>u)throw new RangeError("Column index out of range")}function m(M,g){if(g.to1DArray&&(g=g.to1DArray()),g.length!==M.columns)throw new RangeError("vector size must be the same as the number of columns");return g}function y(M,g){if(g.to1DArray&&(g=g.to1DArray()),g.length!==M.rows)throw new RangeError("vector size must be the same as the number of rows");return g}function x(M,g){if(!e.isAnyArray(g))throw new TypeError("row indices must be an array");for(let h=0;h=M.rows)throw new RangeError("row indices are out of range")}function _(M,g){if(!e.isAnyArray(g))throw new TypeError("column indices must be an array");for(let h=0;h=M.columns)throw new RangeError("column indices are out of range")}function b(M,g,h,u,d){if(arguments.length!==5)throw new RangeError("expected 4 arguments");if(E("startRow",g),E("endRow",h),E("startColumn",u),E("endColumn",d),g>h||u>d||g<0||g>=M.rows||h<0||h>=M.rows||u<0||u>=M.columns||d<0||d>=M.columns)throw new RangeError("Submatrix indices are out of range")}function w(M,g=0){let h=[];for(let u=0;u=v)throw new RangeError("min must be smaller than max");let O=v-d,T=new P(g,h);for(let k=0;ku?(v=!0,u=h):(d=!1,v=!0);g++}return d}isReducedEchelonForm(){let g=0,h=0,u=-1,d=!0,v=!1;for(;gu?(v=!0,u=h):(d=!1,v=!0);for(let q=h+1;qg.get(d,u)&&(d=v);if(g.get(d,u)===0)u++;else{g.swapRows(h,d);let v=g.get(h,u);for(let q=u;q=0;)if(g.maxRow(d)===0)d--;else{let v=0,q=!1;for(;vh[u]&&(h[u]=this.get(u,d));return h}case"column":{const h=new Array(this.columns).fill(Number.NEGATIVE_INFINITY);for(let u=0;uh[d]&&(h[d]=this.get(u,d));return h}case void 0:{let h=this.get(0,0);for(let u=0;uh&&(h=this.get(u,d));return h}default:throw new Error(`invalid option: ${g}`)}}maxIndex(){N(this);let g=this.get(0,0),h=[0,0];for(let u=0;ug&&(g=this.get(u,d),h[0]=u,h[1]=d);return h}min(g){if(this.isEmpty())return NaN;switch(g){case"row":{const h=new Array(this.rows).fill(Number.POSITIVE_INFINITY);for(let u=0;uh&&(h=this.get(g,u));return h}maxRowIndex(g){l(this,g),N(this);let h=this.get(g,0),u=[g,0];for(let d=1;dh&&(h=this.get(g,d),u[1]=d);return u}minRow(g){if(l(this,g),this.isEmpty())return NaN;let h=this.get(g,0);for(let u=1;uh&&(h=this.get(u,g));return h}maxColumnIndex(g){p(this,g),N(this);let h=this.get(0,g),u=[0,g];for(let d=1;dh&&(h=this.get(d,g),u[0]=d);return u}minColumn(g){if(p(this,g),this.isEmpty())return NaN;let h=this.get(0,g);for(let u=1;u=1;d/=2)(d&1)!==0&&(h=h.mmul(u)),u=u.mmul(u);return h}strassen2x2(g){g=P.checkMatrix(g);let h=new P(2,2);const u=this.get(0,0),d=g.get(0,0),v=this.get(0,1),q=g.get(0,1),O=this.get(1,0),T=g.get(1,0),k=this.get(1,1),B=g.get(1,1),C=(u+k)*(d+B),W=(O+k)*d,ne=u*(q-B),U=k*(T-d),K=(u+v)*B,oe=(O-u)*(d+q),L=(v-k)*(T+B),re=C+U-K+L,fe=ne+K,ve=W+U,ye=C-W+ne+oe;return h.set(0,0,re),h.set(0,1,fe),h.set(1,0,ve),h.set(1,1,ye),h}strassen3x3(g){g=P.checkMatrix(g);let h=new P(3,3);const u=this.get(0,0),d=this.get(0,1),v=this.get(0,2),q=this.get(1,0),O=this.get(1,1),T=this.get(1,2),k=this.get(2,0),B=this.get(2,1),C=this.get(2,2),W=g.get(0,0),ne=g.get(0,1),U=g.get(0,2),K=g.get(1,0),oe=g.get(1,1),L=g.get(1,2),re=g.get(2,0),fe=g.get(2,1),ve=g.get(2,2),ye=(u+d+v-q-O-B-C)*oe,je=(u-q)*(-ne+oe),de=O*(-W+ne+K-oe-L-re+ve),ge=(-u+q+O)*(W-ne+oe),Ae=(q+O)*(-W+ne),F=u*W,Q=(-u+k+B)*(W-U+L),ae=(-u+k)*(U-L),H=(k+B)*(-W+U),Ce=(u+d+v-O-T-k-B)*L,qe=B*(-W+U+K-oe-L-re+fe),Ie=(-v+B+C)*(oe+re-fe),Pe=(v-C)*(oe-fe),Xe=v*re,dt=(B+C)*(-re+fe),Ge=(-v+O+T)*(L+re-ve),yt=(v-T)*(L-ve),Rt=(O+T)*(-re+ve),Ne=d*K,Ze=T*fe,st=q*U,ot=k*ne,Ue=C*ve,Xx=F+Xe+Ne,Zx=ye+ge+Ae+F+Ie+Xe+dt,Jx=F+Q+H+Ce+Xe+Ge+Rt,Qx=je+de+ge+F+Xe+Ge+yt,Hx=je+ge+Ae+F+Ze,eN=Xe+Ge+yt+Rt+st,tN=F+Q+ae+qe+Ie+Pe+Xe,rN=Ie+Pe+Xe+dt+ot,nN=F+Q+ae+H+Ue;return h.set(0,0,Xx),h.set(0,1,Zx),h.set(0,2,Jx),h.set(1,0,Qx),h.set(1,1,Hx),h.set(1,2,eN),h.set(2,0,tN),h.set(2,1,rN),h.set(2,2,nN),h}mmulStrassen(g){g=P.checkMatrix(g);let h=this.clone(),u=h.rows,d=h.columns,v=g.rows,q=g.columns;d!==v&&console.warn(`Multiplying ${u} x ${d} and ${v} x ${q} matrix: dimensions do not match.`);function O(C,W,ne){let U=C.rows,K=C.columns;if(U===W&&K===ne)return C;{let oe=ie.zeros(W,ne);return oe=oe.setSubMatrix(C,0,0),oe}}let T=Math.max(u,v),k=Math.max(d,q);h=O(h,T,k),g=O(g,T,k);function B(C,W,ne,U){if(ne<=512||U<=512)return C.mmul(W);ne%2===1&&U%2===1?(C=O(C,ne+1,U+1),W=O(W,ne+1,U+1)):ne%2===1?(C=O(C,ne+1,U),W=O(W,ne+1,U)):U%2===1&&(C=O(C,ne,U+1),W=O(W,ne,U+1));let K=parseInt(C.rows/2,10),oe=parseInt(C.columns/2,10),L=C.subMatrix(0,K-1,0,oe-1),re=W.subMatrix(0,K-1,0,oe-1),fe=C.subMatrix(0,K-1,oe,C.columns-1),ve=W.subMatrix(0,K-1,oe,W.columns-1),ye=C.subMatrix(K,C.rows-1,0,oe-1),je=W.subMatrix(K,W.rows-1,0,oe-1),de=C.subMatrix(K,C.rows-1,oe,C.columns-1),ge=W.subMatrix(K,W.rows-1,oe,W.columns-1),Ae=B(ie.add(L,de),ie.add(re,ge),K,oe),F=B(ie.add(ye,de),re,K,oe),Q=B(L,ie.sub(ve,ge),K,oe),ae=B(de,ie.sub(je,re),K,oe),H=B(ie.add(L,fe),ge,K,oe),Ce=B(ie.sub(ye,L),ie.add(re,ve),K,oe),qe=B(ie.sub(fe,de),ie.add(je,ge),K,oe),Ie=ie.add(Ae,ae);Ie.sub(H),Ie.add(qe);let Pe=ie.add(Q,H),Xe=ie.add(F,ae),dt=ie.sub(Ae,F);dt.add(Q),dt.add(Ce);let Ge=ie.zeros(2*Ie.rows,2*Ie.columns);return Ge=Ge.setSubMatrix(Ie,0,0),Ge=Ge.setSubMatrix(Pe,Ie.rows,0),Ge=Ge.setSubMatrix(Xe,0,Ie.columns),Ge=Ge.setSubMatrix(dt,Ie.rows,Ie.columns),Ge.subMatrix(0,ne-1,0,U-1)}return B(h,g,T,k)}scaleRows(g={}){if(typeof g!="object")throw new TypeError("options must be an object");const{min:h=0,max:u=1}=g;if(!Number.isFinite(h))throw new TypeError("min must be a number");if(!Number.isFinite(u))throw new TypeError("max must be a number");if(h>=u)throw new RangeError("min must be smaller than max");let d=new P(this.rows,this.columns);for(let v=0;v0&&r(q,{min:h,max:u,output:q}),d.setRow(v,q)}return d}scaleColumns(g={}){if(typeof g!="object")throw new TypeError("options must be an object");const{min:h=0,max:u=1}=g;if(!Number.isFinite(h))throw new TypeError("min must be a number");if(!Number.isFinite(u))throw new TypeError("max must be a number");if(h>=u)throw new RangeError("min must be smaller than max");let d=new P(this.rows,this.columns);for(let v=0;vu||h<0||h>=this.columns||u<0||u>=this.columns)throw new RangeError("Argument out of range");let d=new P(g.length,u-h+1);for(let v=0;v=this.rows)throw new RangeError(`Row index out of range: ${g[v]}`);d.set(v,q-h,this.get(g[v],q))}return d}subMatrixColumn(g,h,u){if(h===void 0&&(h=0),u===void 0&&(u=this.rows-1),h>u||h<0||h>=this.rows||u<0||u>=this.rows)throw new RangeError("Argument out of range");let d=new P(u-h+1,g.length);for(let v=0;v=this.columns)throw new RangeError(`Column index out of range: ${g[v]}`);d.set(q-h,v,this.get(q,g[v]))}return d}setSubMatrix(g,h,u){if(g=P.checkMatrix(g),g.isEmpty())return this;let d=h+g.rows-1,v=u+g.columns-1;b(this,h,d,u,v);for(let q=0;qtypeof g=="number")}ie.random=ie.rand,ie.randomInt=ie.randInt,ie.diagonal=ie.diag,ie.prototype.diagonal=ie.prototype.diag,ie.identity=ie.eye,ie.prototype.negate=ie.prototype.neg,ie.prototype.tensorProduct=ie.prototype.kroneckerProduct;const fn=class fn extends ie{constructor(h,u){super();Tc(this,_r);Te(this,"data");if(fn.isMatrix(h))kc(this,_r,jc).call(this,h.rows,h.columns),fn.copy(h,this);else if(Number.isInteger(h)&&h>=0)kc(this,_r,jc).call(this,h,u);else if(e.isAnyArray(h)){const d=h;if(h=d.length,u=h?d[0].length:0,typeof u!="number")throw new TypeError("Data must be a 2D array with at least one element");this.data=[];for(let v=0;v=0)for(let d=0;d=0)hn(this,He,new P(h,h));else if(hn(this,He,new P(h)),!this.isSymmetric())throw new TypeError("not symmetric data")}get size(){return gt(this,He).size}get rows(){return gt(this,He).rows}get columns(){return gt(this,He).columns}get diagonalSize(){return this.rows}static isSymmetricMatrix(h){return P.isMatrix(h)&&h.klassType==="SymmetricMatrix"}static zeros(h){return new this(h)}static ones(h){return new this(h).fill(1)}clone(){const h=new ln(this.diagonalSize);for(const[u,d,v]of this.upperRightEntries())h.set(u,d,v);return h}toMatrix(){return new P(this)}get(h,u){return gt(this,He).get(h,u)}set(h,u,d){return gt(this,He).set(h,u,d),gt(this,He).set(u,h,d),this}removeCross(h){return gt(this,He).removeRow(h),gt(this,He).removeColumn(h),this}addCross(h,u){u===void 0&&(u=h,h=this.diagonalSize);const d=u.slice();return d.splice(h,1),gt(this,He).addRow(h,d),gt(this,He).addColumn(h,u),this}applyMask(h){if(h.length!==this.diagonalSize)throw new RangeError("Mask size do not match with matrix size");const u=[];for(const[d,v]of h.entries())v||u.push(d);u.reverse();for(const d of u)this.removeCross(d);return this}toCompact(){const{diagonalSize:h}=this,u=new Array(h*(h+1)/2);for(let d=0,v=0,q=0;q=h&&(d=++v);return u}static fromCompact(h){const u=h.length,d=(Math.sqrt(8*u+1)-1)/2;if(!Number.isInteger(d))throw new TypeError(`This array is not a compact representation of a Symmetric Matrix, ${JSON.stringify(h)}`);const v=new ln(d);for(let q=0,O=0,T=0;T=d&&(q=++O);return v}*upperRightEntries(){for(let h=0,u=0;h=this.diagonalSize&&(u=++h)}}*upperRightValues(){for(let h=0,u=0;h=this.diagonalSize&&(u=++h)}};He=new WeakMap;let X=ln;X.prototype.klassType="SymmetricMatrix";class te extends X{static isDistanceMatrix(g){return X.isSymmetricMatrix(g)&&g.klassSubType==="DistanceMatrix"}constructor(g){if(super(g),!this.isDistance())throw new TypeError("Provided arguments do no produce a distance matrix")}set(g,h,u){return g===h&&(u=0),super.set(g,h,u)}addCross(g,h){return h===void 0&&(h=g,g=this.diagonalSize),h=h.slice(),h[g]=0,super.addCross(g,h)}toSymmetricMatrix(){return new X(this)}clone(){const g=new te(this.diagonalSize);for(const[h,u,d]of this.upperRightEntries())h!==u&&g.set(h,u,d);return g}toCompact(){const{diagonalSize:g}=this,h=(g-1)*g/2,u=new Array(h);for(let d=1,v=0,q=0;q=g&&(d=++v+1);return u}static fromCompact(g){const h=g.length;if(h===0)return new this(0);const u=(Math.sqrt(8*h+1)+1)/2;if(!Number.isInteger(u))throw new TypeError(`This array is not a compact representation of a DistanceMatrix, ${JSON.stringify(g)}`);const d=new this(u);for(let v=1,q=0,O=0;O=u&&(v=++q+1);return d}}te.prototype.klassSubType="DistanceMatrix";class le extends ie{constructor(g,h,u){super(),this.matrix=g,this.rows=h,this.columns=u}}class xe extends le{constructor(g,h){p(g,h),super(g,g.rows,1),this.column=h}set(g,h,u){return this.matrix.set(g,this.column,u),this}get(g){return this.matrix.get(g,this.column)}}class De extends le{constructor(g,h){_(g,h),super(g,g.rows,h.length),this.columnIndices=h}set(g,h,u){return this.matrix.set(g,this.columnIndices[h],u),this}get(g,h){return this.matrix.get(g,this.columnIndices[h])}}class Je extends le{constructor(g){super(g,g.rows,g.columns)}set(g,h,u){return this.matrix.set(g,this.columns-h-1,u),this}get(g,h){return this.matrix.get(g,this.columns-h-1)}}class rr extends le{constructor(g){super(g,g.rows,g.columns)}set(g,h,u){return this.matrix.set(this.rows-g-1,h,u),this}get(g,h){return this.matrix.get(this.rows-g-1,h)}}class Qe extends le{constructor(g,h){l(g,h),super(g,1,g.columns),this.row=h}set(g,h,u){return this.matrix.set(this.row,h,u),this}get(g,h){return this.matrix.get(this.row,h)}}class Ve extends le{constructor(g,h){x(g,h),super(g,h.length,g.columns),this.rowIndices=h}set(g,h,u){return this.matrix.set(this.rowIndices[g],h,u),this}get(g,h){return this.matrix.get(this.rowIndices[g],h)}}class Ee extends le{constructor(g,h,u){x(g,h),_(g,u),super(g,h.length,u.length),this.rowIndices=h,this.columnIndices=u}set(g,h,u){return this.matrix.set(this.rowIndices[g],this.columnIndices[h],u),this}get(g,h){return this.matrix.get(this.rowIndices[g],this.columnIndices[h])}}class Mt extends le{constructor(g,h,u,d,v){b(g,h,u,d,v),super(g,u-h+1,v-d+1),this.startRow=h,this.startColumn=d}set(g,h,u){return this.matrix.set(this.startRow+g,this.startColumn+h,u),this}get(g,h){return this.matrix.get(this.startRow+g,this.startColumn+h)}}class Me extends le{constructor(g){super(g,g.columns,g.rows)}set(g,h,u){return this.matrix.set(h,g,u),this}get(g,h){return this.matrix.get(h,g)}}class St extends ie{constructor(g,h={}){const{rows:u=1}=h;if(g.length%u!==0)throw new Error("the data length is not divisible by the number of rows");super(),this.rows=u,this.columns=g.length/u,this.data=g}set(g,h,u){let d=this._calculateIndex(g,h);return this.data[d]=u,this}get(g,h){let u=this._calculateIndex(g,h);return this.data[u]}_calculateIndex(g,h){return g*this.columns+h}}class Fe extends ie{constructor(g){super(),this.data=g,this.rows=g.length,this.columns=g[0].length}set(g,h,u){return this.data[g][h]=u,this}get(g,h){return this.data[g][h]}}function qc(M,g){if(e.isAnyArray(M))return M[0]&&e.isAnyArray(M[0])?new Fe(M):new St(M,g);throw new Error("the argument is not an array")}class qt{constructor(g){g=Fe.checkMatrix(g);let h=g.clone(),u=h.rows,d=h.columns,v=new Float64Array(u),q=1,O,T,k,B,C,W,ne,U,K;for(O=0;OMath.abs(U[B])&&(B=O);if(B!==T){for(k=0;k=0;k--){for(T=0;Tq?d.set(v,q,g.get(v,q)):v===q?d.set(v,q,1):d.set(v,q,0);return d}get upperTriangularMatrix(){let g=this.LU,h=g.rows,u=g.columns,d=new P(h,u);for(let v=0;vMath.abs(g)?(h=g/M,Math.abs(M)*Math.sqrt(1+h*h)):g!==0?(h=M/g,Math.abs(g)*Math.sqrt(1+h*h)):0}class Ye{constructor(g){g=Fe.checkMatrix(g);let h=g.clone(),u=g.rows,d=g.columns,v=new Float64Array(d),q,O,T,k;for(T=0;T=0;k--){for(T=0;T=0;O--){for(v=0;v=0;F--)if(U[F]!==0){for(let Q=F+1;Q=0;F--){if(F0;){let F,Q;for(F=de-2;F>=-1&&F!==-1;F--){const ae=Number.MIN_VALUE+Ae*Math.abs(U[F]+Math.abs(U[F+1]));if(Math.abs(L[F])<=ae||Number.isNaN(L[F])){L[F]=0;break}}if(F===de-2)Q=4;else{let ae;for(ae=de-1;ae>=F&&ae!==F;ae--){let H=(ae!==de?Math.abs(L[ae]):0)+(ae!==F+1?Math.abs(L[ae-1]):0);if(Math.abs(U[ae])<=Ae*H){U[ae]=0;break}}ae===F?Q=3:ae===de-1?Q=1:(Q=2,F=ae)}switch(F++,Q){case 1:{let ae=L[de-2];L[de-2]=0;for(let H=de-2;H>=F;H--){let Ce=We(U[H],ae),qe=U[H]/Ce,Ie=ae/Ce;if(U[H]=Ce,H!==F&&(ae=-Ie*L[H-1],L[H-1]=qe*L[H-1]),k)for(let Pe=0;Pe=U[F+1]);){let ae=U[F];if(U[F]=U[F+1],U[F+1]=ae,k&&Fh&&v.set(B,C,g.get(B,C)/this.s[C]);let q=this.U,O=q.rows,T=q.columns,k=new P(u,O);for(let B=0;Bg&&h++;return h}get diagonal(){return Array.from(this.s)}get threshold(){return Number.EPSILON/2*Math.max(this.m,this.n)*this.s[0]}get leftSingularVectors(){return this.U}get rightSingularVectors(){return this.V}get diagonalMatrix(){return P.diag(this.s)}}function nr(M,g=!1){return M=Fe.checkMatrix(M),g?new ht(M).inverse():sn(M,P.eye(M.rows))}function sn(M,g,h=!1){return M=Fe.checkMatrix(M),g=Fe.checkMatrix(g),h?new ht(M).solve(g):M.isSquare()?new qt(M).solve(g):new Ye(M).solve(g)}function Gt(M){if(M=P.checkMatrix(M),M.isSquare()){if(M.columns===0)return 1;let g,h,u,d;if(M.columns===2)return g=M.get(0,0),h=M.get(0,1),u=M.get(1,0),d=M.get(1,1),g*d-h*u;if(M.columns===3){let v,q,O;return v=new Ee(M,[1,2],[1,2]),q=new Ee(M,[1,2],[0,2]),O=new Ee(M,[1,2],[0,1]),g=M.get(0,0),h=M.get(0,1),u=M.get(0,2),g*Gt(v)-h*Gt(q)+u*Gt(O)}else return new qt(M).determinant}else throw Error("determinant can only be calculated for a square matrix")}function jt(M,g){let h=[];for(let u=0;ud)return new Array(g.rows+1).fill(0);{let v=g.addRow(h,[0]);for(let q=0;qg?v[q]=1/v[q]:v[q]=0;return d.mmul(P.diag(v).mmul(u.transpose()))}function un(M,g=M,h={}){M=new P(M);let u=!1;if(typeof g=="object"&&!P.isMatrix(g)&&!e.isAnyArray(g)?(h=g,g=M,u=!0):g=new P(g),M.rows!==g.rows)throw new TypeError("Both matrices must have the same number of rows");const{center:d=!0}=h;d&&(M=M.center("column"),u||(g=g.center("column")));const v=M.transpose().mmul(g);for(let q=0;q0?d.set(v,v+1,h[v]):h[v]<0&&d.set(v,v-1,h[v])}return d}}function Vx(M,g,h,u){let d,v,q,O,T,k,B,C;for(T=0;T0;O--){for(C=0,q=0,k=0;k0&&(v=-v),g[O]=C*v,q=q-d*v,h[O-1]=d-v,T=0;Tk)do{for(d=h[k],C=(h[k+1]-d)/(2*g[k]),W=We(C,1),C<0&&(W=-W),h[k]=g[k]/(C+W),h[k+1]=g[k]*(C+W),ne=h[k+1],v=d-h[k],q=k+2;q=k;q--)for(oe=K,K=U,fe=re,d=U*g[q],v=U*C,W=We(C,g[q]),g[q+1]=re*W,re=g[q]/W,U=C/W,C=U*h[q]-re*d,h[q+1]=v+re*(U*d+re*h[q]),T=0;Tje*ye);h[k]=h[k]+ve,g[k]=0}for(q=0;q=C;k--)h[k]=g.get(k,C-1)/W,T+=h[k]*h[k];for(O=Math.sqrt(T),h[C]>0&&(O=-O),T=T-h[C]*O,h[C]=h[C]-O,B=C;B=C;k--)q+=h[k]*g.get(k,B);for(q=q/T,k=C;k<=v;k++)g.set(k,B,g.get(k,B)-q*h[k])}for(k=0;k<=v;k++){for(q=0,B=v;B>=C;B--)q+=h[B]*g.get(k,B);for(q=q/T,B=C;B<=v;B++)g.set(k,B,g.get(k,B)-q*h[B])}h[C]=W*h[C],g.set(C,C-1,W*O)}}for(k=0;k=d+1;C--)if(g.get(C,C-1)!==0){for(k=C+1;k<=v;k++)h[k]=g.get(k,C-1);for(B=C;B<=v;B++){for(O=0,k=C;k<=v;k++)O+=h[k]*u.get(k,B);for(O=O/h[C]/g.get(C,C-1),k=C;k<=v;k++)u.set(k,B,u.get(k,B)+O*h[k])}}}function Kx(M,g,h,u,d){let v=M-1,q=0,O=M-1,T=Number.EPSILON,k=0,B=0,C=0,W=0,ne=0,U=0,K=0,oe=0,L,re,fe,ve,ye,je,de,ge,Ae,F,Q,ae,H,Ce,qe;for(L=0;LO)&&(h[L]=d.get(L,L),g[L]=0),re=Math.max(L-1,0);re=q;){for(ve=v;ve>q&&(U=Math.abs(d.get(ve-1,ve-1))+Math.abs(d.get(ve,ve)),U===0&&(U=B),!(Math.abs(d.get(ve,ve-1))=0){for(K=C>=0?C+K:C-K,h[v-1]=ge+K,h[v]=h[v-1],K!==0&&(h[v]=ge-de/K),g[v-1]=0,g[v]=0,ge=d.get(v,v-1),U=Math.abs(ge)+Math.abs(K),C=ge/U,W=K/U,ne=Math.sqrt(C*C+W*W),C=C/ne,W=W/ne,re=v-1;re0)){for(U=Math.sqrt(U),Ae=ve&&(K=d.get(ye,ye),ne=ge-K,U=Ae-K,C=(ne*U-de)/d.get(ye+1,ye)+d.get(ye,ye+1),W=d.get(ye+1,ye+1)-K-ne-U,ne=d.get(ye+2,ye+1),U=Math.abs(C)+Math.abs(W)+Math.abs(ne),C=C/U,W=W/U,ne=ne/U,!(ye===ve||Math.abs(d.get(ye,ye-1))*(Math.abs(W)+Math.abs(ne))ye+2&&d.set(L,L-3,0);for(fe=ye;fe<=v-1&&(Ce=fe!==v-1,fe!==ye&&(C=d.get(fe,fe-1),W=d.get(fe+1,fe-1),ne=Ce?d.get(fe+2,fe-1):0,ge=Math.abs(C)+Math.abs(W)+Math.abs(ne),ge!==0&&(C=C/ge,W=W/ge,ne=ne/ge)),ge!==0);fe++)if(U=Math.sqrt(C*C+W*W+ne*ne),C<0&&(U=-U),U!==0){for(fe!==ye?d.set(fe,fe-1,-U*ge):ve!==ye&&d.set(fe,fe-1,-d.get(fe,fe-1)),C=C+U,ge=C/U,Ae=W/U,K=ne/U,W=W/C,ne=ne/C,re=fe;re=0;v--)if(C=h[v],W=g[v],W===0)for(ve=v,d.set(v,v,1),L=v-1;L>=0;L--){for(de=d.get(L,L)-C,ne=0,re=ve;re<=v;re++)ne=ne+d.get(L,re)*d.get(re,v);if(g[L]<0)K=de,U=ne;else if(ve=L,g[L]===0?d.set(L,v,de!==0?-ne/de:-ne/(T*B)):(ge=d.get(L,L+1),Ae=d.get(L+1,L),W=(h[L]-C)*(h[L]-C)+g[L]*g[L],je=(ge*U-K*ne)/W,d.set(L,v,je),d.set(L+1,v,Math.abs(ge)>Math.abs(K)?(-ne-de*je)/ge:(-U-Ae*je)/K)),je=Math.abs(d.get(L,v)),T*je*je>1)for(re=L;re<=v;re++)d.set(re,v,d.get(re,v)/je)}else if(W<0)for(ve=v-1,Math.abs(d.get(v,v-1))>Math.abs(d.get(v-1,v))?(d.set(v-1,v-1,W/d.get(v,v-1)),d.set(v-1,v,-(d.get(v,v)-C)/d.get(v,v-1))):(qe=cn(0,-d.get(v-1,v),d.get(v-1,v-1)-C,W),d.set(v-1,v-1,qe[0]),d.set(v-1,v,qe[1])),d.set(v,v-1,0),d.set(v,v,1),L=v-2;L>=0;L--){for(F=0,Q=0,re=ve;re<=v;re++)F=F+d.get(L,re)*d.get(re,v-1),Q=Q+d.get(L,re)*d.get(re,v);if(de=d.get(L,L)-C,g[L]<0)K=de,ne=F,U=Q;else if(ve=L,g[L]===0?(qe=cn(-F,-Q,de,W),d.set(L,v-1,qe[0]),d.set(L,v,qe[1])):(ge=d.get(L,L+1),Ae=d.get(L+1,L),ae=(h[L]-C)*(h[L]-C)+g[L]*g[L]-W*W,H=(h[L]-C)*2*W,ae===0&&H===0&&(ae=T*B*(Math.abs(de)+Math.abs(W)+Math.abs(ge)+Math.abs(Ae)+Math.abs(K))),qe=cn(ge*ne-K*F+W*Q,ge*U-K*Q-W*F,ae,H),d.set(L,v-1,qe[0]),d.set(L,v,qe[1]),Math.abs(ge)>Math.abs(K)+Math.abs(W)?(d.set(L+1,v-1,(-F-de*d.get(L,v-1)+W*d.get(L,v))/ge),d.set(L+1,v,(-Q-de*d.get(L,v)-W*d.get(L,v-1))/ge)):(qe=cn(-ne-Ae*d.get(L,v-1),-U-Ae*d.get(L,v),K,W),d.set(L+1,v-1,qe[0]),d.set(L+1,v,qe[1]))),je=Math.max(Math.abs(d.get(L,v-1)),Math.abs(d.get(L,v))),T*je*je>1)for(re=L;re<=v;re++)d.set(re,v-1,d.get(re,v-1)/je),d.set(re,v,d.get(re,v)/je)}for(L=0;LO)for(re=L;re=q;re--)for(L=q;L<=O;L++){for(K=0,fe=q;fe<=Math.min(re,O);fe++)K=K+u.get(L,fe)*d.get(fe,re);u.set(L,re,K)}}}function cn(M,g,h,u){let d,v;return Math.abs(h)>Math.abs(u)?(d=u/h,v=h+d*u,[(M+d*g)/v,(g-d*M)/v]):(d=h/u,v=u+d*h,[(d*M+g)/v,(d*g-M)/v])}class M0{constructor(g){if(g=Fe.checkMatrix(g),!g.isSymmetric())throw new Error("Matrix is not symmetric");let h=g,u=h.rows,d=new P(u,u),v=!0,q,O,T;for(O=0;O0),d.set(O,O,Math.sqrt(Math.max(k,0))),T=O+1;T=0;T--)for(O=0;Oq;ne++)C=g.transpose().mmul(O).div(O.transpose().mmul(O).get(0,0)),C=C.div(C.norm()),k=g.mmul(C).div(C.transpose().mmul(C).get(0,0)),ne>0&&(T=k.clone().sub(W).pow(2).sum()),W=k.clone(),u?(B=u.transpose().mmul(k).div(k.transpose().mmul(k).get(0,0)),B=B.div(B.norm()),O=u.mmul(B).div(B.transpose().mmul(B).get(0,0))):O=k;if(u){let ne=g.transpose().mmul(k).div(k.transpose().mmul(k).get(0,0));ne=ne.div(ne.norm());let U=g.clone().sub(k.clone().mmul(ne.transpose())),K=O.transpose().mmul(k).div(k.transpose().mmul(k).get(0,0)),oe=u.clone().sub(k.clone().mulS(K.get(0,0)).mmul(B.transpose()));this.t=k,this.p=ne.transpose(),this.w=C.transpose(),this.q=B,this.u=O,this.s=k.transpose().mmul(k),this.xResidual=U,this.yResidual=oe,this.betas=K}else this.w=C.transpose(),this.s=k.transpose().mmul(k).sqrt(),d?this.t=k.clone().div(this.s.get(0,0)):this.t=k,this.xResidual=g.sub(k.mmul(C.transpose()))}}return we.AbstractMatrix=ie,we.CHO=M0,we.CholeskyDecomposition=M0,we.DistanceMatrix=te,we.EVD=mt,we.EigenvalueDecomposition=mt,we.LU=qt,we.LuDecomposition=qt,we.Matrix=P,we.MatrixColumnSelectionView=De,we.MatrixColumnView=xe,we.MatrixFlipColumnView=Je,we.MatrixFlipRowView=rr,we.MatrixRowSelectionView=Ve,we.MatrixRowView=Qe,we.MatrixSelectionView=Ee,we.MatrixSubView=Mt,we.MatrixTransposeView=Me,we.NIPALS=S0,we.Nipals=S0,we.QR=Ye,we.QrDecomposition=Ye,we.SVD=ht,we.SingularValueDecomposition=ht,we.SymmetricMatrix=X,we.WrapperMatrix1D=St,we.WrapperMatrix2D=Fe,we.correlation=vt,we.covariance=un,we.default=P,we.determinant=Gt,we.inverse=nr,we.linearDependencies=an,we.pseudoInverse=Rc,we.solve=sn,we.wrap=qc,we}var Tr=Kw(),Pf=kf(Tr);const It=Tr.Matrix,Lf=Tr.SingularValueDecomposition;Pf.Matrix?Pf.Matrix:Tr.Matrix;const Xw={center:[0,0],linkDistance:50};class Df{constructor(r={}){this.options=r,this.id="mds",this.options=Object.assign(Object.assign({},Xw),r)}execute(r,t){return se(this,void 0,void 0,function*(){return this.genericMDSLayout(!1,r,t)})}assign(r,t){return se(this,void 0,void 0,function*(){yield this.genericMDSLayout(!0,r,t)})}genericMDSLayout(r,t,n){return se(this,void 0,void 0,function*(){const i=Object.assign(Object.assign({},this.options),n),{center:s=[0,0],linkDistance:a=50}=i,o=t.getAllNodes(),c=t.getAllEdges();if(!(o!=null&&o.length)||o.length===1)return Lt(t,r,s);const f=xf({nodes:o,edges:c}),l=Ef(f);Zw(l);const p=Fy(l,a),m=Jw(p),y=[];return m.forEach((_,b)=>{const w=it(o[b]);w.data.x=_[0]+s[0],w.data.y=_[1]+s[1],y.push(w)}),r&&y.forEach(_=>t.mergeNodeData(_.id,{x:_.data.x,y:_.data.y})),{nodes:y,edges:c}})}}const Zw=e=>{let r=-999999;e.forEach(t=>{t.forEach(n=>{n!==1/0&&r{t.forEach((i,s)=>{i===1/0&&(e[n][s]=r)})})},Jw=e=>{const t=It.mul(It.pow(e,2),-.5),n=t.mean("row"),i=t.mean("column"),s=t.mean();t.add(s).subRowVector(n).subColumnVector(i);const a=new Lf(t),o=It.sqrt(a.diagonalMatrix).diagonal();return a.leftSingularVectors.toJSON().map(c=>It.mul([c],[o]).toJSON()[0].splice(0,2))};function zf(e){return!!e.tick&&!!e.stop}const Qw={gForce:!0,force2:!0,d3force:!0,fruchterman:!0,forceAtlas2:!0,force:!0,"graphin-force":!0},Hw={center:[0,0],comboPadding:10,treeKey:"combo"};class e1{constructor(r={}){this.options=r,this.id="comboCombined",this.options=Object.assign(Object.assign({},Hw),r)}execute(r,t){return se(this,void 0,void 0,function*(){return this.genericComboCombinedLayout(!1,r,t)})}assign(r,t){return se(this,void 0,void 0,function*(){yield this.genericComboCombinedLayout(!0,r,t)})}genericComboCombinedLayout(r,t,n){return se(this,void 0,void 0,function*(){const i=this.initVals(Object.assign(Object.assign({},this.options),n)),{center:s,treeKey:a,outerLayout:o}=i,c=t.getAllNodes().filter(I=>!I.data._isCombo),f=t.getAllNodes().filter(I=>I.data._isCombo),l=t.getAllEdges(),p=c==null?void 0:c.length;if(!p||p===1)return Lt(t,r,s);const m=[],y=new Map;c.forEach(I=>{y.set(I.id,I)});const x=new Map;f.forEach(I=>{x.set(I.id,I)});const _=new Map,b=this.getInnerGraphs(t,a,y,x,l,i,_);yield Promise.all(b);const w=new Map,E=[],N=new Map;let S=!0;t.getRoots(a).forEach(I=>{const D=_.get(I.id),z=x.get(I.id)||y.get(I.id),$={id:I.id,data:Object.assign(Object.assign({},I.data),{x:D.data.x||z.data.x,y:D.data.y||z.data.y,fx:D.data.fx||z.data.fx,fy:D.data.fy||z.data.fy,mass:D.data.mass||z.data.mass,size:D.data.size})};E.push($),w.set(I.id,!0),!isNaN($.data.x)&&$.data.x!==0&&!isNaN($.data.y)&&$.data.y!==0?S=!1:($.data.x=Math.random()*100,$.data.y=Math.random()*100),Sn(t,[I],V=>{V.id!==I.id&&N.set(V.id,I.id)},"TB",a)});const R=[];l.forEach(I=>{const D=N.get(I.source)||I.source,z=N.get(I.target)||I.target;D!==z&&w.has(D)&&w.has(z)&&R.push({id:I.id,source:D,target:z,data:{}})});let A;if(E!=null&&E.length){if(E.length===1)E[0].data.x=s[0],E[0].data.y=s[1];else{const I=new Be({nodes:E,edges:R}),D=o||new Af;S&&Qw[D.id]&&(yield(E.length<100?new Df:new An).assign(I));const z=Object.assign({center:s,kg:5,preventOverlap:!0,animate:!1},D.id==="force"?{gravity:1,factor:4,linkDistance:($,V,Y)=>{const ee=Math.max(...V.data.size)||32,J=Math.max(...Y.data.size)||32;return ee/2+J/2+200}}:{});A=yield Ff(D,I,z)}_.forEach(I=>{var D;const z=A.nodes.find(Y=>Y.id===I.id);if(z){const{x:Y,y:ee}=z.data;I.data.visited=!0,I.data.x=Y,I.data.y=ee,m.push({id:I.id,data:{x:Y,y:ee}})}const{x:$,y:V}=I.data;(D=I.data.nodes)===null||D===void 0||D.forEach(Y=>{m.push({id:Y.id,data:{x:Y.data.x+$,y:Y.data.y+V}})})}),_.forEach(({data:I})=>{const{x:D,y:z,visited:$,nodes:V}=I;V==null||V.forEach(Y=>{if(!$){const ee=m.find(J=>J.id===Y.id);ee.data.x+=D||0,ee.data.y+=z||0}})})}return r&&m.forEach(I=>{t.mergeNodeData(I.id,{x:I.data.x,y:I.data.y})}),{nodes:m,edges:l}})}initVals(r){const t=Object.assign({},r),{nodeSize:n,spacing:i,comboPadding:s}=r;let a,o;if(me(i)?o=()=>i:wt(i)?o=i:o=()=>0,t.spacing=o,!n)a=f=>{const l=o(f);return f.size?bt(f.size)?((f.size[0]>f.size[1]?f.size[0]:f.size[1])+l)/2:Vt(f.size)?((f.size.width>f.size.height?f.size.width:f.size.height)+l)/2:(f.size+l)/2:32+l/2};else if(wt(n))a=f=>{const l=n(f),p=o(f);return bt(f.size)?((f.size[0]>f.size[1]?f.size[0]:f.size[1])+p)/2:((l||32)+p)/2};else if(bt(n)){const l=(n[0]>n[1]?n[0]:n[1])/2;a=p=>l+o(p)/2}else{const f=n/2;a=l=>f+o(l)/2}t.nodeSize=a;let c;return me(s)?c=()=>s:bt(s)?c=()=>Math.max.apply(null,s):wt(s)?c=s:c=()=>0,t.comboPadding=c,t}getInnerGraphs(r,t,n,i,s,a,o){const{nodeSize:c,comboPadding:f,spacing:l,innerLayout:p}=a,m=p||new An({}),y={center:[0,0],preventOverlap:!0,nodeSpacing:l},x=[],_=b=>{let w=(f==null?void 0:f(b))||10;return bt(w)&&(w=Math.max(...w)),{size:w?[w*2,w*2]:[30,30],padding:w}};return r.getRoots(t).forEach(b=>{o.set(b.id,{id:b.id,data:{nodes:[],size:_(b).size}});let w=Promise.resolve();Sn(r,[b],E=>{var N;if(!E.data._isCombo)return;const{size:S,padding:R}=_(E);if(!(!((N=r.getChildren(E.id,t))===null||N===void 0)&&N.length))o.set(E.id,{id:E.id,data:Object.assign(Object.assign({},E.data),{size:S})});else{const A=o.get(E.id);o.set(E.id,{id:E.id,data:Object.assign({nodes:[]},A==null?void 0:A.data)});const j=new Map,I=r.getChildren(E.id,t).map($=>{if($.data._isCombo)return o.has($.id)||o.set($.id,{id:$.id,data:Object.assign({},$.data)}),j.set($.id,!0),o.get($.id);const V=n.get($.id)||i.get($.id);return j.set($.id,!0),{id:$.id,data:Object.assign(Object.assign({},V.data),$.data)}}),D={nodes:I,edges:s.filter($=>j.has($.source)&&j.has($.target))};let z=1/0;I.forEach($=>{var V;let{size:Y}=$.data;Y||(Y=((V=o.get($.id))===null||V===void 0?void 0:V.data.size)||(c==null?void 0:c($))||[30,30]),me(Y)&&(Y=[Y,Y]);const[ee,J]=Y;z>ee&&(z=ee),z>J&&(z=J),$.data.size=Y}),w=w.then(()=>se(this,void 0,void 0,function*(){const $=new Be(D);yield Ff(m,$,y,!0);const{minX:V,minY:Y,maxX:ee,maxY:J}=By(I),ue={x:(ee+V)/2,y:(J+Y)/2};D.nodes.forEach(Z=>{Z.data.x-=ue.x,Z.data.y-=ue.y});const be=[Math.max(ee-V,z)+R*2,Math.max(J-Y,z)+R*2];o.get(E.id).data.size=be,o.get(E.id).data.nodes=I}))}return!0},"BT",t),x.push(w)}),x}}function Ff(e,r,t,n){var i;return se(this,void 0,void 0,function*(){return zf(e)?(e.execute(r,t),e.stop(),e.tick((i=t.iterations)!==null&&i!==void 0?i:300)):n?yield e.assign(r,t):yield e.execute(r,t)})}function t1(e,r){var t,n=1;e==null&&(e=0),r==null&&(r=0);function i(){var s,a=t.length,o,c=0,f=0;for(s=0;sm.index){var $=y-I.x-I.vx,V=x-I.y-I.vy,Y=$*$+V*V;Yy+z||Ax+z||jf.r&&(f.r=f[l].r)}function c(){if(r){var f,l=r.length,p;for(t=new Array(l),f=0;f[r(R,A,a),R])),S;for(b=0,o=new Array(w);b{}};function Cn(){for(var e=0,r=arguments.length,t={},n;e=0&&(n=t.slice(i+1),t=t.slice(0,i)),t&&!r.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}})}kr.prototype=Cn.prototype={constructor:kr,on:function(e,r){var t=this._,n=u1(e+"",t),i,s=-1,a=n.length;if(arguments.length<2){for(;++s0)for(var t=new Array(i),n=0,i,s;n=0&&e._call.call(void 0,r),e=e._next;--Kt}function Wf(){Dt=(Cr=hr.now())+Pr,Kt=cr=0;try{l1()}finally{Kt=0,d1(),Dt=0}}function h1(){var e=hr.now(),r=e-Cr;r>Gf&&(Pr-=r,Cr=e)}function d1(){for(var e,r=jr,t,n=1/0;r;)r._call?(n>r._time&&(n=r._time),e=r,r=r._next):(t=r._next,r._next=null,r=e?e._next=t:jr=t);lr=e,Dn(n)}function Dn(e){if(!Kt){cr&&(cr=clearTimeout(cr));var r=e-Dt;r>24?(e<1/0&&(cr=setTimeout(Wf,e-hr.now()-Pr)),fr&&(fr=clearInterval(fr))):(fr||(Cr=hr.now(),fr=setInterval(h1,Gf)),Kt=1,Uf(Wf))}}const g1=1664525,p1=1013904223,Yf=4294967296;function v1(){let e=1;return()=>(e=(g1*e+p1)%Yf)/Yf}function m1(e){return e.x}function y1(e){return e.y}var w1=10,b1=Math.PI*(3-Math.sqrt(5));function _1(e){var r,t=1,n=.001,i=1-Math.pow(n,1/300),s=0,a=.6,o=new Map,c=Ln(p),f=Cn("tick","end"),l=v1();e==null&&(e=[]);function p(){m(),f.call("tick",r),t1?(b==null?o.delete(_):o.set(_,x(b)),r):o.get(_)},find:function(_,b,w){var E=0,N=e.length,S,R,A,j,I;for(w==null?w=1/0:w*=w,E=0;E1?(f.on(_,b),r):f.on(_)}}}function E1(){var e,r,t,n,i=$e(-30),s,a=1,o=1/0,c=.81;function f(y){var x,_=e.length,b=Yt(e,m1,y1).visitAfter(p);for(n=y,x=0;x<_;++x)r=e[x],b.visit(m)}function l(){if(e){var y,x=e.length,_;for(s=new Array(x),y=0;y=o)return;(y.data!==r||y.next)&&(w===0&&(w=Tt(t),S+=w*w),E===0&&(E=Tt(t),S+=E*E),St.id},manyBody:{},center:{x:0,y:0}},this.context={options:{},assign:!1,nodes:[],edges:[]},Uc(this.options,r),this.options.forceSimulation&&(this.simulation=this.options.forceSimulation)}execute(r,t){return se(this,void 0,void 0,function*(){return this.genericLayout(!1,r,t)})}assign(r,t){return se(this,void 0,void 0,function*(){yield this.genericLayout(!0,r,t)})}stop(){this.simulation.stop()}tick(r){return this.simulation.tick(r),this.getResult()}restart(){this.simulation.restart()}setFixedPosition(r,t){const n=this.context.nodes.find(i=>i.id===r);n&&t.forEach((i,s)=>{if(typeof i=="number"||i===null){const a=["fx","fy","fz"][s];n[a]=i}})}getOptions(r){var t,n;const i=Uc({},this.options,r);return i.collide&&((t=i.collide)===null||t===void 0?void 0:t.radius)===void 0&&(i.collide=i.collide||{},i.collide.radius=(n=i.nodeSize)!==null&&n!==void 0?n:10),i.iterations===void 0&&(i.link&&i.link.iterations===void 0&&(i.iterations=i.link.iterations),i.collide&&i.collide.iterations===void 0&&(i.iterations=i.collide.iterations)),this.context.options=i,i}genericLayout(r,t,n){var i;return se(this,void 0,void 0,function*(){const s=this.getOptions(n),a=t.getAllNodes().map(({id:l,data:p})=>Object.assign(Object.assign({id:l},p),Vc(p.data,this.config.inputNodeAttrs))),o=t.getAllEdges().map(l=>Object.assign({},l));Object.assign(this.context,{assign:r,nodes:a,edges:o,graph:t});const c=new Promise(l=>{this.resolver=l}),f=this.setSimulation(s);return f.nodes(a),(i=f.force("link"))===null||i===void 0||i.links(o),c})}getResult(){const{assign:r,nodes:t,edges:n,graph:i}=this.context,s=t.map(o=>({id:o.id,data:Object.assign(Object.assign({},o.data),Vc(o,this.config.outputNodeAttrs))})),a=n.map(({id:o,source:c,target:f,data:l})=>({id:o,source:typeof c=="object"?c.id:c,target:typeof f=="object"?f.id:f,data:l}));return r&&s.forEach(o=>i.mergeNodeData(o.id,o.data)),{nodes:s,edges:a}}initSimulation(){return _1()}setSimulation(r){const t=this.simulation||this.options.forceSimulation||this.initSimulation();return this.simulation||(this.simulation=t.on("tick",()=>{var n;return(n=r.onTick)===null||n===void 0?void 0:n.call(r,this.getResult())}).on("end",()=>{var n;return(n=this.resolver)===null||n===void 0?void 0:n.call(this,this.getResult())})),Xf(t,this.config.simulationAttrs.map(n=>[n,r[n]])),Object.entries(this.forceMap).forEach(([n,i])=>{const s=n;if(r[n]){let a=t.force(s);a||(a=i(),t.force(s,a)),Xf(a,Object.entries(r[s]))}else t.force(s,null)}),t}}const Xf=(e,r)=>r.reduce((t,[n,i])=>!t[n]||i===void 0?t:t[n].call(e,i),e);function S1(e,r,t){var n,i=1;e==null&&(e=0),r==null&&(r=0),t==null&&(t=0);function s(){var a,o=n.length,c,f=0,l=0,p=0;for(a=0;a=(c=(a+o)/2))?a=c:o=c,n=i,!(i=i[p=+l]))return n[p]=s,e;if(f=+e._x.call(null,i.data),r===f)return s.next=i,n?n[p]=s:e._root=s,e;do n=n?n[p]=new Array(2):e._root=new Array(2),(l=r>=(c=(a+o)/2))?a=c:o=c;while((p=+l)==(m=+(f>=c)));return n[m]=i,n[p]=s,e}function R1(e){Array.isArray(e)||(e=Array.from(e));const r=e.length,t=new Float64Array(r);let n=1/0,i=-1/0;for(let s=0,a;si&&(i=a));if(n>i)return this;this.cover(n).cover(i);for(let s=0;se||e>=t;)switch(a=+(ea||(s=f.x1)=p))&&(f=o[o.length-1],o[o.length-1]=o[o.length-1-l],o[o.length-1-l]=f)}else{var m=Math.abs(e-+this._x.call(null,c.data));m=(f=(a+o)/2))?a=f:o=f,r=t,!(t=t[p=+l]))return this;if(!t.length)break;r[p+1&1]&&(n=r,m=p)}for(;t.data!==e;)if(i=t,!(t=t.next))return this;return(s=t.next)&&delete t.next,i?(s?i.next=s:delete i.next,this):r?(s?r[p]=s:delete r[p],(t=r[0]||r[1])&&t===(r[1]||r[0])&&!t.length&&(n?n[m]=t:this._root=t),this):(this._root=s,this)}function j1(e){for(var r=0,t=e.length;r1&&(_=y.y+y.vy),t>2&&(b=y.z+y.vz),m.visit(S);function S(R,A,j,I,D,z,$){var V=[A,j,I,D,z,$],Y=V[0],ee=V[1],J=V[2],ue=V[t],be=V[t+1],Z=V[t+2],ce=R.data,pe=R.r,he=w+pe;if(ce){if(ce.index>y.index){var ie=x-ce.x-ce.vx,_e=t>1?_-ce.y-ce.vy:0,G=t>2?b-ce.z-ce.vz:0,P=ie*ie+_e*_e+G*G;P1&&_e===0&&(_e=at(i),P+=_e*_e),t>2&&G===0&&(G=at(i),P+=G*G),P=(he-(P=Math.sqrt(P)))/P*s,y.vx+=(ie*=P)*(he=(pe*=pe)/(E+pe)),t>1&&(y.vy+=(_e*=P)*he),t>2&&(y.vz+=(G*=P)*he),ce.vx-=ie*(he=1-he),t>1&&(ce.vy-=_e*he),t>2&&(ce.vz-=G*he))}return}return Y>x+he||ue1&&(ee>_+he||be<_-he)||t>2&&(J>b+he||Zl.r&&(l.r=l[p].r)}function f(){if(r){var l,p=r.length,m;for(n=new Array(p),l=0;ltypeof m=="function")||Math.random,t=p.find(m=>[1,2,3].includes(m))||2,f()},o.iterations=function(l){return arguments.length?(a=+l,o):a},o.strength=function(l){return arguments.length?(s=+l,o):s},o.radius=function(l){return arguments.length?(e=typeof l=="function"?l:Le(+l),f(),o):e},o}function G1(e){return e.index}function Hf(e,r){var t=e.get(r);if(!t)throw new Error("node not found: "+r);return t}function U1(e){var r=G1,t=m,n,i=Le(30),s,a,o,c,f,l,p=1;e==null&&(e=[]);function m(w){return 1/Math.min(c[w.source.index],c[w.target.index])}function y(w){for(var E=0,N=e.length;E1&&(D=j.y+j.vy-A.y-A.vy||at(l)),o>2&&(z=j.z+j.vz-A.z-A.vz||at(l)),$=Math.sqrt(I*I+D*D+z*z),$=($-s[S])/$*w*n[S],I*=$,D*=$,z*=$,j.vx-=I*(V=f[S]),o>1&&(j.vy-=D*V),o>2&&(j.vz-=z*V),A.vx+=I*(V=1-V),o>1&&(A.vy+=D*V),o>2&&(A.vz+=z*V)}function x(){if(a){var w,E=a.length,N=e.length,S=new Map(a.map((A,j)=>[r(A,j,a),A])),R;for(w=0,c=new Array(E);wtypeof N=="function")||Math.random,o=E.find(N=>[1,2,3].includes(N))||2,x()},y.links=function(w){return arguments.length?(e=w,x(),y):e},y.id=function(w){return arguments.length?(r=w,y):r},y.iterations=function(w){return arguments.length?(p=+w,y):p},y.strength=function(w){return arguments.length?(t=typeof w=="function"?w:Le(+w),_(),y):t},y.distance=function(w){return arguments.length?(i=typeof w=="function"?w:Le(+w),b(),y):i},y}const V1=1664525,W1=1013904223,el=4294967296;function Y1(){let e=1;return()=>(e=(V1*e+W1)%el)/el}var tl=3;function $n(e){return e.x}function rl(e){return e.y}function K1(e){return e.z}var X1=10,Z1=Math.PI*(3-Math.sqrt(5)),J1=Math.PI*20/(9+Math.sqrt(221));function Q1(e,r){r=r||2;var t=Math.min(tl,Math.max(1,Math.round(r))),n,i=1,s=.001,a=1-Math.pow(s,1/300),o=0,c=.6,f=new Map,l=Ln(y),p=Cn("tick","end"),m=Y1();e==null&&(e=[]);function y(){x(),p.call("tick",n),i1&&(S.fy==null?S.y+=S.vy*=c:(S.y=S.fy,S.vy=0)),t>2&&(S.fz==null?S.z+=S.vz*=c:(S.z=S.fz,S.vz=0));return n}function _(){for(var w=0,E=e.length,N;w1&&isNaN(N.y)||t>2&&isNaN(N.z)){var S=X1*(t>2?Math.cbrt(.5+w):t>1?Math.sqrt(.5+w):w),R=w*Z1,A=w*J1;t===1?N.x=S:t===2?(N.x=S*Math.cos(R),N.y=S*Math.sin(R)):(N.x=S*Math.sin(R)*Math.cos(A),N.y=S*Math.cos(R),N.z=S*Math.sin(R)*Math.sin(A))}(isNaN(N.vx)||t>1&&isNaN(N.vy)||t>2&&isNaN(N.vz))&&(N.vx=0,t>1&&(N.vy=0),t>2&&(N.vz=0))}}function b(w){return w.initialize&&w.initialize(e,m,t),w}return _(),n={tick:x,restart:function(){return l.restart(y),n},stop:function(){return l.stop(),n},numDimensions:function(w){return arguments.length?(t=Math.min(tl,Math.max(1,Math.round(w))),f.forEach(b),n):t},nodes:function(w){return arguments.length?(e=w,_(),f.forEach(b),n):e},alpha:function(w){return arguments.length?(i=+w,n):i},alphaMin:function(w){return arguments.length?(s=+w,n):s},alphaDecay:function(w){return arguments.length?(a=+w,n):+a},alphaTarget:function(w){return arguments.length?(o=+w,n):o},velocityDecay:function(w){return arguments.length?(c=1-w,n):1-c},randomSource:function(w){return arguments.length?(m=w,f.forEach(b),n):m},force:function(w,E){return arguments.length>1?(E==null?f.delete(w):f.set(w,b(E)),n):f.get(w)},find:function(){var w=Array.prototype.slice.call(arguments),E=w.shift()||0,N=(t>1?w.shift():null)||0,S=(t>2?w.shift():null)||0,R=w.shift()||1/0,A=0,j=e.length,I,D,z,$,V,Y;for(R*=R,A=0;A1?(p.on(w,E),n):p.on(w)}}}function H1(){var e,r,t,n,i,s=Le(-30),a,o=1,c=1/0,f=.81;function l(x){var _,b=e.length,w=(r===1?zn(e,$n):r===2?Yt(e,$n,rl):r===3?Ar(e,$n,rl,K1):null).visitAfter(m);for(i=x,_=0;_1&&(x.y=S/E),r>2&&(x.z=R/E)}else{b=x,b.x=b.data.x,r>1&&(b.y=b.data.y),r>2&&(b.z=b.data.z);do _+=a[b.data.index];while(b=b.next)}x.value=_}function y(x,_,b,w,E){if(!x.value)return!0;var N=[b,w,E][r-1],S=x.x-t.x,R=r>1?x.y-t.y:0,A=r>2?x.z-t.z:0,j=N-_,I=S*S+R*R+A*A;if(j*j/f1&&R===0&&(R=at(n),I+=R*R),r>2&&A===0&&(A=at(n),I+=A*A),I1&&(t.vy+=R*x.value*i/I),r>2&&(t.vz+=A*x.value*i/I)),!0;if(x.length||I>=c)return;(x.data!==t||x.next)&&(S===0&&(S=at(n),I+=S*S),r>1&&R===0&&(R=at(n),I+=R*R),r>2&&A===0&&(A=at(n),I+=A*A),I1&&(t.vy+=R*j),r>2&&(t.vz+=A*j));while(x=x.next)}return l.initialize=function(x,..._){e=x,n=_.find(b=>typeof b=="function")||Math.random,r=_.find(b=>[1,2,3].includes(b))||2,p()},l.strength=function(x){return arguments.length?(s=typeof x=="function"?x:Le(+x),p(),l):s},l.distanceMin=function(x){return arguments.length?(o=x*x,l):Math.sqrt(o)},l.distanceMax=function(x){return arguments.length?(c=x*x,l):Math.sqrt(c)},l.theta=function(x){return arguments.length?(f=x*x,l):Math.sqrt(f)},l}function eb(e,r,t,n){var i,s,a=Le(.1),o,c;typeof e!="function"&&(e=Le(+e)),r==null&&(r=0),t==null&&(t=0),n==null&&(n=0);function f(p){for(var m=0,y=i.length;m1&&(x.vy+=b*N),s>2&&(x.vz+=w*N)}}function l(){if(i){var p,m=i.length;for(o=new Array(m),c=new Array(m),p=0;p[1,2,3].includes(y))||2,l()},f.strength=function(p){return arguments.length?(a=typeof p=="function"?p:Le(+p),l(),f):a},f.radius=function(p){return arguments.length?(e=typeof p=="function"?p:Le(+p),l(),f):e},f.x=function(p){return arguments.length?(r=+p,f):r},f.y=function(p){return arguments.length?(t=+p,f):t},f.z=function(p){return arguments.length?(n=+p,f):n},f}function tb(e){var r=Le(.1),t,n,i;typeof e!="function"&&(e=Le(e==null?0:+e));function s(o){for(var c=0,f=t.length,l;cr.id},manyBody:{},center:{x:0,y:0,z:0}}}initSimulation(){return Q1()}}function Gn(e){throw new Error('Could not dynamically require "'+e+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var Un,nl;function sb(){if(nl)return Un;nl=1;function e(){this.__data__=[],this.size=0}return Un=e,Un}var Vn,il;function Xt(){if(il)return Vn;il=1;function e(r,t){return r===t||r!==r&&t!==t}return Vn=e,Vn}var Wn,sl;function Lr(){if(sl)return Wn;sl=1;var e=Xt();function r(t,n){for(var i=t.length;i--;)if(e(t[i][0],n))return i;return-1}return Wn=r,Wn}var Yn,ol;function ob(){if(ol)return Yn;ol=1;var e=Lr(),r=Array.prototype,t=r.splice;function n(i){var s=this.__data__,a=e(s,i);if(a<0)return!1;var o=s.length-1;return a==o?s.pop():t.call(s,a,1),--this.size,!0}return Yn=n,Yn}var Kn,al;function ab(){if(al)return Kn;al=1;var e=Lr();function r(t){var n=this.__data__,i=e(n,t);return i<0?void 0:n[i][1]}return Kn=r,Kn}var Xn,ul;function ub(){if(ul)return Xn;ul=1;var e=Lr();function r(t){return e(this.__data__,t)>-1}return Xn=r,Xn}var Zn,cl;function cb(){if(cl)return Zn;cl=1;var e=Lr();function r(t,n){var i=this.__data__,s=e(i,t);return s<0?(++this.size,i.push([t,n])):i[s][1]=n,this}return Zn=r,Zn}var Jn,fl;function Dr(){if(fl)return Jn;fl=1;var e=sb(),r=ob(),t=ab(),n=ub(),i=cb();function s(a){var o=-1,c=a==null?0:a.length;for(this.clear();++o-1&&n%1==0&&n-1&&t%1==0&&t<=e}return Xi=r,Xi}var Ji,fh;function Pb(){if(fh)return Ji;fh=1;var e=zt(),r=Zi(),t=pt(),n="[object Arguments]",i="[object Array]",s="[object Boolean]",a="[object Date]",o="[object Error]",c="[object Function]",f="[object Map]",l="[object Number]",p="[object Object]",m="[object RegExp]",y="[object Set]",x="[object String]",_="[object WeakMap]",b="[object ArrayBuffer]",w="[object DataView]",E="[object Float32Array]",N="[object Float64Array]",S="[object Int8Array]",R="[object Int16Array]",A="[object Int32Array]",j="[object Uint8Array]",I="[object Uint8ClampedArray]",D="[object Uint16Array]",z="[object Uint32Array]",$={};$[E]=$[N]=$[S]=$[R]=$[A]=$[j]=$[I]=$[D]=$[z]=!0,$[n]=$[i]=$[b]=$[s]=$[w]=$[a]=$[o]=$[c]=$[f]=$[l]=$[p]=$[m]=$[y]=$[x]=$[_]=!1;function V(Y){return t(Y)&&r(Y.length)&&!!$[e(Y)]}return Ji=V,Ji}var Qi,lh;function Vr(){if(lh)return Qi;lh=1;function e(r){return function(t){return r(t)}}return Qi=e,Qi}var mr={exports:{}};mr.exports;var hh;function Hi(){return hh||(hh=1,function(e,r){var t=vl(),n=r&&!r.nodeType&&r,i=n&&!0&&e&&!e.nodeType&&e,s=i&&i.exports===n,a=s&&t.process,o=function(){try{var c=i&&i.require&&i.require("util").types;return c||a&&a.binding&&a.binding("util")}catch(f){}}();e.exports=o}(mr,mr.exports)),mr.exports}var es,dh;function yr(){if(dh)return es;dh=1;var e=Pb(),r=Vr(),t=Hi(),n=t&&t.isTypedArray,i=n?r(n):e;return es=i,es}var ts,gh;function ph(){if(gh)return ts;gh=1;var e=kb(),r=pr(),t=ze(),n=Jt(),i=Ur(),s=yr(),a=Object.prototype,o=a.hasOwnProperty;function c(f,l){var p=t(f),m=!p&&r(f),y=!p&&!m&&n(f),x=!p&&!m&&!y&&s(f),_=p||m||y||x,b=_?e(f.length,String):[],w=b.length;for(var E in f)(l||o.call(f,E))&&!(_&&(E=="length"||y&&(E=="offset"||E=="parent")||x&&(E=="buffer"||E=="byteLength"||E=="byteOffset")||i(E,w)))&&b.push(E);return b}return ts=c,ts}var rs,vh;function Wr(){if(vh)return rs;vh=1;var e=Object.prototype;function r(t){var n=t&&t.constructor,i=typeof n=="function"&&n.prototype||e;return t===i}return rs=r,rs}var ns,mh;function yh(){if(mh)return ns;mh=1;function e(r,t){return function(n){return r(t(n))}}return ns=e,ns}var is,wh;function Lb(){if(wh)return is;wh=1;var e=yh(),r=e(Object.keys,Object);return is=r,is}var ss,bh;function os(){if(bh)return ss;bh=1;var e=Wr(),r=Lb(),t=Object.prototype,n=t.hasOwnProperty;function i(s){if(!e(s))return r(s);var a=[];for(var o in Object(s))n.call(s,o)&&o!="constructor"&&a.push(o);return a}return ss=i,ss}var as,_h;function Et(){if(_h)return as;_h=1;var e=dr(),r=Zi();function t(n){return n!=null&&r(n.length)&&!e(n)}return as=t,as}var us,Eh;function kt(){if(Eh)return us;Eh=1;var e=ph(),r=os(),t=Et();function n(i){return t(i)?e(i):r(i)}return us=n,us}var cs,xh;function Db(){if(xh)return cs;xh=1;var e=gr(),r=kt();function t(n,i){return n&&e(i,r(i),n)}return cs=t,cs}var fs,Nh;function zb(){if(Nh)return fs;Nh=1;function e(r){var t=[];if(r!=null)for(var n in Object(r))t.push(n);return t}return fs=e,fs}var ls,Mh;function Fb(){if(Mh)return ls;Mh=1;var e=ut(),r=Wr(),t=zb(),n=Object.prototype,i=n.hasOwnProperty;function s(a){if(!e(a))return t(a);var o=r(a),c=[];for(var f in a)f=="constructor"&&(o||!i.call(a,f))||c.push(f);return c}return ls=s,ls}var hs,Sh;function Bt(){if(Sh)return hs;Sh=1;var e=ph(),r=Fb(),t=Et();function n(i){return t(i)?e(i,!0):r(i)}return hs=n,hs}var ds,qh;function Bb(){if(qh)return ds;qh=1;var e=gr(),r=Bt();function t(n,i){return n&&e(i,r(i),n)}return ds=t,ds}var wr={exports:{}};wr.exports;var Rh;function Oh(){return Rh||(Rh=1,function(e,r){var t=ft(),n=r&&!r.nodeType&&r,i=n&&!0&&e&&!e.nodeType&&e,s=i&&i.exports===n,a=s?t.Buffer:void 0,o=a?a.allocUnsafe:void 0;function c(f,l){if(l)return f.slice();var p=f.length,m=o?o(p):new f.constructor(p);return f.copy(m),m}e.exports=c}(wr,wr.exports)),wr.exports}var gs,Ah;function Ih(){if(Ah)return gs;Ah=1;function e(r,t){var n=-1,i=r.length;for(t||(t=Array(i));++ny))return!1;var _=p.get(a),b=p.get(o);if(_&&b)return _==o&&b==a;var w=-1,E=!0,N=c&i?new e:void 0;for(p.set(a,o),p.set(o,a);++w0&&s(l)?i>1?t(l,i-1,s,a,o):e(o,l):a||(o[o.length]=l)}return o}return ga=t,ga}var va,Hg;function D_(){if(Hg)return va;Hg=1;function e(r,t,n){switch(n.length){case 0:return r.call(t);case 1:return r.call(t,n[0]);case 2:return r.call(t,n[0],n[1]);case 3:return r.call(t,n[0],n[1],n[2])}return r.apply(t,n)}return va=e,va}var ma,ep;function tp(){if(ep)return ma;ep=1;var e=D_(),r=Math.max;function t(n,i,s){return i=r(i===void 0?n.length-1:i,0),function(){for(var a=arguments,o=-1,c=r(a.length-i,0),f=Array(c);++o0){if(++s>=e)return arguments[0]}else s=0;return i.apply(void 0,arguments)}}return wa=n,wa}var ba,ip;function sp(){if(ip)return ba;ip=1;var e=z_(),r=F_(),t=r(e);return ba=t,ba}var _a,op;function Qr(){if(op)return _a;op=1;var e=$t(),r=tp(),t=sp();function n(i,s){return t(r(i,s,e),i+"")}return _a=n,_a}var Ea,ap;function up(){if(ap)return Ea;ap=1;function e(r,t,n,i){for(var s=r.length,a=n+(i?1:-1);i?a--:++a-1}return Sa=r,Sa}var qa,dp;function V_(){if(dp)return qa;dp=1;function e(r,t,n){for(var i=-1,s=r==null?0:r.length;++i=a){var w=f?null:i(c);if(w)return s(w);x=!1,m=n,b=new e}else b=f?[]:_;e:for(;++p1?y.setNode(x,p):y.setNode(x)}),this},i.prototype.setNode=function(l,p){return e.has(this._nodes,l)?(arguments.length>1&&(this._nodes[l]=p),this):(this._nodes[l]=arguments.length>1?p:this._defaultNodeLabelFn(l),this._isCompound&&(this._parent[l]=t,this._children[l]={},this._children[t][l]=!0),this._in[l]={},this._preds[l]={},this._out[l]={},this._sucs[l]={},++this._nodeCount,this)},i.prototype.node=function(l){return this._nodes[l]},i.prototype.hasNode=function(l){return e.has(this._nodes,l)},i.prototype.removeNode=function(l){var p=this;if(e.has(this._nodes,l)){var m=function(y){p.removeEdge(p._edgeObjs[y])};delete this._nodes[l],this._isCompound&&(this._removeFromParentsChildList(l),delete this._parent[l],e.each(this.children(l),function(y){p.setParent(y)}),delete this._children[l]),e.each(e.keys(this._in[l]),m),delete this._in[l],delete this._preds[l],e.each(e.keys(this._out[l]),m),delete this._out[l],delete this._sucs[l],--this._nodeCount}return this},i.prototype.setParent=function(l,p){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(e.isUndefined(p))p=t;else{p+="";for(var m=p;!e.isUndefined(m);m=this.parent(m))if(m===l)throw new Error("Setting "+p+" as parent of "+l+" would create a cycle");this.setNode(p)}return this.setNode(l),this._removeFromParentsChildList(l),this._parent[l]=p,this._children[p][l]=!0,this},i.prototype._removeFromParentsChildList=function(l){delete this._children[this._parent[l]][l]},i.prototype.parent=function(l){if(this._isCompound){var p=this._parent[l];if(p!==t)return p}},i.prototype.children=function(l){if(e.isUndefined(l)&&(l=t),this._isCompound){var p=this._children[l];if(p)return e.keys(p)}else{if(l===t)return this.nodes();if(this.hasNode(l))return[]}},i.prototype.predecessors=function(l){var p=this._preds[l];if(p)return e.keys(p)},i.prototype.successors=function(l){var p=this._sucs[l];if(p)return e.keys(p)},i.prototype.neighbors=function(l){var p=this.predecessors(l);if(p)return e.union(p,this.successors(l))},i.prototype.isLeaf=function(l){var p;return this.isDirected()?p=this.successors(l):p=this.neighbors(l),p.length===0},i.prototype.filterNodes=function(l){var p=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});p.setGraph(this.graph());var m=this;e.each(this._nodes,function(_,b){l(b)&&p.setNode(b,_)}),e.each(this._edgeObjs,function(_){p.hasNode(_.v)&&p.hasNode(_.w)&&p.setEdge(_,m.edge(_))});var y={};function x(_){var b=m.parent(_);return b===void 0||p.hasNode(b)?(y[_]=b,b):b in y?y[b]:x(b)}return this._isCompound&&e.each(p.nodes(),function(_){p.setParent(_,x(_))}),p},i.prototype.setDefaultEdgeLabel=function(l){return e.isFunction(l)||(l=e.constant(l)),this._defaultEdgeLabelFn=l,this},i.prototype.edgeCount=function(){return this._edgeCount},i.prototype.edges=function(){return e.values(this._edgeObjs)},i.prototype.setPath=function(l,p){var m=this,y=arguments;return e.reduce(l,function(x,_){return y.length>1?m.setEdge(x,_,p):m.setEdge(x,_),_}),this},i.prototype.setEdge=function(){var l,p,m,y,x=!1,_=arguments[0];typeof _=="object"&&_!==null&&"v"in _?(l=_.v,p=_.w,m=_.name,arguments.length===2&&(y=arguments[1],x=!0)):(l=_,p=arguments[1],m=arguments[3],arguments.length>2&&(y=arguments[2],x=!0)),l=""+l,p=""+p,e.isUndefined(m)||(m=""+m);var b=o(this._isDirected,l,p,m);if(e.has(this._edgeLabels,b))return x&&(this._edgeLabels[b]=y),this;if(!e.isUndefined(m)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(l),this.setNode(p),this._edgeLabels[b]=x?y:this._defaultEdgeLabelFn(l,p,m);var w=c(this._isDirected,l,p,m);return l=w.v,p=w.w,Object.freeze(w),this._edgeObjs[b]=w,s(this._preds[p],l),s(this._sucs[l],p),this._in[p][b]=w,this._out[l][b]=w,this._edgeCount++,this},i.prototype.edge=function(l,p,m){var y=arguments.length===1?f(this._isDirected,arguments[0]):o(this._isDirected,l,p,m);return this._edgeLabels[y]},i.prototype.hasEdge=function(l,p,m){var y=arguments.length===1?f(this._isDirected,arguments[0]):o(this._isDirected,l,p,m);return e.has(this._edgeLabels,y)},i.prototype.removeEdge=function(l,p,m){var y=arguments.length===1?f(this._isDirected,arguments[0]):o(this._isDirected,l,p,m),x=this._edgeObjs[y];return x&&(l=x.v,p=x.w,delete this._edgeLabels[y],delete this._edgeObjs[y],a(this._preds[p],l),a(this._sucs[l],p),delete this._in[p][y],delete this._out[l][y],this._edgeCount--),this},i.prototype.inEdges=function(l,p){var m=this._in[l];if(m){var y=e.values(m);return p?e.filter(y,function(x){return x.v===p}):y}},i.prototype.outEdges=function(l,p){var m=this._out[l];if(m){var y=e.values(m);return p?e.filter(y,function(x){return x.w===p}):y}},i.prototype.nodeEdges=function(l,p){var m=this.inEdges(l,p);if(m)return m.concat(this.outEdges(l,p))};function s(l,p){l[p]?l[p]++:l[p]=1}function a(l,p){--l[p]||delete l[p]}function o(l,p,m,y){var x=""+p,_=""+m;if(!l&&x>_){var b=x;x=_,_=b}return x+n+_+n+(e.isUndefined(y)?r:y)}function c(l,p,m,y){var x=""+p,_=""+m;if(!l&&x>_){var b=x;x=_,_=b}var w={v:x,w:_};return y&&(w.name=y),w}function f(l,p){return o(l,p.v,p.w,p.name)}return Pa}var Da,Mp;function J_(){return Mp||(Mp=1,Da="2.1.8"),Da}var za,Sp;function Q_(){return Sp||(Sp=1,za={Graph:La(),version:J_()}),za}var Fa,qp;function H_(){if(qp)return Fa;qp=1;var e=ct(),r=La();Fa={write:t,read:s};function t(a){var o={options:{directed:a.isDirected(),multigraph:a.isMultigraph(),compound:a.isCompound()},nodes:n(a),edges:i(a)};return e.isUndefined(a.graph())||(o.value=e.clone(a.graph())),o}function n(a){return e.map(a.nodes(),function(o){var c=a.node(o),f=a.parent(o),l={v:o};return e.isUndefined(c)||(l.value=c),e.isUndefined(f)||(l.parent=f),l})}function i(a){return e.map(a.edges(),function(o){var c=a.edge(o),f={v:o.v,w:o.w};return e.isUndefined(o.name)||(f.name=o.name),e.isUndefined(c)||(f.value=c),f})}function s(a){var o=new r(a.options).setGraph(a.value);return e.each(a.nodes,function(c){o.setNode(c.v,c.value),c.parent&&o.setParent(c.v,c.parent)}),e.each(a.edges,function(c){o.setEdge({v:c.v,w:c.w,name:c.name},c.value)}),o}return Fa}var Ba,Rp;function eE(){if(Rp)return Ba;Rp=1;var e=ct();Ba=r;function r(t){var n={},i=[],s;function a(o){e.has(n,o)||(n[o]=!0,s.push(o),e.each(t.successors(o),a),e.each(t.predecessors(o),a))}return e.each(t.nodes(),function(o){s=[],a(o),s.length&&i.push(s)}),i}return Ba}var $a,Op;function Ap(){if(Op)return $a;Op=1;var e=ct();$a=r;function r(){this._arr=[],this._keyIndices={}}return r.prototype.size=function(){return this._arr.length},r.prototype.keys=function(){return this._arr.map(function(t){return t.key})},r.prototype.has=function(t){return e.has(this._keyIndices,t)},r.prototype.priority=function(t){var n=this._keyIndices[t];if(n!==void 0)return this._arr[n].priority},r.prototype.min=function(){if(this.size()===0)throw new Error("Queue underflow");return this._arr[0].key},r.prototype.add=function(t,n){var i=this._keyIndices;if(t=String(t),!e.has(i,t)){var s=this._arr,a=s.length;return i[t]=a,s.push({key:t,priority:n}),this._decrease(a),!0}return!1},r.prototype.removeMin=function(){this._swap(0,this._arr.length-1);var t=this._arr.pop();return delete this._keyIndices[t.key],this._heapify(0),t.key},r.prototype.decrease=function(t,n){var i=this._keyIndices[t];if(n>this._arr[i].priority)throw new Error("New priority is greater than current priority. Key: "+t+" Old: "+this._arr[i].priority+" New: "+n);this._arr[i].priority=n,this._decrease(i)},r.prototype._heapify=function(t){var n=this._arr,i=2*t,s=i+1,a=t;i>1,!(n[s].priority0&&(p=l.removeMin(),m=f[p],m.distance!==Number.POSITIVE_INFINITY);)c(p).forEach(y);return f}return Ga}var Ua,kp;function tE(){if(kp)return Ua;kp=1;var e=Tp(),r=ct();Ua=t;function t(n,i,s){return r.transform(n.nodes(),function(a,o){a[o]=e(n,o,i,s)},{})}return Ua}var Va,jp;function Cp(){if(jp)return Va;jp=1;var e=ct();Va=r;function r(t){var n=0,i=[],s={},a=[];function o(c){var f=s[c]={onStack:!0,lowlink:n,index:n++};if(i.push(c),t.successors(c).forEach(function(m){e.has(s,m)?s[m].onStack&&(f.lowlink=Math.min(f.lowlink,s[m].index)):(o(m),f.lowlink=Math.min(f.lowlink,s[m].lowlink))}),f.lowlink===f.index){var l=[],p;do p=i.pop(),s[p].onStack=!1,l.push(p);while(c!==p);a.push(l)}}return t.nodes().forEach(function(c){e.has(s,c)||o(c)}),a}return Va}var Wa,Pp;function rE(){if(Pp)return Wa;Pp=1;var e=ct(),r=Cp();Wa=t;function t(n){return e.filter(r(n),function(i){return i.length>1||i.length===1&&n.hasEdge(i[0],i[0])})}return Wa}var Ya,Lp;function nE(){if(Lp)return Ya;Lp=1;var e=ct();Ya=t;var r=e.constant(1);function t(i,s,a){return n(i,s||r,a||function(o){return i.outEdges(o)})}function n(i,s,a){var o={},c=i.nodes();return c.forEach(function(f){o[f]={},o[f][f]={distance:0},c.forEach(function(l){f!==l&&(o[f][l]={distance:Number.POSITIVE_INFINITY})}),a(f).forEach(function(l){var p=l.v===f?l.w:l.v,m=s(l);o[f][p]={distance:m,predecessor:f}})}),c.forEach(function(f){var l=o[f];c.forEach(function(p){var m=o[p];c.forEach(function(y){var x=m[f],_=l[y],b=m[y],w=x.distance+_.distance;w0;){if(f=c.removeMin(),e.has(o,f))a.setEdge(f,o[f]);else{if(p)throw new Error("Input graph is not connected: "+i);p=!0}i.nodeEdges(f).forEach(l)}return a}return Ha}var eu,Wp;function uE(){return Wp||(Wp=1,eu={components:eE(),dijkstra:Tp(),dijkstraAll:tE(),findCycles:rE(),floydWarshall:nE(),isAcyclic:iE(),postorder:sE(),preorder:oE(),prim:aE(),tarjan:Cp(),topsort:zp()}),eu}var tu,Yp;function cE(){if(Yp)return tu;Yp=1;var e=Q_();return tu={Graph:e.Graph,json:H_(),alg:uE(),version:e.version},tu}var ru,Kp;function lt(){if(Kp)return ru;Kp=1;var e;if(typeof Gn=="function")try{e=cE()}catch(r){}return e||(e=window.graphlib),ru=e,ru}var nu,Xp;function fE(){if(Xp)return nu;Xp=1;var e=wd(),r=1,t=4;function n(i){return e(i,r|t)}return nu=n,nu}var iu,Zp;function Hr(){if(Zp)return iu;Zp=1;var e=Xt(),r=Et(),t=Ur(),n=ut();function i(s,a,o){if(!n(o))return!1;var c=typeof a;return(c=="number"?r(o)&&t(a,o.length):c=="string"&&a in o)?e(o[a],s):!1}return iu=i,iu}var su,Jp;function lE(){if(Jp)return su;Jp=1;var e=Qr(),r=Xt(),t=Hr(),n=Bt(),i=Object.prototype,s=i.hasOwnProperty,a=e(function(o,c){o=Object(o);var f=-1,l=c.length,p=l>2?c[2]:void 0;for(p&&t(c[0],c[1],p)&&(l=1);++f-1?c[f?s[l]:l]:void 0}}return ou=n,ou}var au,Hp;function dE(){if(Hp)return au;Hp=1;var e=/\s/;function r(t){for(var n=t.length;n--&&e.test(t.charAt(n)););return n}return au=r,au}var uu,ev;function gE(){if(ev)return uu;ev=1;var e=dE(),r=/^\s+/;function t(n){return n&&n.slice(0,e(n)+1).replace(r,"")}return uu=t,uu}var cu,tv;function pE(){if(tv)return cu;tv=1;var e=gE(),r=ut(),t=Ht(),n=NaN,i=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,a=/^0o[0-7]+$/i,o=parseInt;function c(f){if(typeof f=="number")return f;if(t(f))return n;if(r(f)){var l=typeof f.valueOf=="function"?f.valueOf():f;f=r(l)?l+"":l}if(typeof f!="string")return f===0?f:+f;f=e(f);var p=s.test(f);return p||a.test(f)?o(f.slice(2),p?2:8):i.test(f)?n:+f}return cu=c,cu}var fu,rv;function nv(){if(rv)return fu;rv=1;var e=pE(),r=1/0,t=17976931348623157e292;function n(i){if(!i)return i===0?i:0;if(i=e(i),i===r||i===-1/0){var s=i<0?-1:1;return s*t}return i===i?i:0}return fu=n,fu}var lu,iv;function vE(){if(iv)return lu;iv=1;var e=nv();function r(t){var n=e(t),i=n%1;return n===n?i?n-i:n:0}return lu=r,lu}var hu,sv;function mE(){if(sv)return hu;sv=1;var e=up(),r=xt(),t=vE(),n=Math.max;function i(s,a,o){var c=s==null?0:s.length;if(!c)return-1;var f=o==null?0:t(o);return f<0&&(f=n(c+f,0)),e(s,r(a,3),f)}return hu=i,hu}var du,ov;function yE(){if(ov)return du;ov=1;var e=hE(),r=mE(),t=e(r);return du=t,du}var gu,av;function uv(){if(av)return gu;av=1;var e=pa();function r(t){var n=t==null?0:t.length;return n?e(t,1):[]}return gu=r,gu}var pu,cv;function wE(){if(cv)return pu;cv=1;var e=eo(),r=Od(),t=Bt();function n(i,s){return i==null?i:e(i,r(s),t)}return pu=n,pu}var vu,fv;function bE(){if(fv)return vu;fv=1;function e(r){var t=r==null?0:r.length;return t?r[t-1]:void 0}return vu=e,vu}var mu,lv;function _E(){if(lv)return mu;lv=1;var e=$r(),r=ro(),t=xt();function n(i,s){var a={};return s=t(s,3),r(i,function(o,c,f){e(a,c,s(o,c,f))}),a}return mu=n,mu}var yu,hv;function wu(){if(hv)return yu;hv=1;var e=Ht();function r(t,n,i){for(var s=-1,a=t.length;++st}return bu=e,bu}var _u,gv;function xE(){if(gv)return _u;gv=1;var e=wu(),r=EE(),t=$t();function n(i){return i&&i.length?e(i,t,r):void 0}return _u=n,_u}var Eu,pv;function vv(){if(pv)return Eu;pv=1;var e=$r(),r=Xt();function t(n,i,s){(s!==void 0&&!r(n[i],s)||s===void 0&&!(i in n))&&e(n,i,s)}return Eu=t,Eu}var xu,mv;function NE(){if(mv)return xu;mv=1;var e=zt(),r=Yr(),t=pt(),n="[object Object]",i=Function.prototype,s=Object.prototype,a=i.toString,o=s.hasOwnProperty,c=a.call(Object);function f(l){if(!t(l)||e(l)!=n)return!1;var p=r(l);if(p===null)return!0;var m=o.call(p,"constructor")&&p.constructor;return typeof m=="function"&&m instanceof m&&a.call(m)==c}return xu=f,xu}var Nu,yv;function wv(){if(yv)return Nu;yv=1;function e(r,t){if(!(t==="constructor"&&typeof r[t]=="function")&&t!="__proto__")return r[t]}return Nu=e,Nu}var Mu,bv;function ME(){if(bv)return Mu;bv=1;var e=gr(),r=Bt();function t(n){return e(n,r(n))}return Mu=t,Mu}var Su,_v;function SE(){if(_v)return Su;_v=1;var e=vv(),r=Oh(),t=ud(),n=Ih(),i=dd(),s=pr(),a=ze(),o=yp(),c=Jt(),f=dr(),l=ut(),p=NE(),m=yr(),y=wv(),x=ME();function _(b,w,E,N,S,R,A){var j=y(b,E),I=y(w,E),D=A.get(I);if(D){e(b,E,D);return}var z=R?R(j,I,E+"",b,w,A):void 0,$=z===void 0;if($){var V=a(I),Y=!V&&c(I),ee=!V&&!Y&&m(I);z=I,V||Y||ee?a(j)?z=j:o(j)?z=n(j):Y?($=!1,z=r(I,!0)):ee?($=!1,z=t(I,!0)):z=[]:p(I)||s(I)?(z=j,s(j)?z=x(j):(!l(j)||f(j))&&(z=i(I))):$=!1}$&&(A.set(I,z),S(z,I,N,R,A),A.delete(I)),e(b,E,z)}return Su=_,Su}var qu,Ev;function qE(){if(Ev)return qu;Ev=1;var e=Br(),r=vv(),t=eo(),n=SE(),i=ut(),s=Bt(),a=wv();function o(c,f,l,p,m){c!==f&&t(f,function(y,x){if(m||(m=new e),i(y))n(c,f,x,l,o,p,m);else{var _=p?p(a(c,x),y,x+"",c,f,m):void 0;_===void 0&&(_=y),r(c,x,_)}},s)}return qu=o,qu}var Ru,xv;function RE(){if(xv)return Ru;xv=1;var e=Qr(),r=Hr();function t(n){return e(function(i,s){var a=-1,o=s.length,c=o>1?s[o-1]:void 0,f=o>2?s[2]:void 0;for(c=n.length>3&&typeof c=="function"?(o--,c):void 0,f&&r(s[0],s[1],f)&&(c=o<3?void 0:c,o=1),i=Object(i);++an||o&&c&&l&&!f&&!p||s&&c&&l||!i&&l||!a)return 1;if(!s&&!o&&!p&&t=f)return l;var p=i[s];return l*(p=="desc"?-1:1)}}return t.index-n.index}return Uu=r,Uu}var Vu,Bv;function UE(){if(Bv)return Vu;Bv=1;var e=Xr(),r=Jr(),t=xt(),n=Lg(),i=BE(),s=Vr(),a=GE(),o=$t(),c=ze();function f(l,p,m){p.length?p=e(p,function(_){return c(_)?function(b){return r(b,_.length===1?_[0]:_)}:_}):p=[o];var y=-1;p=e(p,s(t));var x=n(l,function(_,b,w){var E=e(p,function(N){return N(_)});return{criteria:E,index:++y,value:_}});return i(x,function(_,b){return a(_,b,m)})}return Vu=f,Vu}var Wu,$v;function VE(){if($v)return Wu;$v=1;var e=pa(),r=UE(),t=Qr(),n=Hr(),i=t(function(s,a){if(s==null)return[];var o=a.length;return o>1&&n(s,a[0],a[1])?a=[]:o>2&&n(a[0],a[1],a[2])&&(a=[a[0]]),r(s,e(a,1),[])});return Wu=i,Wu}var Yu,Gv;function WE(){if(Gv)return Yu;Gv=1;var e=hg(),r=0;function t(n){var i=++r;return e(n)+i}return Yu=t,Yu}var Ku,Uv;function YE(){if(Uv)return Ku;Uv=1;function e(r,t,n){for(var i=-1,s=r.length,a=t.length,o={};++i0;--b)if(_=l[b].dequeue(),_){m=m.concat(a(f,l,p,_,!0));break}}}return m}function a(f,l,p,m,y){var x=y?[]:void 0;return e.forEach(f.inEdges(m.v),function(_){var b=f.edge(_),w=f.node(_.v);y&&x.push({v:_.v,w:_.w}),w.out-=b,c(l,p,w)}),e.forEach(f.outEdges(m.v),function(_){var b=f.edge(_),w=_.w,E=f.node(w);E.in-=b,c(l,p,E)}),f.removeNode(m.v),x}function o(f,l){var p=new r,m=0,y=0;e.forEach(f.nodes(),function(b){p.setNode(b,{v:b,in:0,out:0})}),e.forEach(f.edges(),function(b){var w=p.edge(b.v,b.w)||0,E=l(b),N=w+E;p.setEdge(b.v,b.w,N),y=Math.max(y,p.node(b.v).out+=E),m=Math.max(m,p.node(b.w).in+=E)});var x=e.range(y+m+3).map(function(){return new t}),_=m+1;return e.forEach(p.nodes(),function(b){c(x,_,p.node(b))}),{graph:p,buckets:x,zeroIdx:_}}function c(f,l,p){p.out?p.in?f[p.out-p.in+l].enqueue(p):f[f.length-1].enqueue(p):f[0].enqueue(p)}return Qu}var Hu,Xv;function JE(){if(Xv)return Hu;Xv=1;var e=ke(),r=ZE();Hu={run:t,undo:i};function t(s){var a=s.graph().acyclicer==="greedy"?r(s,o(s)):n(s);e.forEach(a,function(c){var f=s.edge(c);s.removeEdge(c),f.forwardName=c.name,f.reversed=!0,s.setEdge(c.w,c.v,f,e.uniqueId("rev"))});function o(c){return function(f){return c.edge(f).weight}}}function n(s){var a=[],o={},c={};function f(l){e.has(c,l)||(c[l]=!0,o[l]=!0,e.forEach(s.outEdges(l),function(p){e.has(o,p.w)?a.push(p):f(p.w)}),delete o[l])}return e.forEach(s.nodes(),f),a}function i(s){e.forEach(s.edges(),function(a){var o=s.edge(a);if(o.reversed){s.removeEdge(a);var c=o.forwardName;delete o.reversed,delete o.forwardName,s.setEdge(a.w,a.v,o,c)}})}return Hu}var ec,Zv;function nt(){if(Zv)return ec;Zv=1;var e=ke(),r=lt().Graph;ec={addDummyNode:t,simplify:n,asNonCompoundGraph:i,successorWeights:s,predecessorWeights:a,intersectRect:o,buildLayerMatrix:c,normalizeRanks:f,removeEmptyRanks:l,addBorderNode:p,maxRank:m,partition:y,time:x,notime:_};function t(b,w,E,N){var S;do S=e.uniqueId(N);while(b.hasNode(S));return E.dummy=w,b.setNode(S,E),S}function n(b){var w=new r().setGraph(b.graph());return e.forEach(b.nodes(),function(E){w.setNode(E,b.node(E))}),e.forEach(b.edges(),function(E){var N=w.edge(E.v,E.w)||{weight:0,minlen:1},S=b.edge(E);w.setEdge(E.v,E.w,{weight:N.weight+S.weight,minlen:Math.max(N.minlen,S.minlen)})}),w}function i(b){var w=new r({multigraph:b.isMultigraph()}).setGraph(b.graph());return e.forEach(b.nodes(),function(E){b.children(E).length||w.setNode(E,b.node(E))}),e.forEach(b.edges(),function(E){w.setEdge(E,b.edge(E))}),w}function s(b){var w=e.map(b.nodes(),function(E){var N={};return e.forEach(b.outEdges(E),function(S){N[S.w]=(N[S.w]||0)+b.edge(S).weight}),N});return e.zipObject(b.nodes(),w)}function a(b){var w=e.map(b.nodes(),function(E){var N={};return e.forEach(b.inEdges(E),function(S){N[S.v]=(N[S.v]||0)+b.edge(S).weight}),N});return e.zipObject(b.nodes(),w)}function o(b,w){var E=b.x,N=b.y,S=w.x-E,R=w.y-N,A=b.width/2,j=b.height/2;if(!S&&!R)throw new Error("Not possible to find intersection inside of the rectangle");var I,D;return Math.abs(R)*A>Math.abs(S)*j?(R<0&&(j=-j),I=j*S/R,D=j):(S<0&&(A=-A),I=A,D=A*R/S),{x:E+I,y:N+D}}function c(b){var w=e.map(e.range(m(b)+1),function(){return[]});return e.forEach(b.nodes(),function(E){var N=b.node(E),S=N.rank;e.isUndefined(S)||(w[S][N.order]=E)}),w}function f(b){var w=e.min(e.map(b.nodes(),function(E){return b.node(E).rank}));e.forEach(b.nodes(),function(E){var N=b.node(E);e.has(N,"rank")&&(N.rank-=w)})}function l(b){var w=e.min(e.map(b.nodes(),function(R){return b.node(R).rank})),E=[];e.forEach(b.nodes(),function(R){var A=b.node(R).rank-w;E[A]||(E[A]=[]),E[A].push(R)});var N=0,S=b.graph().nodeRankFactor;e.forEach(E,function(R,A){e.isUndefined(R)&&A%S!==0?--N:N&&e.forEach(R,function(j){b.node(j).rank+=N})})}function p(b,w,E,N){var S={width:0,height:0};return arguments.length>=4&&(S.rank=E,S.order=N),t(b,"border",S,w)}function m(b){return e.max(e.map(b.nodes(),function(w){var E=b.node(w).rank;if(!e.isUndefined(E))return E}))}function y(b,w){var E={lhs:[],rhs:[]};return e.forEach(b,function(N){w(N)?E.lhs.push(N):E.rhs.push(N)}),E}function x(b,w){var E=e.now();try{return w()}finally{console.log(b+" time: "+(e.now()-E)+"ms")}}function _(b,w){return w()}return ec}var tc,Jv;function QE(){if(Jv)return tc;Jv=1;var e=ke(),r=nt();tc={run:t,undo:i};function t(s){s.graph().dummyChains=[],e.forEach(s.edges(),function(a){n(s,a)})}function n(s,a){var o=a.v,c=s.node(o).rank,f=a.w,l=s.node(f).rank,p=a.name,m=s.edge(a),y=m.labelRank;if(l!==c+1){s.removeEdge(a);var x,_,b;for(b=0,++c;cD.lim&&(z=D,$=!0);var V=e.filter(S.edges(),function(Y){return $===E(N,N.node(Y.v),z)&&$!==E(N,N.node(Y.w),z)});return e.minBy(V,function(Y){return t(S,Y)})}function _(N,S,R,A){var j=R.v,I=R.w;N.removeEdge(j,I),N.setEdge(A.v,A.w,{}),p(N),c(N,S),b(N,S)}function b(N,S){var R=e.find(N.nodes(),function(j){return!S.node(j).parent}),A=i(N,R);A=A.slice(1),e.forEach(A,function(j){var I=N.node(j).parent,D=S.edge(j,I),z=!1;D||(D=S.edge(I,j),z=!0),S.node(j).rank=S.node(I).rank+(z?D.minlen:-D.minlen)})}function w(N,S,R){return N.hasEdge(S,R)}function E(N,S,R){return R.low<=S.lim&&S.lim<=R.lim}return ic}var sc,r0;function ex(){if(r0)return sc;r0=1;var e=en(),r=e.longestPath,t=e0(),n=HE();sc=i;function i(c){switch(c.graph().ranker){case"network-simplex":o(c);break;case"tight-tree":a(c);break;case"longest-path":s(c);break;default:o(c)}}var s=r;function a(c){r(c),t(c)}function o(c){n(c)}return sc}var oc,n0;function tx(){if(n0)return oc;n0=1;var e=ke();oc=r;function r(i){var s=n(i);e.forEach(i.graph().dummyChains,function(a){for(var o=i.node(a),c=o.edgeObj,f=t(i,s,c.v,c.w),l=f.path,p=f.lca,m=0,y=l[m],x=!0;a!==c.w;){if(o=i.node(a),x){for(;(y=l[m])!==p&&i.node(y).maxRankl||p>s[m].lim));for(y=m,m=o;(m=i.parent(m))!==y;)f.push(m);return{path:c.concat(f.reverse()),lca:y}}function n(i){var s={},a=0;function o(c){var f=a;e.forEach(i.children(c),o),s[c]={low:f,lim:a++}}return e.forEach(i.children(),o),s}return oc}var ac,i0;function rx(){if(i0)return ac;i0=1;var e=ke(),r=nt();ac={run:t,cleanup:a};function t(o){var c=r.addDummyNode(o,"root",{},"_root"),f=i(o),l=e.max(e.values(f))-1,p=2*l+1;o.graph().nestingRoot=c,e.forEach(o.edges(),function(y){o.edge(y).minlen*=p});var m=s(o)+1;e.forEach(o.children(),function(y){n(o,c,p,m,l,f,y)}),o.graph().nodeRankFactor=p}function n(o,c,f,l,p,m,y){var x=o.children(y);if(!x.length){y!==c&&o.setEdge(c,y,{weight:0,minlen:f});return}var _=r.addBorderNode(o,"_bt"),b=r.addBorderNode(o,"_bb"),w=o.node(y);o.setParent(_,y),w.borderTop=_,o.setParent(b,y),w.borderBottom=b,e.forEach(x,function(E){n(o,c,f,l,p,m,E);var N=o.node(E),S=N.borderTop?N.borderTop:E,R=N.borderBottom?N.borderBottom:E,A=N.borderTop?l:2*l,j=S!==R?1:p-m[y]+1;o.setEdge(_,S,{weight:A,minlen:j,nestingEdge:!0}),o.setEdge(R,b,{weight:A,minlen:j,nestingEdge:!0})}),o.parent(y)||o.setEdge(c,_,{weight:0,minlen:p+m[y]})}function i(o){var c={};function f(l,p){var m=o.children(l);m&&m.length&&e.forEach(m,function(y){f(y,p+1)}),c[l]=p}return e.forEach(o.children(),function(l){f(l,1)}),c}function s(o){return e.reduce(o.edges(),function(c,f){return c+o.edge(f).weight},0)}function a(o){var c=o.graph();o.removeNode(c.nestingRoot),delete c.nestingRoot,e.forEach(o.edges(),function(f){var l=o.edge(f);l.nestingEdge&&o.removeEdge(f)})}return ac}var uc,s0;function nx(){if(s0)return uc;s0=1;var e=ke(),r=nt();uc=t;function t(i){function s(a){var o=i.children(a),c=i.node(a);if(o.length&&e.forEach(o,s),e.has(c,"minRank")){c.borderLeft=[],c.borderRight=[];for(var f=c.minRank,l=c.maxRank+1;f0;)y%2&&(x+=l[y+1]),y=y-1>>1,l[y]+=m.weight;p+=m.weight*x})),p}return lc}var hc,c0;function ax(){if(c0)return hc;c0=1;var e=ke();hc=r;function r(t,n){return e.map(n,function(i){var s=t.inEdges(i);if(s.length){var a=e.reduce(s,function(o,c){var f=t.edge(c),l=t.node(c.v);return{sum:o.sum+f.weight*l.order,weight:o.weight+f.weight}},{sum:0,weight:0});return{v:i,barycenter:a.sum/a.weight,weight:a.weight}}else return{v:i}})}return hc}var dc,f0;function ux(){if(f0)return dc;f0=1;var e=ke();dc=r;function r(i,s){var a={};e.forEach(i,function(c,f){var l=a[c.v]={indegree:0,in:[],out:[],vs:[c.v],i:f};e.isUndefined(c.barycenter)||(l.barycenter=c.barycenter,l.weight=c.weight)}),e.forEach(s.edges(),function(c){var f=a[c.v],l=a[c.w];!e.isUndefined(f)&&!e.isUndefined(l)&&(l.indegree++,f.out.push(a[c.w]))});var o=e.filter(a,function(c){return!c.indegree});return t(o)}function t(i){var s=[];function a(f){return function(l){l.merged||(e.isUndefined(l.barycenter)||e.isUndefined(f.barycenter)||l.barycenter>=f.barycenter)&&n(f,l)}}function o(f){return function(l){l.in.push(f),--l.indegree===0&&i.push(l)}}for(;i.length;){var c=i.pop();s.push(c),e.forEach(c.in.reverse(),a(c)),e.forEach(c.out,o(c))}return e.map(e.filter(s,function(f){return!f.merged}),function(f){return e.pick(f,["vs","i","barycenter","weight"])})}function n(i,s){var a=0,o=0;i.weight&&(a+=i.barycenter*i.weight,o+=i.weight),s.weight&&(a+=s.barycenter*s.weight,o+=s.weight),i.vs=s.vs.concat(i.vs),i.barycenter=a/o,i.weight=o,i.i=Math.min(s.i,i.i),s.merged=!0}return dc}var gc,l0;function cx(){if(l0)return gc;l0=1;var e=ke(),r=nt();gc=t;function t(s,a){var o=r.partition(s,function(_){return e.has(_,"barycenter")}),c=o.lhs,f=e.sortBy(o.rhs,function(_){return-_.i}),l=[],p=0,m=0,y=0;c.sort(i(!!a)),y=n(l,f,y),e.forEach(c,function(_){y+=_.vs.length,l.push(_.vs),p+=_.barycenter*_.weight,m+=_.weight,y=n(l,f,y)});var x={vs:e.flatten(l,!0)};return m&&(x.barycenter=p/m,x.weight=m),x}function n(s,a,o){for(var c;a.length&&(c=e.last(a)).i<=o;)a.pop(),s.push(c.vs),o++;return o}function i(s){return function(a,o){return a.barycentero.barycenter?1:s?o.i-a.i:a.i-o.i}}return gc}var pc,h0;function fx(){if(h0)return pc;h0=1;var e=ke(),r=ax(),t=ux(),n=cx();pc=i;function i(o,c,f,l){var p=o.children(c),m=o.node(c),y=m?m.borderLeft:void 0,x=m?m.borderRight:void 0,_={};y&&(p=e.filter(p,function(R){return R!==y&&R!==x}));var b=r(o,p);e.forEach(b,function(R){if(o.children(R.v).length){var A=i(o,R.v,f,l);_[R.v]=A,e.has(A,"barycenter")&&a(R,A)}});var w=t(b,f);s(w,_);var E=n(w,l);if(y&&(E.vs=e.flatten([y,E.vs,x],!0),o.predecessors(y).length)){var N=o.node(o.predecessors(y)[0]),S=o.node(o.predecessors(x)[0]);e.has(E,"barycenter")||(E.barycenter=0,E.weight=0),E.barycenter=(E.barycenter*E.weight+N.order+S.order)/(E.weight+2),E.weight+=2}return E}function s(o,c){e.forEach(o,function(f){f.vs=e.flatten(f.vs.map(function(l){return c[l]?c[l].vs:l}),!0)})}function a(o,c){e.isUndefined(o.barycenter)?(o.barycenter=c.barycenter,o.weight=c.weight):(o.barycenter=(o.barycenter*o.weight+c.barycenter*c.weight)/(o.weight+c.weight),o.weight+=c.weight)}return pc}var vc,d0;function lx(){if(d0)return vc;d0=1;var e=ke(),r=lt().Graph;vc=t;function t(i,s,a){var o=n(i),c=new r({compound:!0}).setGraph({root:o}).setDefaultNodeLabel(function(f){return i.node(f)});return e.forEach(i.nodes(),function(f){var l=i.node(f),p=i.parent(f);(l.rank===s||l.minRank<=s&&s<=l.maxRank)&&(c.setNode(f),c.setParent(f,p||o),e.forEach(i[a](f),function(m){var y=m.v===f?m.w:m.v,x=c.edge(y,f),_=e.isUndefined(x)?0:x.weight;c.setEdge(y,f,{weight:i.edge(m).weight+_})}),e.has(l,"minRank")&&c.setNode(f,{borderLeft:l.borderLeft[s],borderRight:l.borderRight[s]}))}),c}function n(i){for(var s;i.hasNode(s=e.uniqueId("_root")););return s}return vc}var mc,g0;function hx(){if(g0)return mc;g0=1;var e=ke();mc=r;function r(t,n,i){var s={},a;e.forEach(i,function(o){for(var c=t.parent(o),f,l;c;){if(f=t.parent(c),f?(l=s[f],s[f]=c):(l=a,a=c),l&&l!==c){n.setEdge(l,c);return}c=f}})}return mc}var yc,p0;function dx(){if(p0)return yc;p0=1;var e=ke(),r=sx(),t=ox(),n=fx(),i=lx(),s=hx(),a=lt().Graph,o=nt();yc=c;function c(m){var y=o.maxRank(m),x=f(m,e.range(1,y+1),"inEdges"),_=f(m,e.range(y-1,-1,-1),"outEdges"),b=r(m);p(m,b);for(var w=Number.POSITIVE_INFINITY,E,N=0,S=0;S<4;++N,++S){l(N%2?x:_,N%4>=2),b=o.buildLayerMatrix(m);var R=t(m,b);Rz)&&a(N,Y,$)})})}function R(A,j){var I=-1,D,z=0;return e.forEach(j,function($,V){if(w.node($).dummy==="border"){var Y=w.predecessors($);Y.length&&(D=w.node(Y[0]).order,S(j,z,V,I,D),z=V,I=D)}S(j,z,j.length,D,A.length)}),j}return e.reduce(E,R),N}function s(w,E){if(w.node(E).dummy)return e.find(w.predecessors(E),function(N){return w.node(N).dummy})}function a(w,E,N){if(E>N){var S=E;E=N,N=S}var R=w[E];R||(w[E]=R={}),R[N]=!0}function o(w,E,N){if(E>N){var S=E;E=N,N=S}return e.has(w[E],N)}function c(w,E,N,S){var R={},A={},j={};return e.forEach(E,function(I){e.forEach(I,function(D,z){R[D]=D,A[D]=D,j[D]=z})}),e.forEach(E,function(I){var D=-1;e.forEach(I,function(z){var $=S(z);if($.length){$=e.sortBy($,function(ue){return j[ue]});for(var V=($.length-1)/2,Y=Math.floor(V),ee=Math.ceil(V);Y<=ee;++Y){var J=$[Y];A[z]===z&&D({}));const a=t.getAllNodes(),o=t.getAllEdges();[...a,...o].some(({id:f})=>me(f))&&console.error("Dagre layout only support string id, it will convert number to string."),t.getAllNodes().forEach(f=>{const{id:l}=f,p=Object.assign({},f.data);if(i!==void 0){const[m,y]=ar(wt(i)?i(f):i);Object.assign(p,{width:m,height:y})}s.setNode(l.toString(),p)}),t.getAllEdges().forEach(({id:f,source:l,target:p})=>{s.setEdge(l.toString(),p.toString(),{id:f})}),bx.layout(s);const c={nodes:[],edges:[]};return s.nodes().forEach(f=>{const l=s.node(f);c.nodes.push({id:f,data:l}),r&&t.mergeNodeData(f,l)}),s.edges().forEach(f=>{const l=s.edge(f),{id:p}=l,m=Se(l,["id"]),{v:y,w:x}=f;c.edges.push({id:p,source:y,target:x,data:m}),r&&t.mergeEdgeData(p,m)}),c})}}tn.defaultOptions={};class Mc{constructor(r){this.id=r.id||0,this.rx=r.rx,this.ry=r.ry,this.fx=0,this.fy=0,this.mass=r.mass,this.degree=r.degree,this.g=r.g||0}distanceTo(r){const t=this.rx-r.rx,n=this.ry-r.ry;return Math.hypot(t,n)}setPos(r,t){this.rx=r,this.ry=t}resetForce(){this.fx=0,this.fy=0}addForce(r){const t=r.rx-this.rx,n=r.ry-this.ry;let i=Math.hypot(t,n);i=i<1e-4?1e-4:i;const s=this.g*(this.degree+1)*(r.degree+1)/i;this.fx+=s*t/i,this.fy+=s*n/i}in(r){return r.contains(this.rx,this.ry)}add(r){const t=this.mass+r.mass,n=(this.rx*this.mass+r.rx*r.mass)/t,i=(this.ry*this.mass+r.ry*r.mass)/t,s=this.degree+r.degree,a={rx:n,ry:i,mass:t,degree:s};return new Mc(a)}}class er{constructor(r){this.xmid=r.xmid,this.ymid=r.ymid,this.length=r.length,this.massCenter=r.massCenter||[0,0],this.mass=r.mass||1}getLength(){return this.length}contains(r,t){const n=this.length/2;return r<=this.xmid+n&&r>=this.xmid-n&&t<=this.ymid+n&&t>=this.ymid-n}NW(){const r=this.xmid-this.length/4,t=this.ymid+this.length/4,n=this.length/2,i={xmid:r,ymid:t,length:n};return new er(i)}NE(){const r=this.xmid+this.length/4,t=this.ymid+this.length/4,n=this.length/2,i={xmid:r,ymid:t,length:n};return new er(i)}SW(){const r=this.xmid-this.length/4,t=this.ymid-this.length/4,n=this.length/2,i={xmid:r,ymid:t,length:n};return new er(i)}SE(){const r=this.xmid+this.length/4,t=this.ymid-this.length/4,n=this.length/2,i={xmid:r,ymid:t,length:n};return new er(i)}}class tr{constructor(r){this.body=null,this.quad=null,this.NW=null,this.NE=null,this.SW=null,this.SE=null,this.theta=.5,r!=null&&(this.quad=r)}insert(r){if(this.body==null){this.body=r;return}this._isExternal()?(this.quad&&(this.NW=new tr(this.quad.NW()),this.NE=new tr(this.quad.NE()),this.SW=new tr(this.quad.SW()),this.SE=new tr(this.quad.SE())),this._putBody(this.body),this._putBody(r),this.body=this.body.add(r)):(this.body=this.body.add(r),this._putBody(r))}_putBody(r){this.quad&&(r.in(this.quad.NW())&&this.NW?this.NW.insert(r):r.in(this.quad.NE())&&this.NE?this.NE.insert(r):r.in(this.quad.SW())&&this.SW?this.SW.insert(r):r.in(this.quad.SE())&&this.SE&&this.SE.insert(r))}_isExternal(){return this.NW==null&&this.NE==null&&this.SW==null&&this.SE==null}updateForce(r){if(!(this.body==null||r===this.body))if(this._isExternal())r.addForce(this.body);else{const t=this.quad?this.quad.getLength():0,n=this.body.distanceTo(r);t/nit(w,[o,c])),x=i.filter(w=>{const{source:E,target:N}=w;return E!==N}),_=new Be({nodes:y,edges:x}),b=this.getSizes(_,p);if(this.run(_,t,l,b,r,a),f){for(let E=0;E250&&(n.barnesHut=!0),c===void 0&&t>100&&(n.prune=!0),f===0&&!c?(n.maxIteration=250,t<=200&&t>100?n.maxIteration=1e3:t>200&&(n.maxIteration=1200)):f===0&&c&&(n.maxIteration=100,t<=200&&t>100?n.maxIteration=500:t>200&&(n.maxIteration=950)),l||(n.kr=50,t>100&&t<=500?n.kr=20:t>500&&(n.kr=1)),p||(n.kg=20,t>100&&t<=500?n.kg=10:t>500&&(n.kg=1)),n}run(r,t,n,i,s,a){const{kr:o,barnesHut:c,onTick:f}=a,l=r.getAllNodes();let p=0,m=n;const y={},x={},_={};for(let b=0;b0;)p=this.oneStep(r,{iter:m,preventOverlapIters:50,krPrime:100,sg:p,forces:y,preForces:x,bodies:_,sizes:i},a),m--,f==null||f({nodes:l,edges:t.getAllEdges()});return r}oneStep(r,t,n){const{iter:i,preventOverlapIters:s,krPrime:a,sg:o,preForces:c,bodies:f,sizes:l}=t;let{forces:p}=t;const{preventOverlap:m,barnesHut:y}=n,x=r.getAllNodes();for(let _=0;_s||!m)?p=this.getOptRepGraForces(r,p,f,n):p=this.getRepGraForces(r,i,s,p,a,l,n),this.updatePos(r,p,c,o,n)}getAttrForces(r,t,n,i,s,a){const{preventOverlap:o,dissuadeHubs:c,mode:f,prune:l}=a,p=r.getAllEdges();for(let m=0;m0&&(R=S,A=S),s[y][0]+=R*N[0],s[x][0]-=A*N[0],s[y][1]+=R*N[1],s[x][1]-=A*N[1]}return s}getOptRepGraForces(r,t,n,i){const{kg:s,center:a,prune:o}=i,c=r.getAllNodes(),f=c.length;let l=9e10,p=-9e10,m=9e10,y=-9e10;for(let E=0;E=p&&(p=S.x),S.x<=l&&(l=S.x),S.y>=y&&(y=S.y),S.y<=m&&(m=S.y))}const x=Math.max(p-l,y-m),_={xmid:(p+l)/2,ymid:(y+m)/2,length:x,massCenter:a,mass:f},b=new er(_),w=new tr(b);for(let E=0;E0&&(z=f*(w+1)*(j+1)/D),i[b.id][0]-=z*I[0],i[A.id][0]+=z*I[0],i[b.id][1]-=z*I[1],i[A.id][1]+=z*I[1]}const E=[b.data.x-p[0],b.data.y-p[1]],N=Math.hypot(E[0],E[1]);E[0]=E[0]/N,E[1]=E[1]/N;const S=l*(w+1);i[b.id][0]-=S*E[0],i[b.id][1]-=S*E[1]}return i}updatePos(r,t,n,i,s){const{ks:a,tao:o,prune:c,ksmax:f}=s,l=r.getAllNodes(),p=l.length,m=[],y=[];let x=0,_=0,b=i;for(let E=0;E1.5*w?1.5*w:b);for(let E=0;EI?I:A;const D=A*t[N][0],z=A*t[N][1];r.mergeNodeData(N,{x:S.x+D,y:S.y+z})}return b}}const xx={maxIteration:1e3,gravity:10,speed:5,clustering:!1,clusterGravity:10,width:300,height:300,nodeClusterBy:"cluster"},Nx=800;class Mx{constructor(r={}){this.options=r,this.id="fruchterman",this.timeInterval=0,this.running=!1,this.options=Object.assign(Object.assign({},xx),r)}execute(r,t){return se(this,void 0,void 0,function*(){return this.genericFruchtermanLayout(!1,r,t)})}assign(r,t){return se(this,void 0,void 0,function*(){yield this.genericFruchtermanLayout(!0,r,t)})}stop(){this.timeInterval&&typeof window!="undefined"&&window.clearInterval(this.timeInterval),this.running=!1}tick(r=this.options.maxIteration||1){if(this.lastResult)return this.lastResult;for(let n=0;nthis.lastGraph.mergeNodeData(n.id,{x:n.data.x,y:n.data.y,z:this.options.dimensions===3?n.data.z:void 0})),t}genericFruchtermanLayout(r,t,n){return se(this,void 0,void 0,function*(){if(this.running)return;const i=this.formatOptions(n),{dimensions:s,width:a,height:o,center:c,clustering:f,nodeClusterBy:l,maxIteration:p,onTick:m}=i,y=t.getAllNodes(),x=t.getAllEdges();if(!(y!=null&&y.length)){const N={nodes:[],edges:x};return this.lastResult=N,N}if(y.length===1){r&&t.mergeNodeData(y[0].id,{x:c[0],y:c[1],z:s===3?c[2]:void 0});const N={nodes:[Object.assign(Object.assign({},y[0]),{data:Object.assign(Object.assign({},y[0].data),{x:c[0],y:c[1],z:s===3?c[2]:void 0})})],edges:x};return this.lastResult=N,N}const _=y.map(N=>it(N,[a,o])),b=new Be({nodes:_,edges:x}),w={};if(f&&_.forEach(N=>{const S=N.data[l];w[S]||(w[S]={name:S,cx:0,cy:0,count:0})}),this.lastLayoutNodes=_,this.lastLayoutEdges=x,this.lastAssign=r,this.lastGraph=b,this.lastOptions=i,this.lastClusterMap=w,typeof window=="undefined")return;let E=0;return new Promise(N=>{this.timeInterval=window.setInterval(()=>{if(!this.running){N({nodes:_,edges:x});return}this.runOneStep(b,w,i),r&&_.forEach(({id:S,data:R})=>t.mergeNodeData(S,{x:R.x,y:R.y,z:s===3?R.z:void 0})),m==null||m({nodes:_,edges:x}),E++,E>=p&&(window.clearInterval(this.timeInterval),N({nodes:_,edges:x}))},0),this.running=!0})})}formatOptions(r={}){const t=Object.assign(Object.assign({},this.options),r),{clustering:n,nodeClusterBy:i}=t,{center:s,width:a,height:o}=t;return t.width=!a&&typeof window!="undefined"?window.innerWidth:a,t.height=!o&&typeof window!="undefined"?window.innerHeight:o,t.center=s||[t.width/2,t.height/2],t.clustering=n&&!!i,t}runOneStep(r,t,n){const{dimensions:i,height:s,width:a,gravity:o,center:c,speed:f,clustering:l,nodeClusterBy:p,clusterGravity:m}=n,y=s*a,x=Math.sqrt(y)/10,_=r.getAllNodes(),b=y/(_.length+1),w=Math.sqrt(b),E={};if(this.applyCalculate(r,E,w,b),l){for(const S in t)t[S].cx=0,t[S].cy=0,t[S].count=0;_.forEach(S=>{const{data:R}=S,A=t[R[p]];me(R.x)&&(A.cx+=R.x),me(R.y)&&(A.cy+=R.y),A.count++});for(const S in t)t[S].cx/=t[S].count,t[S].cy/=t[S].count;const N=m||o;_.forEach((S,R)=>{const{id:A,data:j}=S;if(!me(j.x)||!me(j.y))return;const I=t[j[p]],D=Math.sqrt((j.x-I.cx)*(j.x-I.cx)+(j.y-I.cy)*(j.y-I.cy)),z=w*N;E[A].x-=z*(j.x-I.cx)/D,E[A].y-=z*(j.y-I.cy)/D})}_.forEach((N,S)=>{const{id:R,data:A}=N;if(!me(A.x)||!me(A.y))return;const j=.01*w*o;E[R].x-=j*(A.x-c[0]),E[R].y-=j*(A.y-c[1]),i===3&&(E[R].z-=j*(A.z-c[2]))}),_.forEach((N,S)=>{const{id:R,data:A}=N;if(me(A.fx)&&me(A.fy)){A.x=A.fx,A.y=A.fy,i===3&&(A.z=A.fz);return}if(!me(A.x)||!me(A.y))return;const j=Math.sqrt(E[R].x*E[R].x+E[R].y*E[R].y+(i===3?E[R].z*E[R].z:0));if(j>0){const I=Math.min(x*(f/Nx),j);r.mergeNodeData(R,{x:A.x+E[R].x/j*I,y:A.y+E[R].y/j*I,z:i===3?A.z+E[R].z/j*I:void 0})}})}applyCalculate(r,t,n,i){this.calRepulsive(r,t,i),this.calAttractive(r,t,n)}calRepulsive(r,t,n){const i=r.getAllNodes();i.forEach(({data:s,id:a},o)=>{t[a]={x:0,y:0,z:0},i.forEach(({data:c,id:f},l)=>{if(o<=l||!me(s.x)||!me(c.x)||!me(s.y)||!me(c.y))return;let p=s.x-c.x,m=s.y-c.y,y=this.options.dimensions===3?s.z-c.z:0,x=p*p+m*m+y*y;x===0&&(x=1,p=.01,m=.01,y=.01);const _=n/x,b=p*_,w=m*_,E=y*_;t[a].x+=b,t[a].y+=w,t[f].x-=b,t[f].y-=w,this.options.dimensions===3&&(t[a].z+=E,t[f].z-=E)})})}calAttractive(r,t,n){r.getAllEdges().forEach(s=>{const{source:a,target:o}=s;if(!a||!o||a===o)return;const{data:c}=r.getNode(a),{data:f}=r.getNode(o);if(!me(f.x)||!me(c.x)||!me(f.y)||!me(c.y))return;const l=f.x-c.x,p=f.y-c.y,m=this.options.dimensions===3?f.z-c.z:0,y=Math.sqrt(l*l+p*p+m*m)/n,x=l*y,_=p*y,b=m*y;t[a].x+=x,t[a].y+=_,t[o].x-=x,t[o].y-=_,this.options.dimensions===3&&(t[a].z+=b,t[o].z-=b)})}}const Sx={begin:[0,0],preventOverlap:!0,preventOverlapPadding:10,condense:!1,rows:void 0,cols:void 0,position:void 0,sortBy:"degree",nodeSize:30,width:300,height:300};class qx{constructor(r={}){this.options=r,this.id="grid",this.options=Object.assign(Object.assign({},Sx),r)}execute(r,t){return se(this,void 0,void 0,function*(){return this.genericGridLayout(!1,r,t)})}assign(r,t){return se(this,void 0,void 0,function*(){yield this.genericGridLayout(!0,r,t)})}genericGridLayout(r,t,n){return se(this,void 0,void 0,function*(){const i=Object.assign(Object.assign({},this.options),n),{begin:s=[0,0],condense:a,preventOverlapPadding:o,preventOverlap:c,rows:f,cols:l,nodeSpacing:p,nodeSize:m,width:y,height:x,position:_}=i;let{sortBy:b}=i;const w=t.getAllNodes(),E=t.getAllEdges(),N=w==null?void 0:w.length;if(!N||N===1)return Lt(t,r,s);const S=w.map(J=>it(J));b!=="id"&&(!sr(b)||S[0].data[b]===void 0)&&(b="degree"),b==="degree"?S.sort((J,ue)=>t.getDegree(ue.id,"both")-t.getDegree(J.id,"both")):b==="id"?S.sort((J,ue)=>me(ue.id)&&me(J.id)?ue.id-J.id:`${J.id}`.localeCompare(`${ue.id}`)):S.sort((J,ue)=>ue.data[b]-J.data[b]);const R=!y&&typeof window!="undefined"?window.innerWidth:y,A=!x&&typeof window!="undefined"?window.innerHeight:x,j=N,I={rows:f,cols:l};if(f!=null&&l!=null)I.rows=f,I.cols=l;else if(f!=null&&l==null)I.rows=f,I.cols=Math.ceil(j/I.rows);else if(f==null&&l!=null)I.cols=l,I.rows=Math.ceil(j/I.cols);else{const J=Math.sqrt(j*A/R);I.rows=Math.round(J),I.cols=Math.round(R/A*J)}if(I.rows=Math.max(I.rows,1),I.cols=Math.max(I.cols,1),I.cols*I.rows>j){const J=rn(I),ue=nn(I);(J-1)*ue>=j?rn(I,J-1):(ue-1)*J>=j&&nn(I,ue-1)}else for(;I.cols*I.rows=j?nn(I,ue+1):rn(I,J+1)}let D=a?0:R/I.cols,z=a?0:A/I.rows;if(c||p){const J=Pt(10,p),ue=Rn(30,m,!1);S.forEach(be=>{(!be.data.x||!be.data.y)&&(be.data.x=0,be.data.y=0);const Z=t.getNode(be.id),[ce,pe]=ar(ue(Z)||30),he=J!==void 0?J(be):o,ie=ce+he,_e=pe+he;D=Math.max(D,ie),z=Math.max(z,_e)})}const $={},V={row:0,col:0},Y={};for(let J=0;J{t.mergeNodeData(J.id,{x:J.data.x,y:J.data.y})}),ee})}}const rn=(e,r)=>{let t;const n=e.rows||5,i=e.cols||5;return r==null?t=Math.min(n,i):Math.min(n,i)===e.rows?e.rows=r:e.cols=r,t},nn=(e,r)=>{let t;const n=e.rows||5,i=e.cols||5;return r==null?t=Math.max(n,i):Math.max(n,i)===e.rows?e.rows=r:e.cols=r,t},Sc=(e,r)=>e[`c-${r.row}-${r.col}`]||!1,x0=(e,r)=>e[`c-${r.row}-${r.col}`]=!0,N0=(e,r)=>{const t=e.cols||5;r.col++,r.col>=t&&(r.col=0,r.row++)},Rx=(e,r,t,n,i,s,a,o)=>{let c,f;const l=i[e.id];if(l)c=l.col*t+t/2+r[0],f=l.row*n+n/2+r[1];else{for(;Sc(o,a);)N0(s,a);c=a.col*t+t/2+r[0],f=a.row*n+n/2+r[1],x0(o,a),N0(s,a)}e.data.x=c,e.data.y=f},Ox=(e,r,t)=>{try{const n=It.mul(It.pow(r,2),-.5),i=n.mean("row"),s=n.mean("column"),a=n.mean();n.add(a).subRowVector(i).subColumnVector(s);const o=new Lf(n),c=It.sqrt(o.diagonalMatrix).diagonal();return o.leftSingularVectors.toJSON().map(f=>It.mul([f],[c]).toJSON()[0].splice(0,e))}catch(n){const i=[];for(let s=0;s{const t=Object.assign(Object.assign({},Ix),r),{positions:n,iterations:i,width:s,k:a,speed:o=100,strictRadial:c,focusIdx:f,radii:l=[],nodeSizeFunc:p}=t,m=e.getAllNodes(),y=[],x=s/10;for(let _=0;_{y[w]={x:0,y:0}}),kx(m,n,y,a,l,p),jx(n,y,o,c,f,x,s,l);return n},kx=(e,r,t,n,i,s)=>{r.forEach((a,o)=>{t[o]={x:0,y:0},r.forEach((c,f)=>{if(o===f||i[o]!==i[f])return;let l=a.x-c.x,p=a.y-c.y,m=Math.sqrt(l*l+p*p);if(m===0){m=1;const y=o>f?1:-1;l=.01*y,p=.01*y}if(m{const c=s||a/10;return n&&r.forEach((f,l)=>{const p=e[l].x-e[i].x,m=e[l].y-e[i].y,y=Math.sqrt(p*p+m*m);let x=m/y,_=-p/y;const b=Math.sqrt(f.x*f.x+f.y*f.y);let w=Math.acos((x*f.x+_*f.y)/b);w>Math.PI/2&&(w-=Math.PI/2,x*=-1,_*=-1);const E=Math.cos(w)*b;f.x=x*E,f.y=_*E}),e.forEach((f,l)=>{if(l===i)return;const p=Math.sqrt(r[l].x*r[l].x+r[l].y*r[l].y);if(p>0&&l!==i){const m=Math.min(c*(t/Ax),p);if(f.x+=r[l].x/p*m,f.y+=r[l].y/p*m,n){let y=f.x-e[i].x,x=f.y-e[i].y;const _=Math.sqrt(y*y+x*x);y=y/_*o[l],x=x/_*o[l],f.x=e[i].x+y,f.y=e[i].y+x}}}),e},Cx={maxIteration:1e3,focusNode:null,unitRadius:null,linkDistance:50,preventOverlap:!1,strictRadial:!0,maxPreventOverlapIteration:200,sortStrength:10};class Px{constructor(r={}){this.options=r,this.id="radial",this.options=Object.assign(Object.assign({},Cx),r)}execute(r,t){return se(this,void 0,void 0,function*(){return this.genericRadialLayout(!1,r,t)})}assign(r,t){return se(this,void 0,void 0,function*(){yield this.genericRadialLayout(!0,r,t)})}genericRadialLayout(r,t,n){return se(this,void 0,void 0,function*(){const i=Object.assign(Object.assign({},this.options),n),{width:s,height:a,center:o,focusNode:c,unitRadius:f,nodeSize:l,nodeSpacing:p,strictRadial:m,preventOverlap:y,maxPreventOverlapIteration:x,sortBy:_,linkDistance:b=50,sortStrength:w=10,maxIteration:E=1e3}=i,N=t.getAllNodes(),S=t.getAllEdges(),R=!s&&typeof window!="undefined"?window.innerWidth:s,A=!a&&typeof window!="undefined"?window.innerHeight:a,j=o||[R/2,A/2];if(!(N!=null&&N.length)||N.length===1)return Lt(t,r,j);let I=N[0];if(sr(c)){for(let te=0;tej[0]?j[0]:R-j[0],J=A-j[1]>j[1]?j[1]:A-j[1];ee===0&&(ee=R/2),J===0&&(J=A/2);const ue=Math.min(ee,J),be=Math.max(...Y),Z=[],ce=f||ue/be;Y.forEach((te,le)=>{Z[le]=te*ce});const pe=Lx(N,$,b,Z,ce,_,w),he=Dx(pe),ie=Ox(b,pe,b);let _e=ie.map(([te,le])=>({x:(isNaN(te)?Math.random()*b:te)-ie[D][0],y:(isNaN(le)?Math.random()*b:le)-ie[D][1]}));this.run(E,_e,he,pe,Z,D);let G;if(y){G=On(l,p);const te={nodes:N,nodeSizeFunc:G,positions:_e,radii:Z,height:A,width:R,strictRadial:!!m,focusIdx:D,iterations:x||200,k:_e.length/4.5};_e=Tx(t,te)}const P=[];return _e.forEach((te,le)=>{const xe=it(N[le]);xe.data.x=te.x+j[0],xe.data.y=te.y+j[1],P.push(xe)}),r&&P.forEach(te=>t.mergeNodeData(te.id,{x:te.data.x,y:te.data.y})),{nodes:P,edges:S}})}run(r,t,n,i,s,a){for(let o=0;o<=r;o++){const c=o/r;this.oneIteration(c,t,s,i,n,a)}}oneIteration(r,t,n,i,s,a){const o=1-r;t.forEach((c,f)=>{const l=Nf(c,{x:0,y:0}),p=l===0?0:1/l;if(f===a)return;let m=0,y=0,x=0;t.forEach((b,w)=>{if(f===w)return;const E=Nf(c,b),N=E===0?0:1/E,S=i[w][f];x+=s[f][w],m+=s[f][w]*(b.x+S*(c.x-b.x)*N),y+=s[f][w]*(b.y+S*(c.y-b.y)*N)});const _=n[f]===0?0:1/n[f];x*=o,x+=r*_*_,m*=o,m+=r*_*c.x*p,c.x=m/x,y*=o,y+=r*_*c.y*p,c.y=y/x})}}const Lx=(e,r,t,n,i,s,a)=>{if(!e)return[];const o=[];if(r){const c={};r.forEach((f,l)=>{const p=[];f.forEach((m,y)=>{var x,_;if(l===y)p.push(0);else if(n[l]===n[y])if(s==="data")p.push(m*(Math.abs(l-y)*a)/(n[l]/i));else if(s){let b,w;if(c[e[l].id])b=c[e[l].id];else{const E=(s==="id"?e[l].id:(x=e[l].data)===null||x===void 0?void 0:x[s])||0;sr(E)?b=E.charCodeAt(0):b=E,c[e[l].id]=b}if(c[e[y].id])w=c[e[y].id];else{const E=(s==="id"?e[y].id:(_=e[y].data)===null||_===void 0?void 0:_[s])||0;sr(E)?w=E.charCodeAt(0):w=E,c[e[y].id]=w}p.push(m*(Math.abs(b-w)*a)/(n[l]/i))}else p.push(m*t/(n[l]/i));else{const b=(t+i)/2;p.push(m*b)}}),o.push(p)})}return o},Dx=e=>{const r=e.length,t=e[0].length,n=[];for(let i=0;i{let t=-1;return e.forEach((n,i)=>{n.id===r&&(t=i)}),Math.max(t,0)},Fx=(e,r,t)=>{const n=e.length;for(let i=0;i{let t=0;for(let n=0;nt?e[r][n]:t);return t},$x={center:[0,0],width:300,height:300};class Gx{constructor(r={}){this.options=r,this.id="random",this.options=Object.assign(Object.assign({},$x),r)}execute(r,t){return se(this,void 0,void 0,function*(){return this.genericRandomLayout(!1,r,t)})}assign(r,t){return se(this,void 0,void 0,function*(){yield this.genericRandomLayout(!0,r,t)})}genericRandomLayout(r,t,n){return se(this,void 0,void 0,function*(){const i=Object.assign(Object.assign({},this.options),n),{center:s,width:a,height:o}=i,c=t.getAllNodes(),f=.9,l=!a&&typeof window!="undefined"?window.innerWidth:a,p=!o&&typeof window!="undefined"?window.innerHeight:o,m=s||[l/2,p/2],y=[];return c&&c.forEach(_=>{y.push({id:_.id,data:{x:(Math.random()-.5)*f*l+m[0],y:(Math.random()-.5)*f*p+m[1]}})}),r&&y.forEach(_=>t.mergeNodeData(_.id,{x:_.data.x,y:_.data.y})),{nodes:y,edges:t.getAllEdges()}})}}const Ux={circular:Wy,concentric:An,mds:Df,random:Gx,grid:qx,radial:Px,force:Af,d3force:Kf,"d3-force-3d":ib,fruchterman:Mx,forceAtlas2:Ex,dagre:tn,antvDagre:Gy,comboCombined:e1};let Nt;pn({stopLayout(){Nt!=null&&Nt.stop&&Nt.stop()},calculateLayout(e,r){return se(this,void 0,void 0,function*(){const{layout:{id:t,options:n,iterations:i},nodes:s,edges:a}=e,o=new Be({nodes:s,edges:a}),c=Ux[t];if(c)Nt=new c(n);else throw new Error(`Unknown layout id: ${t}`);let f=yield Nt.execute(o);return zf(Nt)&&(Nt.stop(),f=Nt.tick(i)),[f,r]})}})})(); diff --git a/fastadmin/static/index.min.css b/fastadmin/static/index.min.css index 7d81f37..4c05091 100644 --- a/fastadmin/static/index.min.css +++ b/fastadmin/static/index.min.css @@ -1,6 +1,7 @@ .react-tel-input{font-family:Roboto,sans-serif;font-size:15px;position:relative;width:100%}.react-tel-input :disabled{cursor:not-allowed}.react-tel-input .flag{width:16px;height:11px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAACmCAMAAAACnqETAAADAFBMVEUAAAD30gQCKn0GJJ4MP4kMlD43WGf9/f329vcBAQHhAADx8vHvAwL8AQL7UlL4RUUzqDP2MjLp6un2Jyj0Ghn2PTr9fHvi5OJYuln7Xl75+UPpNzXUAQH29jH6cXC+AAIAJwBNtE/23Ff5aGdDr0TJAQHsZV3qR0IAOQB3x3fdRD/Z2NvuWFLkcG7fVlH4kI4AAlXO0M8BATsdS6MCagIBfQEASgPoKSc4VKL442q4xeQAigD46eetAABYd9jvf3nZMiwAAoD30zz55X5ng9tPbKZnwGXz8x77+lY7OTjzzikABGsenh72pKNPldEAWgHgGBgAACH88/Gqt95JR0OWAwP3uLd/qdr53kMBBJJ3d3XMPTpWer8NnAwABKPH1O1VVFIuLSz13NtZnlf2kEh9keLn7vfZ4vNkZGHzvwJIXZRfZLuDwfv4y8tvk79LlUblzsxorGcCBusFKuYCCcdmfq5jqvlxt/tzktEABLb8/HL2tlTAw8SLlMFpj/ZlpNhBZ81BYbQcGxuToN9SYdjXY2Lz7lD0dCQ6S9Dm0EUCYPdDlvWWvd2AnviXqc11eMZTqPc3cPMCRev16ZrRUE0Hf/tNT7HIJyTptDVTffSsTkvhtgQ0T4jigoFUx/g+hsX9/QUHzQY1dbJ7sHV02Pduvd0leiK1XmaTrfpCQPgELrrdsrY1NamgyPrh03iPxosvX92ysbCgoZzk5kP1YD7t6AILnu+45LykNS40qvXDdHnR6tBennz6u3TSxU1Or9Swz6wqzCsPZKzglJbIqEY8hDhyAgFzbJxuOC+Li4d9sJLFsnhwbvH2d1A3kzAqPZQITsN76nq2dzaZdKJf4F6RJkb078YFiM+tnWZGh2F+dDibykYoMcsnekdI1UhCAwWb25qVkEq43km9yBrclQMGwfyZ3/zZ2QK9gJxsJWCBUk32QwqOSYKRxh6Xdm3B4oMW22EPZzawnR72kgZltCqPxrdH1dkBkqDdWwwMwMO9O2sqKXHvipPGJkzlRVLhJjVIs9KrAAAAB3RSTlMA/v3+/Pn9Fk05qAAAUU9JREFUeNp0nAlYVNcVxzHazoroGBkXhAgCCjMsroDoKIgKdFABBwQUnSAoCqLRFBfcCBIM4kbqShO1hlSrCJqQQmNssVFqjBarsdjFJWlMTOLXJDZt8/X7+j/n3pk3vNq/bb8+3nbP79137/+dd954qTVt8uTJL73OMhqNer03ady4cWOhWbNmjV+0FfKGjMb36Y9/1fXUst9cb2y8/lpb797z5k2dOjXVD9Ljn59fcHBwQEDAgGch3l9on6feeeedn0r9kvT222+/sErRgvcDArwV8f5tN/rcvPnMZ22pqVFRSVGjR38k9Rsp9fLql/MXLj20VGjt2rVeak2Og/auI/kHBQ3We/tCo0ZNhwYNGj58/NaWlpbOyMhIX1//2/jTrICvckhXruQsWbJw4cL3tzhPORynSk5lZWVtglL9IkmdDQ05NqvVGhLwbKSUL+Tvb9yH/2sj+eN0IZZ3fvq3Hnp71ZtCOyofdnTYSzq9xX7UtsF9+/Y1FpeZT54sc2aUlq6Jy89YM/qj2oZaoeOkMR8dV/Tee++NWb04rrA5MRYKDAyc/NKCpwDIyKhE9LEzZ/r4DLQAAE6EyEeM6AcNH7m1pTMnB+fHX7tG9Bs0Xt+GwM/frqm5tz950aKDk6rsiA0xbUrbRAii/BDeV9bGhQsPRlyOCAuZ9GykZwT++n2RHPnVYQU+oaFDPQD8jEQAPiDdaLPaHGVXbn/O7YHQuIH9B/gYgzts1iqrtSopKWlNRkzS6I8arFaOFvTfew8AfiYil/rN6sWTKwtbArOzExISUl7+vwCuQNt8Bg71AQCcTwNpWeFbW3IIQEmJr08XgIzX2xDcvZrs7Jru5EWXwwKSwh2RkQ77w7Q0bXp6YRoDaKO+kZl8MCwsYpJ3pEf8liAAoPhDhqUMQ/wAkF+oqKiosJYA7HxotdnTtVe6Pr/S0h+AI90QffU3T9obGuwdD5PqkmJiMtbM+ajWI/60TX0COhoarAAE1dfXV80FgMmLi1oSKP7/B6ASAGyBV4YM7D/Bx8/bF7g5fgmgEwCCSiJtJQRgxEi9zZqVdYUu9pW0tLCIgOvxdR0dpxx5aWl7EzV7CYDV+tXnCzMzkzMvE4AFlTuhZaSf/OQny1L32RC+JcHikzJ06NAJoe+YNKRbsbG3xPlWZTxssNmdOP/J27ffudLJ60V7DAaT1lxRVvfwYe3Jlrq4uJiKjAwAcIWP+BkAhV/i7HA0uAG8BAIUf8qfzvwvgJcQf+XMK4GWi8OGTpgQ6uftzwC0LIM2WgcASwaXOBwlA7v6/YgAhFRt2pRGeu0/UyImbal77eHDo2kVAJAeKwE0fl6P63/5nSlTAKBCiR8AovbZEL9lf8I5AMD5booAE7OzY8X5fhGJi0/nTzTcMh+80iIBaF0APqvIu3EjqfRGcV3S4aSKYk8AaW4ADU4gOFlfn8sAXnoJBDpTCMDL87zU2kwATl+x1Nw+P2HChKHBBMDHFT8DwGjX11FSYu/f/aMf9XtOjwAacf2hmxRg7ywXDrr30kb7NVhDquo/z0y+nJs7ZUoYA5DxM4BFmcnJyV93PzjbvQhK3urqAYF7xflWVT5ssDaU4Ox7T9+6Ei4BaN0AUkvXJEExMTGHD9cdFgA2yfgZQAP1f0dJw0lrfS4BmIb4z5yZBgL/H8DibbehGROenQ0AQRhvZPwQAGDQ8wlqsFkmdP9ofr/n/OgK2ml1xxQECAAy/tdee++91wCA1mfWJy/KXUTr536T+O67764X2r9//T+3JkPdDx50f7qItDXfff+zeAxY1lYV0VCmPV1Ts5fGAGUYDbHpo0qT6vKTignAtWvXiuf0StwGZZPQybMPAYC8/xF/bj0AUPwvvzytKCdl6dMAvJxRuXjxkCHnL86YMXs2A8B4m4yWQTrdIp0uByMajcATJrwzXwCIiIjAFSrbJwGI+FlH00YH8/rQy5enQPsYgBK/BLCI1c0Afonhn/XjH8MNLP9o1Y4Pfg795N9hYQ23bt1q4fb07z+A/ITR2J8AFJnqOP7iuj7Fc35TK+9/bkPaM+NGiSnsB6wRIwGA4n/5T5Pzc5aeeAqAP1VCM4niWRqVgr1p1sEYlskNJQC4BQZbLJi0MAgCgBUKqYo3VEVEhIWFTZqXtYmVxiIAtB4QeDUAvMuSFBgAJCkwAKHlLAKw4wMIFG5URVgdLdwedEq6BuCgj1qzpi4uiVScYa6I0fWKJQVC2aRDY0eNWrlyECwMMIDDc2vZ6UF0F7z8tB5w4kTvtZ+ygklGkk4lvZ6sne45SDg8aJIQ2z+4Mmg0qcfauXPnfvPNN9XV/1S0VSWyf1Ls4FZ5aIHu/blGKb2UOM0ckq4PmsZ2b8yYMb2l4FbhX8ePHwmhuSPXkhaQ5q0tXzBvntdUUq9eSyFu9njXxpA74Leg198yktRWVI4OkAkymw2Q3WO90+nnN3u2H0QkHI6JpHHj2GvTYdsupd68GfVZ4yTJqJeUaNKhQ+rzCUvOMXEr//4vD3333XdLe+rRJx4iqumDnT2O5zW1HII1hPLy8pJGjz9GWgk9D61Al4fWkWay9VRbUa1GEVCYDRoonu0dr++n0ZQ0dMCNdDRYHVrtuImjWHQ80lvfl4WfhJetw1CFm6h+rkazd28iJHvyIe/IHt7ZOBY7o4GPH4smPqf7nRwz/sH6bmmi2HtvYiBUYPxEcZakt701PdsPAIhb3DBbYmIIAOK+F9HXJ6z7t799AwDI48+cOQRi66m2ogoAYVwIQEkQb8DrJza1azRWq9NpjUjXtg+aNXHU9EEQHW/YsGFD3toHMFZbgzUsDNPkPgAgpScG1vA4TgB8PZATAAoc6IasWPHhhwCQkyNCdwMIJCVqDabA8+cAAJFLYVD92dvpjvQe7ZcA7p0/350dEzNmy+iRAHBPrO9+AwB41Of4h2HoFdZYhsfL7ej7QmbSBdED/GkDXv+ju9Pv4i9mM+g09Rs1duKoQSQR/4whb7msbFhufHy8M2xup6AZ3sHzWOChaveIWQCtn00A7s/84MDuD4bd+fBDcYEukrVna5fwMQPAsqnQZOqqLtBzezysvHd6z/YLANndUELMGAmgXqzPfeON3+IE8PHbuL2YegYCAO+/fz/io2VMM+5HpR/BGXIPGCzix3oAaBo13aApK9Mahg8fNAo9ANsPGi7iB4BLZRUPH9advJGb6zx+3Jk7FwFtCNekNzQUabW3cAv0Ek9uUA0U+PGsY4NmzrxQVBS3e82wGQDA7bvI8SsAsgNP7y26HV4GALyeJzGaY5J18fZ4GT+3DwBK8/K2ZF/s7v46ZYwEsMJHrJ/gApBJ8QPAs9gh2BYBnT077OwUnvcBwB0/nCEAQPFBdADefv5dPEu3p2u18e39Bg2aPou2h9wNmP3wi7bGL9qsuVOcizoBgM/X0BBtamggK2wGABn+WSLw8awm9P4Du3ecys+aMWPGt6J9medF/EsBIBbxJxSFm4vM5moJAOGL+AHAO90jfglgy5bshO7uFAIQM2fkyhUr6sX6fW+MJQDYX1wvWI/+uOIc79mziJec4ESxDPGy6AF9RfzYHgBw02s7yswNhf1GDJ8+lvcfPgKrxfoAa0S9uP9HTV95LHdur8TzuF7W5OSqDdEGAFiaiIjk9U8hAMdw+1Ts3r37VPOMGR/K9l3k+CUA9P9b4c6y8LKC6upqAiDj3wpxD1Dix/m9Uku3KAD6xMx5DgC6xfrLYwnAEuw/jOJnAMHjpnvECwA8aK5YseK3EA2aogf0pQNIAIOaXI8S0/sBAPaHaLUEIOJHPmjUsWACACN7/qLVmoz2Zjabv3x8X+oBdP/DWeih94d9sHv3BzO+fOOND6l9C93xL00BgOy97dHo/ZHm6EcAwM8OHlZ+YLpFtF9eQAGA9+81pg8DQCzdU3D9Ef/YN3AC8OP4Z5D1DBg7XYmfAKitqYl7AA8AvDxxVLtGW1VVVhYRZjC0jhg/Tuzv3j6gCuEjfghGYd/cXrFk5BNqai4K633k938h/Zp15C8Tx68E7X7Dtm2b8QZEAH743j8gYQQwC8TGlp08Z7ZWC+k/4eFf6pc//Sje3+TZ/pFeqXkQ7hoIhhoAnve8ogRgCQZBMQsgTgBgXykpAoDKmpoIuJP/wMvzwaOKHkisVfUnDYZZ2J/k3n4ST/94UiHt2/d+Lx7yttFAXnP+60W6+X9ggQFzGDdeOJT791fQNAgAv/qHFFMAAJou7AWQBCAkKXzknW71bD96APnWQ4c+hthRsv1Ty2WNA4InwYYpzhJSW1MT+lmkxx9awyfNhQVmvf9+c9M4kVt1by8tsmuLub3I/in6er7URGkh1SZ1znfk/xR9o2oP7F8Pax1vbO8RgJcwhYp8BvpMcD1t+0GffPJ7xUo+CA54Yc+DPXv2vGA0vkBavfqIW+xeH3kr8iJ9QxJegQNpu/TMzZupnzXOkQ7+OkumeCCOU+Si2Sr7kR6RkQZ/iA0y62PWVKlUiLy8fsz1MSd6s+YhLz1vu0t7ILS4T1Rqn2cU9fF6YQdpMZIAG6dNmzZ5bX+7PZKGsXi0CM9xwZ+0DmuVnejxsHMDJu3Zu24vkrT+QTtYq4/8nvWHPzyeCa2HUySRbzMKAO9CGhZ15Pku67uGlaS7frzoeFat26uY2CpzijiIrbKfLdH2buy7eKLkR8oAaXWhQNLH8+qEKirKy0tLS6O8bXVZQpvg8dPmbV/O+jH0IvRClLY06hkPAcBGqLa19ckBzC0HVg+0R9rQFpqFtWER1oBPhr3+eutPocevPzIaBwTseTORAu/rQ7sd2AgA4g69T1PlfmGVsX9fn8ESALk4ER5Gsb/Mny2tbzGkPQwASH1s2iTDBwC2yhYeVdgq+yXODAwpCCzAozT7Dml12fqR8VGcOMtk9A0pkUvsI7YvR+DQrl2vQLtWpdbFPAVAq8lgMrcygKEEoKQsJKTMYQgLDQn4ZN3r60T43ngSrH5g1rBcWaINAoCMX1plXq8GoBUAXNYX4RcfPqzVXa8tqk3bpATAVtnCVpytsp8tsCBifcJVil8BoFhfu7OE5RCyGn0HWxweQLYvf/HF2tp1T568IgD0Gf2MJilKBSCrPf5Cc3h76e4zuwmAv8ZqQ5cLMwwNA4DWn+IfwoeqX3/8kQvAQC2rGQCU+NkqywuiAqAVACa6rO/hYsR/uBi3wKZd7wGA1gPAcEvfhAQAmEEA4DwLEgo4/tmzwyYdYqurWF+9zWKxhCKlTjnV2WEBxkhHX5/G8jSZEZoKALWJWbuyYgWBVRgA6vqk9hgDNh54YtI2t2jbn5wBgAl2m1XTYAmxhFoNU5DG/uRnHuG/d/yjEa0X7kID+99tgu6OxTytxK8A0KoAaCGexz+rWHPpUtKaG4e1hwnAhhNZlLtMhwyG+HhDGVvl0PXZ2fv7w3oMe8vPijuf4of2AQCyutDmzWdI1zcv0Psr8SOFF2As0Th8Qr84CiEzcjSKni09b4l5C+al4r9uAcCBA1nthuYKc3spA4i0hWgNdFazgbK8n3iEjzct380S1rd/f+mkAECJH87O21/2v76eALQM4MiRX0+MKqXsFXSYAei8/d3WXLHaoQNTUga4AYSGiesPTSEASvwEwCrin4D4GYAv4m9MS5M5yalGX1uixccntCDwKqf5n5FSboGNBw4caG03m1tbz5zZs3v1bAAAKvtJDAuzAeD1c0r4DEBY4f4DKH4C8AclfgYQxFl0etRWAAj+RwjA6DUyfuoC3xt02F6JnwDQ8UNpeQAB+DTY6op/HxJLU+au3jj5JYRPwvR5ZoFN3v12oVxjkE+oXbG+4o71WH5dJa9VALD7wBPMArvP7AEAfaTVgm3NZkzcszHoBCvhM4BvhTcfMOCB8OZH/sDxp0hrCwA8PvKjNqkaAPaL80sAyvU3fF+sU1tptspDaRkA3gKAEIoforwaAPhZ3f2de4RWeUvAARqDKH65ZDKE7/nxriexm17ZtO0JxvhXX1n1Q5UAYCMQTCsvn7ybEuYL9JE2q9jfZJoSBgADEP5xt757MJM0xMcHUUOfzr9Pywlua+vtThhJAOvdPYDc/LjRayC+CxiDTm2l2SpbeJmPHywzyhLDXH1ICI96wEAcAlIr4ABKSThuXt4c75ByyJ2Zj9qDWbD2SSJmAdaqBSp5CdPoB5frx9LDdEVDG6C5cKnB/xz1kdB3rAcP2Bb7+X0q9GtOXirWU7HGEgBSwI/CoehosrIT2f7pFKmtNFvlYF4W/jvAI6kMoX2y1kBIZKBHu1PDwfNI7A1ZbP+UIgPMAn08hFnAIOROal3P6pnlzSQlK8pHf4F2s+AwjSRNvDsCadl76bQif9tbqDBdNvzPfxcy8+nCw1OULDDrOukEi7PXnngo+IDLY8UZZMmGOmsMn09yPTI8VwjhWEUkXIY4mYVu2/7qq9tJXuqsLoxJj+XMZqEWUmdnskabf8olWOI9Rl9Ik07vqeh1id/EpqZRUGKOhksqxveuZGm0Idx3g//+BPrd734n793wXnuFEoUOXc+ClJcrC4wiI8rv0On4GNUbbh8TBRtwDOPVWerxv2P9SuiPukKcBwd0xRPusuLSH+/xUmd1r9dm5XsuZzZ35kBLxCt+ANBoihA5CY6YAODEmnS8KRpIr7cBgJp2uyDkahcmi+EAUE7SpvPQFRrw9yfcvk5nPHUyApDokQWPBQCOXN7DafPo+ABH1RN8fL0t6OrVq1X3eC7C8dVZ6vHu2P/4xz//WQDAQ44rnmhXFlrYYxeAW+mJ6bcSEyUAEFCyqJdPfkX6HLp8+fJXBEBTyAR2uAD0tWjSfbh9BGAUxX/1zi8HVXcpAHZq03m9BNBptXY4ET8DUOKXANJk/AxAFETYbO/ayJ3aACAwcH3gep/Qru4PUZ8w/nW8X9gWOMSdZR7bRG81jkOU1XjeDUArFOey4i++WFW1vr4NAMTLaFjLvekuAJvylYKIXIcvFcQItzLB9o5G44CzylcA+Pe1+GjS+fojwGDO4hbcOfuXX35bnZ0deIgB7Nyp1QqrygB+1Wb9lbOBAUQTAOV1XuwhdRZXI7Q3UVplfSKS45aEc0MH9p/yTveKkQCw7WrIXneWmYDMrD3++Mnx47x8Iqt8GiTs4+bJ8y6V3Xj4sOLkjV27qjA9AYCBvGJsQkLgXraKBAAEOsCdZPfLdbjjRwQAUOJvxy7t/BK+NKuPhqVYTX6PEHJ101+qq8MWLcrUqdf/ne5Pa+OvMLPRPB3dBw+ychaDSkers7gaFiAliv31sSHr14euv0o8n322XoeAHXhwOyuydsMYwJDax0+ePD5OywCA8NM4fAIwdWfdtIqKvKyMXbuKDPWFRS8wAG3r3lvtF0RBAveANuqv7K2Dc+3K9Z/g7gGtlKRja9sjPjSQF6/eqc7+9ttztKz3Z6uarl22BcqL+jvdo1URvyqzGbSUpOTX6XlkW0mvpaqzuBLA6dOxOD4DKMA7koRzaMyUf3+xczUCvlVgic+m+CWAIUNqjz95vEkBwJdfAniVhj6+/xuRjGyTAO42XRjVxJMfACjxE4CuveRlC2SO7d13NJD59yJFSQD0QRj+tPHu7flhpqv6y+pv/9lF7wn0QexZ4g1bBIBZBCAnIsJaEm+QAJT4f/Naqrmndd2wCFMPhuHTp3OWQDk6vS1hfcL+6v6I/iU8vgPAkAs1+5vPIn62zt6+56AsdNChjx49OqcvwsEQPx2OjwcAIv5d+YW5hfkSgNZ814wNGADHP0HEo58Q8PXe2Fjx/JkCxd7T8uXn+CUA3P4AILcPFu8NuqrDziF+lND4hfCjigAQsywKozQN0Esc8eJ89LTHLk8+7ZmV+LnBnJX2KNAA8KvVQ//9xWTYkDNnJq9VW2m5XF8vl2lSx/X3AMDhU35kee7yXS94mfh8St78RNZDOetAEwBAmaRjoS6t4a7M0TKFcWxNtfE+cvvgsWKCjs3U8jwFAGxd0w150DIAkHO0QSjaSPM3Pa6BI+RnVtojAPAErBRo6AeHtN1YDP8uRra1aiutXgYALTZ1H287pn+SxAAA0pFB0aQT7wuzKbOQwV93kfC/Qt13j/TI0k5kg2Yqox1YY0VBwlKdWXgx6VvLzKlRrPEjRU53Q7QQdpenE/bW7G7JBpZOpUmfLVi9arXQWkhtpdXLZP8WzFsQFx3Hh2vm/CjrBZaX9UbvmzenotZWWmpZ3AOJUgvCtkq/2u2Vy0lmbiOfZhxLqSWuyC/FpS5qbCyiW/6LUm/om2rv6mrvR9VGyCRkNErs6uOprS2bcpaZ91Bbd0CTmsTiPd/i8gtuzxGVPpoIebTY61qJ+aT9pJOytEnQ6NfiSBlxcbWsMTRG7LBtdFvJ8nxI9FAyKEhgkJRa4jqHpigjQxMZqamry/fV1Hk3eWRx198zmjTpmEZovSbe7tRGq4+ntraGnlY9nJfT47Wu5YAGVIKSZIEF7y8KOrg9R5C++r2iI6/W9myvF2p3/YNwyqQYcl/Fc14TkcNAk+r60AkPhBzg0wkA4GNi2fyDCMAg5VURKkfz4uwOzWJN0GBNuR0Qrnk3jTrrqlh68O1wvDlyNCBp6R+k0Tqq7ACgOp7K2koA6b7xSgFGeuTgvkElWBYAEDgidxVY8P5c0DGMrbLTgx908tVTPdo73uumw+4baW94WByTlp+fFuMCkJGhBqD1ACCeFP2pTg/WVzkgTpiXUV6GtCCeD4Li82N29vYGoDs1/Lrvy379ngcADaWtg0JwMAe8ufp46gIM+brdYnEKL4/lSF5fItqjFE6ms6/g/UVBB18Qb1xgeno4x7qqf/XUKdr81i2ZIfJaU1LR0YEsbUxMWmnFUQEgP5/sYFxceXlWn1XIGR6w0JzDWosGZ2SIBgeFwJvDeBBvtxWVz5Ior2Xle486i4KIO1fP3aEXkiv0QQ47pa9CQoTTnP304227d08ejwMsszRaylwAZIGDvwCw/RQ8ObRRaBUXcIiCDpwPAN6NvQoN5vgHngOA5XT7NDVJa+31WUXSjRsxa27EXEuLawGAo3HU/+OysnBjlpdmPeNnExkYV16+HO3NEKMQJjgrGizjl1a0MTLI4xL2vek9KrBg+IiuhBRUFhMAfrojiae74Kcf715m8j0+ngDgj/vBR9QOAyArUmj2njc5cJmkOLCKa5u5PTO4YMM7cR0REPELAMtxxA0bpDX3SsXYFwNdu5bWmZN0bc7RjNraOMSPHpBRCgCrKWcYKq//njNrp4kGmyCQCQlGg5X40WDZA3z6u3vAnUEjRtw5d+5LAJi/Qm9xcOstFht9JxHp9/TjDeteKJyd7AFhuVPKhFX39vcXXd4hssjbuQO4IGxkAD6iPZy1Rg9Yj/g5/IGPAGD58kJ42Q0bwnE8AUDG39mZl5eToyMAiL62Fok2AkD34O7QM26jlIcG14oui6sYEjymrpxeyuUJlaZuqViWnz5Y0x8AQpt7J6V6Hxs+4k4N2chD386f/6EeRseB9lso89oBY6I+3lhVAQYDSHfud5qEkUEWGftj574ii2xWUqJyPTqfKOjg/WlQ5P7v4wJwSguhoJEV7hW1huOHKO1xDQD45aJWWyoAUAPOhBEAgwtAbZ2YhC2haDA/bbkfNvKmxmRobJF5mgEDNL/Q2EPKU72nD7rPPhq5rwf9CIDdageAUK2hod4GAKrj/U8BRiQ/ju8/R/7UJ4Ssbl9HutbpL63uUws2RH/k5bKe1vrKq8td1nsflDsXAES5OXQY9da639SS6uQswAC0ByyTlR6QAQkbEgIBQNbicggY8qCpdRpb3M6dNAguS4rTWC4ZjwVCXIABCitgdZ2RGNBDMAs4bSUAoDre/xRgsCFYvx5hkbkVVjfIv6/L6j61YIMLOs7ysuvttdSRV+vcnqEecycAiFpbFtUbiEpbzpiy6NKsDlhL/pS1ZQuq6TZwkjCYJOtuSVNJpZ8nIQeaf/NmPlKyz9R+b4T++cj46JF+9iM9JK2un5+0uurjkX2T5Qsso5Df/7O6smCj5/a93oI+5eUjKu0JVpLMJK/r18PDZRaWq4i3k0ykcHbLKmcqaoVlCvcQtGjEjyZ6emF1Fre3CpDa6vKZhbHn8wdLueytnqU8n7CTFSllugeMik0WaJd6CrUZDTfmwep/cY3S5M/hmqjP73V9Mj0uKjnA7ZQtFebiRWiVt8x/yrHW6GE1SYf8Hraa2psUa2m0QWRlQ0QWd8FiUrkrL5XK+ytm13iiUog3mzZtQbANsrpL7CfpySCz+G8BXEChYRVAxj1vSsmCDVUBxTfFTq3zpDO+Li5/Q9OFlrg6tdX2MovZCn6MtXM7PS8LAPQ+HQA48IcPeardqFesJtf6HvL2bby97tat9unCCQIAz/ORkWKeBwB3PgafKWxOFVYXCYvjwuqe4NAlnpcIgIhcFkQAAAfOfwwNIwAALR4IkKEpMJp6ZrWj1QUUgx2Yde32G/hIB+VVx6LUVlsCcF2Dyt4MQBzvFQgAKP62pvA2CUBaTZmF/RjLEV+dn7nuVvuo4fQRFQBYoHRH31DKAgdX5EMSb0ZGXIy0uiU+JcLqEoBprvgZgBK/BKDEHxYBAIMEAG16NQDoJYAdO7QCQAKnL043N5+mbpB4qNEZ77CXlFRk5FMJfFOd/OyOxJ/deZ1A99+8Weue5gjALphFLL+yezcB2AhZmy5Y2Wnh9feSCGE1ET8DAM2D3WeHDKFuMGi80R/hl+CjqvgSBsBlc5V0vMpCqigRF4viN7AVXV252B3+S8jaKtdTZoH5q7IIaUUjJnEBhYHWxysA3ty4482Nb2r5+KyMuvw64fQqnBknT2aU7aQe0PX8MqoXaKUsaCvivWvQmiQA7qHQ5t7bkSt5RctWYzcD2MEAwsNDJICvFi7sewf6knRnIltPn8vdxGNYvGkcAPj42OPt9hJfTqpyAws1GRnaImRBXQAQf4mBG7i2snwnaxlp51R1FjnEYRfqgBo69nHO0YD1ngAKNxbiP7S9BFAXV1EhnN7D8KLw5riiirq4lXUHK47VIf6mC63tTU3trU3T78IJilJSpQcAwK5XeLlQAXCg6oMbVYife8DCep8RSqkpACD+e0hL70UPGD5S70/pLXQ6pyhY4BzfYi20uNDgBoD4Bxi4gQyQZnVZPK3OMquXOecIdgQA0vMGuPwbD+yg9RIA4o8T20+tAFvxlV59Te6y0Vh5wWQytLYaTOgBAFCp3KNiEPzxrldUADD8VV06/wUWfw4AZDUVqzoSy2GXHwyZiTGgHwGhLHGoj7Mk0jmUAVS4D54BxcVcr90E5fUfkJTGb36ox4gSDwg9hkthP4RQCDtu3Ic6dYEDF1CYPAHweowBwgqPbVoJyXJXfFCxrCgjDv8Jr4urO51bk1GBLDOUQ+IssxesKKlSqveeH7+iBnAAqo/YTTogsq49rOfB7m23brUOp2UGQNH4DJ1gEVnledP47pKvfLdEqd/9occo8TMAJX4CoFXilwBg+lQA5HoFAIcvviiZWsHXH4q5nVDzk9HqLLNXUaFLJlORqahuz4uQOCDPAkblUYvkx1bTw3oGt3Xi4ivLsoDBnVWeygNc3mYSsoQA4PnyFwDIMCglD8EjXc3/kAQAPbPE4Wx9PW6BF6RDkW1ci2+K+JsngQE9AB2QOwEudGNdRoU6y+zl/ohMmjWyf6uiyfduWEVSnJ0wZLw4UvkMTaebCCuqLOtVFQxKGasQdwSYZdcZPWweSykFFuKwlZxoOBdQXIiGmvUkVxJ5g5TaSivnHs3SqeQ1UZUl7Q1p9Bp3kQWvFicXNvvQfGX7cR8fmqs6oPozOp1KAqgClSyw1AKSnqVA/PbTXj3E7RWnn/81jrcb4loHme7+n/Pz5krWuu3GM5+hVnmOfAICAFVWtzdVE9g05VApHvNTPawnW8fLiYmPeXvofmCNztv2lRxRuG/p1AUXOl6rrDd6WFGyyqsXQ4oXnKe3sRIT2f5YAsY2PV4nNJPUS2nv/a9wQJ3yewPiW2OcP3wDN8LQvIHP3zO+7/kXJ8IvrYGuJBUDgEhqyruaAJSXa0I0eaSjRwGA1otw2DrqOs8HBt6hzb+tSbi4RAdn17jE/UI7UwJw+Po6xLOFjmsroj//fEMmr+eCCovl6lUfeqHu47d2scsG0WA5eSqMj1AovM/QiAB8JXZnnRvBul6u9k4/v9Ccmbzwn8ZIgROwwDPET6sxdeaEa5xOTfiSnHA+//OeWetce0cDVAzl5BwGgNb29lb570L73fZ+AFCqsWg4fgCIYuspLidbVxzwNgggzZOQ0o2AyNpG2JWHKQZgJ6sdycvR3CGdDbYyE6kFABD/+uyEgoFcUBHQEAHVV1XxZyNhcwUAy/r1FP+UiIBZo0zmY+2etcQc//3uzE5T54P1evSokvj4SB/w7I/jAUB4Z3N6ZF8f3/TmJRsYwMILraQLUOvwz8ocHR2ODlSo5V65sg8ANKx0B7IsJGGtLaraXXF+Nir0/r77fPb58wkXM1HAAACUpbZjvQJAfJY00EnLRt8gdPXPIyIuiwoRLqi4mlBQkFI9gQFQUWpDhNNZbwWAXADg+AMD9w8dOmVKaMAsg2FQ+3BYFs/2TL+/EIN4Z8qjgXqjf4kdpoP7kwCgMWkdMGNDI03hOD+11+xhrWWt8uHiwyfbGk+6AdjtjkhhPV3Fx2F0/tnyszixP9cCy8/UshP2y8/Q7Brg9sHeImvLX42JlLADy+E4HrxxZlhY8gSuEGGrjOrnagAg4wMA9RH4lCu+w5lLADpQ+mlxxm8LvFUytKTEcnCWofV5fOVzzAmVlDk7yAneP4/4M79GcSoBcJb4l8SHIH4+Hj8oNoeGLtv8kNojASjWGlnwS5eK16BMM6eidMlhFwBtpK/Bw3qGqqyn2J+SkASAPtM6fz7l62QG4O8RvwQQL95qOGnZDeCyLGaGVeYesL8ayxKANl6Lt125+/DV2CVTZZGzcrHZPDmvbPLm8O/RA4a39+uux+WQF2T6/ZZMxJ/yDbcHPcBGPYDjFwBM2lPL8jafyTCF4/zUXrOHlY7iStXDEDlUAPCNdzgdeHqz8z9Hwzx8SQoAR4/S6/yYo1FsPbUKADipewnZeMvxZcrS7q2LuNY3TMYPAQAUSfHbeDma/1xmtdIYYMYYQE5yYEFKyjdoLwMIC4sHAPzHSQAqKovi8L5w2uT8yrz8uPLiWStN7Su60COnkADg8fkWU2dmZkr/ZwWAoCCMAUEU/7M4np9BE57TrM3avLm8sHnhBkM0ffbX4S4mdoSNXiPiv3b7ypIlt2/rvNjaYnwXFQb99QRAO5QB4Fvio6PZeor4OAury7mYXfMtWeFvD/X6OpNqfbtkXpYLIkTBhX1w30gDA6D9Mfp2d/cTn6kZg7gQoLpaFlQsKH/J9Sj6p1/8Yktq76LFIDAtP39yXn5dXv4zs5DFqFB06Us8jYZn7v/GVRCBW4qrC4aKMQA9wJyzJFqbn2+IXrgkmgHkDqRV8nwE4DDU53DO7dt0C6gLCqZi+tdatHlyGhjN1lPL4vVbAwPvu2aVOyn7dd4h92ReVhREqAsuxk6XqyFplT0LMILXyklQUpiaVJlfWRkXt7g8P6M8I2Na1KyVpTt2vPjiRgjO/MAq3RKopsDd3lNFbuVDWTj/hmYTj3ctzQYCEIFRVzkfirUheRdcAwB1lpXsnyHAFOVyj2w9hdPk9UsPjVM+Oxv/9cdzx49VliF1wcVY1S84eBg9JavMLlyqeOrhw6mpl4qjooqfiSruM+sErLmHYP7++sijvduVYgfa7gX1+XV6Y48TzoF6WOFPDilfxZHUWWB1VlY+Fe12qTe0wCOIQKkE+SaAQcp6E1JvlZRSYaH+AyCPn1sTnxMqmq2SOsurXl5L6vUWnYFb4KXWJ3v39viFBXXWVFpT/EFY0wOiSjg//03Wmd5ZdRcSL9SJdyN4MRK4cuX69bHvtjWyLn4claHNqFCssfN/ACSSlF+MGKC8+fSFjHPbWOJ4Bw/+1VsldXvVy2sXQ+ug2Fgy108DwIHXPr4gfmHhs4fQDegL0g2dPhI20/2ISwA4B52fv5EeQncAwGk0/HReHj/u5qUGrny+oCBWNPhg48GuKK3GcMkKcR2DddI8IfQYIffvA8hfjEDBBklG4A8AHDj0DnTwr656mAApdZZXvcxWe+bM27e3bQujn/J6CoDH/FFkQs1dBnCiklL4izERbebSUmEMTE3HzOIzOQaw42+dnX/bCBGAFjS/heNXADQ27u+6eLHrIABkGOouKVmdsgyhiooMoU/58/ga1vnzNV/j9beUqB94v02JnwDopFxPzOqCCvUyAZi8rQa/d5f9fwAkcg/APXteApgGFWq0hZM9ANx9fkWTJ4CizOQiAWDBYnR8cf1BYHNq4PMAEAgACfsPgkBXVMWlS+gBso6lapJGqKVFI6T+BQpTz6ywuSzeKVVG6tCxtrZsdQPgeLu65C9W8LLyCxEAgFlm2+2IiHsAMOWpAKgHXKAe8AQE3j5BxMrp/NO4tJQBtFOKpp2sJAPYsTwuOTnuRQbwfcWNG5eEMLdc0kkABxMu7t+f0nWzK75nlrdMxpe8SAGgxA8fYVJlhf+nFpkVvUSn6RQAOCtd39WVi3gJQKS4f0R9bxAATAaAewUFADDlqQD+W9y1hkVRRmGyy+6ygrYleMVCM4sQoRvQKiFSBlG56CZiYYigEIgFlcJWhIJ0YUuUCLMbT1mhS4ClaRJPEQRElhbhpRD1qSyhInvq6f6e832zMzta/arebm4zOzvnnW9n3j3fOe9H8f/gev6HH57vpPZyMAbK0pESpAfz/YKA5YuWvb9skdnMBGCq6PO2lpbMz6l19pWhUZdg8h1ljvLHSOCiZUxASxyw/eM9F7Cbn1LHNGWugYHyv3pJgIcDhSRAla5B/zQCZNvdnj2y7U73/lAiYFVJ3/33980jJXkqAsDA84e+aaorq5MEYCaLlBjiVwgw73z//eadZgAEIAV3O6YB9qN4CASQ1t/KMkP82BEE4Mu/5+ieoyDA6pnVzd3G6Ni3r0P8aVqwNA94nJDcetfnWyRuB7Z80rqDvv8MPA+36y1M9W13escIEACVNW9eX9+8vyIghr0Fnq/r/IEdFnq/xP1fwbHjprFqZyYCvHDaYzRXGBkHJAoCArby5qtJa4KAGctAwIzqTR9/vP3j7Xu20whQ69gwAs7UgbPIfGyRRUYxs1LMCzy6tnWTGj8R8CkDnUfyDyc5WOiyxCtmQmTOGxcXd20cm7mdTIALI4DwvHBYGOopjceO9czaggDcA0TBA+4BIGCSsp1mr8YIAgKrqqs/BrbvOWr1lMa5egJ0WWQQAIhqXgAEqE9BQu+3OuilvL7W+FZKOAmHvYuBkwl4rV81WCB4CmNtgncag+XfKyr0bWyiq7kK2MDQdb2dPALUtzPWywznWolWoFcD/fv1Ul6pE1DKjVmkiloGPgMvPTh/qpGOWjsGoPeZUlF9+ypv//pVTspyLe5S3n/paR5YynvfweDt+qzzEAn5CWhkdySGR2NKMD4+1oH/c5WAsv9lO9qSqJZ5k5LbNgukKuerrxUmKrSXzyTQ2moSuJEgiiouIKBfAPBTpWO0IzJS9rAsWNAWPLR0ZQw9VyIisH1UQcnXnJVdSYjg/U/Twcdvl5/fewzejv0ZSlZ2SDmhsLs7t5w+I2yIozwjwwGxjFcZkflh+iz1L7VBtW+jzc3pzM8CwoyGUM7hBcjz5YIKqTSBaWrWWbTxcVZ6IHhgYNMAZ6Vv7ADEk4J9jgUBE1TpiConQzls5WJji2IHStN+8vErCEzzpSqlEVtnVG0dylnZEioQmMf7y7jnzXMTEDjBF/aHAG/n/YHD54us8xDE7WjurLVXuPDDlAjIiUzPyTcY8ImRKSBAZH0PHJAFF4+/jfDwd2wl5c5jw8xB9cSAzVeeL0tleZ8gpYik6yRlQp0KMSkrXb3uq2EXvpv8LmWluWNFEIAqBDcBqnSMTiQCEH7R/D2lu1ItkJZdBWm+aWkj0qq2YjtnZbkKawbvf4TQ39/d3d/Pf/TZFVjg+xID22l/jv6aiyYOP4DECBNQX9HgKMx3VRAB0Q5k9nNiiYCUICaA4p84ejTCp/25zQ21zCCgvHxmJUZAoYEJkOcLLzQMDE5fsRcaLDQ+BA5to8IwImCA4qcn7cePX6cSAG8zI0nj8WJ6fJQqHeMdiZH5dPk3IXyjOf/rkC5fhF9QUFp69jkoNOSsLBdIzOD9ScGcf+gio/GiQ+dfjxcYMV2SAN6O/YGJzcaJQuoSARXfFDkiwztiYjPzw8opNZcSaTBGRpYnwhwT+59/WEijfux/heI4URk+8+aamZWzzTKNPUyebxKZwRURwskLbSqatCj+nTsPCQJ8/Dyn35kAY27nV7VaAiZdDAjT03gUfdLl79rVbcxw5M+mvjykMEePSyutikPpKkvXEtkxzwQA2wzANv6jT0RBYJcggLfT/ofroKK2NSOi4ZOHOEBAaE650VEUkwkC+LGNf5SkJRFwzWiaGm08QbW+xxxZe/dWOvdmhs901EzP1BAgpO9UR74U4sBZbSYm4KNtOz8iIAlLSlGVSgoB/vUDQWb+bSAIGMnnTlL0ivgcXP62Tbu6zZE54bDW+toPI6CrNC6utPQcGgEsXRE/CGDlxe1Tt8Ay8NAtz9KffWBmtpXCv/NO1RFip9G80+hfh+MTAfmFFbGO0AUdMZnhsbPLUzLSMQjQ05kY5J8YGUv7L2scfaB/XOMLtH+8MysWU9tAT0tfX7gkwGgdIaWvvlZZEPAhj4DPQIDOoYIJ2GdsQFkiDDLcBJyvFjzE5+Dmtys7qDwW1ZIgAFJza0HaCIRf+v3XisMD1+IKAoRIsaRmp2/nP/pEzPAkgM3TcAecOFwc35Gf73C5CuubY9rDQQCMkVPgCms04kVkfvhs3v/9/nHj+hE/E1CE+LmYt69vtyQAOWSY1UkCZPyybQ7KkupCP9yG+ImAG2vUyXYyiLyCCfBvaPDXEGA8Xy14iM9v67Tj4u++dPduJiCgYF7p2WdXVZ177tenfT9CODzw58Wx9OQMlq/9ppvsvufSn/EVmAECKEGnOkIMP7TN/9A1fHwiIL+jor4+ph7FuUxAeUo+EwBvcBDA+7//Pp8PEyDiZ4AAPl8iQErfE4cPc8GSBNr4hDK/Wrb9ieOp8YGAffvEF078NmDpeI1a4DC1vjYxJ5YQDuArMCuwC4MItjaY7Kq6lmtz5VOApScr2DE3QcvjP4APPZ9fYpyyljdetMkWFnJ2lghIsVgc+UYjnoL+QeGz9ftP5cd/bCxYIJhk1tn6F7XC+qzzeP32K94ABAEXAyCApOONkwGRtT1rSLxaPQzAP4qwdKk34wvOEn/xKnDUmzBGB9477w4gj7frfX01hg8MvMbfYRZLmHAX4/35DfyOydjbo5pZJn1zvSXUUmEBVb4L6D+f/yMKQKYRvPKSBgeTUKp7gdT0c3XSNSlaZqzjo4upse0DAVFcDHytgmt3rwDqLNQXbekwAaLAwky1x3w8ofRVua/P4iImwwcGNQ198OBBLy2mMlQSnQGLF/vOnD5scyCjTPEpVnZhFjRtdkrbHX8U4JVUUVFfUeF4z2wjWHN9NtZ5SNFop8PBZXzF6dmjID0/ePjh4vLyYsXn4davd0mI/uKh8CWm2Wwz5uN2ki8xS1tRsMDHQy2ytnfzTn3tMLLQhocNAcETpOPEwaHeBz0IQLM5Q5ixzX4iIzVjZUZ2yr0ls8gQvEw6RNCdZm8+vmLjbXZjsGfbnTGdunBEgYa31/6KehdKS9dMkVlfH79JfdousCSnK7ANPviRlgBIz4TmDx7+xlUyq6T+vpkzUeM0EwSkKSil2l2y2AQBNTWoxiSLTZa2ggA+HipRAf65DxABOBN3HpMImGS42cClc+w4sXmoNfVlDwI4cDm7Ezt7UmpMQkRIRMLqEkYZHCJYOmeGH99xfDcISDWkTvHwPU7npplhskADBDhcaE5fY7EycimrmqvxCU5yBoIAZ0YqbEKH5W678VgFcsz7R4/u3MsIy7ZZFaQCtZMFAYsWGY3bXmACRgoCjGaWtg8h06Ma3N3+4Dlau/xRAd6CAJmCIQJsqanW0zUE5GjihxvdsOyYkEC/iLensB98SZl0iNiLG+bx3cczZ4832g1TZPxyBKRsYTM04XiBr0CM0+VyrrmYSwKmjB+6o2CS77qFC5WSl2hnW1tloiUE99yQoIuoDW3WrP19eAYMGwY16uuN2IDsXbtkSQwREGrYtuydDiLgHZNa22tmKawYQsRUiIIFs2cWOMgA3Ky+tuy2W63eY4d4jgCKX5qxPZFhD5oVaX9xeiPiBwGKQ0T4pszdxzcdnz0+WG2rpPoD5fMofiYgz4HLDygjYKhrfqDvsGTFwQEEVGbh8o84e5h950RuQ5vVtx8MjEP8RIA4YEJX6S7hQEG+xKGGmnfeWW5sJgLU2l4LZX0VApo3SkcIszZ+aeCw+D5gJq8Qcesv3t6bdyN9oBCwocKloKmpyTW4KmHx4mGLnVOyED9QdmxvZlvbk20gYNPu3cfDmQAZPxOwfosYfTTbRZ4kXhdQ/z6AEUfCYLz3QGDwsGS+/A8IAootCfh2+gUdIqlMI2B0H+KfQfFTZ6c6AjgLS77Eoc3L33lnUUcz+RKrtb0Wer86AmKE9jfrsrj06j5NQcMvYzdu5OsvQStKuGd3z8g0Bc7CzY/RyASobYAQckPCTdK3mJukqP6A70G4Aymf52W1EZRvsTWXtHM20hUSndEZVrQt4vKPFFJ58jdNfXPm9I07wZnJfaZt8maxU6D5PCKgbhkufkcz+RKTtJUE8PvlPeD55/kxcPfa0++RM/EA2d9ByRnuY8cV4RU2NSo1dcpULQHlhoxYEf4ZggAZ/jyE31g1NV+N/9iQ3aZp5Fs8nCDOn9sBRDl0SBSyxl5jgy/RZnWnQfunwdWcgPRG3NEgKviZkNs8XErJyW8coJo4jh+pWZNH29pVw88jX2I00eBGENRMvsQsRQUB/H4qxmasB2BuFp0jg+dmrefCxk4iAjhLTO5x08JgTD9pWpibAHiRWSIRvyDgSRDA8SN8ip8IcMdfXX0MBJBvscZHGN5iiJ8IyL5wTDYISLUB6n28FtpftrkxC0d98JCy+9e5peR57FEk8SkI0ElN8iVGaVxNjdFcCF9isV0QwNvXqklvgAjIkUOAAQImGW82KlVaIOACOKmOBwMqATnKUwA8yBEgKWACshQdn3kcbYDsW6w5v7UYeQSaqU6lEUBunLUCbxOGfr90A5qtjiqAYuqsu0yVkqjj9YBeatLmGmRlC4NCF7m3hwbR/zmPtq8FtPZm0bpaXsg/88sWNcuJ/81QGFCW01DA8k+iCsD+HrtwOhonqIh9pZgCYpghfIXF1RcNegLu1rVeb0+p2pDkmTcmWenO4QI2BXJIXRYVdUWS5h1508aqWXZAX2sszNDUz1uvgvXzKZf40MwX6R0puCXvVeC009T0uSZGL5aimlrgsbq2NdPARqFSAgp4++juYqdmsawwesRrpbPNs1Y4NcpiycbuLqcLv7OzKqfe8d6XG0UWF4Djg77WGFIaULPU6kQJpm0efXTtqZf4GFD8vkx6RwquRdYsEeI9aRSyppw2JYwHATiQphZ4rK5tDVnV6kt8gbQZcVuxHQEmInBgMyAIuIZqd6Ujg00bPhPgb8/KaiqrbGrLbNkNApAvp/dI5OprjSGllx9oKiiQWV8QgMB/+OabH14ngIBTLfGB0IXXGQjQOVLk0WSvcJTg/b1HjRmT3NWVfDWDCcDxNLXAcqkrV0y3UGKUVv4KS06k4a5IvsFGg82W4pTxny4IQPzI+E1sngil5yZABvhCtr2msrKsrL2sJbNpSWwYCHjpvQx1u77WGAQ0lXVtLaiSWV8i4BCmYcYJBtby8ckugn1ozf5iBHD8TIDekSKPJns1S4SMRU3pxStXagkAnZpaYNGuHjElLcIqCVhY2DCnetjWrajuRUbI2L1ypc3s3Mzxn75ZElDnP3L4yJ3NUHoKAcoVDsKZVFa2tcMvP65lScvUOx5JwdpRe1ezozwmS30CRslaY5WArtTcLrmEBxMw7hmgkVYgen2tCDg1JCRVU5w9wPEzAXpHCnah1SwRMgQP3ITkZDseusBz8V6cNVVrgQUBFYGrdwRWSHO0woVz6ue8m3z2OaVLUZxs6541q9uwsuH4McJxk5l+506sI9P+kcNJKofILyjPWI7CXB0IaI/tmUEE7G8JuyPSkIFs0XEpTVuJAG2tsSAgI7iKs54gAN/9ZwjjBAHpQnnWObOF9BZKEvFLAvSOFAoBSOLheIIAFDFnX6olQK4mp86vm8v37i2HYwET0DBnznx8P7efc24ptmMEVNhsIe4sKxFw/sSLzIdkgYM+CxtKBLS0NM3vw11uMBNfgUhaNkuugLYaI0CNX0rpAy1dUWVx4v0g4NFHrxUj4DUQcKcgIDUqCgSYFQIGZPyt75r0jhRUIHF/ibpECBEA45mNl3KPPAgQq8npCDBmwARItKlRre2cBvpl0Ps4B2zrtmVPkPFJApBTbTbX1TWPBAH6goWhWI+wMhMFUC0tRwaXbAYBuP4Z6nS5rtaYf0scaKqqKsX7FQLoHnBtx2uCAGVPbvNKZwKMRhl+77smvSPFipmo9OD4BQFGIDk7N5mPgQssaoU1tcB6H18QUN9O8QNzh3LACcPUggQmgB4AdTv9rxl+1clLbnh3pq3bvHl+S8sgsGTzbBCwyuJu6zHX6muNJ9MSH+/jAPx+IgC3vh8OH0b8TADf1QFaLg1marcyAQNMQG8rCNA7UqygUieO/1U+Ht+YduzINQv4i1phtRYYBEzx8PFFbW77EqXN7N2rva/tDtEvqWH+uyU3QMDqrErG5vDNRMBe7ZoarfpaY7HEh/r+9fT4B15nEAGA6LYGmACcungMAia9IwXXInMWex4fz6wWTwgChhJyGd6EC7QqDTB5ojVNV5BAVN+od3AANJP0c8NUeTo7r3U8jqsuqaGrNZZaW33/ep37WR5B02amb03TO1LQXis2cIGEPF8mxw0vo4TSO6lRngycm8f6c3mL895Tz2D7IGRuUvQR8i6Tvr46qXoGgAINLomYCgz19qw/GeMMv2l8uPNxxQhZ3/ZmtCkwQ1pbLM+6cQvDKODuHLuccBrjlFL6KkDbR6f3Fc5YzwVaAi7X3WshTRmyE9NUbFxsSHwPwJewweXaHw2dW78SSBPS9Ko6T6l6BrLHqATOEXg6zDvbZseyvAEy6zu2MiElISTFnuh0kt1g1lSeKFXPx6Jvw4MpitYW5Rb9+bO5GytfIX3VeISPsFqwIXyJ9b7C/kgZKVnrzrIyFwhwNyPj7rTMlFecQrGvATrLmpYhY5SV5YLUTGNpSgURNVqpCgJycvCDTVr0gQCbPcAOF6ULpZMUChsnTAAdYoa/CATgt4Z6PhabgWtm+bUgQLPuDlas0J0/CEBgmtXx1HiEj7BnBsq80+slt0cwrW35yB14g7L/fU1N5SBgUd225prmZvzT8QIIWJyBq4/w9zaVHXiBCWgX8Z+tFEQs12QYckHADcgv5CN+SUDqJVi2WcQPAi5IwHjxi9pRVNQCFE2FoUIGtxKuIkxPeiUxalSq36jixYziFZ9tOwQoo+DDZyUBLpdRIQAXViN9RTx3bdnyKKUh7lrrE8J1pAUFUqh54bHEEBO6L92xXsaP3ekNdxIBzc11zXUdy5mANcZVxmJx+V9A3osIcLnjv8SeS1ng5WrbSOhS/ZIYdlsCHtDSIv/C8UUJiVEbEzc6isKZgLAVM+1m+xrCQWBNdN4jAci8+zqJEJTu3qp+PTRSuK4C+dHl/BoE0Fp2Bw4I6QsCEM2WlIwMUPDoQyCACyZm4IRYamsJoCzFS3dgvh1QZpxLvkCWt3lnc0dH3aLlNcsQcF7kquJVuPxNB16QBLTL+M+eYIew4CzwIqVSDwREqPETAUNxBTTl9xfMjSzescNZviM8fMCR4ggHAZhtUOJ/GQQsDh6VGuI7cxURsMZNgHL8IL5gD3f+8ENPA7JMd93Jnz8aNSaHxep44oLiB3IK4gcBomAibdy4UsSvJ+AOEKAvOJisLqbGAa/A+HfSt5/iv4wIcHH8IwKy3W12y/3l+TEBFL+6GpzNMwucixHEX38QMLBsERGAG4wHAaHOmc7a6Rw/E6B9vyRgeWddTc+yh4gAWcDR3y+lr/ARvj09/faHeLuQ3jNQyS1Xm5u28WfCbwI/t+oLDkiaNjMKmwUBaxo6cfk5fiKggeIfRj/OcEtpvhxZ4EWaR23hkJynn0b80qP0uTAmQOMHEO1E/JVU4VS0bFlReNjcL38W+Jjwc+/4jW/nTg/FuuF8fuvmHpSOQwC7zrBP8H03d7bcdwNPtbEZm0b6Ch9h3Ai2KFNxbqXGaX0vvXRFAB7L0REBYt21ukV0xfPqcfkXyfiR9Y12pQ3zTbCiBubQRcOx/+XXLJqjdWgAAc/h+iN+JmC2TY2fgBGgVHjtxlK54WGn8AkOsEepr1es4tEB5AEHo0Wef0ts7O0iQM5Sq6vjgQB1KpK2mw3ysy2M0JPa5k7K8roNKd4hmOZ0lnVqV6ML2+Vn99/ZXDdyotj/suWeDg1UEIG7AB4CjNlmXe1wvJPL3ABRkPFPPsG3riIo3xEQIGcZRZhEgPoUoP312y93t/HJ1eZOMifTFRwAJi2ODr7g8frdd9+/6jLs7y5AMHmC5B+yzO4SB5Jz0gwil0ACkHPCEv/kE6zvslOFsgCXVyAHitU5dFJabscO2iy211kmT4zXFUioApyxoiF4UrCKKVfrs7TwRvFwJt7Rdvqxj4cc26Skvrm0gl0hNrAWlu+9SpGm+uONB7T11nkEFvj4B2jV7T958uPT5k4+7zvluumPZxZQzdSefEVncRHlKRXvhLXMI8WPKHeeFfWpU66+2I2bxuuztDeopjkPA2+dIWt9xSIwsWFsniYW1SA5PFYWSLg/T18wofcN5l+D5JPlqidtkGTq3OXx+ZM7MLkB++7QDp7BMZ3sU5zqB6td5TUIeH29RyelT9QkjfEuCPDw+gIBWEYZi2lLPL5dn6X9vkK7uvqun0St78bg2KL89vZYIgB5e9EoCCFABCRkB4waFSgelWVy9ThVCut9gykfkJ7TiQVPmnqK1tyfZJrfE9ilfj4I2LFxdce+jn3+b/ASG3x+2Zj/svtJn+JRtByesj8IwK+kyFSLgoU+fl1pJcDoRrqTNvanpKutuUBxvXVXdwgYUAjQL2xMxcvrqhcutNqruc3tmFzSIraoKbCqpWg2ETBTNEqyEPLB9Ugd5et2f6tkSyMH4AQc0eK5H1NREWHj43OOL316J9DUfpAIWNJXUqDWOk/uwFjZV7gv1PLGp5IAX7vdzzfAHjJB+BRnj4Kxsbrw8hkPbXvo0ewQBe9CKnaljR5dMoj4B68dfcTgqbUt9fVL2g3Z5yhfKzYsMDaT+dghiyQgrQWPgVBrbkvuu9W9+bLWt6ioottNADu9BUIOEwF2q93X94QEapI4feLOOhs5/u6KCmuMQkBDw/T0+9e0d7b3HLw/2tQQtHB/ybw0WTsMAlZvWr3vDf+gjn1MAElfu1+C1c8vdQJtlxdMXXj5jIefKXxw/c8+Er1QSl1bYex73eC4/bcNjpMEpNTUpIiChvr65x21BssxBXRArK6N+M+/iKRv647OzoUNDXMKl7TX7tmDEeBYwKvLhYe3NLWAAG7MdHG36BgmIISywr7utrloJ8evpt0pfuSpkaN2kfSFUnQ1dC5Ys6aop70FvxVMFqyEg4qVNFkLfB4TsG/fGxQ/pu9J+dl9rX7D7NZRtF1XOwwCHq149MEv8UoABPAIaBwcd+2rg9cyAXyNm2XBQkPnlztiUqBZBIbwCGCLjzp/MxPgKK+GCij0r9/elrO9N56qLlnptBw4MBg+m5e8cFH8IECt5j7BGH7iininev1PT9osa4PxiypGSGsQ0NlQ1g4CsEY6pDKPgMZ5aUoW+rw3Vg+sw7y1nL4XBASEWBP8Un1puz5r7XXWaw8+mNJtVbDQZ8LWNEUJv/pqY3+k+v0X94DumApHtLpiob5NjdvcPr7utsJaavOSBIQTAZktLWeFzz6dZmpcFH8ZF0EtjaCeYVmQgIWTk4o1M4+VWVPNuuODgPbOpibcAfct20cEzJ+zv0TMoigEVK/m+CUByDonJEwYAWfJS2i7LmsNAh5c/60GV/gEY4EkjVsc33SgvbDEHdTXqlvxFFgQPUSF3pzse9z+GVWEgp9AgIj/0ieBcNPp90xfsMDF/cJXEgEbIsoA8l0mxA3qzdN4Ieh3VOmNLG9WT1N7T0/PvmUvEwFL+maUqtIZBLy9eqMIXxKAeO2pVmvCKN6ul9pev6z/9lktAd471BwtcF6e6vIEHkBAyu54TfzxenMyOFMzygWGTOXHP0HU+t56j3ITdF0IoJbX8/N88MiWE0sEb/1C0LfiPJwNrsCypvY3yHHC1FMwSiOVQQAeg7J8AzD9g7TGCPiOcYWCabqCB9XxVqAt3mPR1l9MOkD+aZ2Jz9CW+tL205OAQV43mBPQemmql776haClFI6Pjxbo1e1vMs31qDn4J2ntpZeKVgzkB6y+7tetEr2M7b0vM2B6JrerWdbLTxzBB+qzynqCshT4BfAMvX7JjPjElKypUxMdiZI3xV3CIrPEdDlOkyDmXj1yhMsfFOxou/XYx0mQ3sBUQH98fbxeeql4jq1h/vwGm1153bpDwaZO16ae3pdp4QG4aSvb3W1uFzWW9KHAAQUNgFrQYFINHAmmLMMW+sv4ovimN5htFVjj62HCzcDp8UYkiOm2K+6Cs3k1OpRVKlnhvPe43oHTvlSQ8X7UykPyNWFpkpDexe4CjgqrrbvCUIG/u7u7K1z6eEWBREKC6sBgt7UvXDjfliBf66XpyzcXw4UX5dlyu2JudrgR1lq37R+k6WwOXRY0cIpN9SF+NWuLdCDBrDD8xqZYUHpbwfe8dEJkfEa6IyMyIzIofDM1SIAAIRttstY3773pq5TjkTna+4unf6M5/lLZZrfaXcBRERGD6CNKbLaIwLLGTindu7oUKcxS0Wq1qw4MCWBgznxriHgNy1as2vQmgMLNuI4hgoDp0y9Us8Bk7tXYuB/3wMHGfhCgncpae5pYKFlK3XlHs7YYHzM+Zn5sPY3LWeZCEFCyEi1jW7bwyh5vtX6ptAF+DFSblMXYbObuzs5uKwhYtQrF2qNJqpOP8WlEsOpzvEFI7417Kzcvwn0QBEBDlJQsdux9zzXuSFl3EMULFMxQpDCEiJ/Nb1jACOswxYEhwTZ/DjHAr/F+Q4qM/+mON0EA1ieFR+aFQkoyAbj8TXPQlHek8dAHTMBTMn5MZgqhk91gtIv9s7Y8Rlj/li8oP8dvndkaE2M1SpdReIzqsr6FICCCYMzo6Ww6UiEIOHzg8OETh6+l2uM8nqVIxwDiLHJSFknv4tq9mzfvq2letjnMaQx1BZY4sVNZo6sisZDPZ96M0aPj4s5mKQxlZLdhPCOppUhFMICCgCXWEHptaG7GIBDxPx3XEX36zewRugBnL9vi6PL34RnY19j45utrP3n4ecKbEpdCGAHGhiVGaoDfjnsALr/lQf8P+L6UXm+hiSCcvkShrna4cKkwWcFPIXNPj9koCDgwsbFxeP+1JJ3xGvEXrzlYnIEs2ZqkY85KVHdnEQF1ze+AgIxIgyHCFpy7uqy5OAMEsI0vjZcROH8mAPEGQCj5ZZ/rlooh1iW33bbEGoXXMRUx3Rkcf08cLWV98kLJB+jyX4fLX0fT16d5ZpVp/UASxsaL68XqcTwCHnzrg5eZQb/qG1J4+Ct4K10bv4YAY4WrtrY+NHSFGAEnTvQfuZZylnjN8R8EA5QjjHZL6X3LQMDs4sgUw7JAIqAx0uEPAvj8S5EWl1KYpKEd9Xw0Ia9KRTDwwAMLU6PO9jZ0d3P4lOmJewME6KTkVa6SPmigvsbDb74mCFDjJwIGXU3AEQX70Umi+qQGpba/fLNqsksE97KUdsO0IUa47GCuqbbWbAmlgFHwcWI4jk6lt71uvwdRshOfpfyU6Ozra9rMXWaNByqaWppccUGQ0uL8x20dgaSxJIDiDaH4tVIxxLrwgQfmpIZ466WpXkp+4VooLj8qWCQBavyvjtvwjOfrL/yy/ahVW3yDfAKqM/j+z4Crr6VQ5yvMBAQCZloMGgFQVrgEXYX9OBoRoD8fECB/SvUAggBzs6UszlVcaGYCeK0KavbD/kzAqaUixsB1ty1J9e5Vbsp7qvYgw3GStCQp3NdY8vzrDBCgPvUIG3y6BLYKeAepbFrS/f27XlZshm9gRF/h6SsMAuRTgN7DBOArII7feKqCjHihH+QwYAL487qRpmMC9FL4r6Virgmo7WVAYP7Ue0ppif+1/4sTH7izrm5jsA0C+v2nELhEpJrhr1teTilEUCCOcvRortxpxYqkJOXopyrI0LflWdxrTwicJIUf2GCaq5WGSTC4nzZtndvyIgzgo2G7B2SNw1VXjQw9R/N+/epzQZM1OWZgnhszGJfq8MckTbGtbdIfXv82TD0xAzs00jDJiaxncIIsY1s3Nyy/PMgRCTsouR0ODVF+qpPt2P66ukOWBPX9l9cp6CkoaEk7z2io+YaADlfCVaNHqEBKqErGHa4QkD3l92xeZZWqAX+fku31b8M0vy8QpbCKFGYCVq97e906tvYhAiLb2spRmy+2gwBEfoni4njJ2MGYi5ZftDNhgnw/CLhIunuPXJ6WVjMZN9FOrRSeN8LdIgkwAUVFOQtynAvuKSrCC4Ph1z9+tRm6ugw2/MFg8Pq3QVnVsq+q3VlSImAdCEhel2tMTU5uRYNCZnkbehPk9pBsuwLy6LzQ1BlxzfKROy3yfweDAMR/jSwrWT7ZuDLBMCBvgj/9tHU8CKDoq6q8CRczAU6MAAyBBQvwgi/879lRUfRvw39BgCuwqa9MWeh4jkkSkJycm1yLv0BAZmI59WZI6asvUKC8PFWLi6zGyCtAgDR3H3PObQ+keUfFzAqJql5XnZzMbnCt80Yg/LRzq6puSsPEEAgQGOjJFH8wEH4dExx8MS7/f0JA55KyOftlv8WGsj3JYi2L5GRj7eNvm0FAW2Ybxf+LlL46qUq+vX2B15xPFilw9Zl43uV1irm9IMAeMmuW3Sj5hRIUBFS99VZV2lg3AZkopJQMSJ/jm25KMPxHBPS0NO0vk+eHE5wWLK29UpPffhwjQC999W1uuIeU1cD1REwlnT8ZBMjhf+W5D4AAc8isAnM1H5L79ogA79KqHxdV/aQSgPjBQLgkgG8D+Ps/ImAJrv+c990LKU9bLU82udZci2puvfRtL9Sux19/namzERUFO/3FdGBklljiYqRKAHyWv8Is4k8//cQNGCDAG6iqajmGphVJQHgPCBhQRkAqf/v/s3vAEjV+QQDHT0DG7vFWvdTEkFduGDxiBiOoXWLxGqVgQV3i4qZzHzCVggBzzziNFJ43huMvrfqpCk07IICR2TMwHwNAfQoA/9VToM+15HzNQspz8fgHkiUNraeQvu48MGDqp6fgYnfFQrS6xMWFY667rdTbaK45wBBGF5fNGKN1uU0GAYz5bh1wCS484T/TAUdNk7ULKSuFvK0SJ0lfHS677MzyFZrV1NQlLi6Aj9dYb3+T55IXM9CxogAcV/3vSvC/Bj1utPD6n/EnnaQbrf6BCX0AAAAASUVORK5CYII=)}.react-tel-input .ad{background-position:-16px 0}.react-tel-input .ae{background-position:-32px 0}.react-tel-input .af{background-position:-48px 0}.react-tel-input .ag{background-position:-64px 0}.react-tel-input .ai{background-position:-80px 0}.react-tel-input .al{background-position:-96px 0}.react-tel-input .am{background-position:-112px 0}.react-tel-input .ao{background-position:-128px 0}.react-tel-input .ar{background-position:-144px 0}.react-tel-input .as{background-position:-160px 0}.react-tel-input .at{background-position:-176px 0}.react-tel-input .au{background-position:-192px 0}.react-tel-input .aw{background-position:-208px 0}.react-tel-input .az{background-position:-224px 0}.react-tel-input .ba{background-position:-240px 0}.react-tel-input .bb{background-position:0 -11px}.react-tel-input .bd{background-position:-16px -11px}.react-tel-input .be{background-position:-32px -11px}.react-tel-input .bf{background-position:-48px -11px}.react-tel-input .bg{background-position:-64px -11px}.react-tel-input .bh{background-position:-80px -11px}.react-tel-input .bi{background-position:-96px -11px}.react-tel-input .bj{background-position:-112px -11px}.react-tel-input .bm{background-position:-128px -11px}.react-tel-input .bn{background-position:-144px -11px}.react-tel-input .bo{background-position:-160px -11px}.react-tel-input .br{background-position:-176px -11px}.react-tel-input .bs{background-position:-192px -11px}.react-tel-input .bt{background-position:-208px -11px}.react-tel-input .bw{background-position:-224px -11px}.react-tel-input .by{background-position:-240px -11px}.react-tel-input .bz{background-position:0 -22px}.react-tel-input .ca{background-position:-16px -22px}.react-tel-input .cd{background-position:-32px -22px}.react-tel-input .cf{background-position:-48px -22px}.react-tel-input .cg{background-position:-64px -22px}.react-tel-input .ch{background-position:-80px -22px}.react-tel-input .ci{background-position:-96px -22px}.react-tel-input .ck{background-position:-112px -22px}.react-tel-input .cl{background-position:-128px -22px}.react-tel-input .cm{background-position:-144px -22px}.react-tel-input .cn{background-position:-160px -22px}.react-tel-input .co{background-position:-176px -22px}.react-tel-input .cr{background-position:-192px -22px}.react-tel-input .cu{background-position:-208px -22px}.react-tel-input .cv{background-position:-224px -22px}.react-tel-input .cw{background-position:-240px -22px}.react-tel-input .cy{background-position:0 -33px}.react-tel-input .cz{background-position:-16px -33px}.react-tel-input .de{background-position:-32px -33px}.react-tel-input .dj{background-position:-48px -33px}.react-tel-input .dk{background-position:-64px -33px}.react-tel-input .dm{background-position:-80px -33px}.react-tel-input .do{background-position:-96px -33px}.react-tel-input .dz{background-position:-112px -33px}.react-tel-input .ec{background-position:-128px -33px}.react-tel-input .ee{background-position:-144px -33px}.react-tel-input .eg{background-position:-160px -33px}.react-tel-input .er{background-position:-176px -33px}.react-tel-input .es{background-position:-192px -33px}.react-tel-input .et{background-position:-208px -33px}.react-tel-input .fi{background-position:-224px -33px}.react-tel-input .fj{background-position:-240px -33px}.react-tel-input .fk{background-position:0 -44px}.react-tel-input .fm{background-position:-16px -44px}.react-tel-input .fo{background-position:-32px -44px}.react-tel-input .fr,.react-tel-input .bl,.react-tel-input .mf{background-position:-48px -44px}.react-tel-input .ga{background-position:-64px -44px}.react-tel-input .gb{background-position:-80px -44px}.react-tel-input .gd{background-position:-96px -44px}.react-tel-input .ge{background-position:-112px -44px}.react-tel-input .gf{background-position:-128px -44px}.react-tel-input .gh{background-position:-144px -44px}.react-tel-input .gi{background-position:-160px -44px}.react-tel-input .gl{background-position:-176px -44px}.react-tel-input .gm{background-position:-192px -44px}.react-tel-input .gn{background-position:-208px -44px}.react-tel-input .gp{background-position:-224px -44px}.react-tel-input .gq{background-position:-240px -44px}.react-tel-input .gr{background-position:0 -55px}.react-tel-input .gt{background-position:-16px -55px}.react-tel-input .gu{background-position:-32px -55px}.react-tel-input .gw{background-position:-48px -55px}.react-tel-input .gy{background-position:-64px -55px}.react-tel-input .hk{background-position:-80px -55px}.react-tel-input .hn{background-position:-96px -55px}.react-tel-input .hr{background-position:-112px -55px}.react-tel-input .ht{background-position:-128px -55px}.react-tel-input .hu{background-position:-144px -55px}.react-tel-input .id{background-position:-160px -55px}.react-tel-input .ie{background-position:-176px -55px}.react-tel-input .il{background-position:-192px -55px}.react-tel-input .in{background-position:-208px -55px}.react-tel-input .io{background-position:-224px -55px}.react-tel-input .iq{background-position:-240px -55px}.react-tel-input .ir{background-position:0 -66px}.react-tel-input .is{background-position:-16px -66px}.react-tel-input .it{background-position:-32px -66px}.react-tel-input .je{background-position:-144px -154px}.react-tel-input .jm{background-position:-48px -66px}.react-tel-input .jo{background-position:-64px -66px}.react-tel-input .jp{background-position:-80px -66px}.react-tel-input .ke{background-position:-96px -66px}.react-tel-input .kg{background-position:-112px -66px}.react-tel-input .kh{background-position:-128px -66px}.react-tel-input .ki{background-position:-144px -66px}.react-tel-input .xk{background-position:-128px -154px}.react-tel-input .km{background-position:-160px -66px}.react-tel-input .kn{background-position:-176px -66px}.react-tel-input .kp{background-position:-192px -66px}.react-tel-input .kr{background-position:-208px -66px}.react-tel-input .kw{background-position:-224px -66px}.react-tel-input .ky{background-position:-240px -66px}.react-tel-input .kz{background-position:0 -77px}.react-tel-input .la{background-position:-16px -77px}.react-tel-input .lb{background-position:-32px -77px}.react-tel-input .lc{background-position:-48px -77px}.react-tel-input .li{background-position:-64px -77px}.react-tel-input .lk{background-position:-80px -77px}.react-tel-input .lr{background-position:-96px -77px}.react-tel-input .ls{background-position:-112px -77px}.react-tel-input .lt{background-position:-128px -77px}.react-tel-input .lu{background-position:-144px -77px}.react-tel-input .lv{background-position:-160px -77px}.react-tel-input .ly{background-position:-176px -77px}.react-tel-input .ma{background-position:-192px -77px}.react-tel-input .mc{background-position:-208px -77px}.react-tel-input .md{background-position:-224px -77px}.react-tel-input .me{background-position:-112px -154px;height:12px}.react-tel-input .mg{background-position:0 -88px}.react-tel-input .mh{background-position:-16px -88px}.react-tel-input .mk{background-position:-32px -88px}.react-tel-input .ml{background-position:-48px -88px}.react-tel-input .mm{background-position:-64px -88px}.react-tel-input .mn{background-position:-80px -88px}.react-tel-input .mo{background-position:-96px -88px}.react-tel-input .mp{background-position:-112px -88px}.react-tel-input .mq{background-position:-128px -88px}.react-tel-input .mr{background-position:-144px -88px}.react-tel-input .ms{background-position:-160px -88px}.react-tel-input .mt{background-position:-176px -88px}.react-tel-input .mu{background-position:-192px -88px}.react-tel-input .mv{background-position:-208px -88px}.react-tel-input .mw{background-position:-224px -88px}.react-tel-input .mx{background-position:-240px -88px}.react-tel-input .my{background-position:0 -99px}.react-tel-input .mz{background-position:-16px -99px}.react-tel-input .na{background-position:-32px -99px}.react-tel-input .nc{background-position:-48px -99px}.react-tel-input .ne{background-position:-64px -99px}.react-tel-input .nf{background-position:-80px -99px}.react-tel-input .ng{background-position:-96px -99px}.react-tel-input .ni{background-position:-112px -99px}.react-tel-input .nl,.react-tel-input .bq{background-position:-128px -99px}.react-tel-input .no{background-position:-144px -99px}.react-tel-input .np{background-position:-160px -99px}.react-tel-input .nr{background-position:-176px -99px}.react-tel-input .nu{background-position:-192px -99px}.react-tel-input .nz{background-position:-208px -99px}.react-tel-input .om{background-position:-224px -99px}.react-tel-input .pa{background-position:-240px -99px}.react-tel-input .pe{background-position:0 -110px}.react-tel-input .pf{background-position:-16px -110px}.react-tel-input .pg{background-position:-32px -110px}.react-tel-input .ph{background-position:-48px -110px}.react-tel-input .pk{background-position:-64px -110px}.react-tel-input .pl{background-position:-80px -110px}.react-tel-input .pm{background-position:-96px -110px}.react-tel-input .pr{background-position:-112px -110px}.react-tel-input .ps{background-position:-128px -110px}.react-tel-input .pt{background-position:-144px -110px}.react-tel-input .pw{background-position:-160px -110px}.react-tel-input .py{background-position:-176px -110px}.react-tel-input .qa{background-position:-192px -110px}.react-tel-input .re{background-position:-208px -110px}.react-tel-input .ro{background-position:-224px -110px}.react-tel-input .rs{background-position:-240px -110px}.react-tel-input .ru{background-position:0 -121px}.react-tel-input .rw{background-position:-16px -121px}.react-tel-input .sa{background-position:-32px -121px}.react-tel-input .sb{background-position:-48px -121px}.react-tel-input .sc{background-position:-64px -121px}.react-tel-input .sd{background-position:-80px -121px}.react-tel-input .se{background-position:-96px -121px}.react-tel-input .sg{background-position:-112px -121px}.react-tel-input .sh{background-position:-128px -121px}.react-tel-input .si{background-position:-144px -121px}.react-tel-input .sk{background-position:-160px -121px}.react-tel-input .sl{background-position:-176px -121px}.react-tel-input .sm{background-position:-192px -121px}.react-tel-input .sn{background-position:-208px -121px}.react-tel-input .so{background-position:-224px -121px}.react-tel-input .sr{background-position:-240px -121px}.react-tel-input .ss{background-position:0 -132px}.react-tel-input .st{background-position:-16px -132px}.react-tel-input .sv{background-position:-32px -132px}.react-tel-input .sx{background-position:-48px -132px}.react-tel-input .sy{background-position:-64px -132px}.react-tel-input .sz{background-position:-80px -132px}.react-tel-input .tc{background-position:-96px -132px}.react-tel-input .td{background-position:-112px -132px}.react-tel-input .tg{background-position:-128px -132px}.react-tel-input .th{background-position:-144px -132px}.react-tel-input .tj{background-position:-160px -132px}.react-tel-input .tk{background-position:-176px -132px}.react-tel-input .tl{background-position:-192px -132px}.react-tel-input .tm{background-position:-208px -132px}.react-tel-input .tn{background-position:-224px -132px}.react-tel-input .to{background-position:-240px -132px}.react-tel-input .tr{background-position:0 -143px}.react-tel-input .tt{background-position:-16px -143px}.react-tel-input .tv{background-position:-32px -143px}.react-tel-input .tw{background-position:-48px -143px}.react-tel-input .tz{background-position:-64px -143px}.react-tel-input .ua{background-position:-80px -143px}.react-tel-input .ug{background-position:-96px -143px}.react-tel-input .us{background-position:-112px -143px}.react-tel-input .uy{background-position:-128px -143px}.react-tel-input .uz{background-position:-144px -143px}.react-tel-input .va{background-position:-160px -143px}.react-tel-input .vc{background-position:-176px -143px}.react-tel-input .ve{background-position:-192px -143px}.react-tel-input .vg{background-position:-208px -143px}.react-tel-input .vi{background-position:-224px -143px}.react-tel-input .vn{background-position:-240px -143px}.react-tel-input .vu{background-position:0 -154px}.react-tel-input .wf{background-position:-16px -154px}.react-tel-input .ws{background-position:-32px -154px}.react-tel-input .ye{background-position:-48px -154px}.react-tel-input .za{background-position:-64px -154px}.react-tel-input .zm{background-position:-80px -154px}.react-tel-input .zw{background-position:-96px -154px}.react-tel-input *{box-sizing:border-box;-moz-box-sizing:border-box}.react-tel-input .hide{display:none}.react-tel-input .v-hide{visibility:hidden}.react-tel-input .form-control{position:relative;font-size:14px;letter-spacing:.01rem;margin-top:0!important;margin-bottom:0!important;padding-left:48px;margin-left:0;background:#fff;border:1px solid #CACACA;border-radius:5px;line-height:25px;height:35px;width:300px;outline:none}.react-tel-input .form-control.invalid-number{border:1px solid #d79f9f;background-color:#faf0f0;border-left-color:#cacaca}.react-tel-input .form-control.invalid-number:focus{border:1px solid #d79f9f;border-left-color:#cacaca;background-color:#faf0f0}.react-tel-input .flag-dropdown{position:absolute;top:0;bottom:0;padding:0;background-color:#f5f5f5;border:1px solid #cacaca;border-radius:3px 0 0 3px}.react-tel-input .flag-dropdown:hover,.react-tel-input .flag-dropdown:focus{cursor:pointer}.react-tel-input .flag-dropdown.invalid-number{border-color:#d79f9f}.react-tel-input .flag-dropdown.open{z-index:2;background:#fff;border-radius:3px 0 0}.react-tel-input .flag-dropdown.open .selected-flag{background:#fff;border-radius:3px 0 0}.react-tel-input input[disabled]+.flag-dropdown:hover{cursor:default}.react-tel-input input[disabled]+.flag-dropdown:hover .selected-flag{background-color:transparent}.react-tel-input .selected-flag{outline:none;position:relative;width:38px;height:100%;padding:0 0 0 8px;border-radius:3px 0 0 3px}.react-tel-input .selected-flag:hover,.react-tel-input .selected-flag:focus{background-color:#fff}.react-tel-input .selected-flag .flag{position:absolute;top:50%;margin-top:-5px}.react-tel-input .selected-flag .arrow{position:relative;top:50%;margin-top:-2px;left:20px;width:0;height:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:4px solid #555}.react-tel-input .selected-flag .arrow.up{border-top:none;border-bottom:4px solid #555}.react-tel-input .country-list{outline:none;z-index:1;list-style:none;position:absolute;padding:0;margin:10px 0 10px -1px;box-shadow:1px 2px 10px #00000059;background-color:#fff;width:300px;max-height:200px;overflow-y:scroll;border-radius:0 0 3px 3px}.react-tel-input .country-list .flag{display:inline-block}.react-tel-input .country-list .divider{padding-bottom:5px;margin-bottom:5px;border-bottom:1px solid #ccc}.react-tel-input .country-list .country{padding:7px 9px}.react-tel-input .country-list .country .dial-code{color:#6b6b6b}.react-tel-input .country-list .country:hover,.react-tel-input .country-list .country.highlight{background-color:#f1f1f1}.react-tel-input .country-list .flag{margin-right:7px;margin-top:2px}.react-tel-input .country-list .country-name{margin-right:6px}.react-tel-input .country-list .search{position:sticky;top:0;background-color:#fff;padding:10px 0 6px 10px}.react-tel-input .country-list .search-emoji{font-size:15px}.react-tel-input .country-list .search-box{border:1px solid #cacaca;border-radius:3px;font-size:15px;line-height:15px;margin-left:6px;padding:3px 8px 5px;outline:none}.react-tel-input .country-list .no-entries-message{padding:7px 10px 11px;opacity:.7}.react-tel-input .invalid-number-message{position:absolute;z-index:1;font-size:13px;left:46px;top:-8px;background:#fff;padding:0 2px;color:#de0000}.react-tel-input .special-label{display:none;position:absolute;z-index:1;font-size:13px;left:46px;top:-8px;background:#fff;padding:0 2px;white-space:nowrap}/*! -* Quill Editor v1.3.7 -* https://quilljs.com/ +* Quill Editor v2.0.2 +* https://quilljs.com +* Copyright (c) 2017-2024, Slab * Copyright (c) 2014, Jason Chen * Copyright (c) 2013, salesforce.com -*/.ql-container{box-sizing:border-box;font-family:Helvetica,Arial,sans-serif;font-size:13px;height:100%;margin:0;position:relative}.ql-container.ql-disabled .ql-tooltip{visibility:hidden}.ql-container.ql-disabled .ql-editor ul[data-checked]>li:before{pointer-events:none}.ql-clipboard{left:-100000px;height:1px;overflow-y:hidden;position:absolute;top:50%}.ql-clipboard p{margin:0;padding:0}.ql-editor{box-sizing:border-box;line-height:1.42;height:100%;outline:none;overflow-y:auto;padding:12px 15px;tab-size:4;-moz-tab-size:4;text-align:left;white-space:pre-wrap;word-wrap:break-word}.ql-editor>*{cursor:text}.ql-editor p,.ql-editor ol,.ql-editor ul,.ql-editor pre,.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{margin:0;padding:0;counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol,.ql-editor ul{padding-left:1.5em}.ql-editor ol>li,.ql-editor ul>li{list-style-type:none}.ql-editor ul>li:before{content:"•"}.ql-editor ul[data-checked=true],.ql-editor ul[data-checked=false]{pointer-events:none}.ql-editor ul[data-checked=true]>li *,.ql-editor ul[data-checked=false]>li *{pointer-events:all}.ql-editor ul[data-checked=true]>li:before,.ql-editor ul[data-checked=false]>li:before{color:#777;cursor:pointer;pointer-events:all}.ql-editor ul[data-checked=true]>li:before{content:"☑"}.ql-editor ul[data-checked=false]>li:before{content:"☐"}.ql-editor li:before{display:inline-block;white-space:nowrap;width:1.2em}.ql-editor li:not(.ql-direction-rtl):before{margin-left:-1.5em;margin-right:.3em;text-align:right}.ql-editor li.ql-direction-rtl:before{margin-left:.3em;margin-right:-1.5em}.ql-editor ol li:not(.ql-direction-rtl),.ql-editor ul li:not(.ql-direction-rtl){padding-left:1.5em}.ql-editor ol li.ql-direction-rtl,.ql-editor ul li.ql-direction-rtl{padding-right:1.5em}.ql-editor ol li{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-0}.ql-editor ol li:before{content:counter(list-0,decimal) ". "}.ql-editor ol li.ql-indent-1{counter-increment:list-1}.ql-editor ol li.ql-indent-1:before{content:counter(list-1,lower-alpha) ". "}.ql-editor ol li.ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-2{counter-increment:list-2}.ql-editor ol li.ql-indent-2:before{content:counter(list-2,lower-roman) ". "}.ql-editor ol li.ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-3{counter-increment:list-3}.ql-editor ol li.ql-indent-3:before{content:counter(list-3,decimal) ". "}.ql-editor ol li.ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-4{counter-increment:list-4}.ql-editor ol li.ql-indent-4:before{content:counter(list-4,lower-alpha) ". "}.ql-editor ol li.ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-5{counter-increment:list-5}.ql-editor ol li.ql-indent-5:before{content:counter(list-5,lower-roman) ". "}.ql-editor ol li.ql-indent-5{counter-reset:list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-6{counter-increment:list-6}.ql-editor ol li.ql-indent-6:before{content:counter(list-6,decimal) ". "}.ql-editor ol li.ql-indent-6{counter-reset:list-7 list-8 list-9}.ql-editor ol li.ql-indent-7{counter-increment:list-7}.ql-editor ol li.ql-indent-7:before{content:counter(list-7,lower-alpha) ". "}.ql-editor ol li.ql-indent-7{counter-reset:list-8 list-9}.ql-editor ol li.ql-indent-8{counter-increment:list-8}.ql-editor ol li.ql-indent-8:before{content:counter(list-8,lower-roman) ". "}.ql-editor ol li.ql-indent-8{counter-reset:list-9}.ql-editor ol li.ql-indent-9{counter-increment:list-9}.ql-editor ol li.ql-indent-9:before{content:counter(list-9,decimal) ". "}.ql-editor .ql-indent-1:not(.ql-direction-rtl){padding-left:3em}.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:4.5em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:3em}.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:4.5em}.ql-editor .ql-indent-2:not(.ql-direction-rtl){padding-left:6em}.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:7.5em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:7.5em}.ql-editor .ql-indent-3:not(.ql-direction-rtl){padding-left:9em}.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:10.5em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:9em}.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:10.5em}.ql-editor .ql-indent-4:not(.ql-direction-rtl){padding-left:12em}.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:13.5em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:13.5em}.ql-editor .ql-indent-5:not(.ql-direction-rtl){padding-left:15em}.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:16.5em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:15em}.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:16.5em}.ql-editor .ql-indent-6:not(.ql-direction-rtl){padding-left:18em}.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:19.5em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:19.5em}.ql-editor .ql-indent-7:not(.ql-direction-rtl){padding-left:21em}.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:22.5em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:21em}.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:22.5em}.ql-editor .ql-indent-8:not(.ql-direction-rtl){padding-left:24em}.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:25.5em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:24em}.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:25.5em}.ql-editor .ql-indent-9:not(.ql-direction-rtl){padding-left:27em}.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:28.5em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:27em}.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:28.5em}.ql-editor .ql-video{display:block;max-width:100%}.ql-editor .ql-video.ql-align-center{margin:0 auto}.ql-editor .ql-video.ql-align-right{margin:0 0 0 auto}.ql-editor .ql-bg-black{background-color:#000}.ql-editor .ql-bg-red{background-color:#e60000}.ql-editor .ql-bg-orange{background-color:#f90}.ql-editor .ql-bg-yellow{background-color:#ff0}.ql-editor .ql-bg-green{background-color:#008a00}.ql-editor .ql-bg-blue{background-color:#06c}.ql-editor .ql-bg-purple{background-color:#93f}.ql-editor .ql-color-white{color:#fff}.ql-editor .ql-color-red{color:#e60000}.ql-editor .ql-color-orange{color:#f90}.ql-editor .ql-color-yellow{color:#ff0}.ql-editor .ql-color-green{color:#008a00}.ql-editor .ql-color-blue{color:#06c}.ql-editor .ql-color-purple{color:#93f}.ql-editor .ql-font-serif{font-family:Georgia,Times New Roman,serif}.ql-editor .ql-font-monospace{font-family:Monaco,Courier New,monospace}.ql-editor .ql-size-small{font-size:.75em}.ql-editor .ql-size-large{font-size:1.5em}.ql-editor .ql-size-huge{font-size:2.5em}.ql-editor .ql-direction-rtl{direction:rtl;text-align:inherit}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}.ql-editor.ql-blank:before{color:#0009;content:attr(data-placeholder);font-style:italic;left:15px;pointer-events:none;position:absolute;right:15px}.ql-snow.ql-toolbar:after,.ql-snow .ql-toolbar:after{clear:both;content:"";display:table}.ql-snow.ql-toolbar button,.ql-snow .ql-toolbar button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px}.ql-snow.ql-toolbar button svg,.ql-snow .ql-toolbar button svg{float:left;height:100%}.ql-snow.ql-toolbar button:active:hover,.ql-snow .ql-toolbar button:active:hover{outline:none}.ql-snow.ql-toolbar input.ql-image[type=file],.ql-snow .ql-toolbar input.ql-image[type=file]{display:none}.ql-snow.ql-toolbar button:hover,.ql-snow .ql-toolbar button:hover,.ql-snow.ql-toolbar button:focus,.ql-snow .ql-toolbar button:focus,.ql-snow.ql-toolbar button.ql-active,.ql-snow .ql-toolbar button.ql-active,.ql-snow.ql-toolbar .ql-picker-label:hover,.ql-snow .ql-toolbar .ql-picker-label:hover,.ql-snow.ql-toolbar .ql-picker-label.ql-active,.ql-snow .ql-toolbar .ql-picker-label.ql-active,.ql-snow.ql-toolbar .ql-picker-item:hover,.ql-snow .ql-toolbar .ql-picker-item:hover,.ql-snow.ql-toolbar .ql-picker-item.ql-selected,.ql-snow .ql-toolbar .ql-picker-item.ql-selected{color:#06c}.ql-snow.ql-toolbar button:hover .ql-fill,.ql-snow .ql-toolbar button:hover .ql-fill,.ql-snow.ql-toolbar button:focus .ql-fill,.ql-snow .ql-toolbar button:focus .ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill{fill:#06c}.ql-snow.ql-toolbar button:hover .ql-stroke,.ql-snow .ql-toolbar button:hover .ql-stroke,.ql-snow.ql-toolbar button:focus .ql-stroke,.ql-snow .ql-toolbar button:focus .ql-stroke,.ql-snow.ql-toolbar button.ql-active .ql-stroke,.ql-snow .ql-toolbar button.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow.ql-toolbar button:hover .ql-stroke-miter,.ql-snow .ql-toolbar button:hover .ql-stroke-miter,.ql-snow.ql-toolbar button:focus .ql-stroke-miter,.ql-snow .ql-toolbar button:focus .ql-stroke-miter,.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter{stroke:#06c}@media (pointer: coarse){.ql-snow.ql-toolbar button:hover:not(.ql-active),.ql-snow .ql-toolbar button:hover:not(.ql-active){color:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill{fill:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter{stroke:#444}}.ql-snow,.ql-snow *{box-sizing:border-box}.ql-snow .ql-hidden{display:none}.ql-snow .ql-out-bottom,.ql-snow .ql-out-top{visibility:hidden}.ql-snow .ql-tooltip{position:absolute;transform:translateY(10px)}.ql-snow .ql-tooltip a{cursor:pointer;text-decoration:none}.ql-snow .ql-tooltip.ql-flip{transform:translateY(-10px)}.ql-snow .ql-formats{display:inline-block;vertical-align:middle}.ql-snow .ql-formats:after{clear:both;content:"";display:table}.ql-snow .ql-stroke{fill:none;stroke:#444;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ql-snow .ql-stroke-miter{fill:none;stroke:#444;stroke-miterlimit:10;stroke-width:2}.ql-snow .ql-fill,.ql-snow .ql-stroke.ql-fill{fill:#444}.ql-snow .ql-empty{fill:none}.ql-snow .ql-even{fill-rule:evenodd}.ql-snow .ql-thin,.ql-snow .ql-stroke.ql-thin{stroke-width:1}.ql-snow .ql-transparent{opacity:.4}.ql-snow .ql-direction svg:last-child{display:none}.ql-snow .ql-direction.ql-active svg:last-child{display:inline}.ql-snow .ql-direction.ql-active svg:first-child{display:none}.ql-snow .ql-editor h1{font-size:2em}.ql-snow .ql-editor h2{font-size:1.5em}.ql-snow .ql-editor h3{font-size:1.17em}.ql-snow .ql-editor h4{font-size:1em}.ql-snow .ql-editor h5{font-size:.83em}.ql-snow .ql-editor h6{font-size:.67em}.ql-snow .ql-editor a{text-decoration:underline}.ql-snow .ql-editor blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}.ql-snow .ql-editor code,.ql-snow .ql-editor pre{background-color:#f0f0f0;border-radius:3px}.ql-snow .ql-editor pre{white-space:pre-wrap;margin-bottom:5px;margin-top:5px;padding:5px 10px}.ql-snow .ql-editor code{font-size:85%;padding:2px 4px}.ql-snow .ql-editor pre.ql-syntax{background-color:#23241f;color:#f8f8f2;overflow:visible}.ql-snow .ql-editor img{max-width:100%}.ql-snow .ql-picker{color:#444;display:inline-block;float:left;font-size:14px;font-weight:500;height:24px;position:relative;vertical-align:middle}.ql-snow .ql-picker-label{cursor:pointer;display:inline-block;height:100%;padding-left:8px;padding-right:2px;position:relative;width:100%}.ql-snow .ql-picker-label:before{display:inline-block;line-height:22px}.ql-snow .ql-picker-options{background-color:#fff;display:none;min-width:100%;padding:4px 8px;position:absolute;white-space:nowrap}.ql-snow .ql-picker-options .ql-picker-item{cursor:pointer;display:block;padding-bottom:5px;padding-top:5px}.ql-snow .ql-picker.ql-expanded .ql-picker-label{color:#ccc;z-index:2}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill{fill:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke{stroke:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-options{display:block;margin-top:-1px;top:100%;z-index:1}.ql-snow .ql-color-picker,.ql-snow .ql-icon-picker{width:28px}.ql-snow .ql-color-picker .ql-picker-label,.ql-snow .ql-icon-picker .ql-picker-label{padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-label svg,.ql-snow .ql-icon-picker .ql-picker-label svg{right:4px}.ql-snow .ql-icon-picker .ql-picker-options{padding:4px 0}.ql-snow .ql-icon-picker .ql-picker-item{height:24px;width:24px;padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-options{padding:3px 5px;width:152px}.ql-snow .ql-color-picker .ql-picker-item{border:1px solid transparent;float:left;height:16px;margin:2px;padding:0;width:16px}.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg{position:absolute;margin-top:-9px;right:0;top:50%;width:18px}.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=""]):before{content:attr(data-label)}.ql-snow .ql-picker.ql-header{width:98px}.ql-snow .ql-picker.ql-header .ql-picker-label:before,.ql-snow .ql-picker.ql-header .ql-picker-item:before{content:"Normal"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before{content:"Heading 1"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before{content:"Heading 2"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before{content:"Heading 3"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before{content:"Heading 4"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before{content:"Heading 5"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before{content:"Heading 6"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before{font-size:2em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before{font-size:1.5em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before{font-size:1.17em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before{font-size:1em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before{font-size:.83em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before{font-size:.67em}.ql-snow .ql-picker.ql-font{width:108px}.ql-snow .ql-picker.ql-font .ql-picker-label:before,.ql-snow .ql-picker.ql-font .ql-picker-item:before{content:"Sans Serif"}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{content:"Serif"}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{content:"Monospace"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{font-family:Georgia,Times New Roman,serif}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{font-family:Monaco,Courier New,monospace}.ql-snow .ql-picker.ql-size{width:98px}.ql-snow .ql-picker.ql-size .ql-picker-label:before,.ql-snow .ql-picker.ql-size .ql-picker-item:before{content:"Normal"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{content:"Small"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{content:"Large"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{content:"Huge"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{font-size:10px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{font-size:18px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{font-size:32px}.ql-snow .ql-color-picker.ql-background .ql-picker-item{background-color:#fff}.ql-snow .ql-color-picker.ql-color .ql-picker-item{background-color:#000}.ql-toolbar.ql-snow{border:1px solid #ccc;box-sizing:border-box;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;padding:8px}.ql-toolbar.ql-snow .ql-formats{margin-right:15px}.ql-toolbar.ql-snow .ql-picker-label{border:1px solid transparent}.ql-toolbar.ql-snow .ql-picker-options{border:1px solid transparent;box-shadow:#0003 0 2px 8px}.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label,.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options{border-color:#ccc}.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover{border-color:#000}.ql-toolbar.ql-snow+.ql-container.ql-snow{border-top:0px}.ql-snow .ql-tooltip{background-color:#fff;border:1px solid #ccc;box-shadow:0 0 5px #ddd;color:#444;padding:5px 12px;white-space:nowrap}.ql-snow .ql-tooltip:before{content:"Visit URL:";line-height:26px;margin-right:8px}.ql-snow .ql-tooltip input[type=text]{display:none;border:1px solid #ccc;font-size:13px;height:26px;margin:0;padding:3px 5px;width:170px}.ql-snow .ql-tooltip a.ql-preview{display:inline-block;max-width:200px;overflow-x:hidden;text-overflow:ellipsis;vertical-align:top}.ql-snow .ql-tooltip a.ql-action:after{border-right:1px solid #ccc;content:"Edit";margin-left:16px;padding-right:8px}.ql-snow .ql-tooltip a.ql-remove:before{content:"Remove";margin-left:8px}.ql-snow .ql-tooltip a{line-height:26px}.ql-snow .ql-tooltip.ql-editing a.ql-preview,.ql-snow .ql-tooltip.ql-editing a.ql-remove{display:none}.ql-snow .ql-tooltip.ql-editing input[type=text]{display:inline-block}.ql-snow .ql-tooltip.ql-editing a.ql-action:after{border-right:0px;content:"Save";padding-right:0}.ql-snow .ql-tooltip[data-mode=link]:before{content:"Enter link:"}.ql-snow .ql-tooltip[data-mode=formula]:before{content:"Enter formula:"}.ql-snow .ql-tooltip[data-mode=video]:before{content:"Enter video:"}.ql-snow a{color:#06c}.ql-container.ql-snow{border:1px solid #ccc}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.table-row-selected{background-color:#f0f0f0}.quill{background-color:#fff!important}.ql-snow.ql-toolbar button:hover,.ql-snow .ql-toolbar button:hover,.ql-snow.ql-toolbar button:focus,.ql-snow .ql-toolbar button:focus,.ql-snow.ql-toolbar button.ql-active,.ql-snow .ql-toolbar button.ql-active,.ql-snow.ql-toolbar .ql-picker-label:hover,.ql-snow .ql-toolbar .ql-picker-label:hover,.ql-snow.ql-toolbar .ql-picker-label.ql-active,.ql-snow .ql-toolbar .ql-picker-label.ql-active,.ql-snow.ql-toolbar .ql-picker-item:hover,.ql-snow .ql-toolbar .ql-picker-item:hover,.ql-snow.ql-toolbar .ql-picker-item.ql-selected,.ql-snow .ql-toolbar .ql-picker-item.ql-selected{color:#009485!important}.ql-snow.ql-toolbar button:hover .ql-stroke,.ql-snow .ql-toolbar button:hover .ql-stroke,.ql-snow.ql-toolbar button:focus .ql-stroke,.ql-snow .ql-toolbar button:focus .ql-stroke,.ql-snow.ql-toolbar button.ql-active .ql-stroke,.ql-snow .ql-toolbar button.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow.ql-toolbar button:hover .ql-stroke-miter,.ql-snow .ql-toolbar button:hover .ql-stroke-miter,.ql-snow.ql-toolbar button:focus .ql-stroke-miter,.ql-snow .ql-toolbar button:focus .ql-stroke-miter,.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter{stroke:#009485!important}.ql-snow a{color:#009485!important}.ql-toolbar{border-top-left-radius:5px;border-top-right-radius:5px}.ql-container{border-bottom-left-radius:5px;border-bottom-right-radius:5px} +*/.ql-container{box-sizing:border-box;font-family:Helvetica,Arial,sans-serif;font-size:13px;height:100%;margin:0;position:relative}.ql-container.ql-disabled .ql-tooltip{visibility:hidden}.ql-container:not(.ql-disabled) li[data-list=checked]>.ql-ui,.ql-container:not(.ql-disabled) li[data-list=unchecked]>.ql-ui{cursor:pointer}.ql-clipboard{left:-100000px;height:1px;overflow-y:hidden;position:absolute;top:50%}.ql-clipboard p{margin:0;padding:0}.ql-editor{box-sizing:border-box;counter-reset:list-0 list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;line-height:1.42;height:100%;outline:none;overflow-y:auto;padding:12px 15px;tab-size:4;-moz-tab-size:4;text-align:left;white-space:pre-wrap;word-wrap:break-word}.ql-editor>*{cursor:text}.ql-editor p,.ql-editor ol,.ql-editor pre,.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{margin:0;padding:0}@supports (counter-set:none){.ql-editor p,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{counter-set:list-0 list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor p,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{counter-reset:list-0 list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor table{border-collapse:collapse}.ql-editor td{border:1px solid #000;padding:2px 5px}.ql-editor ol{padding-left:1.5em}.ql-editor li{list-style-type:none;padding-left:1.5em;position:relative}.ql-editor li>.ql-ui:before{display:inline-block;margin-left:-1.5em;margin-right:.3em;text-align:right;white-space:nowrap;width:1.2em}.ql-editor li[data-list=checked]>.ql-ui,.ql-editor li[data-list=unchecked]>.ql-ui{color:#777}.ql-editor li[data-list=bullet]>.ql-ui:before{content:"•"}.ql-editor li[data-list=checked]>.ql-ui:before{content:"☑"}.ql-editor li[data-list=unchecked]>.ql-ui:before{content:"☐"}@supports (counter-set:none){.ql-editor li[data-list]{counter-set:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list]{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered]{counter-increment:list-0}.ql-editor li[data-list=ordered]>.ql-ui:before{content:counter(list-0,decimal) ". "}.ql-editor li[data-list=ordered].ql-indent-1{counter-increment:list-1}.ql-editor li[data-list=ordered].ql-indent-1>.ql-ui:before{content:counter(list-1,lower-alpha) ". "}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-1{counter-set:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-2{counter-increment:list-2}.ql-editor li[data-list=ordered].ql-indent-2>.ql-ui:before{content:counter(list-2,lower-roman) ". "}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-2{counter-set:list-3 list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-3{counter-increment:list-3}.ql-editor li[data-list=ordered].ql-indent-3>.ql-ui:before{content:counter(list-3,decimal) ". "}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-3{counter-set:list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-4{counter-increment:list-4}.ql-editor li[data-list=ordered].ql-indent-4>.ql-ui:before{content:counter(list-4,lower-alpha) ". "}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-4{counter-set:list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-5{counter-increment:list-5}.ql-editor li[data-list=ordered].ql-indent-5>.ql-ui:before{content:counter(list-5,lower-roman) ". "}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-5{counter-set:list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-5{counter-reset:list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-6{counter-increment:list-6}.ql-editor li[data-list=ordered].ql-indent-6>.ql-ui:before{content:counter(list-6,decimal) ". "}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-6{counter-set:list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-6{counter-reset:list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-7{counter-increment:list-7}.ql-editor li[data-list=ordered].ql-indent-7>.ql-ui:before{content:counter(list-7,lower-alpha) ". "}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-7{counter-set:list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-7{counter-reset:list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-8{counter-increment:list-8}.ql-editor li[data-list=ordered].ql-indent-8>.ql-ui:before{content:counter(list-8,lower-roman) ". "}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-8{counter-set:list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-8{counter-reset:list-9}}.ql-editor li[data-list=ordered].ql-indent-9{counter-increment:list-9}.ql-editor li[data-list=ordered].ql-indent-9>.ql-ui:before{content:counter(list-9,decimal) ". "}.ql-editor .ql-indent-1:not(.ql-direction-rtl){padding-left:3em}.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:4.5em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:3em}.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:4.5em}.ql-editor .ql-indent-2:not(.ql-direction-rtl){padding-left:6em}.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:7.5em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:7.5em}.ql-editor .ql-indent-3:not(.ql-direction-rtl){padding-left:9em}.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:10.5em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:9em}.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:10.5em}.ql-editor .ql-indent-4:not(.ql-direction-rtl){padding-left:12em}.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:13.5em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:13.5em}.ql-editor .ql-indent-5:not(.ql-direction-rtl){padding-left:15em}.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:16.5em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:15em}.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:16.5em}.ql-editor .ql-indent-6:not(.ql-direction-rtl){padding-left:18em}.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:19.5em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:19.5em}.ql-editor .ql-indent-7:not(.ql-direction-rtl){padding-left:21em}.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:22.5em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:21em}.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:22.5em}.ql-editor .ql-indent-8:not(.ql-direction-rtl){padding-left:24em}.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:25.5em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:24em}.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:25.5em}.ql-editor .ql-indent-9:not(.ql-direction-rtl){padding-left:27em}.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:28.5em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:27em}.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:28.5em}.ql-editor li.ql-direction-rtl{padding-right:1.5em}.ql-editor li.ql-direction-rtl>.ql-ui:before{margin-left:.3em;margin-right:-1.5em;text-align:left}.ql-editor table{table-layout:fixed;width:100%}.ql-editor table td{outline:none}.ql-editor .ql-code-block-container{font-family:monospace}.ql-editor .ql-video{display:block;max-width:100%}.ql-editor .ql-video.ql-align-center{margin:0 auto}.ql-editor .ql-video.ql-align-right{margin:0 0 0 auto}.ql-editor .ql-bg-black{background-color:#000}.ql-editor .ql-bg-red{background-color:#e60000}.ql-editor .ql-bg-orange{background-color:#f90}.ql-editor .ql-bg-yellow{background-color:#ff0}.ql-editor .ql-bg-green{background-color:#008a00}.ql-editor .ql-bg-blue{background-color:#06c}.ql-editor .ql-bg-purple{background-color:#93f}.ql-editor .ql-color-white{color:#fff}.ql-editor .ql-color-red{color:#e60000}.ql-editor .ql-color-orange{color:#f90}.ql-editor .ql-color-yellow{color:#ff0}.ql-editor .ql-color-green{color:#008a00}.ql-editor .ql-color-blue{color:#06c}.ql-editor .ql-color-purple{color:#93f}.ql-editor .ql-font-serif{font-family:Georgia,Times New Roman,serif}.ql-editor .ql-font-monospace{font-family:Monaco,Courier New,monospace}.ql-editor .ql-size-small{font-size:.75em}.ql-editor .ql-size-large{font-size:1.5em}.ql-editor .ql-size-huge{font-size:2.5em}.ql-editor .ql-direction-rtl{direction:rtl;text-align:inherit}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}.ql-editor .ql-ui{position:absolute}.ql-editor.ql-blank:before{color:#0009;content:attr(data-placeholder);font-style:italic;left:15px;pointer-events:none;position:absolute;right:15px}.ql-snow.ql-toolbar:after,.ql-snow .ql-toolbar:after{clear:both;content:"";display:table}.ql-snow.ql-toolbar button,.ql-snow .ql-toolbar button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px}.ql-snow.ql-toolbar button svg,.ql-snow .ql-toolbar button svg{float:left;height:100%}.ql-snow.ql-toolbar button:active:hover,.ql-snow .ql-toolbar button:active:hover{outline:none}.ql-snow.ql-toolbar input.ql-image[type=file],.ql-snow .ql-toolbar input.ql-image[type=file]{display:none}.ql-snow.ql-toolbar button:hover,.ql-snow .ql-toolbar button:hover,.ql-snow.ql-toolbar button:focus,.ql-snow .ql-toolbar button:focus,.ql-snow.ql-toolbar button.ql-active,.ql-snow .ql-toolbar button.ql-active,.ql-snow.ql-toolbar .ql-picker-label:hover,.ql-snow .ql-toolbar .ql-picker-label:hover,.ql-snow.ql-toolbar .ql-picker-label.ql-active,.ql-snow .ql-toolbar .ql-picker-label.ql-active,.ql-snow.ql-toolbar .ql-picker-item:hover,.ql-snow .ql-toolbar .ql-picker-item:hover,.ql-snow.ql-toolbar .ql-picker-item.ql-selected,.ql-snow .ql-toolbar .ql-picker-item.ql-selected{color:#06c}.ql-snow.ql-toolbar button:hover .ql-fill,.ql-snow .ql-toolbar button:hover .ql-fill,.ql-snow.ql-toolbar button:focus .ql-fill,.ql-snow .ql-toolbar button:focus .ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill{fill:#06c}.ql-snow.ql-toolbar button:hover .ql-stroke,.ql-snow .ql-toolbar button:hover .ql-stroke,.ql-snow.ql-toolbar button:focus .ql-stroke,.ql-snow .ql-toolbar button:focus .ql-stroke,.ql-snow.ql-toolbar button.ql-active .ql-stroke,.ql-snow .ql-toolbar button.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow.ql-toolbar button:hover .ql-stroke-miter,.ql-snow .ql-toolbar button:hover .ql-stroke-miter,.ql-snow.ql-toolbar button:focus .ql-stroke-miter,.ql-snow .ql-toolbar button:focus .ql-stroke-miter,.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter{stroke:#06c}@media (pointer:coarse){.ql-snow.ql-toolbar button:hover:not(.ql-active),.ql-snow .ql-toolbar button:hover:not(.ql-active){color:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill{fill:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter{stroke:#444}}.ql-snow,.ql-snow *{box-sizing:border-box}.ql-snow .ql-hidden{display:none}.ql-snow .ql-out-bottom,.ql-snow .ql-out-top{visibility:hidden}.ql-snow .ql-tooltip{position:absolute;transform:translateY(10px)}.ql-snow .ql-tooltip a{cursor:pointer;text-decoration:none}.ql-snow .ql-tooltip.ql-flip{transform:translateY(-10px)}.ql-snow .ql-formats{display:inline-block;vertical-align:middle}.ql-snow .ql-formats:after{clear:both;content:"";display:table}.ql-snow .ql-stroke{fill:none;stroke:#444;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ql-snow .ql-stroke-miter{fill:none;stroke:#444;stroke-miterlimit:10;stroke-width:2}.ql-snow .ql-fill,.ql-snow .ql-stroke.ql-fill{fill:#444}.ql-snow .ql-empty{fill:none}.ql-snow .ql-even{fill-rule:evenodd}.ql-snow .ql-thin,.ql-snow .ql-stroke.ql-thin{stroke-width:1}.ql-snow .ql-transparent{opacity:.4}.ql-snow .ql-direction svg:last-child{display:none}.ql-snow .ql-direction.ql-active svg:last-child{display:inline}.ql-snow .ql-direction.ql-active svg:first-child{display:none}.ql-snow .ql-editor h1{font-size:2em}.ql-snow .ql-editor h2{font-size:1.5em}.ql-snow .ql-editor h3{font-size:1.17em}.ql-snow .ql-editor h4{font-size:1em}.ql-snow .ql-editor h5{font-size:.83em}.ql-snow .ql-editor h6{font-size:.67em}.ql-snow .ql-editor a{text-decoration:underline}.ql-snow .ql-editor blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}.ql-snow .ql-editor code,.ql-snow .ql-editor .ql-code-block-container{background-color:#f0f0f0;border-radius:3px}.ql-snow .ql-editor .ql-code-block-container{margin-bottom:5px;margin-top:5px;padding:5px 10px}.ql-snow .ql-editor code{font-size:85%;padding:2px 4px}.ql-snow .ql-editor .ql-code-block-container{background-color:#23241f;color:#f8f8f2;overflow:visible}.ql-snow .ql-editor img{max-width:100%}.ql-snow .ql-picker{color:#444;display:inline-block;float:left;font-size:14px;font-weight:500;height:24px;position:relative;vertical-align:middle}.ql-snow .ql-picker-label{cursor:pointer;display:inline-block;height:100%;padding-left:8px;padding-right:2px;position:relative;width:100%}.ql-snow .ql-picker-label:before{display:inline-block;line-height:22px}.ql-snow .ql-picker-options{background-color:#fff;display:none;min-width:100%;padding:4px 8px;position:absolute;white-space:nowrap}.ql-snow .ql-picker-options .ql-picker-item{cursor:pointer;display:block;padding-bottom:5px;padding-top:5px}.ql-snow .ql-picker.ql-expanded .ql-picker-label{color:#ccc;z-index:2}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill{fill:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke{stroke:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-options{display:block;margin-top:-1px;top:100%;z-index:1}.ql-snow .ql-color-picker,.ql-snow .ql-icon-picker{width:28px}.ql-snow .ql-color-picker .ql-picker-label,.ql-snow .ql-icon-picker .ql-picker-label{padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-label svg,.ql-snow .ql-icon-picker .ql-picker-label svg{right:4px}.ql-snow .ql-icon-picker .ql-picker-options{padding:4px 0}.ql-snow .ql-icon-picker .ql-picker-item{height:24px;width:24px;padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-options{padding:3px 5px;width:152px}.ql-snow .ql-color-picker .ql-picker-item{border:1px solid transparent;float:left;height:16px;margin:2px;padding:0;width:16px}.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg{position:absolute;margin-top:-9px;right:0;top:50%;width:18px}.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=""]):before{content:attr(data-label)}.ql-snow .ql-picker.ql-header{width:98px}.ql-snow .ql-picker.ql-header .ql-picker-label:before,.ql-snow .ql-picker.ql-header .ql-picker-item:before{content:"Normal"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before{content:"Heading 1"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before{content:"Heading 2"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before{content:"Heading 3"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before{content:"Heading 4"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before{content:"Heading 5"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before{content:"Heading 6"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before{font-size:2em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before{font-size:1.5em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before{font-size:1.17em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before{font-size:1em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before{font-size:.83em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before{font-size:.67em}.ql-snow .ql-picker.ql-font{width:108px}.ql-snow .ql-picker.ql-font .ql-picker-label:before,.ql-snow .ql-picker.ql-font .ql-picker-item:before{content:"Sans Serif"}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{content:"Serif"}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{content:"Monospace"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{font-family:Georgia,Times New Roman,serif}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{font-family:Monaco,Courier New,monospace}.ql-snow .ql-picker.ql-size{width:98px}.ql-snow .ql-picker.ql-size .ql-picker-label:before,.ql-snow .ql-picker.ql-size .ql-picker-item:before{content:"Normal"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{content:"Small"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{content:"Large"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{content:"Huge"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{font-size:10px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{font-size:18px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{font-size:32px}.ql-snow .ql-color-picker.ql-background .ql-picker-item{background-color:#fff}.ql-snow .ql-color-picker.ql-color .ql-picker-item{background-color:#000}.ql-code-block-container{position:relative}.ql-code-block-container .ql-ui{right:5px;top:5px}.ql-toolbar.ql-snow{border:1px solid #ccc;box-sizing:border-box;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;padding:8px}.ql-toolbar.ql-snow .ql-formats{margin-right:15px}.ql-toolbar.ql-snow .ql-picker-label{border:1px solid transparent}.ql-toolbar.ql-snow .ql-picker-options{border:1px solid transparent;box-shadow:#0003 0 2px 8px}.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label,.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options{border-color:#ccc}.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover{border-color:#000}.ql-toolbar.ql-snow+.ql-container.ql-snow{border-top:0}.ql-snow .ql-tooltip{background-color:#fff;border:1px solid #ccc;box-shadow:0 0 5px #ddd;color:#444;padding:5px 12px;white-space:nowrap}.ql-snow .ql-tooltip:before{content:"Visit URL:";line-height:26px;margin-right:8px}.ql-snow .ql-tooltip input[type=text]{display:none;border:1px solid #ccc;font-size:13px;height:26px;margin:0;padding:3px 5px;width:170px}.ql-snow .ql-tooltip a.ql-preview{display:inline-block;max-width:200px;overflow-x:hidden;text-overflow:ellipsis;vertical-align:top}.ql-snow .ql-tooltip a.ql-action:after{border-right:1px solid #ccc;content:"Edit";margin-left:16px;padding-right:8px}.ql-snow .ql-tooltip a.ql-remove:before{content:"Remove";margin-left:8px}.ql-snow .ql-tooltip a{line-height:26px}.ql-snow .ql-tooltip.ql-editing a.ql-preview,.ql-snow .ql-tooltip.ql-editing a.ql-remove{display:none}.ql-snow .ql-tooltip.ql-editing input[type=text]{display:inline-block}.ql-snow .ql-tooltip.ql-editing a.ql-action:after{border-right:0;content:"Save";padding-right:0}.ql-snow .ql-tooltip[data-mode=link]:before{content:"Enter link:"}.ql-snow .ql-tooltip[data-mode=formula]:before{content:"Enter formula:"}.ql-snow .ql-tooltip[data-mode=video]:before{content:"Enter video:"}.ql-snow a{color:#06c}.ql-container.ql-snow{border:1px solid #ccc}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.table-row-selected{background-color:#f0f0f0}.quill{background-color:#fff!important}.ql-snow.ql-toolbar button:hover,.ql-snow .ql-toolbar button:hover,.ql-snow.ql-toolbar button:focus,.ql-snow .ql-toolbar button:focus,.ql-snow.ql-toolbar button.ql-active,.ql-snow .ql-toolbar button.ql-active,.ql-snow.ql-toolbar .ql-picker-label:hover,.ql-snow .ql-toolbar .ql-picker-label:hover,.ql-snow.ql-toolbar .ql-picker-label.ql-active,.ql-snow .ql-toolbar .ql-picker-label.ql-active,.ql-snow.ql-toolbar .ql-picker-item:hover,.ql-snow .ql-toolbar .ql-picker-item:hover,.ql-snow.ql-toolbar .ql-picker-item.ql-selected,.ql-snow .ql-toolbar .ql-picker-item.ql-selected{color:#009485!important}.ql-snow.ql-toolbar button:hover .ql-stroke,.ql-snow .ql-toolbar button:hover .ql-stroke,.ql-snow.ql-toolbar button:focus .ql-stroke,.ql-snow .ql-toolbar button:focus .ql-stroke,.ql-snow.ql-toolbar button.ql-active .ql-stroke,.ql-snow .ql-toolbar button.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow.ql-toolbar button:hover .ql-stroke-miter,.ql-snow .ql-toolbar button:hover .ql-stroke-miter,.ql-snow.ql-toolbar button:focus .ql-stroke-miter,.ql-snow .ql-toolbar button:focus .ql-stroke-miter,.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter{stroke:#009485!important}.ql-snow a{color:#009485!important}.ql-toolbar{border-top-left-radius:5px;border-top-right-radius:5px}.ql-container{border-bottom-left-radius:5px;border-bottom-right-radius:5px} diff --git a/fastadmin/static/index.min.js b/fastadmin/static/index.min.js index b4dac3e..13b3bb7 100644 --- a/fastadmin/static/index.min.js +++ b/fastadmin/static/index.min.js @@ -1,47 +1,56 @@ -(function(hn){typeof define=="function"&&define.amd?define(hn):hn()})(function(){"use strict";var eMt=Object.defineProperty,tMt=Object.defineProperties;var nMt=Object.getOwnPropertyDescriptors;var dM=Object.getOwnPropertySymbols;var Pxe=Object.prototype.hasOwnProperty,Mxe=Object.prototype.propertyIsEnumerable;var Sy=(hn,Ft)=>(Ft=Symbol[hn])?Ft:Symbol.for("Symbol."+hn),XF=hn=>{throw TypeError(hn)},Xa=Math.pow,YF=(hn,Ft,rn)=>Ft in hn?eMt(hn,Ft,{enumerable:!0,configurable:!0,writable:!0,value:rn}):hn[Ft]=rn,Ke=(hn,Ft)=>{for(var rn in Ft||(Ft={}))Pxe.call(Ft,rn)&&YF(hn,rn,Ft[rn]);if(dM)for(var rn of dM(Ft))Mxe.call(Ft,rn)&&YF(hn,rn,Ft[rn]);return hn},Rn=(hn,Ft)=>tMt(hn,nMt(Ft));var oc=(hn,Ft)=>{var rn={};for(var Rr in hn)Pxe.call(hn,Rr)&&Ft.indexOf(Rr)<0&&(rn[Rr]=hn[Rr]);if(hn!=null&&dM)for(var Rr of dM(hn))Ft.indexOf(Rr)<0&&Mxe.call(hn,Rr)&&(rn[Rr]=hn[Rr]);return rn};var Wu=(hn,Ft,rn)=>YF(hn,typeof Ft!="symbol"?Ft+"":Ft,rn),ZF=(hn,Ft,rn)=>Ft.has(hn)||XF("Cannot "+rn);var De=(hn,Ft,rn)=>(ZF(hn,Ft,"read from private field"),rn?rn.call(hn):Ft.get(hn)),Nn=(hn,Ft,rn)=>Ft.has(hn)?XF("Cannot add the same private member more than once"):Ft instanceof WeakSet?Ft.add(hn):Ft.set(hn,rn),ln=(hn,Ft,rn,Rr)=>(ZF(hn,Ft,"write to private field"),Rr?Rr.call(hn,rn):Ft.set(hn,rn),rn),ur=(hn,Ft,rn)=>(ZF(hn,Ft,"access private method"),rn);var hM=(hn,Ft,rn,Rr)=>({set _(Di){ln(hn,Ft,Di,rn)},get _(){return De(hn,Ft,Rr)}});var la=(hn,Ft,rn)=>new Promise((Rr,Di)=>{var Fi=ua=>{try{ca(rn.next(ua))}catch(Ls){Di(Ls)}},En=ua=>{try{ca(rn.throw(ua))}catch(Ls){Di(Ls)}},ca=ua=>ua.done?Rr(ua.value):Promise.resolve(ua.value).then(Fi,En);ca((rn=rn.apply(hn,Ft)).next())}),Kv=function(hn,Ft){this[0]=hn,this[1]=Ft},QF=(hn,Ft,rn)=>{var Rr=(En,ca,ua,Ls)=>{try{var bS=rn[En](ca),xS=(ca=bS.value)instanceof Kv,gM=bS.done;Promise.resolve(xS?ca[0]:ca).then(Gc=>xS?Rr(En==="return"?En:"next",ca[1]?{done:Gc.done,value:Gc.value}:Gc,ua,Ls):ua({value:Gc,done:gM})).catch(Gc=>Rr("throw",Gc,ua,Ls))}catch(Gc){Ls(Gc)}},Di=En=>Fi[En]=ca=>new Promise((ua,Ls)=>Rr(En,ca,ua,Ls)),Fi={};return rn=rn.apply(hn,Ft),Fi[Sy("asyncIterator")]=()=>Fi,Di("next"),Di("throw"),Di("return"),Fi},pM=hn=>{var Ft=hn[Sy("asyncIterator")],rn=!1,Rr,Di={};return Ft==null?(Ft=hn[Sy("iterator")](),Rr=Fi=>Di[Fi]=En=>Ft[Fi](En)):(Ft=Ft.call(hn),Rr=Fi=>Di[Fi]=En=>{if(rn){if(rn=!1,Fi==="throw")throw En;return En}return rn=!0,{done:!1,value:new Kv(new Promise(ca=>{var ua=Ft[Fi](En);ua instanceof Object||XF("Object expected"),ca(ua)}),1)}}),Di[Sy("iterator")]=()=>Di,Rr("next"),"throw"in Ft?Rr("throw"):Di.throw=Fi=>{throw Fi},"return"in Ft&&Rr("return"),Di},kxe=(hn,Ft,rn)=>(Ft=hn[Sy("asyncIterator")])?Ft.call(hn):(hn=hn[Sy("iterator")](),Ft={},rn=(Rr,Di)=>(Di=hn[Rr])&&(Ft[Rr]=Fi=>new Promise((En,ca,ua)=>(Fi=Di.call(hn,Fi),ua=Fi.done,Promise.resolve(Fi.value).then(Ls=>En({value:Ls,done:ua}),ca)))),rn("next"),rn("return"),Ft);var Tv,_h,K0,f1e,Y0,$h,X0,d1e,Rv,h1e,Z0,Q0,Zl,Wo,Y2,Iv,zc,Qf,p1e,Lu,v1e,ju,ls,Av,Du,Vh,g1e,rl,X2,m1e,aa,Ph,Mh,J0,ey,kh,ty,ny,y1e,ks,wr,Z2,cs,Nv,ry,Th,Fu,Q2,iy,ay,Lv,jv,Rh,oy,qr,yS,JF,eB,tB,nB,rB,iB,aB,Txe,b1e,Ih,Ah,Ts,zf,Hf,vM,oB,x1e,Dv,W9;function hn(e,t){for(var n=0;nr[i]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}var Ft=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function rn(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Rr={exports:{}},Di={},Fi={exports:{}},En={};/** +(function(or){typeof define=="function"&&define.amd?define(or):or()})(function(){"use strict";var g_t=Object.defineProperty,m_t=Object.defineProperties;var v_t=Object.getOwnPropertyDescriptors;var JN=Object.getOwnPropertySymbols;var Mbe=Object.prototype.hasOwnProperty,Rbe=Object.prototype.propertyIsEnumerable;var ME=(or,qn)=>(qn=Symbol[or])?qn:Symbol.for("Symbol."+or),MV=or=>{throw TypeError(or)},ec=Math.pow,TV=(or,qn,Xn)=>qn in or?g_t(or,qn,{enumerable:!0,configurable:!0,writable:!0,value:Xn}):or[qn]=Xn,dt=(or,qn)=>{for(var Xn in qn||(qn={}))Mbe.call(qn,Xn)&&TV(or,Xn,qn[Xn]);if(JN)for(var Xn of JN(qn))Rbe.call(qn,Xn)&&TV(or,Xn,qn[Xn]);return or},cr=(or,qn)=>m_t(or,v_t(qn));var tc=(or,qn)=>{var Xn={};for(var Ea in or)Mbe.call(or,Ea)&&qn.indexOf(Ea)<0&&(Xn[Ea]=or[Ea]);if(or!=null&&JN)for(var Ea of JN(or))qn.indexOf(Ea)<0&&Rbe.call(or,Ea)&&(Xn[Ea]=or[Ea]);return Xn};var Un=(or,qn,Xn)=>TV(or,typeof qn!="symbol"?qn+"":qn,Xn),RV=(or,qn,Xn)=>qn.has(or)||MV("Cannot "+Xn);var ot=(or,qn,Xn)=>(RV(or,qn,"read from private field"),Xn?Xn.call(or):qn.get(or)),qr=(or,qn,Xn)=>qn.has(or)?MV("Cannot add the same private member more than once"):qn instanceof WeakSet?qn.add(or):qn.set(or,Xn),ir=(or,qn,Xn,Ea)=>(RV(or,qn,"write to private field"),Ea?Ea.call(or,Xn):qn.set(or,Xn),Xn),zi=(or,qn,Xn)=>(RV(or,qn,"access private method"),Xn);var e6=(or,qn,Xn,Ea)=>({set _(Yo){ir(or,qn,Yo,Xn)},get _(){return ot(or,qn,Ea)}});var Oo=(or,qn,Xn)=>new Promise((Ea,Yo)=>{var os=Vs=>{try{rc(Xn.next(Vs))}catch(_e){Yo(_e)}},nc=Vs=>{try{rc(Xn.throw(Vs))}catch(_e){Yo(_e)}},rc=Vs=>Vs.done?Ea(Vs.value):Promise.resolve(Vs.value).then(os,nc);rc((Xn=Xn.apply(or,qn)).next())}),Y2=function(or,qn){this[0]=or,this[1]=qn},AV=(or,qn,Xn)=>{var Ea=(nc,rc,Vs,_e)=>{try{var vv=Xn[nc](rc),_g=(rc=vv.value)instanceof Y2,mf=vv.done;Promise.resolve(_g?rc[0]:rc).then($g=>_g?Ea(nc==="return"?nc:"next",rc[1]?{done:$g.done,value:$g.value}:$g,Vs,_e):Vs({value:$g,done:mf})).catch($g=>Ea("throw",$g,Vs,_e))}catch($g){_e($g)}},Yo=nc=>os[nc]=rc=>new Promise((Vs,_e)=>Ea(nc,rc,Vs,_e)),os={};return Xn=Xn.apply(or,qn),os[ME("asyncIterator")]=()=>os,Yo("next"),Yo("throw"),Yo("return"),os},t6=or=>{var qn=or[ME("asyncIterator")],Xn=!1,Ea,Yo={};return qn==null?(qn=or[ME("iterator")](),Ea=os=>Yo[os]=nc=>qn[os](nc)):(qn=qn.call(or),Ea=os=>Yo[os]=nc=>{if(Xn){if(Xn=!1,os==="throw")throw nc;return nc}return Xn=!0,{done:!1,value:new Y2(new Promise(rc=>{var Vs=qn[os](nc);Vs instanceof Object||MV("Object expected"),rc(Vs)}),1)}}),Yo[ME("iterator")]=()=>Yo,Ea("next"),"throw"in qn?Ea("throw"):Yo.throw=os=>{throw os},"return"in qn&&Ea("return"),Yo},Abe=(or,qn,Xn)=>(qn=or[ME("asyncIterator")])?qn.call(or):(or=or[ME("iterator")](),qn={},Xn=(Ea,Yo)=>(Yo=or[Ea])&&(qn[Ea]=os=>new Promise((nc,rc,Vs)=>(os=Yo.call(or,os),Vs=os.done,Promise.resolve(os.value).then(_e=>nc({value:_e,done:Vs}),rc)))),Xn("next"),Xn("return"),qn);var Yx,l1,LC,ybe,DC,c1,jC,bbe,Xx,xbe,BC,zC,$h,Zx,yu,k3,Qx,Hp,ey,Sbe,ym,wbe,bm,Yu,Jx,xm,pb,Cbe,h0,Vp,I3,Ebe,Rs,u1,f1,FC,HC,d1,VC,WC,Obe,Af,ua,L3,Xu,e2,UC,h1,p1,D3,qC,GC,t2,n2,g1,KC,qa,c4,PV,NV,kV,IV,LV,DV,jV,Pbe,_be,m1,v1,Pf,p0,g0,n6,BV,$be,r2,JH,dd,YC,_N;function or(e,t){for(var n=0;nr[i]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}var qn=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function Xn(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Ea={exports:{}},Yo={};/** * @license React - * react.production.min.js + * react-jsx-runtime.production.js * - * Copyright (c) Facebook, Inc. and its affiliates. + * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var ca=Symbol.for("react.element"),ua=Symbol.for("react.portal"),Ls=Symbol.for("react.fragment"),bS=Symbol.for("react.strict_mode"),xS=Symbol.for("react.profiler"),gM=Symbol.for("react.provider"),Gc=Symbol.for("react.context"),qxe=Symbol.for("react.forward_ref"),Uxe=Symbol.for("react.suspense"),Gxe=Symbol.for("react.memo"),Kxe=Symbol.for("react.lazy"),sB=Symbol.iterator;function Yxe(e){return e===null||typeof e!="object"?null:(e=sB&&e[sB]||e["@@iterator"],typeof e=="function"?e:null)}var lB={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},cB=Object.assign,uB={};function Yv(e,t,n){this.props=e,this.context=t,this.refs=uB,this.updater=n||lB}Yv.prototype.isReactComponent={},Yv.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},Yv.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function fB(){}fB.prototype=Yv.prototype;function mM(e,t,n){this.props=e,this.context=t,this.refs=uB,this.updater=n||lB}var yM=mM.prototype=new fB;yM.constructor=mM,cB(yM,Yv.prototype),yM.isPureReactComponent=!0;var dB=Array.isArray,hB=Object.prototype.hasOwnProperty,bM={current:null},pB={key:!0,ref:!0,__self:!0,__source:!0};function vB(e,t,n){var r,i={},a=null,o=null;if(t!=null)for(r in t.ref!==void 0&&(o=t.ref),t.key!==void 0&&(a=""+t.key),t)hB.call(t,r)&&!pB.hasOwnProperty(r)&&(i[r]=t[r]);var s=arguments.length-2;if(s===1)i.children=n;else if(1{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},_g=typeof window=="undefined"||"Deno"in globalThis;function mf(){}function $g(e,t){return typeof e=="function"?e(t):e}function r6(e){return typeof e=="number"&&e>=0&&e!==1/0}function HV(e,t){return Math.max(e+(t||0)-Date.now(),0)}function X2(e,t){return typeof e=="function"?e(t):e}function op(e,t){return typeof e=="function"?e(t):e}function VV(e,t){const{type:n="all",exact:r,fetchStatus:i,predicate:a,queryKey:o,stale:s}=e;if(o){if(r){if(t.queryHash!==i6(o,t.options))return!1}else if(!AE(t.queryKey,o))return!1}if(n!=="all"){const l=t.isActive();if(n==="active"&&!l||n==="inactive"&&l)return!1}return!(typeof s=="boolean"&&t.isStale()!==s||i&&i!==t.state.fetchStatus||a&&!a(t))}function WV(e,t){const{exact:n,status:r,predicate:i,mutationKey:a}=e;if(a){if(!t.options.mutationKey)return!1;if(n){if(mb(t.options.mutationKey)!==mb(a))return!1}else if(!AE(t.options.mutationKey,a))return!1}return!(r&&t.state.status!==r||i&&!i(t))}function i6(e,t){return((t==null?void 0:t.queryKeyHashFn)||mb)(e)}function mb(e){return JSON.stringify(e,(t,n)=>a6(n)?Object.keys(n).sort().reduce((r,i)=>(r[i]=n[i],r),{}):n)}function AE(e,t){return e===t?!0:typeof e!=typeof t?!1:e&&t&&typeof e=="object"&&typeof t=="object"?Object.keys(t).every(n=>AE(e[n],t[n])):!1}function UV(e,t){if(e===t)return e;const n=qV(e)&&qV(t);if(n||a6(e)&&a6(t)){const r=n?e:Object.keys(e),i=r.length,a=n?t:Object.keys(t),o=a.length,s=n?[]:{};let l=0;for(let c=0;c{setTimeout(t,e)})}function o6(e,t,n){return typeof n.structuralSharing=="function"?n.structuralSharing(e,t):n.structuralSharing!==!1?UV(e,t):t}function Ybe(e,t,n=0){const r=[...e,t];return n&&r.length>n?r.slice(1):r}function Xbe(e,t,n=0){const r=[t,...e];return n&&r.length>n?r.slice(0,-1):r}var s6=Symbol();function KV(e,t){return!e.queryFn&&(t!=null&&t.initialPromise)?()=>t.initialPromise:!e.queryFn||e.queryFn===s6?()=>Promise.reject(new Error(`Missing queryFn: '${e.queryHash}'`)):e.queryFn}var Zbe=(ybe=class extends vv{constructor(){super();qr(this,Yx);qr(this,l1);qr(this,LC);ir(this,LC,t=>{if(!_g&&window.addEventListener){const n=()=>t();return window.addEventListener("visibilitychange",n,!1),()=>{window.removeEventListener("visibilitychange",n)}}})}onSubscribe(){ot(this,l1)||this.setEventListener(ot(this,LC))}onUnsubscribe(){var t;this.hasListeners()||((t=ot(this,l1))==null||t.call(this),ir(this,l1,void 0))}setEventListener(t){var n;ir(this,LC,t),(n=ot(this,l1))==null||n.call(this),ir(this,l1,t(r=>{typeof r=="boolean"?this.setFocused(r):this.onFocus()}))}setFocused(t){ot(this,Yx)!==t&&(ir(this,Yx,t),this.onFocus())}onFocus(){const t=this.isFocused();this.listeners.forEach(n=>{n(t)})}isFocused(){var t;return typeof ot(this,Yx)=="boolean"?ot(this,Yx):((t=globalThis.document)==null?void 0:t.visibilityState)!=="hidden"}},Yx=new WeakMap,l1=new WeakMap,LC=new WeakMap,ybe),l6=new Zbe,Qbe=(bbe=class extends vv{constructor(){super();qr(this,DC,!0);qr(this,c1);qr(this,jC);ir(this,jC,t=>{if(!_g&&window.addEventListener){const n=()=>t(!0),r=()=>t(!1);return window.addEventListener("online",n,!1),window.addEventListener("offline",r,!1),()=>{window.removeEventListener("online",n),window.removeEventListener("offline",r)}}})}onSubscribe(){ot(this,c1)||this.setEventListener(ot(this,jC))}onUnsubscribe(){var t;this.hasListeners()||((t=ot(this,c1))==null||t.call(this),ir(this,c1,void 0))}setEventListener(t){var n;ir(this,jC,t),(n=ot(this,c1))==null||n.call(this),ir(this,c1,t(this.setOnline.bind(this)))}setOnline(t){ot(this,DC)!==t&&(ir(this,DC,t),this.listeners.forEach(r=>{r(t)}))}isOnline(){return ot(this,DC)}},DC=new WeakMap,c1=new WeakMap,jC=new WeakMap,bbe),f4=new Qbe;function c6(){let e,t;const n=new Promise((i,a)=>{e=i,t=a});n.status="pending",n.catch(()=>{});function r(i){Object.assign(n,i),delete n.resolve,delete n.reject}return n.resolve=i=>{r({status:"fulfilled",value:i}),e(i)},n.reject=i=>{r({status:"rejected",reason:i}),t(i)},n}function Jbe(e){return Math.min(1e3*ec(2,e),3e4)}function YV(e){return(e!=null?e:"online")==="online"?f4.isOnline():!0}var XV=class extends Error{constructor(e){super("CancelledError"),this.revert=e==null?void 0:e.revert,this.silent=e==null?void 0:e.silent}};function u6(e){return e instanceof XV}function ZV(e){let t=!1,n=0,r=!1,i;const a=c6(),o=m=>{var g;r||(d(new XV(m)),(g=e.abort)==null||g.call(e))},s=()=>{t=!0},l=()=>{t=!1},c=()=>l6.isFocused()&&(e.networkMode==="always"||f4.isOnline())&&e.canRun(),u=()=>YV(e.networkMode)&&e.canRun(),f=m=>{var g;r||(r=!0,(g=e.onSuccess)==null||g.call(e,m),i==null||i(),a.resolve(m))},d=m=>{var g;r||(r=!0,(g=e.onError)==null||g.call(e,m),i==null||i(),a.reject(m))},h=()=>new Promise(m=>{var g;i=b=>{(r||c())&&m(b)},(g=e.onPause)==null||g.call(e)}).then(()=>{var m;i=void 0,r||(m=e.onContinue)==null||m.call(e)}),p=()=>{if(r)return;let m;const g=n===0?e.initialPromise:void 0;try{m=g!=null?g:e.fn()}catch(b){m=Promise.reject(b)}Promise.resolve(m).then(f).catch(b=>{var $,R,A;if(r)return;const x=($=e.retry)!=null?$:_g?0:3,C=(R=e.retryDelay)!=null?R:Jbe,O=typeof C=="function"?C(n,b):C,E=x===!0||typeof x=="number"&&nc()?void 0:h()).then(()=>{t?d(b):p()})})};return{promise:a,cancel:o,continue:()=>(i==null||i(),a),cancelRetry:s,continueRetry:l,canStart:u,start:()=>(u()?p():h().then(p),a)}}var exe=e=>setTimeout(e,0);function txe(){let e=[],t=0,n=s=>{s()},r=s=>{s()},i=exe;const a=s=>{t?e.push(s):i(()=>{n(s)})},o=()=>{const s=e;e=[],s.length&&i(()=>{r(()=>{s.forEach(l=>{n(l)})})})};return{batch:s=>{let l;t++;try{l=s()}finally{t--,t||o()}return l},batchCalls:s=>(...l)=>{a(()=>{s(...l)})},schedule:a,setNotifyFunction:s=>{n=s},setBatchNotifyFunction:s=>{r=s},setScheduler:s=>{i=s}}}var Ml=txe(),QV=(xbe=class{constructor(){qr(this,Xx)}destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),r6(this.gcTime)&&ir(this,Xx,setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e!=null?e:_g?1/0:5*60*1e3)}clearGcTimeout(){ot(this,Xx)&&(clearTimeout(ot(this,Xx)),ir(this,Xx,void 0))}},Xx=new WeakMap,xbe),nxe=(Sbe=class extends QV{constructor(t){var n;super();qr(this,Hp);qr(this,BC);qr(this,zC);qr(this,$h);qr(this,Zx);qr(this,yu);qr(this,k3);qr(this,Qx);ir(this,Qx,!1),ir(this,k3,t.defaultOptions),this.setOptions(t.options),this.observers=[],ir(this,Zx,t.client),ir(this,$h,ot(this,Zx).getQueryCache()),this.queryKey=t.queryKey,this.queryHash=t.queryHash,ir(this,BC,rxe(this.options)),this.state=(n=t.state)!=null?n:ot(this,BC),this.scheduleGc()}get meta(){return this.options.meta}get promise(){var t;return(t=ot(this,yu))==null?void 0:t.promise}setOptions(t){this.options=dt(dt({},ot(this,k3)),t),this.updateGcTime(this.options.gcTime)}optionalRemove(){!this.observers.length&&this.state.fetchStatus==="idle"&&ot(this,$h).remove(this)}setData(t,n){const r=o6(this.state.data,t,this.options);return zi(this,Hp,ey).call(this,{data:r,type:"success",dataUpdatedAt:n==null?void 0:n.updatedAt,manual:n==null?void 0:n.manual}),r}setState(t,n){zi(this,Hp,ey).call(this,{type:"setState",state:t,setStateOptions:n})}cancel(t){var r,i;const n=(r=ot(this,yu))==null?void 0:r.promise;return(i=ot(this,yu))==null||i.cancel(t),n?n.then(mf).catch(mf):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(ot(this,BC))}isActive(){return this.observers.some(t=>op(t.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===s6||this.state.dataUpdateCount+this.state.errorUpdateCount===0}isStale(){return this.state.isInvalidated?!0:this.getObserversCount()>0?this.observers.some(t=>t.getCurrentResult().isStale):this.state.data===void 0}isStaleByTime(t=0){return this.state.isInvalidated||this.state.data===void 0||!HV(this.state.dataUpdatedAt,t)}onFocus(){var n;const t=this.observers.find(r=>r.shouldFetchOnWindowFocus());t==null||t.refetch({cancelRefetch:!1}),(n=ot(this,yu))==null||n.continue()}onOnline(){var n;const t=this.observers.find(r=>r.shouldFetchOnReconnect());t==null||t.refetch({cancelRefetch:!1}),(n=ot(this,yu))==null||n.continue()}addObserver(t){this.observers.includes(t)||(this.observers.push(t),this.clearGcTimeout(),ot(this,$h).notify({type:"observerAdded",query:this,observer:t}))}removeObserver(t){this.observers.includes(t)&&(this.observers=this.observers.filter(n=>n!==t),this.observers.length||(ot(this,yu)&&(ot(this,Qx)?ot(this,yu).cancel({revert:!0}):ot(this,yu).cancelRetry()),this.scheduleGc()),ot(this,$h).notify({type:"observerRemoved",query:this,observer:t}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||zi(this,Hp,ey).call(this,{type:"invalidate"})}fetch(t,n){var l,c,u;if(this.state.fetchStatus!=="idle"){if(this.state.data!==void 0&&(n!=null&&n.cancelRefetch))this.cancel({silent:!0});else if(ot(this,yu))return ot(this,yu).continueRetry(),ot(this,yu).promise}if(t&&this.setOptions(t),!this.options.queryFn){const f=this.observers.find(d=>d.options.queryFn);f&&this.setOptions(f.options)}const r=new AbortController,i=f=>{Object.defineProperty(f,"signal",{enumerable:!0,get:()=>(ir(this,Qx,!0),r.signal)})},a=()=>{const f=KV(this.options,n),d={client:ot(this,Zx),queryKey:this.queryKey,meta:this.meta};return i(d),ir(this,Qx,!1),this.options.persister?this.options.persister(f,d,this):f(d)},o={fetchOptions:n,options:this.options,queryKey:this.queryKey,client:ot(this,Zx),state:this.state,fetchFn:a};i(o),(l=this.options.behavior)==null||l.onFetch(o,this),ir(this,zC,this.state),(this.state.fetchStatus==="idle"||this.state.fetchMeta!==((c=o.fetchOptions)==null?void 0:c.meta))&&zi(this,Hp,ey).call(this,{type:"fetch",meta:(u=o.fetchOptions)==null?void 0:u.meta});const s=f=>{var d,h,p,m;u6(f)&&f.silent||zi(this,Hp,ey).call(this,{type:"error",error:f}),u6(f)||((h=(d=ot(this,$h).config).onError)==null||h.call(d,f,this),(m=(p=ot(this,$h).config).onSettled)==null||m.call(p,this.state.data,f,this)),this.scheduleGc()};return ir(this,yu,ZV({initialPromise:n==null?void 0:n.initialPromise,fn:o.fetchFn,abort:r.abort.bind(r),onSuccess:f=>{var d,h,p,m;if(f===void 0){s(new Error(`${this.queryHash} data is undefined`));return}try{this.setData(f)}catch(g){s(g);return}(h=(d=ot(this,$h).config).onSuccess)==null||h.call(d,f,this),(m=(p=ot(this,$h).config).onSettled)==null||m.call(p,f,this.state.error,this),this.scheduleGc()},onError:s,onFail:(f,d)=>{zi(this,Hp,ey).call(this,{type:"failed",failureCount:f,error:d})},onPause:()=>{zi(this,Hp,ey).call(this,{type:"pause"})},onContinue:()=>{zi(this,Hp,ey).call(this,{type:"continue"})},retry:o.options.retry,retryDelay:o.options.retryDelay,networkMode:o.options.networkMode,canRun:()=>!0})),ot(this,yu).start()}},BC=new WeakMap,zC=new WeakMap,$h=new WeakMap,Zx=new WeakMap,yu=new WeakMap,k3=new WeakMap,Qx=new WeakMap,Hp=new WeakSet,ey=function(t){const n=r=>{var i,a;switch(t.type){case"failed":return cr(dt({},r),{fetchFailureCount:t.failureCount,fetchFailureReason:t.error});case"pause":return cr(dt({},r),{fetchStatus:"paused"});case"continue":return cr(dt({},r),{fetchStatus:"fetching"});case"fetch":return cr(dt(dt({},r),JV(r.data,this.options)),{fetchMeta:(i=t.meta)!=null?i:null});case"success":return dt(cr(dt({},r),{data:t.data,dataUpdateCount:r.dataUpdateCount+1,dataUpdatedAt:(a=t.dataUpdatedAt)!=null?a:Date.now(),error:null,isInvalidated:!1,status:"success"}),!t.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null});case"error":const o=t.error;return u6(o)&&o.revert&&ot(this,zC)?cr(dt({},ot(this,zC)),{fetchStatus:"idle"}):cr(dt({},r),{error:o,errorUpdateCount:r.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:r.fetchFailureCount+1,fetchFailureReason:o,fetchStatus:"idle",status:"error"});case"invalidate":return cr(dt({},r),{isInvalidated:!0});case"setState":return dt(dt({},r),t.state)}};this.state=n(this.state),Ml.batch(()=>{this.observers.forEach(r=>{r.onQueryUpdate()}),ot(this,$h).notify({query:this,type:"updated",action:t})})},Sbe);function JV(e,t){return dt({fetchFailureCount:0,fetchFailureReason:null,fetchStatus:YV(t.networkMode)?"fetching":"paused"},e===void 0&&{error:null,status:"pending"})}function rxe(e){const t=typeof e.initialData=="function"?e.initialData():e.initialData,n=t!==void 0,r=n?typeof e.initialDataUpdatedAt=="function"?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:n?r!=null?r:Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:n?"success":"pending",fetchStatus:"idle"}}var ixe=(wbe=class extends vv{constructor(t={}){super();qr(this,ym);this.config=t,ir(this,ym,new Map)}build(t,n,r){var s;const i=n.queryKey,a=(s=n.queryHash)!=null?s:i6(i,n);let o=this.get(a);return o||(o=new nxe({client:t,queryKey:i,queryHash:a,options:t.defaultQueryOptions(n),state:r,defaultOptions:t.getQueryDefaults(i)}),this.add(o)),o}add(t){ot(this,ym).has(t.queryHash)||(ot(this,ym).set(t.queryHash,t),this.notify({type:"added",query:t}))}remove(t){const n=ot(this,ym).get(t.queryHash);n&&(t.destroy(),n===t&&ot(this,ym).delete(t.queryHash),this.notify({type:"removed",query:t}))}clear(){Ml.batch(()=>{this.getAll().forEach(t=>{this.remove(t)})})}get(t){return ot(this,ym).get(t)}getAll(){return[...ot(this,ym).values()]}find(t){const n=dt({exact:!0},t);return this.getAll().find(r=>VV(n,r))}findAll(t={}){const n=this.getAll();return Object.keys(t).length>0?n.filter(r=>VV(t,r)):n}notify(t){Ml.batch(()=>{this.listeners.forEach(n=>{n(t)})})}onFocus(){Ml.batch(()=>{this.getAll().forEach(t=>{t.onFocus()})})}onOnline(){Ml.batch(()=>{this.getAll().forEach(t=>{t.onOnline()})})}},ym=new WeakMap,wbe),axe=(Cbe=class extends QV{constructor(t){super();qr(this,xm);qr(this,bm);qr(this,Yu);qr(this,Jx);this.mutationId=t.mutationId,ir(this,Yu,t.mutationCache),ir(this,bm,[]),this.state=t.state||eW(),this.setOptions(t.options),this.scheduleGc()}setOptions(t){this.options=t,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(t){ot(this,bm).includes(t)||(ot(this,bm).push(t),this.clearGcTimeout(),ot(this,Yu).notify({type:"observerAdded",mutation:this,observer:t}))}removeObserver(t){ir(this,bm,ot(this,bm).filter(n=>n!==t)),this.scheduleGc(),ot(this,Yu).notify({type:"observerRemoved",mutation:this,observer:t})}optionalRemove(){ot(this,bm).length||(this.state.status==="pending"?this.scheduleGc():ot(this,Yu).remove(this))}continue(){var t,n;return(n=(t=ot(this,Jx))==null?void 0:t.continue())!=null?n:this.execute(this.state.variables)}execute(t){return Oo(this,null,function*(){var a,o,s,l,c,u,f,d,h,p,m,g,b,x,C,O,E,$,R,A,P;const n=()=>{zi(this,xm,pb).call(this,{type:"continue"})};ir(this,Jx,ZV({fn:()=>this.options.mutationFn?this.options.mutationFn(t):Promise.reject(new Error("No mutationFn found")),onFail:(k,N)=>{zi(this,xm,pb).call(this,{type:"failed",failureCount:k,error:N})},onPause:()=>{zi(this,xm,pb).call(this,{type:"pause"})},onContinue:n,retry:(a=this.options.retry)!=null?a:0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>ot(this,Yu).canRun(this)}));const r=this.state.status==="pending",i=!ot(this,Jx).canStart();try{if(r)n();else{zi(this,xm,pb).call(this,{type:"pending",variables:t,isPaused:i}),yield(s=(o=ot(this,Yu).config).onMutate)==null?void 0:s.call(o,t,this);const N=yield(c=(l=this.options).onMutate)==null?void 0:c.call(l,t);N!==this.state.context&&zi(this,xm,pb).call(this,{type:"pending",context:N,variables:t,isPaused:i})}const k=yield ot(this,Jx).start();return yield(f=(u=ot(this,Yu).config).onSuccess)==null?void 0:f.call(u,k,t,this.state.context,this),yield(h=(d=this.options).onSuccess)==null?void 0:h.call(d,k,t,this.state.context),yield(m=(p=ot(this,Yu).config).onSettled)==null?void 0:m.call(p,k,null,this.state.variables,this.state.context,this),yield(b=(g=this.options).onSettled)==null?void 0:b.call(g,k,null,t,this.state.context),zi(this,xm,pb).call(this,{type:"success",data:k}),k}catch(k){try{throw yield(C=(x=ot(this,Yu).config).onError)==null?void 0:C.call(x,k,t,this.state.context,this),yield(E=(O=this.options).onError)==null?void 0:E.call(O,k,t,this.state.context),yield(R=($=ot(this,Yu).config).onSettled)==null?void 0:R.call($,void 0,k,this.state.variables,this.state.context,this),yield(P=(A=this.options).onSettled)==null?void 0:P.call(A,void 0,k,t,this.state.context),k}finally{zi(this,xm,pb).call(this,{type:"error",error:k})}}finally{ot(this,Yu).runNext(this)}})}},bm=new WeakMap,Yu=new WeakMap,Jx=new WeakMap,xm=new WeakSet,pb=function(t){const n=r=>{switch(t.type){case"failed":return cr(dt({},r),{failureCount:t.failureCount,failureReason:t.error});case"pause":return cr(dt({},r),{isPaused:!0});case"continue":return cr(dt({},r),{isPaused:!1});case"pending":return cr(dt({},r),{context:t.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:t.isPaused,status:"pending",variables:t.variables,submittedAt:Date.now()});case"success":return cr(dt({},r),{data:t.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1});case"error":return cr(dt({},r),{data:void 0,error:t.error,failureCount:r.failureCount+1,failureReason:t.error,isPaused:!1,status:"error"})}};this.state=n(this.state),Ml.batch(()=>{ot(this,bm).forEach(r=>{r.onMutationUpdate(t)}),ot(this,Yu).notify({mutation:this,type:"updated",action:t})})},Cbe);function eW(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0}}var oxe=(Ebe=class extends vv{constructor(t={}){super();qr(this,h0);qr(this,Vp);qr(this,I3);this.config=t,ir(this,h0,new Set),ir(this,Vp,new Map),ir(this,I3,0)}build(t,n,r){const i=new axe({mutationCache:this,mutationId:++e6(this,I3)._,options:t.defaultMutationOptions(n),state:r});return this.add(i),i}add(t){ot(this,h0).add(t);const n=d4(t);if(typeof n=="string"){const r=ot(this,Vp).get(n);r?r.push(t):ot(this,Vp).set(n,[t])}this.notify({type:"added",mutation:t})}remove(t){if(ot(this,h0).delete(t)){const n=d4(t);if(typeof n=="string"){const r=ot(this,Vp).get(n);if(r)if(r.length>1){const i=r.indexOf(t);i!==-1&&r.splice(i,1)}else r[0]===t&&ot(this,Vp).delete(n)}}this.notify({type:"removed",mutation:t})}canRun(t){const n=d4(t);if(typeof n=="string"){const r=ot(this,Vp).get(n),i=r==null?void 0:r.find(a=>a.state.status==="pending");return!i||i===t}else return!0}runNext(t){var r,i;const n=d4(t);if(typeof n=="string"){const a=(r=ot(this,Vp).get(n))==null?void 0:r.find(o=>o!==t&&o.state.isPaused);return(i=a==null?void 0:a.continue())!=null?i:Promise.resolve()}else return Promise.resolve()}clear(){Ml.batch(()=>{ot(this,h0).forEach(t=>{this.notify({type:"removed",mutation:t})}),ot(this,h0).clear(),ot(this,Vp).clear()})}getAll(){return Array.from(ot(this,h0))}find(t){const n=dt({exact:!0},t);return this.getAll().find(r=>WV(n,r))}findAll(t={}){return this.getAll().filter(n=>WV(t,n))}notify(t){Ml.batch(()=>{this.listeners.forEach(n=>{n(t)})})}resumePausedMutations(){const t=this.getAll().filter(n=>n.state.isPaused);return Ml.batch(()=>Promise.all(t.map(n=>n.continue().catch(mf))))}},h0=new WeakMap,Vp=new WeakMap,I3=new WeakMap,Ebe);function d4(e){var t;return(t=e.options.scope)==null?void 0:t.id}function tW(e){return{onFetch:(t,n)=>{var u,f,d,h,p;const r=t.options,i=(d=(f=(u=t.fetchOptions)==null?void 0:u.meta)==null?void 0:f.fetchMore)==null?void 0:d.direction,a=((h=t.state.data)==null?void 0:h.pages)||[],o=((p=t.state.data)==null?void 0:p.pageParams)||[];let s={pages:[],pageParams:[]},l=0;const c=()=>Oo(this,null,function*(){var C;let m=!1;const g=O=>{Object.defineProperty(O,"signal",{enumerable:!0,get:()=>(t.signal.aborted?m=!0:t.signal.addEventListener("abort",()=>{m=!0}),t.signal)})},b=KV(t.options,t.fetchOptions),x=(O,E,$)=>Oo(this,null,function*(){if(m)return Promise.reject();if(E==null&&O.pages.length)return Promise.resolve(O);const R={client:t.client,queryKey:t.queryKey,pageParam:E,direction:$?"backward":"forward",meta:t.options.meta};g(R);const A=yield b(R),{maxPages:P}=t.options,k=$?Xbe:Ybe;return{pages:k(O.pages,A,P),pageParams:k(O.pageParams,E,P)}});if(i&&a.length){const O=i==="backward",E=O?sxe:nW,$={pages:a,pageParams:o},R=E(r,$);s=yield x($,R,O)}else{const O=e!=null?e:a.length;do{const E=l===0?(C=o[0])!=null?C:r.initialPageParam:nW(r,s);if(l>0&&E==null)break;s=yield x(s,E),l++}while(l{var m,g;return(g=(m=t.options).persister)==null?void 0:g.call(m,c,{client:t.client,queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},n)}:t.fetchFn=c}}}function nW(e,{pages:t,pageParams:n}){const r=t.length-1;return t.length>0?e.getNextPageParam(t[r],t,n[r],n):void 0}function sxe(e,{pages:t,pageParams:n}){var r;return t.length>0?(r=e.getPreviousPageParam)==null?void 0:r.call(e,t[0],t,n[0],n):void 0}var lxe=(Obe=class{constructor(e={}){qr(this,Rs);qr(this,u1);qr(this,f1);qr(this,FC);qr(this,HC);qr(this,d1);qr(this,VC);qr(this,WC);ir(this,Rs,e.queryCache||new ixe),ir(this,u1,e.mutationCache||new oxe),ir(this,f1,e.defaultOptions||{}),ir(this,FC,new Map),ir(this,HC,new Map),ir(this,d1,0)}mount(){e6(this,d1)._++,ot(this,d1)===1&&(ir(this,VC,l6.subscribe(e=>Oo(this,null,function*(){e&&(yield this.resumePausedMutations(),ot(this,Rs).onFocus())}))),ir(this,WC,f4.subscribe(e=>Oo(this,null,function*(){e&&(yield this.resumePausedMutations(),ot(this,Rs).onOnline())}))))}unmount(){var e,t;e6(this,d1)._--,ot(this,d1)===0&&((e=ot(this,VC))==null||e.call(this),ir(this,VC,void 0),(t=ot(this,WC))==null||t.call(this),ir(this,WC,void 0))}isFetching(e){return ot(this,Rs).findAll(cr(dt({},e),{fetchStatus:"fetching"})).length}isMutating(e){return ot(this,u1).findAll(cr(dt({},e),{status:"pending"})).length}getQueryData(e){var n;const t=this.defaultQueryOptions({queryKey:e});return(n=ot(this,Rs).get(t.queryHash))==null?void 0:n.state.data}ensureQueryData(e){const t=this.defaultQueryOptions(e),n=ot(this,Rs).build(this,t),r=n.state.data;return r===void 0?this.fetchQuery(e):(e.revalidateIfStale&&n.isStaleByTime(X2(t.staleTime,n))&&this.prefetchQuery(t),Promise.resolve(r))}getQueriesData(e){return ot(this,Rs).findAll(e).map(({queryKey:t,state:n})=>{const r=n.data;return[t,r]})}setQueryData(e,t,n){const r=this.defaultQueryOptions({queryKey:e}),i=ot(this,Rs).get(r.queryHash),a=i==null?void 0:i.state.data,o=$g(t,a);if(o!==void 0)return ot(this,Rs).build(this,r).setData(o,cr(dt({},n),{manual:!0}))}setQueriesData(e,t,n){return Ml.batch(()=>ot(this,Rs).findAll(e).map(({queryKey:r})=>[r,this.setQueryData(r,t,n)]))}getQueryState(e){var n;const t=this.defaultQueryOptions({queryKey:e});return(n=ot(this,Rs).get(t.queryHash))==null?void 0:n.state}removeQueries(e){const t=ot(this,Rs);Ml.batch(()=>{t.findAll(e).forEach(n=>{t.remove(n)})})}resetQueries(e,t){const n=ot(this,Rs);return Ml.batch(()=>(n.findAll(e).forEach(r=>{r.reset()}),this.refetchQueries(dt({type:"active"},e),t)))}cancelQueries(e,t={}){const n=dt({revert:!0},t),r=Ml.batch(()=>ot(this,Rs).findAll(e).map(i=>i.cancel(n)));return Promise.all(r).then(mf).catch(mf)}invalidateQueries(e,t={}){return Ml.batch(()=>{var n,r;return ot(this,Rs).findAll(e).forEach(i=>{i.invalidate()}),(e==null?void 0:e.refetchType)==="none"?Promise.resolve():this.refetchQueries(cr(dt({},e),{type:(r=(n=e==null?void 0:e.refetchType)!=null?n:e==null?void 0:e.type)!=null?r:"active"}),t)})}refetchQueries(e,t={}){var i;const n=cr(dt({},t),{cancelRefetch:(i=t.cancelRefetch)!=null?i:!0}),r=Ml.batch(()=>ot(this,Rs).findAll(e).filter(a=>!a.isDisabled()).map(a=>{let o=a.fetch(void 0,n);return n.throwOnError||(o=o.catch(mf)),a.state.fetchStatus==="paused"?Promise.resolve():o}));return Promise.all(r).then(mf)}fetchQuery(e){const t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);const n=ot(this,Rs).build(this,t);return n.isStaleByTime(X2(t.staleTime,n))?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(mf).catch(mf)}fetchInfiniteQuery(e){return e.behavior=tW(e.pages),this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(mf).catch(mf)}ensureInfiniteQueryData(e){return e.behavior=tW(e.pages),this.ensureQueryData(e)}resumePausedMutations(){return f4.isOnline()?ot(this,u1).resumePausedMutations():Promise.resolve()}getQueryCache(){return ot(this,Rs)}getMutationCache(){return ot(this,u1)}getDefaultOptions(){return ot(this,f1)}setDefaultOptions(e){ir(this,f1,e)}setQueryDefaults(e,t){ot(this,FC).set(mb(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){const t=[...ot(this,FC).values()],n={};return t.forEach(r=>{AE(e,r.queryKey)&&Object.assign(n,r.defaultOptions)}),n}setMutationDefaults(e,t){ot(this,HC).set(mb(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){const t=[...ot(this,HC).values()],n={};return t.forEach(r=>{AE(e,r.mutationKey)&&Object.assign(n,r.defaultOptions)}),n}defaultQueryOptions(e){if(e._defaulted)return e;const t=cr(dt(dt(dt({},ot(this,f1).queries),this.getQueryDefaults(e.queryKey)),e),{_defaulted:!0});return t.queryHash||(t.queryHash=i6(t.queryKey,t)),t.refetchOnReconnect===void 0&&(t.refetchOnReconnect=t.networkMode!=="always"),t.throwOnError===void 0&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode="offlineFirst"),t.queryFn===s6&&(t.enabled=!1),t}defaultMutationOptions(e){return e!=null&&e._defaulted?e:cr(dt(dt(dt({},ot(this,f1).mutations),(e==null?void 0:e.mutationKey)&&this.getMutationDefaults(e.mutationKey)),e),{_defaulted:!0})}clear(){ot(this,Rs).clear(),ot(this,u1).clear()}},Rs=new WeakMap,u1=new WeakMap,f1=new WeakMap,FC=new WeakMap,HC=new WeakMap,d1=new WeakMap,VC=new WeakMap,WC=new WeakMap,Obe),cxe=(_be=class extends vv{constructor(t,n){super();qr(this,qa);qr(this,Af);qr(this,ua);qr(this,L3);qr(this,Xu);qr(this,e2);qr(this,UC);qr(this,h1);qr(this,p1);qr(this,D3);qr(this,qC);qr(this,GC);qr(this,t2);qr(this,n2);qr(this,g1);qr(this,KC,new Set);this.options=n,ir(this,Af,t),ir(this,p1,null),ir(this,h1,c6()),this.options.experimental_prefetchInRender||ot(this,h1).reject(new Error("experimental_prefetchInRender feature flag is not enabled")),this.bindMethods(),this.setOptions(n)}bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(ot(this,ua).addObserver(this),rW(ot(this,ua),this.options)?zi(this,qa,c4).call(this):this.updateResult(),zi(this,qa,IV).call(this))}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return f6(ot(this,ua),this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return f6(ot(this,ua),this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,zi(this,qa,LV).call(this),zi(this,qa,DV).call(this),ot(this,ua).removeObserver(this)}setOptions(t){const n=this.options,r=ot(this,ua);if(this.options=ot(this,Af).defaultQueryOptions(t),this.options.enabled!==void 0&&typeof this.options.enabled!="boolean"&&typeof this.options.enabled!="function"&&typeof op(this.options.enabled,ot(this,ua))!="boolean")throw new Error("Expected enabled to be a boolean or a callback that returns a boolean");zi(this,qa,jV).call(this),ot(this,ua).setOptions(this.options),n._defaulted&&!u4(this.options,n)&&ot(this,Af).getQueryCache().notify({type:"observerOptionsUpdated",query:ot(this,ua),observer:this});const i=this.hasListeners();i&&iW(ot(this,ua),r,this.options,n)&&zi(this,qa,c4).call(this),this.updateResult(),i&&(ot(this,ua)!==r||op(this.options.enabled,ot(this,ua))!==op(n.enabled,ot(this,ua))||X2(this.options.staleTime,ot(this,ua))!==X2(n.staleTime,ot(this,ua)))&&zi(this,qa,PV).call(this);const a=zi(this,qa,NV).call(this);i&&(ot(this,ua)!==r||op(this.options.enabled,ot(this,ua))!==op(n.enabled,ot(this,ua))||a!==ot(this,g1))&&zi(this,qa,kV).call(this,a)}getOptimisticResult(t){const n=ot(this,Af).getQueryCache().build(ot(this,Af),t),r=this.createResult(n,t);return fxe(this,r)&&(ir(this,Xu,r),ir(this,UC,this.options),ir(this,e2,ot(this,ua).state)),r}getCurrentResult(){return ot(this,Xu)}trackResult(t,n){const r={};return Object.keys(t).forEach(i=>{Object.defineProperty(r,i,{configurable:!1,enumerable:!0,get:()=>(this.trackProp(i),n==null||n(i),t[i])})}),r}trackProp(t){ot(this,KC).add(t)}getCurrentQuery(){return ot(this,ua)}refetch(n={}){var t=tc(n,[]);return this.fetch(dt({},t))}fetchOptimistic(t){const n=ot(this,Af).defaultQueryOptions(t),r=ot(this,Af).getQueryCache().build(ot(this,Af),n);return r.fetch().then(()=>this.createResult(r,n))}fetch(t){var n;return zi(this,qa,c4).call(this,cr(dt({},t),{cancelRefetch:(n=t.cancelRefetch)!=null?n:!0})).then(()=>(this.updateResult(),ot(this,Xu)))}createResult(t,n){var P;const r=ot(this,ua),i=this.options,a=ot(this,Xu),o=ot(this,e2),s=ot(this,UC),c=t!==r?t.state:ot(this,L3),{state:u}=t;let f=dt({},u),d=!1,h;if(n._optimisticResults){const k=this.hasListeners(),N=!k&&rW(t,n),H=k&&iW(t,r,n,i);(N||H)&&(f=dt(dt({},f),JV(u.data,t.options))),n._optimisticResults==="isRestoring"&&(f.fetchStatus="idle")}let{error:p,errorUpdatedAt:m,status:g}=f;h=f.data;let b=!1;if(n.placeholderData!==void 0&&h===void 0&&g==="pending"){let k;a!=null&&a.isPlaceholderData&&n.placeholderData===(s==null?void 0:s.placeholderData)?(k=a.data,b=!0):k=typeof n.placeholderData=="function"?n.placeholderData((P=ot(this,GC))==null?void 0:P.state.data,ot(this,GC)):n.placeholderData,k!==void 0&&(g="success",h=o6(a==null?void 0:a.data,k,n),d=!0)}if(n.select&&h!==void 0&&!b)if(a&&h===(o==null?void 0:o.data)&&n.select===ot(this,D3))h=ot(this,qC);else try{ir(this,D3,n.select),h=n.select(h),h=o6(a==null?void 0:a.data,h,n),ir(this,qC,h),ir(this,p1,null)}catch(k){ir(this,p1,k)}ot(this,p1)&&(p=ot(this,p1),h=ot(this,qC),m=Date.now(),g="error");const x=f.fetchStatus==="fetching",C=g==="pending",O=g==="error",E=C&&x,$=h!==void 0,A={status:g,fetchStatus:f.fetchStatus,isPending:C,isSuccess:g==="success",isError:O,isInitialLoading:E,isLoading:E,data:h,dataUpdatedAt:f.dataUpdatedAt,error:p,errorUpdatedAt:m,failureCount:f.fetchFailureCount,failureReason:f.fetchFailureReason,errorUpdateCount:f.errorUpdateCount,isFetched:f.dataUpdateCount>0||f.errorUpdateCount>0,isFetchedAfterMount:f.dataUpdateCount>c.dataUpdateCount||f.errorUpdateCount>c.errorUpdateCount,isFetching:x,isRefetching:x&&!C,isLoadingError:O&&!$,isPaused:f.fetchStatus==="paused",isPlaceholderData:d,isRefetchError:O&&$,isStale:d6(t,n),refetch:this.refetch,promise:ot(this,h1)};if(this.options.experimental_prefetchInRender){const k=D=>{A.status==="error"?D.reject(A.error):A.data!==void 0&&D.resolve(A.data)},N=()=>{const D=ir(this,h1,A.promise=c6());k(D)},H=ot(this,h1);switch(H.status){case"pending":t.queryHash===r.queryHash&&k(H);break;case"fulfilled":(A.status==="error"||A.data!==H.value)&&N();break;case"rejected":(A.status!=="error"||A.error!==H.reason)&&N();break}}return A}updateResult(){const t=ot(this,Xu),n=this.createResult(ot(this,ua),this.options);if(ir(this,e2,ot(this,ua).state),ir(this,UC,this.options),ot(this,e2).data!==void 0&&ir(this,GC,ot(this,ua)),u4(n,t))return;ir(this,Xu,n);const r=()=>{if(!t)return!0;const{notifyOnChangeProps:i}=this.options,a=typeof i=="function"?i():i;if(a==="all"||!a&&!ot(this,KC).size)return!0;const o=new Set(a!=null?a:ot(this,KC));return this.options.throwOnError&&o.add("error"),Object.keys(ot(this,Xu)).some(s=>{const l=s;return ot(this,Xu)[l]!==t[l]&&o.has(l)})};zi(this,qa,Pbe).call(this,{listeners:r()})}onQueryUpdate(){this.updateResult(),this.hasListeners()&&zi(this,qa,IV).call(this)}},Af=new WeakMap,ua=new WeakMap,L3=new WeakMap,Xu=new WeakMap,e2=new WeakMap,UC=new WeakMap,h1=new WeakMap,p1=new WeakMap,D3=new WeakMap,qC=new WeakMap,GC=new WeakMap,t2=new WeakMap,n2=new WeakMap,g1=new WeakMap,KC=new WeakMap,qa=new WeakSet,c4=function(t){zi(this,qa,jV).call(this);let n=ot(this,ua).fetch(this.options,t);return t!=null&&t.throwOnError||(n=n.catch(mf)),n},PV=function(){zi(this,qa,LV).call(this);const t=X2(this.options.staleTime,ot(this,ua));if(_g||ot(this,Xu).isStale||!r6(t))return;const r=HV(ot(this,Xu).dataUpdatedAt,t)+1;ir(this,t2,setTimeout(()=>{ot(this,Xu).isStale||this.updateResult()},r))},NV=function(){var t;return(t=typeof this.options.refetchInterval=="function"?this.options.refetchInterval(ot(this,ua)):this.options.refetchInterval)!=null?t:!1},kV=function(t){zi(this,qa,DV).call(this),ir(this,g1,t),!(_g||op(this.options.enabled,ot(this,ua))===!1||!r6(ot(this,g1))||ot(this,g1)===0)&&ir(this,n2,setInterval(()=>{(this.options.refetchIntervalInBackground||l6.isFocused())&&zi(this,qa,c4).call(this)},ot(this,g1)))},IV=function(){zi(this,qa,PV).call(this),zi(this,qa,kV).call(this,zi(this,qa,NV).call(this))},LV=function(){ot(this,t2)&&(clearTimeout(ot(this,t2)),ir(this,t2,void 0))},DV=function(){ot(this,n2)&&(clearInterval(ot(this,n2)),ir(this,n2,void 0))},jV=function(){const t=ot(this,Af).getQueryCache().build(ot(this,Af),this.options);if(t===ot(this,ua))return;const n=ot(this,ua);ir(this,ua,t),ir(this,L3,t.state),this.hasListeners()&&(n==null||n.removeObserver(this),t.addObserver(this))},Pbe=function(t){Ml.batch(()=>{t.listeners&&this.listeners.forEach(n=>{n(ot(this,Xu))}),ot(this,Af).getQueryCache().notify({query:ot(this,ua),type:"observerResultsUpdated"})})},_be);function uxe(e,t){return op(t.enabled,e)!==!1&&e.state.data===void 0&&!(e.state.status==="error"&&t.retryOnMount===!1)}function rW(e,t){return uxe(e,t)||e.state.data!==void 0&&f6(e,t,t.refetchOnMount)}function f6(e,t,n){if(op(t.enabled,e)!==!1){const r=typeof n=="function"?n(e):n;return r==="always"||r!==!1&&d6(e,t)}return!1}function iW(e,t,n,r){return(e!==t||op(r.enabled,e)===!1)&&(!n.suspense||e.state.status!=="error")&&d6(e,n)}function d6(e,t){return op(t.enabled,e)!==!1&&e.isStaleByTime(X2(t.staleTime,e))}function fxe(e,t){return!u4(e.getCurrentResult(),t)}var dxe=($be=class extends vv{constructor(n,r){super();qr(this,g0);qr(this,m1);qr(this,v1);qr(this,Pf);qr(this,p0);ir(this,m1,n),this.setOptions(r),this.bindMethods(),zi(this,g0,n6).call(this)}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(n){var i;const r=this.options;this.options=ot(this,m1).defaultMutationOptions(n),u4(this.options,r)||ot(this,m1).getMutationCache().notify({type:"observerOptionsUpdated",mutation:ot(this,Pf),observer:this}),r!=null&&r.mutationKey&&this.options.mutationKey&&mb(r.mutationKey)!==mb(this.options.mutationKey)?this.reset():((i=ot(this,Pf))==null?void 0:i.state.status)==="pending"&&ot(this,Pf).setOptions(this.options)}onUnsubscribe(){var n;this.hasListeners()||(n=ot(this,Pf))==null||n.removeObserver(this)}onMutationUpdate(n){zi(this,g0,n6).call(this),zi(this,g0,BV).call(this,n)}getCurrentResult(){return ot(this,v1)}reset(){var n;(n=ot(this,Pf))==null||n.removeObserver(this),ir(this,Pf,void 0),zi(this,g0,n6).call(this),zi(this,g0,BV).call(this)}mutate(n,r){var i;return ir(this,p0,r),(i=ot(this,Pf))==null||i.removeObserver(this),ir(this,Pf,ot(this,m1).getMutationCache().build(ot(this,m1),this.options)),ot(this,Pf).addObserver(this),ot(this,Pf).execute(n)}},m1=new WeakMap,v1=new WeakMap,Pf=new WeakMap,p0=new WeakMap,g0=new WeakSet,n6=function(){var r,i;const n=(i=(r=ot(this,Pf))==null?void 0:r.state)!=null?i:eW();ir(this,v1,cr(dt({},n),{isPending:n.status==="pending",isSuccess:n.status==="success",isError:n.status==="error",isIdle:n.status==="idle",mutate:this.mutate,reset:this.reset}))},BV=function(n){Ml.batch(()=>{var r,i,a,o,s,l,c,u;if(ot(this,p0)&&this.hasListeners()){const f=ot(this,v1).variables,d=ot(this,v1).context;(n==null?void 0:n.type)==="success"?((i=(r=ot(this,p0)).onSuccess)==null||i.call(r,n.data,f,d),(o=(a=ot(this,p0)).onSettled)==null||o.call(a,n.data,null,f,d)):(n==null?void 0:n.type)==="error"&&((l=(s=ot(this,p0)).onError)==null||l.call(s,n.error,f,d),(u=(c=ot(this,p0)).onSettled)==null||u.call(c,void 0,n.error,f,d))}this.listeners.forEach(f=>{f(ot(this,v1))})})},$be),h6={exports:{}},Ai={};/** * @license React - * react-jsx-runtime.production.min.js + * react.production.js * - * Copyright (c) Facebook, Inc. and its affiliates. + * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var e2e=b,t2e=Symbol.for("react.element"),n2e=Symbol.for("react.fragment"),r2e=Object.prototype.hasOwnProperty,i2e=e2e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,a2e={key:!0,ref:!0,__self:!0,__source:!0};function yB(e,t,n){var r,i={},a=null,o=null;n!==void 0&&(a=""+n),t.key!==void 0&&(a=""+t.key),t.ref!==void 0&&(o=t.ref);for(r in t)r2e.call(t,r)&&!a2e.hasOwnProperty(r)&&(i[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps,t)i[r]===void 0&&(i[r]=t[r]);return{$$typeof:t2e,type:e,key:a,ref:o,props:i,_owner:i2e.current}}Di.Fragment=n2e,Di.jsx=yB,Di.jsxs=yB,Rr.exports=Di;var ve=Rr.exports,Xv=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},qh=typeof window=="undefined"||"Deno"in globalThis;function ul(){}function o2e(e,t){return typeof e=="function"?e(t):e}function wM(e){return typeof e=="number"&&e>=0&&e!==1/0}function bB(e,t){return Math.max(e+(t||0)-Date.now(),0)}function Zv(e,t){return typeof e=="function"?e(t):e}function sc(e,t){return typeof e=="function"?e(t):e}function xB(e,t){const{type:n="all",exact:r,fetchStatus:i,predicate:a,queryKey:o,stale:s}=e;if(o){if(r){if(t.queryHash!==CM(o,t.options))return!1}else if(!Cy(t.queryKey,o))return!1}if(n!=="all"){const l=t.isActive();if(n==="active"&&!l||n==="inactive"&&l)return!1}return!(typeof s=="boolean"&&t.isStale()!==s||i&&i!==t.state.fetchStatus||a&&!a(t))}function SB(e,t){const{exact:n,status:r,predicate:i,mutationKey:a}=e;if(a){if(!t.options.mutationKey)return!1;if(n){if(Uh(t.options.mutationKey)!==Uh(a))return!1}else if(!Cy(t.options.mutationKey,a))return!1}return!(r&&t.state.status!==r||i&&!i(t))}function CM(e,t){return((t==null?void 0:t.queryKeyHashFn)||Uh)(e)}function Uh(e){return JSON.stringify(e,(t,n)=>EM(n)?Object.keys(n).sort().reduce((r,i)=>(r[i]=n[i],r),{}):n)}function Cy(e,t){return e===t?!0:typeof e!=typeof t?!1:e&&t&&typeof e=="object"&&typeof t=="object"?!Object.keys(t).some(n=>!Cy(e[n],t[n])):!1}function wB(e,t){if(e===t)return e;const n=CB(e)&&CB(t);if(n||EM(e)&&EM(t)){const r=n?e:Object.keys(e),i=r.length,a=n?t:Object.keys(t),o=a.length,s=n?[]:{};let l=0;for(let c=0;c{setTimeout(t,e)})}function OM(e,t,n){return typeof n.structuralSharing=="function"?n.structuralSharing(e,t):n.structuralSharing!==!1?wB(e,t):t}function l2e(e,t,n=0){const r=[...e,t];return n&&r.length>n?r.slice(1):r}function c2e(e,t,n=0){const r=[t,...e];return n&&r.length>n?r.slice(0,-1):r}var _M=Symbol();function OB(e,t){return!e.queryFn&&(t!=null&&t.initialPromise)?()=>t.initialPromise:!e.queryFn||e.queryFn===_M?()=>Promise.reject(new Error(`Missing queryFn: '${e.queryHash}'`)):e.queryFn}var u2e=(f1e=class extends Xv{constructor(){super();Nn(this,Tv);Nn(this,_h);Nn(this,K0);ln(this,K0,t=>{if(!qh&&window.addEventListener){const n=()=>t();return window.addEventListener("visibilitychange",n,!1),()=>{window.removeEventListener("visibilitychange",n)}}})}onSubscribe(){De(this,_h)||this.setEventListener(De(this,K0))}onUnsubscribe(){var t;this.hasListeners()||((t=De(this,_h))==null||t.call(this),ln(this,_h,void 0))}setEventListener(t){var n;ln(this,K0,t),(n=De(this,_h))==null||n.call(this),ln(this,_h,t(r=>{typeof r=="boolean"?this.setFocused(r):this.onFocus()}))}setFocused(t){De(this,Tv)!==t&&(ln(this,Tv,t),this.onFocus())}onFocus(){const t=this.isFocused();this.listeners.forEach(n=>{n(t)})}isFocused(){var t;return typeof De(this,Tv)=="boolean"?De(this,Tv):((t=globalThis.document)==null?void 0:t.visibilityState)!=="hidden"}},Tv=new WeakMap,_h=new WeakMap,K0=new WeakMap,f1e),$M=new u2e,f2e=(d1e=class extends Xv{constructor(){super();Nn(this,Y0,!0);Nn(this,$h);Nn(this,X0);ln(this,X0,t=>{if(!qh&&window.addEventListener){const n=()=>t(!0),r=()=>t(!1);return window.addEventListener("online",n,!1),window.addEventListener("offline",r,!1),()=>{window.removeEventListener("online",n),window.removeEventListener("offline",r)}}})}onSubscribe(){De(this,$h)||this.setEventListener(De(this,X0))}onUnsubscribe(){var t;this.hasListeners()||((t=De(this,$h))==null||t.call(this),ln(this,$h,void 0))}setEventListener(t){var n;ln(this,X0,t),(n=De(this,$h))==null||n.call(this),ln(this,$h,t(this.setOnline.bind(this)))}setOnline(t){De(this,Y0)!==t&&(ln(this,Y0,t),this.listeners.forEach(r=>{r(t)}))}isOnline(){return De(this,Y0)}},Y0=new WeakMap,$h=new WeakMap,X0=new WeakMap,d1e),OS=new f2e;function PM(){let e,t;const n=new Promise((i,a)=>{e=i,t=a});n.status="pending",n.catch(()=>{});function r(i){Object.assign(n,i),delete n.resolve,delete n.reject}return n.resolve=i=>{r({status:"fulfilled",value:i}),e(i)},n.reject=i=>{r({status:"rejected",reason:i}),t(i)},n}function d2e(e){return Math.min(1e3*Xa(2,e),3e4)}function _B(e){return(e!=null?e:"online")==="online"?OS.isOnline():!0}var $B=class extends Error{constructor(e){super("CancelledError"),this.revert=e==null?void 0:e.revert,this.silent=e==null?void 0:e.silent}};function MM(e){return e instanceof $B}function PB(e){let t=!1,n=0,r=!1,i;const a=PM(),o=v=>{var g;r||(d(new $B(v)),(g=e.abort)==null||g.call(e))},s=()=>{t=!0},l=()=>{t=!1},c=()=>$M.isFocused()&&(e.networkMode==="always"||OS.isOnline())&&e.canRun(),u=()=>_B(e.networkMode)&&e.canRun(),f=v=>{var g;r||(r=!0,(g=e.onSuccess)==null||g.call(e,v),i==null||i(),a.resolve(v))},d=v=>{var g;r||(r=!0,(g=e.onError)==null||g.call(e,v),i==null||i(),a.reject(v))},h=()=>new Promise(v=>{var g;i=m=>{(r||c())&&v(m)},(g=e.onPause)==null||g.call(e)}).then(()=>{var v;i=void 0,r||(v=e.onContinue)==null||v.call(e)}),p=()=>{if(r)return;let v;const g=n===0?e.initialPromise:void 0;try{v=g!=null?g:e.fn()}catch(m){v=Promise.reject(m)}Promise.resolve(v).then(f).catch(m=>{var C,E,O;if(r)return;const y=(C=e.retry)!=null?C:qh?0:3,x=(E=e.retryDelay)!=null?E:d2e,S=typeof x=="function"?x(n,m):x,w=y===!0||typeof y=="number"&&nc()?void 0:h()).then(()=>{t?d(m):p()})})};return{promise:a,cancel:o,continue:()=>(i==null||i(),a),cancelRetry:s,continueRetry:l,canStart:u,start:()=>(u()?p():h().then(p),a)}}function h2e(){let e=[],t=0,n=s=>{s()},r=s=>{s()},i=s=>setTimeout(s,0);const a=s=>{t?e.push(s):i(()=>{n(s)})},o=()=>{const s=e;e=[],s.length&&i(()=>{r(()=>{s.forEach(l=>{n(l)})})})};return{batch:s=>{let l;t++;try{l=s()}finally{t--,t||o()}return l},batchCalls:s=>(...l)=>{a(()=>{s(...l)})},schedule:a,setNotifyFunction:s=>{n=s},setBatchNotifyFunction:s=>{r=s},setScheduler:s=>{i=s}}}var Aa=h2e(),MB=(h1e=class{constructor(){Nn(this,Rv)}destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),wM(this.gcTime)&&ln(this,Rv,setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e!=null?e:qh?1/0:5*60*1e3)}clearGcTimeout(){De(this,Rv)&&(clearTimeout(De(this,Rv)),ln(this,Rv,void 0))}},Rv=new WeakMap,h1e),p2e=(p1e=class extends MB{constructor(t){var n;super();Nn(this,zc);Nn(this,Z0);Nn(this,Q0);Nn(this,Zl);Nn(this,Wo);Nn(this,Y2);Nn(this,Iv);ln(this,Iv,!1),ln(this,Y2,t.defaultOptions),this.setOptions(t.options),this.observers=[],ln(this,Zl,t.cache),this.queryKey=t.queryKey,this.queryHash=t.queryHash,ln(this,Z0,v2e(this.options)),this.state=(n=t.state)!=null?n:De(this,Z0),this.scheduleGc()}get meta(){return this.options.meta}get promise(){var t;return(t=De(this,Wo))==null?void 0:t.promise}setOptions(t){this.options=Ke(Ke({},De(this,Y2)),t),this.updateGcTime(this.options.gcTime)}optionalRemove(){!this.observers.length&&this.state.fetchStatus==="idle"&&De(this,Zl).remove(this)}setData(t,n){const r=OM(this.state.data,t,this.options);return ur(this,zc,Qf).call(this,{data:r,type:"success",dataUpdatedAt:n==null?void 0:n.updatedAt,manual:n==null?void 0:n.manual}),r}setState(t,n){ur(this,zc,Qf).call(this,{type:"setState",state:t,setStateOptions:n})}cancel(t){var r,i;const n=(r=De(this,Wo))==null?void 0:r.promise;return(i=De(this,Wo))==null||i.cancel(t),n?n.then(ul).catch(ul):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(De(this,Z0))}isActive(){return this.observers.some(t=>sc(t.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===_M||this.state.dataUpdateCount+this.state.errorUpdateCount===0}isStale(){return this.state.isInvalidated?!0:this.getObserversCount()>0?this.observers.some(t=>t.getCurrentResult().isStale):this.state.data===void 0}isStaleByTime(t=0){return this.state.isInvalidated||this.state.data===void 0||!bB(this.state.dataUpdatedAt,t)}onFocus(){var n;const t=this.observers.find(r=>r.shouldFetchOnWindowFocus());t==null||t.refetch({cancelRefetch:!1}),(n=De(this,Wo))==null||n.continue()}onOnline(){var n;const t=this.observers.find(r=>r.shouldFetchOnReconnect());t==null||t.refetch({cancelRefetch:!1}),(n=De(this,Wo))==null||n.continue()}addObserver(t){this.observers.includes(t)||(this.observers.push(t),this.clearGcTimeout(),De(this,Zl).notify({type:"observerAdded",query:this,observer:t}))}removeObserver(t){this.observers.includes(t)&&(this.observers=this.observers.filter(n=>n!==t),this.observers.length||(De(this,Wo)&&(De(this,Iv)?De(this,Wo).cancel({revert:!0}):De(this,Wo).cancelRetry()),this.scheduleGc()),De(this,Zl).notify({type:"observerRemoved",query:this,observer:t}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||ur(this,zc,Qf).call(this,{type:"invalidate"})}fetch(t,n){var l,c,u;if(this.state.fetchStatus!=="idle"){if(this.state.data!==void 0&&(n!=null&&n.cancelRefetch))this.cancel({silent:!0});else if(De(this,Wo))return De(this,Wo).continueRetry(),De(this,Wo).promise}if(t&&this.setOptions(t),!this.options.queryFn){const f=this.observers.find(d=>d.options.queryFn);f&&this.setOptions(f.options)}const r=new AbortController,i=f=>{Object.defineProperty(f,"signal",{enumerable:!0,get:()=>(ln(this,Iv,!0),r.signal)})},a=()=>{const f=OB(this.options,n),d={queryKey:this.queryKey,meta:this.meta};return i(d),ln(this,Iv,!1),this.options.persister?this.options.persister(f,d,this):f(d)},o={fetchOptions:n,options:this.options,queryKey:this.queryKey,state:this.state,fetchFn:a};i(o),(l=this.options.behavior)==null||l.onFetch(o,this),ln(this,Q0,this.state),(this.state.fetchStatus==="idle"||this.state.fetchMeta!==((c=o.fetchOptions)==null?void 0:c.meta))&&ur(this,zc,Qf).call(this,{type:"fetch",meta:(u=o.fetchOptions)==null?void 0:u.meta});const s=f=>{var d,h,p,v;MM(f)&&f.silent||ur(this,zc,Qf).call(this,{type:"error",error:f}),MM(f)||((h=(d=De(this,Zl).config).onError)==null||h.call(d,f,this),(v=(p=De(this,Zl).config).onSettled)==null||v.call(p,this.state.data,f,this)),this.scheduleGc()};return ln(this,Wo,PB({initialPromise:n==null?void 0:n.initialPromise,fn:o.fetchFn,abort:r.abort.bind(r),onSuccess:f=>{var d,h,p,v;if(f===void 0){s(new Error(`${this.queryHash} data is undefined`));return}try{this.setData(f)}catch(g){s(g);return}(h=(d=De(this,Zl).config).onSuccess)==null||h.call(d,f,this),(v=(p=De(this,Zl).config).onSettled)==null||v.call(p,f,this.state.error,this),this.scheduleGc()},onError:s,onFail:(f,d)=>{ur(this,zc,Qf).call(this,{type:"failed",failureCount:f,error:d})},onPause:()=>{ur(this,zc,Qf).call(this,{type:"pause"})},onContinue:()=>{ur(this,zc,Qf).call(this,{type:"continue"})},retry:o.options.retry,retryDelay:o.options.retryDelay,networkMode:o.options.networkMode,canRun:()=>!0})),De(this,Wo).start()}},Z0=new WeakMap,Q0=new WeakMap,Zl=new WeakMap,Wo=new WeakMap,Y2=new WeakMap,Iv=new WeakMap,zc=new WeakSet,Qf=function(t){const n=r=>{var i,a;switch(t.type){case"failed":return Rn(Ke({},r),{fetchFailureCount:t.failureCount,fetchFailureReason:t.error});case"pause":return Rn(Ke({},r),{fetchStatus:"paused"});case"continue":return Rn(Ke({},r),{fetchStatus:"fetching"});case"fetch":return Rn(Ke(Ke({},r),kB(r.data,this.options)),{fetchMeta:(i=t.meta)!=null?i:null});case"success":return Ke(Rn(Ke({},r),{data:t.data,dataUpdateCount:r.dataUpdateCount+1,dataUpdatedAt:(a=t.dataUpdatedAt)!=null?a:Date.now(),error:null,isInvalidated:!1,status:"success"}),!t.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null});case"error":const o=t.error;return MM(o)&&o.revert&&De(this,Q0)?Rn(Ke({},De(this,Q0)),{fetchStatus:"idle"}):Rn(Ke({},r),{error:o,errorUpdateCount:r.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:r.fetchFailureCount+1,fetchFailureReason:o,fetchStatus:"idle",status:"error"});case"invalidate":return Rn(Ke({},r),{isInvalidated:!0});case"setState":return Ke(Ke({},r),t.state)}};this.state=n(this.state),Aa.batch(()=>{this.observers.forEach(r=>{r.onQueryUpdate()}),De(this,Zl).notify({query:this,type:"updated",action:t})})},p1e);function kB(e,t){return Ke({fetchFailureCount:0,fetchFailureReason:null,fetchStatus:_B(t.networkMode)?"fetching":"paused"},e===void 0&&{error:null,status:"pending"})}function v2e(e){const t=typeof e.initialData=="function"?e.initialData():e.initialData,n=t!==void 0,r=n?typeof e.initialDataUpdatedAt=="function"?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:n?r!=null?r:Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:n?"success":"pending",fetchStatus:"idle"}}var g2e=(v1e=class extends Xv{constructor(t={}){super();Nn(this,Lu);this.config=t,ln(this,Lu,new Map)}build(t,n,r){var s;const i=n.queryKey,a=(s=n.queryHash)!=null?s:CM(i,n);let o=this.get(a);return o||(o=new p2e({cache:this,queryKey:i,queryHash:a,options:t.defaultQueryOptions(n),state:r,defaultOptions:t.getQueryDefaults(i)}),this.add(o)),o}add(t){De(this,Lu).has(t.queryHash)||(De(this,Lu).set(t.queryHash,t),this.notify({type:"added",query:t}))}remove(t){const n=De(this,Lu).get(t.queryHash);n&&(t.destroy(),n===t&&De(this,Lu).delete(t.queryHash),this.notify({type:"removed",query:t}))}clear(){Aa.batch(()=>{this.getAll().forEach(t=>{this.remove(t)})})}get(t){return De(this,Lu).get(t)}getAll(){return[...De(this,Lu).values()]}find(t){const n=Ke({exact:!0},t);return this.getAll().find(r=>xB(n,r))}findAll(t={}){const n=this.getAll();return Object.keys(t).length>0?n.filter(r=>xB(t,r)):n}notify(t){Aa.batch(()=>{this.listeners.forEach(n=>{n(t)})})}onFocus(){Aa.batch(()=>{this.getAll().forEach(t=>{t.onFocus()})})}onOnline(){Aa.batch(()=>{this.getAll().forEach(t=>{t.onOnline()})})}},Lu=new WeakMap,v1e),m2e=(g1e=class extends MB{constructor(t){super();Nn(this,Du);Nn(this,ju);Nn(this,ls);Nn(this,Av);this.mutationId=t.mutationId,ln(this,ls,t.mutationCache),ln(this,ju,[]),this.state=t.state||TB(),this.setOptions(t.options),this.scheduleGc()}setOptions(t){this.options=t,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(t){De(this,ju).includes(t)||(De(this,ju).push(t),this.clearGcTimeout(),De(this,ls).notify({type:"observerAdded",mutation:this,observer:t}))}removeObserver(t){ln(this,ju,De(this,ju).filter(n=>n!==t)),this.scheduleGc(),De(this,ls).notify({type:"observerRemoved",mutation:this,observer:t})}optionalRemove(){De(this,ju).length||(this.state.status==="pending"?this.scheduleGc():De(this,ls).remove(this))}continue(){var t,n;return(n=(t=De(this,Av))==null?void 0:t.continue())!=null?n:this.execute(this.state.variables)}execute(t){return la(this,null,function*(){var i,a,o,s,l,c,u,f,d,h,p,v,g,m,y,x,S,w,C,E,O;ln(this,Av,PB({fn:()=>this.options.mutationFn?this.options.mutationFn(t):Promise.reject(new Error("No mutationFn found")),onFail:($,P)=>{ur(this,Du,Vh).call(this,{type:"failed",failureCount:$,error:P})},onPause:()=>{ur(this,Du,Vh).call(this,{type:"pause"})},onContinue:()=>{ur(this,Du,Vh).call(this,{type:"continue"})},retry:(i=this.options.retry)!=null?i:0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>De(this,ls).canRun(this)}));const n=this.state.status==="pending",r=!De(this,Av).canStart();try{if(!n){ur(this,Du,Vh).call(this,{type:"pending",variables:t,isPaused:r}),yield(o=(a=De(this,ls).config).onMutate)==null?void 0:o.call(a,t,this);const P=yield(l=(s=this.options).onMutate)==null?void 0:l.call(s,t);P!==this.state.context&&ur(this,Du,Vh).call(this,{type:"pending",context:P,variables:t,isPaused:r})}const $=yield De(this,Av).start();return yield(u=(c=De(this,ls).config).onSuccess)==null?void 0:u.call(c,$,t,this.state.context,this),yield(d=(f=this.options).onSuccess)==null?void 0:d.call(f,$,t,this.state.context),yield(p=(h=De(this,ls).config).onSettled)==null?void 0:p.call(h,$,null,this.state.variables,this.state.context,this),yield(g=(v=this.options).onSettled)==null?void 0:g.call(v,$,null,t,this.state.context),ur(this,Du,Vh).call(this,{type:"success",data:$}),$}catch($){try{throw yield(y=(m=De(this,ls).config).onError)==null?void 0:y.call(m,$,t,this.state.context,this),yield(S=(x=this.options).onError)==null?void 0:S.call(x,$,t,this.state.context),yield(C=(w=De(this,ls).config).onSettled)==null?void 0:C.call(w,void 0,$,this.state.variables,this.state.context,this),yield(O=(E=this.options).onSettled)==null?void 0:O.call(E,void 0,$,t,this.state.context),$}finally{ur(this,Du,Vh).call(this,{type:"error",error:$})}}finally{De(this,ls).runNext(this)}})}},ju=new WeakMap,ls=new WeakMap,Av=new WeakMap,Du=new WeakSet,Vh=function(t){const n=r=>{switch(t.type){case"failed":return Rn(Ke({},r),{failureCount:t.failureCount,failureReason:t.error});case"pause":return Rn(Ke({},r),{isPaused:!0});case"continue":return Rn(Ke({},r),{isPaused:!1});case"pending":return Rn(Ke({},r),{context:t.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:t.isPaused,status:"pending",variables:t.variables,submittedAt:Date.now()});case"success":return Rn(Ke({},r),{data:t.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1});case"error":return Rn(Ke({},r),{data:void 0,error:t.error,failureCount:r.failureCount+1,failureReason:t.error,isPaused:!1,status:"error"})}};this.state=n(this.state),Aa.batch(()=>{De(this,ju).forEach(r=>{r.onMutationUpdate(t)}),De(this,ls).notify({mutation:this,type:"updated",action:t})})},g1e);function TB(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0}}var y2e=(m1e=class extends Xv{constructor(t={}){super();Nn(this,rl);Nn(this,X2);this.config=t,ln(this,rl,new Map),ln(this,X2,Date.now())}build(t,n,r){const i=new m2e({mutationCache:this,mutationId:++hM(this,X2)._,options:t.defaultMutationOptions(n),state:r});return this.add(i),i}add(t){var i;const n=_S(t),r=(i=De(this,rl).get(n))!=null?i:[];r.push(t),De(this,rl).set(n,r),this.notify({type:"added",mutation:t})}remove(t){var r;const n=_S(t);if(De(this,rl).has(n)){const i=(r=De(this,rl).get(n))==null?void 0:r.filter(a=>a!==t);i&&(i.length===0?De(this,rl).delete(n):De(this,rl).set(n,i))}this.notify({type:"removed",mutation:t})}canRun(t){var r;const n=(r=De(this,rl).get(_S(t)))==null?void 0:r.find(i=>i.state.status==="pending");return!n||n===t}runNext(t){var r,i;const n=(r=De(this,rl).get(_S(t)))==null?void 0:r.find(a=>a!==t&&a.state.isPaused);return(i=n==null?void 0:n.continue())!=null?i:Promise.resolve()}clear(){Aa.batch(()=>{this.getAll().forEach(t=>{this.remove(t)})})}getAll(){return[...De(this,rl).values()].flat()}find(t){const n=Ke({exact:!0},t);return this.getAll().find(r=>SB(n,r))}findAll(t={}){return this.getAll().filter(n=>SB(t,n))}notify(t){Aa.batch(()=>{this.listeners.forEach(n=>{n(t)})})}resumePausedMutations(){const t=this.getAll().filter(n=>n.state.isPaused);return Aa.batch(()=>Promise.all(t.map(n=>n.continue().catch(ul))))}},rl=new WeakMap,X2=new WeakMap,m1e);function _S(e){var t,n;return(n=(t=e.options.scope)==null?void 0:t.id)!=null?n:String(e.mutationId)}function RB(e){return{onFetch:(t,n)=>{var u,f,d,h,p;const r=t.options,i=(d=(f=(u=t.fetchOptions)==null?void 0:u.meta)==null?void 0:f.fetchMore)==null?void 0:d.direction,a=((h=t.state.data)==null?void 0:h.pages)||[],o=((p=t.state.data)==null?void 0:p.pageParams)||[];let s={pages:[],pageParams:[]},l=0;const c=()=>la(this,null,function*(){var x;let v=!1;const g=S=>{Object.defineProperty(S,"signal",{enumerable:!0,get:()=>(t.signal.aborted?v=!0:t.signal.addEventListener("abort",()=>{v=!0}),t.signal)})},m=OB(t.options,t.fetchOptions),y=(S,w,C)=>la(this,null,function*(){if(v)return Promise.reject();if(w==null&&S.pages.length)return Promise.resolve(S);const E={queryKey:t.queryKey,pageParam:w,direction:C?"backward":"forward",meta:t.options.meta};g(E);const O=yield m(E),{maxPages:$}=t.options,P=C?c2e:l2e;return{pages:P(S.pages,O,$),pageParams:P(S.pageParams,w,$)}});if(i&&a.length){const S=i==="backward",w=S?b2e:IB,C={pages:a,pageParams:o},E=w(r,C);s=yield y(C,E,S)}else{const S=e!=null?e:a.length;do{const w=l===0?(x=o[0])!=null?x:r.initialPageParam:IB(r,s);if(l>0&&w==null)break;s=yield y(s,w),l++}while(l{var v,g;return(g=(v=t.options).persister)==null?void 0:g.call(v,c,{queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},n)}:t.fetchFn=c}}}function IB(e,{pages:t,pageParams:n}){const r=t.length-1;return t.length>0?e.getNextPageParam(t[r],t,n[r],n):void 0}function b2e(e,{pages:t,pageParams:n}){var r;return t.length>0?(r=e.getPreviousPageParam)==null?void 0:r.call(e,t[0],t,n[0],n):void 0}var x2e=(y1e=class{constructor(e={}){Nn(this,aa);Nn(this,Ph);Nn(this,Mh);Nn(this,J0);Nn(this,ey);Nn(this,kh);Nn(this,ty);Nn(this,ny);ln(this,aa,e.queryCache||new g2e),ln(this,Ph,e.mutationCache||new y2e),ln(this,Mh,e.defaultOptions||{}),ln(this,J0,new Map),ln(this,ey,new Map),ln(this,kh,0)}mount(){hM(this,kh)._++,De(this,kh)===1&&(ln(this,ty,$M.subscribe(e=>la(this,null,function*(){e&&(yield this.resumePausedMutations(),De(this,aa).onFocus())}))),ln(this,ny,OS.subscribe(e=>la(this,null,function*(){e&&(yield this.resumePausedMutations(),De(this,aa).onOnline())}))))}unmount(){var e,t;hM(this,kh)._--,De(this,kh)===0&&((e=De(this,ty))==null||e.call(this),ln(this,ty,void 0),(t=De(this,ny))==null||t.call(this),ln(this,ny,void 0))}isFetching(e){return De(this,aa).findAll(Rn(Ke({},e),{fetchStatus:"fetching"})).length}isMutating(e){return De(this,Ph).findAll(Rn(Ke({},e),{status:"pending"})).length}getQueryData(e){var n;const t=this.defaultQueryOptions({queryKey:e});return(n=De(this,aa).get(t.queryHash))==null?void 0:n.state.data}ensureQueryData(e){const t=this.defaultQueryOptions(e),n=De(this,aa).build(this,t),r=n.state.data;return r===void 0?this.fetchQuery(e):(e.revalidateIfStale&&n.isStaleByTime(Zv(t.staleTime,n))&&this.prefetchQuery(t),Promise.resolve(r))}getQueriesData(e){return De(this,aa).findAll(e).map(({queryKey:t,state:n})=>{const r=n.data;return[t,r]})}setQueryData(e,t,n){const r=this.defaultQueryOptions({queryKey:e}),i=De(this,aa).get(r.queryHash),a=i==null?void 0:i.state.data,o=o2e(t,a);if(o!==void 0)return De(this,aa).build(this,r).setData(o,Rn(Ke({},n),{manual:!0}))}setQueriesData(e,t,n){return Aa.batch(()=>De(this,aa).findAll(e).map(({queryKey:r})=>[r,this.setQueryData(r,t,n)]))}getQueryState(e){var n;const t=this.defaultQueryOptions({queryKey:e});return(n=De(this,aa).get(t.queryHash))==null?void 0:n.state}removeQueries(e){const t=De(this,aa);Aa.batch(()=>{t.findAll(e).forEach(n=>{t.remove(n)})})}resetQueries(e,t){const n=De(this,aa),r=Ke({type:"active"},e);return Aa.batch(()=>(n.findAll(e).forEach(i=>{i.reset()}),this.refetchQueries(r,t)))}cancelQueries(e,t={}){const n=Ke({revert:!0},t),r=Aa.batch(()=>De(this,aa).findAll(e).map(i=>i.cancel(n)));return Promise.all(r).then(ul).catch(ul)}invalidateQueries(e,t={}){return Aa.batch(()=>{var r,i;if(De(this,aa).findAll(e).forEach(a=>{a.invalidate()}),(e==null?void 0:e.refetchType)==="none")return Promise.resolve();const n=Rn(Ke({},e),{type:(i=(r=e==null?void 0:e.refetchType)!=null?r:e==null?void 0:e.type)!=null?i:"active"});return this.refetchQueries(n,t)})}refetchQueries(e,t={}){var i;const n=Rn(Ke({},t),{cancelRefetch:(i=t.cancelRefetch)!=null?i:!0}),r=Aa.batch(()=>De(this,aa).findAll(e).filter(a=>!a.isDisabled()).map(a=>{let o=a.fetch(void 0,n);return n.throwOnError||(o=o.catch(ul)),a.state.fetchStatus==="paused"?Promise.resolve():o}));return Promise.all(r).then(ul)}fetchQuery(e){const t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);const n=De(this,aa).build(this,t);return n.isStaleByTime(Zv(t.staleTime,n))?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(ul).catch(ul)}fetchInfiniteQuery(e){return e.behavior=RB(e.pages),this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(ul).catch(ul)}ensureInfiniteQueryData(e){return e.behavior=RB(e.pages),this.ensureQueryData(e)}resumePausedMutations(){return OS.isOnline()?De(this,Ph).resumePausedMutations():Promise.resolve()}getQueryCache(){return De(this,aa)}getMutationCache(){return De(this,Ph)}getDefaultOptions(){return De(this,Mh)}setDefaultOptions(e){ln(this,Mh,e)}setQueryDefaults(e,t){De(this,J0).set(Uh(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){const t=[...De(this,J0).values()],n={};return t.forEach(r=>{Cy(e,r.queryKey)&&Object.assign(n,r.defaultOptions)}),n}setMutationDefaults(e,t){De(this,ey).set(Uh(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){const t=[...De(this,ey).values()];let n={};return t.forEach(r=>{Cy(e,r.mutationKey)&&(n=Ke(Ke({},n),r.defaultOptions))}),n}defaultQueryOptions(e){if(e._defaulted)return e;const t=Rn(Ke(Ke(Ke({},De(this,Mh).queries),this.getQueryDefaults(e.queryKey)),e),{_defaulted:!0});return t.queryHash||(t.queryHash=CM(t.queryKey,t)),t.refetchOnReconnect===void 0&&(t.refetchOnReconnect=t.networkMode!=="always"),t.throwOnError===void 0&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode="offlineFirst"),t.queryFn===_M&&(t.enabled=!1),t}defaultMutationOptions(e){return e!=null&&e._defaulted?e:Rn(Ke(Ke(Ke({},De(this,Mh).mutations),(e==null?void 0:e.mutationKey)&&this.getMutationDefaults(e.mutationKey)),e),{_defaulted:!0})}clear(){De(this,aa).clear(),De(this,Ph).clear()}},aa=new WeakMap,Ph=new WeakMap,Mh=new WeakMap,J0=new WeakMap,ey=new WeakMap,kh=new WeakMap,ty=new WeakMap,ny=new WeakMap,y1e),S2e=(b1e=class extends Xv{constructor(t,n){super();Nn(this,qr);Nn(this,ks);Nn(this,wr);Nn(this,Z2);Nn(this,cs);Nn(this,Nv);Nn(this,ry);Nn(this,Th);Nn(this,Fu);Nn(this,Q2);Nn(this,iy);Nn(this,ay);Nn(this,Lv);Nn(this,jv);Nn(this,Rh);Nn(this,oy,new Set);this.options=n,ln(this,ks,t),ln(this,Fu,null),ln(this,Th,PM()),this.options.experimental_prefetchInRender||De(this,Th).reject(new Error("experimental_prefetchInRender feature flag is not enabled")),this.bindMethods(),this.setOptions(n)}bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(De(this,wr).addObserver(this),AB(De(this,wr),this.options)?ur(this,qr,yS).call(this):this.updateResult(),ur(this,qr,nB).call(this))}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return kM(De(this,wr),this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return kM(De(this,wr),this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,ur(this,qr,rB).call(this),ur(this,qr,iB).call(this),De(this,wr).removeObserver(this)}setOptions(t,n){const r=this.options,i=De(this,wr);if(this.options=De(this,ks).defaultQueryOptions(t),this.options.enabled!==void 0&&typeof this.options.enabled!="boolean"&&typeof this.options.enabled!="function"&&typeof sc(this.options.enabled,De(this,wr))!="boolean")throw new Error("Expected enabled to be a boolean or a callback that returns a boolean");ur(this,qr,aB).call(this),De(this,wr).setOptions(this.options),r._defaulted&&!ES(this.options,r)&&De(this,ks).getQueryCache().notify({type:"observerOptionsUpdated",query:De(this,wr),observer:this});const a=this.hasListeners();a&&NB(De(this,wr),i,this.options,r)&&ur(this,qr,yS).call(this),this.updateResult(n),a&&(De(this,wr)!==i||sc(this.options.enabled,De(this,wr))!==sc(r.enabled,De(this,wr))||Zv(this.options.staleTime,De(this,wr))!==Zv(r.staleTime,De(this,wr)))&&ur(this,qr,JF).call(this);const o=ur(this,qr,eB).call(this);a&&(De(this,wr)!==i||sc(this.options.enabled,De(this,wr))!==sc(r.enabled,De(this,wr))||o!==De(this,Rh))&&ur(this,qr,tB).call(this,o)}getOptimisticResult(t){const n=De(this,ks).getQueryCache().build(De(this,ks),t),r=this.createResult(n,t);return C2e(this,r)&&(ln(this,cs,r),ln(this,ry,this.options),ln(this,Nv,De(this,wr).state)),r}getCurrentResult(){return De(this,cs)}trackResult(t,n){const r={};return Object.keys(t).forEach(i=>{Object.defineProperty(r,i,{configurable:!1,enumerable:!0,get:()=>(this.trackProp(i),n==null||n(i),t[i])})}),r}trackProp(t){De(this,oy).add(t)}getCurrentQuery(){return De(this,wr)}refetch(n={}){var t=oc(n,[]);return this.fetch(Ke({},t))}fetchOptimistic(t){const n=De(this,ks).defaultQueryOptions(t),r=De(this,ks).getQueryCache().build(De(this,ks),n);return r.fetch().then(()=>this.createResult(r,n))}fetch(t){var n;return ur(this,qr,yS).call(this,Rn(Ke({},t),{cancelRefetch:(n=t.cancelRefetch)!=null?n:!0})).then(()=>(this.updateResult(),De(this,cs)))}createResult(t,n){var O;const r=De(this,wr),i=this.options,a=De(this,cs),o=De(this,Nv),s=De(this,ry),c=t!==r?t.state:De(this,Z2),{state:u}=t;let f=Ke({},u),d=!1,h;if(n._optimisticResults){const $=this.hasListeners(),P=!$&&AB(t,n),M=$&&NB(t,r,n,i);(P||M)&&(f=Ke(Ke({},f),kB(u.data,t.options))),n._optimisticResults==="isRestoring"&&(f.fetchStatus="idle")}let{error:p,errorUpdatedAt:v,status:g}=f;if(n.select&&f.data!==void 0)if(a&&f.data===(o==null?void 0:o.data)&&n.select===De(this,Q2))h=De(this,iy);else try{ln(this,Q2,n.select),h=n.select(f.data),h=OM(a==null?void 0:a.data,h,n),ln(this,iy,h),ln(this,Fu,null)}catch($){ln(this,Fu,$)}else h=f.data;if(n.placeholderData!==void 0&&h===void 0&&g==="pending"){let $;if(a!=null&&a.isPlaceholderData&&n.placeholderData===(s==null?void 0:s.placeholderData))$=a.data;else if($=typeof n.placeholderData=="function"?n.placeholderData((O=De(this,ay))==null?void 0:O.state.data,De(this,ay)):n.placeholderData,n.select&&$!==void 0)try{$=n.select($),ln(this,Fu,null)}catch(P){ln(this,Fu,P)}$!==void 0&&(g="success",h=OM(a==null?void 0:a.data,$,n),d=!0)}De(this,Fu)&&(p=De(this,Fu),h=De(this,iy),v=Date.now(),g="error");const m=f.fetchStatus==="fetching",y=g==="pending",x=g==="error",S=y&&m,w=h!==void 0,E={status:g,fetchStatus:f.fetchStatus,isPending:y,isSuccess:g==="success",isError:x,isInitialLoading:S,isLoading:S,data:h,dataUpdatedAt:f.dataUpdatedAt,error:p,errorUpdatedAt:v,failureCount:f.fetchFailureCount,failureReason:f.fetchFailureReason,errorUpdateCount:f.errorUpdateCount,isFetched:f.dataUpdateCount>0||f.errorUpdateCount>0,isFetchedAfterMount:f.dataUpdateCount>c.dataUpdateCount||f.errorUpdateCount>c.errorUpdateCount,isFetching:m,isRefetching:m&&!y,isLoadingError:x&&!w,isPaused:f.fetchStatus==="paused",isPlaceholderData:d,isRefetchError:x&&w,isStale:TM(t,n),refetch:this.refetch,promise:De(this,Th)};if(this.options.experimental_prefetchInRender){const $=k=>{E.status==="error"?k.reject(E.error):E.data!==void 0&&k.resolve(E.data)},P=()=>{const k=ln(this,Th,E.promise=PM());$(k)},M=De(this,Th);switch(M.status){case"pending":t.queryHash===r.queryHash&&$(M);break;case"fulfilled":(E.status==="error"||E.data!==M.value)&&P();break;case"rejected":(E.status!=="error"||E.error!==M.reason)&&P();break}}return E}updateResult(t){const n=De(this,cs),r=this.createResult(De(this,wr),this.options);if(ln(this,Nv,De(this,wr).state),ln(this,ry,this.options),De(this,Nv).data!==void 0&&ln(this,ay,De(this,wr)),ES(r,n))return;ln(this,cs,r);const i={},a=()=>{if(!n)return!0;const{notifyOnChangeProps:o}=this.options,s=typeof o=="function"?o():o;if(s==="all"||!s&&!De(this,oy).size)return!0;const l=new Set(s!=null?s:De(this,oy));return this.options.throwOnError&&l.add("error"),Object.keys(De(this,cs)).some(c=>{const u=c;return De(this,cs)[u]!==n[u]&&l.has(u)})};(t==null?void 0:t.listeners)!==!1&&a()&&(i.listeners=!0),ur(this,qr,Txe).call(this,Ke(Ke({},i),t))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&ur(this,qr,nB).call(this)}},ks=new WeakMap,wr=new WeakMap,Z2=new WeakMap,cs=new WeakMap,Nv=new WeakMap,ry=new WeakMap,Th=new WeakMap,Fu=new WeakMap,Q2=new WeakMap,iy=new WeakMap,ay=new WeakMap,Lv=new WeakMap,jv=new WeakMap,Rh=new WeakMap,oy=new WeakMap,qr=new WeakSet,yS=function(t){ur(this,qr,aB).call(this);let n=De(this,wr).fetch(this.options,t);return t!=null&&t.throwOnError||(n=n.catch(ul)),n},JF=function(){ur(this,qr,rB).call(this);const t=Zv(this.options.staleTime,De(this,wr));if(qh||De(this,cs).isStale||!wM(t))return;const r=bB(De(this,cs).dataUpdatedAt,t)+1;ln(this,Lv,setTimeout(()=>{De(this,cs).isStale||this.updateResult()},r))},eB=function(){var t;return(t=typeof this.options.refetchInterval=="function"?this.options.refetchInterval(De(this,wr)):this.options.refetchInterval)!=null?t:!1},tB=function(t){ur(this,qr,iB).call(this),ln(this,Rh,t),!(qh||sc(this.options.enabled,De(this,wr))===!1||!wM(De(this,Rh))||De(this,Rh)===0)&&ln(this,jv,setInterval(()=>{(this.options.refetchIntervalInBackground||$M.isFocused())&&ur(this,qr,yS).call(this)},De(this,Rh)))},nB=function(){ur(this,qr,JF).call(this),ur(this,qr,tB).call(this,ur(this,qr,eB).call(this))},rB=function(){De(this,Lv)&&(clearTimeout(De(this,Lv)),ln(this,Lv,void 0))},iB=function(){De(this,jv)&&(clearInterval(De(this,jv)),ln(this,jv,void 0))},aB=function(){const t=De(this,ks).getQueryCache().build(De(this,ks),this.options);if(t===De(this,wr))return;const n=De(this,wr);ln(this,wr,t),ln(this,Z2,t.state),this.hasListeners()&&(n==null||n.removeObserver(this),t.addObserver(this))},Txe=function(t){Aa.batch(()=>{t.listeners&&this.listeners.forEach(n=>{n(De(this,cs))}),De(this,ks).getQueryCache().notify({query:De(this,wr),type:"observerResultsUpdated"})})},b1e);function w2e(e,t){return sc(t.enabled,e)!==!1&&e.state.data===void 0&&!(e.state.status==="error"&&t.retryOnMount===!1)}function AB(e,t){return w2e(e,t)||e.state.data!==void 0&&kM(e,t,t.refetchOnMount)}function kM(e,t,n){if(sc(t.enabled,e)!==!1){const r=typeof n=="function"?n(e):n;return r==="always"||r!==!1&&TM(e,t)}return!1}function NB(e,t,n,r){return(e!==t||sc(r.enabled,e)===!1)&&(!n.suspense||e.state.status!=="error")&&TM(e,n)}function TM(e,t){return sc(t.enabled,e)!==!1&&e.isStaleByTime(Zv(t.staleTime,e))}function C2e(e,t){return!ES(e.getCurrentResult(),t)}var E2e=(x1e=class extends Xv{constructor(n,r){super();Nn(this,Hf);Nn(this,Ih);Nn(this,Ah);Nn(this,Ts);Nn(this,zf);ln(this,Ih,n),this.setOptions(r),this.bindMethods(),ur(this,Hf,vM).call(this)}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(n){var i;const r=this.options;this.options=De(this,Ih).defaultMutationOptions(n),ES(this.options,r)||De(this,Ih).getMutationCache().notify({type:"observerOptionsUpdated",mutation:De(this,Ts),observer:this}),r!=null&&r.mutationKey&&this.options.mutationKey&&Uh(r.mutationKey)!==Uh(this.options.mutationKey)?this.reset():((i=De(this,Ts))==null?void 0:i.state.status)==="pending"&&De(this,Ts).setOptions(this.options)}onUnsubscribe(){var n;this.hasListeners()||(n=De(this,Ts))==null||n.removeObserver(this)}onMutationUpdate(n){ur(this,Hf,vM).call(this),ur(this,Hf,oB).call(this,n)}getCurrentResult(){return De(this,Ah)}reset(){var n;(n=De(this,Ts))==null||n.removeObserver(this),ln(this,Ts,void 0),ur(this,Hf,vM).call(this),ur(this,Hf,oB).call(this)}mutate(n,r){var i;return ln(this,zf,r),(i=De(this,Ts))==null||i.removeObserver(this),ln(this,Ts,De(this,Ih).getMutationCache().build(De(this,Ih),this.options)),De(this,Ts).addObserver(this),De(this,Ts).execute(n)}},Ih=new WeakMap,Ah=new WeakMap,Ts=new WeakMap,zf=new WeakMap,Hf=new WeakSet,vM=function(){var r,i;const n=(i=(r=De(this,Ts))==null?void 0:r.state)!=null?i:TB();ln(this,Ah,Rn(Ke({},n),{isPending:n.status==="pending",isSuccess:n.status==="success",isError:n.status==="error",isIdle:n.status==="idle",mutate:this.mutate,reset:this.reset}))},oB=function(n){Aa.batch(()=>{var r,i,a,o,s,l,c,u;if(De(this,zf)&&this.hasListeners()){const f=De(this,Ah).variables,d=De(this,Ah).context;(n==null?void 0:n.type)==="success"?((i=(r=De(this,zf)).onSuccess)==null||i.call(r,n.data,f,d),(o=(a=De(this,zf)).onSettled)==null||o.call(a,n.data,null,f,d)):(n==null?void 0:n.type)==="error"&&((l=(s=De(this,zf)).onError)==null||l.call(s,n.error,f,d),(u=(c=De(this,zf)).onSettled)==null||u.call(c,void 0,n.error,f,d))}this.listeners.forEach(f=>{f(De(this,Ah))})})},x1e),LB=b.createContext(void 0),$S=e=>{const t=b.useContext(LB);if(!t)throw new Error("No QueryClient set, use QueryClientProvider to set one");return t},O2e=({client:e,children:t})=>(b.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),ve.jsx(LB.Provider,{value:e,children:t})),jB=b.createContext(!1),_2e=()=>b.useContext(jB);jB.Provider;function $2e(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}var P2e=b.createContext($2e()),M2e=()=>b.useContext(P2e);function DB(e,t){return typeof e=="function"?e(...t):!!e}function RM(){}var k2e=(e,t)=>{(e.suspense||e.throwOnError||e.experimental_prefetchInRender)&&(t.isReset()||(e.retryOnMount=!1))},T2e=e=>{b.useEffect(()=>{e.clearReset()},[e])},R2e=({result:e,errorResetBoundary:t,throwOnError:n,query:r})=>e.isError&&!t.isReset()&&!e.isFetching&&r&&DB(n,[e.error,r]),I2e=e=>{e.suspense&&(e.staleTime===void 0&&(e.staleTime=1e3),typeof e.gcTime=="number"&&(e.gcTime=Math.max(e.gcTime,1e3)))},A2e=(e,t)=>e.isLoading&&e.isFetching&&!t,N2e=(e,t)=>(e==null?void 0:e.suspense)&&t.isPending,FB=(e,t,n)=>t.fetchOptimistic(e).catch(()=>{n.clearReset()});function L2e(e,t,n){var u,f,d,h,p;const r=$S(),i=_2e(),a=M2e(),o=r.defaultQueryOptions(e);(f=(u=r.getDefaultOptions().queries)==null?void 0:u._experimental_beforeQuery)==null||f.call(u,o),o._optimisticResults=i?"isRestoring":"optimistic",I2e(o),k2e(o,a),T2e(a);const s=!r.getQueryCache().get(o.queryHash),[l]=b.useState(()=>new t(r,o)),c=l.getOptimisticResult(o);if(b.useSyncExternalStore(b.useCallback(v=>{const g=i?RM:l.subscribe(Aa.batchCalls(v));return l.updateResult(),g},[l,i]),()=>l.getCurrentResult(),()=>l.getCurrentResult()),b.useEffect(()=>{l.setOptions(o,{listeners:!1})},[o,l]),N2e(o,c))throw FB(o,l,a);if(R2e({result:c,errorResetBoundary:a,throwOnError:o.throwOnError,query:r.getQueryCache().get(o.queryHash)}))throw c.error;if((h=(d=r.getDefaultOptions().queries)==null?void 0:d._experimental_afterQuery)==null||h.call(d,o,c),o.experimental_prefetchInRender&&!qh&&A2e(c,i)){const v=s?FB(o,l,a):(p=r.getQueryCache().get(o.queryHash))==null?void 0:p.promise;v==null||v.catch(RM).finally(()=>{l.updateResult()})}return o.notifyOnChangeProps?c:l.trackResult(c)}function Kc(e,t){return L2e(e,S2e)}function Oo(e,t){const n=$S(),[r]=b.useState(()=>new E2e(n,e));b.useEffect(()=>{r.setOptions(e)},[r,e]);const i=b.useSyncExternalStore(b.useCallback(o=>r.subscribe(Aa.batchCalls(o)),[r]),()=>r.getCurrentResult(),()=>r.getCurrentResult()),a=b.useCallback((o,s)=>{r.mutate(o,s).catch(RM)},[r]);if(i.error&&DB(r.options.throwOnError,[i.error]))throw i.error;return Rn(Ke({},i),{mutate:a,mutateAsync:i.mutate})}var BB={items_per_page:"/ page",jump_to:"Go to",jump_to_confirm:"confirm",page:"Page",prev_page:"Previous Page",next_page:"Next Page",prev_5:"Previous 5 Pages",next_5:"Next 5 Pages",prev_3:"Previous 3 Pages",next_3:"Next 3 Pages",page_size:"Page Size"};function Bt(e){"@babel/helpers - typeof";return Bt=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Bt(e)}function j2e(e,t){if(Bt(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(Bt(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function zB(e){var t=j2e(e,"string");return Bt(t)=="symbol"?t:t+""}function Z(e,t,n){return(t=zB(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function HB(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function ae(e){for(var t=1;ttypeof e=="string",Ey=()=>{let e,t;const n=new Promise((r,i)=>{e=r,t=i});return n.resolve=e,n.reject=t,n},VB=e=>e==null?"":""+e,B2e=(e,t,n)=>{e.forEach(r=>{t[r]&&(n[r]=t[r])})},z2e=/###/g,qB=e=>e&&e.indexOf("###")>-1?e.replace(z2e,"."):e,UB=e=>!e||qn(e),Oy=(e,t,n)=>{const r=qn(t)?t.split("."):t;let i=0;for(;i{const{obj:r,k:i}=Oy(e,t,Object);if(r!==void 0||t.length===1){r[i]=n;return}let a=t[t.length-1],o=t.slice(0,t.length-1),s=Oy(e,o,Object);for(;s.obj===void 0&&o.length;)a=`${o[o.length-1]}.${a}`,o=o.slice(0,o.length-1),s=Oy(e,o,Object),s&&s.obj&&typeof s.obj[`${s.k}.${a}`]!="undefined"&&(s.obj=void 0);s.obj[`${s.k}.${a}`]=n},H2e=(e,t,n,r)=>{const{obj:i,k:a}=Oy(e,t,Object);i[a]=i[a]||[],i[a].push(n)},MS=(e,t)=>{const{obj:n,k:r}=Oy(e,t);if(n)return n[r]},W2e=(e,t,n)=>{const r=MS(e,n);return r!==void 0?r:MS(t,n)},KB=(e,t,n)=>{for(const r in t)r!=="__proto__"&&r!=="constructor"&&(r in e?qn(e[r])||e[r]instanceof String||qn(t[r])||t[r]instanceof String?n&&(e[r]=t[r]):KB(e[r],t[r],n):e[r]=t[r]);return e},Qv=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");var V2e={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};const q2e=e=>qn(e)?e.replace(/[&<>"'\/]/g,t=>V2e[t]):e;class U2e{constructor(t){this.capacity=t,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(t){const n=this.regExpMap.get(t);if(n!==void 0)return n;const r=new RegExp(t);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(t,r),this.regExpQueue.push(t),r}}const G2e=[" ",",","?","!",";"],K2e=new U2e(20),Y2e=(e,t,n)=>{t=t||"",n=n||"";const r=G2e.filter(o=>t.indexOf(o)<0&&n.indexOf(o)<0);if(r.length===0)return!0;const i=K2e.getRegExp(`(${r.map(o=>o==="?"?"\\?":o).join("|")})`);let a=!i.test(e);if(!a){const o=e.indexOf(n);o>0&&!i.test(e.substring(0,o))&&(a=!0)}return a},IM=function(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:".";if(!e)return;if(e[t])return e[t];const r=t.split(n);let i=e;for(let a=0;a-1&&le&&e.replace("_","-"),X2e={type:"logger",log(e){this.output("log",e)},warn(e){this.output("warn",e)},error(e){this.output("error",e)},output(e,t){console&&console[e]&&console[e].apply(console,t)}};class TS{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.init(t,n)}init(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.prefix=n.prefix||"i18next:",this.logger=t||X2e,this.options=n,this.debug=n.debug}log(){for(var t=arguments.length,n=new Array(t),r=0;r{this.observers[r]||(this.observers[r]=new Map);const i=this.observers[r].get(n)||0;this.observers[r].set(n,i+1)}),this}off(t,n){if(this.observers[t]){if(!n){delete this.observers[t];return}this.observers[t].delete(n)}}emit(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),i=1;i{let[s,l]=o;for(let c=0;c{let[s,l]=o;for(let c=0;c1&&arguments[1]!==void 0?arguments[1]:{ns:["translation"],defaultNS:"translation"};super(),this.data=t||{},this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(t){this.options.ns.indexOf(t)<0&&this.options.ns.push(t)}removeNamespaces(t){const n=this.options.ns.indexOf(t);n>-1&&this.options.ns.splice(n,1)}getResource(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};const a=i.keySeparator!==void 0?i.keySeparator:this.options.keySeparator,o=i.ignoreJSONStructure!==void 0?i.ignoreJSONStructure:this.options.ignoreJSONStructure;let s;t.indexOf(".")>-1?s=t.split("."):(s=[t,n],r&&(Array.isArray(r)?s.push(...r):qn(r)&&a?s.push(...r.split(a)):s.push(r)));const l=MS(this.data,s);return!l&&!n&&!r&&t.indexOf(".")>-1&&(t=s[0],n=s[1],r=s.slice(2).join(".")),l||!o||!qn(r)?l:IM(this.data&&this.data[t]&&this.data[t][n],r,a)}addResource(t,n,r,i){let a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{silent:!1};const o=a.keySeparator!==void 0?a.keySeparator:this.options.keySeparator;let s=[t,n];r&&(s=s.concat(o?r.split(o):r)),t.indexOf(".")>-1&&(s=t.split("."),i=n,n=s[1]),this.addNamespaces(n),GB(this.data,s,i),a.silent||this.emit("added",t,n,r,i)}addResources(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{silent:!1};for(const a in r)(qn(r[a])||Array.isArray(r[a]))&&this.addResource(t,n,a,r[a],{silent:!0});i.silent||this.emit("added",t,n,r)}addResourceBundle(t,n,r,i,a){let o=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{silent:!1,skipCopy:!1},s=[t,n];t.indexOf(".")>-1&&(s=t.split("."),i=r,r=n,n=s[1]),this.addNamespaces(n);let l=MS(this.data,s)||{};o.skipCopy||(r=JSON.parse(JSON.stringify(r))),i?KB(l,r,a):l=Ke(Ke({},l),r),GB(this.data,s,l),o.silent||this.emit("added",t,n,r)}removeResourceBundle(t,n){this.hasResourceBundle(t,n)&&delete this.data[t][n],this.removeNamespaces(n),this.emit("removed",t,n)}hasResourceBundle(t,n){return this.getResource(t,n)!==void 0}getResourceBundle(t,n){return n||(n=this.options.defaultNS),this.options.compatibilityAPI==="v1"?Ke({},this.getResource(t,n)):this.getResource(t,n)}getDataByLanguage(t){return this.data[t]}hasLanguageSomeTranslations(t){const n=this.getDataByLanguage(t);return!!(n&&Object.keys(n)||[]).find(i=>n[i]&&Object.keys(n[i]).length>0)}toJSON(){return this.data}}var XB={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,n,r,i){return e.forEach(a=>{this.processors[a]&&(t=this.processors[a].process(t,n,r,i))}),t}};const ZB={};class IS extends RS{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(),B2e(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],t,this),this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=Yc.create("translator")}changeLanguage(t){t&&(this.language=t)}exists(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}};if(t==null)return!1;const r=this.resolve(t,n);return r&&r.res!==void 0}extractFromKey(t,n){let r=n.nsSeparator!==void 0?n.nsSeparator:this.options.nsSeparator;r===void 0&&(r=":");const i=n.keySeparator!==void 0?n.keySeparator:this.options.keySeparator;let a=n.ns||this.options.defaultNS||[];const o=r&&t.indexOf(r)>-1,s=!this.options.userDefinedKeySeparator&&!n.keySeparator&&!this.options.userDefinedNsSeparator&&!n.nsSeparator&&!Y2e(t,r,i);if(o&&!s){const l=t.match(this.interpolator.nestingRegexp);if(l&&l.length>0)return{key:t,namespaces:qn(a)?[a]:a};const c=t.split(r);(r!==i||r===i&&this.options.ns.indexOf(c[0])>-1)&&(a=c.shift()),t=c.join(i)}return{key:t,namespaces:qn(a)?[a]:a}}translate(t,n,r){if(typeof n!="object"&&this.options.overloadTranslationOptionHandler&&(n=this.options.overloadTranslationOptionHandler(arguments)),typeof n=="object"&&(n=Ke({},n)),n||(n={}),t==null)return"";Array.isArray(t)||(t=[String(t)]);const i=n.returnDetails!==void 0?n.returnDetails:this.options.returnDetails,a=n.keySeparator!==void 0?n.keySeparator:this.options.keySeparator,{key:o,namespaces:s}=this.extractFromKey(t[t.length-1],n),l=s[s.length-1],c=n.lng||this.language,u=n.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(c&&c.toLowerCase()==="cimode"){if(u){const S=n.nsSeparator||this.options.nsSeparator;return i?{res:`${l}${S}${o}`,usedKey:o,exactUsedKey:o,usedLng:c,usedNS:l,usedParams:this.getUsedParamsDetails(n)}:`${l}${S}${o}`}return i?{res:o,usedKey:o,exactUsedKey:o,usedLng:c,usedNS:l,usedParams:this.getUsedParamsDetails(n)}:o}const f=this.resolve(t,n);let d=f&&f.res;const h=f&&f.usedKey||o,p=f&&f.exactUsedKey||o,v=Object.prototype.toString.apply(d),g=["[object Number]","[object Function]","[object RegExp]"],m=n.joinArrays!==void 0?n.joinArrays:this.options.joinArrays,y=!this.i18nFormat||this.i18nFormat.handleAsObject,x=!qn(d)&&typeof d!="boolean"&&typeof d!="number";if(y&&d&&x&&g.indexOf(v)<0&&!(qn(m)&&Array.isArray(d))){if(!n.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const S=this.options.returnedObjectHandler?this.options.returnedObjectHandler(h,d,Rn(Ke({},n),{ns:s})):`key '${o} (${this.language})' returned an object instead of string.`;return i?(f.res=S,f.usedParams=this.getUsedParamsDetails(n),f):S}if(a){const S=Array.isArray(d),w=S?[]:{},C=S?p:h;for(const E in d)if(Object.prototype.hasOwnProperty.call(d,E)){const O=`${C}${a}${E}`;w[E]=this.translate(O,Rn(Ke({},n),{joinArrays:!1,ns:s})),w[E]===O&&(w[E]=d[E])}d=w}}else if(y&&qn(m)&&Array.isArray(d))d=d.join(m),d&&(d=this.extendTranslation(d,t,n,r));else{let S=!1,w=!1;const C=n.count!==void 0&&!qn(n.count),E=IS.hasDefaultValue(n),O=C?this.pluralResolver.getSuffix(c,n.count,n):"",$=n.ordinal&&C?this.pluralResolver.getSuffix(c,n.count,{ordinal:!1}):"",P=C&&!n.ordinal&&n.count===0&&this.pluralResolver.shouldUseIntlApi(),M=P&&n[`defaultValue${this.options.pluralSeparator}zero`]||n[`defaultValue${O}`]||n[`defaultValue${$}`]||n.defaultValue;!this.isValidLookup(d)&&E&&(S=!0,d=M),this.isValidLookup(d)||(w=!0,d=o);const T=(n.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&w?void 0:d,R=E&&M!==d&&this.options.updateMissing;if(w||S||R){if(this.logger.log(R?"updateKey":"missingKey",c,l,o,R?M:d),a){const j=this.resolve(o,Rn(Ke({},n),{keySeparator:!1}));j&&j.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let A=[];const N=this.languageUtils.getFallbackCodes(this.options.fallbackLng,n.lng||this.language);if(this.options.saveMissingTo==="fallback"&&N&&N[0])for(let j=0;j{const D=E&&B!==d?B:T;this.options.missingKeyHandler?this.options.missingKeyHandler(j,l,F,D,R,n):this.backendConnector&&this.backendConnector.saveMissing&&this.backendConnector.saveMissing(j,l,F,D,R,n),this.emit("missingKey",j,l,F,d)};this.options.saveMissing&&(this.options.saveMissingPlurals&&C?A.forEach(j=>{const F=this.pluralResolver.getSuffixes(j,n);P&&n[`defaultValue${this.options.pluralSeparator}zero`]&&F.indexOf(`${this.options.pluralSeparator}zero`)<0&&F.push(`${this.options.pluralSeparator}zero`),F.forEach(B=>{L([j],o+B,n[`defaultValue${B}`]||M)})}):L(A,o,M))}d=this.extendTranslation(d,t,n,f,r),w&&d===o&&this.options.appendNamespaceToMissingKey&&(d=`${l}:${o}`),(w||S)&&this.options.parseMissingKeyHandler&&(this.options.compatibilityAPI!=="v1"?d=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${l}:${o}`:o,S?d:void 0):d=this.options.parseMissingKeyHandler(d))}return i?(f.res=d,f.usedParams=this.getUsedParamsDetails(n),f):d}extendTranslation(t,n,r,i,a){var o=this;if(this.i18nFormat&&this.i18nFormat.parse)t=this.i18nFormat.parse(t,Ke(Ke({},this.options.interpolation.defaultVariables),r),r.lng||this.language||i.usedLng,i.usedNS,i.usedKey,{resolved:i});else if(!r.skipInterpolation){r.interpolation&&this.interpolator.init(Rn(Ke({},r),{interpolation:Ke(Ke({},this.options.interpolation),r.interpolation)}));const c=qn(t)&&(r&&r.interpolation&&r.interpolation.skipOnVariables!==void 0?r.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let u;if(c){const d=t.match(this.interpolator.nestingRegexp);u=d&&d.length}let f=r.replace&&!qn(r.replace)?r.replace:r;if(this.options.interpolation.defaultVariables&&(f=Ke(Ke({},this.options.interpolation.defaultVariables),f)),t=this.interpolator.interpolate(t,f,r.lng||this.language||i.usedLng,r),c){const d=t.match(this.interpolator.nestingRegexp),h=d&&d.length;u1&&arguments[1]!==void 0?arguments[1]:{},r,i,a,o,s;return qn(t)&&(t=[t]),t.forEach(l=>{if(this.isValidLookup(r))return;const c=this.extractFromKey(l,n),u=c.key;i=u;let f=c.namespaces;this.options.fallbackNS&&(f=f.concat(this.options.fallbackNS));const d=n.count!==void 0&&!qn(n.count),h=d&&!n.ordinal&&n.count===0&&this.pluralResolver.shouldUseIntlApi(),p=n.context!==void 0&&(qn(n.context)||typeof n.context=="number")&&n.context!=="",v=n.lngs?n.lngs:this.languageUtils.toResolveHierarchy(n.lng||this.language,n.fallbackLng);f.forEach(g=>{this.isValidLookup(r)||(s=g,!ZB[`${v[0]}-${g}`]&&this.utils&&this.utils.hasLoadedNamespace&&!this.utils.hasLoadedNamespace(s)&&(ZB[`${v[0]}-${g}`]=!0,this.logger.warn(`key "${i}" for languages "${v.join(", ")}" won't get resolved as namespace "${s}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),v.forEach(m=>{if(this.isValidLookup(r))return;o=m;const y=[u];if(this.i18nFormat&&this.i18nFormat.addLookupKeys)this.i18nFormat.addLookupKeys(y,u,m,g,n);else{let S;d&&(S=this.pluralResolver.getSuffix(m,n.count,n));const w=`${this.options.pluralSeparator}zero`,C=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(d&&(y.push(u+S),n.ordinal&&S.indexOf(C)===0&&y.push(u+S.replace(C,this.options.pluralSeparator)),h&&y.push(u+w)),p){const E=`${u}${this.options.contextSeparator}${n.context}`;y.push(E),d&&(y.push(E+S),n.ordinal&&S.indexOf(C)===0&&y.push(E+S.replace(C,this.options.pluralSeparator)),h&&y.push(E+w))}}let x;for(;x=y.pop();)this.isValidLookup(r)||(a=x,r=this.getResource(m,g,x,n))}))})}),{res:r,usedKey:i,exactUsedKey:a,usedLng:o,usedNS:s}}isValidLookup(t){return t!==void 0&&!(!this.options.returnNull&&t===null)&&!(!this.options.returnEmptyString&&t==="")}getResource(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return this.i18nFormat&&this.i18nFormat.getResource?this.i18nFormat.getResource(t,n,r,i):this.resourceStore.getResource(t,n,r,i)}getUsedParamsDetails(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const n=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],r=t.replace&&!qn(t.replace);let i=r?t.replace:t;if(r&&typeof t.count!="undefined"&&(i.count=t.count),this.options.interpolation.defaultVariables&&(i=Ke(Ke({},this.options.interpolation.defaultVariables),i)),!r){i=Ke({},i);for(const a of n)delete i[a]}return i}static hasDefaultValue(t){const n="defaultValue";for(const r in t)if(Object.prototype.hasOwnProperty.call(t,r)&&n===r.substring(0,n.length)&&t[r]!==void 0)return!0;return!1}}const AM=e=>e.charAt(0).toUpperCase()+e.slice(1);class QB{constructor(t){this.options=t,this.supportedLngs=this.options.supportedLngs||!1,this.logger=Yc.create("languageUtils")}getScriptPartFromCode(t){if(t=kS(t),!t||t.indexOf("-")<0)return null;const n=t.split("-");return n.length===2||(n.pop(),n[n.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(n.join("-"))}getLanguagePartFromCode(t){if(t=kS(t),!t||t.indexOf("-")<0)return t;const n=t.split("-");return this.formatLanguageCode(n[0])}formatLanguageCode(t){if(qn(t)&&t.indexOf("-")>-1){if(typeof Intl!="undefined"&&typeof Intl.getCanonicalLocales!="undefined")try{let i=Intl.getCanonicalLocales(t)[0];if(i&&this.options.lowerCaseLng&&(i=i.toLowerCase()),i)return i}catch(i){}const n=["hans","hant","latn","cyrl","cans","mong","arab"];let r=t.split("-");return this.options.lowerCaseLng?r=r.map(i=>i.toLowerCase()):r.length===2?(r[0]=r[0].toLowerCase(),r[1]=r[1].toUpperCase(),n.indexOf(r[1].toLowerCase())>-1&&(r[1]=AM(r[1].toLowerCase()))):r.length===3&&(r[0]=r[0].toLowerCase(),r[1].length===2&&(r[1]=r[1].toUpperCase()),r[0]!=="sgn"&&r[2].length===2&&(r[2]=r[2].toUpperCase()),n.indexOf(r[1].toLowerCase())>-1&&(r[1]=AM(r[1].toLowerCase())),n.indexOf(r[2].toLowerCase())>-1&&(r[2]=AM(r[2].toLowerCase()))),r.join("-")}return this.options.cleanCode||this.options.lowerCaseLng?t.toLowerCase():t}isSupportedCode(t){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(t=this.getLanguagePartFromCode(t)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(t)>-1}getBestMatchFromCodes(t){if(!t)return null;let n;return t.forEach(r=>{if(n)return;const i=this.formatLanguageCode(r);(!this.options.supportedLngs||this.isSupportedCode(i))&&(n=i)}),!n&&this.options.supportedLngs&&t.forEach(r=>{if(n)return;const i=this.getLanguagePartFromCode(r);if(this.isSupportedCode(i))return n=i;n=this.options.supportedLngs.find(a=>{if(a===i)return a;if(!(a.indexOf("-")<0&&i.indexOf("-")<0)&&(a.indexOf("-")>0&&i.indexOf("-")<0&&a.substring(0,a.indexOf("-"))===i||a.indexOf(i)===0&&i.length>1))return a})}),n||(n=this.getFallbackCodes(this.options.fallbackLng)[0]),n}getFallbackCodes(t,n){if(!t)return[];if(typeof t=="function"&&(t=t(n)),qn(t)&&(t=[t]),Array.isArray(t))return t;if(!n)return t.default||[];let r=t[n];return r||(r=t[this.getScriptPartFromCode(n)]),r||(r=t[this.formatLanguageCode(n)]),r||(r=t[this.getLanguagePartFromCode(n)]),r||(r=t.default),r||[]}toResolveHierarchy(t,n){const r=this.getFallbackCodes(n||this.options.fallbackLng||[],t),i=[],a=o=>{o&&(this.isSupportedCode(o)?i.push(o):this.logger.warn(`rejecting language code not found in supportedLngs: ${o}`))};return qn(t)&&(t.indexOf("-")>-1||t.indexOf("_")>-1)?(this.options.load!=="languageOnly"&&a(this.formatLanguageCode(t)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&a(this.getScriptPartFromCode(t)),this.options.load!=="currentOnly"&&a(this.getLanguagePartFromCode(t))):qn(t)&&a(this.formatLanguageCode(t)),r.forEach(o=>{i.indexOf(o)<0&&a(this.formatLanguageCode(o))}),i}}let Z2e=[{lngs:["ach","ak","am","arn","br","fil","gun","ln","mfe","mg","mi","oc","pt","pt-BR","tg","tl","ti","tr","uz","wa"],nr:[1,2],fc:1},{lngs:["af","an","ast","az","bg","bn","ca","da","de","dev","el","en","eo","es","et","eu","fi","fo","fur","fy","gl","gu","ha","hi","hu","hy","ia","it","kk","kn","ku","lb","mai","ml","mn","mr","nah","nap","nb","ne","nl","nn","no","nso","pa","pap","pms","ps","pt-PT","rm","sco","se","si","so","son","sq","sv","sw","ta","te","tk","ur","yo"],nr:[1,2],fc:2},{lngs:["ay","bo","cgg","fa","ht","id","ja","jbo","ka","km","ko","ky","lo","ms","sah","su","th","tt","ug","vi","wo","zh"],nr:[1],fc:3},{lngs:["be","bs","cnr","dz","hr","ru","sr","uk"],nr:[1,2,5],fc:4},{lngs:["ar"],nr:[0,1,2,3,11,100],fc:5},{lngs:["cs","sk"],nr:[1,2,5],fc:6},{lngs:["csb","pl"],nr:[1,2,5],fc:7},{lngs:["cy"],nr:[1,2,3,8],fc:8},{lngs:["fr"],nr:[1,2],fc:9},{lngs:["ga"],nr:[1,2,3,7,11],fc:10},{lngs:["gd"],nr:[1,2,3,20],fc:11},{lngs:["is"],nr:[1,2],fc:12},{lngs:["jv"],nr:[0,1],fc:13},{lngs:["kw"],nr:[1,2,3,4],fc:14},{lngs:["lt"],nr:[1,2,10],fc:15},{lngs:["lv"],nr:[1,2,0],fc:16},{lngs:["mk"],nr:[1,2],fc:17},{lngs:["mnk"],nr:[0,1,2],fc:18},{lngs:["mt"],nr:[1,2,11,20],fc:19},{lngs:["or"],nr:[2,1],fc:2},{lngs:["ro"],nr:[1,2,20],fc:20},{lngs:["sl"],nr:[5,1,2,3],fc:21},{lngs:["he","iw"],nr:[1,2,20,21],fc:22}],Q2e={1:e=>+(e>1),2:e=>+(e!=1),3:e=>0,4:e=>e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2,5:e=>e==0?0:e==1?1:e==2?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5,6:e=>e==1?0:e>=2&&e<=4?1:2,7:e=>e==1?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2,8:e=>e==1?0:e==2?1:e!=8&&e!=11?2:3,9:e=>+(e>=2),10:e=>e==1?0:e==2?1:e<7?2:e<11?3:4,11:e=>e==1||e==11?0:e==2||e==12?1:e>2&&e<20?2:3,12:e=>+(e%10!=1||e%100==11),13:e=>+(e!==0),14:e=>e==1?0:e==2?1:e==3?2:3,15:e=>e%10==1&&e%100!=11?0:e%10>=2&&(e%100<10||e%100>=20)?1:2,16:e=>e%10==1&&e%100!=11?0:e!==0?1:2,17:e=>e==1||e%10==1&&e%100!=11?0:1,18:e=>e==0?0:e==1?1:2,19:e=>e==1?0:e==0||e%100>1&&e%100<11?1:e%100>10&&e%100<20?2:3,20:e=>e==1?0:e==0||e%100>0&&e%100<20?1:2,21:e=>e%100==1?1:e%100==2?2:e%100==3||e%100==4?3:0,22:e=>e==1?0:e==2?1:(e<0||e>10)&&e%10==0?2:3};const J2e=["v1","v2","v3"],eSe=["v4"],JB={zero:0,one:1,two:2,few:3,many:4,other:5},tSe=()=>{const e={};return Z2e.forEach(t=>{t.lngs.forEach(n=>{e[n]={numbers:t.nr,plurals:Q2e[t.fc]}})}),e};class nSe{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.languageUtils=t,this.options=n,this.logger=Yc.create("pluralResolver"),(!this.options.compatibilityJSON||eSe.includes(this.options.compatibilityJSON))&&(typeof Intl=="undefined"||!Intl.PluralRules)&&(this.options.compatibilityJSON="v3",this.logger.error("Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.")),this.rules=tSe(),this.pluralRulesCache={}}addRule(t,n){this.rules[t]=n}clearCache(){this.pluralRulesCache={}}getRule(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(this.shouldUseIntlApi()){const r=kS(t==="dev"?"en":t),i=n.ordinal?"ordinal":"cardinal",a=JSON.stringify({cleanedCode:r,type:i});if(a in this.pluralRulesCache)return this.pluralRulesCache[a];let o;try{o=new Intl.PluralRules(r,{type:i})}catch(s){if(!t.match(/-|_/))return;const l=this.languageUtils.getLanguagePartFromCode(t);o=this.getRule(l,n)}return this.pluralRulesCache[a]=o,o}return this.rules[t]||this.rules[this.languageUtils.getLanguagePartFromCode(t)]}needsPlural(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const r=this.getRule(t,n);return this.shouldUseIntlApi()?r&&r.resolvedOptions().pluralCategories.length>1:r&&r.numbers.length>1}getPluralFormsOfKey(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return this.getSuffixes(t,r).map(i=>`${n}${i}`)}getSuffixes(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const r=this.getRule(t,n);return r?this.shouldUseIntlApi()?r.resolvedOptions().pluralCategories.sort((i,a)=>JB[i]-JB[a]).map(i=>`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:""}${i}`):r.numbers.map(i=>this.getSuffix(t,i,n)):[]}getSuffix(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const i=this.getRule(t,r);return i?this.shouldUseIntlApi()?`${this.options.prepend}${r.ordinal?`ordinal${this.options.prepend}`:""}${i.select(n)}`:this.getSuffixRetroCompatible(i,n):(this.logger.warn(`no plural rule found for: ${t}`),"")}getSuffixRetroCompatible(t,n){const r=t.noAbs?t.plurals(n):t.plurals(Math.abs(n));let i=t.numbers[r];this.options.simplifyPluralSuffix&&t.numbers.length===2&&t.numbers[0]===1&&(i===2?i="plural":i===1&&(i=""));const a=()=>this.options.prepend&&i.toString()?this.options.prepend+i.toString():i.toString();return this.options.compatibilityJSON==="v1"?i===1?"":typeof i=="number"?`_plural_${i.toString()}`:a():this.options.compatibilityJSON==="v2"||this.options.simplifyPluralSuffix&&t.numbers.length===2&&t.numbers[0]===1?a():this.options.prepend&&r.toString()?this.options.prepend+r.toString():r.toString()}shouldUseIntlApi(){return!J2e.includes(this.options.compatibilityJSON)}}const ez=function(e,t,n){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:".",i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=W2e(e,t,n);return!a&&i&&qn(n)&&(a=IM(e,n,r),a===void 0&&(a=IM(t,n,r))),a},NM=e=>e.replace(/\$/g,"$$$$");class rSe{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=Yc.create("interpolator"),this.options=t,this.format=t.interpolation&&t.interpolation.format||(n=>n),this.init(t)}init(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};t.interpolation||(t.interpolation={escapeValue:!0});const{escape:n,escapeValue:r,useRawValueToEscape:i,prefix:a,prefixEscaped:o,suffix:s,suffixEscaped:l,formatSeparator:c,unescapeSuffix:u,unescapePrefix:f,nestingPrefix:d,nestingPrefixEscaped:h,nestingSuffix:p,nestingSuffixEscaped:v,nestingOptionsSeparator:g,maxReplaces:m,alwaysFormat:y}=t.interpolation;this.escape=n!==void 0?n:q2e,this.escapeValue=r!==void 0?r:!0,this.useRawValueToEscape=i!==void 0?i:!1,this.prefix=a?Qv(a):o||"{{",this.suffix=s?Qv(s):l||"}}",this.formatSeparator=c||",",this.unescapePrefix=u?"":f||"-",this.unescapeSuffix=this.unescapePrefix?"":u||"",this.nestingPrefix=d?Qv(d):h||Qv("$t("),this.nestingSuffix=p?Qv(p):v||Qv(")"),this.nestingOptionsSeparator=g||",",this.maxReplaces=m||1e3,this.alwaysFormat=y!==void 0?y:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const t=(n,r)=>n&&n.source===r?(n.lastIndex=0,n):new RegExp(r,"g");this.regexp=t(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=t(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=t(this.nestingRegexp,`${this.nestingPrefix}(.+?)${this.nestingSuffix}`)}interpolate(t,n,r,i){let a,o,s;const l=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},c=h=>{if(h.indexOf(this.formatSeparator)<0){const m=ez(n,l,h,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(m,void 0,r,Rn(Ke(Ke({},i),n),{interpolationkey:h})):m}const p=h.split(this.formatSeparator),v=p.shift().trim(),g=p.join(this.formatSeparator).trim();return this.format(ez(n,l,v,this.options.keySeparator,this.options.ignoreJSONStructure),g,r,Rn(Ke(Ke({},i),n),{interpolationkey:v}))};this.resetRegExp();const u=i&&i.missingInterpolationHandler||this.options.missingInterpolationHandler,f=i&&i.interpolation&&i.interpolation.skipOnVariables!==void 0?i.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:h=>NM(h)},{regex:this.regexp,safeValue:h=>this.escapeValue?NM(this.escape(h)):NM(h)}].forEach(h=>{for(s=0;a=h.regex.exec(t);){const p=a[1].trim();if(o=c(p),o===void 0)if(typeof u=="function"){const g=u(t,a,i);o=qn(g)?g:""}else if(i&&Object.prototype.hasOwnProperty.call(i,p))o="";else if(f){o=a[0];continue}else this.logger.warn(`missed to pass in variable ${p} for interpolating ${t}`),o="";else!qn(o)&&!this.useRawValueToEscape&&(o=VB(o));const v=h.safeValue(o);if(t=t.replace(a[0],v),f?(h.regex.lastIndex+=o.length,h.regex.lastIndex-=a[0].length):h.regex.lastIndex=0,s++,s>=this.maxReplaces)break}}),t}nest(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i,a,o;const s=(l,c)=>{const u=this.nestingOptionsSeparator;if(l.indexOf(u)<0)return l;const f=l.split(new RegExp(`${u}[ ]*{`));let d=`{${f[1]}`;l=f[0],d=this.interpolate(d,o);const h=d.match(/'/g),p=d.match(/"/g);(h&&h.length%2===0&&!p||p.length%2!==0)&&(d=d.replace(/'/g,'"'));try{o=JSON.parse(d),c&&(o=Ke(Ke({},c),o))}catch(v){return this.logger.warn(`failed parsing options string in nesting for key ${l}`,v),`${l}${u}${d}`}return o.defaultValue&&o.defaultValue.indexOf(this.prefix)>-1&&delete o.defaultValue,l};for(;i=this.nestingRegexp.exec(t);){let l=[];o=Ke({},r),o=o.replace&&!qn(o.replace)?o.replace:o,o.applyPostProcessor=!1,delete o.defaultValue;let c=!1;if(i[0].indexOf(this.formatSeparator)!==-1&&!/{.*}/.test(i[1])){const u=i[1].split(this.formatSeparator).map(f=>f.trim());i[1]=u.shift(),l=u,c=!0}if(a=n(s.call(this,i[1].trim(),o),o),a&&i[0]===t&&!qn(a))return a;qn(a)||(a=VB(a)),a||(this.logger.warn(`missed to resolve ${i[1]} for nesting ${t}`),a=""),c&&(a=l.reduce((u,f)=>this.format(u,f,r.lng,Rn(Ke({},r),{interpolationkey:i[1].trim()})),a.trim())),t=t.replace(i[0],a),this.regexp.lastIndex=0}return t}}const iSe=e=>{let t=e.toLowerCase().trim();const n={};if(e.indexOf("(")>-1){const r=e.split("(");t=r[0].toLowerCase().trim();const i=r[1].substring(0,r[1].length-1);t==="currency"&&i.indexOf(":")<0?n.currency||(n.currency=i.trim()):t==="relativetime"&&i.indexOf(":")<0?n.range||(n.range=i.trim()):i.split(";").forEach(o=>{if(o){const[s,...l]=o.split(":"),c=l.join(":").trim().replace(/^'+|'+$/g,""),u=s.trim();n[u]||(n[u]=c),c==="false"&&(n[u]=!1),c==="true"&&(n[u]=!0),isNaN(c)||(n[u]=parseInt(c,10))}})}return{formatName:t,formatOptions:n}},Jv=e=>{const t={};return(n,r,i)=>{let a=i;i&&i.interpolationkey&&i.formatParams&&i.formatParams[i.interpolationkey]&&i[i.interpolationkey]&&(a=Rn(Ke({},a),{[i.interpolationkey]:void 0}));const o=r+JSON.stringify(a);let s=t[o];return s||(s=e(kS(r),i),t[o]=s),s(n)}};class aSe{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=Yc.create("formatter"),this.options=t,this.formats={number:Jv((n,r)=>{const i=new Intl.NumberFormat(n,Ke({},r));return a=>i.format(a)}),currency:Jv((n,r)=>{const i=new Intl.NumberFormat(n,Rn(Ke({},r),{style:"currency"}));return a=>i.format(a)}),datetime:Jv((n,r)=>{const i=new Intl.DateTimeFormat(n,Ke({},r));return a=>i.format(a)}),relativetime:Jv((n,r)=>{const i=new Intl.RelativeTimeFormat(n,Ke({},r));return a=>i.format(a,r.range||"day")}),list:Jv((n,r)=>{const i=new Intl.ListFormat(n,Ke({},r));return a=>i.format(a)})},this.init(t)}init(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}};this.formatSeparator=n.interpolation.formatSeparator||","}add(t,n){this.formats[t.toLowerCase().trim()]=n}addCached(t,n){this.formats[t.toLowerCase().trim()]=Jv(n)}format(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};const a=n.split(this.formatSeparator);if(a.length>1&&a[0].indexOf("(")>1&&a[0].indexOf(")")<0&&a.find(s=>s.indexOf(")")>-1)){const s=a.findIndex(l=>l.indexOf(")")>-1);a[0]=[a[0],...a.splice(1,s)].join(this.formatSeparator)}return a.reduce((s,l)=>{const{formatName:c,formatOptions:u}=iSe(l);if(this.formats[c]){let f=s;try{const d=i&&i.formatParams&&i.formatParams[i.interpolationkey]||{},h=d.locale||d.lng||i.locale||i.lng||r;f=this.formats[c](s,h,Ke(Ke(Ke({},u),i),d))}catch(d){this.logger.warn(d)}return f}else this.logger.warn(`there was no format function for ${c}`);return s},t)}}const oSe=(e,t)=>{e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)};let sSe=class extends RS{constructor(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};super(),this.backend=t,this.store=n,this.services=r,this.languageUtils=r.languageUtils,this.options=i,this.logger=Yc.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=i.maxParallelReads||10,this.readingCalls=0,this.maxRetries=i.maxRetries>=0?i.maxRetries:5,this.retryTimeout=i.retryTimeout>=1?i.retryTimeout:350,this.state={},this.queue=[],this.backend&&this.backend.init&&this.backend.init(r,i.backend,i)}queueLoad(t,n,r,i){const a={},o={},s={},l={};return t.forEach(c=>{let u=!0;n.forEach(f=>{const d=`${c}|${f}`;!r.reload&&this.store.hasResourceBundle(c,f)?this.state[d]=2:this.state[d]<0||(this.state[d]===1?o[d]===void 0&&(o[d]=!0):(this.state[d]=1,u=!1,o[d]===void 0&&(o[d]=!0),a[d]===void 0&&(a[d]=!0),l[f]===void 0&&(l[f]=!0)))}),u||(s[c]=!0)}),(Object.keys(a).length||Object.keys(o).length)&&this.queue.push({pending:o,pendingCount:Object.keys(o).length,loaded:{},errors:[],callback:i}),{toLoad:Object.keys(a),pending:Object.keys(o),toLoadLanguages:Object.keys(s),toLoadNamespaces:Object.keys(l)}}loaded(t,n,r){const i=t.split("|"),a=i[0],o=i[1];n&&this.emit("failedLoading",a,o,n),!n&&r&&this.store.addResourceBundle(a,o,r,void 0,void 0,{skipCopy:!0}),this.state[t]=n?-1:2,n&&r&&(this.state[t]=0);const s={};this.queue.forEach(l=>{H2e(l.loaded,[a],o),oSe(l,t),n&&l.errors.push(n),l.pendingCount===0&&!l.done&&(Object.keys(l.loaded).forEach(c=>{s[c]||(s[c]={});const u=l.loaded[c];u.length&&u.forEach(f=>{s[c][f]===void 0&&(s[c][f]=!0)})}),l.done=!0,l.errors.length?l.callback(l.errors):l.callback())}),this.emit("loaded",s),this.queue=this.queue.filter(l=>!l.done)}read(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:this.retryTimeout,o=arguments.length>5?arguments[5]:void 0;if(!t.length)return o(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:t,ns:n,fcName:r,tried:i,wait:a,callback:o});return}this.readingCalls++;const s=(c,u)=>{if(this.readingCalls--,this.waitingReads.length>0){const f=this.waitingReads.shift();this.read(f.lng,f.ns,f.fcName,f.tried,f.wait,f.callback)}if(c&&u&&i{this.read.call(this,t,n,r,i+1,a*2,o)},a);return}o(c,u)},l=this.backend[r].bind(this.backend);if(l.length===2){try{const c=l(t,n);c&&typeof c.then=="function"?c.then(u=>s(null,u)).catch(s):s(null,c)}catch(c){s(c)}return}return l(t,n,s)}prepareLoading(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=arguments.length>3?arguments[3]:void 0;if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),i&&i();qn(t)&&(t=this.languageUtils.toResolveHierarchy(t)),qn(n)&&(n=[n]);const a=this.queueLoad(t,n,r,i);if(!a.toLoad.length)return a.pending.length||i(),null;a.toLoad.forEach(o=>{this.loadOne(o)})}load(t,n,r){this.prepareLoading(t,n,{},r)}reload(t,n,r){this.prepareLoading(t,n,{reload:!0},r)}loadOne(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";const r=t.split("|"),i=r[0],a=r[1];this.read(i,a,"read",void 0,void 0,(o,s)=>{o&&this.logger.warn(`${n}loading namespace ${a} for language ${i} failed`,o),!o&&s&&this.logger.log(`${n}loaded namespace ${a} for language ${i}`,s),this.loaded(t,o,s)})}saveMissing(t,n,r,i,a){let o=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{},s=arguments.length>6&&arguments[6]!==void 0?arguments[6]:()=>{};if(this.services.utils&&this.services.utils.hasLoadedNamespace&&!this.services.utils.hasLoadedNamespace(n)){this.logger.warn(`did not save key "${r}" as the namespace "${n}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(r==null||r==="")){if(this.backend&&this.backend.create){const l=Rn(Ke({},o),{isUpdate:a}),c=this.backend.create.bind(this.backend);if(c.length<6)try{let u;c.length===5?u=c(t,n,r,i,l):u=c(t,n,r,i),u&&typeof u.then=="function"?u.then(f=>s(null,f)).catch(s):s(null,u)}catch(u){s(u)}else c(t,n,r,i,s,l)}!t||!t[0]||this.store.addResource(t[0],n,r,i)}}};const tz=()=>({debug:!1,initImmediate:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:e=>{let t={};if(typeof e[1]=="object"&&(t=e[1]),qn(e[1])&&(t.defaultValue=e[1]),qn(e[2])&&(t.tDescription=e[2]),typeof e[2]=="object"||typeof e[3]=="object"){const n=e[3]||e[2];Object.keys(n).forEach(r=>{t[r]=n[r]})}return t},interpolation:{escapeValue:!0,format:e=>e,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0}}),nz=e=>(qn(e.ns)&&(e.ns=[e.ns]),qn(e.fallbackLng)&&(e.fallbackLng=[e.fallbackLng]),qn(e.fallbackNS)&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs&&e.supportedLngs.indexOf("cimode")<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),e),AS=()=>{},lSe=e=>{Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(n=>{typeof e[n]=="function"&&(e[n]=e[n].bind(e))})};class _y extends RS{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;if(super(),this.options=nz(t),this.services={},this.logger=Yc,this.modules={external:[]},lSe(this),n&&!this.isInitialized&&!t.isClone){if(!this.options.initImmediate)return this.init(t,n),this;setTimeout(()=>{this.init(t,n)},0)}}init(){var t=this;let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=arguments.length>1?arguments[1]:void 0;this.isInitializing=!0,typeof n=="function"&&(r=n,n={}),!n.defaultNS&&n.defaultNS!==!1&&n.ns&&(qn(n.ns)?n.defaultNS=n.ns:n.ns.indexOf("translation")<0&&(n.defaultNS=n.ns[0]));const i=tz();this.options=Ke(Ke(Ke({},i),this.options),nz(n)),this.options.compatibilityAPI!=="v1"&&(this.options.interpolation=Ke(Ke({},i.interpolation),this.options.interpolation)),n.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=n.keySeparator),n.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=n.nsSeparator);const a=u=>u?typeof u=="function"?new u:u:null;if(!this.options.isClone){this.modules.logger?Yc.init(a(this.modules.logger),this.options):Yc.init(null,this.options);let u;this.modules.formatter?u=this.modules.formatter:typeof Intl!="undefined"&&(u=aSe);const f=new QB(this.options);this.store=new YB(this.options.resources,this.options);const d=this.services;d.logger=Yc,d.resourceStore=this.store,d.languageUtils=f,d.pluralResolver=new nSe(f,{prepend:this.options.pluralSeparator,compatibilityJSON:this.options.compatibilityJSON,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),u&&(!this.options.interpolation.format||this.options.interpolation.format===i.interpolation.format)&&(d.formatter=a(u),d.formatter.init(d,this.options),this.options.interpolation.format=d.formatter.format.bind(d.formatter)),d.interpolator=new rSe(this.options),d.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},d.backendConnector=new sSe(a(this.modules.backend),d.resourceStore,d,this.options),d.backendConnector.on("*",function(h){for(var p=arguments.length,v=new Array(p>1?p-1:0),g=1;g1?p-1:0),g=1;g{h.init&&h.init(this)})}if(this.format=this.options.interpolation.format,r||(r=AS),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const u=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);u.length>0&&u[0]!=="dev"&&(this.options.lng=u[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(u=>{this[u]=function(){return t.store[u](...arguments)}}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(u=>{this[u]=function(){return t.store[u](...arguments),t}});const l=Ey(),c=()=>{const u=(f,d)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),l.resolve(d),r(f,d)};if(this.languages&&this.options.compatibilityAPI!=="v1"&&!this.isInitialized)return u(null,this.t.bind(this));this.changeLanguage(this.options.lng,u)};return this.options.resources||!this.options.initImmediate?c():setTimeout(c,0),l}loadResources(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:AS;const i=qn(t)?t:this.language;if(typeof t=="function"&&(r=t),!this.options.resources||this.options.partialBundledLanguages){if(i&&i.toLowerCase()==="cimode"&&(!this.options.preload||this.options.preload.length===0))return r();const a=[],o=s=>{if(!s||s==="cimode")return;this.services.languageUtils.toResolveHierarchy(s).forEach(c=>{c!=="cimode"&&a.indexOf(c)<0&&a.push(c)})};i?o(i):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(l=>o(l)),this.options.preload&&this.options.preload.forEach(s=>o(s)),this.services.backendConnector.load(a,this.options.ns,s=>{!s&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),r(s)})}else r(null)}reloadResources(t,n,r){const i=Ey();return typeof t=="function"&&(r=t,t=void 0),typeof n=="function"&&(r=n,n=void 0),t||(t=this.languages),n||(n=this.options.ns),r||(r=AS),this.services.backendConnector.reload(t,n,a=>{i.resolve(),r(a)}),i}use(t){if(!t)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!t.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return t.type==="backend"&&(this.modules.backend=t),(t.type==="logger"||t.log&&t.warn&&t.error)&&(this.modules.logger=t),t.type==="languageDetector"&&(this.modules.languageDetector=t),t.type==="i18nFormat"&&(this.modules.i18nFormat=t),t.type==="postProcessor"&&XB.addPostProcessor(t),t.type==="formatter"&&(this.modules.formatter=t),t.type==="3rdParty"&&this.modules.external.push(t),this}setResolvedLanguage(t){if(!(!t||!this.languages)&&!(["cimode","dev"].indexOf(t)>-1))for(let n=0;n-1)&&this.store.hasLanguageSomeTranslations(r)){this.resolvedLanguage=r;break}}}changeLanguage(t,n){var r=this;this.isLanguageChangingTo=t;const i=Ey();this.emit("languageChanging",t);const a=l=>{this.language=l,this.languages=this.services.languageUtils.toResolveHierarchy(l),this.resolvedLanguage=void 0,this.setResolvedLanguage(l)},o=(l,c)=>{c?(a(c),this.translator.changeLanguage(c),this.isLanguageChangingTo=void 0,this.emit("languageChanged",c),this.logger.log("languageChanged",c)):this.isLanguageChangingTo=void 0,i.resolve(function(){return r.t(...arguments)}),n&&n(l,function(){return r.t(...arguments)})},s=l=>{!t&&!l&&this.services.languageDetector&&(l=[]);const c=qn(l)?l:this.services.languageUtils.getBestMatchFromCodes(l);c&&(this.language||a(c),this.translator.language||this.translator.changeLanguage(c),this.services.languageDetector&&this.services.languageDetector.cacheUserLanguage&&this.services.languageDetector.cacheUserLanguage(c)),this.loadResources(c,u=>{o(u,c)})};return!t&&this.services.languageDetector&&!this.services.languageDetector.async?s(this.services.languageDetector.detect()):!t&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(s):this.services.languageDetector.detect(s):s(t),i}getFixedT(t,n,r){var i=this;const a=function(o,s){let l;if(typeof s!="object"){for(var c=arguments.length,u=new Array(c>2?c-2:0),f=2;f`${l.keyPrefix}${d}${p}`):h=l.keyPrefix?`${l.keyPrefix}${d}${o}`:o,i.t(h,l)};return qn(t)?a.lng=t:a.lngs=t,a.ns=n,a.keyPrefix=r,a}t(){return this.translator&&this.translator.translate(...arguments)}exists(){return this.translator&&this.translator.exists(...arguments)}setDefaultNamespace(t){this.options.defaultNS=t}hasLoadedNamespace(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const r=n.lng||this.resolvedLanguage||this.languages[0],i=this.options?this.options.fallbackLng:!1,a=this.languages[this.languages.length-1];if(r.toLowerCase()==="cimode")return!0;const o=(s,l)=>{const c=this.services.backendConnector.state[`${s}|${l}`];return c===-1||c===0||c===2};if(n.precheck){const s=n.precheck(this,o);if(s!==void 0)return s}return!!(this.hasResourceBundle(r,t)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||o(r,t)&&(!i||o(a,t)))}loadNamespaces(t,n){const r=Ey();return this.options.ns?(qn(t)&&(t=[t]),t.forEach(i=>{this.options.ns.indexOf(i)<0&&this.options.ns.push(i)}),this.loadResources(i=>{r.resolve(),n&&n(i)}),r):(n&&n(),Promise.resolve())}loadLanguages(t,n){const r=Ey();qn(t)&&(t=[t]);const i=this.options.preload||[],a=t.filter(o=>i.indexOf(o)<0&&this.services.languageUtils.isSupportedCode(o));return a.length?(this.options.preload=i.concat(a),this.loadResources(o=>{r.resolve(),n&&n(o)}),r):(n&&n(),Promise.resolve())}dir(t){if(t||(t=this.resolvedLanguage||(this.languages&&this.languages.length>0?this.languages[0]:this.language)),!t)return"rtl";const n=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],r=this.services&&this.services.languageUtils||new QB(tz());return n.indexOf(r.getLanguagePartFromCode(t))>-1||t.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;return new _y(t,n)}cloneInstance(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:AS;const r=t.forkResourceStore;r&&delete t.forkResourceStore;const i=Rn(Ke(Ke({},this.options),t),{isClone:!0}),a=new _y(i);return(t.debug!==void 0||t.prefix!==void 0)&&(a.logger=a.logger.clone(t)),["store","services","language"].forEach(s=>{a[s]=this[s]}),a.services=Ke({},this.services),a.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},r&&(a.store=new YB(this.store.data,i),a.services.resourceStore=a.store),a.translator=new IS(a.services,i),a.translator.on("*",function(s){for(var l=arguments.length,c=new Array(l>1?l-1:0),u=1;u{const t=v.useContext(sW);if(!t)throw new Error("No QueryClient set, use QueryClientProvider to set one");return t},pxe=({client:e,children:t})=>(v.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),_e.jsx(sW.Provider,{value:e,children:t})),lW=v.createContext(!1),gxe=()=>v.useContext(lW);lW.Provider;function mxe(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}var vxe=v.createContext(mxe()),yxe=()=>v.useContext(vxe);function cW(e,t){return typeof e=="function"?e(...t):!!e}function p6(){}var bxe=(e,t)=>{(e.suspense||e.throwOnError||e.experimental_prefetchInRender)&&(t.isReset()||(e.retryOnMount=!1))},xxe=e=>{v.useEffect(()=>{e.clearReset()},[e])},Sxe=({result:e,errorResetBoundary:t,throwOnError:n,query:r,suspense:i})=>e.isError&&!t.isReset()&&!e.isFetching&&r&&(i&&e.data===void 0||cW(n,[e.error,r])),wxe=e=>{const t=e.staleTime;e.suspense&&(e.staleTime=typeof t=="function"?(...n)=>Math.max(t(...n),1e3):Math.max(t!=null?t:1e3,1e3),typeof e.gcTime=="number"&&(e.gcTime=Math.max(e.gcTime,1e3)))},Cxe=(e,t)=>e.isLoading&&e.isFetching&&!t,Exe=(e,t)=>(e==null?void 0:e.suspense)&&t.isPending,uW=(e,t,n)=>t.fetchOptimistic(e).catch(()=>{n.clearReset()});function Oxe(e,t,n){var f,d,h,p,m;const r=g4(),i=gxe(),a=yxe(),o=r.defaultQueryOptions(e);(d=(f=r.getDefaultOptions().queries)==null?void 0:f._experimental_beforeQuery)==null||d.call(f,o),o._optimisticResults=i?"isRestoring":"optimistic",wxe(o),bxe(o,a),xxe(a);const s=!r.getQueryCache().get(o.queryHash),[l]=v.useState(()=>new t(r,o)),c=l.getOptimisticResult(o),u=!i&&e.subscribed!==!1;if(v.useSyncExternalStore(v.useCallback(g=>{const b=u?l.subscribe(Ml.batchCalls(g)):p6;return l.updateResult(),b},[l,u]),()=>l.getCurrentResult(),()=>l.getCurrentResult()),v.useEffect(()=>{l.setOptions(o)},[o,l]),Exe(o,c))throw uW(o,l,a);if(Sxe({result:c,errorResetBoundary:a,throwOnError:o.throwOnError,query:r.getQueryCache().get(o.queryHash),suspense:o.suspense}))throw c.error;if((p=(h=r.getDefaultOptions().queries)==null?void 0:h._experimental_afterQuery)==null||p.call(h,o,c),o.experimental_prefetchInRender&&!_g&&Cxe(c,i)){const g=s?uW(o,l,a):(m=r.getQueryCache().get(o.queryHash))==null?void 0:m.promise;g==null||g.catch(p6).finally(()=>{l.updateResult()})}return o.notifyOnChangeProps?c:l.trackResult(c)}function Tg(e,t){return Oxe(e,cxe)}function nu(e,t){const n=g4(),[r]=v.useState(()=>new dxe(n,e));v.useEffect(()=>{r.setOptions(e)},[r,e]);const i=v.useSyncExternalStore(v.useCallback(o=>r.subscribe(Ml.batchCalls(o)),[r]),()=>r.getCurrentResult(),()=>r.getCurrentResult()),a=v.useCallback((o,s)=>{r.mutate(o,s).catch(p6)},[r]);if(i.error&&cW(r.options.throwOnError,[i.error]))throw i.error;return cr(dt({},i),{mutate:a,mutateAsync:i.mutate})}var fW={items_per_page:"/ page",jump_to:"Go to",jump_to_confirm:"confirm",page:"Page",prev_page:"Previous Page",next_page:"Next Page",prev_5:"Previous 5 Pages",next_5:"Next 5 Pages",prev_3:"Previous 3 Pages",next_3:"Next 3 Pages",page_size:"Page Size"};function Nn(e){"@babel/helpers - typeof";return Nn=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Nn(e)}function _xe(e,t){if(Nn(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(Nn(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function dW(e){var t=_xe(e,"string");return Nn(t)=="symbol"?t:t+""}function de(e,t,n){return(t=dW(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function hW(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function ye(e){for(var t=1;ttypeof e=="string",PE=()=>{let e,t;const n=new Promise((r,i)=>{e=r,t=i});return n.resolve=e,n.reject=t,n},gW=e=>e==null?"":""+e,Mxe=(e,t,n)=>{e.forEach(r=>{t[r]&&(n[r]=t[r])})},Rxe=/###/g,mW=e=>e&&e.indexOf("###")>-1?e.replace(Rxe,"."):e,vW=e=>!e||ci(e),NE=(e,t,n)=>{const r=ci(t)?t.split("."):t;let i=0;for(;i{const{obj:r,k:i}=NE(e,t,Object);if(r!==void 0||t.length===1){r[i]=n;return}let a=t[t.length-1],o=t.slice(0,t.length-1),s=NE(e,o,Object);for(;s.obj===void 0&&o.length;)a=`${o[o.length-1]}.${a}`,o=o.slice(0,o.length-1),s=NE(e,o,Object),s!=null&&s.obj&&typeof s.obj[`${s.k}.${a}`]!="undefined"&&(s.obj=void 0);s.obj[`${s.k}.${a}`]=n},Axe=(e,t,n,r)=>{const{obj:i,k:a}=NE(e,t,Object);i[a]=i[a]||[],i[a].push(n)},v4=(e,t)=>{const{obj:n,k:r}=NE(e,t);if(n&&Object.prototype.hasOwnProperty.call(n,r))return n[r]},Pxe=(e,t,n)=>{const r=v4(e,n);return r!==void 0?r:v4(t,n)},bW=(e,t,n)=>{for(const r in t)r!=="__proto__"&&r!=="constructor"&&(r in e?ci(e[r])||e[r]instanceof String||ci(t[r])||t[r]instanceof String?n&&(e[r]=t[r]):bW(e[r],t[r],n):e[r]=t[r]);return e},Z2=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");var Nxe={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};const kxe=e=>ci(e)?e.replace(/[&<>"'\/]/g,t=>Nxe[t]):e;class Ixe{constructor(t){this.capacity=t,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(t){const n=this.regExpMap.get(t);if(n!==void 0)return n;const r=new RegExp(t);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(t,r),this.regExpQueue.push(t),r}}const Lxe=[" ",",","?","!",";"],Dxe=new Ixe(20),jxe=(e,t,n)=>{t=t||"",n=n||"";const r=Lxe.filter(o=>t.indexOf(o)<0&&n.indexOf(o)<0);if(r.length===0)return!0;const i=Dxe.getRegExp(`(${r.map(o=>o==="?"?"\\?":o).join("|")})`);let a=!i.test(e);if(!a){const o=e.indexOf(n);o>0&&!i.test(e.substring(0,o))&&(a=!0)}return a},g6=function(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:".";if(!e)return;if(e[t])return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0;const r=t.split(n);let i=e;for(let a=0;a-1&&le==null?void 0:e.replace("_","-"),Bxe={type:"logger",log(e){this.output("log",e)},warn(e){this.output("warn",e)},error(e){this.output("error",e)},output(e,t){var n,r;(r=(n=console==null?void 0:console[e])==null?void 0:n.apply)==null||r.call(n,console,t)}};class b4{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.init(t,n)}init(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.prefix=n.prefix||"i18next:",this.logger=t||Bxe,this.options=n,this.debug=n.debug}log(){for(var t=arguments.length,n=new Array(t),r=0;r{this.observers[r]||(this.observers[r]=new Map);const i=this.observers[r].get(n)||0;this.observers[r].set(n,i+1)}),this}off(t,n){if(this.observers[t]){if(!n){delete this.observers[t];return}this.observers[t].delete(n)}}emit(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),i=1;i{let[s,l]=o;for(let c=0;c{let[s,l]=o;for(let c=0;c1&&arguments[1]!==void 0?arguments[1]:{ns:["translation"],defaultNS:"translation"};super(),this.data=t||{},this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(t){this.options.ns.indexOf(t)<0&&this.options.ns.push(t)}removeNamespaces(t){const n=this.options.ns.indexOf(t);n>-1&&this.options.ns.splice(n,1)}getResource(t,n,r){var c,u;let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};const a=i.keySeparator!==void 0?i.keySeparator:this.options.keySeparator,o=i.ignoreJSONStructure!==void 0?i.ignoreJSONStructure:this.options.ignoreJSONStructure;let s;t.indexOf(".")>-1?s=t.split("."):(s=[t,n],r&&(Array.isArray(r)?s.push(...r):ci(r)&&a?s.push(...r.split(a)):s.push(r)));const l=v4(this.data,s);return!l&&!n&&!r&&t.indexOf(".")>-1&&(t=s[0],n=s[1],r=s.slice(2).join(".")),l||!o||!ci(r)?l:g6((u=(c=this.data)==null?void 0:c[t])==null?void 0:u[n],r,a)}addResource(t,n,r,i){let a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{silent:!1};const o=a.keySeparator!==void 0?a.keySeparator:this.options.keySeparator;let s=[t,n];r&&(s=s.concat(o?r.split(o):r)),t.indexOf(".")>-1&&(s=t.split("."),i=n,n=s[1]),this.addNamespaces(n),yW(this.data,s,i),a.silent||this.emit("added",t,n,r,i)}addResources(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{silent:!1};for(const a in r)(ci(r[a])||Array.isArray(r[a]))&&this.addResource(t,n,a,r[a],{silent:!0});i.silent||this.emit("added",t,n,r)}addResourceBundle(t,n,r,i,a){let o=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{silent:!1,skipCopy:!1},s=[t,n];t.indexOf(".")>-1&&(s=t.split("."),i=r,r=n,n=s[1]),this.addNamespaces(n);let l=v4(this.data,s)||{};o.skipCopy||(r=JSON.parse(JSON.stringify(r))),i?bW(l,r,a):l=dt(dt({},l),r),yW(this.data,s,l),o.silent||this.emit("added",t,n,r)}removeResourceBundle(t,n){this.hasResourceBundle(t,n)&&delete this.data[t][n],this.removeNamespaces(n),this.emit("removed",t,n)}hasResourceBundle(t,n){return this.getResource(t,n)!==void 0}getResourceBundle(t,n){return n||(n=this.options.defaultNS),this.getResource(t,n)}getDataByLanguage(t){return this.data[t]}hasLanguageSomeTranslations(t){const n=this.getDataByLanguage(t);return!!(n&&Object.keys(n)||[]).find(i=>n[i]&&Object.keys(n[i]).length>0)}toJSON(){return this.data}}var SW={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,n,r,i){return e.forEach(a=>{var o,s;t=(s=(o=this.processors[a])==null?void 0:o.process(t,n,r,i))!=null?s:t}),t}};const wW={},CW=e=>!ci(e)&&typeof e!="boolean"&&typeof e!="number";class S4 extends x4{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(),Mxe(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],t,this),this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=Mg.create("translator")}changeLanguage(t){t&&(this.language=t)}exists(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}};if(t==null)return!1;const r=this.resolve(t,n);return(r==null?void 0:r.res)!==void 0}extractFromKey(t,n){let r=n.nsSeparator!==void 0?n.nsSeparator:this.options.nsSeparator;r===void 0&&(r=":");const i=n.keySeparator!==void 0?n.keySeparator:this.options.keySeparator;let a=n.ns||this.options.defaultNS||[];const o=r&&t.indexOf(r)>-1,s=!this.options.userDefinedKeySeparator&&!n.keySeparator&&!this.options.userDefinedNsSeparator&&!n.nsSeparator&&!jxe(t,r,i);if(o&&!s){const l=t.match(this.interpolator.nestingRegexp);if(l&&l.length>0)return{key:t,namespaces:ci(a)?[a]:a};const c=t.split(r);(r!==i||r===i&&this.options.ns.indexOf(c[0])>-1)&&(a=c.shift()),t=c.join(i)}return{key:t,namespaces:ci(a)?[a]:a}}translate(t,n,r){if(typeof n!="object"&&this.options.overloadTranslationOptionHandler&&(n=this.options.overloadTranslationOptionHandler(arguments)),typeof n=="object"&&(n=dt({},n)),n||(n={}),t==null)return"";Array.isArray(t)||(t=[String(t)]);const i=n.returnDetails!==void 0?n.returnDetails:this.options.returnDetails,a=n.keySeparator!==void 0?n.keySeparator:this.options.keySeparator,{key:o,namespaces:s}=this.extractFromKey(t[t.length-1],n),l=s[s.length-1],c=n.lng||this.language,u=n.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if((c==null?void 0:c.toLowerCase())==="cimode"){if(u){const N=n.nsSeparator||this.options.nsSeparator;return i?{res:`${l}${N}${o}`,usedKey:o,exactUsedKey:o,usedLng:c,usedNS:l,usedParams:this.getUsedParamsDetails(n)}:`${l}${N}${o}`}return i?{res:o,usedKey:o,exactUsedKey:o,usedLng:c,usedNS:l,usedParams:this.getUsedParamsDetails(n)}:o}const f=this.resolve(t,n);let d=f==null?void 0:f.res;const h=(f==null?void 0:f.usedKey)||o,p=(f==null?void 0:f.exactUsedKey)||o,m=["[object Number]","[object Function]","[object RegExp]"],g=n.joinArrays!==void 0?n.joinArrays:this.options.joinArrays,b=!this.i18nFormat||this.i18nFormat.handleAsObject,x=n.count!==void 0&&!ci(n.count),C=S4.hasDefaultValue(n),O=x?this.pluralResolver.getSuffix(c,n.count,n):"",E=n.ordinal&&x?this.pluralResolver.getSuffix(c,n.count,{ordinal:!1}):"",$=x&&!n.ordinal&&n.count===0,R=$&&n[`defaultValue${this.options.pluralSeparator}zero`]||n[`defaultValue${O}`]||n[`defaultValue${E}`]||n.defaultValue;let A=d;b&&!d&&C&&(A=R);const P=CW(A),k=Object.prototype.toString.apply(A);if(b&&A&&P&&m.indexOf(k)<0&&!(ci(g)&&Array.isArray(A))){if(!n.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const N=this.options.returnedObjectHandler?this.options.returnedObjectHandler(h,A,cr(dt({},n),{ns:s})):`key '${o} (${this.language})' returned an object instead of string.`;return i?(f.res=N,f.usedParams=this.getUsedParamsDetails(n),f):N}if(a){const N=Array.isArray(A),H=N?[]:{},D=N?p:h;for(const z in A)if(Object.prototype.hasOwnProperty.call(A,z)){const V=`${D}${a}${z}`;C&&!d?H[z]=this.translate(V,cr(dt({},n),{defaultValue:CW(R)?R[z]:void 0,joinArrays:!1,ns:s})):H[z]=this.translate(V,cr(dt({},n),{joinArrays:!1,ns:s})),H[z]===V&&(H[z]=A[z])}d=H}}else if(b&&ci(g)&&Array.isArray(d))d=d.join(g),d&&(d=this.extendTranslation(d,t,n,r));else{let N=!1,H=!1;!this.isValidLookup(d)&&C&&(N=!0,d=R),this.isValidLookup(d)||(H=!0,d=o);const z=(n.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&H?void 0:d,V=C&&R!==d&&this.options.updateMissing;if(H||N||V){if(this.logger.log(V?"updateKey":"missingKey",c,l,o,V?R:d),a){const G=this.resolve(o,cr(dt({},n),{keySeparator:!1}));G&&G.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let j=[];const F=this.languageUtils.getFallbackCodes(this.options.fallbackLng,n.lng||this.language);if(this.options.saveMissingTo==="fallback"&&F&&F[0])for(let G=0;G{var J;const X=C&&q!==d?q:z;this.options.missingKeyHandler?this.options.missingKeyHandler(G,l,U,X,V,n):(J=this.backendConnector)!=null&&J.saveMissing&&this.backendConnector.saveMissing(G,l,U,X,V,n),this.emit("missingKey",G,l,U,d)};this.options.saveMissing&&(this.options.saveMissingPlurals&&x?j.forEach(G=>{const U=this.pluralResolver.getSuffixes(G,n);$&&n[`defaultValue${this.options.pluralSeparator}zero`]&&U.indexOf(`${this.options.pluralSeparator}zero`)<0&&U.push(`${this.options.pluralSeparator}zero`),U.forEach(q=>{W([G],o+q,n[`defaultValue${q}`]||R)})}):W(j,o,R))}d=this.extendTranslation(d,t,n,f,r),H&&d===o&&this.options.appendNamespaceToMissingKey&&(d=`${l}:${o}`),(H||N)&&this.options.parseMissingKeyHandler&&(d=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${l}:${o}`:o,N?d:void 0))}return i?(f.res=d,f.usedParams=this.getUsedParamsDetails(n),f):d}extendTranslation(t,n,r,i,a){var c,u;var o=this;if((c=this.i18nFormat)!=null&&c.parse)t=this.i18nFormat.parse(t,dt(dt({},this.options.interpolation.defaultVariables),r),r.lng||this.language||i.usedLng,i.usedNS,i.usedKey,{resolved:i});else if(!r.skipInterpolation){r.interpolation&&this.interpolator.init(cr(dt({},r),{interpolation:dt(dt({},this.options.interpolation),r.interpolation)}));const f=ci(t)&&(((u=r==null?void 0:r.interpolation)==null?void 0:u.skipOnVariables)!==void 0?r.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let d;if(f){const p=t.match(this.interpolator.nestingRegexp);d=p&&p.length}let h=r.replace&&!ci(r.replace)?r.replace:r;if(this.options.interpolation.defaultVariables&&(h=dt(dt({},this.options.interpolation.defaultVariables),h)),t=this.interpolator.interpolate(t,h,r.lng||this.language||i.usedLng,r),f){const p=t.match(this.interpolator.nestingRegexp),m=p&&p.length;d1&&arguments[1]!==void 0?arguments[1]:{},r,i,a,o,s;return ci(t)&&(t=[t]),t.forEach(l=>{if(this.isValidLookup(r))return;const c=this.extractFromKey(l,n),u=c.key;i=u;let f=c.namespaces;this.options.fallbackNS&&(f=f.concat(this.options.fallbackNS));const d=n.count!==void 0&&!ci(n.count),h=d&&!n.ordinal&&n.count===0,p=n.context!==void 0&&(ci(n.context)||typeof n.context=="number")&&n.context!=="",m=n.lngs?n.lngs:this.languageUtils.toResolveHierarchy(n.lng||this.language,n.fallbackLng);f.forEach(g=>{var b,x;this.isValidLookup(r)||(s=g,!wW[`${m[0]}-${g}`]&&((b=this.utils)!=null&&b.hasLoadedNamespace)&&!((x=this.utils)!=null&&x.hasLoadedNamespace(s))&&(wW[`${m[0]}-${g}`]=!0,this.logger.warn(`key "${i}" for languages "${m.join(", ")}" won't get resolved as namespace "${s}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),m.forEach(C=>{var $;if(this.isValidLookup(r))return;o=C;const O=[u];if(($=this.i18nFormat)!=null&&$.addLookupKeys)this.i18nFormat.addLookupKeys(O,u,C,g,n);else{let R;d&&(R=this.pluralResolver.getSuffix(C,n.count,n));const A=`${this.options.pluralSeparator}zero`,P=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(d&&(O.push(u+R),n.ordinal&&R.indexOf(P)===0&&O.push(u+R.replace(P,this.options.pluralSeparator)),h&&O.push(u+A)),p){const k=`${u}${this.options.contextSeparator}${n.context}`;O.push(k),d&&(O.push(k+R),n.ordinal&&R.indexOf(P)===0&&O.push(k+R.replace(P,this.options.pluralSeparator)),h&&O.push(k+A))}}let E;for(;E=O.pop();)this.isValidLookup(r)||(a=E,r=this.getResource(C,g,E,n))}))})}),{res:r,usedKey:i,exactUsedKey:a,usedLng:o,usedNS:s}}isValidLookup(t){return t!==void 0&&!(!this.options.returnNull&&t===null)&&!(!this.options.returnEmptyString&&t==="")}getResource(t,n,r){var a;let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return(a=this.i18nFormat)!=null&&a.getResource?this.i18nFormat.getResource(t,n,r,i):this.resourceStore.getResource(t,n,r,i)}getUsedParamsDetails(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const n=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],r=t.replace&&!ci(t.replace);let i=r?t.replace:t;if(r&&typeof t.count!="undefined"&&(i.count=t.count),this.options.interpolation.defaultVariables&&(i=dt(dt({},this.options.interpolation.defaultVariables),i)),!r){i=dt({},i);for(const a of n)delete i[a]}return i}static hasDefaultValue(t){const n="defaultValue";for(const r in t)if(Object.prototype.hasOwnProperty.call(t,r)&&n===r.substring(0,n.length)&&t[r]!==void 0)return!0;return!1}}class EW{constructor(t){this.options=t,this.supportedLngs=this.options.supportedLngs||!1,this.logger=Mg.create("languageUtils")}getScriptPartFromCode(t){if(t=y4(t),!t||t.indexOf("-")<0)return null;const n=t.split("-");return n.length===2||(n.pop(),n[n.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(n.join("-"))}getLanguagePartFromCode(t){if(t=y4(t),!t||t.indexOf("-")<0)return t;const n=t.split("-");return this.formatLanguageCode(n[0])}formatLanguageCode(t){if(ci(t)&&t.indexOf("-")>-1){let n;try{n=Intl.getCanonicalLocales(t)[0]}catch(r){}return n&&this.options.lowerCaseLng&&(n=n.toLowerCase()),n||(this.options.lowerCaseLng?t.toLowerCase():t)}return this.options.cleanCode||this.options.lowerCaseLng?t.toLowerCase():t}isSupportedCode(t){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(t=this.getLanguagePartFromCode(t)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(t)>-1}getBestMatchFromCodes(t){if(!t)return null;let n;return t.forEach(r=>{if(n)return;const i=this.formatLanguageCode(r);(!this.options.supportedLngs||this.isSupportedCode(i))&&(n=i)}),!n&&this.options.supportedLngs&&t.forEach(r=>{if(n)return;const i=this.getLanguagePartFromCode(r);if(this.isSupportedCode(i))return n=i;n=this.options.supportedLngs.find(a=>{if(a===i)return a;if(!(a.indexOf("-")<0&&i.indexOf("-")<0)&&(a.indexOf("-")>0&&i.indexOf("-")<0&&a.substring(0,a.indexOf("-"))===i||a.indexOf(i)===0&&i.length>1))return a})}),n||(n=this.getFallbackCodes(this.options.fallbackLng)[0]),n}getFallbackCodes(t,n){if(!t)return[];if(typeof t=="function"&&(t=t(n)),ci(t)&&(t=[t]),Array.isArray(t))return t;if(!n)return t.default||[];let r=t[n];return r||(r=t[this.getScriptPartFromCode(n)]),r||(r=t[this.formatLanguageCode(n)]),r||(r=t[this.getLanguagePartFromCode(n)]),r||(r=t.default),r||[]}toResolveHierarchy(t,n){const r=this.getFallbackCodes(n||this.options.fallbackLng||[],t),i=[],a=o=>{o&&(this.isSupportedCode(o)?i.push(o):this.logger.warn(`rejecting language code not found in supportedLngs: ${o}`))};return ci(t)&&(t.indexOf("-")>-1||t.indexOf("_")>-1)?(this.options.load!=="languageOnly"&&a(this.formatLanguageCode(t)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&a(this.getScriptPartFromCode(t)),this.options.load!=="currentOnly"&&a(this.getLanguagePartFromCode(t))):ci(t)&&a(this.formatLanguageCode(t)),r.forEach(o=>{i.indexOf(o)<0&&a(this.formatLanguageCode(o))}),i}}const OW={zero:0,one:1,two:2,few:3,many:4,other:5},_W={select:e=>e===1?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})};class zxe{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.languageUtils=t,this.options=n,this.logger=Mg.create("pluralResolver"),this.pluralRulesCache={}}addRule(t,n){this.rules[t]=n}clearCache(){this.pluralRulesCache={}}getRule(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const r=y4(t==="dev"?"en":t),i=n.ordinal?"ordinal":"cardinal",a=JSON.stringify({cleanedCode:r,type:i});if(a in this.pluralRulesCache)return this.pluralRulesCache[a];let o;try{o=new Intl.PluralRules(r,{type:i})}catch(s){if(!Intl)return this.logger.error("No Intl support, please use an Intl polyfill!"),_W;if(!t.match(/-|_/))return _W;const l=this.languageUtils.getLanguagePartFromCode(t);o=this.getRule(l,n)}return this.pluralRulesCache[a]=o,o}needsPlural(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=this.getRule(t,n);return r||(r=this.getRule("dev",n)),(r==null?void 0:r.resolvedOptions().pluralCategories.length)>1}getPluralFormsOfKey(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return this.getSuffixes(t,r).map(i=>`${n}${i}`)}getSuffixes(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=this.getRule(t,n);return r||(r=this.getRule("dev",n)),r?r.resolvedOptions().pluralCategories.sort((i,a)=>OW[i]-OW[a]).map(i=>`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:""}${i}`):[]}getSuffix(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const i=this.getRule(t,r);return i?`${this.options.prepend}${r.ordinal?`ordinal${this.options.prepend}`:""}${i.select(n)}`:(this.logger.warn(`no plural rule found for: ${t}`),this.getSuffix("dev",n,r))}}const $W=function(e,t,n){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:".",i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=Pxe(e,t,n);return!a&&i&&ci(n)&&(a=g6(e,n,r),a===void 0&&(a=g6(t,n,r))),a},m6=e=>e.replace(/\$/g,"$$$$");class Fxe{constructor(){var n;let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=Mg.create("interpolator"),this.options=t,this.format=((n=t==null?void 0:t.interpolation)==null?void 0:n.format)||(r=>r),this.init(t)}init(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};t.interpolation||(t.interpolation={escapeValue:!0});const{escape:n,escapeValue:r,useRawValueToEscape:i,prefix:a,prefixEscaped:o,suffix:s,suffixEscaped:l,formatSeparator:c,unescapeSuffix:u,unescapePrefix:f,nestingPrefix:d,nestingPrefixEscaped:h,nestingSuffix:p,nestingSuffixEscaped:m,nestingOptionsSeparator:g,maxReplaces:b,alwaysFormat:x}=t.interpolation;this.escape=n!==void 0?n:kxe,this.escapeValue=r!==void 0?r:!0,this.useRawValueToEscape=i!==void 0?i:!1,this.prefix=a?Z2(a):o||"{{",this.suffix=s?Z2(s):l||"}}",this.formatSeparator=c||",",this.unescapePrefix=u?"":f||"-",this.unescapeSuffix=this.unescapePrefix?"":u||"",this.nestingPrefix=d?Z2(d):h||Z2("$t("),this.nestingSuffix=p?Z2(p):m||Z2(")"),this.nestingOptionsSeparator=g||",",this.maxReplaces=b||1e3,this.alwaysFormat=x!==void 0?x:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const t=(n,r)=>(n==null?void 0:n.source)===r?(n.lastIndex=0,n):new RegExp(r,"g");this.regexp=t(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=t(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=t(this.nestingRegexp,`${this.nestingPrefix}(.+?)${this.nestingSuffix}`)}interpolate(t,n,r,i){var h;let a,o,s;const l=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},c=p=>{if(p.indexOf(this.formatSeparator)<0){const x=$W(n,l,p,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(x,void 0,r,cr(dt(dt({},i),n),{interpolationkey:p})):x}const m=p.split(this.formatSeparator),g=m.shift().trim(),b=m.join(this.formatSeparator).trim();return this.format($W(n,l,g,this.options.keySeparator,this.options.ignoreJSONStructure),b,r,cr(dt(dt({},i),n),{interpolationkey:g}))};this.resetRegExp();const u=(i==null?void 0:i.missingInterpolationHandler)||this.options.missingInterpolationHandler,f=((h=i==null?void 0:i.interpolation)==null?void 0:h.skipOnVariables)!==void 0?i.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:p=>m6(p)},{regex:this.regexp,safeValue:p=>this.escapeValue?m6(this.escape(p)):m6(p)}].forEach(p=>{for(s=0;a=p.regex.exec(t);){const m=a[1].trim();if(o=c(m),o===void 0)if(typeof u=="function"){const b=u(t,a,i);o=ci(b)?b:""}else if(i&&Object.prototype.hasOwnProperty.call(i,m))o="";else if(f){o=a[0];continue}else this.logger.warn(`missed to pass in variable ${m} for interpolating ${t}`),o="";else!ci(o)&&!this.useRawValueToEscape&&(o=gW(o));const g=p.safeValue(o);if(t=t.replace(a[0],g),f?(p.regex.lastIndex+=o.length,p.regex.lastIndex-=a[0].length):p.regex.lastIndex=0,s++,s>=this.maxReplaces)break}}),t}nest(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i,a,o;const s=(l,c)=>{var m;const u=this.nestingOptionsSeparator;if(l.indexOf(u)<0)return l;const f=l.split(new RegExp(`${u}[ ]*{`));let d=`{${f[1]}`;l=f[0],d=this.interpolate(d,o);const h=d.match(/'/g),p=d.match(/"/g);(((m=h==null?void 0:h.length)!=null?m:0)%2===0&&!p||p.length%2!==0)&&(d=d.replace(/'/g,'"'));try{o=JSON.parse(d),c&&(o=dt(dt({},c),o))}catch(g){return this.logger.warn(`failed parsing options string in nesting for key ${l}`,g),`${l}${u}${d}`}return o.defaultValue&&o.defaultValue.indexOf(this.prefix)>-1&&delete o.defaultValue,l};for(;i=this.nestingRegexp.exec(t);){let l=[];o=dt({},r),o=o.replace&&!ci(o.replace)?o.replace:o,o.applyPostProcessor=!1,delete o.defaultValue;let c=!1;if(i[0].indexOf(this.formatSeparator)!==-1&&!/{.*}/.test(i[1])){const u=i[1].split(this.formatSeparator).map(f=>f.trim());i[1]=u.shift(),l=u,c=!0}if(a=n(s.call(this,i[1].trim(),o),o),a&&i[0]===t&&!ci(a))return a;ci(a)||(a=gW(a)),a||(this.logger.warn(`missed to resolve ${i[1]} for nesting ${t}`),a=""),c&&(a=l.reduce((u,f)=>this.format(u,f,r.lng,cr(dt({},r),{interpolationkey:i[1].trim()})),a.trim())),t=t.replace(i[0],a),this.regexp.lastIndex=0}return t}}const Hxe=e=>{let t=e.toLowerCase().trim();const n={};if(e.indexOf("(")>-1){const r=e.split("(");t=r[0].toLowerCase().trim();const i=r[1].substring(0,r[1].length-1);t==="currency"&&i.indexOf(":")<0?n.currency||(n.currency=i.trim()):t==="relativetime"&&i.indexOf(":")<0?n.range||(n.range=i.trim()):i.split(";").forEach(o=>{if(o){const[s,...l]=o.split(":"),c=l.join(":").trim().replace(/^'+|'+$/g,""),u=s.trim();n[u]||(n[u]=c),c==="false"&&(n[u]=!1),c==="true"&&(n[u]=!0),isNaN(c)||(n[u]=parseInt(c,10))}})}return{formatName:t,formatOptions:n}},Q2=e=>{const t={};return(n,r,i)=>{let a=i;i&&i.interpolationkey&&i.formatParams&&i.formatParams[i.interpolationkey]&&i[i.interpolationkey]&&(a=cr(dt({},a),{[i.interpolationkey]:void 0}));const o=r+JSON.stringify(a);let s=t[o];return s||(s=e(y4(r),i),t[o]=s),s(n)}};class Vxe{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=Mg.create("formatter"),this.options=t,this.formats={number:Q2((n,r)=>{const i=new Intl.NumberFormat(n,dt({},r));return a=>i.format(a)}),currency:Q2((n,r)=>{const i=new Intl.NumberFormat(n,cr(dt({},r),{style:"currency"}));return a=>i.format(a)}),datetime:Q2((n,r)=>{const i=new Intl.DateTimeFormat(n,dt({},r));return a=>i.format(a)}),relativetime:Q2((n,r)=>{const i=new Intl.RelativeTimeFormat(n,dt({},r));return a=>i.format(a,r.range||"day")}),list:Q2((n,r)=>{const i=new Intl.ListFormat(n,dt({},r));return a=>i.format(a)})},this.init(t)}init(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}};this.formatSeparator=n.interpolation.formatSeparator||","}add(t,n){this.formats[t.toLowerCase().trim()]=n}addCached(t,n){this.formats[t.toLowerCase().trim()]=Q2(n)}format(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};const a=n.split(this.formatSeparator);if(a.length>1&&a[0].indexOf("(")>1&&a[0].indexOf(")")<0&&a.find(s=>s.indexOf(")")>-1)){const s=a.findIndex(l=>l.indexOf(")")>-1);a[0]=[a[0],...a.splice(1,s)].join(this.formatSeparator)}return a.reduce((s,l)=>{var f;const{formatName:c,formatOptions:u}=Hxe(l);if(this.formats[c]){let d=s;try{const h=((f=i==null?void 0:i.formatParams)==null?void 0:f[i.interpolationkey])||{},p=h.locale||h.lng||i.locale||i.lng||r;d=this.formats[c](s,p,dt(dt(dt({},u),i),h))}catch(h){this.logger.warn(h)}return d}else this.logger.warn(`there was no format function for ${c}`);return s},t)}}const Wxe=(e,t)=>{e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)};let Uxe=class extends x4{constructor(t,n,r){var a,o;let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};super(),this.backend=t,this.store=n,this.services=r,this.languageUtils=r.languageUtils,this.options=i,this.logger=Mg.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=i.maxParallelReads||10,this.readingCalls=0,this.maxRetries=i.maxRetries>=0?i.maxRetries:5,this.retryTimeout=i.retryTimeout>=1?i.retryTimeout:350,this.state={},this.queue=[],(o=(a=this.backend)==null?void 0:a.init)==null||o.call(a,r,i.backend,i)}queueLoad(t,n,r,i){const a={},o={},s={},l={};return t.forEach(c=>{let u=!0;n.forEach(f=>{const d=`${c}|${f}`;!r.reload&&this.store.hasResourceBundle(c,f)?this.state[d]=2:this.state[d]<0||(this.state[d]===1?o[d]===void 0&&(o[d]=!0):(this.state[d]=1,u=!1,o[d]===void 0&&(o[d]=!0),a[d]===void 0&&(a[d]=!0),l[f]===void 0&&(l[f]=!0)))}),u||(s[c]=!0)}),(Object.keys(a).length||Object.keys(o).length)&&this.queue.push({pending:o,pendingCount:Object.keys(o).length,loaded:{},errors:[],callback:i}),{toLoad:Object.keys(a),pending:Object.keys(o),toLoadLanguages:Object.keys(s),toLoadNamespaces:Object.keys(l)}}loaded(t,n,r){const i=t.split("|"),a=i[0],o=i[1];n&&this.emit("failedLoading",a,o,n),!n&&r&&this.store.addResourceBundle(a,o,r,void 0,void 0,{skipCopy:!0}),this.state[t]=n?-1:2,n&&r&&(this.state[t]=0);const s={};this.queue.forEach(l=>{Axe(l.loaded,[a],o),Wxe(l,t),n&&l.errors.push(n),l.pendingCount===0&&!l.done&&(Object.keys(l.loaded).forEach(c=>{s[c]||(s[c]={});const u=l.loaded[c];u.length&&u.forEach(f=>{s[c][f]===void 0&&(s[c][f]=!0)})}),l.done=!0,l.errors.length?l.callback(l.errors):l.callback())}),this.emit("loaded",s),this.queue=this.queue.filter(l=>!l.done)}read(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:this.retryTimeout,o=arguments.length>5?arguments[5]:void 0;if(!t.length)return o(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:t,ns:n,fcName:r,tried:i,wait:a,callback:o});return}this.readingCalls++;const s=(c,u)=>{if(this.readingCalls--,this.waitingReads.length>0){const f=this.waitingReads.shift();this.read(f.lng,f.ns,f.fcName,f.tried,f.wait,f.callback)}if(c&&u&&i{this.read.call(this,t,n,r,i+1,a*2,o)},a);return}o(c,u)},l=this.backend[r].bind(this.backend);if(l.length===2){try{const c=l(t,n);c&&typeof c.then=="function"?c.then(u=>s(null,u)).catch(s):s(null,c)}catch(c){s(c)}return}return l(t,n,s)}prepareLoading(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=arguments.length>3?arguments[3]:void 0;if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),i&&i();ci(t)&&(t=this.languageUtils.toResolveHierarchy(t)),ci(n)&&(n=[n]);const a=this.queueLoad(t,n,r,i);if(!a.toLoad.length)return a.pending.length||i(),null;a.toLoad.forEach(o=>{this.loadOne(o)})}load(t,n,r){this.prepareLoading(t,n,{},r)}reload(t,n,r){this.prepareLoading(t,n,{reload:!0},r)}loadOne(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";const r=t.split("|"),i=r[0],a=r[1];this.read(i,a,"read",void 0,void 0,(o,s)=>{o&&this.logger.warn(`${n}loading namespace ${a} for language ${i} failed`,o),!o&&s&&this.logger.log(`${n}loaded namespace ${a} for language ${i}`,s),this.loaded(t,o,s)})}saveMissing(t,n,r,i,a){var l,c,u,f,d;let o=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{},s=arguments.length>6&&arguments[6]!==void 0?arguments[6]:()=>{};if((c=(l=this.services)==null?void 0:l.utils)!=null&&c.hasLoadedNamespace&&!((f=(u=this.services)==null?void 0:u.utils)!=null&&f.hasLoadedNamespace(n))){this.logger.warn(`did not save key "${r}" as the namespace "${n}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(r==null||r==="")){if((d=this.backend)!=null&&d.create){const h=cr(dt({},o),{isUpdate:a}),p=this.backend.create.bind(this.backend);if(p.length<6)try{let m;p.length===5?m=p(t,n,r,i,h):m=p(t,n,r,i),m&&typeof m.then=="function"?m.then(g=>s(null,g)).catch(s):s(null,m)}catch(m){s(m)}else p(t,n,r,i,s,h)}!t||!t[0]||this.store.addResource(t[0],n,r,i)}}};const TW=()=>({debug:!1,initAsync:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:e=>{let t={};if(typeof e[1]=="object"&&(t=e[1]),ci(e[1])&&(t.defaultValue=e[1]),ci(e[2])&&(t.tDescription=e[2]),typeof e[2]=="object"||typeof e[3]=="object"){const n=e[3]||e[2];Object.keys(n).forEach(r=>{t[r]=n[r]})}return t},interpolation:{escapeValue:!0,format:e=>e,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0}}),MW=e=>{var t,n;return ci(e.ns)&&(e.ns=[e.ns]),ci(e.fallbackLng)&&(e.fallbackLng=[e.fallbackLng]),ci(e.fallbackNS)&&(e.fallbackNS=[e.fallbackNS]),((n=(t=e.supportedLngs)==null?void 0:t.indexOf)==null?void 0:n.call(t,"cimode"))<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),typeof e.initImmediate=="boolean"&&(e.initAsync=e.initImmediate),e},w4=()=>{},qxe=e=>{Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(n=>{typeof e[n]=="function"&&(e[n]=e[n].bind(e))})};class kE extends x4{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;if(super(),this.options=MW(t),this.services={},this.logger=Mg,this.modules={external:[]},qxe(this),n&&!this.isInitialized&&!t.isClone){if(!this.options.initAsync)return this.init(t,n),this;setTimeout(()=>{this.init(t,n)},0)}}init(){var t=this;let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=arguments.length>1?arguments[1]:void 0;this.isInitializing=!0,typeof n=="function"&&(r=n,n={}),n.defaultNS==null&&n.ns&&(ci(n.ns)?n.defaultNS=n.ns:n.ns.indexOf("translation")<0&&(n.defaultNS=n.ns[0]));const i=TW();this.options=dt(dt(dt({},i),this.options),MW(n)),this.options.interpolation=dt(dt({},i.interpolation),this.options.interpolation),n.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=n.keySeparator),n.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=n.nsSeparator);const a=u=>u?typeof u=="function"?new u:u:null;if(!this.options.isClone){this.modules.logger?Mg.init(a(this.modules.logger),this.options):Mg.init(null,this.options);let u;this.modules.formatter?u=this.modules.formatter:u=Vxe;const f=new EW(this.options);this.store=new xW(this.options.resources,this.options);const d=this.services;d.logger=Mg,d.resourceStore=this.store,d.languageUtils=f,d.pluralResolver=new zxe(f,{prepend:this.options.pluralSeparator,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),u&&(!this.options.interpolation.format||this.options.interpolation.format===i.interpolation.format)&&(d.formatter=a(u),d.formatter.init(d,this.options),this.options.interpolation.format=d.formatter.format.bind(d.formatter)),d.interpolator=new Fxe(this.options),d.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},d.backendConnector=new Uxe(a(this.modules.backend),d.resourceStore,d,this.options),d.backendConnector.on("*",function(h){for(var p=arguments.length,m=new Array(p>1?p-1:0),g=1;g1?p-1:0),g=1;g{h.init&&h.init(this)})}if(this.format=this.options.interpolation.format,r||(r=w4),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const u=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);u.length>0&&u[0]!=="dev"&&(this.options.lng=u[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(u=>{this[u]=function(){return t.store[u](...arguments)}}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(u=>{this[u]=function(){return t.store[u](...arguments),t}});const l=PE(),c=()=>{const u=(f,d)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),l.resolve(d),r(f,d)};if(this.languages&&!this.isInitialized)return u(null,this.t.bind(this));this.changeLanguage(this.options.lng,u)};return this.options.resources||!this.options.initAsync?c():setTimeout(c,0),l}loadResources(t){var a,o;let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:w4;const i=ci(t)?t:this.language;if(typeof t=="function"&&(r=t),!this.options.resources||this.options.partialBundledLanguages){if((i==null?void 0:i.toLowerCase())==="cimode"&&(!this.options.preload||this.options.preload.length===0))return r();const s=[],l=c=>{if(!c||c==="cimode")return;this.services.languageUtils.toResolveHierarchy(c).forEach(f=>{f!=="cimode"&&s.indexOf(f)<0&&s.push(f)})};i?l(i):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(u=>l(u)),(o=(a=this.options.preload)==null?void 0:a.forEach)==null||o.call(a,c=>l(c)),this.services.backendConnector.load(s,this.options.ns,c=>{!c&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),r(c)})}else r(null)}reloadResources(t,n,r){const i=PE();return typeof t=="function"&&(r=t,t=void 0),typeof n=="function"&&(r=n,n=void 0),t||(t=this.languages),n||(n=this.options.ns),r||(r=w4),this.services.backendConnector.reload(t,n,a=>{i.resolve(),r(a)}),i}use(t){if(!t)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!t.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return t.type==="backend"&&(this.modules.backend=t),(t.type==="logger"||t.log&&t.warn&&t.error)&&(this.modules.logger=t),t.type==="languageDetector"&&(this.modules.languageDetector=t),t.type==="i18nFormat"&&(this.modules.i18nFormat=t),t.type==="postProcessor"&&SW.addPostProcessor(t),t.type==="formatter"&&(this.modules.formatter=t),t.type==="3rdParty"&&this.modules.external.push(t),this}setResolvedLanguage(t){if(!(!t||!this.languages)&&!(["cimode","dev"].indexOf(t)>-1))for(let n=0;n-1)&&this.store.hasLanguageSomeTranslations(r)){this.resolvedLanguage=r;break}}}changeLanguage(t,n){var r=this;this.isLanguageChangingTo=t;const i=PE();this.emit("languageChanging",t);const a=l=>{this.language=l,this.languages=this.services.languageUtils.toResolveHierarchy(l),this.resolvedLanguage=void 0,this.setResolvedLanguage(l)},o=(l,c)=>{c?(a(c),this.translator.changeLanguage(c),this.isLanguageChangingTo=void 0,this.emit("languageChanged",c),this.logger.log("languageChanged",c)):this.isLanguageChangingTo=void 0,i.resolve(function(){return r.t(...arguments)}),n&&n(l,function(){return r.t(...arguments)})},s=l=>{var u,f;!t&&!l&&this.services.languageDetector&&(l=[]);const c=ci(l)?l:this.services.languageUtils.getBestMatchFromCodes(l);c&&(this.language||a(c),this.translator.language||this.translator.changeLanguage(c),(f=(u=this.services.languageDetector)==null?void 0:u.cacheUserLanguage)==null||f.call(u,c)),this.loadResources(c,d=>{o(d,c)})};return!t&&this.services.languageDetector&&!this.services.languageDetector.async?s(this.services.languageDetector.detect()):!t&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(s):this.services.languageDetector.detect(s):s(t),i}getFixedT(t,n,r){var i=this;const a=function(o,s){let l;if(typeof s!="object"){for(var c=arguments.length,u=new Array(c>2?c-2:0),f=2;f`${l.keyPrefix}${d}${p}`):h=l.keyPrefix?`${l.keyPrefix}${d}${o}`:o,i.t(h,l)};return ci(t)?a.lng=t:a.lngs=t,a.ns=n,a.keyPrefix=r,a}t(){var i;for(var t=arguments.length,n=new Array(t),r=0;r1&&arguments[1]!==void 0?arguments[1]:{};if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const r=n.lng||this.resolvedLanguage||this.languages[0],i=this.options?this.options.fallbackLng:!1,a=this.languages[this.languages.length-1];if(r.toLowerCase()==="cimode")return!0;const o=(s,l)=>{const c=this.services.backendConnector.state[`${s}|${l}`];return c===-1||c===0||c===2};if(n.precheck){const s=n.precheck(this,o);if(s!==void 0)return s}return!!(this.hasResourceBundle(r,t)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||o(r,t)&&(!i||o(a,t)))}loadNamespaces(t,n){const r=PE();return this.options.ns?(ci(t)&&(t=[t]),t.forEach(i=>{this.options.ns.indexOf(i)<0&&this.options.ns.push(i)}),this.loadResources(i=>{r.resolve(),n&&n(i)}),r):(n&&n(),Promise.resolve())}loadLanguages(t,n){const r=PE();ci(t)&&(t=[t]);const i=this.options.preload||[],a=t.filter(o=>i.indexOf(o)<0&&this.services.languageUtils.isSupportedCode(o));return a.length?(this.options.preload=i.concat(a),this.loadResources(o=>{r.resolve(),n&&n(o)}),r):(n&&n(),Promise.resolve())}dir(t){var i,a;if(t||(t=this.resolvedLanguage||(((i=this.languages)==null?void 0:i.length)>0?this.languages[0]:this.language)),!t)return"rtl";const n=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],r=((a=this.services)==null?void 0:a.languageUtils)||new EW(TW());return n.indexOf(r.getLanguagePartFromCode(t))>-1||t.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;return new kE(t,n)}cloneInstance(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:w4;const r=t.forkResourceStore;r&&delete t.forkResourceStore;const i=cr(dt(dt({},this.options),t),{isClone:!0}),a=new kE(i);if((t.debug!==void 0||t.prefix!==void 0)&&(a.logger=a.logger.clone(t)),["store","services","language"].forEach(s=>{a[s]=this[s]}),a.services=dt({},this.services),a.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},r){const s=Object.keys(this.store.data).reduce((l,c)=>(l[c]=dt({},this.store.data[c]),Object.keys(l[c]).reduce((u,f)=>(u[f]=dt({},l[c][f]),u),{})),{});a.store=new xW(s,i),a.services.resourceStore=a.store}return a.translator=new S4(a.services,i),a.translator.on("*",function(s){for(var l=arguments.length,c=new Array(l>1?l-1:0),u=1;u>>1,z=j[D];if(0>>1;Di(H,B))Ui(G,H)?(j[D]=G,j[U]=B,D=U):(j[D]=H,j[q]=B,D=q);else if(Ui(G,B))j[D]=G,j[U]=B,D=U;else break e}}return F}function i(j,F){var B=j.sortIndex-F.sortIndex;return B!==0?B:j.id-F.id}if(typeof performance=="object"&&typeof performance.now=="function"){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var l=[],c=[],u=1,f=null,d=3,h=!1,p=!1,v=!1,g=typeof setTimeout=="function"?setTimeout:null,m=typeof clearTimeout=="function"?clearTimeout:null,y=typeof setImmediate!="undefined"?setImmediate:null;typeof navigator!="undefined"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function x(j){for(var F=n(c);F!==null;){if(F.callback===null)r(c);else if(F.startTime<=j)r(c),F.sortIndex=F.expirationTime,t(l,F);else break;F=n(c)}}function S(j){if(v=!1,x(j),!p)if(n(l)!==null)p=!0,N(w);else{var F=n(c);F!==null&&L(S,F.startTime-j)}}function w(j,F){p=!1,v&&(v=!1,m(O),O=-1),h=!0;var B=d;try{for(x(F),f=n(l);f!==null&&(!(f.expirationTime>F)||j&&!M());){var D=f.callback;if(typeof D=="function"){f.callback=null,d=f.priorityLevel;var z=D(f.expirationTime<=F);F=e.unstable_now(),typeof z=="function"?f.callback=z:f===n(l)&&r(l),x(F)}else r(l);f=n(l)}if(f!==null)var W=!0;else{var q=n(c);q!==null&&L(S,q.startTime-F),W=!1}return W}finally{f=null,d=B,h=!1}}var C=!1,E=null,O=-1,$=5,P=-1;function M(){return!(e.unstable_now()-P<$)}function k(){if(E!==null){var j=e.unstable_now();P=j;var F=!0;try{F=E(!0,j)}finally{F?T():(C=!1,E=null)}}else C=!1}var T;if(typeof y=="function")T=function(){y(k)};else if(typeof MessageChannel!="undefined"){var R=new MessageChannel,A=R.port2;R.port1.onmessage=k,T=function(){A.postMessage(null)}}else T=function(){g(k,0)};function N(j){E=j,C||(C=!0,T())}function L(j,F){O=g(function(){j(e.unstable_now())},F)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(j){j.callback=null},e.unstable_continueExecution=function(){p||h||(p=!0,N(w))},e.unstable_forceFrameRate=function(j){0>j||125D?(j.sortIndex=B,t(c,j),n(l)===null&&j===n(c)&&(v?(m(O),O=-1):v=!0,L(S,B-D))):(j.sortIndex=z,t(l,j),p||h||(p=!0,N(w))),j},e.unstable_shouldYield=M,e.unstable_wrapCallback=function(j){var F=d;return function(){var B=d;d=F;try{return j.apply(this,arguments)}finally{d=B}}}})(az),iz.exports=az;var cSe=iz.exports;/** + */var RW;function Gxe(){return RW||(RW=1,function(e){function t(j,F){var W=j.length;j.push(F);e:for(;0>>1,U=j[G];if(0>>1;Gi(J,W))eei(Z,J)?(j[G]=Z,j[ee]=W,G=ee):(j[G]=J,j[X]=W,G=X);else if(eei(Z,W))j[G]=Z,j[ee]=W,G=ee;else break e}}return F}function i(j,F){var W=j.sortIndex-F.sortIndex;return W!==0?W:j.id-F.id}if(e.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var l=[],c=[],u=1,f=null,d=3,h=!1,p=!1,m=!1,g=!1,b=typeof setTimeout=="function"?setTimeout:null,x=typeof clearTimeout=="function"?clearTimeout:null,C=typeof setImmediate!="undefined"?setImmediate:null;function O(j){for(var F=n(c);F!==null;){if(F.callback===null)r(c);else if(F.startTime<=j)r(c),F.sortIndex=F.expirationTime,t(l,F);else break;F=n(c)}}function E(j){if(m=!1,O(j),!p)if(n(l)!==null)p=!0,$||($=!0,H());else{var F=n(c);F!==null&&V(E,F.startTime-j)}}var $=!1,R=-1,A=5,P=-1;function k(){return g?!0:!(e.unstable_now()-Pj&&k());){var G=f.callback;if(typeof G=="function"){f.callback=null,d=f.priorityLevel;var U=G(f.expirationTime<=j);if(j=e.unstable_now(),typeof U=="function"){f.callback=U,O(j),F=!0;break t}f===n(l)&&r(l),O(j)}else r(l);f=n(l)}if(f!==null)F=!0;else{var q=n(c);q!==null&&V(E,q.startTime-j),F=!1}}break e}finally{f=null,d=W,h=!1}F=void 0}}finally{F?H():$=!1}}}var H;if(typeof C=="function")H=function(){C(N)};else if(typeof MessageChannel!="undefined"){var D=new MessageChannel,z=D.port2;D.port1.onmessage=N,H=function(){z.postMessage(null)}}else H=function(){b(N,0)};function V(j,F){R=b(function(){j(e.unstable_now())},F)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(j){j.callback=null},e.unstable_forceFrameRate=function(j){0>j||125G?(j.sortIndex=W,t(c,j),n(l)===null&&j===n(c)&&(m?(x(R),R=-1):m=!0,V(E,W-G))):(j.sortIndex=U,t(l,j),p||h||(p=!0,$||($=!0,H()))),j},e.unstable_shouldYield=k,e.unstable_wrapCallback=function(j){var F=d;return function(){var W=d;d=F;try{return j.apply(this,arguments)}finally{d=W}}}}(b6)),b6}var AW;function Kxe(){return AW||(AW=1,y6.exports=Gxe()),y6.exports}var x6={exports:{}},ru={};/** * @license React - * react-dom.production.min.js + * react-dom.production.js * - * Copyright (c) Facebook, Inc. and its affiliates. + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var PW;function Yxe(){if(PW)return ru;PW=1;var e=h4();function t(l){var c="https://react.dev/errors/"+l;if(1t}return!1}function Go(e,t,n,r,i,a,o){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=i,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=a,this.removeEmptyString=o}var uo={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){uo[e]=new Go(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];uo[t]=new Go(t,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){uo[e]=new Go(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){uo[e]=new Go(e,2,!1,e,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){uo[e]=new Go(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){uo[e]=new Go(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){uo[e]=new Go(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){uo[e]=new Go(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){uo[e]=new Go(e,5,!1,e.toLowerCase(),null,!1,!1)});var DM=/[\-:]([a-z])/g;function FM(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(DM,FM);uo[t]=new Go(t,1,!1,e,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(DM,FM);uo[t]=new Go(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(DM,FM);uo[t]=new Go(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){uo[e]=new Go(e,1,!1,e.toLowerCase(),null,!1,!1)}),uo.xlinkHref=new Go("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){uo[e]=new Go(e,1,!1,e.toLowerCase(),null,!0,!0)});function BM(e,t,n,r){var i=uo.hasOwnProperty(t)?uo[t]:null;(i!==null?i.type!==0:r||!(2s||i[o]!==a[s]){var l=` -`+i[o].replace(" at new "," at ");return e.displayName&&l.includes("")&&(l=l.replace("",e.displayName)),l}while(1<=o&&0<=s);break}}}finally{KM=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?My(e):""}function vSe(e){switch(e.tag){case 5:return My(e.type);case 16:return My("Lazy");case 13:return My("Suspense");case 19:return My("SuspenseList");case 0:case 2:case 15:return e=YM(e.type,!1),e;case 11:return e=YM(e.type.render,!1),e;case 1:return e=YM(e.type,!0),e;default:return""}}function XM(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case ng:return"Fragment";case tg:return"Portal";case HM:return"Profiler";case zM:return"StrictMode";case VM:return"Suspense";case qM:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case uz:return(e.displayName||"Context")+".Consumer";case cz:return(e._context.displayName||"Context")+".Provider";case WM:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case UM:return t=e.displayName||null,t!==null?t:XM(e.type)||"Memo";case Jf:t=e._payload,e=e._init;try{return XM(e(t))}catch(n){}}return null}function gSe(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return XM(t);case 8:return t===zM?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function ed(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function hz(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function mSe(e){var t=hz(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n!="undefined"&&typeof n.get=="function"&&typeof n.set=="function"){var i=n.get,a=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(o){r=""+o,a.call(this,o)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(o){r=""+o},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function LS(e){e._valueTracker||(e._valueTracker=mSe(e))}function pz(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=hz(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function jS(e){if(e=e||(typeof document!="undefined"?document:void 0),typeof e=="undefined")return null;try{return e.activeElement||e.body}catch(t){return e.body}}function ZM(e,t){var n=t.checked;return Bi({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n!=null?n:e._wrapperState.initialChecked})}function vz(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=ed(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function gz(e,t){t=t.checked,t!=null&&BM(e,"checked",t,!1)}function QM(e,t){gz(e,t);var n=ed(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?JM(e,t.type,n):t.hasOwnProperty("defaultValue")&&JM(e,t.type,ed(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function mz(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function JM(e,t,n){(t!=="number"||jS(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var ky=Array.isArray;function rg(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i"+t.valueOf().toString()+"",t=DS.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Ty(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Ry={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ySe=["Webkit","ms","Moz","O"];Object.keys(Ry).forEach(function(e){ySe.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Ry[t]=Ry[e]})});function Cz(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||Ry.hasOwnProperty(e)&&Ry[e]?(""+t).trim():t+"px"}function Ez(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,i=Cz(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,i):e[n]=i}}var bSe=Bi({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function nk(e,t){if(t){if(bSe[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(Dt(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(Dt(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(Dt(61))}if(t.style!=null&&typeof t.style!="object")throw Error(Dt(62))}}function rk(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var ik=null;function ak(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var ok=null,ig=null,ag=null;function Oz(e){if(e=e1(e)){if(typeof ok!="function")throw Error(Dt(280));var t=e.stateNode;t&&(t=sw(t),ok(e.stateNode,e.type,t))}}function _z(e){ig?ag?ag.push(e):ag=[e]:ig=e}function $z(){if(ig){var e=ig,t=ag;if(ag=ig=null,Oz(e),t)for(e=0;e>>=0,e===0?32:31-(kSe(e)/TSe|0)|0}var WS=64,VS=4194304;function Ly(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function qS(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,i=e.suspendedLanes,a=e.pingedLanes,o=n&268435455;if(o!==0){var s=o&~i;s!==0?r=Ly(s):(a&=o,a!==0&&(r=Ly(a)))}else o=n&~i,o!==0?r=Ly(o):a!==0&&(r=Ly(a));if(r===0)return 0;if(t!==0&&t!==r&&!(t&i)&&(i=r&-r,a=t&-t,i>=a||i===16&&(a&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function jy(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-lc(t),e[t]=n}function NSe(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=qy),tH=" ",nH=!1;function rH(e,t){switch(e){case"keyup":return cwe.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function iH(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var lg=!1;function fwe(e,t){switch(e){case"compositionend":return iH(t);case"keypress":return t.which!==32?null:(nH=!0,tH);case"textInput":return e=t.data,e===tH&&nH?null:e;default:return null}}function dwe(e,t){if(lg)return e==="compositionend"||!Ek&&rH(e,t)?(e=Yz(),XS=yk=ad=null,lg=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=fH(n)}}function hH(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?hH(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function pH(){for(var e=window,t=jS();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch(r){n=!1}if(n)e=t.contentWindow;else break;t=jS(e.document)}return t}function $k(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function Swe(e){var t=pH(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&hH(n.ownerDocument.documentElement,n)){if(r!==null&&$k(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var i=n.textContent.length,a=Math.min(r.start,i);r=r.end===void 0?a:Math.min(r.end,i),!e.extend&&a>r&&(i=r,r=a,a=i),i=dH(n,a);var o=dH(n,r);i&&o&&(e.rangeCount!==1||e.anchorNode!==i.node||e.anchorOffset!==i.offset||e.focusNode!==o.node||e.focusOffset!==o.offset)&&(t=t.createRange(),t.setStart(i.node,i.offset),e.removeAllRanges(),a>r?(e.addRange(t),e.extend(o.node,o.offset)):(t.setEnd(o.node,o.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,cg=null,Pk=null,Yy=null,Mk=!1;function vH(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Mk||cg==null||cg!==jS(r)||(r=cg,"selectionStart"in r&&$k(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Yy&&Ky(Yy,r)||(Yy=r,r=iw(Pk,"onSelect"),0pg||(e.current=zk[pg],zk[pg]=null,pg--)}function vi(e,t){pg++,zk[pg]=e.current,e.current=t}var cd={},$o=ld(cd),hs=ld(!1),Xh=cd;function vg(e,t){var n=e.type.contextTypes;if(!n)return cd;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var i={},a;for(a in n)i[a]=t[a];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function ps(e){return e=e.childContextTypes,e!=null}function lw(){Ei(hs),Ei($o)}function kH(e,t,n){if($o.current!==cd)throw Error(Dt(168));vi($o,t),vi(hs,n)}function TH(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var i in r)if(!(i in t))throw Error(Dt(108,gSe(e)||"Unknown",i));return Bi({},n,r)}function cw(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||cd,Xh=$o.current,vi($o,e),vi(hs,hs.current),!0}function RH(e,t,n){var r=e.stateNode;if(!r)throw Error(Dt(169));n?(e=TH(e,t,Xh),r.__reactInternalMemoizedMergedChildContext=e,Ei(hs),Ei($o),vi($o,e)):Ei(hs),vi(hs,n)}var Gu=null,uw=!1,Hk=!1;function IH(e){Gu===null?Gu=[e]:Gu.push(e)}function Iwe(e){uw=!0,IH(e)}function ud(){if(!Hk&&Gu!==null){Hk=!0;var e=0,t=Kr;try{var n=Gu;for(Kr=1;e>=o,i-=o,Ku=1<<32-lc(t)+i|n<O?($=E,E=null):$=E.sibling;var P=d(m,E,x[O],S);if(P===null){E===null&&(E=$);break}e&&E&&P.alternate===null&&t(m,E),y=a(P,y,O),C===null?w=P:C.sibling=P,C=P,E=$}if(O===x.length)return n(m,E),ki&&Qh(m,O),w;if(E===null){for(;OO?($=E,E=null):$=E.sibling;var M=d(m,E,P.value,S);if(M===null){E===null&&(E=$);break}e&&E&&M.alternate===null&&t(m,E),y=a(M,y,O),C===null?w=M:C.sibling=M,C=M,E=$}if(P.done)return n(m,E),ki&&Qh(m,O),w;if(E===null){for(;!P.done;O++,P=x.next())P=f(m,P.value,S),P!==null&&(y=a(P,y,O),C===null?w=P:C.sibling=P,C=P);return ki&&Qh(m,O),w}for(E=r(m,E);!P.done;O++,P=x.next())P=h(E,m,O,P.value,S),P!==null&&(e&&P.alternate!==null&&E.delete(P.key===null?O:P.key),y=a(P,y,O),C===null?w=P:C.sibling=P,C=P);return e&&E.forEach(function(k){return t(m,k)}),ki&&Qh(m,O),w}function g(m,y,x,S){if(typeof x=="object"&&x!==null&&x.type===ng&&x.key===null&&(x=x.props.children),typeof x=="object"&&x!==null){switch(x.$$typeof){case NS:e:{for(var w=x.key,C=y;C!==null;){if(C.key===w){if(w=x.type,w===ng){if(C.tag===7){n(m,C.sibling),y=i(C,x.props.children),y.return=m,m=y;break e}}else if(C.elementType===w||typeof w=="object"&&w!==null&&w.$$typeof===Jf&&FH(w)===C.type){n(m,C.sibling),y=i(C,x.props),y.ref=t1(m,C,x),y.return=m,m=y;break e}n(m,C);break}else t(m,C);C=C.sibling}x.type===ng?(y=op(x.props.children,m.mode,S,x.key),y.return=m,m=y):(S=Dw(x.type,x.key,x.props,null,m.mode,S),S.ref=t1(m,y,x),S.return=m,m=S)}return o(m);case tg:e:{for(C=x.key;y!==null;){if(y.key===C)if(y.tag===4&&y.stateNode.containerInfo===x.containerInfo&&y.stateNode.implementation===x.implementation){n(m,y.sibling),y=i(y,x.children||[]),y.return=m,m=y;break e}else{n(m,y);break}else t(m,y);y=y.sibling}y=F4(x,m.mode,S),y.return=m,m=y}return o(m);case Jf:return C=x._init,g(m,y,C(x._payload),S)}if(ky(x))return p(m,y,x,S);if(Py(x))return v(m,y,x,S);pw(m,x)}return typeof x=="string"&&x!==""||typeof x=="number"?(x=""+x,y!==null&&y.tag===6?(n(m,y.sibling),y=i(y,x),y.return=m,m=y):(n(m,y),y=D4(x,m.mode,S),y.return=m,m=y),o(m)):n(m,y)}return g}var bg=BH(!0),zH=BH(!1),vw=ld(null),gw=null,xg=null,Kk=null;function Yk(){Kk=xg=gw=null}function Xk(e){var t=vw.current;Ei(vw),e._currentValue=t}function Zk(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,r!==null&&(r.childLanes|=t)):r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function Sg(e,t){gw=e,Kk=xg=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&t&&(vs=!0),e.firstContext=null)}function hl(e){var t=e._currentValue;if(Kk!==e)if(e={context:e,memoizedValue:t,next:null},xg===null){if(gw===null)throw Error(Dt(308));xg=e,gw.dependencies={lanes:0,firstContext:e}}else xg=xg.next=e;return t}var Jh=null;function Qk(e){Jh===null?Jh=[e]:Jh.push(e)}function HH(e,t,n,r){var i=t.interleaved;return i===null?(n.next=n,Qk(t)):(n.next=i.next,i.next=n),t.interleaved=n,Xu(e,r)}function Xu(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var fd=!1;function Jk(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function WH(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Zu(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function dd(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,Mr&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,Xu(e,n)}return i=r.interleaved,i===null?(t.next=t,Qk(r)):(t.next=i.next,i.next=t),r.interleaved=t,Xu(e,n)}function mw(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,hk(e,n)}}function VH(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,effects:r.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function yw(e,t,n,r){var i=e.updateQueue;fd=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var l=s,c=l.next;l.next=null,o===null?a=c:o.next=c,o=l;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=c:s.next=c,u.lastBaseUpdate=l))}if(a!==null){var f=i.baseState;o=0,u=c=l=null,s=a;do{var d=s.lane,h=s.eventTime;if((r&d)===d){u!==null&&(u=u.next={eventTime:h,lane:0,tag:s.tag,payload:s.payload,callback:s.callback,next:null});e:{var p=e,v=s;switch(d=t,h=n,v.tag){case 1:if(p=v.payload,typeof p=="function"){f=p.call(h,f,d);break e}f=p;break e;case 3:p.flags=p.flags&-65537|128;case 0:if(p=v.payload,d=typeof p=="function"?p.call(h,f,d):p,d==null)break e;f=Bi({},f,d);break e;case 2:fd=!0}}s.callback!==null&&s.lane!==0&&(e.flags|=64,d=i.effects,d===null?i.effects=[s]:d.push(s))}else h={eventTime:h,lane:d,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(c=u=h,l=f):u=u.next=h,o|=d;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;d=s,s=d.next,d.next=null,i.lastBaseUpdate=d,i.shared.pending=null}}while(!0);if(u===null&&(l=f),i.baseState=l,i.firstBaseUpdate=c,i.lastBaseUpdate=u,t=i.shared.interleaved,t!==null){i=t;do o|=i.lane,i=i.next;while(i!==t)}else a===null&&(i.shared.lanes=0);np|=o,e.lanes=o,e.memoizedState=f}}function qH(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;tn?n:4,e(!0);var r=i4.transition;i4.transition={};try{e(!1),t()}finally{Kr=n,i4.transition=r}}function uW(){return pl().memoizedState}function jwe(e,t,n){var r=gd(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},fW(e))dW(t,n);else if(n=HH(e,t,n,r),n!==null){var i=Yo();pc(n,e,r,i),hW(n,t,r)}}function Dwe(e,t,n){var r=gd(e),i={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(fW(e))dW(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,cc(s,o)){var l=t.interleaved;l===null?(i.next=i,Qk(t)):(i.next=l.next,l.next=i),t.interleaved=i;return}}catch(c){}finally{}n=HH(e,t,i,r),n!==null&&(i=Yo(),pc(n,e,r,i),hW(n,t,r))}}function fW(e){var t=e.alternate;return e===Hi||t!==null&&t===Hi}function dW(e,t){a1=Sw=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function hW(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,hk(e,n)}}var Ew={readContext:hl,useCallback:Po,useContext:Po,useEffect:Po,useImperativeHandle:Po,useInsertionEffect:Po,useLayoutEffect:Po,useMemo:Po,useReducer:Po,useRef:Po,useState:Po,useDebugValue:Po,useDeferredValue:Po,useTransition:Po,useMutableSource:Po,useSyncExternalStore:Po,useId:Po,unstable_isNewReconciler:!1},Fwe={readContext:hl,useCallback:function(e,t){return Jc().memoizedState=[e,t===void 0?null:t],e},useContext:hl,useEffect:nW,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,ww(4194308,4,aW.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ww(4194308,4,e,t)},useInsertionEffect:function(e,t){return ww(4,2,e,t)},useMemo:function(e,t){var n=Jc();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Jc();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=jwe.bind(null,Hi,e),[r.memoizedState,e]},useRef:function(e){var t=Jc();return e={current:e},t.memoizedState=e},useState:eW,useDebugValue:f4,useDeferredValue:function(e){return Jc().memoizedState=e},useTransition:function(){var e=eW(!1),t=e[0];return e=Lwe.bind(null,e[1]),Jc().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=Hi,i=Jc();if(ki){if(n===void 0)throw Error(Dt(407));n=n()}else{if(n=t(),Qa===null)throw Error(Dt(349));tp&30||YH(r,t,n)}i.memoizedState=n;var a={value:n,getSnapshot:t};return i.queue=a,nW(ZH.bind(null,r,a,e),[e]),r.flags|=2048,l1(9,XH.bind(null,r,a,n,t),void 0,null),n},useId:function(){var e=Jc(),t=Qa.identifierPrefix;if(ki){var n=Yu,r=Ku;n=(r&~(1<<32-lc(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=o1++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=o.createElement(n,{is:r.is}):(e=o.createElement(n),n==="select"&&(o=e,r.multiple?o.multiple=!0:r.size&&(o.size=r.size))):e=o.createElementNS(e,n),e[Zc]=t,e[Jy]=r,IW(e,t,!1,!1),t.stateNode=e;e:{switch(o=rk(n,r),n){case"dialog":Ci("cancel",e),Ci("close",e),i=r;break;case"iframe":case"object":case"embed":Ci("load",e),i=r;break;case"video":case"audio":for(i=0;i_g&&(t.flags|=128,r=!0,c1(a,!1),t.lanes=4194304)}else{if(!r)if(e=bw(o),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),c1(a,!0),a.tail===null&&a.tailMode==="hidden"&&!o.alternate&&!ki)return Mo(t),null}else 2*fa()-a.renderingStartTime>_g&&n!==1073741824&&(t.flags|=128,r=!0,c1(a,!1),t.lanes=4194304);a.isBackwards?(o.sibling=t.child,t.child=o):(n=a.last,n!==null?n.sibling=o:t.child=o,a.last=o)}return a.tail!==null?(t=a.tail,a.rendering=t,a.tail=t.sibling,a.renderingStartTime=fa(),t.sibling=null,n=zi.current,vi(zi,r?n&1|2:n&1),t):(Mo(t),null);case 22:case 23:return N4(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?Ws&1073741824&&(Mo(t),t.subtreeFlags&6&&(t.flags|=8192)):Mo(t),null;case 24:return null;case 25:return null}throw Error(Dt(156,t.tag))}function Gwe(e,t){switch(Vk(t),t.tag){case 1:return ps(t.type)&&lw(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return wg(),Ei(hs),Ei($o),r4(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return t4(t),null;case 13:if(Ei(zi),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(Dt(340));yg()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Ei(zi),null;case 4:return wg(),null;case 10:return Xk(t.type._context),null;case 22:case 23:return N4(),null;case 24:return null;default:return null}}var Pw=!1,ko=!1,Kwe=typeof WeakSet=="function"?WeakSet:Set,pn=null;function Eg(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){ea(e,t,r)}else n.current=null}function C4(e,t,n){try{n()}catch(r){ea(e,t,r)}}var LW=!1;function Ywe(e,t){if(Nk=KS,e=pH(),$k(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var i=r.anchorOffset,a=r.focusNode;r=r.focusOffset;try{n.nodeType,a.nodeType}catch(S){n=null;break e}var o=0,s=-1,l=-1,c=0,u=0,f=e,d=null;t:for(;;){for(var h;f!==n||i!==0&&f.nodeType!==3||(s=o+i),f!==a||r!==0&&f.nodeType!==3||(l=o+r),f.nodeType===3&&(o+=f.nodeValue.length),(h=f.firstChild)!==null;)d=f,f=h;for(;;){if(f===e)break t;if(d===n&&++c===i&&(s=o),d===a&&++u===r&&(l=o),(h=f.nextSibling)!==null)break;f=d,d=f.parentNode}f=h}n=s===-1||l===-1?null:{start:s,end:l}}else n=null}n=n||{start:0,end:0}}else n=null;for(Lk={focusedElem:e,selectionRange:n},KS=!1,pn=t;pn!==null;)if(t=pn,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,pn=e;else for(;pn!==null;){t=pn;try{var p=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(p!==null){var v=p.memoizedProps,g=p.memoizedState,m=t.stateNode,y=m.getSnapshotBeforeUpdate(t.elementType===t.type?v:fc(t.type,v),g);m.__reactInternalSnapshotBeforeUpdate=y}break;case 3:var x=t.stateNode.containerInfo;x.nodeType===1?x.textContent="":x.nodeType===9&&x.documentElement&&x.removeChild(x.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(Dt(163))}}catch(S){ea(t,t.return,S)}if(e=t.sibling,e!==null){e.return=t.return,pn=e;break}pn=t.return}return p=LW,LW=!1,p}function u1(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var i=r=r.next;do{if((i.tag&e)===e){var a=i.destroy;i.destroy=void 0,a!==void 0&&C4(t,n,a)}i=i.next}while(i!==r)}}function Mw(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function E4(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function jW(e){var t=e.alternate;t!==null&&(e.alternate=null,jW(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Zc],delete t[Jy],delete t[Bk],delete t[Twe],delete t[Rwe])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function DW(e){return e.tag===5||e.tag===3||e.tag===4}function FW(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||DW(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function O4(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=ow));else if(r!==4&&(e=e.child,e!==null))for(O4(e,t,n),e=e.sibling;e!==null;)O4(e,t,n),e=e.sibling}function _4(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(_4(e,t,n),e=e.sibling;e!==null;)_4(e,t,n),e=e.sibling}var fo=null,dc=!1;function hd(e,t,n){for(n=n.child;n!==null;)BW(e,t,n),n=n.sibling}function BW(e,t,n){if(Xc&&typeof Xc.onCommitFiberUnmount=="function")try{Xc.onCommitFiberUnmount(HS,n)}catch(s){}switch(n.tag){case 5:ko||Eg(n,t);case 6:var r=fo,i=dc;fo=null,hd(e,t,n),fo=r,dc=i,fo!==null&&(dc?(e=fo,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):fo.removeChild(n.stateNode));break;case 18:fo!==null&&(dc?(e=fo,n=n.stateNode,e.nodeType===8?Fk(e.parentNode,n):e.nodeType===1&&Fk(e,n),Hy(e)):Fk(fo,n.stateNode));break;case 4:r=fo,i=dc,fo=n.stateNode.containerInfo,dc=!0,hd(e,t,n),fo=r,dc=i;break;case 0:case 11:case 14:case 15:if(!ko&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){i=r=r.next;do{var a=i,o=a.destroy;a=a.tag,o!==void 0&&(a&2||a&4)&&C4(n,t,o),i=i.next}while(i!==r)}hd(e,t,n);break;case 1:if(!ko&&(Eg(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(s){ea(n,t,s)}hd(e,t,n);break;case 21:hd(e,t,n);break;case 22:n.mode&1?(ko=(r=ko)||n.memoizedState!==null,hd(e,t,n),ko=r):hd(e,t,n);break;default:hd(e,t,n)}}function zW(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new Kwe),t.forEach(function(r){var i=iCe.bind(null,e,r);n.has(r)||(n.add(r),r.then(i,i))})}}function hc(e,t){var n=t.deletions;if(n!==null)for(var r=0;ri&&(i=o),r&=~a}if(r=i,r=fa()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Zwe(r/1960))-r,10e?16:e,vd===null)var r=!1;else{if(e=vd,vd=null,Aw=0,Mr&6)throw Error(Dt(331));var i=Mr;for(Mr|=4,pn=e.current;pn!==null;){var a=pn,o=a.child;if(pn.flags&16){var s=a.deletions;if(s!==null){for(var l=0;lfa()-M4?ip(e,0):P4|=n),ms(e,t)}function eV(e,t){t===0&&(e.mode&1?(t=VS,VS<<=1,!(VS&130023424)&&(VS=4194304)):t=1);var n=Yo();e=Xu(e,t),e!==null&&(jy(e,t,n),ms(e,n))}function rCe(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),eV(e,n)}function iCe(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,i=e.memoizedState;i!==null&&(n=i.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(Dt(314))}r!==null&&r.delete(t),eV(e,n)}var tV;tV=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||hs.current)vs=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return vs=!1,qwe(e,t,n);vs=!!(e.flags&131072)}else vs=!1,ki&&t.flags&1048576&&AH(t,dw,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;$w(e,t),e=t.pendingProps;var i=vg(t,$o.current);Sg(t,n),i=o4(null,t,r,e,i,n);var a=s4();return t.flags|=1,typeof i=="object"&&i!==null&&typeof i.render=="function"&&i.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,ps(r)?(a=!0,cw(t)):a=!1,t.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,Jk(t),i.updater=Ow,t.stateNode=i,i._reactInternals=t,h4(t,r,e,n),t=m4(null,t,r,!0,a,n)):(t.tag=0,ki&&a&&Wk(t),Ko(null,t,i,n),t=t.child),t;case 16:r=t.elementType;e:{switch($w(e,t),e=t.pendingProps,i=r._init,r=i(r._payload),t.type=r,i=t.tag=oCe(r),e=fc(r,e),i){case 0:t=g4(null,t,r,e,n);break e;case 1:t=$W(null,t,r,e,n);break e;case 11:t=wW(null,t,r,e,n);break e;case 14:t=CW(null,t,r,fc(r.type,e),n);break e}throw Error(Dt(306,r,""))}return t;case 0:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:fc(r,i),g4(e,t,r,i,n);case 1:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:fc(r,i),$W(e,t,r,i,n);case 3:e:{if(PW(t),e===null)throw Error(Dt(387));r=t.pendingProps,a=t.memoizedState,i=a.element,WH(e,t),yw(t,r,null,n);var o=t.memoizedState;if(r=o.element,a.isDehydrated)if(a={element:r,isDehydrated:!1,cache:o.cache,pendingSuspenseBoundaries:o.pendingSuspenseBoundaries,transitions:o.transitions},t.updateQueue.baseState=a,t.memoizedState=a,t.flags&256){i=Cg(Error(Dt(423)),t),t=MW(e,t,r,n,i);break e}else if(r!==i){i=Cg(Error(Dt(424)),t),t=MW(e,t,r,n,i);break e}else for(Hs=sd(t.stateNode.containerInfo.firstChild),zs=t,ki=!0,uc=null,n=zH(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(yg(),r===i){t=Qu(e,t,n);break e}Ko(e,t,r,n)}t=t.child}return t;case 5:return UH(t),e===null&&Uk(t),r=t.type,i=t.pendingProps,a=e!==null?e.memoizedProps:null,o=i.children,jk(r,i)?o=null:a!==null&&jk(r,a)&&(t.flags|=32),_W(e,t),Ko(e,t,o,n),t.child;case 6:return e===null&&Uk(t),null;case 13:return kW(e,t,n);case 4:return e4(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=bg(t,null,r,n):Ko(e,t,r,n),t.child;case 11:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:fc(r,i),wW(e,t,r,i,n);case 7:return Ko(e,t,t.pendingProps,n),t.child;case 8:return Ko(e,t,t.pendingProps.children,n),t.child;case 12:return Ko(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,i=t.pendingProps,a=t.memoizedProps,o=i.value,vi(vw,r._currentValue),r._currentValue=o,a!==null)if(cc(a.value,o)){if(a.children===i.children&&!hs.current){t=Qu(e,t,n);break e}}else for(a=t.child,a!==null&&(a.return=t);a!==null;){var s=a.dependencies;if(s!==null){o=a.child;for(var l=s.firstContext;l!==null;){if(l.context===r){if(a.tag===1){l=Zu(-1,n&-n),l.tag=2;var c=a.updateQueue;if(c!==null){c=c.shared;var u=c.pending;u===null?l.next=l:(l.next=u.next,u.next=l),c.pending=l}}a.lanes|=n,l=a.alternate,l!==null&&(l.lanes|=n),Zk(a.return,n,t),s.lanes|=n;break}l=l.next}}else if(a.tag===10)o=a.type===t.type?null:a.child;else if(a.tag===18){if(o=a.return,o===null)throw Error(Dt(341));o.lanes|=n,s=o.alternate,s!==null&&(s.lanes|=n),Zk(o,n,t),o=a.sibling}else o=a.child;if(o!==null)o.return=a;else for(o=a;o!==null;){if(o===t){o=null;break}if(a=o.sibling,a!==null){a.return=o.return,o=a;break}o=o.return}a=o}Ko(e,t,i.children,n),t=t.child}return t;case 9:return i=t.type,r=t.pendingProps.children,Sg(t,n),i=hl(i),r=r(i),t.flags|=1,Ko(e,t,r,n),t.child;case 14:return r=t.type,i=fc(r,t.pendingProps),i=fc(r.type,i),CW(e,t,r,i,n);case 15:return EW(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:fc(r,i),$w(e,t),t.tag=1,ps(r)?(e=!0,cw(t)):e=!1,Sg(t,n),vW(t,r,i),h4(t,r,i,n),m4(null,t,r,!0,e,n);case 19:return RW(e,t,n);case 22:return OW(e,t,n)}throw Error(Dt(156,t.tag))};function nV(e,t){return Nz(e,t)}function aCe(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function gl(e,t,n,r){return new aCe(e,t,n,r)}function j4(e){return e=e.prototype,!(!e||!e.isReactComponent)}function oCe(e){if(typeof e=="function")return j4(e)?1:0;if(e!=null){if(e=e.$$typeof,e===WM)return 11;if(e===UM)return 14}return 2}function yd(e,t){var n=e.alternate;return n===null?(n=gl(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Dw(e,t,n,r,i,a){var o=2;if(r=e,typeof e=="function")j4(e)&&(o=1);else if(typeof e=="string")o=5;else e:switch(e){case ng:return op(n.children,i,a,t);case zM:o=8,i|=8;break;case HM:return e=gl(12,n,t,i|2),e.elementType=HM,e.lanes=a,e;case VM:return e=gl(13,n,t,i),e.elementType=VM,e.lanes=a,e;case qM:return e=gl(19,n,t,i),e.elementType=qM,e.lanes=a,e;case fz:return Fw(n,i,a,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case cz:o=10;break e;case uz:o=9;break e;case WM:o=11;break e;case UM:o=14;break e;case Jf:o=16,r=null;break e}throw Error(Dt(130,e==null?e:typeof e,""))}return t=gl(o,n,t,i),t.elementType=e,t.type=r,t.lanes=a,t}function op(e,t,n,r){return e=gl(7,e,r,t),e.lanes=n,e}function Fw(e,t,n,r){return e=gl(22,e,r,t),e.elementType=fz,e.lanes=n,e.stateNode={isHidden:!1},e}function D4(e,t,n){return e=gl(6,e,null,t),e.lanes=n,e}function F4(e,t,n){return t=gl(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function sCe(e,t,n,r,i){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=dk(0),this.expirationTimes=dk(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=dk(0),this.identifierPrefix=r,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function B4(e,t,n,r,i,a,o,s,l){return e=new sCe(e,t,n,s,l),t===1?(t=1,a===!0&&(t|=8)):t=0,a=gl(3,null,null,t),e.current=a,a.stateNode=e,a.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Jk(a),e}function lCe(e,t,n){var r=3U||(y.current=G[U],G[U]=null,U--)}function J(y,S){U++,G[U]=y.current,y.current=S}var ee=q(null),Z=q(null),ie=q(null),ae=q(null);function re(y,S){switch(J(ie,S),J(Z,y),J(ee,null),S.nodeType){case 9:case 11:y=(y=S.documentElement)&&(y=y.namespaceURI)?ko(y):0;break;default:if(y=S.tagName,S=S.namespaceURI)S=ko(S),y=Ko(S,y);else switch(y){case"svg":y=1;break;case"math":y=2;break;default:y=0}}X(ee),J(ee,y)}function ce(){X(ee),X(Z),X(ie)}function fe(y){y.memoizedState!==null&&J(ae,y);var S=ee.current,T=Ko(S,y.type);S!==T&&(J(Z,y),J(ee,T))}function pe(y){Z.current===y&&(X(ee),X(Z)),ae.current===y&&(X(ae),db._currentValue=W)}var he=Object.prototype.hasOwnProperty,ge=e.unstable_scheduleCallback,me=e.unstable_cancelCallback,ue=e.unstable_shouldYield,ve=e.unstable_requestPaint,xe=e.unstable_now,Me=e.unstable_getCurrentPriorityLevel,Ne=e.unstable_ImmediatePriority,ke=e.unstable_UserBlockingPriority,$e=e.unstable_NormalPriority,ze=e.unstable_LowPriority,Oe=e.unstable_IdlePriority,Le=e.log,Ge=e.unstable_setDisableYieldValue,We=null,Xe=null;function st(y){if(typeof Le=="function"&&Ge(y),Xe&&typeof Xe.setStrictMode=="function")try{Xe.setStrictMode(We,y)}catch(S){}}var et=Math.clz32?Math.clz32:Ke,nt=Math.log,ct=Math.LN2;function Ke(y){return y>>>=0,y===0?32:31-(nt(y)/ct|0)|0}var vt=256,Ie=4194304;function Ve(y){var S=y&42;if(S!==0)return S;switch(y&-y){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return y&4194048;case 4194304:case 8388608:case 16777216:case 33554432:return y&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return y}}function qe(y,S,T){var L=y.pendingLanes;if(L===0)return 0;var Y=0,te=y.suspendedLanes,be=y.pingedLanes;y=y.warmLanes;var Pe=L&134217727;return Pe!==0?(L=Pe&~te,L!==0?Y=Ve(L):(be&=Pe,be!==0?Y=Ve(be):T||(T=Pe&~y,T!==0&&(Y=Ve(T))))):(Pe=L&~te,Pe!==0?Y=Ve(Pe):be!==0?Y=Ve(be):T||(T=L&~y,T!==0&&(Y=Ve(T)))),Y===0?0:S!==0&&S!==Y&&(S&te)===0&&(te=Y&-Y,T=S&-S,te>=T||te===32&&(T&4194048)!==0)?S:Y}function Fe(y,S){return(y.pendingLanes&~(y.suspendedLanes&~y.pingedLanes)&S)===0}function it(y,S){switch(y){case 1:case 2:case 4:case 8:case 64:return S+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return S+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Ot(){var y=vt;return vt<<=1,(vt&4194048)===0&&(vt=256),y}function Vt(){var y=Ie;return Ie<<=1,(Ie&62914560)===0&&(Ie=4194304),y}function ln(y){for(var S=[],T=0;31>T;T++)S.push(y);return S}function Ct(y,S){y.pendingLanes|=S,S!==268435456&&(y.suspendedLanes=0,y.pingedLanes=0,y.warmLanes=0)}function jt(y,S,T,L,Y,te){var be=y.pendingLanes;y.pendingLanes=T,y.suspendedLanes=0,y.pingedLanes=0,y.warmLanes=0,y.expiredLanes&=T,y.entangledLanes&=T,y.errorRecoveryDisabledLanes&=T,y.shellSuspendCounter=0;var Pe=y.entanglements,Je=y.expirationTimes,Mt=y.hiddenUpdates;for(T=be&~T;0)":-1Y||Je[L]!==Mt[Y]){var rn=` +`+Je[L].replace(" at new "," at ");return y.displayName&&rn.includes("")&&(rn=rn.replace("",y.displayName)),rn}while(1<=L&&0<=Y);break}}}finally{Fn=!1,Error.prepareStackTrace=T}return(T=y?y.displayName||y.name:"")?Pn(T):""}function fr(y){switch(y.tag){case 26:case 27:case 5:return Pn(y.type);case 16:return Pn("Lazy");case 13:return Pn("Suspense");case 19:return Pn("SuspenseList");case 0:case 15:return mr(y.type,!1);case 11:return mr(y.type.render,!1);case 1:return mr(y.type,!0);case 31:return Pn("Activity");default:return""}}function Hr(y){try{var S="";do S+=fr(y),y=y.return;while(y);return S}catch(T){return` +Error generating stack: `+T.message+` +`+T.stack}}function kr(y){switch(typeof y){case"bigint":case"boolean":case"number":case"string":case"undefined":return y;case"object":return y;default:return""}}function Li(y){var S=y.type;return(y=y.nodeName)&&y.toLowerCase()==="input"&&(S==="checkbox"||S==="radio")}function ea(y){var S=Li(y)?"checked":"value",T=Object.getOwnPropertyDescriptor(y.constructor.prototype,S),L=""+y[S];if(!y.hasOwnProperty(S)&&typeof T!="undefined"&&typeof T.get=="function"&&typeof T.set=="function"){var Y=T.get,te=T.set;return Object.defineProperty(y,S,{configurable:!0,get:function(){return Y.call(this)},set:function(be){L=""+be,te.call(this,be)}}),Object.defineProperty(y,S,{enumerable:T.enumerable}),{getValue:function(){return L},setValue:function(be){L=""+be},stopTracking:function(){y._valueTracker=null,delete y[S]}}}}function oi(y){y._valueTracker||(y._valueTracker=ea(y))}function fa(y){if(!y)return!1;var S=y._valueTracker;if(!S)return!0;var T=S.getValue(),L="";return y&&(L=Li(y)?y.checked?"true":"false":y.value),y=L,y!==T?(S.setValue(y),!0):!1}function yr(y){if(y=y||(typeof document!="undefined"?document:void 0),typeof y=="undefined")return null;try{return y.activeElement||y.body}catch(S){return y.body}}var hn=/[\n"\\]/g;function Zt(y){return y.replace(hn,function(S){return"\\"+S.charCodeAt(0).toString(16)+" "})}function Er(y,S,T,L,Y,te,be,Pe){y.name="",be!=null&&typeof be!="function"&&typeof be!="symbol"&&typeof be!="boolean"?y.type=be:y.removeAttribute("type"),S!=null?be==="number"?(S===0&&y.value===""||y.value!=S)&&(y.value=""+kr(S)):y.value!==""+kr(S)&&(y.value=""+kr(S)):be!=="submit"&&be!=="reset"||y.removeAttribute("value"),S!=null?_n(y,be,kr(S)):T!=null?_n(y,be,kr(T)):L!=null&&y.removeAttribute("value"),Y==null&&te!=null&&(y.defaultChecked=!!te),Y!=null&&(y.checked=Y&&typeof Y!="function"&&typeof Y!="symbol"),Pe!=null&&typeof Pe!="function"&&typeof Pe!="symbol"&&typeof Pe!="boolean"?y.name=""+kr(Pe):y.removeAttribute("name")}function Tn(y,S,T,L,Y,te,be,Pe){if(te!=null&&typeof te!="function"&&typeof te!="symbol"&&typeof te!="boolean"&&(y.type=te),S!=null||T!=null){if(!(te!=="submit"&&te!=="reset"||S!=null))return;T=T!=null?""+kr(T):"",S=S!=null?""+kr(S):T,Pe||S===y.value||(y.value=S),y.defaultValue=S}L=L!=null?L:Y,L=typeof L!="function"&&typeof L!="symbol"&&!!L,y.checked=Pe?y.checked:!!L,y.defaultChecked=!!L,be!=null&&typeof be!="function"&&typeof be!="symbol"&&typeof be!="boolean"&&(y.name=be)}function _n(y,S,T){S==="number"&&yr(y.ownerDocument)===y||y.defaultValue===""+T||(y.defaultValue=""+T)}function Zn(y,S,T,L){if(y=y.options,S){S={};for(var Y=0;Y=wm),v0=" ",c2=!1;function JC(y,S){switch(y){case"keyup":return Sm.indexOf(S.keyCode)!==-1;case"keydown":return S.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function w1(y){return y=y.detail,typeof y=="object"&&"data"in y?y.data:null}var Mh=!1;function V3(y,S){switch(y){case"compositionend":return w1(S);case"keypress":return S.which!==32?null:(c2=!0,v0);case"textInput":return y=S.data,y===v0&&c2?null:y;default:return null}}function eE(y,S){if(Mh)return y==="compositionend"||!m0&&JC(y,S)?(y=bu(),Fl=gi=Xi=null,Mh=!1,y):null;switch(y){case"paste":return null;case"keypress":if(!(S.ctrlKey||S.altKey||S.metaKey)||S.ctrlKey&&S.altKey){if(S.char&&1=S)return{node:T,offset:S-y};y=L}e:{for(;T;){if(T.nextSibling){T=T.nextSibling;break e}T=T.parentNode}T=void 0}T=dc(T)}}function h2(y,S){return y&&S?y===S?!0:y&&y.nodeType===3?!1:S&&S.nodeType===3?h2(y,S.parentNode):"contains"in y?y.contains(S):y.compareDocumentPosition?!!(y.compareDocumentPosition(S)&16):!1:!1}function p2(y){y=y!=null&&y.ownerDocument!=null&&y.ownerDocument.defaultView!=null?y.ownerDocument.defaultView:window;for(var S=yr(y.document);S instanceof y.HTMLIFrameElement;){try{var T=typeof S.contentWindow.location.href=="string"}catch(L){T=!1}if(T)y=S.contentWindow;else break;S=yr(y.document)}return S}function E1(y){var S=y&&y.nodeName&&y.nodeName.toLowerCase();return S&&(S==="input"&&(y.type==="text"||y.type==="search"||y.type==="tel"||y.type==="url"||y.type==="password")||S==="textarea"||y.contentEditable==="true")}var U3=Hn&&"documentMode"in document&&11>=document.documentMode,Om=null,Nh=null,yt=null,Qt=!1;function At(y,S,T){var L=T.window===T?T.document:T.nodeType===9?T:T.ownerDocument;Qt||Om==null||Om!==yr(L)||(L=Om,"selectionStart"in L&&E1(L)?L={start:L.selectionStart,end:L.selectionEnd}:(L=(L.ownerDocument&&L.ownerDocument.defaultView||window).getSelection(),L={anchorNode:L.anchorNode,anchorOffset:L.anchorOffset,focusNode:L.focusNode,focusOffset:L.focusOffset}),yt&&Zu(yt,L)||(yt=L,L=dE(Nh,"onSelect"),0>=be,Y-=be,po=1<<32-et(S)+Y|T<te?te:8;var be=j.T,Pe={};j.T=Pe,H1(y,!1,S,T);try{var Je=Y(),Mt=j.S;if(Mt!==null&&Mt(Pe,Je),Je!==null&&typeof Je=="object"&&typeof Je.then=="function"){var rn=M1(Je,L);_d(y,S,rn,Eo(y))}else _d(y,S,L,Eo(y))}catch(fn){_d(y,S,{then:function(){},status:"rejected",reason:fn},Eo())}finally{F.p=te,j.T=be}}function Vm(){}function Wm(y,S,T,L){if(y.tag!==5)throw Error(r(476));var Y=Um(y).queue;Hm(y,Y,S,W,T===null?Vm:function(){return cg(y),T(L)})}function Um(y){var S=y.memoizedState;if(S!==null)return S;S={memoizedState:W,baseState:W,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:sf,lastRenderedState:W},next:null};var T={};return S.next={memoizedState:T,baseState:T,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:sf,lastRenderedState:T},next:null},y.memoizedState=S,y=y.alternate,y!==null&&(y.memoizedState=S),S}function cg(y){var S=Um(y).next.queue;_d(y,S,{},Eo())}function qm(){return $a(db)}function lf(){return ka().memoizedState}function b2(){return ka().memoizedState}function Od(y){for(var S=y.return;S!==null;){switch(S.tag){case 24:case 3:var T=Eo();y=es(T);var L=ca(S,y,T);L!==null&&(Es(L,S,T),Gl(L,S,T)),S={cache:Bh()},y.payload=S;return}S=S.return}}function x2(y,S,T){var L=Eo();T={lane:L,revertLane:0,action:T,hasEagerState:!1,eagerState:null,next:null},R0(y)?S2(S,T):(T=Yp(y,S,T,L),T!==null&&(Es(T,y,L),w2(T,S,L)))}function F1(y,S,T){var L=Eo();_d(y,S,T,L)}function _d(y,S,T,L){var Y={lane:L,revertLane:0,action:T,hasEagerState:!1,eagerState:null,next:null};if(R0(y))S2(S,Y);else{var te=y.alternate;if(y.lanes===0&&(te===null||te.lanes===0)&&(te=S.lastRenderedReducer,te!==null))try{var be=S.lastRenderedState,Pe=te(be,T);if(Y.hasEagerState=!0,Y.eagerState=Pe,Hc(Pe,be))return wu(y,S,Y,0),La===null&&kh(),!1}catch(Je){}finally{}if(T=Yp(y,S,Y,L),T!==null)return Es(T,y,L),w2(T,S,L),!0}return!1}function H1(y,S,T,L){if(L={lane:2,revertLane:Br(),action:L,hasEagerState:!1,eagerState:null,next:null},R0(y)){if(S)throw Error(r(479))}else S=Yp(y,T,L,2),S!==null&&Es(S,y,2)}function R0(y){var S=y.alternate;return y===mi||S!==null&&S===mi}function S2(y,S){zf=ng=!0;var T=y.pending;T===null?S.next=S:(S.next=T.next,T.next=S),y.pending=S}function w2(y,S,T){if((T&4194048)!==0){var L=S.lanes;L&=y.pendingLanes,T|=L,S.lanes=T,Gt(y,T)}}var Gm={readContext:$a,use:O0,useCallback:Ni,useContext:Ni,useEffect:Ni,useImperativeHandle:Ni,useLayoutEffect:Ni,useInsertionEffect:Ni,useMemo:Ni,useReducer:Ni,useRef:Ni,useState:Ni,useDebugValue:Ni,useDeferredValue:Ni,useTransition:Ni,useSyncExternalStore:Ni,useId:Ni,useHostTransitionStatus:Ni,useFormState:Ni,useActionState:Ni,useOptimistic:Ni,useMemoCache:Ni,useCacheRefresh:Ni},oE={readContext:$a,use:O0,useCallback:function(y,S){return Kl().memoizedState=[y,S===void 0?null:S],y},useContext:$a,useEffect:Yc,useImperativeHandle:function(y,S,T){T=T!=null?T.concat([y]):null,sg(4194308,4,T0.bind(null,S,y),T)},useLayoutEffect:function(y,S){return sg(4194308,4,y,S)},useInsertionEffect:function(y,S){sg(4,2,y,S)},useMemo:function(y,S){var T=Kl();S=S===void 0?null:S;var L=y();if(bs){st(!0);try{y()}finally{st(!1)}}return T.memoizedState=[L,S],L},useReducer:function(y,S,T){var L=Kl();if(T!==void 0){var Y=T(S);if(bs){st(!0);try{T(S)}finally{st(!1)}}}else Y=S;return L.memoizedState=L.baseState=Y,y={pending:null,lanes:0,dispatch:null,lastRenderedReducer:y,lastRenderedState:Y},L.queue=y,y=y.dispatch=x2.bind(null,mi,y),[L.memoizedState,y]},useRef:function(y){var S=Kl();return y={current:y},S.memoizedState=y},useState:function(y){y=Za(y);var S=y.queue,T=F1.bind(null,mi,S);return S.dispatch=T,[y.memoizedState,T]},useDebugValue:M0,useDeferredValue:function(y,S){var T=Kl();return Fm(T,y,S)},useTransition:function(){var y=Za(!1);return y=Hm.bind(null,mi,y.queue,!0,!1),Kl().memoizedState=y,[!1,y]},useSyncExternalStore:function(y,S,T){var L=mi,Y=Kl();if(Ri){if(T===void 0)throw Error(r(407));T=T()}else{if(T=S(),La===null)throw Error(r(349));(hi&124)!==0||Vf(L,S,T)}Y.memoizedState=T;var te={value:T,getSnapshot:S};return Y.queue=te,Yc(Ed.bind(null,L,te,y),[y]),L.flags|=2048,Uo(9,zm(),I1.bind(null,L,te,T,S),null),T},useId:function(){var y=Kl(),S=La.identifierPrefix;if(Ri){var T=xd,L=po;T=(L&~(1<<32-et(L)-1)).toString(32)+T,S="«"+S+"R"+T,T=af++,0Yr?(Tl=Cr,Cr=null):Tl=Cr.sibling;var va=Nt(bt,Cr,_t[Yr],sn);if(va===null){Cr===null&&(Cr=Tl);break}y&&Cr&&va.alternate===null&&S(bt,Cr),ht=te(va,ht,Yr),ji===null?ar=va:ji.sibling=va,ji=va,Cr=Tl}if(Yr===_t.length)return T(bt,Cr),Ri&&Lh(bt,Yr),ar;if(Cr===null){for(;Yr<_t.length;Yr++)Cr=fn(bt,_t[Yr],sn),Cr!==null&&(ht=te(Cr,ht,Yr),ji===null?ar=Cr:ji.sibling=Cr,ji=Cr);return Ri&&Lh(bt,Yr),ar}for(Cr=L(Cr);Yr<_t.length;Yr++)Tl=Rt(Cr,bt,Yr,_t[Yr],sn),Tl!==null&&(y&&Tl.alternate!==null&&Cr.delete(Tl.key===null?Yr:Tl.key),ht=te(Tl,ht,Yr),ji===null?ar=Tl:ji.sibling=Tl,ji=Tl);return y&&Cr.forEach(function(mv){return S(bt,mv)}),Ri&&Lh(bt,Yr),ar}function Ur(bt,ht,_t,sn){if(_t==null)throw Error(r(151));for(var ar=null,ji=null,Cr=ht,Yr=ht=0,Tl=null,va=_t.next();Cr!==null&&!va.done;Yr++,va=_t.next()){Cr.index>Yr?(Tl=Cr,Cr=null):Tl=Cr.sibling;var mv=Nt(bt,Cr,va.value,sn);if(mv===null){Cr===null&&(Cr=Tl);break}y&&Cr&&mv.alternate===null&&S(bt,Cr),ht=te(mv,ht,Yr),ji===null?ar=mv:ji.sibling=mv,ji=mv,Cr=Tl}if(va.done)return T(bt,Cr),Ri&&Lh(bt,Yr),ar;if(Cr===null){for(;!va.done;Yr++,va=_t.next())va=fn(bt,va.value,sn),va!==null&&(ht=te(va,ht,Yr),ji===null?ar=va:ji.sibling=va,ji=va);return Ri&&Lh(bt,Yr),ar}for(Cr=L(Cr);!va.done;Yr++,va=_t.next())va=Rt(Cr,bt,Yr,va.value,sn),va!==null&&(y&&va.alternate!==null&&Cr.delete(va.key===null?Yr:va.key),ht=te(va,ht,Yr),ji===null?ar=va:ji.sibling=va,ji=va);return y&&Cr.forEach(function(OV){return S(bt,OV)}),Ri&&Lh(bt,Yr),ar}function no(bt,ht,_t,sn){if(typeof _t=="object"&&_t!==null&&_t.type===p&&_t.key===null&&(_t=_t.props.children),typeof _t=="object"&&_t!==null){switch(_t.$$typeof){case d:e:{for(var ar=_t.key;ht!==null;){if(ht.key===ar){if(ar=_t.type,ar===p){if(ht.tag===7){T(bt,ht.sibling),sn=Y(ht,_t.props.children),sn.return=bt,bt=sn;break e}}else if(ht.elementType===ar||typeof ar=="object"&&ar!==null&&ar.$$typeof===A&&dg(ar)===ht.type){T(bt,ht.sibling),sn=Y(ht,_t.props),A0(sn,_t),sn.return=bt,bt=sn;break e}T(bt,ht);break}else S(bt,ht);ht=ht.sibling}_t.type===p?(sn=da(_t.props.children,bt.mode,sn,_t.key),sn.return=bt,bt=sn):(sn=w0(_t.type,_t.key,_t.props,null,bt.mode,sn),A0(sn,_t),sn.return=bt,bt=sn)}return be(bt);case h:e:{for(ar=_t.key;ht!==null;){if(ht.key===ar)if(ht.tag===4&&ht.stateNode.containerInfo===_t.containerInfo&&ht.stateNode.implementation===_t.implementation){T(bt,ht.sibling),sn=Y(ht,_t.children||[]),sn.return=bt,bt=sn;break e}else{T(bt,ht);break}else S(bt,ht);ht=ht.sibling}sn=vd(_t,bt.mode,sn),sn.return=bt,bt=sn}return be(bt);case A:return ar=_t._init,_t=ar(_t._payload),no(bt,ht,_t,sn)}if(V(_t))return Kr(bt,ht,_t,sn);if(H(_t)){if(ar=H(_t),typeof ar!="function")throw Error(r(150));return _t=ar.call(_t),Ur(bt,ht,_t,sn)}if(typeof _t.then=="function")return no(bt,ht,ug(_t),sn);if(_t.$$typeof===C)return no(bt,ht,Na(bt,_t),sn);fg(bt,_t)}return typeof _t=="string"&&_t!==""||typeof _t=="number"||typeof _t=="bigint"?(_t=""+_t,ht!==null&&ht.tag===6?(T(bt,ht.sibling),sn=Y(ht,_t),sn.return=bt,bt=sn):(T(bt,ht),sn=C0(_t,bt.mode,sn),sn.return=bt,bt=sn),be(bt)):T(bt,ht)}return function(bt,ht,_t,sn){try{Xl=0;var ar=no(bt,ht,_t,sn);return ns=null,ar}catch(Cr){if(Cr===Jo||Cr===eg)throw Cr;var ji=hc(29,Cr,null,bt.mode);return ji.lanes=sn,ji.return=bt,ji}finally{}}}var $d=Xc(!0),P0=Xc(!1),Cc=q(null),Cl=null;function Zc(y){var S=y.alternate;J(mo,mo.current&1),J(Cc,y),Cl===null&&(S===null||Vh.current!==null||S.memoizedState!==null)&&(Cl=y)}function V1(y){if(y.tag===22){if(J(mo,mo.current),J(Cc,y),Cl===null){var S=y.alternate;S!==null&&S.memoizedState!==null&&(Cl=y)}}else Ec()}function Ec(){J(mo,mo.current),J(Cc,Cc.current)}function Ru(y){X(Cc),Cl===y&&(Cl=null),X(mo)}var mo=q(0);function N0(y){for(var S=y;S!==null;){if(S.tag===13){var T=S.memoizedState;if(T!==null&&(T=T.dehydrated,T===null||T.data==="$?"||tu(T)))return S}else if(S.tag===19&&S.memoizedProps.revealOrder!==void 0){if((S.flags&128)!==0)return S}else if(S.child!==null){S.child.return=S,S=S.child;continue}if(S===y)break;for(;S.sibling===null;){if(S.return===null||S.return===y)return null;S=S.return}S.sibling.return=S.return,S=S.sibling}return null}function hg(y,S,T,L){S=y.memoizedState,T=T(L,S),T=T==null?S:u({},S,T),y.memoizedState=T,y.lanes===0&&(y.updateQueue.baseState=T)}var Km={enqueueSetState:function(y,S,T){y=y._reactInternals;var L=Eo(),Y=es(L);Y.payload=S,T!=null&&(Y.callback=T),S=ca(y,Y,L),S!==null&&(Es(S,y,L),Gl(S,y,L))},enqueueReplaceState:function(y,S,T){y=y._reactInternals;var L=Eo(),Y=es(L);Y.tag=1,Y.payload=S,T!=null&&(Y.callback=T),S=ca(y,Y,L),S!==null&&(Es(S,y,L),Gl(S,y,L))},enqueueForceUpdate:function(y,S){y=y._reactInternals;var T=Eo(),L=es(T);L.tag=2,S!=null&&(L.callback=S),S=ca(y,L,T),S!==null&&(Es(S,y,T),Gl(S,y,T))}};function Ym(y,S,T,L,Y,te,be){return y=y.stateNode,typeof y.shouldComponentUpdate=="function"?y.shouldComponentUpdate(L,te,be):S.prototype&&S.prototype.isPureReactComponent?!Zu(T,L)||!Zu(Y,te):!0}function O2(y,S,T,L){y=S.state,typeof S.componentWillReceiveProps=="function"&&S.componentWillReceiveProps(T,L),typeof S.UNSAFE_componentWillReceiveProps=="function"&&S.UNSAFE_componentWillReceiveProps(T,L),S.state!==y&&Km.enqueueReplaceState(S,S.state,null)}function Td(y,S){var T=S;if("ref"in S){T={};for(var L in S)L!=="ref"&&(T[L]=S[L])}if(y=y.defaultProps){T===S&&(T=u({},T));for(var Y in y)T[Y]===void 0&&(T[Y]=y[Y])}return T}var pg=typeof reportError=="function"?reportError:function(y){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var S=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof y=="object"&&y!==null&&typeof y.message=="string"?String(y.message):String(y),error:y});if(!window.dispatchEvent(S))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",y);return}console.error(y)};function El(y){pg(y)}function js(y){console.error(y)}function _2(y){pg(y)}function Xm(y,S){try{var T=y.onUncaughtError;T(S.value,{componentStack:S.stack})}catch(L){setTimeout(function(){throw L})}}function cf(y,S,T){try{var L=y.onCaughtError;L(T.value,{componentStack:T.stack,errorBoundary:S.tag===1?S.stateNode:null})}catch(Y){setTimeout(function(){throw Y})}}function k0(y,S,T){return T=es(T),T.tag=3,T.payload={element:null},T.callback=function(){Xm(y,S)},T}function W1(y){return y=es(y),y.tag=3,y}function U1(y,S,T,L){var Y=T.type.getDerivedStateFromError;if(typeof Y=="function"){var te=L.value;y.payload=function(){return Y(te)},y.callback=function(){cf(S,T,L)}}var be=T.stateNode;be!==null&&typeof be.componentDidCatch=="function"&&(y.callback=function(){cf(S,T,L),typeof Y!="function"&&(Qh===null?Qh=new Set([this]):Qh.add(this));var Pe=L.stack;this.componentDidCatch(L.value,{componentStack:Pe!==null?Pe:""})})}function $2(y,S,T,L,Y){if(T.flags|=32768,L!==null&&typeof L=="object"&&typeof L.then=="function"){if(S=T.alternate,S!==null&&Dh(S,T,Y,!0),T=Cc.current,T!==null){switch(T.tag){case 13:return Cl===null?ib():T.alternate===null&&Co===0&&(Co=3),T.flags&=-257,T.flags|=65536,T.lanes=Y,L===gc?T.flags|=16384:(S=T.updateQueue,S===null?T.updateQueue=new Set([L]):S.add(L),ne(y,L,Y)),!1;case 22:return T.flags|=65536,L===gc?T.flags|=16384:(S=T.updateQueue,S===null?(S={transitions:null,markerInstances:null,retryQueue:new Set([L])},T.updateQueue=S):(T=S.retryQueue,T===null?S.retryQueue=new Set([L]):T.add(L)),ne(y,L,Y)),!1}throw Error(r(435,T.tag))}return ne(y,L,Y),ib(),!1}if(Ri)return S=Cc.current,S!==null?((S.flags&65536)===0&&(S.flags|=256),S.flags|=65536,S.lanes=Y,L!==Pm&&(y=Error(r(422),{cause:L}),Ou(Sl(y,T)))):(L!==Pm&&(S=Error(r(423),{cause:L}),Ou(Sl(S,T))),y=y.current.alternate,y.flags|=65536,Y&=-Y,y.lanes|=Y,L=Sl(L,T),Y=k0(y.stateNode,L,Y),Tu(y,Y),Co!==4&&(Co=2)),!1;var te=Error(r(520),{cause:L});if(te=Sl(te,T),sv===null?sv=[te]:sv.push(te),Co!==4&&(Co=2),S===null)return!0;L=Sl(L,T),T=S;do{switch(T.tag){case 3:return T.flags|=65536,y=Y&-Y,T.lanes|=y,y=k0(T.stateNode,L,y),Tu(T,y),!1;case 1:if(S=T.type,te=T.stateNode,(T.flags&128)===0&&(typeof S.getDerivedStateFromError=="function"||te!==null&&typeof te.componentDidCatch=="function"&&(Qh===null||!Qh.has(te))))return T.flags|=65536,Y&=-Y,T.lanes|=Y,Y=W1(Y),U1(Y,y,T,L),Tu(T,Y),!1}T=T.return}while(T!==null);return!1}var q1=Error(r(461)),xs=!1;function Qa(y,S,T,L){S.child=y===null?P0(S,null,T,L):$d(S,y.child,T,L)}function Zm(y,S,T,L,Y){T=T.render;var te=S.ref;if("ref"in L){var be={};for(var Pe in L)Pe!=="ref"&&(be[Pe]=L[Pe])}else be=L;return _u(S),L=bc(y,S,T,be,te,Y),Pe=of(),y!==null&&!xs?(xc(y,S,Y),Au(y,S,Y)):(Ri&&Pe&&Am(S),S.flags|=1,Qa(y,S,L,Y),S.child)}function Qm(y,S,T,L,Y){if(y===null){var te=T.type;return typeof te=="function"&&!Qu(te)&&te.defaultProps===void 0&&T.compare===null?(S.tag=15,S.type=te,I0(y,S,te,L,Y)):(y=w0(T.type,null,L,S,S.mode,Y),y.ref=S.ref,y.return=S,S.child=y)}if(te=y.child,!Ja(y,Y)){var be=te.memoizedProps;if(T=T.compare,T=T!==null?T:Zu,T(be,L)&&y.ref===S.ref)return Au(y,S,Y)}return S.flags|=1,y=Vl(te,L),y.ref=S.ref,y.return=S,S.child=y}function I0(y,S,T,L,Y){if(y!==null){var te=y.memoizedProps;if(Zu(te,L)&&y.ref===S.ref)if(xs=!1,S.pendingProps=L=te,Ja(y,Y))(y.flags&131072)!==0&&(xs=!0);else return S.lanes=y.lanes,Au(y,S,Y)}return mg(y,S,T,L,Y)}function gg(y,S,T){var L=S.pendingProps,Y=L.children,te=y!==null?y.memoizedState:null;if(L.mode==="hidden"){if((S.flags&128)!==0){if(L=te!==null?te.baseLanes|T:T,y!==null){for(Y=S.child=y.child,te=0;Y!==null;)te=te|Y.lanes|Y.childLanes,Y=Y.sibling;S.childLanes=te&~L}else S.childLanes=0,S.child=null;return qf(y,S,L,T)}if((T&536870912)!==0)S.memoizedState={baseLanes:0,cachePool:null},y!==null&&tf(S,te!==null?te.cachePool:null),te!==null?rf(S,te):A1(),V1(S);else return S.lanes=S.childLanes=536870912,qf(y,S,te!==null?te.baseLanes|T:T,T)}else te!==null?(tf(S,te.cachePool),rf(S,te),Ec(),S.memoizedState=null):(y!==null&&tf(S,null),A1(),Ec());return Qa(y,S,Y,T),S.child}function qf(y,S,T,L){var Y=wd();return Y=Y===null?null:{parent:ta._currentValue,pool:Y},S.memoizedState={baseLanes:T,cachePool:Y},y!==null&&tf(S,null),A1(),V1(S),y!==null&&Dh(y,S,L,!0),null}function Or(y,S){var T=S.ref;if(T===null)y!==null&&y.ref!==null&&(S.flags|=4194816);else{if(typeof T!="function"&&typeof T!="object")throw Error(r(284));(y===null||y.ref!==T)&&(S.flags|=4194816)}}function mg(y,S,T,L,Y){return _u(S),T=bc(y,S,T,L,void 0,Y),L=of(),y!==null&&!xs?(xc(y,S,Y),Au(y,S,Y)):(Ri&&L&&Am(S),S.flags|=1,Qa(y,S,T,Y),S.child)}function Jm(y,S,T,L,Y,te){return _u(S),S.updateQueue=null,T=N1(S,L,T,Y),Wh(y),L=of(),y!==null&&!xs?(xc(y,S,te),Au(y,S,te)):(Ri&&L&&Am(S),S.flags|=1,Qa(y,S,T,te),S.child)}function Md(y,S,T,L,Y){if(_u(S),S.stateNode===null){var te=md,be=T.contextType;typeof be=="object"&&be!==null&&(te=$a(be)),te=new T(L,te),S.memoizedState=te.state!==null&&te.state!==void 0?te.state:null,te.updater=Km,S.stateNode=te,te._reactInternals=S,te=S.stateNode,te.props=L,te.state=S.memoizedState,te.refs={},Cd(S),be=T.contextType,te.context=typeof be=="object"&&be!==null?$a(be):md,te.state=S.memoizedState,be=T.getDerivedStateFromProps,typeof be=="function"&&(hg(S,T,be,L),te.state=S.memoizedState),typeof T.getDerivedStateFromProps=="function"||typeof te.getSnapshotBeforeUpdate=="function"||typeof te.UNSAFE_componentWillMount!="function"&&typeof te.componentWillMount!="function"||(be=te.state,typeof te.componentWillMount=="function"&&te.componentWillMount(),typeof te.UNSAFE_componentWillMount=="function"&&te.UNSAFE_componentWillMount(),be!==te.state&&Km.enqueueReplaceState(te,te.state,null),Ds(S,L,te,Y),Gc(),te.state=S.memoizedState),typeof te.componentDidMount=="function"&&(S.flags|=4194308),L=!0}else if(y===null){te=S.stateNode;var Pe=S.memoizedProps,Je=Td(T,Pe);te.props=Je;var Mt=te.context,rn=T.contextType;be=md,typeof rn=="object"&&rn!==null&&(be=$a(rn));var fn=T.getDerivedStateFromProps;rn=typeof fn=="function"||typeof te.getSnapshotBeforeUpdate=="function",Pe=S.pendingProps!==Pe,rn||typeof te.UNSAFE_componentWillReceiveProps!="function"&&typeof te.componentWillReceiveProps!="function"||(Pe||Mt!==be)&&O2(S,te,L,be),$u=!1;var Nt=S.memoizedState;te.state=Nt,Ds(S,L,te,Y),Gc(),Mt=S.memoizedState,Pe||Nt!==Mt||$u?(typeof fn=="function"&&(hg(S,T,fn,L),Mt=S.memoizedState),(Je=$u||Ym(S,T,Je,L,Nt,Mt,be))?(rn||typeof te.UNSAFE_componentWillMount!="function"&&typeof te.componentWillMount!="function"||(typeof te.componentWillMount=="function"&&te.componentWillMount(),typeof te.UNSAFE_componentWillMount=="function"&&te.UNSAFE_componentWillMount()),typeof te.componentDidMount=="function"&&(S.flags|=4194308)):(typeof te.componentDidMount=="function"&&(S.flags|=4194308),S.memoizedProps=L,S.memoizedState=Mt),te.props=L,te.state=Mt,te.context=be,L=Je):(typeof te.componentDidMount=="function"&&(S.flags|=4194308),L=!1)}else{te=S.stateNode,Ls(y,S),be=S.memoizedProps,rn=Td(T,be),te.props=rn,fn=S.pendingProps,Nt=te.context,Mt=T.contextType,Je=md,typeof Mt=="object"&&Mt!==null&&(Je=$a(Mt)),Pe=T.getDerivedStateFromProps,(Mt=typeof Pe=="function"||typeof te.getSnapshotBeforeUpdate=="function")||typeof te.UNSAFE_componentWillReceiveProps!="function"&&typeof te.componentWillReceiveProps!="function"||(be!==fn||Nt!==Je)&&O2(S,te,L,Je),$u=!1,Nt=S.memoizedState,te.state=Nt,Ds(S,L,te,Y),Gc();var Rt=S.memoizedState;be!==fn||Nt!==Rt||$u||y!==null&&y.dependencies!==null&&km(y.dependencies)?(typeof Pe=="function"&&(hg(S,T,Pe,L),Rt=S.memoizedState),(rn=$u||Ym(S,T,rn,L,Nt,Rt,Je)||y!==null&&y.dependencies!==null&&km(y.dependencies))?(Mt||typeof te.UNSAFE_componentWillUpdate!="function"&&typeof te.componentWillUpdate!="function"||(typeof te.componentWillUpdate=="function"&&te.componentWillUpdate(L,Rt,Je),typeof te.UNSAFE_componentWillUpdate=="function"&&te.UNSAFE_componentWillUpdate(L,Rt,Je)),typeof te.componentDidUpdate=="function"&&(S.flags|=4),typeof te.getSnapshotBeforeUpdate=="function"&&(S.flags|=1024)):(typeof te.componentDidUpdate!="function"||be===y.memoizedProps&&Nt===y.memoizedState||(S.flags|=4),typeof te.getSnapshotBeforeUpdate!="function"||be===y.memoizedProps&&Nt===y.memoizedState||(S.flags|=1024),S.memoizedProps=L,S.memoizedState=Rt),te.props=L,te.state=Rt,te.context=Je,L=rn):(typeof te.componentDidUpdate!="function"||be===y.memoizedProps&&Nt===y.memoizedState||(S.flags|=4),typeof te.getSnapshotBeforeUpdate!="function"||be===y.memoizedProps&&Nt===y.memoizedState||(S.flags|=1024),L=!1)}return te=L,Or(y,S),L=(S.flags&128)!==0,te||L?(te=S.stateNode,T=L&&typeof T.getDerivedStateFromError!="function"?null:te.render(),S.flags|=1,y!==null&&L?(S.child=$d(S,y.child,null,Y),S.child=$d(S,null,T,Y)):Qa(y,S,T,Y),S.memoizedState=te.state,y=S.child):y=Au(y,S,Y),y}function L0(y,S,T,L){return Lf(),S.flags|=256,Qa(y,S,T,L),S.child}var Qc={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function G1(y){return{baseLanes:y,cachePool:Jp()}}function Ss(y,S,T){return y=y!==null?y.childLanes&~T:0,S&&(y|=Iu),y}function K1(y,S,T){var L=S.pendingProps,Y=!1,te=(S.flags&128)!==0,be;if((be=te)||(be=y!==null&&y.memoizedState===null?!1:(mo.current&2)!==0),be&&(Y=!0,S.flags&=-129),be=(S.flags&32)!==0,S.flags&=-33,y===null){if(Ri){if(Y?Zc(S):Ec(),Ri){var Pe=Xa,Je;if(Je=Pe){e:{for(Je=Pe,Pe=Ul;Je.nodeType!==8;){if(!Pe){Pe=null;break e}if(Je=jd(Je.nextSibling),Je===null){Pe=null;break e}}Pe=Je}Pe!==null?(S.memoizedState={dehydrated:Pe,treeContext:Ya!==null?{id:po,overflow:xd}:null,retryLane:536870912,hydrationErrors:null},Je=hc(18,null,null,0),Je.stateNode=Pe,Je.return=S,S.child=Je,Wo=S,Xa=null,Je=!0):Je=!1}Je||Eu(S)}if(Pe=S.memoizedState,Pe!==null&&(Pe=Pe.dehydrated,Pe!==null))return tu(Pe)?S.lanes=32:S.lanes=536870912,null;Ru(S)}return Pe=L.children,L=L.fallback,Y?(Ec(),Y=S.mode,Pe=ev({mode:"hidden",children:Pe},Y),L=da(L,Y,T,null),Pe.return=S,L.return=S,Pe.sibling=L,S.child=Pe,Y=S.child,Y.memoizedState=G1(T),Y.childLanes=Ss(y,be,T),S.memoizedState=Qc,L):(Zc(S),Y1(S,Pe))}if(Je=y.memoizedState,Je!==null&&(Pe=Je.dehydrated,Pe!==null)){if(te)S.flags&256?(Zc(S),S.flags&=-257,S=vg(y,S,T)):S.memoizedState!==null?(Ec(),S.child=y.child,S.flags|=128,S=null):(Ec(),Y=L.fallback,Pe=S.mode,L=ev({mode:"visible",children:L.children},Pe),Y=da(Y,Pe,T,null),Y.flags|=2,L.return=S,Y.return=S,L.sibling=Y,S.child=L,$d(S,y.child,null,T),L=S.child,L.memoizedState=G1(T),L.childLanes=Ss(y,be,T),S.memoizedState=Qc,S=Y);else if(Zc(S),tu(Pe)){if(be=Pe.nextSibling&&Pe.nextSibling.dataset,be)var Mt=be.dgst;be=Mt,L=Error(r(419)),L.stack="",L.digest=be,Ou({value:L,source:null,stack:null}),S=vg(y,S,T)}else if(xs||Dh(y,S,T,!1),be=(T&y.childLanes)!==0,xs||be){if(be=La,be!==null&&(L=T&-T,L=(L&42)!==0?1:Yt(L),L=(L&(be.suspendedLanes|T))!==0?0:L,L!==0&&L!==Je.retryLane))throw Je.retryLane=L,Ih(y,L),Es(be,y,L),q1;Pe.data==="$?"||ib(),S=vg(y,S,T)}else Pe.data==="$?"?(S.flags|=192,S.child=y.child,S=null):(y=Je.treeContext,Xa=jd(Pe.nextSibling),Wo=S,Ri=!0,Ju=null,Ul=!1,y!==null&&(Wl[nl++]=po,Wl[nl++]=xd,Wl[nl++]=Ya,po=y.id,xd=y.overflow,Ya=S),S=Y1(S,L.children),S.flags|=4096);return S}return Y?(Ec(),Y=L.fallback,Pe=S.mode,Je=y.child,Mt=Je.sibling,L=Vl(Je,{mode:"hidden",children:L.children}),L.subtreeFlags=Je.subtreeFlags&65011712,Mt!==null?Y=Vl(Mt,Y):(Y=da(Y,Pe,T,null),Y.flags|=2),Y.return=S,L.return=S,L.sibling=Y,S.child=L,L=Y,Y=S.child,Pe=y.child.memoizedState,Pe===null?Pe=G1(T):(Je=Pe.cachePool,Je!==null?(Mt=ta._currentValue,Je=Je.parent!==Mt?{parent:Mt,pool:Mt}:Je):Je=Jp(),Pe={baseLanes:Pe.baseLanes|T,cachePool:Je}),Y.memoizedState=Pe,Y.childLanes=Ss(y,be,T),S.memoizedState=Qc,L):(Zc(S),T=y.child,y=T.sibling,T=Vl(T,{mode:"visible",children:L.children}),T.return=S,T.sibling=null,y!==null&&(be=S.deletions,be===null?(S.deletions=[y],S.flags|=16):be.push(y)),S.child=T,S.memoizedState=null,T)}function Y1(y,S){return S=ev({mode:"visible",children:S},y.mode),S.return=y,y.child=S}function ev(y,S){return y=hc(22,y,null,S),y.lanes=0,y.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null},y}function vg(y,S,T){return $d(S,y.child,null,T),y=Y1(S,S.pendingProps.children),y.flags|=2,S.memoizedState=null,y}function Bs(y,S,T){y.lanes|=S;var L=y.alternate;L!==null&&(L.lanes|=S),ks(y.return,S,T)}function T2(y,S,T,L,Y){var te=y.memoizedState;te===null?y.memoizedState={isBackwards:S,rendering:null,renderingStartTime:0,last:L,tail:T,tailMode:Y}:(te.isBackwards=S,te.rendering=null,te.renderingStartTime=0,te.last=L,te.tail=T,te.tailMode=Y)}function sE(y,S,T){var L=S.pendingProps,Y=L.revealOrder,te=L.tail;if(Qa(y,S,L.children,T),L=mo.current,(L&2)!==0)L=L&1|2,S.flags|=128;else{if(y!==null&&(y.flags&128)!==0)e:for(y=S.child;y!==null;){if(y.tag===13)y.memoizedState!==null&&Bs(y,T,S);else if(y.tag===19)Bs(y,T,S);else if(y.child!==null){y.child.return=y,y=y.child;continue}if(y===S)break e;for(;y.sibling===null;){if(y.return===null||y.return===S)break e;y=y.return}y.sibling.return=y.return,y=y.sibling}L&=1}switch(J(mo,L),Y){case"forwards":for(T=S.child,Y=null;T!==null;)y=T.alternate,y!==null&&N0(y)===null&&(Y=T),T=T.sibling;T=Y,T===null?(Y=S.child,S.child=null):(Y=T.sibling,T.sibling=null),T2(S,!1,Y,T,te);break;case"backwards":for(T=null,Y=S.child,S.child=null;Y!==null;){if(y=Y.alternate,y!==null&&N0(y)===null){S.child=Y;break}y=Y.sibling,Y.sibling=T,T=Y,Y=y}T2(S,!0,T,null,te);break;case"together":T2(S,!1,null,null,void 0);break;default:S.memoizedState=null}return S.child}function Au(y,S,T){if(y!==null&&(S.dependencies=y.dependencies),Xf|=S.lanes,(T&S.childLanes)===0)if(y!==null){if(Dh(y,S,T,!1),(T&S.childLanes)===0)return null}else return null;if(y!==null&&S.child!==y.child)throw Error(r(153));if(S.child!==null){for(y=S.child,T=Vl(y,y.pendingProps),S.child=T,T.return=S;y.sibling!==null;)y=y.sibling,T=T.sibling=Vl(y,y.pendingProps),T.return=S;T.sibling=null}return S.child}function Ja(y,S){return(y.lanes&S)!==0?!0:(y=y.dependencies,!!(y!==null&&km(y)))}function Zl(y,S,T){switch(S.tag){case 3:re(S,S.stateNode.containerInfo),Uc(S,ta,y.memoizedState.cache),Lf();break;case 27:case 5:fe(S);break;case 4:re(S,S.stateNode.containerInfo);break;case 10:Uc(S,S.type,S.memoizedProps.value);break;case 13:var L=S.memoizedState;if(L!==null)return L.dehydrated!==null?(Zc(S),S.flags|=128,null):(T&S.child.childLanes)!==0?K1(y,S,T):(Zc(S),y=Au(y,S,T),y!==null?y.sibling:null);Zc(S);break;case 19:var Y=(y.flags&128)!==0;if(L=(T&S.childLanes)!==0,L||(Dh(y,S,T,!1),L=(T&S.childLanes)!==0),Y){if(L)return sE(y,S,T);S.flags|=128}if(Y=S.memoizedState,Y!==null&&(Y.rendering=null,Y.tail=null,Y.lastEffect=null),J(mo,mo.current),L)break;return null;case 22:case 23:return S.lanes=0,gg(y,S,T);case 24:Uc(S,ta,y.memoizedState.cache)}return Au(y,S,T)}function er(y,S,T){if(y!==null)if(y.memoizedProps!==S.pendingProps)xs=!0;else{if(!Ja(y,T)&&(S.flags&128)===0)return xs=!1,Zl(y,S,T);xs=(y.flags&131072)!==0}else xs=!1,Ri&&(S.flags&1048576)!==0&&Rm(S,bd,S.index);switch(S.lanes=0,S.tag){case 16:e:{y=S.pendingProps;var L=S.elementType,Y=L._init;if(L=Y(L._payload),S.type=L,typeof L=="function")Qu(L)?(y=Td(L,y),S.tag=1,S=Md(null,S,L,y,T)):(S.tag=0,S=mg(null,S,L,y,T));else{if(L!=null){if(Y=L.$$typeof,Y===O){S.tag=11,S=Zm(null,S,L,y,T);break e}else if(Y===R){S.tag=14,S=Qm(null,S,L,y,T);break e}}throw S=z(L)||L,Error(r(306,S,""))}}return S;case 0:return mg(y,S,S.type,S.pendingProps,T);case 1:return L=S.type,Y=Td(L,S.pendingProps),Md(y,S,L,Y,T);case 3:e:{if(re(S,S.stateNode.containerInfo),y===null)throw Error(r(387));L=S.pendingProps;var te=S.memoizedState;Y=te.element,Ls(y,S),Ds(S,L,null,T);var be=S.memoizedState;if(L=be.cache,Uc(S,ta,L),L!==te.cache&&ai(S,[ta],T,!0),Gc(),L=be.element,te.isDehydrated)if(te={element:L,isDehydrated:!1,cache:be.cache},S.updateQueue.baseState=te,S.memoizedState=te,S.flags&256){S=L0(y,S,L,T);break e}else if(L!==Y){Y=Sl(Error(r(424)),S),Ou(Y),S=L0(y,S,L,T);break e}else{switch(y=S.stateNode.containerInfo,y.nodeType){case 9:y=y.body;break;default:y=y.nodeName==="HTML"?y.ownerDocument.body:y}for(Xa=jd(y.firstChild),Wo=S,Ri=!0,Ju=null,Ul=!0,T=P0(S,null,L,T),S.child=T;T;)T.flags=T.flags&-3|4096,T=T.sibling}else{if(Lf(),L===Y){S=Au(y,S,T);break e}Qa(y,S,L,T)}S=S.child}return S;case 26:return Or(y,S),y===null?(T=BN(S.type,null,S.pendingProps,null))?S.memoizedState=T:Ri||(T=S.type,y=S.pendingProps,L=Q0(ie.current).createElement(T),L[Dt]=S,L[mt]=y,sl(L,T,y),zn(L),S.stateNode=L):S.memoizedState=BN(S.type,y.memoizedProps,S.pendingProps,y.memoizedState),null;case 27:return fe(S),y===null&&Ri&&(L=S.stateNode=LN(S.type,S.pendingProps,ie.current),Wo=S,Ul=!0,Y=Xa,Qf(S.type)?(J3=Y,Xa=jd(L.firstChild)):Xa=Y),Qa(y,S,S.pendingProps.children,T),Or(y,S),y===null&&(S.flags|=4194304),S.child;case 5:return y===null&&Ri&&((Y=L=Xa)&&(L=kN(L,S.type,S.pendingProps,Ul),L!==null?(S.stateNode=L,Wo=S,Xa=jd(L.firstChild),Ul=!1,Y=!0):Y=!1),Y||Eu(S)),fe(S),Y=S.type,te=S.pendingProps,be=y!==null?y.memoizedProps:null,L=te.children,gE(Y,te)?L=null:be!==null&&gE(Y,be)&&(S.flags|=32),S.memoizedState!==null&&(Y=bc(y,S,k1,null,null,T),db._currentValue=Y),Or(y,S),Qa(y,S,L,T),S.child;case 6:return y===null&&Ri&&((y=T=Xa)&&(T=vE(T,S.pendingProps,Ul),T!==null?(S.stateNode=T,Wo=S,Xa=null,y=!0):y=!1),y||Eu(S)),null;case 13:return K1(y,S,T);case 4:return re(S,S.stateNode.containerInfo),L=S.pendingProps,y===null?S.child=$d(S,null,L,T):Qa(y,S,L,T),S.child;case 11:return Zm(y,S,S.type,S.pendingProps,T);case 7:return Qa(y,S,S.pendingProps,T),S.child;case 8:return Qa(y,S,S.pendingProps.children,T),S.child;case 12:return Qa(y,S,S.pendingProps.children,T),S.child;case 10:return L=S.pendingProps,Uc(S,S.type,L.value),Qa(y,S,L.children,T),S.child;case 9:return Y=S.type._context,L=S.pendingProps.children,_u(S),Y=$a(Y),L=L(Y),S.flags|=1,Qa(y,S,L,T),S.child;case 14:return Qm(y,S,S.type,S.pendingProps,T);case 15:return I0(y,S,S.type,S.pendingProps,T);case 19:return sE(y,S,T);case 31:return L=S.pendingProps,T=S.mode,L={mode:L.mode,children:L.children},y===null?(T=ev(L,T),T.ref=S.ref,S.child=T,T.return=S,S=T):(T=Vl(y.child,L),T.ref=S.ref,S.child=T,T.return=S,S=T),S;case 22:return gg(y,S,T);case 24:return _u(S),L=$a(ta),y===null?(Y=wd(),Y===null&&(Y=La,te=Bh(),Y.pooledCache=te,te.refCount++,te!==null&&(Y.pooledCacheLanes|=T),Y=te),S.memoizedState={parent:L,cache:Y},Cd(S),Uc(S,ta,Y)):((y.lanes&T)!==0&&(Ls(y,S),Ds(S,null,null,T),Gc()),Y=y.memoizedState,te=S.memoizedState,Y.parent!==L?(Y={parent:L,cache:L},S.memoizedState=Y,S.lanes===0&&(S.memoizedState=S.updateQueue.baseState=Y),Uc(S,ta,L)):(L=te.cache,Uc(S,ta,L),L!==Y.cache&&ai(S,[ta],T,!0))),Qa(y,S,S.pendingProps.children,T),S.child;case 29:throw S.pendingProps}throw Error(r(156,S.tag))}function Oc(y){y.flags|=4}function tv(y,S){if(S.type!=="stylesheet"||(S.state.loading&4)!==0)y.flags&=-16777217;else if(y.flags|=16777216,!ll(S)){if(S=Cc.current,S!==null&&((hi&4194048)===hi?Cl!==null:(hi&62914560)!==hi&&(hi&536870912)===0||S!==Cl))throw mc=gc,E0;y.flags|=8192}}function D0(y,S){S!==null&&(y.flags|=4),y.flags&16384&&(S=y.tag!==22?Vt():536870912,y.lanes|=S,bg|=S)}function j0(y,S){if(!Ri)switch(y.tailMode){case"hidden":S=y.tail;for(var T=null;S!==null;)S.alternate!==null&&(T=S),S=S.sibling;T===null?y.tail=null:T.sibling=null;break;case"collapsed":T=y.tail;for(var L=null;T!==null;)T.alternate!==null&&(L=T),T=T.sibling;L===null?S||y.tail===null?y.tail=null:y.tail.sibling=null:L.sibling=null}}function ha(y){var S=y.alternate!==null&&y.alternate.child===y.child,T=0,L=0;if(S)for(var Y=y.child;Y!==null;)T|=Y.lanes|Y.childLanes,L|=Y.subtreeFlags&65011712,L|=Y.flags&65011712,Y.return=y,Y=Y.sibling;else for(Y=y.child;Y!==null;)T|=Y.lanes|Y.childLanes,L|=Y.subtreeFlags,L|=Y.flags,Y.return=y,Y=Y.sibling;return y.subtreeFlags|=L,y.childLanes=T,S}function B0(y,S,T){var L=S.pendingProps;switch(Zp(S),S.tag){case 31:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return ha(S),null;case 1:return ha(S),null;case 3:return T=S.stateNode,L=null,y!==null&&(L=y.memoizedState.cache),S.memoizedState.cache!==L&&(S.flags|=2048),Ns(ta),ce(),T.pendingContext&&(T.context=T.pendingContext,T.pendingContext=null),(y===null||y.child===null)&&(Nm(S)?Oc(S):y===null||y.memoizedState.isDehydrated&&(S.flags&256)===0||(S.flags|=1024,ef())),ha(S),null;case 26:return T=S.memoizedState,y===null?(Oc(S),T!==null?(ha(S),tv(S,T)):(ha(S),S.flags&=-16777217)):T?T!==y.memoizedState?(Oc(S),ha(S),tv(S,T)):(ha(S),S.flags&=-16777217):(y.memoizedProps!==L&&Oc(S),ha(S),S.flags&=-16777217),null;case 27:pe(S),T=ie.current;var Y=S.type;if(y!==null&&S.stateNode!=null)y.memoizedProps!==L&&Oc(S);else{if(!L){if(S.stateNode===null)throw Error(r(166));return ha(S),null}y=ee.current,Nm(S)?$1(S):(y=LN(Y,L,T),S.stateNode=y,Oc(S))}return ha(S),null;case 5:if(pe(S),T=S.type,y!==null&&S.stateNode!=null)y.memoizedProps!==L&&Oc(S);else{if(!L){if(S.stateNode===null)throw Error(r(166));return ha(S),null}if(y=ee.current,Nm(S))$1(S);else{switch(Y=Q0(ie.current),y){case 1:y=Y.createElementNS("http://www.w3.org/2000/svg",T);break;case 2:y=Y.createElementNS("http://www.w3.org/1998/Math/MathML",T);break;default:switch(T){case"svg":y=Y.createElementNS("http://www.w3.org/2000/svg",T);break;case"math":y=Y.createElementNS("http://www.w3.org/1998/Math/MathML",T);break;case"script":y=Y.createElement("div"),y.innerHTML="