diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/404.html b/404.html new file mode 100644 index 0000000..e5a7297 --- /dev/null +++ b/404.html @@ -0,0 +1,177 @@ + + + + + + + + + + + + Not Found + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + +
+ + +
+ + + +
+ +
+ + + + +
+ + + + + +
+ +
+ + +
+ + +
+ +
+
+ +
+
+ + + + +
+
+
+
+ +
+ + + + + + + + +
+ +
+
+ +
+

Oops! The page you’re looking for doesn’t exist.

+

You may have mistyped the address or the page may have been moved.

+ Go to homepage +
+ +
+
+ + + +
+ + +
+ + + + diff --git a/advanced/add_entries_configuration/index.html b/advanced/add_entries_configuration/index.html new file mode 100644 index 0000000..4d9db74 --- /dev/null +++ b/advanced/add_entries_configuration/index.html @@ -0,0 +1,272 @@ + + + + + + + + + + + + Add new entries in configuration file + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + +
+ + +
+ + + +
+ +
+ + + + +
+ + + + + +
+ +
+ + +
+ + +
+ +
+
+ +
+
+ + + + +
+
+
+
+ +
+ + + + + + + + +
+ +
+
+
+
+ +
+ + +

+ # + Add new entries in configuration file +

+
+

Adding a new entry to the QBittorrentBot configuration file involves several steps:

+
    +
  • Clone the repository: git clone https://github.com/ch3p4ll3/QBittorrentBot.git

    +
  • +
  • Navigate to the folder: src/configs

    +
  • +
  • Modify the pydantic class: +Identify the pydantic class where the new entry should be added. +Add a new attribute to the class to represent the new entry.

    +
  • +
  • Create a validation function (if necessary): +If the new entry requires additional validation beyond the type provided by pydantic, create a validation function. +The validation function should inspect the value of the new entry and check for any constraints or rules that need to be enforced.

    +
  • +
  • Add the new entry to the config file: +Open the configuration file (usually config.json). +Add a new property to the configuration object for the new entry. +Set the value of the new property to the desired initial value.

    +
  • +
  • Update the convert_type_from_string function (if necessary): +If the new entry type requires a custom conversion from a string representation, add the conversion function to the utils file. +The function should take a string representation of the new entry type and return the corresponding data type.

    +
  • +
  • Update the bot code (if necessary): +If the new entry is being used by the bot code, update the relevant parts of the code to handle the new entry type and its values.

    +
  • +
  • Build the docker image

    +
  • +
  • Start the docker container

    +
  • +
+

You can now use the bot with the new entry, have fun🥳

+ + + + +
+ +
+ +
+
+
+
    +
+
+ +
+
+
+ + + + + + + +
+ +
+
+ + + +
+ + +
+ + + + diff --git a/advanced/add_new_client_manager/index.html b/advanced/add_new_client_manager/index.html new file mode 100644 index 0000000..1591474e --- /dev/null +++ b/advanced/add_new_client_manager/index.html @@ -0,0 +1,321 @@ + + + + + + + + + + + + Add new client manager + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + +
+ + +
+ + + +
+ +
+ + + + +
+ + + + + +
+ +
+ + +
+ + +
+ +
+
+ +
+
+ + + + +
+
+
+
+ +
+ + + + + + + + +
+ +
+
+
+
+ +
+ + +

+ # + Add new client manager +

+
+

Adding a new client manager to QBittorrentBot involves creating a new class that implements the ClientManager interface. This interface defines the methods that the bot uses to interact with the client, such as adding, removing, pausing, and resuming torrents.

+

To do this you need to follow a couple of steps:

+
    +
  • Clone the repository locally using the command: git clone https://github.com/ch3p4ll3/QBittorrentBot.git
  • +
  • Navigate to the folder src/client_manager
  • +
  • Create a new file for your client manager class. Name the file something like <client>_manager.py. For example, if you are writing a manager for utorrent the name will be utorrent_manager.py
  • +
  • Define your client manager class. The class should inherit from the ClientManager class and implement all of its methods. For example, the utorrent_manager.py file might look like this:
  • +
+
+
from typing import Union, List
+from .client_manager import ClientManager
+
+
+class UtorrentManager(ClientManager):
+    @classmethod
+    def add_magnet(cls, magnet_link: Union[str, List[str]], category: str = None) -> None:
+        # Implement your code to add a magnet to the utorrent client
+        pass
+
+    @classmethod
+    def add_torrent(cls, file_name: str, category: str = None) -> None:
+        # Implement your code to add a torrent to the utorrent client
+        pass
+...
+
+
    +
  • Navigate to the src/configs/ folder and edit the enums.py file by adding to the ClientTypeEnum class an enum for your client. For example, if we wanted to add a manager for utorrent the class would become like this:
  • +
+
+
class ClientTypeEnum(str, Enum):
+    QBittorrent = 'qbittorrent'
+    Utorrent = 'utorrent'
+
+
    +
  • Return to the src/client_manager folder and edit the client_repo.py file by adding to the dictionary named repositories an entry associating the newly created enum with the new manager. Example:
  • +
+
+
from ..configs.enums import ClientTypeEnum
+from .qbittorrent_manager import QbittorrentManager, ClientManager
+
+
+class ClientRepo:
+    repositories = {
+        ClientTypeEnum.QBittorrent: QbittorrentManager,
+        ClientTypeEnum.Utorrent: UtorrentManager
+    }
+...
+
+
    +
  • Register your client manager in the config file. The config file is a JSON file that defines the configuration for the QBittorrentBot. You can add your new client manager to the client section of the config file. For example, the config file might look like this:
  • +
+
+
{
+    "client": {
+        "type": "utorrent",
+        "host": "192.168.178.102",
+        "port": 8080,
+        "user": "admin",
+        "password": "admin"
+    },
+    "telegram": {
+        "bot_token": "1111111:AAAAAAAA-BBBBBBBBB",
+        "api_id": 1111,
+        "api_hash": "aaaaaaaa"
+    },
+
+    "users": [
+        {
+            "user_id": 123456,
+            "notify": false,
+            "role": "administrator"
+        }
+    ]
+}
+
+
    +
  • Build the docker image
  • +
  • Start the docker container
  • +
+

You can now use the bot with the new client, have fun🥳

+ + + + +
+ +
+ +
+
+
+
    +
+
+ +
+
+
+ + + + + + + +
+ +
+
+ + + +
+ + +
+ + + + diff --git a/advanced/index.html b/advanced/index.html new file mode 100644 index 0000000..007069b --- /dev/null +++ b/advanced/index.html @@ -0,0 +1,241 @@ + + + + + + + + + + + + Advanced + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + +
+ + +
+ + + +
+ +
+ + + + +
+ + + + + +
+ +
+ + +
+ + +
+ +
+
+ +
+
+ + + + +
+
+
+
+ +
+ + + + + + + + +
+ +
+
+
+
+ +
+ + +

+ # + Advanced +

+
+

This section will speigate the advanced functions of the bot, such as creating new client managers, and managing user roles

+ + + + +
+ +
+ +
+
+
+
    +
+
+ +
+
+
+ + + + + + + +
+ +
+
+ + + +
+ + +
+ + + + diff --git a/advanced/manager_user_roles/index.html b/advanced/manager_user_roles/index.html new file mode 100644 index 0000000..75183bf --- /dev/null +++ b/advanced/manager_user_roles/index.html @@ -0,0 +1,263 @@ + + + + + + + + + + + + Managing users roles + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + +
+ + +
+ + + +
+ +
+ + + + +
+ + + + + +
+ +
+ + +
+ + +
+ +
+
+ +
+
+ + + + +
+
+
+
+ +
+ + + + + + + + +
+ +
+
+
+
+ +
+ + +

+ # + Managing users roles +

+
+

QBittorrentBot provides a user role management system to control access to different actions and functionalities within the bot. The system defines three roles: Reader, Manager, and Admin, each with increasing permissions and capabilities.

+ +

+ # + Reader +

+
+

The Reader role grants basic access to view the list of active torrents and inspect the details of individual torrents. Users with the Reader role can view the torrent name, download speed, upload speed, progress, and file size. They can also view the category to which each torrent belongs.

+ +

+ # + Manager +

+
+

The Manager role extends the Reader role with additional permissions, allowing users to perform actions beyond mere observation. Manager-level users can download new torrents by sending magnet links or torrent files to the bot. They can also add or edit categories to organize their torrents effectively. Additionally, Manager users can set torrent priorities, enabling them to manage the download order and prioritize specific torrents. Moreover, they can pause or resume ongoing downloads, providing flexibility in managing their torrent activity.

+ +

+ # + Admin +

+
+

The Admin role, the most privileged, grants the user full control over the bot's functionalities. In addition to the capabilities of the Manager role, Admin users can remove torrents from their download lists, eliminating unwanted downloads. They can also remove categories, streamlining their torrent organization structure. And, as the highest-level role, Admin users have the authority to edit the bot's configuration files, modifying its settings and behavior.

+

This role management system ensures that users are granted access appropriate to their needs and responsibilities. Readers can observe and manage their torrent activity, Managers can perform more extensive actions, and Admins have full control over the bot's operation. This structure enhances security and prevents unauthorized users from modifying configuration files or deleting torrents.

+ + + + +
+ +
+ +
+
+
+
    +
+
+ +
+
+
+ + + + + + + +
+ +
+
+ + + +
+ + +
+ + + + diff --git a/faq/index.html b/faq/index.html new file mode 100644 index 0000000..89413a4 --- /dev/null +++ b/faq/index.html @@ -0,0 +1,374 @@ + + + + + + + + + + + + FAQ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + +
+ + +
+ + + +
+ +
+ + + + +
+ + + + + +
+ +
+ + +
+ + +
+ +
+
+ +
+
+ + + + +
+
+
+
+ +
+ + + + + + + + +
+ +
+
+
+
+ +
+ + +

+ # + FAQ +

+
+ +

+ # + What is QBittorrentBot? +

+
+

QBittorrentBot is a Telegram bot that allows you to control your qBittorrent downloads from within the Telegram app. It can add torrents, manage your torrent list, and much more.

+ +

+ # + What are the benefits of using QBittorrentBot? +

+
+

There are several benefits to using QBittorrentBot, including:

+
    +
  • Convenience: You can control your torrents from anywhere, without having to open the qBittorrent app.
  • +
  • Efficiency: You can manage your torrents without switching between apps.
  • +
  • Organization: You can categorize your torrents for better organization and accessibility.
  • +
  • Docker Support: You can deploy and manage the bot seamlessly using Docker containers.
  • +
+ +

+ # + How do I add QBittorrentBot to my Telegram account? +

+
+

Follow this guide to start using QBittorrentBot +

+
+ + + + Getting Started +
+
+ ../getting_started/ +
+ +
+

+ +

+ # + How do I edit the configuration for the QBittorrentBot? +

+
+

The QBittorrentBot configuration file is located at config.json. This file stores the bot's settings, such as the connection details for the qBittorrent client, the API IDs and hashes, and the list of authorized users. To edit the configuration file, you can open it in a text editor and make the necessary changes.

+ +

+ # + How do I check the status of my torrents? +

+
+

You can check the status of your torrents by using the list torrents button. This command will display a list of all your active torrents, including their name, status, progress, and download/upload speed.

+ +

+ # + What is the difference between a magnet link and a torrent file? +

+
+

A magnet link is a URI scheme that allows you to download a torrent without having to download the entire torrent file. A torrent file is a file that contains metadata about the torrent, such as the filename, file size, and number of pieces.

+ +

+ # + What are the different user roles available in QBittorrentBot? +

+
+

QBittorrentBot supports three user roles: Reader, Manager, and Admin. Each role has different permissions, as follows:

+
    +
  • Reader: Can view lists of active torrents and view individual torrent details.
  • +
  • Manager: Can perform all Reader actions, plus add/edit categories, set torrent priorities, and pause/resume downloads.
  • +
  • Admin: Can perform all Manager actions, plus remove torrents, remove categories, and edit configs.
  • +
+ +

+ # + How do I change the user role for a user? +

+
+

You can change the user role for a user by editing the config.json file. Open the file and find the user's entry. Change the role field to the desired role (e.g., "reader", "manager", or "admin"). Save the file and restart the bot or, if you are an admin you can reload the configuration from the bot.

+ +

+ # + How do I install QBittorrentBot on my server? +

+
+

You can install QBittorrentBot on your server using Docker. First, install Docker on your server. Then, create a Docker image from the QBittorrentBot Dockerfile. Finally, run the Docker image to start the bot.

+ +

+ # + How do I add a new manager to my QBittorrentBot? +

+
+

Please follow this guide +

+
+ + + + Add new client manager +
+
+ ../advanced/add_new_client_manager/ +
+ +
+

+ +

+ # + How do I add a new entry to the QBittorrentBot configuration file? +

+
+

Please follow this guide +

+
+ + + + Add new entries in configuration file +
+
+ ../advanced/add_entries_configuration/ +
+ +
+

+ +

+ # + How do I contribute to the development of QBittorrentBot? +

+
+

QBittorrentBot is an open-source project. You can contribute to the development by reporting bugs, suggesting improvements, or submitting pull requests. The project's code is hosted on GitHub.

+ + + + +
+ +
+ +
+
+
+
    +
+
+ +
+
+
+ + + + + + + +
+ +
+
+ + + +
+ + +
+ + + + diff --git a/getting_started/configuration_file/index.html b/getting_started/configuration_file/index.html new file mode 100644 index 0000000..9bb1d9e --- /dev/null +++ b/getting_started/configuration_file/index.html @@ -0,0 +1,472 @@ + + + + + + + + + + + + Configuration File + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + +
+ + +
+ + + +
+ +
+ + + + +
+ + + + + +
+ +
+ + +
+ + +
+ +
+
+ +
+
+ + + + +
+
+
+
+ +
+ + + + + + + + +
+ +
+
+
+
+ +
+ + +

+ # + Configuration File +

+
+

The configuration file serves as a central repository for all the necessary information that the QBittorrentBot needs to operate effectively. It defines the connection parameters, credentials, and user settings that the bot utilizes to interact with the qBittorrent server and Telegram API.

+

Below you can find an example of the configuration file:

+
+
{
+    "client": {
+        "type": "qbittorrent",
+        "host": "192.168.178.102",
+        "port": 8080,
+        "user": "admin",
+        "password": "admin"
+    },
+    "telegram": {
+        "bot_token": "1111111:AAAAAAAA-BBBBBBBBB",
+        "api_id": 1111,
+        "api_hash": "aaaaaaaa"
+    },
+
+    "users": [
+        {
+            "user_id": 123456,
+            "notify": false,
+            "role": "administrator"
+        }
+    ]
+}
+
+

Here's a brief overview of the configuration file and its key sections:

+
    +
  • Clients Section: Establishes the connection details for the qBittorrent server, including the hostname, port number, username, and password. This enables the bot to interact with the qBittorrent server and manage torrents.

    +
  • +
  • Telegram Section: Contains the bot token, API ID, and API hash, which are essential for authenticating the bot with the Telegram API. These credentials allow the bot to communicate with the Telegram server and receive user commands. Click here to find out how to retrive your API ID and API Hash

    +
  • +
  • Users Section: Lists the authorized users of the QBittorrentBot, along with their Telegram user IDs, notification preferences, and user roles. This section defines the users who can interact with the bot, receive notifications, and manage torrents.

    +
  • +
+ +

+ # + Client +

+
+

This section defines the configuration for the qBittorrent client that the bot will be interacting with.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeValue
typeClientTypeEnumThe type of client.
hostIPvAnyAddressThe IP address of the qBittorrent server.
portintThe port number of the qBittorrent server.
userstrThe username for the qBittorrent server.
passwordstrThe password for the qBittorrent server.
+
+ +

+ # + Telegram +

+
+

This section defines the configuration for the Telegram bot that the QBittorrentBot will be communicating with.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeValue
bot_tokenstrThe bot token for the QBittorrentBot. This is a unique identifier that is used to authenticate the bot with the Telegram API.
api_idintThe API ID for the QBittorrentBot. This is a unique identifier that is used to identify the bot to the Telegram API.
api_hashstrThe API hash for the QBittorrentBot. This is a string of characters that is used to verify the authenticity of the bot's requests to the Telegram API.
+
+ +

+ # + Users +

+
+

This section defines the list of users who are authorized to use the QBittorrentBot. Each user is defined by their Telegram user ID, whether or not they should be notified about completed torrents, and their role.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeValue
user_idintThe Telegram user ID of the user. This is a unique identifier that is used to identify the user to the Telegram API.
notifyboolWhether or not the user should be notified about new torrents.
roleUserRolesEnumThe role of the user.
+
+ +

+ # + Enums +

+
+ +

+ # + ClientTypeEnum +

+
+
+ + + + + + + + + + + + + + + +
NameTypeValue(to be used in json)
QBittorrentstrqbittorrent
+
+ +

+ # + UserRolesEnum +

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeValue(to be used in json)Remarks
ReaderstrreaderCan perform only reading operations(view torrents)
ManagerstrmanagerCan perform only managing operations(view torrents + can download files + can add/edit categories + set torrent priority + can stop/start downloads)
AdministratorstradministratorCan perform all operations (Manager + remove torrent + remove category + edit configs)
+
+ +

+ # + Other types +

+
+ +

+ # + IPvAnyAddress +

+
+

This type allows either an IPv4Address or an IPv6Address

+ + + + +
+ +
+ +
+
+
+
    +
+
+ +
+
+
+ + + + + + + +
+ +
+
+ + + +
+ + +
+ + + + diff --git a/getting_started/index.html b/getting_started/index.html new file mode 100644 index 0000000..1405415 --- /dev/null +++ b/getting_started/index.html @@ -0,0 +1,266 @@ + + + + + + + + + + + + Getting Started + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + +
+ + +
+ + + +
+ +
+ + + + +
+ + + + + +
+ +
+ + +
+ + +
+ +
+
+ +
+
+ + + + +
+
+
+
+ +
+ + + + + + + + +
+ +
+
+
+
+ +
+ + +

+ # + Getting Started +

+
+

In order to start using the bot, you must first create a folder where the bot will fish for settings and where it will save logs

+

For example: let's create a folder called QBittorrentBot in the home of the user user. The path to the folder will then be /home/user/docker/QBittorrentBot.

+

Before starting the bot you need to place the configuration file in this folder. You can rename the config.json.template file to config.json and change the parameters as desired. Go here to read more about the configuration file.

+

Once that is done you can start the bot using docker, you can use either docker or docker compose.

+ + + +

Open your terminal and execute the following command to start the bot container:

+

docker run -d -v /home/user/docker/QBittorrentBot:/app/config:rw --name qbittorrent-bot ch3p4ll3/qbittorrent-bot:latest

+
+ + +

Create a file named docker-compose.yml inside a directory with the following content:

+
+
version: '3.9'
+services:
+    qbittorrent-bot:
+        image: 'ch3p4ll3/qbittorrent-bot:latest'
+        container_name: qbittorrent-bot
+        restart: unless-stopped
+        volumes:
+            - '/home/user/docker/QBittorrentBot:/app/config:rw'
+
+

Run the following command to start the bot using Docker Compose: +docker compose up -d

+
+ + + + +
+ +
+ +
+
+
+
    +
+
+ +
+
+
+ + + + + + + +
+ +
+
+ + + +
+ + +
+ + + + diff --git a/getting_started/migrating_to_v2/index.html b/getting_started/migrating_to_v2/index.html new file mode 100644 index 0000000..ebb7c14 --- /dev/null +++ b/getting_started/migrating_to_v2/index.html @@ -0,0 +1,329 @@ + + + + + + + + + + + + Migrating to V2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + +
+ + +
+ + + +
+ +
+ + + + +
+ + + + + +
+ +
+ + +
+ + +
+ +
+
+ +
+
+ + + + +
+
+
+
+ +
+ + + + + + + + +
+ +
+
+
+
+ +
+ + +

+ # + Migrating to V2 +

+
+

Much has changed with the new version, especially the management of the configuration file. Some fields have been added, while others have changed names, so first check that you have all the fields in the json with the correct name.

+ +

+ # + New fields +

+
+

Two new fields were introduced: type and role in the client and users sections, respectively.

+

The type field determines the type of torrent client you want to use(currently only qbittorrent is supported, so its value must be qbittorrent)

+

The role field, on the other hand, determines the role of a particular user. Currently there are 3 roles:

+
    +
  • Reader
  • +
  • Manager
  • +
  • Administrator
  • +
+

You can find more information here

+ +

+ # + Changed names +

+
+

There are 2 changes to the field names, the first is the name of the qbittorrent section which has been renamed to client. While the second is the ip field inside che client section which has been renamed to host

+ +

+ # + V1 vs V2 +

+
+

configurations in comparison

+
+
+ V1 +
+
+ V2 +
+
+
+
{
+    "qbittorrent": {
+        "ip": "192.168.178.102",
+        "port": 8080,
+        "user": "admin",
+        "password": "admin"
+    },
+    "telegram": {
+        "bot_token": "1111111:AAAAAAAA-BBBBBBBBB",
+        "api_id": 1111,
+        "api_hash": "aaaaaaaa"
+    },
+
+    "users": [
+        {
+            "user_id": 123456,
+            "notify": false
+        }
+    ]
+}
+
+
+
+
+
{
+    "client": {
+        "type": "qbittorrent",
+        "host": "192.168.178.102",
+        "port": 8080,
+        "user": "admin",
+        "password": "admin"
+    },
+    "telegram": {
+        "bot_token": "1111111:AAAAAAAA-BBBBBBBBB",
+        "api_id": 1111,
+        "api_hash": "aaaaaaaa"
+    },
+
+    "users": [
+        {
+            "user_id": 123456,
+            "notify": false,
+            "role": "administrator"
+        }
+    ]
+}
+
+
+
+ + + + +
+ +
+ +
+
+
+
    +
+
+ +
+
+
+ + + + + + + +
+ +
+
+ + + +
+ + +
+ + + + diff --git a/images/administrator.png b/images/administrator.png new file mode 100644 index 0000000..8cab98e Binary files /dev/null and b/images/administrator.png differ diff --git a/images/administrator_qbittorrent_settings.png b/images/administrator_qbittorrent_settings.png new file mode 100644 index 0000000..4c95268 Binary files /dev/null and b/images/administrator_qbittorrent_settings.png differ diff --git a/images/administrator_settings.png b/images/administrator_settings.png new file mode 100644 index 0000000..0f5cda6 Binary files /dev/null and b/images/administrator_settings.png differ diff --git a/images/list_torrents.png b/images/list_torrents.png new file mode 100644 index 0000000..e3c6552 Binary files /dev/null and b/images/list_torrents.png differ diff --git a/images/torrent_info.png b/images/torrent_info.png new file mode 100644 index 0000000..7374196 Binary files /dev/null and b/images/torrent_info.png differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..0a24d72 --- /dev/null +++ b/index.html @@ -0,0 +1,283 @@ + + + + + + + + + + + + QBittorrentBot + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + +
+ + +
+ + + +
+ +
+ + + + +
+ + + + + +
+ +
+ + +
+ + +
+ +
+
+ +
+
+ + + + +
+
+
+
+ +
+ + + + + + + + +
+ +
+
+
+
+ +
+ + +

+ # + QBittorrentBot +

+
+

QBittorrentBot is a Telegram bot that allows you to control your qBittorrent downloads from your Telegram account.

+

This means that you can add, remove, pause, resume, and delete torrents, as well as view a list of your active downloads, all without having to open the qBittorrent application.

+
+
+ +
+ +

+ # + Features +

+
+

Here are some of the things you can do with QBittorrentBot:

+
    +
  • Add torrents: You can add torrents to your qBittorrent download queue by sending magnet links or torrent files to the bot.
  • +
  • List active downloads: You can get a list of your current downloads, including their progress, status, and estimated completion time.
  • +
  • Pause/Resume downloads: You can pause or resume ongoing downloads with a single command.
  • +
  • Delete torrents: You can remove unwanted downloads from your queue with a single command.
  • +
  • Add/Remove/Edit categories: You can categorize your torrents for better organization and accessibility.
  • +
  • Edit settings: You can edit user and torrent client settings directly from the bot
  • +
  • Check client connection: You can check the connection with the client directly from the bot
  • +
+ +

+ # + Benefits +

+
+

Here are some of the benefits of using QBittorrentBot:

+
    +
  • Security: You can add multiple users who have access to the bot and each of them can have different permissions(reader, manager, administrator)
  • +
  • Convenience: You can manage your torrents from anywhere, as long as you have your Telegram app with you.
  • +
  • Efficiency: You don't have to switch between apps to control your torrents.
  • +
  • Organization: You can categorize your torrents for better organization and accessibility.
  • +
  • Docker support: You can deploy and manage the bot seamlessly using Docker for enhanced isolation, security, and flexibility.
  • +
+

QBittorrentBot is an open-source project, so you can contribute to its development if you want to make it even more powerful and user-friendly.

+ + + + +
+ +
+ +
+
+
+
    +
+
+ +
+
+
+ + + + + + + +
+ +
+
+ + + +
+ + +
+ + + + diff --git a/resources/css/retype.css b/resources/css/retype.css new file mode 100644 index 0000000..21c90b8 --- /dev/null +++ b/resources/css/retype.css @@ -0,0 +1,6 @@ +/*! Retype v3.5.0 | retype.com | Copyright 2023. Object.NET, Inc. All rights reserved. */ + +:root{--logoLabel-text:#1f7aff;--logoLabel-background:#e1edff;--sidebar-background:#eee;--sidebar-border:#ccc;--sidebar-link:#333;--sidebar-linkHover:#444;-moz-tab-size:4;-o-tab-size:4;tab-size:4} + +/* ! tailwindcss v3.3.3 | MIT License | https://tailwindcss.com +*/*,:after,:before{border:0 solid #edeff4;box-sizing:border-box}:after,:before{--tw-content:""}html{-webkit-text-size-adjust:100%;font-feature-settings:normal;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#abb6c9;opacity:1}input::placeholder,textarea::placeholder{color:#abb6c9;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(66,132,251,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(66,132,251,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.content-left{display:table;float:left;margin-right:1.75rem}.content-center{display:grid;justify-items:center}.content-leftplus{display:table;float:left;margin-left:-1.5rem;margin-right:1.75rem}@media (min-width:1200px){.content-leftplus{margin-left:-8rem}}@media (min-width:1440px){.content-leftplus{margin-left:-12rem}}.content-right,.content-rightplus{display:table;float:right;margin-left:1.75rem}.content-rightplus{margin-right:-1.5rem}@media (min-width:1200px){.content-rightplus{margin-right:-8rem}}@media (min-width:1440px){.content-rightplus{margin-right:-12rem}}.content-centerplus{display:grid;justify-items:center;margin-left:-1.5rem;margin-right:-1.5rem}@media (min-width:1200px){.content-centerplus{margin-left:-8rem;margin-right:-8rem}}@media (min-width:1440px){.content-centerplus{margin-left:-12rem;margin-right:-12rem}}.caption-float{caption-side:bottom;display:table-caption}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.bottom-0{bottom:0}.bottom-6{bottom:1.5rem}.left-0{left:0}.right-0{right:0}.right-25{right:6.25rem}.right-3{right:.75rem}.right-6{right:1.5rem}.top-0{top:0}.top-16{top:4rem}.top-20{top:5rem}.top-4{top:1rem}.top-40{top:10rem}.top-5{top:1.25rem}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-5{z-index:5}.z-50{z-index:50}.float-left{float:left}.clear-both{clear:both}.m-0{margin:0}.m-3{margin:.75rem}.-mx-px{margin-left:-1px;margin-right:-1px}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-2{margin-bottom:.5rem;margin-top:.5rem}.my-2\.5{margin-bottom:.625rem;margin-top:.625rem}.-mb-0{margin-bottom:0}.-mb-0\.5{margin-bottom:-.125rem}.-mb-px{margin-bottom:-1px}.-ml-1{margin-left:-.25rem}.-ml-4{margin-left:-1rem}.-ml-6{margin-left:-1.5rem}.-mr-2{margin-right:-.5rem}.-mt-1{margin-top:-.25rem}.-mt-2{margin-top:-.5rem}.-mt-3{margin-top:-.75rem}.-mt-3\.5{margin-top:-.875rem}.-mt-5{margin-top:-1.25rem}.-mt-px{margin-top:-1px}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-10{margin-bottom:2.5rem}.mb-12{margin-bottom:3rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.mb-px{margin-bottom:1px}.ml-0{margin-left:0}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-3\.5{margin-left:.875rem}.ml-4{margin-left:1rem}.ml-5{margin-left:1.25rem}.ml-auto{margin-left:auto}.mr-0{margin-right:0}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mr-6{margin-right:1.5rem}.mr-8{margin-right:2rem}.mt-0{margin-top:0}.mt-0\.75{margin-top:.1875rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-12{margin-top:3rem}.mt-14{margin-top:3.5rem}.mt-2{margin-top:.5rem}.mt-20{margin-top:5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.mt-px{margin-top:1px}.line-clamp-1{-webkit-line-clamp:1}.line-clamp-1,.line-clamp-3{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.contents{display:contents}.hidden{display:none}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-2{height:.5rem}.h-20{height:5rem}.h-3{height:.75rem}.h-4{height:1rem}.h-4\.5{height:1.125rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-full{height:100%}.h-screen{height:100vh}.max-h-10{max-height:2.5rem}.max-h-60{max-height:15rem}.max-h-\[32rem\]{max-height:32rem}.w-1{width:.25rem}.w-1\/2{width:50%}.w-10{width:2.5rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-2{width:.5rem}.w-24{width:6rem}.w-32{width:8rem}.w-4{width:1rem}.w-4\.5{width:1.125rem}.w-4\/5{width:80%}.w-40{width:10rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-75{width:18.75rem}.w-8{width:2rem}.w-96{width:24rem}.w-\[42rem\]{width:42rem}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0}.max-w-core{max-width:49.75rem}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.grow-0{flex-grow:0}.origin-center{transform-origin:center}.-translate-y-2{--tw-translate-y:-0.5rem}.-translate-y-2,.translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x:0px}.translate-x-full{--tw-translate-x:100%}.translate-x-full,.translate-y-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y:0px}.translate-y-4{--tw-translate-y:1rem}.rotate-45,.translate-y-4{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-45{--tw-rotate:45deg}.rotate-90{--tw-rotate:90deg}.rotate-90,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.list-none{list-style-type:none}.grid-flow-col{grid-auto-flow:column}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.content-center{align-content:center}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.self-end{align-self:flex-end}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-x-clip{overflow-x:clip}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.break-normal{overflow-wrap:normal;word-break:normal}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.rounded-sm{border-radius:.125rem}.rounded-b-md{border-bottom-left-radius:.375rem;border-bottom-right-radius:.375rem}.rounded-l{border-bottom-left-radius:.25rem;border-top-left-radius:.25rem}.rounded-l-lg{border-bottom-left-radius:.5rem;border-top-left-radius:.5rem}.rounded-r{border-bottom-right-radius:.25rem;border-top-right-radius:.25rem}.rounded-r-lg{border-bottom-right-radius:.5rem;border-top-right-radius:.5rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.rounded-br{border-bottom-right-radius:.25rem}.rounded-br-full{border-bottom-right-radius:9999px}.rounded-tl{border-top-left-radius:.25rem}.rounded-tr{border-top-right-radius:.25rem}.border{border-width:1px}.border-0{border-width:0}.border-4{border-width:4px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l{border-left-width:1px}.border-l-0{border-left-width:0}.border-r{border-right-width:1px}.border-r-0{border-right-width:0}.border-t{border-top-width:1px}.border-t-0{border-top-width:0}.border-solid{border-style:solid}.border-blue-100{--tw-border-opacity:1;border-color:rgb(225 237 255/var(--tw-border-opacity))}.border-blue-300{--tw-border-opacity:1;border-color:rgb(141 187 255/var(--tw-border-opacity))}.border-blue-500{--tw-border-opacity:1;border-color:rgb(66 132 251/var(--tw-border-opacity))}.border-dark-450{--tw-border-opacity:1;border-color:rgb(66 66 66/var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(237 239 244/var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(225 229 239/var(--tw-border-opacity))}.border-gray-400{--tw-border-opacity:1;border-color:rgb(171 182 201/var(--tw-border-opacity))}.border-gray-500{--tw-border-opacity:1;border-color:rgb(107 121 150/var(--tw-border-opacity))}.border-gray-600{--tw-border-opacity:1;border-color:rgb(68 78 102/var(--tw-border-opacity))}.border-gray-900{--tw-border-opacity:1;border-color:rgb(21 25 40/var(--tw-border-opacity))}.border-green-100{--tw-border-opacity:1;border-color:rgb(225 243 240/var(--tw-border-opacity))}.border-red-100{--tw-border-opacity:1;border-color:rgb(255 237 237/var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity))}.border-yellow-100{--tw-border-opacity:1;border-color:rgb(255 242 225/var(--tw-border-opacity))}.border-opacity-50{--tw-border-opacity:0.5}.bg-blue-100{--tw-bg-opacity:1;background-color:rgb(225 237 255/var(--tw-bg-opacity))}.bg-blue-200{--tw-bg-opacity:1;background-color:rgb(179 210 255/var(--tw-bg-opacity))}.bg-blue-300{--tw-bg-opacity:1;background-color:rgb(141 187 255/var(--tw-bg-opacity))}.bg-blue-400{--tw-bg-opacity:1;background-color:rgb(95 160 255/var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity:1;background-color:rgb(66 132 251/var(--tw-bg-opacity))}.bg-dark-450{--tw-bg-opacity:1;background-color:rgb(66 66 66/var(--tw-bg-opacity))}.bg-dark-500{--tw-bg-opacity:1;background-color:rgb(53 53 53/var(--tw-bg-opacity))}.bg-dark-550{--tw-bg-opacity:1;background-color:rgb(50 50 50/var(--tw-bg-opacity))}.bg-dark-850{--tw-bg-opacity:1;background-color:rgb(30 30 30/var(--tw-bg-opacity))}.bg-dark-900{--tw-bg-opacity:1;background-color:rgb(18 18 18/var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(248 249 252/var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(237 239 244/var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgb(225 229 239/var(--tw-bg-opacity))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgb(171 182 201/var(--tw-bg-opacity))}.bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 121 150/var(--tw-bg-opacity))}.bg-gray-600{--tw-bg-opacity:1;background-color:rgb(68 78 102/var(--tw-bg-opacity))}.bg-gray-700{--tw-bg-opacity:1;background-color:rgb(47 51 72/var(--tw-bg-opacity))}.bg-gray-900{--tw-bg-opacity:1;background-color:rgb(21 25 40/var(--tw-bg-opacity))}.bg-green-100{--tw-bg-opacity:1;background-color:rgb(225 243 240/var(--tw-bg-opacity))}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(54 173 153/var(--tw-bg-opacity))}.bg-indigo-100{--tw-bg-opacity:1;background-color:rgb(226 225 255/var(--tw-bg-opacity))}.bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 236 227/var(--tw-bg-opacity))}.bg-orange-500{--tw-bg-opacity:1;background-color:rgb(255 108 16/var(--tw-bg-opacity))}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(255 237 237/var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(229 62 62/var(--tw-bg-opacity))}.bg-root-logo-label-bg{background-color:var(--logoLabel-background)}.bg-teal-100{--tw-bg-opacity:1;background-color:rgb(230 245 247/var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(255 242 225/var(--tw-bg-opacity))}.bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(237 171 38/var(--tw-bg-opacity))}.bg-opacity-25{--tw-bg-opacity:0.25}.bg-opacity-50{--tw-bg-opacity:0.5}.bg-opacity-70{--tw-bg-opacity:0.7}.bg-opacity-80{--tw-bg-opacity:0.8}.bg-opacity-95{--tw-bg-opacity:0.95}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0{padding-bottom:0;padding-top:0}.py-0\.5{padding-bottom:.125rem;padding-top:.125rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.pb-12{padding-bottom:3rem}.pb-16{padding-bottom:4rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-5{padding-bottom:1.25rem}.pb-6{padding-bottom:1.5rem}.pb-9\/16{padding-bottom:56.25%}.pl-0{padding-left:0}.pl-1{padding-left:.25rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-5{padding-left:1.25rem}.pl-6{padding-left:1.5rem}.pl-8{padding-left:2rem}.pr-14{padding-right:3.5rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pr-5{padding-right:1.25rem}.pr-6{padding-right:1.5rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-3\/4{padding-top:75%}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-9\/16{padding-top:56.25%}.pt-9\/21{padding-top:42.857%}.pt-full{padding-top:100%}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-body{font-family:Inter var,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem}.text-2xs{font-size:.75rem}.text-3xs{font-size:.675rem}.text-base{font-size:1rem}.text-lg{font-size:1.125rem}.text-sm{font-size:.875rem}.text-xl{font-size:1.25rem}.text-xs{font-size:.8125rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.leading-10{line-height:2.5rem}.leading-8{line-height:2rem}.leading-none{line-height:1}.leading-normal{line-height:1.6}.leading-relaxed{line-height:1.75}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.text-blue-300{--tw-text-opacity:1;color:rgb(141 187 255/var(--tw-text-opacity))}.text-blue-400{--tw-text-opacity:1;color:rgb(95 160 255/var(--tw-text-opacity))}.text-blue-500{--tw-text-opacity:1;color:rgb(66 132 251/var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity:1;color:rgb(31 122 255/var(--tw-text-opacity))}.text-blue-700{--tw-text-opacity:1;color:rgb(0 103 252/var(--tw-text-opacity))}.text-dark-300{--tw-text-opacity:1;color:rgb(189 189 189/var(--tw-text-opacity))}.text-dark-350{--tw-text-opacity:1;color:rgb(158 158 158/var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity:1;color:rgb(225 229 239/var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgb(171 182 201/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 121 150/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(68 78 102/var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgb(47 51 72/var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(21 25 40/var(--tw-text-opacity))}.text-green-500{--tw-text-opacity:1;color:rgb(54 173 153/var(--tw-text-opacity))}.text-green-700{--tw-text-opacity:1;color:rgb(24 137 115/var(--tw-text-opacity))}.text-indigo-700{--tw-text-opacity:1;color:rgb(73 50 214/var(--tw-text-opacity))}.text-orange-700{--tw-text-opacity:1;color:rgb(219 73 0/var(--tw-text-opacity))}.text-red-500{--tw-text-opacity:1;color:rgb(229 62 62/var(--tw-text-opacity))}.text-red-600{--tw-text-opacity:1;color:rgb(211 38 38/var(--tw-text-opacity))}.text-red-700{--tw-text-opacity:1;color:rgb(196 30 30/var(--tw-text-opacity))}.text-red-800{--tw-text-opacity:1;color:rgb(178 18 18/var(--tw-text-opacity))}.text-root-logo-label-text{color:var(--logoLabel-text)}.text-teal-700{--tw-text-opacity:1;color:rgb(44 122 123/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-yellow-500{--tw-text-opacity:1;color:rgb(237 171 38/var(--tw-text-opacity))}.text-yellow-700{--tw-text-opacity:1;color:rgb(201 124 0/var(--tw-text-opacity))}.text-yellow-900{--tw-text-opacity:1;color:rgb(142 81 0/var(--tw-text-opacity))}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.placeholder-gray-400::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(171 182 201/var(--tw-placeholder-opacity))}.placeholder-gray-400::placeholder{--tw-placeholder-opacity:1;color:rgb(171 182 201/var(--tw-placeholder-opacity))}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-30{opacity:.3}.opacity-50{opacity:.5}.shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.shadow-2xl,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-md,.shadow-none{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-sm,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-100{transition-duration:.1s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-75{transition-duration:75ms}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{transition-timing-function:linear}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}html{font-feature-settings:"cv02","cv03","cv04","cv11"}@font-face{font-named-instance:"Regular";font-display:swap;font-family:Inter var;font-style:normal;font-weight:100 900;src:url(../fonts/Inter-roman-latin-var.woff2) format("woff2")}@font-face{font-named-instance:"Italic";font-display:swap;font-family:Inter var;font-style:italic;font-weight:100 900;src:url(../fonts/Inter-italic-latin-var.woff2) format("woff2")}.container{margin-left:auto;margin-right:auto;max-width:1800px}.skeleton,[v-cloak]{display:none}[v-cloak].skeleton{display:flex}@media (min-width:960px){.docs-mobile-menu-button{display:none!important}}.loading{overflow:hidden;position:relative}.loading:after{animation:loading 1.5s cubic-bezier(0,0,.22,1.21) infinite;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.85),transparent);content:"";display:block;height:100%;position:absolute;width:100%}@keyframes loading{0%{transform:translateX(-100%)}to{transform:translateX(100%)}}.dark{--tw-bg-opacity:1;background-color:rgb(30 30 30/var(--tw-bg-opacity))}.dark .loading:after{background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.05),transparent)}.no-transitions,.no-transitions *{transition:none!important}.docs-copyright a{--tw-text-opacity:1;color:rgb(66 132 251/var(--tw-text-opacity))}.docs-copyright a:hover{--tw-text-opacity:1;color:rgb(0 103 252/var(--tw-text-opacity));text-decoration-line:underline}:is(.dark .docs-copyright a){--tw-text-opacity:1;color:rgb(95 160 255/var(--tw-text-opacity))}.docs-icon{display:inline;font-size:87.5%;vertical-align:-.2em;width:1.3em}.outbound .docs-icon{font-size:75%}.btn{align-items:center;border-radius:.25rem;cursor:pointer;display:inline-flex;font-size:.875rem;font-weight:500;height:2rem;justify-content:center;line-height:1;padding-left:.75rem;padding-right:.75rem;transition-duration:.2s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:linear;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.btn:active,.btn:focus{outline:2px solid transparent;outline-offset:2px}.btn-gray-outline{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-color:rgb(171 182 201/var(--tw-border-opacity));border-width:1px;color:rgb(21 25 40/var(--tw-text-opacity))}.btn-gray-outline:active,.btn-gray-outline:focus,.btn-gray-outline:hover{--tw-border-opacity:1;border-color:rgb(107 121 150/var(--tw-border-opacity))}.btn-icon{padding-left:0;padding-right:0;width:2rem}code[class*=language-],pre[class*=language-]{color:#e2e2e2;direction:ltr;font-family:Menlo,Monaco,Consolas,Andale Mono,Ubuntu Mono,Courier New,monospace;font-size:13px;-webkit-hyphens:none;hyphens:none;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;text-align:left;text-shadow:none;white-space:pre;word-break:normal;word-spacing:normal}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{background:#75a7ca;text-shadow:none}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{background:#75a7ca;text-shadow:none}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{background:#1e1e1e;margin:.5em 0;padding:1em}.namespace{opacity:1}.token.doctype .token.doctype-tag{color:#569cd6}.token.doctype .token.name{color:#9cdcfe}.token.comment,.token.prolog{color:#6a9955}.language-html .language-css .token.punctuation,.language-html .language-javascript .token.punctuation,.token.punctuation{color:#d4d4d4}.token.boolean,.token.constant,.token.inserted,.token.number,.token.property,.token.symbol,.token.tag,.token.unit{color:#b5cea8}.token.attr-name,.token.builtin,.token.char,.token.deleted,.token.selector,.token.string{color:#ce9178}.language-css .token.string.url{text-decoration:underline}.token.entity,.token.operator{color:#d4d4d4}.token.operator.arrow{color:#569cd6}.token.atrule{color:#ce9178}.token.atrule .token.rule{color:#c586c0}.token.atrule .token.url{color:#9cdcfe}.token.atrule .token.url .token.function{color:#dcdcaa}.token.atrule .token.url .token.punctuation{color:#9cdcfe}.token.keyword{color:#569cd6}.token.keyword.control-flow,.token.keyword.module{color:#c586c0}.token.function,.token.function .token.maybe-class-name{color:#dcdcaa}.token.regex{color:#d16969}.token.important{color:#569cd6}.token.italic{font-style:italic}.token.constant{color:#9cdcfe}.token.class-name,.token.maybe-class-name{color:#4ec9b0}.token.console,.token.interpolation,.token.parameter{color:#9cdcfe}.token.boolean,.token.punctuation.interpolation-punctuation{color:#569cd6}.token.exports .token.maybe-class-name,.token.imports .token.maybe-class-name,.token.property,.token.variable{color:#9cdcfe}.token.escape,.token.selector{color:#d7ba7d}.token.tag{color:#569cd6}.token.cdata,.token.tag .token.punctuation{color:grey}.token.attr-name{color:#9cdcfe}.token.attr-value,.token.attr-value .token.punctuation{color:#ce9178}.token.attr-value .token.punctuation.attr-equals{color:#9cdcfe}.token.entity{color:#569cd6}.token.namespace{color:#4ec9b0}code[class*=language-cs],code[class*=language-javascript],code[class*=language-jsx],code[class*=language-tsx],code[class*=language-typescript],pre[class*=language-cs],pre[class*=language-javascript],pre[class*=language-jsx],pre[class*=language-tsx],pre[class*=language-typescript]{color:#9cdcfe}code[class*=language-css],pre[class*=language-css]{color:#ce9178}code[class*=language-html],pre[class*=language-html]{color:#9cdcfe}.language-regex .token.anchor{color:#dcdcaa}.language-html .token.punctuation{color:grey}.language-cs .token.keyword-using{color:#c586c0}.language-shell .token:not(.comment){color:#e2e2e2}pre[class*=language-]>.line-highlight{margin-top:.875rem}.line-highlight{background:hsla(0,0%,100%,.1);left:0;line-height:inherit;margin-top:1rem;padding:0;pointer-events:none;position:absolute;right:0;white-space:pre;z-index:1}@media print{.line-highlight{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.docs-markdown{line-height:1.75}.docs-markdown img{display:inline}.docs-markdown h1,.docs-markdown h2,.docs-markdown h3,.docs-markdown h4,.docs-markdown h5,.docs-markdown h6{--tw-text-opacity:1;color:rgb(21 25 40/var(--tw-text-opacity));font-weight:600;line-height:1.25;margin-left:-2rem;padding-left:2rem}.docs-markdown h1 .header-anchor-trigger,.docs-markdown h2 .header-anchor-trigger,.docs-markdown h3 .header-anchor-trigger,.docs-markdown h4 .header-anchor-trigger,.docs-markdown h5 .header-anchor-trigger,.docs-markdown h6 .header-anchor-trigger{--tw-text-opacity:1;color:rgb(66 132 251/var(--tw-text-opacity));float:left;font-size:1.125rem;font-weight:400;margin-left:-1.5rem;margin-top:.875rem;opacity:0}.docs-markdown h1 .header-anchor-trigger:hover,.docs-markdown h2 .header-anchor-trigger:hover,.docs-markdown h3 .header-anchor-trigger:hover,.docs-markdown h4 .header-anchor-trigger:hover,.docs-markdown h5 .header-anchor-trigger:hover,.docs-markdown h6 .header-anchor-trigger:hover{--tw-text-opacity:1!important;color:rgb(0 75 183/var(--tw-text-opacity))!important;text-decoration-line:none!important}.docs-markdown h1:hover .header-anchor-trigger,.docs-markdown h2:hover .header-anchor-trigger,.docs-markdown h3:hover .header-anchor-trigger,.docs-markdown h4:hover .header-anchor-trigger,.docs-markdown h5:hover .header-anchor-trigger,.docs-markdown h6:hover .header-anchor-trigger{opacity:1}.docs-markdown h2 .header-anchor-trigger{margin-top:.625rem}.docs-markdown h3 .header-anchor-trigger{margin-top:.25rem}.docs-markdown h4 .header-anchor-trigger,.docs-markdown h5 .header-anchor-trigger,.docs-markdown h6 .header-anchor-trigger{margin-top:0}.docs-markdown h5 .header-anchor-trigger,.docs-markdown h6 .header-anchor-trigger{font-size:1rem}.docs-markdown h1{font-size:2.5rem;margin-bottom:2rem;padding-right:2rem;z-index:10}.docs-markdown h2{font-size:2rem;margin-bottom:1.5rem}.docs-markdown h3{font-size:1.5rem;margin-bottom:1.5rem}.docs-markdown h4{font-size:1.125rem;margin-bottom:1.5rem}.docs-markdown h5{font-size:1rem;margin-bottom:1.5rem}.docs-markdown h6{font-size:.875rem}.docs-markdown h6,.docs-markdown p:not(.hidden){margin-bottom:1.5rem}.docs-markdown h1~.xtype{display:block;margin-bottom:2rem;margin-top:-1.5rem}.docs-markdown a:not(.no-link){--tw-text-opacity:1;color:rgb(66 132 251/var(--tw-text-opacity))}.docs-markdown a:not(.no-link):hover{--tw-text-opacity:1;color:rgb(0 103 252/var(--tw-text-opacity));text-decoration-line:underline}.docs-markdown a:not(.no-link) code:not([class*=language-]):not(.member-signature){color:inherit}.docs-markdown .link-dark{font-weight:600}.docs-markdown .link-dark,.docs-markdown .link-dark:hover{--tw-text-opacity:1;color:rgb(21 25 40/var(--tw-text-opacity))}.docs-markdown .link-dark:hover{text-decoration-line:underline}.docs-markdown code:not([class*=language-]):not(.member-signature),.docs-markdown kbd,.docs-markdown pre:not([class*=language-]):not(.member-signature){font-size:92.5%;font-weight:400}.docs-markdown code:not([class*=language-]):not(.member-signature){--tw-border-opacity:1;--tw-text-opacity:1;background-color:#f3f5f9;border-color:rgb(225 229 239/var(--tw-border-opacity));border-radius:.25rem;border-width:1px;color:rgb(21 25 40/var(--tw-text-opacity));line-height:1;padding:2px 5px}.docs-markdown kbd{--tw-border-opacity:0.75;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-color:rgb(171 182 201/var(--tw-border-opacity));border-radius:.25rem;border-width:1px;box-shadow:0 1px 0 0 #edeff4;color:rgb(21 25 40/var(--tw-text-opacity));display:inline-block;line-height:1;padding:2px 5px}.docs-markdown ol,.docs-markdown ul{margin-bottom:1.5rem;padding-left:2rem}.docs-markdown ol ol,.docs-markdown ol ul,.docs-markdown ul ol,.docs-markdown ul ul{margin-bottom:0;padding-left:2rem}.docs-markdown ol{list-style-type:decimal}.docs-markdown ol[type=A]{list-style-type:upper-alpha}.docs-markdown ol[type=a]{list-style-type:lower-alpha}.docs-markdown ol[type=I]{list-style-type:upper-roman}.docs-markdown ol[type=i]{list-style-type:lower-roman}.docs-markdown ol[type="1"]{list-style-type:decimal}.docs-markdown ul{list-style-type:disc}.docs-markdown ul ul{list-style-type:circle}.docs-markdown ul ul ul{list-style-type:square}.docs-markdown ul.contains-task-list{list-style-type:none;padding-left:9px}.docs-markdown ul.contains-task-list input{margin-left:1px;margin-right:5px;margin-top:1px;position:relative}.docs-markdown ul.contains-task-list input:after,.docs-markdown ul.contains-task-list input:before{border-radius:.125rem;display:block;height:1rem;position:absolute;width:1rem;z-index:5}.docs-markdown ul.contains-task-list input:before{--tw-bg-opacity:1;background-color:rgb(225 229 239/var(--tw-bg-opacity));content:"";left:-1px;top:0;z-index:5}.docs-markdown ul.contains-task-list input:checked:before{--tw-bg-opacity:1;background-color:rgb(66 132 251/var(--tw-bg-opacity))}.docs-markdown ul.contains-task-list input:checked:after{--tw-rotate:45deg;border-radius:0;border-width:0 2px 2px 0;bottom:.125rem;content:"";display:inline-block;height:.625rem;left:.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));width:.375rem;z-index:10}.docs-markdown dl{border-collapse:separate;margin-bottom:1.5rem;width:100%}.docs-markdown dl:after{--tw-content:none;clear:both;content:var(--tw-content);display:table}.docs-markdown dd,.docs-markdown dt{display:inline-block;padding-bottom:1rem;padding-right:1rem;padding-top:1rem}.docs-markdown dt{border-top-width:1px;clear:left;float:left;font-weight:500;width:33.333333%}:is(.dark .docs-markdown dt){--tw-border-opacity:1;border-top-color:rgb(44 44 44/var(--tw-border-opacity))}.docs-markdown dt:first-child{padding-top:1rem}.docs-markdown dd{border-top-width:1px;clear:right;width:66.666667%}:is(.dark .docs-markdown dd){--tw-border-opacity:1;border-top-color:rgb(44 44 44/var(--tw-border-opacity))}.docs-markdown dd+dd{clear:both;float:right}.docs-markdown dd+dt{clear:both;padding-top:1rem}.docs-markdown dt+dt{float:none;padding-bottom:.1875rem}.docs-markdown dt+dt+dd{margin-top:-2rem}.docs-markdown dt+dt+dd+dt{margin-top:2rem}.docs-markdown ul.list-icon,.docs-markdown ul.list-icon ul{list-style-type:none;padding-left:1rem}.docs-markdown ul.list-icon li>svg.docs-icon:first-child,.docs-markdown ul.list-icon ul li>svg.docs-icon:first-child{margin-right:.25rem}.docs-markdown blockquote{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(248 249 252/var(--tw-bg-opacity));border-left-width:4px;color:rgb(68 78 102/var(--tw-text-opacity));margin-bottom:1.5rem;padding:1rem 1rem 1rem 1.25rem}.docs-markdown blockquote p:last-child{margin-bottom:0}.docs-markdown .table-wrapper{border-radius:.375rem;border-width:1px;margin-bottom:1.5rem}.docs-markdown table{border-collapse:separate;border-spacing:0;overflow:auto}.docs-markdown table tr td,.docs-markdown table tr th{border-bottom-width:1px;border-right-width:1px;padding:.5rem .75rem}.docs-markdown table tr td:last-child,.docs-markdown table tr th:last-child{border-right-width:0}.docs-markdown table th{--tw-text-opacity:1;color:rgb(21 25 40/var(--tw-text-opacity));font-weight:500}.docs-markdown table th:empty{display:none}.docs-markdown table tbody>tr:last-child td{border-bottom-width:0}.docs-markdown table.compact{font-size:.875rem;width:100%}.docs-markdown table.compact th{text-align:left}.docs-markdown table.compact tr td,.docs-markdown table.compact tr th{padding:.375rem .625rem}.docs-markdown table.comfortable{width:100%}.docs-markdown table.comfortable th{text-align:left}.docs-markdown table.comfortable tr td,.docs-markdown table.comfortable tr th{padding:1rem 1.25rem}.docs-markdown hr{--tw-border-opacity:1;border-color:rgb(237 239 244/var(--tw-border-opacity));margin-bottom:2rem;margin-top:2rem}.docs-markdown figure{margin-bottom:1.5rem}.docs-markdown figure>:first-child{margin-bottom:0}.docs-markdown .caption{--tw-text-opacity:1;color:rgb(107 121 150/var(--tw-text-opacity));font-size:.875rem;margin-top:.5rem;text-align:center}.docs-markdown .doc-member h3{font-size:1rem;margin:0;padding:0}.docs-markdown .doc-member p{margin-bottom:1rem}.docs-markdown .doc-member :last-child{margin-bottom:0}.docs-markdown .doc-member-group>.doc-member{border-top-left-radius:.375rem;border-top-right-radius:.375rem;border-top-width:1px}.docs-markdown .doc-member-group>.doc-member:last-child{border-bottom-left-radius:.375rem;border-bottom-right-radius:.375rem}.docs-markdown .doc-member-group>.doc-member~.doc-member{border-top-left-radius:0;border-top-right-radius:0}.docs-markdown.filtered>:not(.doc-member-group){display:none}.docs-markdown .docs-columns{display:grid}.docs-markdown .docs-columns-content>:last-child{margin-bottom:0}.docs-markdown .docs-columns-code{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(30 30 30/var(--tw-bg-opacity));border-color:rgb(50 50 50/var(--tw-border-opacity))}.docs-markdown .docs-columns-code .codeblock-wrapper{border:none!important}.docs-markdown .docs-columns-code-title{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(30 30 30/var(--tw-bg-opacity));border-bottom-width:1px;border-color:rgb(50 50 50/var(--tw-border-opacity))}.docs-markdown code[class*=language-],.docs-markdown pre[class*=language-]{line-height:1.6}.docs-markdown pre[class*=language-]{margin:0;padding:1rem 1.25rem}.docs-markdown .codeblock-wrapper{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(30 30 30/var(--tw-bg-opacity));border-color:rgb(255 255 255/var(--tw-border-opacity));border-radius:.375rem;border-width:1px;margin-bottom:1.5rem;overflow:hidden;width:100%}.docs-markdown .codeblock.line-numbers pre{padding-left:3.75rem}.docs-markdown .codeblock .tooltip,.docs-markdown .codeblock .tooltip .arrow:before{--tw-bg-opacity:1;background-color:rgb(53 53 53/var(--tw-bg-opacity))}.docs-markdown .codeblock-title{--tw-border-opacity:1;--tw-text-opacity:1;border-bottom-width:1px;border-color:rgb(50 50 50/var(--tw-border-opacity));color:rgb(224 224 224/var(--tw-text-opacity));font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.875rem;height:3rem;line-height:3rem;overflow:hidden;padding-left:1.25rem;padding-right:1.25rem;text-overflow:ellipsis;white-space:nowrap}.docs-markdown .codeblock-title code{--tw-border-opacity:1!important;--tw-bg-opacity:1!important;--tw-text-opacity:1!important;background-color:rgb(53 53 53/var(--tw-bg-opacity))!important;border-color:rgb(66 66 66/var(--tw-border-opacity))!important;border-width:1px!important;color:rgb(255 255 255/var(--tw-text-opacity))!important}.docs-markdown nav.breadcrumb{--tw-text-opacity:1;color:rgb(107 121 150/var(--tw-text-opacity));display:flex;font-size:.875rem;font-weight:500;margin-bottom:1rem}.docs-markdown nav.breadcrumb ol{align-items:center;display:flex;flex-wrap:wrap;list-style-type:none;margin:0;padding:0}.docs-markdown nav.breadcrumb ol li{align-items:center;display:flex;margin-top:.5rem}.docs-markdown nav.breadcrumb ol li a{--tw-text-opacity:1;color:rgb(107 121 150/var(--tw-text-opacity));text-decoration-line:none;transition-duration:.2s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:linear}.docs-markdown nav.breadcrumb ol li a:hover{--tw-text-opacity:1;color:rgb(66 132 251/var(--tw-text-opacity));text-decoration-line:none}#docs-app #docs-hub-link{border-radius:.25rem;display:flex;margin-right:.5rem;padding:.125rem;transition-duration:.2s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,1,1)}#docs-app #docs-hub-link:hover{--tw-bg-opacity:1;background-color:rgb(237 239 244/var(--tw-bg-opacity))}#docs-app #docs-hub-link:focus{--tw-bg-opacity:1;background-color:rgb(225 229 239/var(--tw-bg-opacity));outline:2px solid transparent;outline-offset:2px}.dark .docs-markdown h1,.dark .docs-markdown h2,.dark .docs-markdown h3,.dark .docs-markdown h4,.dark .docs-markdown h5,.dark .docs-markdown h6{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.dark .docs-markdown a:not(.no-link),.dark .docs-markdown h1 .header-anchor-trigger,.dark .docs-markdown h2 .header-anchor-trigger,.dark .docs-markdown h3 .header-anchor-trigger,.dark .docs-markdown h4 .header-anchor-trigger,.dark .docs-markdown h5 .header-anchor-trigger,.dark .docs-markdown h6 .header-anchor-trigger{--tw-text-opacity:1;color:rgb(95 160 255/var(--tw-text-opacity))}.dark .docs-markdown a:not(.no-link) code:not([class*=language-]):not(.member-signature){color:inherit}.dark .docs-markdown .link-dark{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.dark .docs-markdown blockquote{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(39 39 39/var(--tw-bg-opacity));border-color:rgb(53 53 53/var(--tw-border-opacity));border-width:0 0 0 4px;color:rgb(189 189 189/var(--tw-text-opacity))}.dark .docs-markdown code:not([class*=language-]):not(.member-signature){--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(53 53 53/var(--tw-bg-opacity));border-color:rgb(66 66 66/var(--tw-border-opacity));border-width:1px;color:rgb(255 255 255/var(--tw-text-opacity))}.dark .docs-markdown kbd{--tw-border-opacity:0.75;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(34 34 34/var(--tw-bg-opacity));border-color:rgb(97 97 97/var(--tw-border-opacity));border-radius:.25rem;border-width:1px;box-shadow:0 1px 0 0 #505050;color:rgb(255 255 255/var(--tw-text-opacity));display:inline-block;line-height:1;padding:2px 5px}.dark .docs-markdown ul.contains-task-list input:before{--tw-bg-opacity:1;background-color:rgb(97 97 97/var(--tw-bg-opacity))}.dark .docs-markdown ul.contains-task-list input:checked:before{--tw-bg-opacity:1;background-color:rgb(95 160 255/var(--tw-bg-opacity))}.dark .docs-markdown .table-wrapper,.dark .docs-markdown table td,.dark .docs-markdown table th,.dark .docs-markdown table tr{--tw-border-opacity:1;border-color:rgb(53 53 53/var(--tw-border-opacity))}.dark .docs-markdown table th{--tw-text-opacity:1;color:rgb(225 229 239/var(--tw-text-opacity))}.dark .docs-markdown hr{--tw-border-opacity:1;border-color:rgb(45 45 45/var(--tw-border-opacity))}.dark .docs-markdown .caption{--tw-text-opacity:1;color:rgb(158 158 158/var(--tw-text-opacity))}.dark .docs-markdown .doc-member h3{--tw-text-opacity:1;color:rgb(225 229 239/var(--tw-text-opacity))}.dark .docs-markdown .doc-member-group>.doc-member{--tw-border-opacity:1;border-color:rgb(44 44 44/var(--tw-border-opacity))}.dark .docs-markdown .docs-columns-code,.dark .docs-markdown .docs-columns-code-title,.dark .docs-markdown pre[class*=language-]{--tw-bg-opacity:1;background-color:rgb(34 34 34/var(--tw-bg-opacity))}.dark .docs-markdown .codeblock-wrapper{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(34 34 34/var(--tw-bg-opacity));border-color:rgb(44 44 44/var(--tw-border-opacity))}.dark .docs-markdown nav.breadcrumb{--tw-text-opacity:1;color:rgb(97 97 97/var(--tw-text-opacity))}.dark .docs-markdown nav.breadcrumb ol li a{--tw-text-opacity:1!important;color:rgb(97 97 97/var(--tw-text-opacity))!important}.dark .docs-markdown nav.breadcrumb ol li a:hover{--tw-text-opacity:1!important;color:rgb(95 160 255/var(--tw-text-opacity))!important}.dark #docs-app #docs-hub-link{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.dark #docs-app #docs-hub-link:hover{--tw-bg-opacity:1;background-color:rgb(53 53 53/var(--tw-bg-opacity))}.dark #docs-app #docs-hub-link:focus{--tw-bg-opacity:1;background-color:rgb(66 66 66/var(--tw-bg-opacity))}.doc-alert h5{line-height:1.75;margin-bottom:.25rem;margin-left:0;padding:0}.doc-alert p:last-child{margin-bottom:0}.doc-alert.doc-alert-contrast a{--tw-text-opacity:1!important;color:rgb(95 160 255/var(--tw-text-opacity))!important}.doc-alert.doc-alert-contrast h5{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.doc-alert.doc-alert-contrast code:not([class*=language-]):not(.member-signature){--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(47 51 72/var(--tw-bg-opacity));border-color:rgb(68 78 102/var(--tw-border-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.dark .doc-alert.doc-alert-contrast a{--tw-text-opacity:1!important;color:rgb(66 132 251/var(--tw-text-opacity))!important}.dark .doc-alert.doc-alert-contrast h5{--tw-text-opacity:1;color:rgb(21 25 40/var(--tw-text-opacity))}.dark .doc-alert.doc-alert-contrast code:not([class*=language-]){--tw-border-opacity:1;--tw-text-opacity:1;background-color:#f3f5f9;border-color:rgb(225 229 239/var(--tw-border-opacity));color:rgb(21 25 40/var(--tw-text-opacity))}[data-simplebar]{align-content:flex-start;align-items:flex-start;flex-direction:column;flex-wrap:wrap;justify-content:flex-start;position:relative}.simplebar-wrapper{height:inherit;max-height:inherit;max-width:inherit;overflow:hidden;width:inherit}.simplebar-mask{direction:inherit;height:auto!important;overflow:hidden;width:auto!important;z-index:0}.simplebar-mask,.simplebar-offset{bottom:0;left:0;margin:0;padding:0;position:absolute;right:0;top:0}.simplebar-offset{-webkit-overflow-scrolling:touch;box-sizing:inherit!important;direction:inherit!important;resize:none!important}.simplebar-content-wrapper{-ms-overflow-style:none;box-sizing:border-box!important;direction:inherit;display:block;height:100%;max-height:100%;max-width:100%;overflow:auto;position:relative;scrollbar-width:none;width:auto}.simplebar-content-wrapper::-webkit-scrollbar,.simplebar-hide-scrollbar::-webkit-scrollbar{display:none;height:0;width:0}.simplebar-content:after,.simplebar-content:before{content:" ";display:table}.simplebar-placeholder{max-height:100%;max-width:100%;pointer-events:none;width:100%}.simplebar-height-auto-observer-wrapper{box-sizing:inherit!important;flex-basis:0;flex-grow:inherit;flex-shrink:0;float:left;height:100%;margin:0;max-height:1px;max-width:1px;overflow:hidden;padding:0;pointer-events:none;position:relative;width:100%;z-index:-1}.simplebar-height-auto-observer{box-sizing:inherit;display:block;height:1000%;left:0;min-height:1px;min-width:1px;opacity:0;top:0;width:1000%;z-index:-1}.simplebar-height-auto-observer,.simplebar-track{overflow:hidden;pointer-events:none;position:absolute}.simplebar-track{bottom:0;right:0;z-index:1}[data-simplebar].simplebar-dragging,[data-simplebar].simplebar-dragging .simplebar-content{-webkit-touch-callout:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}[data-simplebar].simplebar-dragging .simplebar-track{pointer-events:all}.simplebar-scrollbar{left:0;min-height:10px;position:absolute;right:0}.simplebar-scrollbar:before{background:#000;border-radius:7px;content:"";opacity:0;position:absolute;transition:opacity .2s linear .5s}.simplebar-scrollbar.simplebar-visible:before{opacity:.5;transition-delay:0s;transition-duration:0s}.simplebar-track.simplebar-vertical{top:0;width:11px}.simplebar-scrollbar:before{bottom:2px;left:2px;right:2px;top:2px}.simplebar-track.simplebar-horizontal{height:11px;left:0}.simplebar-track.simplebar-horizontal .simplebar-scrollbar{bottom:0;left:0;min-height:0;min-width:10px;right:auto;top:0;width:auto}[data-simplebar-direction=rtl] .simplebar-track.simplebar-vertical{left:0;right:auto}.simplebar-dummy-scrollbar-size{-ms-overflow-style:scrollbar!important;direction:rtl;height:500px;opacity:0;overflow-x:scroll;overflow-y:hidden;position:fixed;visibility:hidden;width:500px}.simplebar-dummy-scrollbar-size>div{height:200%;margin:10px 0;width:200%}.simplebar-hide-scrollbar{-ms-overflow-style:none;left:0;overflow-y:scroll;position:fixed;scrollbar-width:none;visibility:hidden}.simplebar-scrollbar:before{--tw-bg-opacity:0.2;background:initial;background-color:rgb(21 25 40/var(--tw-bg-opacity))}.simplebar-scrollbar.simplebar-visible:before{opacity:1}.dark .simplebar-scrollbar:before{--tw-bg-opacity:0.2;background-color:rgb(255 255 255/var(--tw-bg-opacity))}pre[class*=language-] .simplebar-content:after,pre[class*=language-] .simplebar-content:before{content:normal;display:initial}pre[class*=language-] .simplebar-scrollbar:before{--tw-bg-opacity:.3;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.dark pre[class*=language-] .simplebar-scrollbar:before{--tw-bg-opacity:0.2;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.hover\:z-5:hover{z-index:5}.hover\:border-blue-300:hover{--tw-border-opacity:1;border-color:rgb(141 187 255/var(--tw-border-opacity))}.hover\:border-gray-300:hover{--tw-border-opacity:1;border-color:rgb(225 229 239/var(--tw-border-opacity))}.hover\:border-gray-400:hover{--tw-border-opacity:1;border-color:rgb(171 182 201/var(--tw-border-opacity))}.hover\:border-green-300:hover{--tw-border-opacity:1;border-color:rgb(132 206 192/var(--tw-border-opacity))}.hover\:border-red-200:hover{--tw-border-opacity:1;border-color:rgb(255 164 164/var(--tw-border-opacity))}.hover\:border-yellow-300:hover{--tw-border-opacity:1;border-color:rgb(244 199 127/var(--tw-border-opacity))}.hover\:border-opacity-10:hover{--tw-border-opacity:0.1}.hover\:bg-blue-100:hover{--tw-bg-opacity:1;background-color:rgb(225 237 255/var(--tw-bg-opacity))}.hover\:bg-blue-200:hover{--tw-bg-opacity:1;background-color:rgb(179 210 255/var(--tw-bg-opacity))}.hover\:bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(0 103 252/var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(237 239 244/var(--tw-bg-opacity))}.hover\:bg-gray-300:hover{--tw-bg-opacity:1;background-color:rgb(225 229 239/var(--tw-bg-opacity))}.hover\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:rgb(68 78 102/var(--tw-bg-opacity))}.hover\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(47 51 72/var(--tw-bg-opacity))}.hover\:bg-green-700:hover{--tw-bg-opacity:1;background-color:rgb(24 137 115/var(--tw-bg-opacity))}.hover\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(196 30 30/var(--tw-bg-opacity))}.hover\:bg-white:hover{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.hover\:bg-yellow-600:hover{--tw-bg-opacity:1;background-color:rgb(224 150 18/var(--tw-bg-opacity))}.hover\:bg-opacity-50:hover{--tw-bg-opacity:0.5}.hover\:text-blue-500:hover{--tw-text-opacity:1;color:rgb(66 132 251/var(--tw-text-opacity))}.hover\:text-blue-700:hover{--tw-text-opacity:1;color:rgb(0 103 252/var(--tw-text-opacity))}.hover\:text-blue-800:hover{--tw-text-opacity:1;color:rgb(0 90 221/var(--tw-text-opacity))}.hover\:text-blue-900:hover{--tw-text-opacity:1;color:rgb(0 75 183/var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(47 51 72/var(--tw-text-opacity))}.hover\:text-gray-800:hover{--tw-text-opacity:1;color:rgb(27 32 48/var(--tw-text-opacity))}.hover\:text-gray-900:hover{--tw-text-opacity:1;color:rgb(21 25 40/var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.focus\:border-gray-500:focus{--tw-border-opacity:1;border-color:rgb(107 121 150/var(--tw-border-opacity))}.focus\:border-gray-600:focus{--tw-border-opacity:1;border-color:rgb(68 78 102/var(--tw-border-opacity))}.focus\:bg-gray-200:focus{--tw-bg-opacity:1;background-color:rgb(237 239 244/var(--tw-bg-opacity))}.focus\:bg-gray-300:focus{--tw-bg-opacity:1;background-color:rgb(225 229 239/var(--tw-bg-opacity))}.focus\:bg-gray-400:focus{--tw-bg-opacity:1;background-color:rgb(171 182 201/var(--tw-bg-opacity))}.focus\:bg-white:focus{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.focus\:text-blue-900:focus{--tw-text-opacity:1;color:rgb(0 75 183/var(--tw-text-opacity))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.group:hover .group-hover\:visible{visibility:visible}.group:hover .group-hover\:inline-flex{display:inline-flex}.group:hover .group-hover\:text-blue-500{--tw-text-opacity:1;color:rgb(66 132 251/var(--tw-text-opacity))}.group:hover .group-hover\:opacity-100{opacity:1}:is(.dark .dark\:inline-block){display:inline-block}:is(.dark .dark\:hidden){display:none}:is(.dark .dark\:border-blue-400){--tw-border-opacity:1;border-color:rgb(95 160 255/var(--tw-border-opacity))}:is(.dark .dark\:border-dark-450){--tw-border-opacity:1;border-color:rgb(66 66 66/var(--tw-border-opacity))}:is(.dark .dark\:border-dark-500){--tw-border-opacity:1;border-color:rgb(53 53 53/var(--tw-border-opacity))}:is(.dark .dark\:border-dark-600){--tw-border-opacity:1;border-color:rgb(45 45 45/var(--tw-border-opacity))}:is(.dark .dark\:border-dark-650){--tw-border-opacity:1;border-color:rgb(44 44 44/var(--tw-border-opacity))}:is(.dark .dark\:border-dark-700){--tw-border-opacity:1;border-color:rgb(39 39 39/var(--tw-border-opacity))}:is(.dark .dark\:border-dark-850){--tw-border-opacity:1;border-color:rgb(30 30 30/var(--tw-border-opacity))}:is(.dark .dark\:border-transparent){border-color:transparent}:is(.dark .dark\:bg-blue-400){--tw-bg-opacity:1;background-color:rgb(95 160 255/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-250){--tw-bg-opacity:1;background-color:rgb(224 224 224/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-400){--tw-bg-opacity:1;background-color:rgb(97 97 97/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-450){--tw-bg-opacity:1;background-color:rgb(66 66 66/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-500){--tw-bg-opacity:1;background-color:rgb(53 53 53/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-550){--tw-bg-opacity:1;background-color:rgb(50 50 50/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-600){--tw-bg-opacity:1;background-color:rgb(45 45 45/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-650){--tw-bg-opacity:1;background-color:rgb(44 44 44/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-700){--tw-bg-opacity:1;background-color:rgb(39 39 39/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-800){--tw-bg-opacity:1;background-color:rgb(34 34 34/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-850){--tw-bg-opacity:1;background-color:rgb(30 30 30/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-900){--tw-bg-opacity:1;background-color:rgb(18 18 18/var(--tw-bg-opacity))}:is(.dark .dark\:bg-green-500){--tw-bg-opacity:1;background-color:rgb(54 173 153/var(--tw-bg-opacity))}:is(.dark .dark\:bg-indigo-500){--tw-bg-opacity:1;background-color:rgb(130 94 235/var(--tw-bg-opacity))}:is(.dark .dark\:bg-orange-500){--tw-bg-opacity:1;background-color:rgb(255 108 16/var(--tw-bg-opacity))}:is(.dark .dark\:bg-red-400){--tw-bg-opacity:1;background-color:rgb(237 95 95/var(--tw-bg-opacity))}:is(.dark .dark\:bg-red-500){--tw-bg-opacity:1;background-color:rgb(229 62 62/var(--tw-bg-opacity))}:is(.dark .dark\:bg-teal-500){--tw-bg-opacity:1;background-color:rgb(56 178 172/var(--tw-bg-opacity))}:is(.dark .dark\:bg-white){--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}:is(.dark .dark\:bg-yellow-500){--tw-bg-opacity:1;background-color:rgb(237 171 38/var(--tw-bg-opacity))}:is(.dark .dark\:bg-opacity-50){--tw-bg-opacity:0.5}:is(.dark .dark\:bg-opacity-70){--tw-bg-opacity:0.7}:is(.dark .dark\:bg-opacity-80){--tw-bg-opacity:0.8}:is(.dark .dark\:px-5){padding-left:1.25rem;padding-right:1.25rem}:is(.dark .dark\:text-black){--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}:is(.dark .dark\:text-blue-300){--tw-text-opacity:1;color:rgb(141 187 255/var(--tw-text-opacity))}:is(.dark .dark\:text-blue-400){--tw-text-opacity:1;color:rgb(95 160 255/var(--tw-text-opacity))}:is(.dark .dark\:text-dark-200){--tw-text-opacity:1;color:rgb(238 238 238/var(--tw-text-opacity))}:is(.dark .dark\:text-dark-250){--tw-text-opacity:1;color:rgb(224 224 224/var(--tw-text-opacity))}:is(.dark .dark\:text-dark-300){--tw-text-opacity:1;color:rgb(189 189 189/var(--tw-text-opacity))}:is(.dark .dark\:text-dark-350){--tw-text-opacity:1;color:rgb(158 158 158/var(--tw-text-opacity))}:is(.dark .dark\:text-dark-400){--tw-text-opacity:1;color:rgb(97 97 97/var(--tw-text-opacity))}:is(.dark .dark\:text-dark-600){--tw-text-opacity:1;color:rgb(45 45 45/var(--tw-text-opacity))}:is(.dark .dark\:text-dark-650){--tw-text-opacity:1;color:rgb(44 44 44/var(--tw-text-opacity))}:is(.dark .dark\:text-dark-700){--tw-text-opacity:1;color:rgb(39 39 39/var(--tw-text-opacity))}:is(.dark .dark\:text-dark-850){--tw-text-opacity:1;color:rgb(30 30 30/var(--tw-text-opacity))}:is(.dark .dark\:text-white){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .dark\:placeholder-dark-400)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(97 97 97/var(--tw-placeholder-opacity))}:is(.dark .dark\:placeholder-dark-400)::placeholder{--tw-placeholder-opacity:1;color:rgb(97 97 97/var(--tw-placeholder-opacity))}:is(.dark .dark\:hover\:border-blue-200:hover){--tw-border-opacity:1;border-color:rgb(179 210 255/var(--tw-border-opacity))}:is(.dark .dark\:hover\:border-dark-450:hover){--tw-border-opacity:1;border-color:rgb(66 66 66/var(--tw-border-opacity))}:is(.dark .dark\:hover\:bg-blue-200:hover){--tw-bg-opacity:1;background-color:rgb(179 210 255/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-dark-300:hover){--tw-bg-opacity:1;background-color:rgb(189 189 189/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-dark-350:hover){--tw-bg-opacity:1;background-color:rgb(158 158 158/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-dark-400:hover){--tw-bg-opacity:1;background-color:rgb(97 97 97/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-dark-450:hover){--tw-bg-opacity:1;background-color:rgb(66 66 66/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-dark-500:hover){--tw-bg-opacity:1;background-color:rgb(53 53 53/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-gray-400:hover){--tw-bg-opacity:1;background-color:rgb(171 182 201/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-green-200:hover){--tw-bg-opacity:1;background-color:rgb(188 232 224/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-red-200:hover){--tw-bg-opacity:1;background-color:rgb(255 164 164/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-transparent:hover){background-color:transparent}:is(.dark .dark\:hover\:bg-yellow-300:hover){--tw-bg-opacity:1;background-color:rgb(244 199 127/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-opacity-50:hover){--tw-bg-opacity:0.5}:is(.dark .dark\:hover\:text-blue-100:hover){--tw-text-opacity:1;color:rgb(225 237 255/var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-blue-200:hover){--tw-text-opacity:1;color:rgb(179 210 255/var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-blue-400:hover){--tw-text-opacity:1;color:rgb(95 160 255/var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-dark-300:hover){--tw-text-opacity:1;color:rgb(189 189 189/var(--tw-text-opacity))}:is(.dark .dark\:focus\:border-dark-450:focus){--tw-border-opacity:1;border-color:rgb(66 66 66/var(--tw-border-opacity))}:is(.dark .dark\:focus\:bg-dark-450:focus){--tw-bg-opacity:1;background-color:rgb(66 66 66/var(--tw-bg-opacity))}:is(.dark .dark\:focus\:bg-dark-750:focus){--tw-bg-opacity:1;background-color:rgb(37 37 37/var(--tw-bg-opacity))}:is(.dark .dark\:focus\:text-blue-100:focus){--tw-text-opacity:1;color:rgb(225 237 255/var(--tw-text-opacity))}:is(.dark .group:hover .dark\:group-hover\:text-blue-400){--tw-text-opacity:1;color:rgb(95 160 255/var(--tw-text-opacity))}@media not all and (min-width:960px){.max-md\:right-10{right:2.5rem}}@media (min-width:640px){.sm\:mr-1{margin-right:.25rem}.sm\:block{display:block}.sm\:inline{display:inline}.sm\:grid{display:grid}.sm\:w-1\/2{width:50%}.sm\:w-auto{width:auto}.sm\:justify-center{justify-content:center}.sm\:px-16{padding-left:4rem;padding-right:4rem}.sm\:px-3{padding-left:.75rem;padding-right:.75rem}.sm\:text-sm{font-size:.875rem}}@media (min-width:960px){.md\:sticky{position:sticky}.md\:top-20{top:5rem}.md\:z-0{z-index:0}.md\:mb-0{margin-bottom:0}.md\:mt-16{margin-top:4rem}.md\:line-clamp-2{-webkit-box-orient:vertical;-webkit-line-clamp:2;display:-webkit-box;overflow:hidden}.md\:block{display:block}.md\:inline-block{display:inline-block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-20{height:5rem}.md\:h-screen{height:100vh}.md\:w-104{width:26rem}.md\:w-5\/12{width:41.666667%}.md\:w-75{width:18.75rem}.md\:grow{flex-grow:1}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:justify-start{justify-content:flex-start}.md\:border-r{border-right-width:1px}.md\:border-none{border-style:none}.md\:bg-transparent{background-color:transparent}.md\:p-0{padding:0}.md\:px-16{padding-left:4rem;padding-right:4rem}.md\:px-4{padding-left:1rem;padding-right:1rem}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}.md\:px-8{padding-left:2rem;padding-right:2rem}.md\:pb-0{padding-bottom:0}.md\:pl-16{padding-left:4rem}.md\:text-2xs{font-size:.75rem}.md\:text-4xl{font-size:2.5rem}.md\:text-lg{font-size:1.125rem}.md\:text-sm{font-size:.875rem}.md\:text-xl{font-size:1.25rem}.md\:text-blue-500{--tw-text-opacity:1;color:rgb(66 132 251/var(--tw-text-opacity))}.md\:shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.md\:transition-transform{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}}@media (min-width:1200px){.lg\:sticky{position:sticky}.lg\:top-20{top:5rem}.lg\:top-40{top:10rem}.lg\:z-0{z-index:0}.lg\:ml-2{margin-left:.5rem}.lg\:ml-auto{margin-left:auto}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:h-auto{height:auto}.lg\:w-64{width:16rem}.lg\:max-w-sm{max-width:24rem}.lg\:shrink-0{flex-shrink:0}.lg\:transform-none{transform:none}.lg\:flex-col{flex-direction:column}.lg\:border-l{border-left-width:1px}.lg\:border-none{border-style:none}.lg\:pt-2{padding-top:.5rem}.lg\:pt-6{padding-top:1.5rem}.lg\:shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:is(.dark .lg\:dark\:bg-dark-850){--tw-bg-opacity:1;background-color:rgb(30 30 30/var(--tw-bg-opacity))}}@media (min-width:1440px){.xl\:block{display:block}}.arrow[data-v-325bee49],.arrow[data-v-325bee49]:before{height:.5rem;position:absolute;width:.5rem;z-index:-1}.arrow[data-v-325bee49]:before{--tw-rotate:45deg;--tw-bg-opacity:1;background-color:rgb(21 25 40/var(--tw-bg-opacity));content:"";transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.tooltip[data-popper-placement^=top]>.arrow[data-v-325bee49]{bottom:-4px}.tooltip[data-popper-placement^=bottom]>.arrow[data-v-325bee49]{top:-4px}.tooltip[data-popper-placement^=left]>.arrow[data-v-325bee49]{right:-4px}.tooltip[data-popper-placement^=right]>.arrow[data-v-325bee49]{left:-4px}.dark .arrow[data-v-325bee49]:before{--tw-bg-opacity:1;background-color:rgb(53 53 53/var(--tw-bg-opacity))}.collapse-content :last-child{margin-bottom:0}@media (-webkit-min-device-pixel-ratio:2) and (-webkit-min-device-pixel-ratio:0),(-webkit-min-device-pixel-ratio:2) and (min-resolution:0.001dpcm){.docs-emoji{font-size:1.25em;line-height:1;vertical-align:-.075em}}.spinner[data-v-79806448]{border-top-color:#444e66}.dark .spinner[data-v-79806448]{border-top-color:hsla(0,0%,100%,.6)}.docs-panel-content :last-child{margin-bottom:0!important}.docs-panels>*{border-radius:0;border-width:0 0 1px;margin-bottom:-1px}.sidebar{height:calc(100vh - 5rem)}@media (max-width:959px){.sidebar{height:100vh!important;transform:translateX(-100%)}}@media (max-width:1199px){.sidebar-right[data-v-b3211732]{height:100vh!important}}.tab-content>:last-child{margin-bottom:0}.member-links-dropdown a[data-v-13960e2c]{--tw-text-opacity:1;border-radius:.25rem;color:rgb(66 132 251/var(--tw-text-opacity));display:block;font-size:.875rem;height:2rem;line-height:1;overflow:hidden;padding:.5625rem .75rem;text-overflow:ellipsis;white-space:nowrap}.member-links-dropdown a[data-v-13960e2c]:hover{--tw-bg-opacity:1;background-color:rgb(237 239 244/var(--tw-bg-opacity))}.dark .member-links-dropdown a[data-v-13960e2c]{--tw-text-opacity:1;color:rgb(95 160 255/var(--tw-text-opacity))}.dark .member-links-dropdown a[data-v-13960e2c]:hover{--tw-bg-opacity:1;background-color:rgb(53 53 53/var(--tw-bg-opacity))} diff --git a/resources/fonts/Inter-italic-latin-var.woff2 b/resources/fonts/Inter-italic-latin-var.woff2 new file mode 100644 index 0000000..e09a201 Binary files /dev/null and b/resources/fonts/Inter-italic-latin-var.woff2 differ diff --git a/resources/fonts/Inter-roman-latin-var.woff2 b/resources/fonts/Inter-roman-latin-var.woff2 new file mode 100644 index 0000000..44fabcb Binary files /dev/null and b/resources/fonts/Inter-roman-latin-var.woff2 differ diff --git a/resources/js/config.js b/resources/js/config.js new file mode 100644 index 0000000..8e62894 --- /dev/null +++ b/resources/js/config.js @@ -0,0 +1 @@ +var __DOCS_CONFIG__ = {"id":"wQ3169mk/9JiwdivkpkApWFri0hxtSoQrYL","key":"wIu1LtmiXMZjmcMqdVnZz/0TeF4X20VB+Kjb4PPfFjA.bxcgEp63uISXVddgEURovn7NrvZ9B2e7YQ2ia9XNhkab+IugZ9l46AcN04bjal3LQxNBmLOGHPKsOOVA5AxByw.87","base":"/","host":"","version":"1.0.0","useRelativePaths":true,"documentName":"index.html","appendDocumentName":false,"trailingSlash":true,"preloadSearch":false,"cacheBustingToken":"3.5.0.756413426199","cacheBustingStrategy":"query","sidebarFilterPlaceholder":"Filter","toolbarFilterPlaceholder":"Filter","showSidebarFilter":true,"filterNotFoundMsg":"No member names found containing the query \"{query}\"","maxHistoryItems":15,"homeIcon":"","access":[{"value":"public","label":"Public"},{"value":"protected","label":"Protected"}],"toolbarLinks":[{"id":"fields","label":"Fields"},{"id":"properties","label":"Properties"},{"id":"methods","label":"Methods"},{"id":"events","label":"Events"}],"sidebar":[{"n":"/","l":"Q​Bittorrent​Bot"},{"n":"getting_started","l":"Getting Started","i":[{"n":"configuration_file","l":"Configuration File"},{"n":"migrating_to_v2","l":"Migrating to V​2"}]},{"n":"advanced","l":"Advanced","i":[{"n":"add_new_client_manager","l":"Add new client manager"},{"n":"add_entries_configuration","l":"Add new entries in configuration file"},{"n":"manager_user_roles","l":"Managing users roles"}]},{"n":"faq","l":"FAQ"},{"n":"screenshots","l":"Screenshots"}],"search":{"mode":0,"minChars":2,"maxResults":20,"placeholder":"Search","hotkeys":["k"],"noResultsFoundMsg":"Sorry, no results found.","recognizeLanguages":true,"languages":[0],"preload":false},"resources":{"History_Title_Label":"History","History_ClearLink_Label":"Clear","History_NoHistory_Label":"No history items","API_AccessFilter_Label":"Access","API_ParameterSection_Label":"PARAMETERS","API_SignatureSection_Label":"SIGNATURE","API_CopyHint_Label":"Copy","API_CopyNameHint_Label":"Copy name","API_CopyLinkHint_Label":"Copy link","API_CopiedAckHint_Label":"Copied!","API_MoreOverloads_Label":"more","API_MoreDropdownItems_Label":"More","API_OptionalParameter_Label":"optional","API_DefaultParameterValue_Label":"Default value","API_InheritedFilter_Label":"Inherited","Search_Input_Placeholder":"Search","Toc_Contents_Label":"Contents","Toc_RelatedClasses_Label":"Related Classes","History_JustNowTime_Label":"just now","History_AgoTime_Label":"ago","History_YearTime_Label":"y","History_MonthTime_Label":"mo","History_DayTime_Label":"d","History_HourTime_Label":"h","History_MinuteTime_Label":"m","History_SecondTime_Label":"s"}}; diff --git a/resources/js/lunr.js b/resources/js/lunr.js new file mode 100644 index 0000000..777cd42 --- /dev/null +++ b/resources/js/lunr.js @@ -0,0 +1,4 @@ +/*! Retype v3.5.0 | retype.com | Copyright 2023. Object.NET, Inc. All rights reserved. */ + +/*! For license information please see lunr.js.LICENSE.txt */ +(()=>{var e={1336:(e,t,r)=>{var i,n;!function(){var s,o,a,u,l,c,h,d,f,p,y,m,g,x,v,w,Q,k,S,b,E,L,P,T,O,I,R,F,_,N,j=function(e){var t=new j.Builder;return t.pipeline.add(j.trimmer,j.stopWordFilter,j.stemmer),t.searchPipeline.add(j.stemmer),e.call(t,t),t.build()};j.version="2.3.9",j.utils={},j.utils.warn=(s=this,function(e){s.console&&console.warn&&console.warn(e)}),j.utils.asString=function(e){return null==e?"":e.toString()},j.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),r=Object.keys(e),i=0;i0){var u=j.utils.clone(t)||{};u.position=[o,a],u.index=n.length,n.push(new j.Token(r.slice(o,s),u))}o=s+1}}return n},j.tokenizer.separator=/[\s\-]+/,j.Pipeline=function(){this._stack=[]},j.Pipeline.registeredFunctions=Object.create(null),j.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&j.utils.warn("Overwriting existing registered function: "+t),e.label=t,j.Pipeline.registeredFunctions[e.label]=e},j.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||j.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},j.Pipeline.load=function(e){var t=new j.Pipeline;return e.forEach((function(e){var r=j.Pipeline.registeredFunctions[e];if(!r)throw new Error("Cannot load unregistered function: "+e);t.add(r)})),t},j.Pipeline.prototype.add=function(){Array.prototype.slice.call(arguments).forEach((function(e){j.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)}),this)},j.Pipeline.prototype.after=function(e,t){j.Pipeline.warnIfFunctionNotRegistered(t);var r=this._stack.indexOf(e);if(-1==r)throw new Error("Cannot find existingFn");r+=1,this._stack.splice(r,0,t)},j.Pipeline.prototype.before=function(e,t){j.Pipeline.warnIfFunctionNotRegistered(t);var r=this._stack.indexOf(e);if(-1==r)throw new Error("Cannot find existingFn");this._stack.splice(r,0,t)},j.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},j.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e||s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},j.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},j.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var s,o=n.str.charAt(0);o in n.node.edges?s=n.node.edges[o]:(s=new j.TokenSet,n.node.edges[o]=s),1==n.str.length&&(s.final=!0),i.push({node:s,editsRemaining:n.editsRemaining,str:n.str.slice(1)})}if(0!=n.editsRemaining){if("*"in n.node.edges)var a=n.node.edges["*"];else a=new j.TokenSet,n.node.edges["*"]=a;if(0==n.str.length&&(a.final=!0),i.push({node:a,editsRemaining:n.editsRemaining-1,str:n.str}),n.str.length>1&&i.push({node:n.node,editsRemaining:n.editsRemaining-1,str:n.str.slice(1)}),1==n.str.length&&(n.node.final=!0),n.str.length>=1){if("*"in n.node.edges)var u=n.node.edges["*"];else u=new j.TokenSet,n.node.edges["*"]=u;1==n.str.length&&(u.final=!0),i.push({node:u,editsRemaining:n.editsRemaining-1,str:n.str.slice(1)})}if(n.str.length>1){var l,c=n.str.charAt(0),h=n.str.charAt(1);h in n.node.edges?l=n.node.edges[h]:(l=new j.TokenSet,n.node.edges[h]=l),1==n.str.length&&(l.final=!0),i.push({node:l,editsRemaining:n.editsRemaining-1,str:c+n.str.slice(2)})}}}return r},j.TokenSet.fromString=function(e){for(var t=new j.TokenSet,r=t,i=0,n=e.length;i=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},j.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},j.Index.prototype.search=function(e){return this.query((function(t){new j.QueryParser(e,t).parse()}))},j.Index.prototype.query=function(e){for(var t=new j.Query(this.fields),r=Object.create(null),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=0;a1?1:e},j.Builder.prototype.k1=function(e){this._k1=e},j.Builder.prototype.add=function(e,t){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=t||{},this.documentCount+=1;for(var n=0;n=this.length)return j.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},j.QueryLexer.prototype.width=function(){return this.pos-this.start},j.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},j.QueryLexer.prototype.backup=function(){this.pos-=1},j.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=j.QueryLexer.EOS&&this.backup()},j.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(j.QueryLexer.TERM)),e.ignore(),e.more())return j.QueryLexer.lexText},j.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(j.QueryLexer.EDIT_DISTANCE),j.QueryLexer.lexText},j.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(j.QueryLexer.BOOST),j.QueryLexer.lexText},j.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(j.QueryLexer.TERM)},j.QueryLexer.termSeparator=j.tokenizer.separator,j.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==j.QueryLexer.EOS)return j.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return j.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit(j.QueryLexer.TERM),j.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit(j.QueryLexer.TERM),j.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(j.QueryLexer.PRESENCE),j.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(j.QueryLexer.PRESENCE),j.QueryLexer.lexText;if(t.match(j.QueryLexer.termSeparator))return j.QueryLexer.lexTerm}else e.escapeCharacter()}},j.QueryParser=function(e,t){this.lexer=new j.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},j.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=j.QueryParser.parseClause;e;)e=e(this);return this.query},j.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},j.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},j.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},j.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case j.QueryLexer.PRESENCE:return j.QueryParser.parsePresence;case j.QueryLexer.FIELD:return j.QueryParser.parseField;case j.QueryLexer.TERM:return j.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+t.type;throw t.str.length>=1&&(r+=" with value '"+t.str+"'"),new j.QueryParseError(r,t.start,t.end)}},j.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case"-":e.currentClause.presence=j.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=j.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+t.str+"'";throw new j.QueryParseError(r,t.start,t.end)}var i=e.peekLexeme();if(null==i)throw r="expecting term or field, found nothing",new j.QueryParseError(r,t.start,t.end);switch(i.type){case j.QueryLexer.FIELD:return j.QueryParser.parseField;case j.QueryLexer.TERM:return j.QueryParser.parseTerm;default:throw r="expecting term or field, found '"+i.type+"'",new j.QueryParseError(r,i.start,i.end)}}},j.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(null!=t){if(-1==e.query.allFields.indexOf(t.str)){var r=e.query.allFields.map((function(e){return"'"+e+"'"})).join(", "),i="unrecognised field '"+t.str+"', possible fields: "+r;throw new j.QueryParseError(i,t.start,t.end)}e.currentClause.fields=[t.str];var n=e.peekLexeme();if(null==n)throw i="expecting term, found nothing",new j.QueryParseError(i,t.start,t.end);if(n.type===j.QueryLexer.TERM)return j.QueryParser.parseTerm;throw i="expecting term, found '"+n.type+"'",new j.QueryParseError(i,n.start,n.end)}},j.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(null!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf("*")&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(null!=r)switch(r.type){case j.QueryLexer.TERM:return e.nextClause(),j.QueryParser.parseTerm;case j.QueryLexer.FIELD:return e.nextClause(),j.QueryParser.parseField;case j.QueryLexer.EDIT_DISTANCE:return j.QueryParser.parseEditDistance;case j.QueryLexer.BOOST:return j.QueryParser.parseBoost;case j.QueryLexer.PRESENCE:return e.nextClause(),j.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new j.QueryParseError(i,r.start,r.end)}else e.nextClause()}},j.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(null!=t){var r=parseInt(t.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new j.QueryParseError(i,t.start,t.end)}e.currentClause.editDistance=r;var n=e.peekLexeme();if(null!=n)switch(n.type){case j.QueryLexer.TERM:return e.nextClause(),j.QueryParser.parseTerm;case j.QueryLexer.FIELD:return e.nextClause(),j.QueryParser.parseField;case j.QueryLexer.EDIT_DISTANCE:return j.QueryParser.parseEditDistance;case j.QueryLexer.BOOST:return j.QueryParser.parseBoost;case j.QueryLexer.PRESENCE:return e.nextClause(),j.QueryParser.parsePresence;default:throw i="Unexpected lexeme type '"+n.type+"'",new j.QueryParseError(i,n.start,n.end)}else e.nextClause()}},j.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(null!=t){var r=parseInt(t.str,10);if(isNaN(r)){var i="boost must be numeric";throw new j.QueryParseError(i,t.start,t.end)}e.currentClause.boost=r;var n=e.peekLexeme();if(null!=n)switch(n.type){case j.QueryLexer.TERM:return e.nextClause(),j.QueryParser.parseTerm;case j.QueryLexer.FIELD:return e.nextClause(),j.QueryParser.parseField;case j.QueryLexer.EDIT_DISTANCE:return j.QueryParser.parseEditDistance;case j.QueryLexer.BOOST:return j.QueryParser.parseBoost;case j.QueryLexer.PRESENCE:return e.nextClause(),j.QueryParser.parsePresence;default:throw i="Unexpected lexeme type '"+n.type+"'",new j.QueryParseError(i,n.start,n.end)}else e.nextClause()}},void 0===(n="function"==typeof(i=function(){return j})?i.call(t,r,t,e):i)||(e.exports=n)}()}},t={};function r(i){var n=t[i];if(void 0!==n)return n.exports;var s=t[i]={exports:{}};return e[i](s,s.exports,r),s.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};(()=>{"use strict";r.r(i),r.d(i,{default:()=>s});var e=r(1336),t=r.n(e),n=function(){return n=Object.assign||function(e){for(var t,r=1,i=arguments.length;r{var e={7193:()=>{"undefined"!=typeof Prism&&Prism.hooks.add("wrap",(function(e){"keyword"===e.type&&e.classes.push("keyword-"+e.content)}))},5660:(e,t,n)=>{var a=function(e){var t=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,n=0,a={},r={manual:e.Prism&&e.Prism.manual,disableWorkerMessageHandler:e.Prism&&e.Prism.disableWorkerMessageHandler,util:{encode:function e(t){return t instanceof i?new i(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/=g.reach);w+=k.value.length,k=k.next){var A=k.value;if(t.length>e.length)return;if(!(A instanceof i)){var S,$=1;if(y){if(!(S=s(F,w,e,v))||S.index>=e.length)break;var E=S.index,_=S.index+S[0].length,j=w;for(j+=k.value.length;E>=j;)j+=(k=k.next).value.length;if(w=j-=k.value.length,k.value instanceof i)continue;for(var P=k;P!==t.tail&&(j<_||"string"==typeof P.value);P=P.next)$++,j+=P.value.length;$--,A=e.slice(w,j),S.index-=w}else if(!(S=s(F,0,A,v)))continue;E=S.index;var C=S[0],T=A.slice(0,E),O=A.slice(E+C.length),L=w+A.length;g&&L>g.reach&&(g.reach=L);var z=k.prev;if(T&&(z=u(t,z,T),w+=T.length),c(t,z,$),k=u(t,z,new i(d,m?r.tokenize(C,m):C,b,C)),O&&u(t,k,O),$>1){var M={cause:d+","+h,reach:L};o(e,t,n,k.prev,w,M),g&&M.reach>g.reach&&(g.reach=M.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function u(e,t,n){var a=t.next,r={value:n,prev:t,next:a};return t.next=r,a.prev=r,e.length++,r}function c(e,t,n){for(var a=t.next,r=0;r"+i.content+""},!e.document)return e.addEventListener?(r.disableWorkerMessageHandler||e.addEventListener("message",(function(t){var n=JSON.parse(t.data),a=n.language,i=n.code,s=n.immediateClose;e.postMessage(r.highlight(i,r.languages[a],a)),s&&e.close()}),!1),r):r;var g=r.util.currentScript();function d(){r.manual||r.highlightAll()}if(g&&(r.filename=g.src,g.hasAttribute("data-manual")&&(r.manual=!0)),!r.manual){var p=document.readyState;"loading"===p||"interactive"===p&&g&&g.defer?document.addEventListener("DOMContentLoaded",d):window.requestAnimationFrame?window.requestAnimationFrame(d):window.setTimeout(d,16)}return r}("undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{});e.exports&&(e.exports=a),void 0!==n.g&&(n.g.Prism=a),a.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.languages.markup.doctype.inside["internal-subset"].inside=a.languages.markup,a.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(a.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:a.languages[t]},n.cdata=/^$/i;var r={"included-cdata":{pattern://i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:a.languages[t]};var i={};i[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},a.languages.insertBefore("markup","cdata",i)}}),Object.defineProperty(a.languages.markup.tag,"addAttribute",{value:function(e,t){a.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:a.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.xml=a.languages.extend("markup",{}),a.languages.ssml=a.languages.xml,a.languages.atom=a.languages.xml,a.languages.rss=a.languages.xml,function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+t.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(a),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},a.languages.javascript=a.languages.extend("clike",{"class-name":[a.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),a.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,a.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:a.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:a.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:a.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:a.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:a.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),a.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),a.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),a.languages.markup&&(a.languages.markup.tag.addInlined("script","javascript"),a.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),a.languages.js=a.languages.javascript,function(){if(void 0!==a&&"undefined"!=typeof document){Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector);var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"},t="data-src-status",n="loading",r="loaded",i="pre[data-src]:not(["+t+'="'+r+'"]):not(['+t+'="'+n+'"])';a.hooks.add("before-highlightall",(function(e){e.selector+=", "+i})),a.hooks.add("before-sanity-check",(function(s){var o=s.element;if(o.matches(i)){s.code="",o.setAttribute(t,n);var l=o.appendChild(document.createElement("CODE"));l.textContent="Loading…";var u=o.getAttribute("data-src"),c=s.language;if("none"===c){var g=(/\.(\w+)$/.exec(u)||[,"none"])[1];c=e[g]||g}a.util.setLanguage(l,c),a.util.setLanguage(o,c);var d=a.plugins.autoloader;d&&d.loadLanguages(c),function(e,n,i){var s=new XMLHttpRequest;s.open("GET",e,!0),s.onreadystatechange=function(){4==s.readyState&&(s.status<400&&s.responseText?function(e){o.setAttribute(t,r);var n=function(e){var t=/^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(e||"");if(t){var n=Number(t[1]),a=t[2],r=t[3];return a?r?[n,Number(r)]:[n,void 0]:[n,n]}}(o.getAttribute("data-range"));if(n){var i=e.split(/\r\n?|\n/g),s=n[0],u=null==n[1]?i.length:n[1];s<0&&(s+=i.length),s=Math.max(0,Math.min(s-1,i.length)),u<0&&(u+=i.length),u=Math.max(0,Math.min(u,i.length)),e=i.slice(s,u).join("\n"),o.hasAttribute("data-start")||o.setAttribute("data-start",String(s+1))}l.textContent=e,a.highlightElement(l)}(s.responseText):s.status>=400?i("✖ Error "+s.status+" while fetching file: "+s.statusText):i("✖ Error: File does not exist or is empty"))},s.send(null)}(u,0,(function(e){o.setAttribute(t,"failed"),l.textContent=e}))}})),a.plugins.fileHighlight={highlight:function(e){for(var t,n=(e||document).querySelectorAll(i),r=0;t=n[r++];)a.highlightElement(t)}};var s=!1;a.fileHighlight=function(){s||(console.warn("Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead."),s=!0),a.plugins.fileHighlight.highlight.apply(this,arguments)}}}()},2400:()=>{!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document&&document.querySelector){var e,t=function(){if(void 0===e){var t=document.createElement("div");t.style.fontSize="13px",t.style.lineHeight="1.5",t.style.padding="0",t.style.border="0",t.innerHTML=" 
 ",document.body.appendChild(t),e=38===t.offsetHeight,document.body.removeChild(t)}return e};Prism.hooks.add("before-sanity-check",(function(e){var t=e.element.parentElement;if(r(t)){var a=0;n(".line-highlight",t).forEach((function(e){a+=e.textContent.length,e.parentNode.removeChild(e)})),a&&/^(?: \n)+$/.test(e.code.slice(-a))&&(e.code=e.code.slice(0,-a))}})),Prism.hooks.add("complete",(function e(t){for(var n=t.element.parentElement;n&&/div/i.test(n.nodeName)&&n.className.indexOf("simplebar-")>=0;)n=n.parentElement;if(r(n)){var a=Prism.plugins.lineNumbers,s=t.plugins&&t.plugins.lineNumbers;"line-numbers",n.classList.contains("line-numbers")&&a&&!s?Prism.hooks.add("line-numbers",e):i(n)()}})),window.addEventListener("resize",(function(){n("pre").filter(r).map((function(e){return i(e)})).forEach(a)}))}function n(e,t){return Array.prototype.slice.call((t||document).querySelectorAll(e))}function a(e){e()}function r(e){return!(!e||!/pre/i.test(e.nodeName)||!e.hasAttribute("data-line"))}function i(e,n,r){var i=(n="string"==typeof n?n:e.getAttribute("data-line")||"").replace(/\s+/g,"").split(",").filter(Boolean),s=+e.getAttribute("data-line-offset")||0,o=(t()?parseInt:parseFloat)(getComputedStyle(e).lineHeight),l=e.querySelector("code"),u=e,c=[],g=l&&u!=l?function(e,t){var n=getComputedStyle(e),a=getComputedStyle(t);function r(e){return+e.substr(0,e.length-2)}return t.offsetTop+r(a.borderTopWidth)+r(a.paddingTop)-r(n.paddingTop)}(e,l):0;return i.forEach((function(t){var n=t.split("-"),a=+n[0],i=+n[1]||a,l=e.querySelector('.line-highlight[data-range="'+t+'"]')||document.createElement("div");c.push((function(){l.setAttribute("aria-hidden","true"),l.setAttribute("data-range",t),l.className=(r||"")+" line-highlight"})),c.push((function(){l.style.top=(a-s-1)*o+g+"px",l.textContent=new Array(i-a+2).join(" \n")})),c.push((function(){l.style.width=e.scrollWidth+"px"})),c.push((function(){u.appendChild(l)}))})),function(){c.forEach(a)}}}()}},t={};function n(a){var r=t[a];if(void 0!==r)return r.exports;var i=t[a]={exports:{}};return e[a](i,i.exports,n),i.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var a in t)n.o(t,a)&&!n.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};(()=>{"use strict";n.r(a),n.d(a,{default:()=>r});var e=n(5660),t=n.n(e);n(7193),n(2400);const r={initPrism:function(){t().highlightAllUnder(document),document.querySelectorAll(".pluggable").forEach((function(e){return e.addEventListener("onPluginReady",(function(){setTimeout((function(){t().highlightAllUnder(e)}),10)}))}))}}})(),window.__DOCS_PRISM__=a})();Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},Prism.languages.webmanifest=Prism.languages.json;!function(n){var e=/("|')(?:\\(?:\r\n?|\n|.)|(?!\1)[^\\\r\n])*\1/;n.languages.json5=n.languages.extend("json",{property:[{pattern:RegExp(e.source+"(?=\\s*:)"),greedy:!0},{pattern:/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/,alias:"unquoted"}],string:{pattern:e,greedy:!0},number:/[+-]?\b(?:NaN|Infinity|0x[a-fA-F\d]+)\b|[+-]?(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[eE][+-]?\d+\b)?/})}(Prism);Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python; \ No newline at end of file diff --git a/resources/js/retype.js b/resources/js/retype.js new file mode 100644 index 0000000..7bac854 --- /dev/null +++ b/resources/js/retype.js @@ -0,0 +1,27 @@ +/*! Retype v3.5.0 | retype.com | Copyright 2023. Object.NET, Inc. All rights reserved. */ + +/*! For license information please see retype.js.LICENSE.txt */ +(()=>{var e={6184:(e,t,n)=>{"use strict";n.d(t,{BL:()=>Ce,Vn:()=>Te,nP:()=>xe,ry:()=>_e}),function(){if(void 0===window.Reflect||void 0===window.customElements||window.customElements.polyfillWrapFlushCallback)return;const e=HTMLElement;window.HTMLElement=function(){return Reflect.construct(e,[],this.constructor)},HTMLElement.prototype=e.prototype,HTMLElement.prototype.constructor=HTMLElement,Object.setPrototypeOf(HTMLElement,e)}(),function(e){function t(e,t,n){throw new e("Failed to execute 'requestSubmit' on 'HTMLFormElement': "+t+".",n)}"function"!=typeof e.requestSubmit&&(e.requestSubmit=function(e){e?(function(e,n){e instanceof HTMLElement||t(TypeError,"parameter 1 is not of type 'HTMLElement'"),"submit"==e.type||t(TypeError,"The specified element is not a submit button"),e.form==n||t(DOMException,"The specified element is not owned by this form element","NotFoundError")}(e,this),e.click()):((e=document.createElement("input")).type="submit",e.hidden=!0,this.appendChild(e),e.click(),this.removeChild(e))})}(HTMLFormElement.prototype);const r=new WeakMap;function o(e){const t=function(e){const t=e instanceof Element?e:e instanceof Node?e.parentElement:null,n=t?t.closest("input, button"):null;return"submit"==(null==n?void 0:n.type)?n:null}(e.target);t&&t.form&&r.set(t.form,t)}var i,s,a,l,c,u;!function(){if("submitter"in Event.prototype)return;let e=window.Event.prototype;if("SubmitEvent"in window&&/Apple Computer/.test(navigator.vendor))e=window.SubmitEvent.prototype;else if("SubmitEvent"in window)return;addEventListener("click",o,!0),Object.defineProperty(e,"submitter",{get(){if("submit"==this.type&&this.target instanceof HTMLFormElement)return r.get(this.target)}})}(),function(e){e.eager="eager",e.lazy="lazy"}(i||(i={}));class d extends HTMLElement{static get observedAttributes(){return["disabled","complete","loading","src"]}constructor(){super(),this.loaded=Promise.resolve(),this.delegate=new d.delegateConstructor(this)}connectedCallback(){this.delegate.connect()}disconnectedCallback(){this.delegate.disconnect()}reload(){return this.delegate.sourceURLReloaded()}attributeChangedCallback(e){"loading"==e?this.delegate.loadingStyleChanged():"complete"==e?this.delegate.completeChanged():"src"==e?this.delegate.sourceURLChanged():this.delegate.disabledChanged()}get src(){return this.getAttribute("src")}set src(e){e?this.setAttribute("src",e):this.removeAttribute("src")}get loading(){return"lazy"===(this.getAttribute("loading")||"").toLowerCase()?i.lazy:i.eager}set loading(e){e?this.setAttribute("loading",e):this.removeAttribute("loading")}get disabled(){return this.hasAttribute("disabled")}set disabled(e){e?this.setAttribute("disabled",""):this.removeAttribute("disabled")}get autoscroll(){return this.hasAttribute("autoscroll")}set autoscroll(e){e?this.setAttribute("autoscroll",""):this.removeAttribute("autoscroll")}get complete(){return!this.delegate.isLoading}get isActive(){return this.ownerDocument===document&&!this.isPreview}get isPreview(){var e,t;return null===(t=null===(e=this.ownerDocument)||void 0===e?void 0:e.documentElement)||void 0===t?void 0:t.hasAttribute("data-turbo-preview")}}function h(e){return new URL(e.toString(),document.baseURI)}function p(e){let t;return e.hash?e.hash.slice(1):(t=e.href.match(/#(.*)$/))?t[1]:void 0}function f(e,t){return h((null==t?void 0:t.getAttribute("formaction"))||e.getAttribute("action")||e.action)}function m(e,t){return function(e,t){const n=function(e){return(t=e.origin+e.pathname).endsWith("/")?t:t+"/";var t}(t);return e.href===h(n).href||e.href.startsWith(n)}(e,t)&&!!(n=e,(function(e){return function(e){return e.pathname.split("/").slice(1)}(e).slice(-1)[0]}(n).match(/\.[^.]*$/)||[])[0]||"").match(/^(?:|\.(?:htm|html|xhtml|php))$/);var n}function v(e){const t=p(e);return null!=t?e.href.slice(0,-(t.length+1)):e.href}function g(e){return v(e)}class b{constructor(e){this.response=e}get succeeded(){return this.response.ok}get failed(){return!this.succeeded}get clientError(){return this.statusCode>=400&&this.statusCode<=499}get serverError(){return this.statusCode>=500&&this.statusCode<=599}get redirected(){return this.response.redirected}get location(){return h(this.response.url)}get isHTML(){return this.contentType&&this.contentType.match(/^(?:text\/([^\s;,]+\b)?html|application\/xhtml\+xml)\b/)}get statusCode(){return this.response.status}get contentType(){return this.header("Content-Type")}get responseText(){return this.response.clone().text()}get responseHTML(){return this.isHTML?this.response.clone().text():Promise.resolve(void 0)}header(e){return this.response.headers.get(e)}}function y(e){if("false"==e.getAttribute("data-turbo-eval"))return e;{const t=document.createElement("script"),n=O("csp-nonce");return n&&(t.nonce=n),t.textContent=e.textContent,t.async=!1,function(e,t){for(const{name:n,value:r}of t.attributes)e.setAttribute(n,r)}(t,e),t}}function w(e,{target:t,cancelable:n,detail:r}={}){const o=new CustomEvent(e,{cancelable:n,bubbles:!0,composed:!0,detail:r});return t&&t.isConnected?t.dispatchEvent(o):document.documentElement.dispatchEvent(o),o}function S(){return new Promise((e=>requestAnimationFrame((()=>e()))))}function k(e=""){return(new DOMParser).parseFromString(e,"text/html")}function x(e,...t){const n=function(e,t){return e.reduce(((e,n,r)=>e+n+(null==t[r]?"":t[r])),"")}(e,t).replace(/^\n/,"").split("\n"),r=n[0].match(/^\s+/),o=r?r[0].length:0;return n.map((e=>e.slice(o))).join("\n")}function E(){return Array.from({length:36}).map(((e,t)=>8==t||13==t||18==t||23==t?"-":14==t?"4":19==t?(Math.floor(4*Math.random())+8).toString(16):Math.floor(15*Math.random()).toString(16))).join("")}function _(e,...t){for(const n of t.map((t=>null==t?void 0:t.getAttribute(e))))if("string"==typeof n)return n;return null}function C(...e){for(const t of e)"turbo-frame"==t.localName&&t.setAttribute("busy",""),t.setAttribute("aria-busy","true")}function T(...e){for(const t of e)"turbo-frame"==t.localName&&t.removeAttribute("busy"),t.removeAttribute("aria-busy")}function L(e,t=2e3){return new Promise((n=>{const r=()=>{e.removeEventListener("error",r),e.removeEventListener("load",r),n()};e.addEventListener("load",r,{once:!0}),e.addEventListener("error",r,{once:!0}),setTimeout(n,t)}))}function A(e){switch(e){case"replace":return history.replaceState;case"advance":case"restore":return history.pushState}}function R(...e){const t=_("data-turbo-action",...e);return function(e){return"advance"==e||"replace"==e||"restore"==e}(t)?t:null}function D(e){return document.querySelector(`meta[name="${e}"]`)}function O(e){const t=D(e);return t&&t.content}function M(e,t){var n;if(e instanceof Element)return e.closest(t)||M(e.assignedSlot||(null===(n=e.getRootNode())||void 0===n?void 0:n.host),t)}!function(e){e[e.get=0]="get",e[e.post=1]="post",e[e.put=2]="put",e[e.patch=3]="patch",e[e.delete=4]="delete"}(s||(s={}));class I{constructor(e,t,n,r=new URLSearchParams,o=null){this.abortController=new AbortController,this.resolveRequestPromise=e=>{},this.delegate=e,this.method=t,this.headers=this.defaultHeaders,this.body=r,this.url=n,this.target=o}get location(){return this.url}get params(){return this.url.searchParams}get entries(){return this.body?Array.from(this.body.entries()):[]}cancel(){this.abortController.abort()}async perform(){const{fetchOptions:e}=this;this.delegate.prepareRequest(this),await this.allowRequestToBeIntercepted(e);try{this.delegate.requestStarted(this);const t=await fetch(this.url.href,e);return await this.receive(t)}catch(e){if("AbortError"!==e.name)throw this.willDelegateErrorHandling(e)&&this.delegate.requestErrored(this,e),e}finally{this.delegate.requestFinished(this)}}async receive(e){const t=new b(e);return w("turbo:before-fetch-response",{cancelable:!0,detail:{fetchResponse:t},target:this.target}).defaultPrevented?this.delegate.requestPreventedHandlingResponse(this,t):t.succeeded?this.delegate.requestSucceededWithResponse(this,t):this.delegate.requestFailedWithResponse(this,t),t}get fetchOptions(){var e;return{method:s[this.method].toUpperCase(),credentials:"same-origin",headers:this.headers,redirect:"follow",body:this.isSafe?null:this.body,signal:this.abortSignal,referrer:null===(e=this.delegate.referrer)||void 0===e?void 0:e.href}}get defaultHeaders(){return{Accept:"text/html, application/xhtml+xml"}}get isSafe(){return this.method===s.get}get abortSignal(){return this.abortController.signal}acceptResponseType(e){this.headers.Accept=[e,this.headers.Accept].join(", ")}async allowRequestToBeIntercepted(e){const t=new Promise((e=>this.resolveRequestPromise=e));w("turbo:before-fetch-request",{cancelable:!0,detail:{fetchOptions:e,url:this.url,resume:this.resolveRequestPromise},target:this.target}).defaultPrevented&&await t}willDelegateErrorHandling(e){return!w("turbo:fetch-request-error",{target:this.target,cancelable:!0,detail:{request:this,error:e}}).defaultPrevented}}class F{constructor(e,t){this.started=!1,this.intersect=e=>{const t=e.slice(-1)[0];(null==t?void 0:t.isIntersecting)&&this.delegate.elementAppearedInViewport(this.element)},this.delegate=e,this.element=t,this.intersectionObserver=new IntersectionObserver(this.intersect)}start(){this.started||(this.started=!0,this.intersectionObserver.observe(this.element))}stop(){this.started&&(this.started=!1,this.intersectionObserver.unobserve(this.element))}}class P{static wrap(e){return"string"==typeof e?new this(function(e){const t=document.createElement("template");return t.innerHTML=e,t.content}(e)):e}constructor(e){this.fragment=function(e){for(const t of e.querySelectorAll("turbo-stream")){const e=document.importNode(t,!0);for(const t of e.templateElement.content.querySelectorAll("script"))t.replaceWith(y(t));t.replaceWith(e)}return e}(e)}}P.contentType="text/vnd.turbo-stream.html",function(e){e[e.initialized=0]="initialized",e[e.requesting=1]="requesting",e[e.waiting=2]="waiting",e[e.receiving=3]="receiving",e[e.stopping=4]="stopping",e[e.stopped=5]="stopped"}(a||(a={})),function(e){e.urlEncoded="application/x-www-form-urlencoded",e.multipart="multipart/form-data",e.plain="text/plain"}(l||(l={}));class H{static confirmMethod(e,t,n){return Promise.resolve(confirm(e))}constructor(e,t,n,r=!1){this.state=a.initialized,this.delegate=e,this.formElement=t,this.submitter=n,this.formData=function(e,t){const n=new FormData(e),r=null==t?void 0:t.getAttribute("name"),o=null==t?void 0:t.getAttribute("value");return r&&n.append(r,o||""),n}(t,n),this.location=h(this.action),this.method==s.get&&function(e,t){const n=new URLSearchParams;for(const[e,r]of t)r instanceof File||n.append(e,r);e.search=n.toString()}(this.location,[...this.body.entries()]),this.fetchRequest=new I(this,this.method,this.location,this.body,this.formElement),this.mustRedirect=r}get method(){var e;return function(e){switch(e.toLowerCase()){case"get":return s.get;case"post":return s.post;case"put":return s.put;case"patch":return s.patch;case"delete":return s.delete}}(((null===(e=this.submitter)||void 0===e?void 0:e.getAttribute("formmethod"))||this.formElement.getAttribute("method")||"").toLowerCase())||s.get}get action(){var e;const t="string"==typeof this.formElement.action?this.formElement.action:null;return(null===(e=this.submitter)||void 0===e?void 0:e.hasAttribute("formaction"))?this.submitter.getAttribute("formaction")||"":this.formElement.getAttribute("action")||t||""}get body(){return this.enctype==l.urlEncoded||this.method==s.get?new URLSearchParams(this.stringFormData):this.formData}get enctype(){var e;return function(e){switch(e.toLowerCase()){case l.multipart:return l.multipart;case l.plain:return l.plain;default:return l.urlEncoded}}((null===(e=this.submitter)||void 0===e?void 0:e.getAttribute("formenctype"))||this.formElement.enctype)}get isSafe(){return this.fetchRequest.isSafe}get stringFormData(){return[...this.formData].reduce(((e,[t,n])=>e.concat("string"==typeof n?[[t,n]]:[])),[])}async start(){const{initialized:e,requesting:t}=a,n=_("data-turbo-confirm",this.submitter,this.formElement);if("string"!=typeof n||await H.confirmMethod(n,this.formElement,this.submitter))return this.state==e?(this.state=t,this.fetchRequest.perform()):void 0}stop(){const{stopping:e,stopped:t}=a;if(this.state!=e&&this.state!=t)return this.state=e,this.fetchRequest.cancel(),!0}prepareRequest(e){if(!e.isSafe){const t=function(e){if(null!=e){const t=(document.cookie?document.cookie.split("; "):[]).find((t=>t.startsWith(e)));if(t){const e=t.split("=").slice(1).join("=");return e?decodeURIComponent(e):void 0}}}(O("csrf-param"))||O("csrf-token");t&&(e.headers["X-CSRF-Token"]=t)}this.requestAcceptsTurboStreamResponse(e)&&e.acceptResponseType(P.contentType)}requestStarted(e){var t;this.state=a.waiting,null===(t=this.submitter)||void 0===t||t.setAttribute("disabled",""),this.setSubmitsWith(),w("turbo:submit-start",{target:this.formElement,detail:{formSubmission:this}}),this.delegate.formSubmissionStarted(this)}requestPreventedHandlingResponse(e,t){this.result={success:t.succeeded,fetchResponse:t}}requestSucceededWithResponse(e,t){if(t.clientError||t.serverError)this.delegate.formSubmissionFailedWithResponse(this,t);else if(this.requestMustRedirect(e)&&function(e){return 200==e.statusCode&&!e.redirected}(t)){const e=new Error("Form responses must redirect to another location");this.delegate.formSubmissionErrored(this,e)}else this.state=a.receiving,this.result={success:!0,fetchResponse:t},this.delegate.formSubmissionSucceededWithResponse(this,t)}requestFailedWithResponse(e,t){this.result={success:!1,fetchResponse:t},this.delegate.formSubmissionFailedWithResponse(this,t)}requestErrored(e,t){this.result={success:!1,error:t},this.delegate.formSubmissionErrored(this,t)}requestFinished(e){var t;this.state=a.stopped,null===(t=this.submitter)||void 0===t||t.removeAttribute("disabled"),this.resetSubmitterText(),w("turbo:submit-end",{target:this.formElement,detail:Object.assign({formSubmission:this},this.result)}),this.delegate.formSubmissionFinished(this)}setSubmitsWith(){if(this.submitter&&this.submitsWith)if(this.submitter.matches("button"))this.originalSubmitText=this.submitter.innerHTML,this.submitter.innerHTML=this.submitsWith;else if(this.submitter.matches("input")){const e=this.submitter;this.originalSubmitText=e.value,e.value=this.submitsWith}}resetSubmitterText(){this.submitter&&this.originalSubmitText&&(this.submitter.matches("button")?this.submitter.innerHTML=this.originalSubmitText:this.submitter.matches("input")&&(this.submitter.value=this.originalSubmitText))}requestMustRedirect(e){return!e.isSafe&&this.mustRedirect}requestAcceptsTurboStreamResponse(e){return!e.isSafe||function(e,...t){return t.some((t=>t&&t.hasAttribute(e)))}("data-turbo-stream",this.submitter,this.formElement)}get submitsWith(){var e;return null===(e=this.submitter)||void 0===e?void 0:e.getAttribute("data-turbo-submits-with")}}class N{constructor(e){this.element=e}get activeElement(){return this.element.ownerDocument.activeElement}get children(){return[...this.element.children]}hasAnchor(e){return null!=this.getElementForAnchor(e)}getElementForAnchor(e){return e?this.element.querySelector(`[id='${e}'], a[name='${e}']`):null}get isConnected(){return this.element.isConnected}get firstAutofocusableElement(){for(const e of this.element.querySelectorAll("[autofocus]"))if(null==e.closest("[inert], :disabled, [hidden], details:not([open]), dialog:not([open])"))return e;return null}get permanentElements(){return B(this.element)}getPermanentElementById(e){return W(this.element,e)}getPermanentElementMapForSnapshot(e){const t={};for(const n of this.permanentElements){const{id:r}=n,o=e.getPermanentElementById(r);o&&(t[r]=[n,o])}return t}}function W(e,t){return e.querySelector(`#${t}[data-turbo-permanent]`)}function B(e){return e.querySelectorAll("[id][data-turbo-permanent]")}class V{constructor(e,t){this.started=!1,this.submitCaptured=()=>{this.eventTarget.removeEventListener("submit",this.submitBubbled,!1),this.eventTarget.addEventListener("submit",this.submitBubbled,!1)},this.submitBubbled=e=>{if(!e.defaultPrevented){const t=e.target instanceof HTMLFormElement?e.target:void 0,n=e.submitter||void 0;t&&function(e,t){return"dialog"!=((null==t?void 0:t.getAttribute("formmethod"))||e.getAttribute("method"))}(t,n)&&function(e,t){if((null==t?void 0:t.hasAttribute("formtarget"))||e.hasAttribute("target")){const n=(null==t?void 0:t.getAttribute("formtarget"))||e.target;for(const e of document.getElementsByName(n))if(e instanceof HTMLIFrameElement)return!1;return!0}return!0}(t,n)&&this.delegate.willSubmitForm(t,n)&&(e.preventDefault(),e.stopImmediatePropagation(),this.delegate.formSubmitted(t,n))}},this.delegate=e,this.eventTarget=t}start(){this.started||(this.eventTarget.addEventListener("submit",this.submitCaptured,!0),this.started=!0)}stop(){this.started&&(this.eventTarget.removeEventListener("submit",this.submitCaptured,!0),this.started=!1)}}class j{constructor(e,t){this.resolveRenderPromise=e=>{},this.resolveInterceptionPromise=e=>{},this.delegate=e,this.element=t}scrollToAnchor(e){const t=this.snapshot.getElementForAnchor(e);t?(this.scrollToElement(t),this.focusElement(t)):this.scrollToPosition({x:0,y:0})}scrollToAnchorFromLocation(e){this.scrollToAnchor(p(e))}scrollToElement(e){e.scrollIntoView()}focusElement(e){e instanceof HTMLElement&&(e.hasAttribute("tabindex")?e.focus():(e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")))}scrollToPosition({x:e,y:t}){this.scrollRoot.scrollTo(e,t)}scrollToTop(){this.scrollToPosition({x:0,y:0})}get scrollRoot(){return window}async render(e){const{isPreview:t,shouldRender:n,newSnapshot:r}=e;if(n)try{this.renderPromise=new Promise((e=>this.resolveRenderPromise=e)),this.renderer=e,await this.prepareToRenderSnapshot(e);const n=new Promise((e=>this.resolveInterceptionPromise=e)),o={resume:this.resolveInterceptionPromise,render:this.renderer.renderElement};this.delegate.allowsImmediateRender(r,o)||await n,await this.renderSnapshot(e),this.delegate.viewRenderedSnapshot(r,t),this.delegate.preloadOnLoadLinksForView(this.element),this.finishRenderingSnapshot(e)}finally{delete this.renderer,this.resolveRenderPromise(void 0),delete this.renderPromise}else this.invalidate(e.reloadReason)}invalidate(e){this.delegate.viewInvalidated(e)}async prepareToRenderSnapshot(e){this.markAsPreview(e.isPreview),await e.prepareToRender()}markAsPreview(e){e?this.element.setAttribute("data-turbo-preview",""):this.element.removeAttribute("data-turbo-preview")}async renderSnapshot(e){await e.render()}finishRenderingSnapshot(e){e.finishRendering()}}class z extends j{missing(){this.element.innerHTML='Content missing'}get snapshot(){return new N(this.element)}}class q{constructor(e,t){this.clickBubbled=e=>{this.respondsToEventTarget(e.target)?this.clickEvent=e:delete this.clickEvent},this.linkClicked=e=>{this.clickEvent&&this.respondsToEventTarget(e.target)&&e.target instanceof Element&&this.delegate.shouldInterceptLinkClick(e.target,e.detail.url,e.detail.originalEvent)&&(this.clickEvent.preventDefault(),e.preventDefault(),this.delegate.linkClickIntercepted(e.target,e.detail.url,e.detail.originalEvent)),delete this.clickEvent},this.willVisit=e=>{delete this.clickEvent},this.delegate=e,this.element=t}start(){this.element.addEventListener("click",this.clickBubbled),document.addEventListener("turbo:click",this.linkClicked),document.addEventListener("turbo:before-visit",this.willVisit)}stop(){this.element.removeEventListener("click",this.clickBubbled),document.removeEventListener("turbo:click",this.linkClicked),document.removeEventListener("turbo:before-visit",this.willVisit)}respondsToEventTarget(e){const t=e instanceof Element?e:e instanceof Node?e.parentElement:null;return t&&t.closest("turbo-frame, html")==this.element}}class ${constructor(e,t){this.started=!1,this.clickCaptured=()=>{this.eventTarget.removeEventListener("click",this.clickBubbled,!1),this.eventTarget.addEventListener("click",this.clickBubbled,!1)},this.clickBubbled=e=>{if(e instanceof MouseEvent&&this.clickEventIsSignificant(e)){const t=e.composedPath&&e.composedPath()[0]||e.target,n=this.findLinkFromClickTarget(t);if(n&&function(e){if(e.hasAttribute("target")){for(const t of document.getElementsByName(e.target))if(t instanceof HTMLIFrameElement)return!1;return!0}return!0}(n)){const t=this.getLocationForLink(n);this.delegate.willFollowLinkToLocation(n,t,e)&&(e.preventDefault(),this.delegate.followedLinkToLocation(n,t))}}},this.delegate=e,this.eventTarget=t}start(){this.started||(this.eventTarget.addEventListener("click",this.clickCaptured,!0),this.started=!0)}stop(){this.started&&(this.eventTarget.removeEventListener("click",this.clickCaptured,!0),this.started=!1)}clickEventIsSignificant(e){return!(e.target&&e.target.isContentEditable||e.defaultPrevented||e.which>1||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey)}findLinkFromClickTarget(e){return M(e,"a[href]:not([target^=_]):not([download])")}getLocationForLink(e){return h(e.getAttribute("href")||"")}}class Z{constructor(e,t){this.delegate=e,this.linkInterceptor=new $(this,t)}start(){this.linkInterceptor.start()}stop(){this.linkInterceptor.stop()}willFollowLinkToLocation(e,t,n){return this.delegate.willSubmitFormLinkToLocation(e,t,n)&&e.hasAttribute("data-turbo-method")}followedLinkToLocation(e,t){const n=document.createElement("form");for(const[e,r]of t.searchParams)n.append(Object.assign(document.createElement("input"),{type:"hidden",name:e,value:r}));const r=Object.assign(t,{search:""});n.setAttribute("data-turbo","true"),n.setAttribute("action",r.href),n.setAttribute("hidden","");const o=e.getAttribute("data-turbo-method");o&&n.setAttribute("method",o);const i=e.getAttribute("data-turbo-frame");i&&n.setAttribute("data-turbo-frame",i);const s=R(e);s&&n.setAttribute("data-turbo-action",s);const a=e.getAttribute("data-turbo-confirm");a&&n.setAttribute("data-turbo-confirm",a),e.hasAttribute("data-turbo-stream")&&n.setAttribute("data-turbo-stream",""),this.delegate.submittedFormLinkToLocation(e,t,n),document.body.appendChild(n),n.addEventListener("turbo:submit-end",(()=>n.remove()),{once:!0}),requestAnimationFrame((()=>n.requestSubmit()))}}class U{static async preservingPermanentElements(e,t,n){const r=new this(e,t);r.enter(),await n(),r.leave()}constructor(e,t){this.delegate=e,this.permanentElementMap=t}enter(){for(const e in this.permanentElementMap){const[t,n]=this.permanentElementMap[e];this.delegate.enteringBardo(t,n),this.replaceNewPermanentElementWithPlaceholder(n)}}leave(){for(const e in this.permanentElementMap){const[t]=this.permanentElementMap[e];this.replaceCurrentPermanentElementWithClone(t),this.replacePlaceholderWithPermanentElement(t),this.delegate.leavingBardo(t)}}replaceNewPermanentElementWithPlaceholder(e){const t=function(e){const t=document.createElement("meta");return t.setAttribute("name","turbo-permanent-placeholder"),t.setAttribute("content",e.id),t}(e);e.replaceWith(t)}replaceCurrentPermanentElementWithClone(e){const t=e.cloneNode(!0);e.replaceWith(t)}replacePlaceholderWithPermanentElement(e){const t=this.getPlaceholderById(e.id);null==t||t.replaceWith(e)}getPlaceholderById(e){return this.placeholders.find((t=>t.content==e))}get placeholders(){return[...document.querySelectorAll("meta[name=turbo-permanent-placeholder][content]")]}}class K{constructor(e,t,n,r,o=!0){this.activeElement=null,this.currentSnapshot=e,this.newSnapshot=t,this.isPreview=r,this.willRender=o,this.renderElement=n,this.promise=new Promise(((e,t)=>this.resolvingFunctions={resolve:e,reject:t}))}get shouldRender(){return!0}get reloadReason(){}prepareToRender(){}finishRendering(){this.resolvingFunctions&&(this.resolvingFunctions.resolve(),delete this.resolvingFunctions)}async preservingPermanentElements(e){await U.preservingPermanentElements(this,this.permanentElementMap,e)}focusFirstAutofocusableElement(){const e=this.connectedSnapshot.firstAutofocusableElement;(function(e){return e&&"function"==typeof e.focus})(e)&&e.focus()}enteringBardo(e){this.activeElement||e.contains(this.currentSnapshot.activeElement)&&(this.activeElement=this.currentSnapshot.activeElement)}leavingBardo(e){e.contains(this.activeElement)&&this.activeElement instanceof HTMLElement&&(this.activeElement.focus(),this.activeElement=null)}get connectedSnapshot(){return this.newSnapshot.isConnected?this.newSnapshot:this.currentSnapshot}get currentElement(){return this.currentSnapshot.element}get newElement(){return this.newSnapshot.element}get permanentElementMap(){return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot)}}class Y extends K{static renderElement(e,t){var n;const r=document.createRange();r.selectNodeContents(e),r.deleteContents();const o=t,i=null===(n=o.ownerDocument)||void 0===n?void 0:n.createRange();i&&(i.selectNodeContents(o),e.appendChild(i.extractContents()))}constructor(e,t,n,r,o,i=!0){super(t,n,r,o,i),this.delegate=e}get shouldRender(){return!0}async render(){await S(),this.preservingPermanentElements((()=>{this.loadFrameElement()})),this.scrollFrameIntoView(),await S(),this.focusFirstAutofocusableElement(),await S(),this.activateScriptElements()}loadFrameElement(){this.delegate.willRenderFrame(this.currentElement,this.newElement),this.renderElement(this.currentElement,this.newElement)}scrollFrameIntoView(){if(this.currentElement.autoscroll||this.newElement.autoscroll){const t=this.currentElement.firstElementChild,n=("end","end"==(e=this.currentElement.getAttribute("data-autoscroll-block"))||"start"==e||"center"==e||"nearest"==e?e:"end"),r=function(e,t){return"auto"==e||"smooth"==e?e:"auto"}(this.currentElement.getAttribute("data-autoscroll-behavior"));if(t)return t.scrollIntoView({block:n,behavior:r}),!0}var e;return!1}activateScriptElements(){for(const e of this.newScriptElements){const t=y(e);e.replaceWith(t)}}get newScriptElements(){return this.currentElement.querySelectorAll("script")}}class G{static get defaultCSS(){return x` + .turbo-progress-bar { + position: fixed; + display: block; + top: 0; + left: 0; + height: 3px; + background: #0076ff; + z-index: 2147483647; + transition: + width ${G.animationDuration}ms ease-out, + opacity ${G.animationDuration/2}ms ${G.animationDuration/2}ms ease-in; + transform: translate3d(0, 0, 0); + } + `}constructor(){this.hiding=!1,this.value=0,this.visible=!1,this.trickle=()=>{this.setValue(this.value+Math.random()/100)},this.stylesheetElement=this.createStylesheetElement(),this.progressElement=this.createProgressElement(),this.installStylesheetElement(),this.setValue(0)}show(){this.visible||(this.visible=!0,this.installProgressElement(),this.startTrickling())}hide(){this.visible&&!this.hiding&&(this.hiding=!0,this.fadeProgressElement((()=>{this.uninstallProgressElement(),this.stopTrickling(),this.visible=!1,this.hiding=!1})))}setValue(e){this.value=e,this.refresh()}installStylesheetElement(){document.head.insertBefore(this.stylesheetElement,document.head.firstChild)}installProgressElement(){this.progressElement.style.width="0",this.progressElement.style.opacity="1",document.documentElement.insertBefore(this.progressElement,document.body),this.refresh()}fadeProgressElement(e){this.progressElement.style.opacity="0",setTimeout(e,1.5*G.animationDuration)}uninstallProgressElement(){this.progressElement.parentNode&&document.documentElement.removeChild(this.progressElement)}startTrickling(){this.trickleInterval||(this.trickleInterval=window.setInterval(this.trickle,G.animationDuration))}stopTrickling(){window.clearInterval(this.trickleInterval),delete this.trickleInterval}refresh(){requestAnimationFrame((()=>{this.progressElement.style.width=10+90*this.value+"%"}))}createStylesheetElement(){const e=document.createElement("style");return e.type="text/css",e.textContent=G.defaultCSS,this.cspNonce&&(e.nonce=this.cspNonce),e}createProgressElement(){const e=document.createElement("div");return e.className="turbo-progress-bar",e}get cspNonce(){return O("csp-nonce")}}G.animationDuration=300;class X extends N{constructor(){super(...arguments),this.detailsByOuterHTML=this.children.filter((e=>!function(e){return"noscript"==e.localName}(e))).map((e=>function(e){return e.hasAttribute("nonce")&&e.setAttribute("nonce",""),e}(e))).reduce(((e,t)=>{const{outerHTML:n}=t,r=n in e?e[n]:{type:J(t),tracked:Q(t),elements:[]};return Object.assign(Object.assign({},e),{[n]:Object.assign(Object.assign({},r),{elements:[...r.elements,t]})})}),{})}get trackedElementSignature(){return Object.keys(this.detailsByOuterHTML).filter((e=>this.detailsByOuterHTML[e].tracked)).join("")}getScriptElementsNotInSnapshot(e){return this.getElementsMatchingTypeNotInSnapshot("script",e)}getStylesheetElementsNotInSnapshot(e){return this.getElementsMatchingTypeNotInSnapshot("stylesheet",e)}getElementsMatchingTypeNotInSnapshot(e,t){return Object.keys(this.detailsByOuterHTML).filter((e=>!(e in t.detailsByOuterHTML))).map((e=>this.detailsByOuterHTML[e])).filter((({type:t})=>t==e)).map((({elements:[e]})=>e))}get provisionalElements(){return Object.keys(this.detailsByOuterHTML).reduce(((e,t)=>{const{type:n,tracked:r,elements:o}=this.detailsByOuterHTML[t];return null!=n||r?o.length>1?[...e,...o.slice(1)]:e:[...e,...o]}),[])}getMetaValue(e){const t=this.findMetaElementByName(e);return t?t.getAttribute("content"):null}findMetaElementByName(e){return Object.keys(this.detailsByOuterHTML).reduce(((t,n)=>{const{elements:[r]}=this.detailsByOuterHTML[n];return function(e,t){return"meta"==e.localName&&e.getAttribute("name")==t}(r,e)?r:t}),void 0)}}function J(e){return function(e){return"script"==e.localName}(e)?"script":function(e){const t=e.localName;return"style"==t||"link"==t&&"stylesheet"==e.getAttribute("rel")}(e)?"stylesheet":void 0}function Q(e){return"reload"==e.getAttribute("data-turbo-track")}class ee extends N{static fromHTMLString(e=""){return this.fromDocument(k(e))}static fromElement(e){return this.fromDocument(e.ownerDocument)}static fromDocument({head:e,body:t}){return new this(t,new X(e))}constructor(e,t){super(e),this.headSnapshot=t}clone(){const e=this.element.cloneNode(!0),t=this.element.querySelectorAll("select"),n=e.querySelectorAll("select");for(const[e,r]of t.entries()){const t=n[e];for(const e of t.selectedOptions)e.selected=!1;for(const e of r.selectedOptions)t.options[e.index].selected=!0}for(const t of e.querySelectorAll('input[type="password"]'))t.value="";return new ee(e,this.headSnapshot)}get headElement(){return this.headSnapshot.element}get rootLocation(){var e;return h(null!==(e=this.getSetting("root"))&&void 0!==e?e:"/")}get cacheControlValue(){return this.getSetting("cache-control")}get isPreviewable(){return"no-preview"!=this.cacheControlValue}get isCacheable(){return"no-cache"!=this.cacheControlValue}get isVisitable(){return"reload"!=this.getSetting("visit-control")}getSetting(e){return this.headSnapshot.getMetaValue(`turbo-${e}`)}}!function(e){e.visitStart="visitStart",e.requestStart="requestStart",e.requestEnd="requestEnd",e.visitEnd="visitEnd"}(c||(c={})),function(e){e.initialized="initialized",e.started="started",e.canceled="canceled",e.failed="failed",e.completed="completed"}(u||(u={}));const te={action:"advance",historyChanged:!1,visitCachedSnapshot:()=>{},willRender:!0,updateHistory:!0,shouldCacheSnapshot:!0,acceptsStreamResponse:!1};var ne,re;!function(e){e[e.networkFailure=0]="networkFailure",e[e.timeoutFailure=-1]="timeoutFailure",e[e.contentTypeMismatch=-2]="contentTypeMismatch"}(ne||(ne={}));class oe{constructor(e,t,n,r={}){this.identifier=E(),this.timingMetrics={},this.followedRedirect=!1,this.historyChanged=!1,this.scrolled=!1,this.shouldCacheSnapshot=!0,this.acceptsStreamResponse=!1,this.snapshotCached=!1,this.state=u.initialized,this.delegate=e,this.location=t,this.restorationIdentifier=n||E();const{action:o,historyChanged:i,referrer:s,snapshot:a,snapshotHTML:l,response:c,visitCachedSnapshot:d,willRender:h,updateHistory:p,shouldCacheSnapshot:f,acceptsStreamResponse:m}=Object.assign(Object.assign({},te),r);this.action=o,this.historyChanged=i,this.referrer=s,this.snapshot=a,this.snapshotHTML=l,this.response=c,this.isSamePage=this.delegate.locationWithActionIsSamePage(this.location,this.action),this.visitCachedSnapshot=d,this.willRender=h,this.updateHistory=p,this.scrolled=!h,this.shouldCacheSnapshot=f,this.acceptsStreamResponse=m}get adapter(){return this.delegate.adapter}get view(){return this.delegate.view}get history(){return this.delegate.history}get restorationData(){return this.history.getRestorationDataForIdentifier(this.restorationIdentifier)}get silent(){return this.isSamePage}start(){this.state==u.initialized&&(this.recordTimingMetric(c.visitStart),this.state=u.started,this.adapter.visitStarted(this),this.delegate.visitStarted(this))}cancel(){this.state==u.started&&(this.request&&this.request.cancel(),this.cancelRender(),this.state=u.canceled)}complete(){this.state==u.started&&(this.recordTimingMetric(c.visitEnd),this.state=u.completed,this.followRedirect(),this.followedRedirect||(this.adapter.visitCompleted(this),this.delegate.visitCompleted(this)))}fail(){this.state==u.started&&(this.state=u.failed,this.adapter.visitFailed(this))}changeHistory(){var e;if(!this.historyChanged&&this.updateHistory){const t=A(this.location.href===(null===(e=this.referrer)||void 0===e?void 0:e.href)?"replace":this.action);this.history.update(t,this.location,this.restorationIdentifier),this.historyChanged=!0}}issueRequest(){this.hasPreloadedResponse()?this.simulateRequest():this.shouldIssueRequest()&&!this.request&&(this.request=new I(this,s.get,this.location),this.request.perform())}simulateRequest(){this.response&&(this.startRequest(),this.recordResponse(),this.finishRequest())}startRequest(){this.recordTimingMetric(c.requestStart),this.adapter.visitRequestStarted(this)}recordResponse(e=this.response){if(this.response=e,e){const{statusCode:t}=e;ie(t)?this.adapter.visitRequestCompleted(this):this.adapter.visitRequestFailedWithStatusCode(this,t)}}finishRequest(){this.recordTimingMetric(c.requestEnd),this.adapter.visitRequestFinished(this)}loadResponse(){if(this.response){const{statusCode:e,responseHTML:t}=this.response;this.render((async()=>{this.shouldCacheSnapshot&&this.cacheSnapshot(),this.view.renderPromise&&await this.view.renderPromise,ie(e)&&null!=t?(await this.view.renderPage(ee.fromHTMLString(t),!1,this.willRender,this),this.performScroll(),this.adapter.visitRendered(this),this.complete()):(await this.view.renderError(ee.fromHTMLString(t),this),this.adapter.visitRendered(this),this.fail())}))}}getCachedSnapshot(){const e=this.view.getCachedSnapshotForLocation(this.location)||this.getPreloadedSnapshot();if(e&&(!p(this.location)||e.hasAnchor(p(this.location)))&&("restore"==this.action||e.isPreviewable))return e}getPreloadedSnapshot(){if(this.snapshotHTML)return ee.fromHTMLString(this.snapshotHTML)}hasCachedSnapshot(){return null!=this.getCachedSnapshot()}loadCachedSnapshot(){const e=this.getCachedSnapshot();if(e){const t=this.shouldIssueRequest();this.render((async()=>{this.cacheSnapshot(),this.isSamePage?this.adapter.visitRendered(this):(this.view.renderPromise&&await this.view.renderPromise,await this.view.renderPage(e,t,this.willRender,this),this.performScroll(),this.adapter.visitRendered(this),t||this.complete())}))}}followRedirect(){var e;this.redirectedToLocation&&!this.followedRedirect&&(null===(e=this.response)||void 0===e?void 0:e.redirected)&&(this.adapter.visitProposedToLocation(this.redirectedToLocation,{action:"replace",response:this.response,shouldCacheSnapshot:!1,willRender:!1}),this.followedRedirect=!0)}goToSamePageAnchor(){this.isSamePage&&this.render((async()=>{this.cacheSnapshot(),this.performScroll(),this.changeHistory(),this.adapter.visitRendered(this)}))}prepareRequest(e){this.acceptsStreamResponse&&e.acceptResponseType(P.contentType)}requestStarted(){this.startRequest()}requestPreventedHandlingResponse(e,t){}async requestSucceededWithResponse(e,t){const n=await t.responseHTML,{redirected:r,statusCode:o}=t;null==n?this.recordResponse({statusCode:ne.contentTypeMismatch,redirected:r}):(this.redirectedToLocation=t.redirected?t.location:void 0,this.recordResponse({statusCode:o,responseHTML:n,redirected:r}))}async requestFailedWithResponse(e,t){const n=await t.responseHTML,{redirected:r,statusCode:o}=t;null==n?this.recordResponse({statusCode:ne.contentTypeMismatch,redirected:r}):this.recordResponse({statusCode:o,responseHTML:n,redirected:r})}requestErrored(e,t){this.recordResponse({statusCode:ne.networkFailure,redirected:!1})}requestFinished(){this.finishRequest()}performScroll(){this.scrolled||this.view.forceReloaded||("restore"==this.action?this.scrollToRestoredPosition()||this.scrollToAnchor()||this.view.scrollToTop():this.scrollToAnchor()||this.view.scrollToTop(),this.isSamePage&&this.delegate.visitScrolledToSamePageLocation(this.view.lastRenderedLocation,this.location),this.scrolled=!0)}scrollToRestoredPosition(){const{scrollPosition:e}=this.restorationData;if(e)return this.view.scrollToPosition(e),!0}scrollToAnchor(){const e=p(this.location);if(null!=e)return this.view.scrollToAnchor(e),!0}recordTimingMetric(e){this.timingMetrics[e]=(new Date).getTime()}getTimingMetrics(){return Object.assign({},this.timingMetrics)}getHistoryMethodForAction(e){switch(e){case"replace":return history.replaceState;case"advance":case"restore":return history.pushState}}hasPreloadedResponse(){return"object"==typeof this.response}shouldIssueRequest(){return!this.isSamePage&&("restore"==this.action?!this.hasCachedSnapshot():this.willRender)}cacheSnapshot(){this.snapshotCached||(this.view.cacheSnapshot(this.snapshot).then((e=>e&&this.visitCachedSnapshot(e))),this.snapshotCached=!0)}async render(e){this.cancelRender(),await new Promise((e=>{this.frame=requestAnimationFrame((()=>e()))})),await e(),delete this.frame}cancelRender(){this.frame&&(cancelAnimationFrame(this.frame),delete this.frame)}}function ie(e){return e>=200&&e<300}class se{constructor(e){this.progressBar=new G,this.showProgressBar=()=>{this.progressBar.show()},this.session=e}visitProposedToLocation(e,t){this.navigator.startVisit(e,(null==t?void 0:t.restorationIdentifier)||E(),t)}visitStarted(e){this.location=e.location,e.loadCachedSnapshot(),e.issueRequest(),e.goToSamePageAnchor()}visitRequestStarted(e){this.progressBar.setValue(0),e.hasCachedSnapshot()||"restore"!=e.action?this.showVisitProgressBarAfterDelay():this.showProgressBar()}visitRequestCompleted(e){e.loadResponse()}visitRequestFailedWithStatusCode(e,t){switch(t){case ne.networkFailure:case ne.timeoutFailure:case ne.contentTypeMismatch:return this.reload({reason:"request_failed",context:{statusCode:t}});default:return e.loadResponse()}}visitRequestFinished(e){this.progressBar.setValue(1),this.hideVisitProgressBar()}visitCompleted(e){}pageInvalidated(e){this.reload(e)}visitFailed(e){}visitRendered(e){}formSubmissionStarted(e){this.progressBar.setValue(0),this.showFormProgressBarAfterDelay()}formSubmissionFinished(e){this.progressBar.setValue(1),this.hideFormProgressBar()}showVisitProgressBarAfterDelay(){this.visitProgressBarTimeout=window.setTimeout(this.showProgressBar,this.session.progressBarDelay)}hideVisitProgressBar(){this.progressBar.hide(),null!=this.visitProgressBarTimeout&&(window.clearTimeout(this.visitProgressBarTimeout),delete this.visitProgressBarTimeout)}showFormProgressBarAfterDelay(){null==this.formProgressBarTimeout&&(this.formProgressBarTimeout=window.setTimeout(this.showProgressBar,this.session.progressBarDelay))}hideFormProgressBar(){this.progressBar.hide(),null!=this.formProgressBarTimeout&&(window.clearTimeout(this.formProgressBarTimeout),delete this.formProgressBarTimeout)}reload(e){var t;w("turbo:reload",{detail:e}),window.location.href=(null===(t=this.location)||void 0===t?void 0:t.toString())||window.location.href}get navigator(){return this.session.navigator}}class ae{constructor(){this.selector="[data-turbo-temporary]",this.deprecatedSelector="[data-turbo-cache=false]",this.started=!1,this.removeTemporaryElements=e=>{for(const e of this.temporaryElements)e.remove()}}start(){this.started||(this.started=!0,addEventListener("turbo:before-cache",this.removeTemporaryElements,!1))}stop(){this.started&&(this.started=!1,removeEventListener("turbo:before-cache",this.removeTemporaryElements,!1))}get temporaryElements(){return[...document.querySelectorAll(this.selector),...this.temporaryElementsWithDeprecation]}get temporaryElementsWithDeprecation(){const e=document.querySelectorAll(this.deprecatedSelector);return e.length&&console.warn(`The ${this.deprecatedSelector} selector is deprecated and will be removed in a future version. Use ${this.selector} instead.`),[...e]}}class le{constructor(e,t){this.session=e,this.element=t,this.linkInterceptor=new q(this,t),this.formSubmitObserver=new V(this,t)}start(){this.linkInterceptor.start(),this.formSubmitObserver.start()}stop(){this.linkInterceptor.stop(),this.formSubmitObserver.stop()}shouldInterceptLinkClick(e,t,n){return this.shouldRedirect(e)}linkClickIntercepted(e,t,n){const r=this.findFrameElement(e);r&&r.delegate.linkClickIntercepted(e,t,n)}willSubmitForm(e,t){return null==e.closest("turbo-frame")&&this.shouldSubmit(e,t)&&this.shouldRedirect(e,t)}formSubmitted(e,t){const n=this.findFrameElement(e,t);n&&n.delegate.formSubmitted(e,t)}shouldSubmit(e,t){var n;const r=f(e,t),o=this.element.ownerDocument.querySelector('meta[name="turbo-root"]'),i=h(null!==(n=null==o?void 0:o.content)&&void 0!==n?n:"/");return this.shouldRedirect(e,t)&&m(r,i)}shouldRedirect(e,t){if(e instanceof HTMLFormElement?this.session.submissionIsNavigatable(e,t):this.session.elementIsNavigatable(e)){const n=this.findFrameElement(e,t);return!!n&&n!=e.closest("turbo-frame")}return!1}findFrameElement(e,t){const n=(null==t?void 0:t.getAttribute("data-turbo-frame"))||e.getAttribute("data-turbo-frame");if(n&&"_top"!=n){const e=this.element.querySelector(`#${n}:not([disabled])`);if(e instanceof d)return e}}}class ce{constructor(e){this.restorationIdentifier=E(),this.restorationData={},this.started=!1,this.pageLoaded=!1,this.onPopState=e=>{if(this.shouldHandlePopState()){const{turbo:t}=e.state||{};if(t){this.location=new URL(window.location.href);const{restorationIdentifier:e}=t;this.restorationIdentifier=e,this.delegate.historyPoppedToLocationWithRestorationIdentifier(this.location,e)}}},this.onPageLoad=async e=>{await Promise.resolve(),this.pageLoaded=!0},this.delegate=e}start(){this.started||(addEventListener("popstate",this.onPopState,!1),addEventListener("load",this.onPageLoad,!1),this.started=!0,this.replace(new URL(window.location.href)))}stop(){this.started&&(removeEventListener("popstate",this.onPopState,!1),removeEventListener("load",this.onPageLoad,!1),this.started=!1)}push(e,t){this.update(history.pushState,e,t)}replace(e,t){this.update(history.replaceState,e,t)}update(e,t,n=E()){const r={turbo:{restorationIdentifier:n}};e.call(history,r,"",t.href),this.location=t,this.restorationIdentifier=n}getRestorationDataForIdentifier(e){return this.restorationData[e]||{}}updateRestorationData(e){const{restorationIdentifier:t}=this,n=this.restorationData[t];this.restorationData[t]=Object.assign(Object.assign({},n),e)}assumeControlOfScrollRestoration(){var e;this.previousScrollRestoration||(this.previousScrollRestoration=null!==(e=history.scrollRestoration)&&void 0!==e?e:"auto",history.scrollRestoration="manual")}relinquishControlOfScrollRestoration(){this.previousScrollRestoration&&(history.scrollRestoration=this.previousScrollRestoration,delete this.previousScrollRestoration)}shouldHandlePopState(){return this.pageIsLoaded()}pageIsLoaded(){return this.pageLoaded||"complete"==document.readyState}}class ue{constructor(e){this.delegate=e}proposeVisit(e,t={}){this.delegate.allowsVisitingLocationWithAction(e,t.action)&&(m(e,this.view.snapshot.rootLocation)?this.delegate.visitProposedToLocation(e,t):window.location.href=e.toString())}startVisit(e,t,n={}){this.stop(),this.currentVisit=new oe(this,h(e),t,Object.assign({referrer:this.location},n)),this.currentVisit.start()}submitForm(e,t){this.stop(),this.formSubmission=new H(this,e,t,!0),this.formSubmission.start()}stop(){this.formSubmission&&(this.formSubmission.stop(),delete this.formSubmission),this.currentVisit&&(this.currentVisit.cancel(),delete this.currentVisit)}get adapter(){return this.delegate.adapter}get view(){return this.delegate.view}get history(){return this.delegate.history}formSubmissionStarted(e){"function"==typeof this.adapter.formSubmissionStarted&&this.adapter.formSubmissionStarted(e)}async formSubmissionSucceededWithResponse(e,t){if(e==this.formSubmission){const n=await t.responseHTML;if(n){const r=e.isSafe;r||this.view.clearSnapshotCache();const{statusCode:o,redirected:i}=t,s={action:this.getActionForFormSubmission(e),shouldCacheSnapshot:r,response:{statusCode:o,responseHTML:n,redirected:i}};this.proposeVisit(t.location,s)}}}async formSubmissionFailedWithResponse(e,t){const n=await t.responseHTML;if(n){const e=ee.fromHTMLString(n);t.serverError?await this.view.renderError(e,this.currentVisit):await this.view.renderPage(e,!1,!0,this.currentVisit),this.view.scrollToTop(),this.view.clearSnapshotCache()}}formSubmissionErrored(e,t){console.error(t)}formSubmissionFinished(e){"function"==typeof this.adapter.formSubmissionFinished&&this.adapter.formSubmissionFinished(e)}visitStarted(e){this.delegate.visitStarted(e)}visitCompleted(e){this.delegate.visitCompleted(e)}locationWithActionIsSamePage(e,t){const n=p(e),r=p(this.view.lastRenderedLocation),o="restore"===t&&void 0===n;return"replace"!==t&&v(e)===v(this.view.lastRenderedLocation)&&(o||null!=n&&n!==r)}visitScrolledToSamePageLocation(e,t){this.delegate.visitScrolledToSamePageLocation(e,t)}get location(){return this.history.location}get restorationIdentifier(){return this.history.restorationIdentifier}getActionForFormSubmission({submitter:e,formElement:t}){return R(e,t)||"advance"}}!function(e){e[e.initial=0]="initial",e[e.loading=1]="loading",e[e.interactive=2]="interactive",e[e.complete=3]="complete"}(re||(re={}));class de{constructor(e){this.stage=re.initial,this.started=!1,this.interpretReadyState=()=>{const{readyState:e}=this;"interactive"==e?this.pageIsInteractive():"complete"==e&&this.pageIsComplete()},this.pageWillUnload=()=>{this.delegate.pageWillUnload()},this.delegate=e}start(){this.started||(this.stage==re.initial&&(this.stage=re.loading),document.addEventListener("readystatechange",this.interpretReadyState,!1),addEventListener("pagehide",this.pageWillUnload,!1),this.started=!0)}stop(){this.started&&(document.removeEventListener("readystatechange",this.interpretReadyState,!1),removeEventListener("pagehide",this.pageWillUnload,!1),this.started=!1)}pageIsInteractive(){this.stage==re.loading&&(this.stage=re.interactive,this.delegate.pageBecameInteractive())}pageIsComplete(){this.pageIsInteractive(),this.stage==re.interactive&&(this.stage=re.complete,this.delegate.pageLoaded())}get readyState(){return document.readyState}}class he{constructor(e){this.started=!1,this.onScroll=()=>{this.updatePosition({x:window.pageXOffset,y:window.pageYOffset})},this.delegate=e}start(){this.started||(addEventListener("scroll",this.onScroll,!1),this.onScroll(),this.started=!0)}stop(){this.started&&(removeEventListener("scroll",this.onScroll,!1),this.started=!1)}updatePosition(e){this.delegate.scrollPositionChanged(e)}}class pe{render({fragment:e}){U.preservingPermanentElements(this,function(e){const t=B(document.documentElement),n={};for(const r of t){const{id:t}=r;for(const o of e.querySelectorAll("turbo-stream")){const e=W(o.templateElement.content,t);e&&(n[t]=[r,e])}}return n}(e),(()=>document.documentElement.appendChild(e)))}enteringBardo(e,t){t.replaceWith(e.cloneNode(!0))}leavingBardo(){}}class fe{constructor(e){this.sources=new Set,this.started=!1,this.inspectFetchResponse=e=>{const t=function(e){var t;const n=null===(t=e.detail)||void 0===t?void 0:t.fetchResponse;if(n instanceof b)return n}(e);t&&function(e){var t;return(null!==(t=e.contentType)&&void 0!==t?t:"").startsWith(P.contentType)}(t)&&(e.preventDefault(),this.receiveMessageResponse(t))},this.receiveMessageEvent=e=>{this.started&&"string"==typeof e.data&&this.receiveMessageHTML(e.data)},this.delegate=e}start(){this.started||(this.started=!0,addEventListener("turbo:before-fetch-response",this.inspectFetchResponse,!1))}stop(){this.started&&(this.started=!1,removeEventListener("turbo:before-fetch-response",this.inspectFetchResponse,!1))}connectStreamSource(e){this.streamSourceIsConnected(e)||(this.sources.add(e),e.addEventListener("message",this.receiveMessageEvent,!1))}disconnectStreamSource(e){this.streamSourceIsConnected(e)&&(this.sources.delete(e),e.removeEventListener("message",this.receiveMessageEvent,!1))}streamSourceIsConnected(e){return this.sources.has(e)}async receiveMessageResponse(e){const t=await e.responseHTML;t&&this.receiveMessageHTML(t)}receiveMessageHTML(e){this.delegate.receivedMessageFromStream(P.wrap(e))}}class me extends K{static renderElement(e,t){const{documentElement:n,body:r}=document;n.replaceChild(t,r)}async render(){this.replaceHeadAndBody(),this.activateScriptElements()}replaceHeadAndBody(){const{documentElement:e,head:t}=document;e.replaceChild(this.newHead,t),this.renderElement(this.currentElement,this.newElement)}activateScriptElements(){for(const e of this.scriptElements){const t=e.parentNode;if(t){const n=y(e);t.replaceChild(n,e)}}}get newHead(){return this.newSnapshot.headSnapshot.element}get scriptElements(){return document.documentElement.querySelectorAll("script")}}class ve extends K{static renderElement(e,t){document.body&&t instanceof HTMLBodyElement?document.body.replaceWith(t):document.documentElement.appendChild(t)}get shouldRender(){return this.newSnapshot.isVisitable&&this.trackedElementsAreIdentical}get reloadReason(){return this.newSnapshot.isVisitable?this.trackedElementsAreIdentical?void 0:{reason:"tracked_element_mismatch"}:{reason:"turbo_visit_control_is_reload"}}async prepareToRender(){await this.mergeHead()}async render(){this.willRender&&await this.replaceBody()}finishRendering(){super.finishRendering(),this.isPreview||this.focusFirstAutofocusableElement()}get currentHeadSnapshot(){return this.currentSnapshot.headSnapshot}get newHeadSnapshot(){return this.newSnapshot.headSnapshot}get newElement(){return this.newSnapshot.element}async mergeHead(){const e=this.mergeProvisionalElements(),t=this.copyNewHeadStylesheetElements();this.copyNewHeadScriptElements(),await e,await t}async replaceBody(){await this.preservingPermanentElements((async()=>{this.activateNewBody(),await this.assignNewBody()}))}get trackedElementsAreIdentical(){return this.currentHeadSnapshot.trackedElementSignature==this.newHeadSnapshot.trackedElementSignature}async copyNewHeadStylesheetElements(){const e=[];for(const t of this.newHeadStylesheetElements)e.push(L(t)),document.head.appendChild(t);await Promise.all(e)}copyNewHeadScriptElements(){for(const e of this.newHeadScriptElements)document.head.appendChild(y(e))}async mergeProvisionalElements(){const e=[...this.newHeadProvisionalElements];for(const t of this.currentHeadProvisionalElements)this.isCurrentElementInElementList(t,e)||document.head.removeChild(t);for(const t of e)document.head.appendChild(t)}isCurrentElementInElementList(e,t){for(const[n,r]of t.entries()){if("TITLE"==e.tagName){if("TITLE"!=r.tagName)continue;if(e.innerHTML==r.innerHTML)return t.splice(n,1),!0}if(r.isEqualNode(e))return t.splice(n,1),!0}return!1}removeCurrentHeadProvisionalElements(){for(const e of this.currentHeadProvisionalElements)document.head.removeChild(e)}copyNewHeadProvisionalElements(){for(const e of this.newHeadProvisionalElements)document.head.appendChild(e)}activateNewBody(){document.adoptNode(this.newElement),this.activateNewBodyScriptElements()}activateNewBodyScriptElements(){for(const e of this.newBodyScriptElements){const t=y(e);e.replaceWith(t)}}async assignNewBody(){await this.renderElement(this.currentElement,this.newElement)}get newHeadStylesheetElements(){return this.newHeadSnapshot.getStylesheetElementsNotInSnapshot(this.currentHeadSnapshot)}get newHeadScriptElements(){return this.newHeadSnapshot.getScriptElementsNotInSnapshot(this.currentHeadSnapshot)}get currentHeadProvisionalElements(){return this.currentHeadSnapshot.provisionalElements}get newHeadProvisionalElements(){return this.newHeadSnapshot.provisionalElements}get newBodyScriptElements(){return this.newElement.querySelectorAll("script")}}class ge{constructor(e){this.keys=[],this.snapshots={},this.size=e}has(e){return g(e)in this.snapshots}get(e){if(this.has(e)){const t=this.read(e);return this.touch(e),t}}put(e,t){return this.write(e,t),this.touch(e),t}clear(){this.snapshots={}}read(e){return this.snapshots[g(e)]}write(e,t){this.snapshots[g(e)]=t}touch(e){const t=g(e),n=this.keys.indexOf(t);n>-1&&this.keys.splice(n,1),this.keys.unshift(t),this.trim()}trim(){for(const e of this.keys.splice(this.size))delete this.snapshots[e]}}class be extends j{constructor(){super(...arguments),this.snapshotCache=new ge(10),this.lastRenderedLocation=new URL(location.href),this.forceReloaded=!1}renderPage(e,t=!1,n=!0,r){const o=new ve(this.snapshot,e,ve.renderElement,t,n);return o.shouldRender?null==r||r.changeHistory():this.forceReloaded=!0,this.render(o)}renderError(e,t){null==t||t.changeHistory();const n=new me(this.snapshot,e,me.renderElement,!1);return this.render(n)}clearSnapshotCache(){this.snapshotCache.clear()}async cacheSnapshot(e=this.snapshot){if(e.isCacheable){this.delegate.viewWillCacheSnapshot();const{lastRenderedLocation:t}=this;await new Promise((e=>setTimeout((()=>e()),0)));const n=e.clone();return this.snapshotCache.put(t,n),n}}getCachedSnapshotForLocation(e){return this.snapshotCache.get(e)}get snapshot(){return ee.fromElement(this.element)}}class ye{constructor(e){this.selector="a[data-turbo-preload]",this.delegate=e}get snapshotCache(){return this.delegate.navigator.view.snapshotCache}start(){if("loading"===document.readyState)return document.addEventListener("DOMContentLoaded",(()=>{this.preloadOnLoadLinksForView(document.body)}));this.preloadOnLoadLinksForView(document.body)}preloadOnLoadLinksForView(e){for(const t of e.querySelectorAll(this.selector))this.preloadURL(t)}async preloadURL(e){const t=new URL(e.href);if(!this.snapshotCache.has(t))try{const e=await fetch(t.toString(),{headers:{"VND.PREFETCH":"true",Accept:"text/html"}}),n=await e.text(),r=ee.fromHTMLString(n);this.snapshotCache.put(t,r)}catch(e){}}}function we(e){Object.defineProperties(e,Se)}const Se={absoluteURL:{get(){return this.toString()}}},ke={after(){this.targetElements.forEach((e=>{var t;return null===(t=e.parentElement)||void 0===t?void 0:t.insertBefore(this.templateContent,e.nextSibling)}))},append(){this.removeDuplicateTargetChildren(),this.targetElements.forEach((e=>e.append(this.templateContent)))},before(){this.targetElements.forEach((e=>{var t;return null===(t=e.parentElement)||void 0===t?void 0:t.insertBefore(this.templateContent,e)}))},prepend(){this.removeDuplicateTargetChildren(),this.targetElements.forEach((e=>e.prepend(this.templateContent)))},remove(){this.targetElements.forEach((e=>e.remove()))},replace(){this.targetElements.forEach((e=>e.replaceWith(this.templateContent)))},update(){this.targetElements.forEach((e=>{e.innerHTML="",e.append(this.templateContent)}))}},xe=new class{constructor(){this.navigator=new ue(this),this.history=new ce(this),this.preloader=new ye(this),this.view=new be(this,document.documentElement),this.adapter=new se(this),this.pageObserver=new de(this),this.cacheObserver=new ae,this.linkClickObserver=new $(this,window),this.formSubmitObserver=new V(this,document),this.scrollObserver=new he(this),this.streamObserver=new fe(this),this.formLinkClickObserver=new Z(this,document.documentElement),this.frameRedirector=new le(this,document.documentElement),this.streamMessageRenderer=new pe,this.drive=!0,this.enabled=!0,this.progressBarDelay=500,this.started=!1,this.formMode="on"}start(){this.started||(this.pageObserver.start(),this.cacheObserver.start(),this.formLinkClickObserver.start(),this.linkClickObserver.start(),this.formSubmitObserver.start(),this.scrollObserver.start(),this.streamObserver.start(),this.frameRedirector.start(),this.history.start(),this.preloader.start(),this.started=!0,this.enabled=!0)}disable(){this.enabled=!1}stop(){this.started&&(this.pageObserver.stop(),this.cacheObserver.stop(),this.formLinkClickObserver.stop(),this.linkClickObserver.stop(),this.formSubmitObserver.stop(),this.scrollObserver.stop(),this.streamObserver.stop(),this.frameRedirector.stop(),this.history.stop(),this.started=!1)}registerAdapter(e){this.adapter=e}visit(e,t={}){const n=t.frame?document.getElementById(t.frame):null;n instanceof d?(n.src=e.toString(),n.loaded):this.navigator.proposeVisit(h(e),t)}connectStreamSource(e){this.streamObserver.connectStreamSource(e)}disconnectStreamSource(e){this.streamObserver.disconnectStreamSource(e)}renderStreamMessage(e){this.streamMessageRenderer.render(P.wrap(e))}clearCache(){this.view.clearSnapshotCache()}setProgressBarDelay(e){this.progressBarDelay=e}setFormMode(e){this.formMode=e}get location(){return this.history.location}get restorationIdentifier(){return this.history.restorationIdentifier}historyPoppedToLocationWithRestorationIdentifier(e,t){this.enabled?this.navigator.startVisit(e,t,{action:"restore",historyChanged:!0}):this.adapter.pageInvalidated({reason:"turbo_disabled"})}scrollPositionChanged(e){this.history.updateRestorationData({scrollPosition:e})}willSubmitFormLinkToLocation(e,t){return this.elementIsNavigatable(e)&&m(t,this.snapshot.rootLocation)}submittedFormLinkToLocation(){}willFollowLinkToLocation(e,t,n){return this.elementIsNavigatable(e)&&m(t,this.snapshot.rootLocation)&&this.applicationAllowsFollowingLinkToLocation(e,t,n)}followedLinkToLocation(e,t){const n=this.getActionForLink(e),r=e.hasAttribute("data-turbo-stream");this.visit(t.href,{action:n,acceptsStreamResponse:r})}allowsVisitingLocationWithAction(e,t){return this.locationWithActionIsSamePage(e,t)||this.applicationAllowsVisitingLocation(e)}visitProposedToLocation(e,t){we(e),this.adapter.visitProposedToLocation(e,t)}visitStarted(e){e.acceptsStreamResponse||C(document.documentElement),we(e.location),e.silent||this.notifyApplicationAfterVisitingLocation(e.location,e.action)}visitCompleted(e){T(document.documentElement),this.notifyApplicationAfterPageLoad(e.getTimingMetrics())}locationWithActionIsSamePage(e,t){return this.navigator.locationWithActionIsSamePage(e,t)}visitScrolledToSamePageLocation(e,t){this.notifyApplicationAfterVisitingSamePageLocation(e,t)}willSubmitForm(e,t){const n=f(e,t);return this.submissionIsNavigatable(e,t)&&m(h(n),this.snapshot.rootLocation)}formSubmitted(e,t){this.navigator.submitForm(e,t)}pageBecameInteractive(){this.view.lastRenderedLocation=this.location,this.notifyApplicationAfterPageLoad()}pageLoaded(){this.history.assumeControlOfScrollRestoration()}pageWillUnload(){this.history.relinquishControlOfScrollRestoration()}receivedMessageFromStream(e){this.renderStreamMessage(e)}viewWillCacheSnapshot(){var e;(null===(e=this.navigator.currentVisit)||void 0===e?void 0:e.silent)||this.notifyApplicationBeforeCachingSnapshot()}allowsImmediateRender({element:e},t){const n=this.notifyApplicationBeforeRender(e,t),{defaultPrevented:r,detail:{render:o}}=n;return this.view.renderer&&o&&(this.view.renderer.renderElement=o),!r}viewRenderedSnapshot(e,t){this.view.lastRenderedLocation=this.history.location,this.notifyApplicationAfterRender()}preloadOnLoadLinksForView(e){this.preloader.preloadOnLoadLinksForView(e)}viewInvalidated(e){this.adapter.pageInvalidated(e)}frameLoaded(e){this.notifyApplicationAfterFrameLoad(e)}frameRendered(e,t){this.notifyApplicationAfterFrameRender(e,t)}applicationAllowsFollowingLinkToLocation(e,t,n){return!this.notifyApplicationAfterClickingLinkToLocation(e,t,n).defaultPrevented}applicationAllowsVisitingLocation(e){return!this.notifyApplicationBeforeVisitingLocation(e).defaultPrevented}notifyApplicationAfterClickingLinkToLocation(e,t,n){return w("turbo:click",{target:e,detail:{url:t.href,originalEvent:n},cancelable:!0})}notifyApplicationBeforeVisitingLocation(e){return w("turbo:before-visit",{detail:{url:e.href},cancelable:!0})}notifyApplicationAfterVisitingLocation(e,t){return w("turbo:visit",{detail:{url:e.href,action:t}})}notifyApplicationBeforeCachingSnapshot(){return w("turbo:before-cache")}notifyApplicationBeforeRender(e,t){return w("turbo:before-render",{detail:Object.assign({newBody:e},t),cancelable:!0})}notifyApplicationAfterRender(){return w("turbo:render")}notifyApplicationAfterPageLoad(e={}){return w("turbo:load",{detail:{url:this.location.href,timing:e}})}notifyApplicationAfterVisitingSamePageLocation(e,t){dispatchEvent(new HashChangeEvent("hashchange",{oldURL:e.toString(),newURL:t.toString()}))}notifyApplicationAfterFrameLoad(e){return w("turbo:frame-load",{target:e})}notifyApplicationAfterFrameRender(e,t){return w("turbo:frame-render",{detail:{fetchResponse:e},target:t,cancelable:!0})}submissionIsNavigatable(e,t){if("off"==this.formMode)return!1;{const n=!t||this.elementIsNavigatable(t);return"optin"==this.formMode?n&&null!=e.closest('[data-turbo="true"]'):n&&this.elementIsNavigatable(e)}}elementIsNavigatable(e){const t=M(e,"[data-turbo]"),n=M(e,"turbo-frame");return this.drive||n?!t||"false"!=t.getAttribute("data-turbo"):!!t&&"true"==t.getAttribute("data-turbo")}getActionForLink(e){return R(e)||"advance"}get snapshot(){return this.view.snapshot}},Ee=new class{constructor(e){this.session=e}clear(){this.session.clearCache()}resetCacheControl(){this.setCacheControl("")}exemptPageFromCache(){this.setCacheControl("no-cache")}exemptPageFromPreview(){this.setCacheControl("no-preview")}setCacheControl(e){!function(e,t){let n=D(e);n||(n=document.createElement("meta"),n.setAttribute("name",e),document.head.appendChild(n)),n.setAttribute("content",t)}("turbo-cache-control",e)}}(xe),{navigator:_e}=xe;function Ce(){xe.start()}function Te(e,t){xe.visit(e,t)}function Le(e){xe.connectStreamSource(e)}function Ae(e){xe.disconnectStreamSource(e)}var Re=Object.freeze({__proto__:null,navigator:_e,session:xe,cache:Ee,PageRenderer:ve,PageSnapshot:ee,FrameRenderer:Y,start:Ce,registerAdapter:function(e){xe.registerAdapter(e)},visit:Te,connectStreamSource:Le,disconnectStreamSource:Ae,renderStreamMessage:function(e){xe.renderStreamMessage(e)},clearCache:function(){console.warn("Please replace `Turbo.clearCache()` with `Turbo.cache.clear()`. The top-level function is deprecated and will be removed in a future version of Turbo.`"),xe.clearCache()},setProgressBarDelay:function(e){xe.setProgressBarDelay(e)},setConfirmMethod:function(e){H.confirmMethod=e},setFormMode:function(e){xe.setFormMode(e)},StreamActions:ke});class De extends Error{}function Oe(e){if(null!=e){const t=document.getElementById(e);if(t instanceof d)return t}}function Me(e,t){if(e){const r=e.getAttribute("src");if(null!=r&&null!=t&&(n=t,h(r).href==h(n).href))throw new Error(`Matching element has a source URL which references itself`);if(e.ownerDocument!==document&&(e=document.importNode(e,!0)),e instanceof d)return e.connectedCallback(),e.disconnectedCallback(),e}var n}class Ie extends HTMLElement{static async renderElement(e){await e.performAction()}async connectedCallback(){try{await this.render()}catch(e){console.error(e)}finally{this.disconnect()}}async render(){var e;return null!==(e=this.renderPromise)&&void 0!==e?e:this.renderPromise=(async()=>{const e=this.beforeRenderEvent;this.dispatchEvent(e)&&(await S(),await e.detail.render(this))})()}disconnect(){try{this.remove()}catch(e){}}removeDuplicateTargetChildren(){this.duplicateChildren.forEach((e=>e.remove()))}get duplicateChildren(){var e;const t=this.targetElements.flatMap((e=>[...e.children])).filter((e=>!!e.id)),n=[...(null===(e=this.templateContent)||void 0===e?void 0:e.children)||[]].filter((e=>!!e.id)).map((e=>e.id));return t.filter((e=>n.includes(e.id)))}get performAction(){if(this.action){const e=ke[this.action];if(e)return e;this.raise("unknown action")}this.raise("action attribute is missing")}get targetElements(){return this.target?this.targetElementsById:this.targets?this.targetElementsByQuery:void this.raise("target or targets attribute is missing")}get templateContent(){return this.templateElement.content.cloneNode(!0)}get templateElement(){if(null===this.firstElementChild){const e=this.ownerDocument.createElement("template");return this.appendChild(e),e}if(this.firstElementChild instanceof HTMLTemplateElement)return this.firstElementChild;this.raise("first child element must be a