From d71f435feadb85092502a7218a3a93ac6ec24fa6 Mon Sep 17 00:00:00 2001 From: mlong93 <35275280+mlong93@users.noreply.github.com> Date: Fri, 6 Dec 2024 11:50:15 -0800 Subject: [PATCH 01/39] feat: message orm migration (#2144) Co-authored-by: Mindy Long Co-authored-by: Sarah Wooders Co-authored-by: Matt Zhou --- .github/workflows/check_for_new_prints.yml | 5 + .github/workflows/tests.yml | 3 +- .../95badb46fdf9_migrate_message_to_orm.py | 63 ++++ ...505cc7eca9_create_a_baseline_migrations.py | 2 +- letta/agent.py | 91 +++-- letta/agent_store/db.py | 78 +---- letta/agent_store/lancedb.py | 177 ---------- letta/agent_store/storage.py | 5 - letta/cli/cli.py | 1 - letta/client/client.py | 10 +- letta/constants.py | 1 + letta/functions/function_sets/base.py | 38 ++- letta/main.py | 4 +- letta/memory.py | 86 +---- letta/metadata.py | 35 -- letta/o1_agent.py | 9 +- letta/offline_memory_agent.py | 6 + letta/orm/__init__.py | 2 + letta/orm/file.py | 2 +- letta/orm/message.py | 66 ++++ letta/orm/mixins.py | 16 + letta/orm/organization.py | 1 + letta/orm/sqlalchemy_base.py | 144 ++++++-- letta/persistence_manager.py | 149 -------- letta/schemas/letta_base.py | 13 +- letta/schemas/message.py | 8 +- letta/server/rest_api/routers/v1/agents.py | 2 +- letta/server/server.py | 102 +++--- letta/services/block_manager.py | 2 +- letta/services/message_manager.py | 182 ++++++++++ letta/services/organization_manager.py | 15 +- letta/services/source_manager.py | 2 +- letta/services/tool_manager.py | 2 +- letta/services/user_manager.py | 2 +- tests/conftest.py | 19 ++ ...integration_test_tool_execution_sandbox.py | 15 - tests/test_agent_tool_graph.py | 16 - tests/test_client.py | 18 +- tests/test_client_legacy.py | 65 ++-- tests/test_local_client.py | 92 ++--- tests/test_managers.py | 195 ++++++++++- tests/test_offline_memory_agent.py | 54 +-- tests/test_server.py | 117 ++----- tests/test_storage.py | 318 ------------------ tests/test_summarize.py | 18 - 45 files changed, 985 insertions(+), 1266 deletions(-) create mode 100644 alembic/versions/95badb46fdf9_migrate_message_to_orm.py delete mode 100644 letta/agent_store/lancedb.py create mode 100644 letta/orm/message.py delete mode 100644 letta/persistence_manager.py create mode 100644 letta/services/message_manager.py delete mode 100644 tests/test_storage.py diff --git a/.github/workflows/check_for_new_prints.yml b/.github/workflows/check_for_new_prints.yml index 75ef2e27b5..470f5a4faf 100644 --- a/.github/workflows/check_for_new_prints.yml +++ b/.github/workflows/check_for_new_prints.yml @@ -31,6 +31,11 @@ jobs: # Check each changed Python file while IFS= read -r file; do + if [ "$file" == "letta/main.py" ]; then + echo "Skipping $file for print statement checks." + continue + fi + if [ -f "$file" ]; then echo "Checking $file for new print statements..." diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index eade4661a7..1a027a56b4 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -31,6 +31,7 @@ jobs: - "test_utils.py" - "test_tool_schema_parsing.py" - "test_v1_routes.py" + - "test_offline_memory_agent.py" services: qdrant: image: qdrant/qdrant @@ -133,4 +134,4 @@ jobs: LETTA_SERVER_PASS: test_server_token PYTHONPATH: ${{ github.workspace }}:${{ env.PYTHONPATH }} run: | - poetry run pytest -s -vv -k "not test_v1_routes.py and not test_model_letta_perfomance.py and not test_utils.py and not test_client.py and not integration_test_tool_execution_sandbox.py and not integration_test_summarizer.py and not test_agent_tool_graph.py and not test_tool_rule_solver.py and not test_local_client.py and not test_o1_agent.py and not test_cli.py and not test_concurrent_connections.py and not test_quickstart and not test_model_letta_performance and not test_storage and not test_server and not test_openai_client and not test_providers and not test_client_legacy.py" tests + poetry run pytest -s -vv -k "not test_offline_memory_agent.py and not test_v1_routes.py and not test_model_letta_perfomance.py and not test_utils.py and not test_client.py and not integration_test_tool_execution_sandbox.py and not integration_test_summarizer.py and not test_agent_tool_graph.py and not test_tool_rule_solver.py and not test_local_client.py and not test_o1_agent.py and not test_cli.py and not test_concurrent_connections.py and not test_quickstart and not test_model_letta_performance and not test_storage and not test_server and not test_openai_client and not test_providers and not test_client_legacy.py" tests diff --git a/alembic/versions/95badb46fdf9_migrate_message_to_orm.py b/alembic/versions/95badb46fdf9_migrate_message_to_orm.py new file mode 100644 index 0000000000..73254e39ea --- /dev/null +++ b/alembic/versions/95badb46fdf9_migrate_message_to_orm.py @@ -0,0 +1,63 @@ +"""Migrate message to orm + +Revision ID: 95badb46fdf9 +Revises: 3c683a662c82 +Create Date: 2024-12-05 14:02:04.163150 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "95badb46fdf9" +down_revision: Union[str, None] = "08b2f8225812" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column("messages", sa.Column("updated_at", sa.DateTime(timezone=True), server_default=sa.text("now()"), nullable=True)) + op.add_column("messages", sa.Column("is_deleted", sa.Boolean(), server_default=sa.text("FALSE"), nullable=False)) + op.add_column("messages", sa.Column("_created_by_id", sa.String(), nullable=True)) + op.add_column("messages", sa.Column("_last_updated_by_id", sa.String(), nullable=True)) + op.add_column("messages", sa.Column("organization_id", sa.String(), nullable=True)) + # Populate `organization_id` based on `user_id` + # Use a raw SQL query to update the organization_id + op.execute( + """ + UPDATE messages + SET organization_id = users.organization_id + FROM users + WHERE messages.user_id = users.id + """ + ) + op.alter_column("messages", "organization_id", nullable=False) + op.alter_column("messages", "tool_calls", existing_type=postgresql.JSON(astext_type=sa.Text()), nullable=False) + op.alter_column("messages", "created_at", existing_type=postgresql.TIMESTAMP(timezone=True), nullable=False) + op.drop_index("message_idx_user", table_name="messages") + op.create_foreign_key(None, "messages", "agents", ["agent_id"], ["id"]) + op.create_foreign_key(None, "messages", "organizations", ["organization_id"], ["id"]) + op.drop_column("messages", "user_id") + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column("messages", sa.Column("user_id", sa.VARCHAR(), autoincrement=False, nullable=False)) + op.drop_constraint(None, "messages", type_="foreignkey") + op.drop_constraint(None, "messages", type_="foreignkey") + op.create_index("message_idx_user", "messages", ["user_id", "agent_id"], unique=False) + op.alter_column("messages", "created_at", existing_type=postgresql.TIMESTAMP(timezone=True), nullable=True) + op.alter_column("messages", "tool_calls", existing_type=postgresql.JSON(astext_type=sa.Text()), nullable=True) + op.drop_column("messages", "organization_id") + op.drop_column("messages", "_last_updated_by_id") + op.drop_column("messages", "_created_by_id") + op.drop_column("messages", "is_deleted") + op.drop_column("messages", "updated_at") + # ### end Alembic commands ### diff --git a/alembic/versions/9a505cc7eca9_create_a_baseline_migrations.py b/alembic/versions/9a505cc7eca9_create_a_baseline_migrations.py index 765e6d7382..479ca223e0 100644 --- a/alembic/versions/9a505cc7eca9_create_a_baseline_migrations.py +++ b/alembic/versions/9a505cc7eca9_create_a_baseline_migrations.py @@ -97,7 +97,7 @@ def upgrade() -> None: sa.Column("text", sa.String(), nullable=True), sa.Column("model", sa.String(), nullable=True), sa.Column("name", sa.String(), nullable=True), - sa.Column("tool_calls", letta.metadata.ToolCallColumn(), nullable=True), + sa.Column("tool_calls", letta.orm.message.ToolCallColumn(), nullable=True), sa.Column("tool_call_id", sa.String(), nullable=True), sa.Column("created_at", sa.DateTime(timezone=True), nullable=True), sa.PrimaryKeyConstraint("id"), diff --git a/letta/agent.py b/letta/agent.py index 6aea282964..3e619ea5bd 100644 --- a/letta/agent.py +++ b/letta/agent.py @@ -19,6 +19,7 @@ MESSAGE_SUMMARY_TRUNC_KEEP_N_LAST, MESSAGE_SUMMARY_TRUNC_TOKEN_FRAC, MESSAGE_SUMMARY_WARNING_FRAC, + O1_BASE_TOOLS, REQ_HEARTBEAT_MESSAGE, ) from letta.errors import LLMError @@ -27,10 +28,9 @@ from letta.llm_api.helpers import is_context_overflow_error from letta.llm_api.llm_api_tools import create from letta.local_llm.utils import num_tokens_from_functions, num_tokens_from_messages -from letta.memory import ArchivalMemory, RecallMemory, summarize_messages +from letta.memory import ArchivalMemory, EmbeddingArchivalMemory, summarize_messages from letta.metadata import MetadataStore from letta.orm import User -from letta.persistence_manager import LocalStateManager from letta.schemas.agent import AgentState, AgentStepResponse from letta.schemas.block import BlockUpdate from letta.schemas.embedding_config import EmbeddingConfig @@ -49,7 +49,9 @@ from letta.schemas.tool import Tool from letta.schemas.tool_rule import TerminalToolRule from letta.schemas.usage import LettaUsageStatistics +from letta.schemas.user import User as PydanticUser from letta.services.block_manager import BlockManager +from letta.services.message_manager import MessageManager from letta.services.source_manager import SourceManager from letta.services.tool_execution_sandbox import ToolExecutionSandbox from letta.services.user_manager import UserManager @@ -80,9 +82,11 @@ def compile_memory_metadata_block( + actor: PydanticUser, + agent_id: str, memory_edit_timestamp: datetime.datetime, archival_memory: Optional[ArchivalMemory] = None, - recall_memory: Optional[RecallMemory] = None, + message_manager: Optional[MessageManager] = None, ) -> str: # Put the timestamp in the local timezone (mimicking get_local_time()) timestamp_str = memory_edit_timestamp.astimezone().strftime("%Y-%m-%d %I:%M:%S %p %Z%z").strip() @@ -91,7 +95,7 @@ def compile_memory_metadata_block( memory_metadata_block = "\n".join( [ f"### Memory [last modified: {timestamp_str}]", - f"{recall_memory.count() if recall_memory else 0} previous messages between you and the user are stored in recall memory (use functions to access them)", + f"{message_manager.size(actor=actor, agent_id=agent_id) if message_manager else 0} previous messages between you and the user are stored in recall memory (use functions to access them)", f"{archival_memory.count() if archival_memory else 0} total memories you created are stored in archival memory (use functions to access them)", "\nCore memory shown below (limited in size, additional information stored in archival / recall memory):", ] @@ -101,10 +105,12 @@ def compile_memory_metadata_block( def compile_system_message( system_prompt: str, + agent_id: str, in_context_memory: Memory, in_context_memory_last_edit: datetime.datetime, # TODO move this inside of BaseMemory? + actor: PydanticUser, archival_memory: Optional[ArchivalMemory] = None, - recall_memory: Optional[RecallMemory] = None, + message_manager: Optional[MessageManager] = None, user_defined_variables: Optional[dict] = None, append_icm_if_missing: bool = True, template_format: Literal["f-string", "mustache", "jinja2"] = "f-string", @@ -129,9 +135,11 @@ def compile_system_message( else: # TODO should this all put into the memory.__repr__ function? memory_metadata_string = compile_memory_metadata_block( + actor=actor, + agent_id=agent_id, memory_edit_timestamp=in_context_memory_last_edit, archival_memory=archival_memory, - recall_memory=recall_memory, + message_manager=message_manager, ) full_memory_string = memory_metadata_string + "\n" + in_context_memory.compile() @@ -164,9 +172,11 @@ def compile_system_message( def initialize_message_sequence( model: str, system: str, + agent_id: str, memory: Memory, + actor: PydanticUser, archival_memory: Optional[ArchivalMemory] = None, - recall_memory: Optional[RecallMemory] = None, + message_manager: Optional[MessageManager] = None, memory_edit_timestamp: Optional[datetime.datetime] = None, include_initial_boot_message: bool = True, ) -> List[dict]: @@ -177,11 +187,13 @@ def initialize_message_sequence( # system, memory, memory_edit_timestamp, archival_memory=archival_memory, recall_memory=recall_memory # ) full_system_message = compile_system_message( + agent_id=agent_id, system_prompt=system, in_context_memory=memory, in_context_memory_last_edit=memory_edit_timestamp, + actor=actor, archival_memory=archival_memory, - recall_memory=recall_memory, + message_manager=message_manager, user_defined_variables=None, append_icm_if_missing=True, ) @@ -282,7 +294,8 @@ def __init__( self.interface = interface # Create the persistence manager object based on the AgentState info - self.persistence_manager = LocalStateManager(agent_state=self.agent_state) + self.archival_memory = EmbeddingArchivalMemory(agent_state) + self.message_manager = MessageManager() # State needed for heartbeat pausing self.pause_heartbeats_start = None @@ -309,9 +322,11 @@ def __init__( init_messages = initialize_message_sequence( model=self.model, system=self.agent_state.system, + agent_id=self.agent_state.id, memory=self.agent_state.memory, + actor=self.user, archival_memory=None, - recall_memory=None, + message_manager=None, memory_edit_timestamp=get_utc_time(), include_initial_boot_message=True, ) @@ -333,8 +348,10 @@ def __init__( model=self.model, system=self.agent_state.system, memory=self.agent_state.memory, + agent_id=self.agent_state.id, + actor=self.user, archival_memory=None, - recall_memory=None, + message_manager=None, memory_edit_timestamp=get_utc_time(), include_initial_boot_message=True, ) @@ -356,7 +373,6 @@ def __init__( # Put the messages inside the message buffer self.messages_total = 0 - # self._append_to_messages(added_messages=[cast(Message, msg) for msg in init_messages_objs if msg is not None]) self._append_to_messages(added_messages=init_messages_objs) self._validate_message_buffer_is_utc() @@ -413,7 +429,10 @@ def execute_tool_and_persist_state(self, function_name, function_to_call, functi # TODO: need to have an AgentState object that actually has full access to the block data # this is because the sandbox tools need to be able to access block.value to edit this data try: - if function_name in BASE_TOOLS: + # TODO: This is NO BUENO + # TODO: Matching purely by names is extremely problematic, users can create tools with these names and run them in the agent loop + # TODO: We will have probably have to match the function strings exactly for safety + if function_name in BASE_TOOLS or function_name in O1_BASE_TOOLS: # base tools are allowed to access the `Agent` object and run on the database function_args["self"] = self # need to attach self to arg since it's dynamically linked function_response = function_to_call(**function_args) @@ -474,7 +493,7 @@ def _load_messages_from_recall(self, message_ids: List[str]) -> List[Message]: # Pull the message objects from the database message_objs = [] for msg_id in message_ids: - msg_obj = self.persistence_manager.recall_memory.storage.get(msg_id) + msg_obj = self.message_manager.get_message_by_id(msg_id, actor=self.user) if msg_obj: if isinstance(msg_obj, Message): message_objs.append(msg_obj) @@ -522,16 +541,13 @@ def refresh_message_buffer(self): def _trim_messages(self, num): """Trim messages from the front, not including the system message""" - self.persistence_manager.trim_messages(num) - new_messages = [self._messages[0]] + self._messages[num:] self._messages = new_messages def _prepend_to_messages(self, added_messages: List[Message]): """Wrapper around self.messages.prepend to allow additional calls to a state/persistence manager""" assert all([isinstance(msg, Message) for msg in added_messages]) - - self.persistence_manager.prepend_to_messages(added_messages) + self.message_manager.create_many_messages(added_messages, actor=self.user) new_messages = [self._messages[0]] + added_messages + self._messages[1:] # prepend (no system) self._messages = new_messages @@ -540,8 +556,7 @@ def _prepend_to_messages(self, added_messages: List[Message]): def _append_to_messages(self, added_messages: List[Message]): """Wrapper around self.messages.append to allow additional calls to a state/persistence manager""" assert all([isinstance(msg, Message) for msg in added_messages]) - - self.persistence_manager.append_to_messages(added_messages) + self.message_manager.create_many_messages(added_messages, actor=self.user) # strip extra metadata if it exists # for msg in added_messages: @@ -885,7 +900,6 @@ def step( messages=next_input_message, **kwargs, ) - step_response.messages heartbeat_request = step_response.heartbeat_request function_failed = step_response.function_failed token_warning = step_response.in_context_memory_warning @@ -1247,7 +1261,7 @@ def _swap_system_message_in_buffer(self, new_system_message: str): assert new_system_message_obj.role == "system", new_system_message_obj assert self._messages[0].role == "system", self._messages - self.persistence_manager.swap_system_message(new_system_message_obj) + self.message_manager.create_message(new_system_message_obj, actor=self.user) new_messages = [new_system_message_obj] + self._messages[1:] # swap index 0 (system) self._messages = new_messages @@ -1280,11 +1294,13 @@ def rebuild_system_prompt(self, force=False, update_timestamp=True): # update memory (TODO: potentially update recall/archival stats seperately) new_system_message_str = compile_system_message( + agent_id=self.agent_state.id, system_prompt=self.agent_state.system, in_context_memory=self.agent_state.memory, in_context_memory_last_edit=memory_edit_timestamp, - archival_memory=self.persistence_manager.archival_memory, - recall_memory=self.persistence_manager.recall_memory, + actor=self.user, + archival_memory=self.archival_memory, + message_manager=self.message_manager, user_defined_variables=None, append_icm_if_missing=True, ) @@ -1370,20 +1386,20 @@ def attach_source(self, source_id: str, source_connector: StorageConnector, ms: # passage.id = create_uuid_from_string(f"{source_id}_{str(passage.agent_id)}_{passage.text}") # insert into agent archival memory - self.persistence_manager.archival_memory.storage.insert_many(passages) + self.archival_memory.storage.insert_many(passages) all_passages += passages assert size == len(all_passages), f"Expected {size} passages, but only got {len(all_passages)}" # save destination storage - self.persistence_manager.archival_memory.storage.save() + self.archival_memory.storage.save() # attach to agent source = SourceManager().get_source_by_id(source_id=source_id, actor=user) assert source is not None, f"Source {source_id} not found in metadata store" ms.attach_source(agent_id=self.agent_state.id, source_id=source_id, user_id=self.agent_state.user_id) - total_agent_passages = self.persistence_manager.archival_memory.storage.size() + total_agent_passages = self.archival_memory.storage.size() printd( f"Attached data source {source.name} to agent {self.agent_state.name}, consisting of {len(all_passages)}. Agent now has {total_agent_passages} embeddings in archival memory.", @@ -1392,7 +1408,7 @@ def attach_source(self, source_id: str, source_connector: StorageConnector, ms: def update_message(self, request: UpdateMessage) -> Message: """Update the details of a message associated with an agent""" - message = self.persistence_manager.recall_memory.storage.get(id=request.id) + message = self.message_manager.get_message_by_id(message_id=request.id, actor=self.user) if message is None: raise ValueError(f"Message with id {request.id} not found") assert isinstance(message, Message), f"Message is not a Message object: {type(message)}" @@ -1413,10 +1429,10 @@ def update_message(self, request: UpdateMessage) -> Message: message.tool_call_id = request.tool_call_id # Save the updated message - self.persistence_manager.recall_memory.storage.update(record=message) + self.message_manager.update_message_by_id(message_id=message.id, message=message, actor=self.user) # Return the updated message - updated_message = self.persistence_manager.recall_memory.storage.get(id=message.id) + updated_message = self.message_manager.get_message_by_id(message_id=message.id, actor=self.user) if updated_message is None: raise ValueError(f"Error persisting message - message with id {request.id} not found") return updated_message @@ -1496,7 +1512,7 @@ def pop_message(self, count: int = 1) -> List[Message]: deleted_message = self._messages.pop() # then also remove it from recall storage try: - self.persistence_manager.recall_memory.storage.delete(filters={"id": deleted_message.id}) + self.message_manager.delete_message_by_id(deleted_message.id, actor=self.user) popped_messages.append(deleted_message) except Exception as e: warnings.warn(f"Error deleting message {deleted_message.id} from recall memory: {e}") @@ -1522,7 +1538,6 @@ def pop_until_user(self) -> List[Message]: def retry_message(self) -> List[Message]: """Retry / regenerate the last message""" - self.pop_until_user() user_message = self.pop_message(count=1)[0] assert user_message.text is not None, "User message text is None" @@ -1569,12 +1584,14 @@ def get_context_window(self) -> ContextWindowOverview: num_tokens_from_messages(messages=messages_openai_format[1:], model=self.model) if len(messages_openai_format) > 1 else 0 ) - num_archival_memory = self.persistence_manager.archival_memory.storage.size() - num_recall_memory = self.persistence_manager.recall_memory.storage.size() + num_archival_memory = self.archival_memory.storage.size() + message_manager_size = self.message_manager.size(actor=self.user, agent_id=self.agent_state.id) external_memory_summary = compile_memory_metadata_block( + actor=self.user, + agent_id=self.agent_state.id, memory_edit_timestamp=get_utc_time(), # dummy timestamp - archival_memory=self.persistence_manager.archival_memory, - recall_memory=self.persistence_manager.recall_memory, + archival_memory=self.archival_memory, + message_manager=self.message_manager, ) num_tokens_external_memory_summary = count_tokens(external_memory_summary) @@ -1600,7 +1617,7 @@ def get_context_window(self) -> ContextWindowOverview: # context window breakdown (in messages) num_messages=len(self._messages), num_archival_memory=num_archival_memory, - num_recall_memory=num_recall_memory, + num_recall_memory=message_manager_size, num_tokens_external_memory_summary=num_tokens_external_memory_summary, # top-level information context_window_size_max=self.agent_state.llm_config.context_window, diff --git a/letta/agent_store/db.py b/letta/agent_store/db.py index 5b676dc072..56d35edc74 100644 --- a/letta/agent_store/db.py +++ b/letta/agent_store/db.py @@ -27,13 +27,11 @@ from letta.agent_store.storage import StorageConnector, TableType from letta.config import LettaConfig from letta.constants import MAX_EMBEDDING_DIM -from letta.metadata import EmbeddingConfigColumn, ToolCallColumn +from letta.metadata import EmbeddingConfigColumn from letta.orm.base import Base from letta.orm.file import FileMetadata as FileMetadataModel # from letta.schemas.message import Message, Passage, Record, RecordType, ToolCall -from letta.schemas.message import Message -from letta.schemas.openai.chat_completions import ToolCall from letta.schemas.passage import Passage from letta.settings import settings @@ -69,69 +67,6 @@ def process_result_value(self, value, dialect): return np.frombuffer(value, dtype=np.float32) -class MessageModel(Base): - """Defines data model for storing Message objects""" - - __tablename__ = "messages" - __table_args__ = {"extend_existing": True} - - # Assuming message_id is the primary key - id = Column(String, primary_key=True) - user_id = Column(String, nullable=False) - agent_id = Column(String, nullable=False) - - # openai info - role = Column(String, nullable=False) - text = Column(String) # optional: can be null if function call - model = Column(String) # optional: can be null if LLM backend doesn't require specifying - name = Column(String) # optional: multi-agent only - - # tool call request info - # if role == "assistant", this MAY be specified - # if role != "assistant", this must be null - # TODO align with OpenAI spec of multiple tool calls - # tool_calls = Column(ToolCallColumn) - tool_calls = Column(ToolCallColumn) - - # tool call response info - # if role == "tool", then this must be specified - # if role != "tool", this must be null - tool_call_id = Column(String) - - # Add a datetime column, with default value as the current time - created_at = Column(DateTime(timezone=True)) - Index("message_idx_user", user_id, agent_id), - - def __repr__(self): - return f"" - - def to_record(self): - # calls = ( - # [ToolCall(id=tool_call["id"], function=ToolCallFunction(**tool_call["function"])) for tool_call in self.tool_calls] - # if self.tool_calls - # else None - # ) - # if calls: - # assert isinstance(calls[0], ToolCall) - if self.tool_calls and len(self.tool_calls) > 0: - assert isinstance(self.tool_calls[0], ToolCall), type(self.tool_calls[0]) - for tool in self.tool_calls: - assert isinstance(tool, ToolCall), type(tool) - return Message( - user_id=self.user_id, - agent_id=self.agent_id, - role=self.role, - name=self.name, - text=self.text, - model=self.model, - # tool_calls=[ToolCall(id=tool_call["id"], function=ToolCallFunction(**tool_call["function"])) for tool_call in self.tool_calls] if self.tool_calls else None, - tool_calls=self.tool_calls, - tool_call_id=self.tool_call_id, - created_at=self.created_at, - id=self.id, - ) - - class PassageModel(Base): """Defines data model for storing Passages (consisting of text, embedding)""" @@ -367,11 +302,6 @@ def __init__(self, table_type: str, config: LettaConfig, user_id, agent_id=None) self.db_model = PassageModel if self.config.archival_storage_uri is None: raise ValueError(f"Must specify archival_storage_uri in config {self.config.config_path}") - elif table_type == TableType.RECALL_MEMORY: - self.uri = self.config.recall_storage_uri - self.db_model = MessageModel - if self.config.recall_storage_uri is None: - raise ValueError(f"Must specify recall_storage_uri in config {self.config.config_path}") elif table_type == TableType.FILES: self.uri = self.config.metadata_storage_uri self.db_model = FileMetadataModel @@ -490,12 +420,6 @@ def __init__(self, table_type: str, config: LettaConfig, user_id, agent_id=None) # get storage URI if table_type == TableType.ARCHIVAL_MEMORY or table_type == TableType.PASSAGES: raise ValueError(f"Table type {table_type} not implemented") - elif table_type == TableType.RECALL_MEMORY: - # TODO: eventually implement URI option - self.path = self.config.recall_storage_path - if self.path is None: - raise ValueError(f"Must specify recall_storage_path in config.") - self.db_model = MessageModel elif table_type == TableType.FILES: self.path = self.config.metadata_storage_path if self.path is None: diff --git a/letta/agent_store/lancedb.py b/letta/agent_store/lancedb.py deleted file mode 100644 index b4a56b57ea..0000000000 --- a/letta/agent_store/lancedb.py +++ /dev/null @@ -1,177 +0,0 @@ -# type: ignore - -import uuid -from datetime import datetime -from typing import Dict, Iterator, List, Optional - -from lancedb.pydantic import LanceModel, Vector - -from letta.agent_store.storage import StorageConnector, TableType -from letta.config import AgentConfig, LettaConfig -from letta.schemas.message import Message, Passage, Record - -""" Initial implementation - not complete """ - - -def get_db_model(table_name: str, table_type: TableType): - config = LettaConfig.load() - - if table_type == TableType.ARCHIVAL_MEMORY or table_type == TableType.PASSAGES: - # create schema for archival memory - class PassageModel(LanceModel): - """Defines data model for storing Passages (consisting of text, embedding)""" - - id: uuid.UUID - user_id: str - text: str - file_id: str - agent_id: str - data_source: str - embedding: Vector(config.default_embedding_config.embedding_dim) - metadata_: Dict - - def __repr__(self): - return f" Optional[str]: Returns: Optional[str]: None is always returned as this function does not produce a response. """ - self.persistence_manager.archival_memory.insert(content) + self.archival_memory.insert(content) return None @@ -163,7 +191,7 @@ def archival_memory_search(self: "Agent", query: str, page: Optional[int] = 0) - except: raise ValueError(f"'page' argument must be an integer") count = RETRIEVAL_QUERY_DEFAULT_PAGE_SIZE - results, total = self.persistence_manager.archival_memory.search(query, count=count, start=page * count) + results, total = self.archival_memory.search(query, count=count, start=page * count) num_pages = math.ceil(total / count) - 1 # 0 index if len(results) == 0: results_str = f"No results found." diff --git a/letta/main.py b/letta/main.py index 88d20e08b0..1f8e19efa9 100644 --- a/letta/main.py +++ b/letta/main.py @@ -190,8 +190,8 @@ def run_agent_loop( elif user_input.lower() == "/memory": print(f"\nDumping memory contents:\n") print(f"{letta_agent.agent_state.memory.compile()}") - print(f"{letta_agent.persistence_manager.archival_memory.compile()}") - print(f"{letta_agent.persistence_manager.recall_memory.compile()}") + print(f"{letta_agent.archival_memory.compile()}") + print(f"{letta_agent.recall_memory.compile()}") continue elif user_input.lower() == "/model": diff --git a/letta/memory.py b/letta/memory.py index a873226e5d..8325de316f 100644 --- a/letta/memory.py +++ b/letta/memory.py @@ -67,14 +67,12 @@ def summarize_messages( + message_sequence_to_summarize[cutoff:] ) - dummy_user_id = agent_state.user_id + agent_state.user_id dummy_agent_id = agent_state.id message_sequence = [] - message_sequence.append(Message(user_id=dummy_user_id, agent_id=dummy_agent_id, role=MessageRole.system, text=summary_prompt)) - message_sequence.append( - Message(user_id=dummy_user_id, agent_id=dummy_agent_id, role=MessageRole.assistant, text=MESSAGE_SUMMARY_REQUEST_ACK) - ) - message_sequence.append(Message(user_id=dummy_user_id, agent_id=dummy_agent_id, role=MessageRole.user, text=summary_input)) + message_sequence.append(Message(agent_id=dummy_agent_id, role=MessageRole.system, text=summary_prompt)) + message_sequence.append(Message(agent_id=dummy_agent_id, role=MessageRole.assistant, text=MESSAGE_SUMMARY_REQUEST_ACK)) + message_sequence.append(Message(agent_id=dummy_agent_id, role=MessageRole.user, text=summary_input)) # TODO: We need to eventually have a separate LLM config for the summarizer LLM llm_config_no_inner_thoughts = agent_state.llm_config.model_copy(deep=True) @@ -252,82 +250,6 @@ def date_search(self, start_date, end_date, count=None, start=None): return matches, len(matches) -class BaseRecallMemory(RecallMemory): - """Recall memory based on base functions implemented by storage connectors""" - - def __init__(self, agent_state, restrict_search_to_summaries=False): - # If true, the pool of messages that can be queried are the automated summaries only - # (generated when the conversation window needs to be shortened) - self.restrict_search_to_summaries = restrict_search_to_summaries - from letta.agent_store.storage import StorageConnector - - self.agent_state = agent_state - - # create embedding model - self.embed_model = embedding_model(agent_state.embedding_config) - self.embedding_chunk_size = agent_state.embedding_config.embedding_chunk_size - - # create storage backend - self.storage = StorageConnector.get_recall_storage_connector(user_id=agent_state.user_id, agent_id=agent_state.id) - # TODO: have some mechanism for cleanup otherwise will lead to OOM - self.cache = {} - - def get_all(self, start=0, count=None): - start = 0 if start is None else int(start) - count = 0 if count is None else int(count) - results = self.storage.get_all(start, count) - results_json = [message.to_openai_dict() for message in results] - return results_json, len(results) - - def text_search(self, query_string, count=None, start=None): - start = 0 if start is None else int(start) - count = 0 if count is None else int(count) - results = self.storage.query_text(query_string, count, start) - results_json = [message.to_openai_dict_search_results() for message in results] - return results_json, len(results) - - def date_search(self, start_date, end_date, count=None, start=None): - start = 0 if start is None else int(start) - count = 0 if count is None else int(count) - results = self.storage.query_date(start_date, end_date, count, start) - results_json = [message.to_openai_dict_search_results() for message in results] - return results_json, len(results) - - def compile(self) -> str: - total = self.storage.size() - system_count = self.storage.size(filters={"role": "system"}) - user_count = self.storage.size(filters={"role": "user"}) - assistant_count = self.storage.size(filters={"role": "assistant"}) - function_count = self.storage.size(filters={"role": "function"}) - other_count = total - (system_count + user_count + assistant_count + function_count) - - memory_str = ( - f"Statistics:" - + f"\n{total} total messages" - + f"\n{system_count} system" - + f"\n{user_count} user" - + f"\n{assistant_count} assistant" - + f"\n{function_count} function" - + f"\n{other_count} other" - ) - return f"\n### RECALL MEMORY ###" + f"\n{memory_str}" - - def insert(self, message: Message): - self.storage.insert(message) - - def insert_many(self, messages: List[Message]): - self.storage.insert_many(messages) - - def save(self): - self.storage.save() - - def __len__(self): - return self.storage.size() - - def count(self) -> int: - return len(self) - - class EmbeddingArchivalMemory(ArchivalMemory): """Archival memory with embedding based search""" diff --git a/letta/metadata.py b/letta/metadata.py index 210f091c15..56d852eaca 100644 --- a/letta/metadata.py +++ b/letta/metadata.py @@ -14,7 +14,6 @@ from letta.schemas.embedding_config import EmbeddingConfig from letta.schemas.enums import ToolRuleType from letta.schemas.llm_config import LLMConfig -from letta.schemas.openai.chat_completions import ToolCall, ToolCallFunction from letta.schemas.tool_rule import ChildToolRule, InitToolRule, TerminalToolRule from letta.schemas.user import User from letta.services.per_agent_lock_manager import PerAgentLockManager @@ -66,40 +65,6 @@ def process_result_value(self, value, dialect): return value -class ToolCallColumn(TypeDecorator): - - impl = JSON - cache_ok = True - - def load_dialect_impl(self, dialect): - return dialect.type_descriptor(JSON()) - - def process_bind_param(self, value, dialect): - if value: - values = [] - for v in value: - if isinstance(v, ToolCall): - values.append(v.model_dump()) - else: - values.append(v) - return values - - return value - - def process_result_value(self, value, dialect): - if value: - tools = [] - for tool_value in value: - if "function" in tool_value: - tool_call_function = ToolCallFunction(**tool_value["function"]) - del tool_value["function"] - else: - tool_call_function = None - tools.append(ToolCall(function=tool_call_function, **tool_value)) - return tools - return value - - # TODO: eventually store providers? # class Provider(Base): # __tablename__ = "providers" diff --git a/letta/o1_agent.py b/letta/o1_agent.py index a6b70b595f..cef2769d4a 100644 --- a/letta/o1_agent.py +++ b/letta/o1_agent.py @@ -20,7 +20,7 @@ def send_thinking_message(self: "Agent", message: str) -> Optional[str]: Returns: Optional[str]: None is always returned as this function does not produce a response. """ - self.interface.internal_monologue(message, msg_obj=self._messages[-1]) + self.interface.internal_monologue(message) return None @@ -34,7 +34,7 @@ def send_final_message(self: "Agent", message: str) -> Optional[str]: Returns: Optional[str]: None is always returned as this function does not produce a response. """ - self.interface.internal_monologue(message, msg_obj=self._messages[-1]) + self.interface.internal_monologue(message) return None @@ -62,10 +62,15 @@ def step( """Run Agent.inner_step in a loop, terminate when final thinking message is sent or max_thinking_steps is reached""" # assert ms is not None, "MetadataStore is required" next_input_message = messages if isinstance(messages, list) else [messages] + counter = 0 total_usage = UsageStatistics() step_count = 0 while step_count < self.max_thinking_steps: + # This is hacky but we need to do this for now + for m in next_input_message: + m.id = m._generate_id() + kwargs["ms"] = ms kwargs["first_message"] = False step_response = self.inner_step( diff --git a/letta/offline_memory_agent.py b/letta/offline_memory_agent.py index 16447c4614..b8f68ea7f2 100644 --- a/letta/offline_memory_agent.py +++ b/letta/offline_memory_agent.py @@ -18,6 +18,7 @@ def trigger_rethink_memory(agent_state: "AgentState", message: Optional[str]) -> """ from letta import create_client + client = create_client() agents = client.list_agents() for agent in agents: @@ -149,6 +150,11 @@ def step( step_count = 0 while counter < self.max_memory_rethinks: + # This is hacky but we need to do this for now + # TODO: REMOVE THIS + for m in next_input_message: + m.id = m._generate_id() + kwargs["ms"] = ms kwargs["first_message"] = False step_response = self.inner_step( diff --git a/letta/orm/__init__.py b/letta/orm/__init__.py index 8d47ba4591..85b4b7eb3c 100644 --- a/letta/orm/__init__.py +++ b/letta/orm/__init__.py @@ -1,8 +1,10 @@ +from letta.orm.agents_tags import AgentsTags from letta.orm.base import Base from letta.orm.block import Block from letta.orm.blocks_agents import BlocksAgents from letta.orm.file import FileMetadata from letta.orm.job import Job +from letta.orm.message import Message from letta.orm.organization import Organization from letta.orm.sandbox_config import SandboxConfig, SandboxEnvironmentVariable from letta.orm.source import Source diff --git a/letta/orm/file.py b/letta/orm/file.py index aec468819e..187ebbd88f 100644 --- a/letta/orm/file.py +++ b/letta/orm/file.py @@ -1,4 +1,4 @@ -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Optional, List from sqlalchemy import Integer, String from sqlalchemy.orm import Mapped, mapped_column, relationship diff --git a/letta/orm/message.py b/letta/orm/message.py new file mode 100644 index 0000000000..3f0b56c791 --- /dev/null +++ b/letta/orm/message.py @@ -0,0 +1,66 @@ +from datetime import datetime +from typing import Optional + +from sqlalchemy import JSON, DateTime, TypeDecorator +from sqlalchemy.orm import Mapped, mapped_column, relationship + +from letta.orm.mixins import AgentMixin, OrganizationMixin +from letta.orm.sqlalchemy_base import SqlalchemyBase +from letta.schemas.message import Message as PydanticMessage +from letta.schemas.openai.chat_completions import ToolCall, ToolCallFunction + + +class ToolCallColumn(TypeDecorator): + + impl = JSON + cache_ok = True + + def load_dialect_impl(self, dialect): + return dialect.type_descriptor(JSON()) + + def process_bind_param(self, value, dialect): + if value: + values = [] + for v in value: + if isinstance(v, ToolCall): + values.append(v.model_dump()) + else: + values.append(v) + return values + + return value + + def process_result_value(self, value, dialect): + if value: + tools = [] + for tool_value in value: + if "function" in tool_value: + tool_call_function = ToolCallFunction(**tool_value["function"]) + del tool_value["function"] + else: + tool_call_function = None + tools.append(ToolCall(function=tool_call_function, **tool_value)) + return tools + return value + + +class Message(SqlalchemyBase, OrganizationMixin, AgentMixin): + """Defines data model for storing Message objects""" + + __tablename__ = "messages" + __table_args__ = {"extend_existing": True} + __pydantic_model__ = PydanticMessage + + id: Mapped[str] = mapped_column(primary_key=True, doc="Unique message identifier") + role: Mapped[str] = mapped_column(doc="Message role (user/assistant/system/tool)") + text: Mapped[Optional[str]] = mapped_column(nullable=True, doc="Message content") + model: Mapped[Optional[str]] = mapped_column(nullable=True, doc="LLM model used") + name: Mapped[Optional[str]] = mapped_column(nullable=True, doc="Name for multi-agent scenarios") + tool_calls: Mapped[ToolCall] = mapped_column(ToolCallColumn, doc="Tool call information") + tool_call_id: Mapped[Optional[str]] = mapped_column(nullable=True, doc="ID of the tool call") + created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=datetime.utcnow) + + # Relationships + # TODO: Add in after Agent ORM is created + # agent: Mapped["Agent"] = relationship("Agent", back_populates="messages", lazy="selectin") + organization: Mapped["Organization"] = relationship("Organization", back_populates="messages", lazy="selectin") diff --git a/letta/orm/mixins.py b/letta/orm/mixins.py index 0d0b576f5b..355a8b2ce4 100644 --- a/letta/orm/mixins.py +++ b/letta/orm/mixins.py @@ -31,6 +31,22 @@ class UserMixin(Base): user_id: Mapped[str] = mapped_column(String, ForeignKey("users.id")) +class AgentMixin(Base): + """Mixin for models that belong to an agent.""" + + __abstract__ = True + + agent_id: Mapped[str] = mapped_column(String, ForeignKey("agents.id")) + + +class FileMixin(Base): + """Mixin for models that belong to a file.""" + + __abstract__ = True + + file_id: Mapped[str] = mapped_column(String, ForeignKey("files.id")) + + class SourceMixin(Base): """Mixin for models (e.g. file) that belong to a source.""" diff --git a/letta/orm/organization.py b/letta/orm/organization.py index 0cd32f9891..4e5b6d12cb 100644 --- a/letta/orm/organization.py +++ b/letta/orm/organization.py @@ -33,6 +33,7 @@ class Organization(SqlalchemyBase): sandbox_environment_variables: Mapped[List["SandboxEnvironmentVariable"]] = relationship( "SandboxEnvironmentVariable", back_populates="organization", cascade="all, delete-orphan" ) + messages: Mapped[List["Message"]] = relationship("Message", back_populates="organization", cascade="all, delete-orphan") # TODO: Map these relationships later when we actually make these models # below is just a suggestion diff --git a/letta/orm/sqlalchemy_base.py b/letta/orm/sqlalchemy_base.py index c968fce1b7..2fd6394724 100644 --- a/letta/orm/sqlalchemy_base.py +++ b/letta/orm/sqlalchemy_base.py @@ -1,8 +1,10 @@ +from datetime import datetime +from enum import Enum from typing import TYPE_CHECKING, List, Literal, Optional, Type -from sqlalchemy import String, select +from sqlalchemy import String, func, select from sqlalchemy.exc import DBAPIError -from sqlalchemy.orm import Mapped, mapped_column +from sqlalchemy.orm import Mapped, Session, mapped_column from letta.log import get_logger from letta.orm.base import Base, CommonSqlalchemyMetaMixins @@ -20,6 +22,11 @@ logger = get_logger(__name__) +class AccessType(str, Enum): + ORGANIZATION = "organization" + USER = "user" + + class SqlalchemyBase(CommonSqlalchemyMetaMixins, Base): __abstract__ = True @@ -28,46 +35,68 @@ class SqlalchemyBase(CommonSqlalchemyMetaMixins, Base): id: Mapped[str] = mapped_column(String, primary_key=True) @classmethod - def list( - cls, *, db_session: "Session", cursor: Optional[str] = None, limit: Optional[int] = 50, **kwargs - ) -> List[Type["SqlalchemyBase"]]: - """ - List records with optional cursor (for pagination), limit, and automatic filtering. + def get(cls, *, db_session: Session, id: str) -> Optional["SqlalchemyBase"]: + """Get a record by ID. Args: - db_session: The database session to use. - cursor: Optional ID to start pagination from. - limit: Maximum number of records to return. - **kwargs: Filters passed as equality conditions or iterable for IN filtering. + db_session: SQLAlchemy session + id: Record ID to retrieve Returns: - A list of model instances matching the filters. + Optional[SqlalchemyBase]: The record if found, None otherwise """ - logger.debug(f"Listing {cls.__name__} with filters {kwargs}") + try: + return db_session.query(cls).filter(cls.id == id).first() + except DBAPIError: + return None + + @classmethod + def list( + cls, + *, + db_session: "Session", + cursor: Optional[str] = None, + start_date: Optional[datetime] = None, + end_date: Optional[datetime] = None, + limit: Optional[int] = 50, + query_text: Optional[str] = None, + **kwargs, + ) -> List[Type["SqlalchemyBase"]]: + """List records with advanced filtering and pagination options.""" + if start_date and end_date and start_date > end_date: + raise ValueError("start_date must be earlier than or equal to end_date") + + logger.debug(f"Listing {cls.__name__} with kwarg filters {kwargs}") with db_session as session: - # Start with a base query query = select(cls) # Apply filtering logic for key, value in kwargs.items(): column = getattr(cls, key) - if isinstance(value, (list, tuple, set)): # Check for iterables + if isinstance(value, (list, tuple, set)): query = query.where(column.in_(value)) - else: # Single value for equality filtering + else: query = query.where(column == value) - # Apply cursor for pagination + # Date range filtering + if start_date: + query = query.filter(cls.created_at >= start_date) + if end_date: + query = query.filter(cls.created_at <= end_date) + + # Cursor-based pagination if cursor: query = query.where(cls.id > cursor) - # Handle soft deletes if the class has the 'is_deleted' attribute + # Apply text search + if query_text: + query = query.filter(func.lower(cls.text).contains(func.lower(query_text))) + + # Handle ordering and soft deletes if hasattr(cls, "is_deleted"): query = query.where(cls.is_deleted == False) - - # Add ordering and limit query = query.order_by(cls.id).limit(limit) - # Execute the query and return results as model instances return list(session.execute(query).scalars()) @classmethod @@ -77,6 +106,7 @@ def read( identifier: Optional[str] = None, actor: Optional["User"] = None, access: Optional[List[Literal["read", "write", "admin"]]] = ["read"], + access_type: AccessType = AccessType.ORGANIZATION, **kwargs, ) -> Type["SqlalchemyBase"]: """The primary accessor for an ORM record. @@ -108,7 +138,7 @@ def read( query_conditions.append(", ".join(f"{key}='{value}'" for key, value in kwargs.items())) if actor: - query = cls.apply_access_predicate(query, actor, access) + query = cls.apply_access_predicate(query, actor, access, access_type) query_conditions.append(f"access level in {access} for actor='{actor}'") if hasattr(cls, "is_deleted"): @@ -170,12 +200,66 @@ def update(self, db_session: "Session", actor: Optional["User"] = None) -> Type[ session.refresh(self) return self + @classmethod + def size( + cls, + *, + db_session: "Session", + actor: Optional["User"] = None, + access: Optional[List[Literal["read", "write", "admin"]]] = ["read"], + access_type: AccessType = AccessType.ORGANIZATION, + **kwargs, + ) -> int: + """ + Get the count of rows that match the provided filters. + + Args: + db_session: SQLAlchemy session + **kwargs: Filters to apply to the query (e.g., column_name=value) + + Returns: + int: The count of rows that match the filters + + Raises: + DBAPIError: If a database error occurs + """ + logger.debug(f"Calculating size for {cls.__name__} with filters {kwargs}") + + with db_session as session: + query = select(func.count()).select_from(cls) + + if actor: + query = cls.apply_access_predicate(query, actor, access, access_type) + + # Apply filtering logic based on kwargs + for key, value in kwargs.items(): + if value: + column = getattr(cls, key, None) + if not column: + raise AttributeError(f"{cls.__name__} has no attribute '{key}'") + if isinstance(value, (list, tuple, set)): # Check for iterables + query = query.where(column.in_(value)) + else: # Single value for equality filtering + query = query.where(column == value) + + # Handle soft deletes if the class has the 'is_deleted' attribute + if hasattr(cls, "is_deleted"): + query = query.where(cls.is_deleted == False) + + try: + count = session.execute(query).scalar() + return count if count else 0 + except DBAPIError as e: + logger.exception(f"Failed to calculate size for {cls.__name__}") + raise e + @classmethod def apply_access_predicate( cls, query: "Select", actor: "User", access: List[Literal["read", "write", "admin"]], + access_type: AccessType = AccessType.ORGANIZATION, ) -> "Select": """applies a WHERE clause restricting results to the given actor and access level Args: @@ -189,10 +273,18 @@ def apply_access_predicate( the sqlalchemy select statement restricted to the given access. """ del access # entrypoint for row-level permissions. Defaults to "same org as the actor, all permissions" at the moment - org_id = getattr(actor, "organization_id", None) - if not org_id: - raise ValueError(f"object {actor} has no organization accessor") - return query.where(cls.organization_id == org_id, cls.is_deleted == False) + if access_type == AccessType.ORGANIZATION: + org_id = getattr(actor, "organization_id", None) + if not org_id: + raise ValueError(f"object {actor} has no organization accessor") + return query.where(cls.organization_id == org_id, cls.is_deleted == False) + elif access_type == AccessType.USER: + user_id = getattr(actor, "id", None) + if not user_id: + raise ValueError(f"object {actor} has no user accessor") + return query.where(cls.user_id == user_id, cls.is_deleted == False) + else: + raise ValueError(f"unknown access_type: {access_type}") @classmethod def _handle_dbapi_error(cls, e: DBAPIError): diff --git a/letta/persistence_manager.py b/letta/persistence_manager.py deleted file mode 100644 index 7dd22a998f..0000000000 --- a/letta/persistence_manager.py +++ /dev/null @@ -1,149 +0,0 @@ -from abc import ABC, abstractmethod -from datetime import datetime -from typing import List - -from letta.memory import BaseRecallMemory, EmbeddingArchivalMemory -from letta.schemas.agent import AgentState -from letta.schemas.memory import Memory -from letta.schemas.message import Message -from letta.utils import printd - - -def parse_formatted_time(formatted_time: str): - # parse times returned by letta.utils.get_formatted_time() - try: - return datetime.strptime(formatted_time.strip(), "%Y-%m-%d %I:%M:%S %p %Z%z") - except: - return datetime.strptime(formatted_time.strip(), "%Y-%m-%d %I:%M:%S %p") - - -class PersistenceManager(ABC): - @abstractmethod - def trim_messages(self, num): - pass - - @abstractmethod - def prepend_to_messages(self, added_messages): - pass - - @abstractmethod - def append_to_messages(self, added_messages): - pass - - @abstractmethod - def swap_system_message(self, new_system_message): - pass - - @abstractmethod - def update_memory(self, new_memory): - pass - - -class LocalStateManager(PersistenceManager): - """In-memory state manager has nothing to manage, all agents are held in-memory""" - - recall_memory_cls = BaseRecallMemory - archival_memory_cls = EmbeddingArchivalMemory - - def __init__(self, agent_state: AgentState): - # Memory held in-state useful for debugging stateful versions - self.memory = agent_state.memory - # self.messages = [] # current in-context messages - # self.all_messages = [] # all messages seen in current session (needed if lazily synchronizing state with DB) - self.archival_memory = EmbeddingArchivalMemory(agent_state) - self.recall_memory = BaseRecallMemory(agent_state) - # self.agent_state = agent_state - - def save(self): - """Ensure storage connectors save data""" - self.archival_memory.save() - self.recall_memory.save() - - ''' - def json_to_message(self, message_json) -> Message: - """Convert agent message JSON into Message object""" - - # get message - if "message" in message_json: - message = message_json["message"] - else: - message = message_json - - # get timestamp - if "timestamp" in message_json: - timestamp = parse_formatted_time(message_json["timestamp"]) - else: - timestamp = get_local_time() - - # TODO: change this when we fully migrate to tool calls API - if "function_call" in message: - tool_calls = [ - ToolCall( - id=message["tool_call_id"], - tool_call_type="function", - function={ - "name": message["function_call"]["name"], - "arguments": message["function_call"]["arguments"], - }, - ) - ] - printd(f"Saving tool calls {[vars(tc) for tc in tool_calls]}") - else: - tool_calls = None - - # if message["role"] == "function": - # message["role"] = "tool" - - return Message( - user_id=self.agent_state.user_id, - agent_id=self.agent_state.id, - role=message["role"], - text=message["content"], - name=message["name"] if "name" in message else None, - model=self.agent_state.llm_config.model, - created_at=timestamp, - tool_calls=tool_calls, - tool_call_id=message["tool_call_id"] if "tool_call_id" in message else None, - id=message["id"] if "id" in message else None, - ) - ''' - - def trim_messages(self, num): - # printd(f"InMemoryStateManager.trim_messages") - # self.messages = [self.messages[0]] + self.messages[num:] - pass - - def prepend_to_messages(self, added_messages: List[Message]): - # first tag with timestamps - # added_messages = [{"timestamp": get_local_time(), "message": msg} for msg in added_messages] - - printd(f"{self.__class__.__name__}.prepend_to_message") - # self.messages = [self.messages[0]] + added_messages + self.messages[1:] - - # add to recall memory - self.recall_memory.insert_many([m for m in added_messages]) - - def append_to_messages(self, added_messages: List[Message]): - # first tag with timestamps - # added_messages = [{"timestamp": get_local_time(), "message": msg} for msg in added_messages] - - printd(f"{self.__class__.__name__}.append_to_messages") - # self.messages = self.messages + added_messages - - # add to recall memory - self.recall_memory.insert_many([m for m in added_messages]) - - def swap_system_message(self, new_system_message: Message): - # first tag with timestamps - # new_system_message = {"timestamp": get_local_time(), "message": new_system_message} - - printd(f"{self.__class__.__name__}.swap_system_message") - # self.messages[0] = new_system_message - - # add to recall memory - self.recall_memory.insert(new_system_message) - - def update_memory(self, new_memory: Memory): - printd(f"{self.__class__.__name__}.update_memory") - assert isinstance(new_memory, Memory), type(new_memory) - self.memory = new_memory diff --git a/letta/schemas/letta_base.py b/letta/schemas/letta_base.py index 67d8237ed6..dce2b02ded 100644 --- a/letta/schemas/letta_base.py +++ b/letta/schemas/letta_base.py @@ -33,18 +33,19 @@ class LettaBase(BaseModel): def generate_id_field(cls, prefix: Optional[str] = None) -> "Field": prefix = prefix or cls.__id_prefix__ - # TODO: generate ID from regex pattern? - def _generate_id() -> str: - return f"{prefix}-{uuid.uuid4()}" - return Field( ..., description=cls._id_description(prefix), pattern=cls._id_regex_pattern(prefix), examples=[cls._id_example(prefix)], - default_factory=_generate_id, + default_factory=cls._generate_id, ) + @classmethod + def _generate_id(cls, prefix: Optional[str] = None) -> str: + prefix = prefix or cls.__id_prefix__ + return f"{prefix}-{uuid.uuid4()}" + # def _generate_id(self) -> str: # return f"{self.__id_prefix__}-{uuid.uuid4()}" @@ -78,7 +79,7 @@ def allow_bare_uuids(cls, v, values): """ _ = values # for SCA if isinstance(v, UUID): - logger.warning(f"Bare UUIDs are deprecated, please use the full prefixed id ({cls.__id_prefix__})!") + logger.debug(f"Bare UUIDs are deprecated, please use the full prefixed id ({cls.__id_prefix__})!") return f"{cls.__id_prefix__}-{v}" return v diff --git a/letta/schemas/message.py b/letta/schemas/message.py index e4c668c1ec..a9e2fcb888 100644 --- a/letta/schemas/message.py +++ b/letta/schemas/message.py @@ -105,7 +105,7 @@ class Message(BaseMessage): id: str = BaseMessage.generate_id_field() role: MessageRole = Field(..., description="The role of the participant.") text: Optional[str] = Field(None, description="The text of the message.") - user_id: Optional[str] = Field(None, description="The unique identifier of the user.") + organization_id: Optional[str] = Field(None, description="The unique identifier of the organization.") agent_id: Optional[str] = Field(None, description="The unique identifier of the agent.") model: Optional[str] = Field(None, description="The model used to make the function call.") name: Optional[str] = Field(None, description="The name of the participant.") @@ -281,7 +281,6 @@ def dict_to_message( ) if id is not None: return Message( - user_id=user_id, agent_id=agent_id, model=model, # standard fields expected in an OpenAI ChatCompletion message object @@ -295,7 +294,6 @@ def dict_to_message( ) else: return Message( - user_id=user_id, agent_id=agent_id, model=model, # standard fields expected in an OpenAI ChatCompletion message object @@ -328,7 +326,6 @@ def dict_to_message( if id is not None: return Message( - user_id=user_id, agent_id=agent_id, model=model, # standard fields expected in an OpenAI ChatCompletion message object @@ -342,7 +339,6 @@ def dict_to_message( ) else: return Message( - user_id=user_id, agent_id=agent_id, model=model, # standard fields expected in an OpenAI ChatCompletion message object @@ -375,7 +371,6 @@ def dict_to_message( # If we're going from tool-call style if id is not None: return Message( - user_id=user_id, agent_id=agent_id, model=model, # standard fields expected in an OpenAI ChatCompletion message object @@ -389,7 +384,6 @@ def dict_to_message( ) else: return Message( - user_id=user_id, agent_id=agent_id, model=model, # standard fields expected in an OpenAI ChatCompletion message object diff --git a/letta/server/rest_api/routers/v1/agents.py b/letta/server/rest_api/routers/v1/agents.py index 9e64ea5dfd..6a583c3a3c 100644 --- a/letta/server/rest_api/routers/v1/agents.py +++ b/letta/server/rest_api/routers/v1/agents.py @@ -409,7 +409,7 @@ def get_agent_messages( return server.get_agent_recall_cursor( user_id=actor.id, agent_id=agent_id, - before=before, + cursor=before, limit=limit, reverse=True, return_message_object=msg_object, diff --git a/letta/server/server.py b/letta/server/server.py index d12e0f3b27..7a430862e4 100644 --- a/letta/server/server.py +++ b/letta/server/server.py @@ -77,14 +77,15 @@ from letta.services.agents_tags_manager import AgentsTagsManager from letta.services.block_manager import BlockManager from letta.services.blocks_agents_manager import BlocksAgentsManager -from letta.services.tools_agents_manager import ToolsAgentsManager from letta.services.job_manager import JobManager +from letta.services.message_manager import MessageManager from letta.services.organization_manager import OrganizationManager from letta.services.per_agent_lock_manager import PerAgentLockManager from letta.services.sandbox_config_manager import SandboxConfigManager from letta.services.source_manager import SourceManager from letta.services.tool_execution_sandbox import ToolExecutionSandbox from letta.services.tool_manager import ToolManager +from letta.services.tools_agents_manager import ToolsAgentsManager from letta.services.user_manager import UserManager from letta.utils import create_random_username, get_utc_time, json_dumps, json_loads @@ -260,6 +261,7 @@ def __init__( self.agents_tags_manager = AgentsTagsManager() self.sandbox_config_manager = SandboxConfigManager(tool_settings) self.blocks_agents_manager = BlocksAgentsManager() + self.message_manager = MessageManager() self.tools_agents_manager = ToolsAgentsManager() self.job_manager = JobManager() @@ -414,7 +416,7 @@ def load_agent(self, agent_id: str, interface: Union[AgentInterface, None] = Non agent = OfflineMemoryAgent(agent_state=agent_state, interface=interface, user=actor) elif agent_state.agent_type == AgentType.chat_only_agent: agent = ChatOnlyAgent(agent_state=agent_state, interface=interface, user=actor) - else: + else: raise ValueError(f"Invalid agent type {agent_state.agent_type}") # Rebuild the system prompt - may be linked to new blocks now @@ -422,7 +424,7 @@ def load_agent(self, agent_id: str, interface: Union[AgentInterface, None] = Non # Persist to agent save_agent(agent, self.ms) - return agent + return agent def _step( self, @@ -518,12 +520,7 @@ def _command(self, user_id: str, agent_id: str, command: str) -> LettaUsageStati letta_agent.interface.print_messages_raw(letta_agent.messages) elif command.lower() == "memory": - ret_str = ( - f"\nDumping memory contents:\n" - + f"\n{str(letta_agent.agent_state.memory)}" - + f"\n{str(letta_agent.persistence_manager.archival_memory)}" - + f"\n{str(letta_agent.persistence_manager.recall_memory)}" - ) + ret_str = f"\nDumping memory contents:\n" + f"\n{str(letta_agent.agent_state.memory)}" + f"\n{str(letta_agent.archival_memory)}" return ret_str elif command.lower() == "pop" or command.lower().startswith("pop "): @@ -625,7 +622,6 @@ def user_message( # Convert to a Message object if timestamp: message = Message( - user_id=user_id, agent_id=agent_id, role="user", text=packaged_user_message, @@ -633,7 +629,6 @@ def user_message( ) else: message = Message( - user_id=user_id, agent_id=agent_id, role="user", text=packaged_user_message, @@ -672,7 +667,6 @@ def system_message( if timestamp: message = Message( - user_id=user_id, agent_id=agent_id, role="system", text=packaged_system_message, @@ -680,7 +674,6 @@ def system_message( ) else: message = Message( - user_id=user_id, agent_id=agent_id, role="system", text=packaged_system_message, @@ -743,7 +736,6 @@ def send_messages( # Create the Message object message_objects.append( Message( - user_id=user_id, agent_id=agent_id, role=message.role, text=message.text, @@ -876,7 +868,7 @@ def create_agent( else: raise ValueError(f"Invalid message role: {message.role}") - init_messages.append(Message(role=message.role, text=packed_message, user_id=user_id, agent_id=agent_state.id)) + init_messages.append(Message(role=message.role, text=packed_message, agent_id=agent_state.id)) # init_messages = [Message.dict_to_message(user_id=user_id, agent_id=agent_state.id, openai_message_dict=message.model_dump()) for message in request.initial_message_sequence] else: init_messages = None @@ -1160,11 +1152,11 @@ def get_agent_memory(self, agent_id: str) -> Memory: def get_archival_memory_summary(self, agent_id: str) -> ArchivalMemorySummary: agent = self.load_agent(agent_id=agent_id) - return ArchivalMemorySummary(size=len(agent.persistence_manager.archival_memory)) + return ArchivalMemorySummary(size=len(agent.archival_memory)) def get_recall_memory_summary(self, agent_id: str) -> RecallMemorySummary: agent = self.load_agent(agent_id=agent_id) - return RecallMemorySummary(size=len(agent.persistence_manager.recall_memory)) + return RecallMemorySummary(size=len(agent.message_manager)) def get_in_context_message_ids(self, agent_id: str) -> List[str]: """Get the message ids of the in-context messages in the agent's memory""" @@ -1182,7 +1174,7 @@ def get_agent_message(self, agent_id: str, message_id: str) -> Message: """Get a single message from the agent's memory""" # Get the agent object (loaded in memory) agent = self.load_agent(agent_id=agent_id) - message = agent.persistence_manager.recall_memory.storage.get(id=message_id) + message = agent.message_manager.get_message_by_id(id=message_id, actor=self.default_user) return message def get_agent_messages( @@ -1213,14 +1205,16 @@ def get_agent_messages( else: # need to access persistence manager for additional messages - db_iterator = letta_agent.persistence_manager.recall_memory.storage.get_all_paginated(page_size=count, offset=start) - # get a single page of messages - # TODO: handle stop iteration - page = next(db_iterator, []) + # get messages using message manager + page = letta_agent.message_manager.list_user_messages_for_agent( + agent_id=agent_id, + actor=self.default_user, + cursor=start, + limit=count, + ) - # return messages in reverse chronological order - messages = sorted(page, key=lambda x: x.created_at, reverse=True) + messages = page assert all(isinstance(m, Message) for m in messages) ## Convert to json @@ -1243,7 +1237,7 @@ def get_agent_archival(self, user_id: str, agent_id: str, start: int, count: int letta_agent = self.load_agent(agent_id=agent_id) # iterate over records - db_iterator = letta_agent.persistence_manager.archival_memory.storage.get_all_paginated(page_size=count, offset=start) + db_iterator = letta_agent.archival_memory.storage.get_all_paginated(page_size=count, offset=start) # get a single page of messages page = next(db_iterator, []) @@ -1268,7 +1262,7 @@ def get_agent_archival_cursor( letta_agent = self.load_agent(agent_id=agent_id) # iterate over recorde - cursor, records = letta_agent.persistence_manager.archival_memory.storage.get_all_cursor( + cursor, records = letta_agent.archival_memory.storage.get_all_cursor( after=after, before=before, limit=limit, order_by=order_by, reverse=reverse ) return records @@ -1283,14 +1277,14 @@ def insert_archival_memory(self, user_id: str, agent_id: str, memory_contents: s letta_agent = self.load_agent(agent_id=agent_id) # Insert into archival memory - passage_ids = letta_agent.persistence_manager.archival_memory.insert(memory_string=memory_contents, return_ids=True) + passage_ids = letta_agent.archival_memory.insert(memory_string=memory_contents, return_ids=True) # Update the agent # TODO: should this update the system prompt? save_agent(letta_agent, self.ms) # TODO: this is gross, fix - return [letta_agent.persistence_manager.archival_memory.storage.get(id=passage_id) for passage_id in passage_ids] + return [letta_agent.archival_memory.storage.get(id=passage_id) for passage_id in passage_ids] def delete_archival_memory(self, user_id: str, agent_id: str, memory_id: str): if self.user_manager.get_user_by_id(user_id=user_id) is None: @@ -1305,7 +1299,7 @@ def delete_archival_memory(self, user_id: str, agent_id: str, memory_id: str): # Delete by ID # TODO check if it exists first, and throw error if not - letta_agent.persistence_manager.archival_memory.storage.delete({"id": memory_id}) + letta_agent.archival_memory.storage.delete({"id": memory_id}) # TODO: return archival memory @@ -1313,17 +1307,15 @@ def get_agent_recall_cursor( self, user_id: str, agent_id: str, - after: Optional[str] = None, - before: Optional[str] = None, + cursor: Optional[str] = None, limit: Optional[int] = 100, - order_by: Optional[str] = "created_at", - order: Optional[str] = "asc", reverse: Optional[bool] = False, return_message_object: bool = True, assistant_message_tool_name: str = constants.DEFAULT_MESSAGE_TOOL, assistant_message_tool_kwarg: str = constants.DEFAULT_MESSAGE_TOOL_KWARG, ) -> Union[List[Message], List[LettaMessage]]: - if self.user_manager.get_user_by_id(user_id=user_id) is None: + actor = self.user_manager.get_user_by_id(user_id=user_id) + if actor is None: raise ValueError(f"User user_id={user_id} does not exist") if self.ms.get_agent(agent_id=agent_id, user_id=user_id) is None: raise ValueError(f"Agent agent_id={agent_id} does not exist") @@ -1332,8 +1324,12 @@ def get_agent_recall_cursor( letta_agent = self.load_agent(agent_id=agent_id) # iterate over records - cursor, records = letta_agent.persistence_manager.recall_memory.storage.get_all_cursor( - after=after, before=before, limit=limit, order_by=order_by, reverse=reverse + # TODO: Check "order_by", "order" + records = letta_agent.message_manager.list_messages_for_agent( + agent_id=agent_id, + actor=actor, + cursor=cursor, + limit=limit, ) assert all(isinstance(m, Message) for m in records) @@ -1353,7 +1349,7 @@ def get_agent_recall_cursor( records = records[::-1] return records - + def get_server_config(self, include_defaults: bool = False) -> dict: """Return the base config""" @@ -1425,19 +1421,25 @@ def delete_agent(self, user_id: str, agent_id: str): self.agents_tags_manager.delete_all_tags_from_agent(agent_id=agent_id, actor=actor) self.blocks_agents_manager.remove_all_agent_blocks(agent_id=agent_id) - if self.ms.get_agent(agent_id=agent_id, user_id=user_id) is None: - raise ValueError(f"Agent agent_id={agent_id} does not exist") - # Verify that the agent exists and belongs to the org of the user agent_state = self.ms.get_agent(agent_id=agent_id, user_id=user_id) - if not agent_state: + if agent_state is None: raise ValueError(f"Could not find agent_id={agent_id} under user_id={user_id}") - agent_state_user = self.user_manager.get_user_by_id(user_id=agent_state.user_id) - if agent_state_user.organization_id != actor.organization_id: - raise ValueError( - f"Could not authorize agent_id={agent_id} with user_id={user_id} because of differing organizations; agent_id was created in {agent_state_user.organization_id} while user belongs to {actor.organization_id}. How did they get the agent id?" - ) + # TODO: REMOVE THIS ONCE WE MIGRATE AGENTMODEL TO ORM MODEL + messages = self.message_manager.list_messages_for_agent(agent_id=agent_state.id) + for message in messages: + self.message_manager.delete_message_by_id(message.id, actor=actor) + + # TODO: REMOVE THIS ONCE WE MIGRATE AGENTMODEL TO ORM + try: + agent_state_user = self.user_manager.get_user_by_id(user_id=agent_state.user_id) + if agent_state_user.organization_id != actor.organization_id: + raise ValueError( + f"Could not authorize agent_id={agent_id} with user_id={user_id} because of differing organizations; agent_id was created in {agent_state_user.organization_id} while user belongs to {actor.organization_id}. How did they get the agent id?" + ) + except NoResultFound: + logger.error(f"Agent with id {agent_state.id} has nonexistent user {agent_state.user_id}") # First, if the agent is in the in-memory cache we should remove it # List of {'user_id': user_id, 'agent_id': agent_id, 'agent': agent_obj} dicts @@ -1582,7 +1584,7 @@ def detach_source_from_agent( # delete all Passage objects with source_id==source_id from agent's archival memory agent = self.load_agent(agent_id=agent_id) - archival_memory = agent.persistence_manager.archival_memory + archival_memory = agent.archival_memory archival_memory.storage.delete({"source_id": source_id}) # delete agent-source mapping @@ -1661,7 +1663,7 @@ def get_agent_message(self, agent_id: str, message_id: str) -> Optional[Message] """Get a single message from the agent's memory""" # Get the agent object (loaded in memory) letta_agent = self.load_agent(agent_id=agent_id) - message = letta_agent.persistence_manager.recall_memory.storage.get(id=message_id) + message = letta_agent.message_manager.get_message_by_id(id=message_id) save_agent(letta_agent, self.ms) return message @@ -1705,7 +1707,7 @@ def get_user_or_default(self, user_id: Optional[str]) -> User: try: return self.user_manager.get_user_by_id(user_id=user_id) - except ValueError: + except NoResultFound: raise HTTPException(status_code=404, detail=f"User with id {user_id} not found") def get_organization_or_default(self, org_id: Optional[str]) -> Organization: @@ -1715,7 +1717,7 @@ def get_organization_or_default(self, org_id: Optional[str]) -> Organization: try: return self.organization_manager.get_organization_by_id(org_id=org_id) - except ValueError: + except NoResultFound: raise HTTPException(status_code=404, detail=f"Organization with id {org_id} not found") def list_llm_models(self) -> List[LLMConfig]: diff --git a/letta/services/block_manager.py b/letta/services/block_manager.py index ac6e42b861..65f6c79e55 100644 --- a/letta/services/block_manager.py +++ b/letta/services/block_manager.py @@ -102,7 +102,7 @@ def get_blocks( return [block.to_pydantic() for block in blocks] @enforce_types - def get_block_by_id(self, block_id, actor: PydanticUser) -> Optional[PydanticBlock]: + def get_block_by_id(self, block_id: str, actor: Optional[PydanticUser] = None) -> Optional[PydanticBlock]: """Retrieve a block by its name.""" with self.session_maker() as session: try: diff --git a/letta/services/message_manager.py b/letta/services/message_manager.py new file mode 100644 index 0000000000..7a46ddba0d --- /dev/null +++ b/letta/services/message_manager.py @@ -0,0 +1,182 @@ +from datetime import datetime +from typing import Dict, List, Optional + +from letta.orm.errors import NoResultFound +from letta.orm.message import Message as MessageModel +from letta.schemas.enums import MessageRole +from letta.schemas.message import Message as PydanticMessage +from letta.schemas.user import User as PydanticUser +from letta.utils import enforce_types + + +class MessageManager: + """Manager class to handle business logic related to Messages.""" + + def __init__(self): + from letta.server.server import db_context + + self.session_maker = db_context + + @enforce_types + def get_message_by_id(self, message_id: str, actor: PydanticUser) -> Optional[PydanticMessage]: + """Fetch a message by ID.""" + with self.session_maker() as session: + try: + message = MessageModel.read(db_session=session, identifier=message_id, actor=actor) + return message.to_pydantic() + except NoResultFound: + return None + + @enforce_types + def create_message(self, pydantic_msg: PydanticMessage, actor: PydanticUser) -> PydanticMessage: + """Create a new message.""" + with self.session_maker() as session: + # Set the organization id of the Pydantic message + pydantic_msg.organization_id = actor.organization_id + msg_data = pydantic_msg.model_dump() + msg = MessageModel(**msg_data) + msg.create(session, actor=actor) # Persist to database + return msg.to_pydantic() + + @enforce_types + def create_many_messages(self, pydantic_msgs: List[PydanticMessage], actor: PydanticUser) -> List[PydanticMessage]: + """Create multiple messages.""" + return [self.create_message(m, actor=actor) for m in pydantic_msgs] + + @enforce_types + def update_message_by_id(self, message_id: str, message: PydanticMessage, actor: PydanticUser) -> PydanticMessage: + """ + Updates an existing record in the database with values from the provided record object. + """ + with self.session_maker() as session: + # Fetch existing message from database + msg = MessageModel.read( + db_session=session, + identifier=message_id, + actor=actor, + ) + + # Update the database record with values from the provided record + for column in MessageModel.__table__.columns: + column_name = column.name + if hasattr(message, column_name): + new_value = getattr(message, column_name) + setattr(msg, column_name, new_value) + + # Commit changes + return msg.update(db_session=session, actor=actor).to_pydantic() + + @enforce_types + def delete_message_by_id(self, message_id: str, actor: PydanticUser) -> bool: + """Delete a message.""" + with self.session_maker() as session: + try: + msg = MessageModel.read( + db_session=session, + identifier=message_id, + actor=actor, + ) + msg.hard_delete(session, actor=actor) + except NoResultFound: + raise ValueError(f"Message with id {message_id} not found.") + + @enforce_types + def size( + self, + actor: PydanticUser, + role: Optional[MessageRole] = None, + agent_id: Optional[str] = None, + ) -> int: + """Get the total count of messages with optional filters. + + Args: + actor: The user requesting the count + role: The role of the message + """ + with self.session_maker() as session: + return MessageModel.size(db_session=session, actor=actor, role=role, agent_id=agent_id) + + @enforce_types + def list_user_messages_for_agent( + self, + agent_id: str, + actor: Optional[PydanticUser] = None, + cursor: Optional[str] = None, + start_date: Optional[datetime] = None, + end_date: Optional[datetime] = None, + limit: Optional[int] = 50, + filters: Optional[Dict] = None, + query_text: Optional[str] = None, + ) -> List[PydanticMessage]: + """List user messages with flexible filtering and pagination options. + + Args: + cursor: Cursor-based pagination - return records after this ID (exclusive) + start_date: Filter records created after this date + end_date: Filter records created before this date + limit: Maximum number of records to return + filters: Additional filters to apply + query_text: Optional text to search for in message content + + Returns: + List[PydanticMessage] - List of messages matching the criteria + """ + message_filters = {"role": "user"} + if filters: + message_filters.update(filters) + + return self.list_messages_for_agent( + agent_id=agent_id, + actor=actor, + cursor=cursor, + start_date=start_date, + end_date=end_date, + limit=limit, + filters=message_filters, + query_text=query_text, + ) + + @enforce_types + def list_messages_for_agent( + self, + agent_id: str, + actor: Optional[PydanticUser] = None, + cursor: Optional[str] = None, + start_date: Optional[datetime] = None, + end_date: Optional[datetime] = None, + limit: Optional[int] = 50, + filters: Optional[Dict] = None, + query_text: Optional[str] = None, + ) -> List[PydanticMessage]: + """List messages with flexible filtering and pagination options. + + Args: + cursor: Cursor-based pagination - return records after this ID (exclusive) + start_date: Filter records created after this date + end_date: Filter records created before this date + limit: Maximum number of records to return + filters: Additional filters to apply + query_text: Optional text to search for in message content + + Returns: + List[PydanticMessage] - List of messages matching the criteria + """ + with self.session_maker() as session: + # Start with base filters + message_filters = {"agent_id": agent_id} + if actor: + message_filters.update({"organization_id": actor.organization_id}) + if filters: + message_filters.update(filters) + + results = MessageModel.list( + db_session=session, + cursor=cursor, + start_date=start_date, + end_date=end_date, + limit=limit, + query_text=query_text, + **message_filters, + ) + + return [msg.to_pydantic() for msg in results] diff --git a/letta/services/organization_manager.py b/letta/services/organization_manager.py index 1b7f18b6d8..f98ba65dba 100644 --- a/letta/services/organization_manager.py +++ b/letta/services/organization_manager.py @@ -30,19 +30,16 @@ def get_default_organization(self) -> PydanticOrganization: def get_organization_by_id(self, org_id: str) -> Optional[PydanticOrganization]: """Fetch an organization by ID.""" with self.session_maker() as session: - try: - organization = OrganizationModel.read(db_session=session, identifier=org_id) - return organization.to_pydantic() - except NoResultFound: - return None + organization = OrganizationModel.read(db_session=session, identifier=org_id) + return organization.to_pydantic() @enforce_types def create_organization(self, pydantic_org: PydanticOrganization) -> PydanticOrganization: - """Create a new organization. If a name is provided, it is used, otherwise, a random one is generated.""" - org = self.get_organization_by_id(pydantic_org.id) - if org: + """Create a new organization.""" + try: + org = self.get_organization_by_id(pydantic_org.id) return org - else: + except NoResultFound: return self._create_organization(pydantic_org=pydantic_org) @enforce_types diff --git a/letta/services/source_manager.py b/letta/services/source_manager.py index 03684d2367..f2b48e9bad 100644 --- a/letta/services/source_manager.py +++ b/letta/services/source_manager.py @@ -141,5 +141,5 @@ def delete_file(self, file_id: str, actor: PydanticUser) -> PydanticFileMetadata """Delete a file by its ID.""" with self.session_maker() as session: file = FileMetadataModel.read(db_session=session, identifier=file_id) - file.delete(db_session=session, actor=actor) + file.hard_delete(db_session=session, actor=actor) return file.to_pydantic() diff --git a/letta/services/tool_manager.py b/letta/services/tool_manager.py index 33b1afd719..6e1818e3ba 100644 --- a/letta/services/tool_manager.py +++ b/letta/services/tool_manager.py @@ -122,7 +122,7 @@ def update_tool_by_id(self, tool_id: str, tool_update: ToolUpdate, actor: Pydant tool.json_schema = new_schema # Save the updated tool to the database - return tool.update(db_session=session, actor=actor) + return tool.update(db_session=session, actor=actor).to_pydantic() @enforce_types def delete_tool_by_id(self, tool_id: str, actor: PydanticUser) -> None: diff --git a/letta/services/user_manager.py b/letta/services/user_manager.py index 42df72fae8..cc99ad8ca0 100644 --- a/letta/services/user_manager.py +++ b/letta/services/user_manager.py @@ -71,7 +71,7 @@ def delete_user_by_id(self, user_id: str): with self.session_maker() as session: # Delete from user table user = UserModel.read(db_session=session, identifier=user_id) - user.delete(session) + user.hard_delete(session) # TODO: Integrate this via the ORM models for the Agent, Source, and AgentSourceMapping # Cascade delete for related models: Agent, Source, AgentSourceMapping diff --git a/tests/conftest.py b/tests/conftest.py index 90916a6ecd..899a74af38 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,5 +1,24 @@ import logging +import pytest + +from letta.settings import tool_settings + def pytest_configure(config): logging.basicConfig(level=logging.DEBUG) + + +@pytest.fixture +def mock_e2b_api_key_none(): + # Store the original value of e2b_api_key + original_api_key = tool_settings.e2b_api_key + + # Set e2b_api_key to None + tool_settings.e2b_api_key = None + + # Yield control to the test + yield + + # Restore the original value of e2b_api_key + tool_settings.e2b_api_key = original_api_key diff --git a/tests/integration_test_tool_execution_sandbox.py b/tests/integration_test_tool_execution_sandbox.py index 20df005164..0574e43cae 100644 --- a/tests/integration_test_tool_execution_sandbox.py +++ b/tests/integration_test_tool_execution_sandbox.py @@ -58,21 +58,6 @@ def clear_tables(): Sandbox.connect(sandbox.sandbox_id).kill() -@pytest.fixture -def mock_e2b_api_key_none(): - # Store the original value of e2b_api_key - original_api_key = tool_settings.e2b_api_key - - # Set e2b_api_key to None - tool_settings.e2b_api_key = None - - # Yield control to the test - yield - - # Restore the original value of e2b_api_key - tool_settings.e2b_api_key = original_api_key - - @pytest.fixture def check_e2b_key_is_set(): original_api_key = tool_settings.e2b_api_key diff --git a/tests/test_agent_tool_graph.py b/tests/test_agent_tool_graph.py index 1d5dbcdcc8..7774977c75 100644 --- a/tests/test_agent_tool_graph.py +++ b/tests/test_agent_tool_graph.py @@ -5,7 +5,6 @@ from letta import create_client from letta.schemas.letta_message import FunctionCallMessage from letta.schemas.tool_rule import ChildToolRule, InitToolRule, TerminalToolRule -from letta.settings import tool_settings from tests.helpers.endpoints_helper import ( assert_invoked_function_call, assert_invoked_send_message_with_keyword, @@ -20,21 +19,6 @@ config_file = "tests/configs/llm_model_configs/openai-gpt-4o.json" -@pytest.fixture -def mock_e2b_api_key_none(): - # Store the original value of e2b_api_key - original_api_key = tool_settings.e2b_api_key - - # Set e2b_api_key to None - tool_settings.e2b_api_key = None - - # Yield control to the test - yield - - # Restore the original value of e2b_api_key - tool_settings.e2b_api_key = original_api_key - - """Contrived tools for this test case""" diff --git a/tests/test_client.py b/tests/test_client.py index 4ccf41ea3b..6a0db9933b 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -16,7 +16,6 @@ from letta.schemas.embedding_config import EmbeddingConfig from letta.schemas.llm_config import LLMConfig from letta.schemas.sandbox_config import LocalSandboxConfig, SandboxType -from letta.settings import tool_settings from letta.utils import create_random_username # Constants @@ -40,7 +39,7 @@ def run_server(): @pytest.fixture( - params=[{"server": False}], # whether to use REST API server + params=[{"server": False}, {"server": True}], # whether to use REST API server scope="module", ) def client(request): @@ -83,21 +82,6 @@ def clear_tables(): session.commit() -@pytest.fixture -def mock_e2b_api_key_none(): - # Store the original value of e2b_api_key - original_api_key = tool_settings.e2b_api_key - - # Set e2b_api_key to None - tool_settings.e2b_api_key = None - - # Yield control to the test - yield - - # Restore the original value of e2b_api_key - tool_settings.e2b_api_key = original_api_key - - def test_sandbox_config_and_env_var_basic(client: Union[LocalClient, RESTClient]): """ Test sandbox config and environment variable functions for both LocalClient and RESTClient. diff --git a/tests/test_client_legacy.py b/tests/test_client_legacy.py index f49e56ab77..b5bad0d869 100644 --- a/tests/test_client_legacy.py +++ b/tests/test_client_legacy.py @@ -27,9 +27,12 @@ ) from letta.schemas.letta_response import LettaResponse, LettaStreamingResponse from letta.schemas.llm_config import LLMConfig +from letta.schemas.message import Message from letta.schemas.usage import LettaUsageStatistics +from letta.services.organization_manager import OrganizationManager from letta.services.tool_manager import ToolManager -from letta.settings import model_settings, tool_settings +from letta.services.user_manager import UserManager +from letta.settings import model_settings from tests.helpers.client_helper import upload_file_using_client # from tests.utils import create_config @@ -54,21 +57,6 @@ def run_server(): start_server(debug=True) -@pytest.fixture -def mock_e2b_api_key_none(): - # Store the original value of e2b_api_key - original_api_key = tool_settings.e2b_api_key - - # Set e2b_api_key to None - tool_settings.e2b_api_key = None - - # Yield control to the test - yield - - # Restore the original value of e2b_api_key - tool_settings.e2b_api_key = original_api_key - - # Fixture to create clients with different configurations @pytest.fixture( # params=[{"server": True}, {"server": False}], # whether to use REST API server @@ -119,6 +107,22 @@ def agent(client: Union[LocalClient, RESTClient]): client.delete_agent(agent_state.id) +@pytest.fixture +def default_organization(): + """Fixture to create and return the default organization.""" + manager = OrganizationManager() + org = manager.create_default_organization() + yield org + + +@pytest.fixture +def default_user(default_organization): + """Fixture to create and return the default user within the default organization.""" + manager = UserManager() + user = manager.create_default_user(org_id=default_organization.id) + yield user + + def test_agent(mock_e2b_api_key_none, client: Union[LocalClient, RESTClient], agent: AgentState): # test client.rename_agent @@ -612,7 +616,7 @@ def test_shared_blocks(mock_e2b_api_key_none, client: Union[LocalClient, RESTCli @pytest.fixture -def cleanup_agents(): +def cleanup_agents(client): created_agents = [] yield created_agents # Cleanup will run even if test fails @@ -624,7 +628,7 @@ def cleanup_agents(): # NOTE: we need to add this back once agents can also create blocks during agent creation -def test_initial_message_sequence(client: Union[LocalClient, RESTClient], agent: AgentState, cleanup_agents: List[str]): +def test_initial_message_sequence(client: Union[LocalClient, RESTClient], agent: AgentState, cleanup_agents: List[str], default_user): """Test that we can set an initial message sequence If we pass in None, we should get a "default" message sequence @@ -638,11 +642,12 @@ def test_initial_message_sequence(client: Union[LocalClient, RESTClient], agent: reference_init_messages = initialize_message_sequence( model=agent.llm_config.model, system=agent.system, + agent_id=agent.id, memory=agent.memory, archival_memory=None, - recall_memory=None, memory_edit_timestamp=get_utc_time(), include_initial_boot_message=True, + actor=default_user, ) # system, login message, send_message test, send_message receipt @@ -661,24 +666,8 @@ def test_initial_message_sequence(client: Union[LocalClient, RESTClient], agent: # Test with empty sequence empty_agent_state = client.create_agent(name="test-empty-message-sequence", initial_message_sequence=[]) cleanup_agents.append(empty_agent_state.id) - # NOTE: allowed to be None initially - # assert empty_agent_state.message_ids is not None - # assert len(empty_agent_state.message_ids) == 1, f"Expected 0 messages, got {len(empty_agent_state.message_ids)}" - - # Test with custom sequence - # custom_sequence = [ - # Message( - # role=MessageRole.user, - # text="Hello, how are you?", - # user_id=agent.user_id, - # agent_id=agent.id, - # model=agent.llm_config.model, - # name=None, - # tool_calls=None, - # tool_call_id=None, - # ), - # ] - custom_sequence = [{"text": "Hello, how are you?", "role": "user"}] + + custom_sequence = [Message(**{"text": "Hello, how are you?", "role": "user"})] custom_agent_state = client.create_agent(name="test-custom-message-sequence", initial_message_sequence=custom_sequence) cleanup_agents.append(custom_agent_state.id) assert custom_agent_state.message_ids is not None @@ -687,7 +676,7 @@ def test_initial_message_sequence(client: Union[LocalClient, RESTClient], agent: ), f"Expected {len(custom_sequence) + 1} messages, got {len(custom_agent_state.message_ids)}" # assert custom_agent_state.message_ids[1:] == [msg.id for msg in custom_sequence] # shoule be contained in second message (after system message) - assert custom_sequence[0]["text"] in client.get_in_context_messages(custom_agent_state.id)[1].text + assert custom_sequence[0].text in client.get_in_context_messages(custom_agent_state.id)[1].text def test_add_and_manage_tags_for_agent(client: Union[LocalClient, RESTClient], agent: AgentState): diff --git a/tests/test_local_client.py b/tests/test_local_client.py index 74ab87afef..3aa947ba6d 100644 --- a/tests/test_local_client.py +++ b/tests/test_local_client.py @@ -8,7 +8,6 @@ from letta.schemas.embedding_config import EmbeddingConfig from letta.schemas.llm_config import LLMConfig from letta.schemas.memory import BasicBlockMemory, ChatMemory, Memory -from letta.schemas.tool import ToolCreate @pytest.fixture(scope="module") @@ -293,6 +292,10 @@ def print_tool2(msg: str): """ print(msg) + # Clean all tools first + for tool in client.list_tools(): + client.delete_tool(tool.id) + # create tool tool = client.create_or_update_tool(func=print_tool, tags=["extras"]) @@ -330,49 +333,50 @@ def test_tools_from_composio_basic(client: LocalClient): # The tool creation includes a compile safety check, so if this test doesn't error out, at least the code is compilable -def test_tools_from_langchain(client: LocalClient): - # create langchain tool - from langchain_community.tools import WikipediaQueryRun - from langchain_community.utilities import WikipediaAPIWrapper - - api_wrapper = WikipediaAPIWrapper(top_k_results=1, doc_content_chars_max=100) - langchain_tool = WikipediaQueryRun(api_wrapper=api_wrapper) - - # Add the tool - tool = client.load_langchain_tool( - langchain_tool, additional_imports_module_attr_map={"langchain_community.utilities": "WikipediaAPIWrapper"} - ) - - # list tools - tools = client.list_tools() - assert tool.name in [t.name for t in tools] - - # get tool - tool_id = client.get_tool_id(name=tool.name) - retrieved_tool = client.get_tool(tool_id) - source_code = retrieved_tool.source_code - - # Parse the function and attempt to use it - local_scope = {} - exec(source_code, {}, local_scope) - func = local_scope[tool.name] - - expected_content = "Albert Einstein" - assert expected_content in func(query="Albert Einstein") - - -def test_tool_creation_langchain_missing_imports(client: LocalClient): - # create langchain tool - from langchain_community.tools import WikipediaQueryRun - from langchain_community.utilities import WikipediaAPIWrapper - - api_wrapper = WikipediaAPIWrapper(top_k_results=1, doc_content_chars_max=100) - langchain_tool = WikipediaQueryRun(api_wrapper=api_wrapper) - - # Translate to memGPT Tool - # Intentionally missing {"langchain_community.utilities": "WikipediaAPIWrapper"} - with pytest.raises(RuntimeError): - ToolCreate.from_langchain(langchain_tool) +# TODO: Langchain seems to have issues with Pydantic +# TODO: Langchain tools are breaking every two weeks bc of changes on their side +# def test_tools_from_langchain(client: LocalClient): +# # create langchain tool +# from langchain_community.tools import WikipediaQueryRun +# from langchain_community.utilities import WikipediaAPIWrapper +# +# langchain_tool = WikipediaQueryRun(api_wrapper=WikipediaAPIWrapper()) +# +# # Add the tool +# tool = client.load_langchain_tool( +# langchain_tool, additional_imports_module_attr_map={"langchain_community.utilities": "WikipediaAPIWrapper"} +# ) +# +# # list tools +# tools = client.list_tools() +# assert tool.name in [t.name for t in tools] +# +# # get tool +# tool_id = client.get_tool_id(name=tool.name) +# retrieved_tool = client.get_tool(tool_id) +# source_code = retrieved_tool.source_code +# +# # Parse the function and attempt to use it +# local_scope = {} +# exec(source_code, {}, local_scope) +# func = local_scope[tool.name] +# +# expected_content = "Albert Einstein" +# assert expected_content in func(query="Albert Einstein") +# +# +# def test_tool_creation_langchain_missing_imports(client: LocalClient): +# # create langchain tool +# from langchain_community.tools import WikipediaQueryRun +# from langchain_community.utilities import WikipediaAPIWrapper +# +# api_wrapper = WikipediaAPIWrapper(top_k_results=1, doc_content_chars_max=100) +# langchain_tool = WikipediaQueryRun(api_wrapper=api_wrapper) +# +# # Translate to memGPT Tool +# # Intentionally missing {"langchain_community.utilities": "WikipediaAPIWrapper"} +# with pytest.raises(RuntimeError): +# ToolCreate.from_langchain(langchain_tool) def test_shared_blocks_without_send_message(client: LocalClient): diff --git a/tests/test_managers.py b/tests/test_managers.py index 20022cccd9..53107dfed5 100644 --- a/tests/test_managers.py +++ b/tests/test_managers.py @@ -1,4 +1,5 @@ import os +from datetime import datetime, timedelta import pytest from sqlalchemy import delete @@ -11,6 +12,7 @@ BlocksAgents, FileMetadata, Job, + Message, Organization, SandboxConfig, SandboxEnvironmentVariable, @@ -29,11 +31,12 @@ from letta.schemas.block import Block as PydanticBlock from letta.schemas.block import BlockUpdate, CreateBlock from letta.schemas.embedding_config import EmbeddingConfig -from letta.schemas.enums import JobStatus +from letta.schemas.enums import JobStatus, MessageRole from letta.schemas.file import FileMetadata as PydanticFileMetadata from letta.schemas.job import Job as PydanticJob from letta.schemas.job import JobUpdate from letta.schemas.llm_config import LLMConfig +from letta.schemas.message import Message as PydanticMessage from letta.schemas.organization import Organization as PydanticOrganization from letta.schemas.sandbox_config import ( E2BSandboxConfig, @@ -47,7 +50,7 @@ from letta.schemas.source import Source as PydanticSource from letta.schemas.source import SourceUpdate from letta.schemas.tool import Tool as PydanticTool -from letta.schemas.tool import ToolCreate, ToolUpdate +from letta.schemas.tool import ToolUpdate from letta.services.block_manager import BlockManager from letta.services.organization_manager import OrganizationManager from letta.services.tool_manager import ToolManager @@ -77,6 +80,7 @@ def clear_tables(server: SyncServer): """Fixture to clear the organization table before each test.""" with server.organization_manager.session_maker() as session: + session.execute(delete(Message)) session.execute(delete(Job)) session.execute(delete(ToolsAgents)) # Clear ToolsAgents first session.execute(delete(BlocksAgents)) @@ -191,6 +195,21 @@ def print_tool(message: str): yield tool +@pytest.fixture +def hello_world_message_fixture(server: SyncServer, default_user, sarah_agent): + """Fixture to create a tool with default settings and clean up after the test.""" + # Set up message + message = PydanticMessage( + organization_id=default_user.organization_id, + agent_id=sarah_agent.id, + role="user", + text="Hello, world!", + ) + + msg = server.message_manager.create_message(message, actor=default_user) + yield msg + + @pytest.fixture def sandbox_config_fixture(server: SyncServer, default_user): sandbox_config_create = SandboxConfigCreate( @@ -274,6 +293,7 @@ def print_other_tool(message: str): # Yield the created tool yield tool + @pytest.fixture(scope="module") def server(): config = LettaConfig.load() @@ -548,6 +568,163 @@ def test_delete_tool_by_id(server: SyncServer, print_tool, default_user): assert len(tools) == 0 +# ====================================================================================================================== +# Message Manager Tests +# ====================================================================================================================== + + +def test_message_create(server: SyncServer, hello_world_message_fixture, default_user): + """Test creating a message using hello_world_message_fixture fixture""" + assert hello_world_message_fixture.id is not None + assert hello_world_message_fixture.text == "Hello, world!" + assert hello_world_message_fixture.role == "user" + + # Verify we can retrieve it + retrieved = server.message_manager.get_message_by_id( + hello_world_message_fixture.id, + actor=default_user, + ) + assert retrieved is not None + assert retrieved.id == hello_world_message_fixture.id + assert retrieved.text == hello_world_message_fixture.text + assert retrieved.role == hello_world_message_fixture.role + + +def test_message_get_by_id(server: SyncServer, hello_world_message_fixture, default_user): + """Test retrieving a message by ID""" + retrieved = server.message_manager.get_message_by_id(hello_world_message_fixture.id, actor=default_user) + assert retrieved is not None + assert retrieved.id == hello_world_message_fixture.id + assert retrieved.text == hello_world_message_fixture.text + + +def test_message_update(server: SyncServer, hello_world_message_fixture, default_user): + """Test updating a message""" + new_text = "Updated text" + hello_world_message_fixture.text = new_text + updated = server.message_manager.update_message_by_id(hello_world_message_fixture.id, hello_world_message_fixture, actor=default_user) + assert updated is not None + assert updated.text == new_text + retrieved = server.message_manager.get_message_by_id(hello_world_message_fixture.id, actor=default_user) + assert retrieved.text == new_text + + +def test_message_delete(server: SyncServer, hello_world_message_fixture, default_user): + """Test deleting a message""" + server.message_manager.delete_message_by_id(hello_world_message_fixture.id, actor=default_user) + retrieved = server.message_manager.get_message_by_id(hello_world_message_fixture.id, actor=default_user) + assert retrieved is None + + +def test_message_size(server: SyncServer, hello_world_message_fixture, default_user): + """Test counting messages with filters""" + base_message = hello_world_message_fixture + + # Create additional test messages + messages = [ + PydanticMessage( + organization_id=default_user.organization_id, agent_id=base_message.agent_id, role=base_message.role, text=f"Test message {i}" + ) + for i in range(4) + ] + server.message_manager.create_many_messages(messages, actor=default_user) + + # Test total count + total = server.message_manager.size(actor=default_user, role=MessageRole.user) + assert total == 6 # login message + base message + 4 test messages + # TODO: change login message to be a system not user message + + # Test count with agent filter + agent_count = server.message_manager.size(actor=default_user, agent_id=base_message.agent_id, role=MessageRole.user) + assert agent_count == 6 + + # Test count with role filter + role_count = server.message_manager.size(actor=default_user, role=base_message.role) + assert role_count == 6 + + # Test count with non-existent filter + empty_count = server.message_manager.size(actor=default_user, agent_id="non-existent", role=MessageRole.user) + assert empty_count == 0 + + +def create_test_messages(server: SyncServer, base_message: PydanticMessage, default_user) -> list[PydanticMessage]: + """Helper function to create test messages for all tests""" + messages = [ + PydanticMessage( + organization_id=default_user.organization_id, agent_id=base_message.agent_id, role=base_message.role, text=f"Test message {i}" + ) + for i in range(4) + ] + server.message_manager.create_many_messages(messages, actor=default_user) + return messages + + +def test_message_listing_basic(server: SyncServer, hello_world_message_fixture, default_user, sarah_agent): + """Test basic message listing with limit""" + create_test_messages(server, hello_world_message_fixture, default_user) + + results = server.message_manager.list_user_messages_for_agent(agent_id=sarah_agent.id, limit=3, actor=default_user) + assert len(results) == 3 + + +def test_message_listing_cursor(server: SyncServer, hello_world_message_fixture, default_user, sarah_agent): + """Test cursor-based pagination functionality""" + create_test_messages(server, hello_world_message_fixture, default_user) + + # Make sure there are 5 messages + assert server.message_manager.size(actor=default_user, role=MessageRole.user) == 6 + + # Get first page + first_page = server.message_manager.list_user_messages_for_agent(agent_id=sarah_agent.id, actor=default_user, limit=3) + assert len(first_page) == 3 + + last_id_on_first_page = first_page[-1].id + + # Get second page + second_page = server.message_manager.list_user_messages_for_agent( + agent_id=sarah_agent.id, actor=default_user, cursor=last_id_on_first_page, limit=3 + ) + assert len(second_page) == 3 # Should have 2 remaining messages + assert all(r1.id != r2.id for r1 in first_page for r2 in second_page) + + +def test_message_listing_filtering(server: SyncServer, hello_world_message_fixture, default_user, sarah_agent): + """Test filtering messages by agent ID""" + create_test_messages(server, hello_world_message_fixture, default_user) + + agent_results = server.message_manager.list_user_messages_for_agent(agent_id=sarah_agent.id, actor=default_user, limit=10) + assert len(agent_results) == 6 # login message + base message + 4 test messages + assert all(msg.agent_id == hello_world_message_fixture.agent_id for msg in agent_results) + + +def test_message_listing_text_search(server: SyncServer, hello_world_message_fixture, default_user, sarah_agent): + """Test searching messages by text content""" + create_test_messages(server, hello_world_message_fixture, default_user) + + search_results = server.message_manager.list_user_messages_for_agent( + agent_id=sarah_agent.id, actor=default_user, query_text="Test message", limit=10 + ) + assert len(search_results) == 4 + assert all("Test message" in msg.text for msg in search_results) + + # Test no results + search_results = server.message_manager.list_user_messages_for_agent( + agent_id=sarah_agent.id, actor=default_user, query_text="Letta", limit=10 + ) + assert len(search_results) == 0 + + +def test_message_listing_date_range_filtering(server: SyncServer, hello_world_message_fixture, default_user, sarah_agent): + """Test filtering messages by date range""" + create_test_messages(server, hello_world_message_fixture, default_user) + now = datetime.utcnow() + + date_results = server.message_manager.list_user_messages_for_agent( + agent_id=sarah_agent.id, actor=default_user, start_date=now - timedelta(minutes=1), end_date=now + timedelta(minutes=1), limit=10 + ) + assert len(date_results) > 0 + + # ====================================================================================================================== # Block Manager Tests # ====================================================================================================================== @@ -1211,9 +1388,7 @@ def test_change_name_on_tool_reflects_in_tool_agents_table(server, sarah_agent, # Change the tool name new_name = "banana" - tool = server.tool_manager.update_tool_by_id( - tool_id=print_tool.id, tool_update=ToolUpdate(name=new_name), actor=default_user - ) + tool = server.tool_manager.update_tool_by_id(tool_id=print_tool.id, tool_update=ToolUpdate(name=new_name), actor=default_user) assert tool.name == new_name # Get the association @@ -1225,9 +1400,7 @@ def test_change_name_on_tool_reflects_in_tool_agents_table(server, sarah_agent, @pytest.mark.skipif(using_sqlite, reason="Skipped because using SQLite") def test_add_tool_to_agent_nonexistent_tool(server, sarah_agent, default_user): with pytest.raises(ForeignKeyConstraintViolationError): - server.tools_agents_manager.add_tool_to_agent( - agent_id=sarah_agent.id, tool_id="nonexistent_tool", tool_name="nonexistent_name" - ) + server.tools_agents_manager.add_tool_to_agent(agent_id=sarah_agent.id, tool_id="nonexistent_tool", tool_name="nonexistent_name") def test_add_tool_to_agent_duplicate_name(server, sarah_agent, default_user, print_tool, other_tool): @@ -1240,9 +1413,7 @@ def test_add_tool_to_agent_duplicate_name(server, sarah_agent, default_user, pri def test_remove_tool_with_name_from_agent(server, sarah_agent, default_user, print_tool): server.tools_agents_manager.add_tool_to_agent(agent_id=sarah_agent.id, tool_id=print_tool.id, tool_name=print_tool.name) - removed_tool = server.tools_agents_manager.remove_tool_with_name_from_agent( - agent_id=sarah_agent.id, tool_name=print_tool.name - ) + removed_tool = server.tools_agents_manager.remove_tool_with_name_from_agent(agent_id=sarah_agent.id, tool_name=print_tool.name) assert removed_tool.tool_name == print_tool.name assert removed_tool.tool_id == print_tool.id @@ -1280,6 +1451,7 @@ def test_add_tool_to_agent_with_deleted_tool(server, sarah_agent, default_user, with pytest.raises(ForeignKeyConstraintViolationError): server.tools_agents_manager.add_tool_to_agent(agent_id=sarah_agent.id, tool_id=print_tool.id, tool_name=print_tool.name) + def test_remove_all_agent_tools(server, sarah_agent, default_user, print_tool, other_tool): server.tools_agents_manager.add_tool_to_agent(agent_id=sarah_agent.id, tool_id=print_tool.id, tool_name=print_tool.name) server.tools_agents_manager.add_tool_to_agent(agent_id=sarah_agent.id, tool_id=other_tool.id, tool_name=other_tool.name) @@ -1290,6 +1462,7 @@ def test_remove_all_agent_tools(server, sarah_agent, default_user, print_tool, o assert not retrieved_tool_ids + # ====================================================================================================================== # JobManager Tests # ====================================================================================================================== diff --git a/tests/test_offline_memory_agent.py b/tests/test_offline_memory_agent.py index b78e2274c8..d642d159c6 100644 --- a/tests/test_offline_memory_agent.py +++ b/tests/test_offline_memory_agent.py @@ -1,30 +1,40 @@ -import json +import pytest from letta import BasicBlockMemory -from letta import offline_memory_agent from letta.client.client import Block, create_client from letta.constants import DEFAULT_HUMAN, DEFAULT_PERSONA from letta.offline_memory_agent import ( - rethink_memory, finish_rethinking_memory, - rethink_memory_convo, finish_rethinking_memory_convo, + rethink_memory, + rethink_memory_convo, trigger_rethink_memory, - trigger_rethink_memory_convo, ) from letta.prompts import gpt_system from letta.schemas.agent import AgentType from letta.schemas.embedding_config import EmbeddingConfig from letta.schemas.llm_config import LLMConfig -from letta.schemas.message import MessageCreate from letta.schemas.tool_rule import TerminalToolRule from letta.utils import get_human_text, get_persona_text -def test_ripple_edit(): +@pytest.fixture(scope="module") +def client(): client = create_client() - assert client is not None - trigger_rethink_memory_tool = client.create_tool(trigger_rethink_memory) + client.set_default_llm_config(LLMConfig.default_config("gpt-4o-mini")) + client.set_default_embedding_config(EmbeddingConfig.default_config(provider="openai")) + + yield client + + +@pytest.fixture(autouse=True) +def clear_agents(client): + for agent in client.list_agents(): + client.delete_agent(agent.id) + + +def test_ripple_edit(client, mock_e2b_api_key_none): + trigger_rethink_memory_tool = client.create_or_update_tool(trigger_rethink_memory) conversation_human_block = Block(name="human", label="human", value=get_human_text(DEFAULT_HUMAN), limit=2000) conversation_persona_block = Block(name="persona", label="persona", value=get_persona_text(DEFAULT_PERSONA), limit=2000) @@ -61,12 +71,7 @@ def test_ripple_edit(): ) assert conversation_agent is not None - assert set(conversation_agent.memory.list_block_labels()) == set([ - "persona", - "human", - "fact_block", - "rethink_memory_block", - ]) + assert set(conversation_agent.memory.list_block_labels()) == {"persona", "human", "fact_block", "rethink_memory_block"} rethink_memory_tool = client.create_tool(rethink_memory) finish_rethinking_memory_tool = client.create_tool(finish_rethinking_memory) @@ -82,7 +87,7 @@ def test_ripple_edit(): include_base_tools=False, ) assert offline_memory_agent is not None - assert set(offline_memory_agent.memory.list_block_labels())== set(["persona", "human", "fact_block", "rethink_memory_block"]) + assert set(offline_memory_agent.memory.list_block_labels()) == {"persona", "human", "fact_block", "rethink_memory_block"} response = client.user_message( agent_id=conversation_agent.id, message="[trigger_rethink_memory]: Messi has now moved to playing for Inter Miami" ) @@ -92,12 +97,14 @@ def test_ripple_edit(): conversation_agent = client.get_agent(agent_id=conversation_agent.id) assert conversation_agent.memory.get_block("rethink_memory_block").value != "[empty]" + # Clean up agent + client.create_agent(conversation_agent.id) + client.delete_agent(offline_memory_agent.id) -def test_chat_only_agent(): - client = create_client() - rethink_memory = client.create_tool(rethink_memory_convo) - finish_rethinking_memory = client.create_tool(finish_rethinking_memory_convo) +def test_chat_only_agent(client, mock_e2b_api_key_none): + rethink_memory = client.create_or_update_tool(rethink_memory_convo) + finish_rethinking_memory = client.create_or_update_tool(finish_rethinking_memory_convo) conversation_human_block = Block(name="chat_agent_human", label="chat_agent_human", value=get_human_text(DEFAULT_HUMAN), limit=2000) conversation_persona_block = Block( @@ -114,10 +121,10 @@ def test_chat_only_agent(): tools=["send_message"], memory=conversation_memory, include_base_tools=False, - metadata = {"offline_memory_tools": [rethink_memory.name, finish_rethinking_memory.name]} + metadata={"offline_memory_tools": [rethink_memory.name, finish_rethinking_memory.name]}, ) assert chat_only_agent is not None - assert set(chat_only_agent.memory.list_block_labels()) == set(["chat_agent_persona", "chat_agent_human"]) + assert set(chat_only_agent.memory.list_block_labels()) == {"chat_agent_persona", "chat_agent_human"} for message in ["hello", "my name is not chad, my name is swoodily"]: client.send_message(agent_id=chat_only_agent.id, message=message, role="user") @@ -125,3 +132,6 @@ def test_chat_only_agent(): chat_only_agent = client.get_agent(agent_id=chat_only_agent.id) assert chat_only_agent.memory.get_block("chat_agent_human").value != get_human_text(DEFAULT_HUMAN) + + # Clean up agent + client.delete_agent(chat_only_agent.id) diff --git a/tests/test_server.py b/tests/test_server.py index 44c08c5cdb..c85f12ca38 100644 --- a/tests/test_server.py +++ b/tests/test_server.py @@ -17,7 +17,6 @@ SystemMessage, UserMessage, ) -from letta.schemas.message import Message from letta.schemas.user import User from .test_managers import DEFAULT_EMBEDDING_CONFIG @@ -91,7 +90,7 @@ def agent_id(server, user_id): def test_error_on_nonexistent_agent(server, user_id, agent_id): try: - fake_agent_id = uuid.uuid4() + fake_agent_id = str(uuid.uuid4()) server.user_message(user_id=user_id, agent_id=fake_agent_id, message="Hello?") raise Exception("user_message call should have failed") except (KeyError, ValueError) as e: @@ -388,7 +387,7 @@ def _test_get_messages_letta_format( agent_id, reverse=False, ): - """Reverse is off by default, the GET goes in chronological order""" + """Test mapping between messages and letta_messages with reverse=False.""" messages = server.get_agent_recall_cursor( user_id=user_id, @@ -397,7 +396,6 @@ def _test_get_messages_letta_format( reverse=reverse, return_message_object=True, ) - # messages = server.get_agent_messages(agent_id=agent_id, start=0, count=1000) assert all(isinstance(m, Message) for m in messages) letta_messages = server.get_agent_recall_cursor( @@ -407,140 +405,96 @@ def _test_get_messages_letta_format( reverse=reverse, return_message_object=False, ) - # letta_messages = server.get_agent_messages(agent_id=agent_id, start=0, count=1000, return_message_object=False) assert all(isinstance(m, LettaMessage) for m in letta_messages) - # Loop through `messages` while also looping through `letta_messages` - # Each message in `messages` should have 1+ corresponding messages in `letta_messages` - # If role of message (in `messages`) is `assistant`, - # then there should be two messages in `letta_messages`, one which is type InternalMonologue and one which is type FunctionCallMessage. - # If role of message (in `messages`) is `user`, then there should be one message in `letta_messages` which is type UserMessage. - # If role of message (in `messages`) is `system`, then there should be one message in `letta_messages` which is type SystemMessage. - # If role of message (in `messages`) is `tool`, then there should be one message in `letta_messages` which is type FunctionReturn. - - print("MESSAGES (obj):") - for i, m in enumerate(messages): - # print(m) - print(f"{i}: {m.role}, {m.text[:50]}...") - # print(m.role) - - print("MEMGPT_MESSAGES:") - for i, m in enumerate(letta_messages): - print(f"{i}: {type(m)} ...{str(m)[-50:]}") - - # Collect system messages and their texts - system_messages = [m for m in messages if m.role == MessageRole.system] - system_texts = [m.text for m in system_messages] - - # If there are multiple system messages, print the diff - if len(system_messages) > 1: - print("Differences between system messages:") - for i in range(len(system_texts) - 1): - for j in range(i + 1, len(system_texts)): - import difflib - - diff = difflib.unified_diff( - system_texts[i].splitlines(), - system_texts[j].splitlines(), - fromfile=f"System Message {i+1}", - tofile=f"System Message {j+1}", - lineterm="", - ) - print("\n".join(diff)) - else: - print("There is only one or no system message.") + print(f"Messages: {len(messages)}, LettaMessages: {len(letta_messages)}") letta_message_index = 0 for i, message in enumerate(messages): assert isinstance(message, Message) - print(f"\n\nmessage {i}: {message.role}, {message.text[:50] if message.text else 'null'}") + # Defensive bounds check for letta_messages + if letta_message_index >= len(letta_messages): + print(f"Error: letta_message_index out of range. Expected more letta_messages for message {i}: {message.role}") + raise ValueError(f"Mismatch in letta_messages length. Index: {letta_message_index}, Length: {len(letta_messages)}") + + print(f"Processing message {i}: {message.role}, {message.text[:50] if message.text else 'null'}") while letta_message_index < len(letta_messages): letta_message = letta_messages[letta_message_index] - print(f"letta_message {letta_message_index}: {str(letta_message)[:50]}") + # Validate mappings for assistant role if message.role == MessageRole.assistant: - print(f"i={i}, M=assistant, MM={type(letta_message)}") + print(f"Assistant Message at {i}: {type(letta_message)}") - # If reverse, function call will come first if reverse: - - # If there are multiple tool calls, we should have multiple back to back FunctionCallMessages - if message.tool_calls is not None: + # Reverse handling: FunctionCallMessages come first + if message.tool_calls: for tool_call in message.tool_calls: - - # Try to parse the tool call args try: json.loads(tool_call.function.arguments) - except: - warnings.warn(f"Function call arguments are not valid JSON: {tool_call.function.arguments}") - + except json.JSONDecodeError: + warnings.warn(f"Invalid JSON in function arguments: {tool_call.function.arguments}") assert isinstance(letta_message, FunctionCallMessage) letta_message_index += 1 + if letta_message_index >= len(letta_messages): + break letta_message = letta_messages[letta_message_index] - if message.text is not None: + if message.text: assert isinstance(letta_message, InternalMonologue) letta_message_index += 1 - letta_message = letta_messages[letta_message_index] else: - # If there's no inner thoughts then there needs to be a tool call assert message.tool_calls is not None - else: - - if message.text is not None: + else: # Non-reverse handling + if message.text: assert isinstance(letta_message, InternalMonologue) letta_message_index += 1 + if letta_message_index >= len(letta_messages): + break letta_message = letta_messages[letta_message_index] - else: - # If there's no inner thoughts then there needs to be a tool call - assert message.tool_calls is not None - # If there are multiple tool calls, we should have multiple back to back FunctionCallMessages - if message.tool_calls is not None: + if message.tool_calls: for tool_call in message.tool_calls: - - # Try to parse the tool call args try: json.loads(tool_call.function.arguments) - except: - warnings.warn(f"Function call arguments are not valid JSON: {tool_call.function.arguments}") - + except json.JSONDecodeError: + warnings.warn(f"Invalid JSON in function arguments: {tool_call.function.arguments}") assert isinstance(letta_message, FunctionCallMessage) assert tool_call.function.name == letta_message.function_call.name assert tool_call.function.arguments == letta_message.function_call.arguments letta_message_index += 1 + if letta_message_index >= len(letta_messages): + break letta_message = letta_messages[letta_message_index] elif message.role == MessageRole.user: - print(f"i={i}, M=user, MM={type(letta_message)}") assert isinstance(letta_message, UserMessage) assert message.text == letta_message.message letta_message_index += 1 elif message.role == MessageRole.system: - print(f"i={i}, M=system, MM={type(letta_message)}") assert isinstance(letta_message, SystemMessage) assert message.text == letta_message.message letta_message_index += 1 elif message.role == MessageRole.tool: - print(f"i={i}, M=tool, MM={type(letta_message)}") assert isinstance(letta_message, FunctionReturn) - # Check the the value in `text` is the same assert message.text == letta_message.function_return letta_message_index += 1 else: raise ValueError(f"Unexpected message role: {message.role}") - # Move to the next message in the original messages list - break + break # Exit the letta_messages loop after processing one mapping + + if letta_message_index < len(letta_messages): + warnings.warn(f"Extra letta_messages found: {len(letta_messages) - letta_message_index}") def test_get_messages_letta_format(server, user_id, agent_id): - for reverse in [False, True]: + # for reverse in [False, True]: + for reverse in [False]: _test_get_messages_letta_format(server, user_id, agent_id, reverse=reverse) @@ -586,7 +540,7 @@ def ingest(message: str): ''' -def test_tool_run(server, user_id, agent_id): +def test_tool_run(server, mock_e2b_api_key_none, user_id, agent_id): """Test that the server can run tools""" result = server.run_tool_from_source( @@ -672,7 +626,7 @@ def test_composio_client_simple(server): assert len(actions) > 0 -def test_memory_rebuild_count(server, user_id): +def test_memory_rebuild_count(server, user_id, mock_e2b_api_key_none): """Test that the memory rebuild is generating the correct number of role=system messages""" # create agent @@ -712,7 +666,6 @@ def count_system_messages_in_recall() -> Tuple[int, List[LettaMessage]]: return len(system_messages), letta_messages try: - # At this stage, there should only be 1 system message inside of recall storage num_system_messages, all_messages = count_system_messages_in_recall() # assert num_system_messages == 1, (num_system_messages, all_messages) diff --git a/tests/test_storage.py b/tests/test_storage.py deleted file mode 100644 index 1726e91279..0000000000 --- a/tests/test_storage.py +++ /dev/null @@ -1,318 +0,0 @@ -# TODO: add back post DB refactor - -# import os -# import uuid -# from datetime import datetime, timedelta -# -# import pytest -# from sqlalchemy.ext.declarative import declarative_base -# -# from letta.agent_store.storage import StorageConnector, TableType -# from letta.config import LettaConfig -# from letta.constants import BASE_TOOLS, MAX_EMBEDDING_DIM -# from letta.credentials import LettaCredentials -# from letta.embeddings import embedding_model, query_embedding -# from letta.metadata import MetadataStore -# from letta.settings import settings -# from tests import TEST_MEMGPT_CONFIG -# from tests.utils import create_config, wipe_config -# -# from .utils import with_qdrant_storage -# -# from letta.schemas.agent import AgentState -# from letta.schemas.message import Message -# from letta.schemas.passage import Passage -# from letta.schemas.user import User -# -# -## Note: the database will filter out rows that do not correspond to agent1 and test_user by default. -# texts = ["This is a test passage", "This is another test passage", "Cinderella wept"] -# start_date = datetime(2009, 10, 5, 18, 00) -# dates = [start_date, start_date - timedelta(weeks=1), start_date + timedelta(weeks=1)] -# roles = ["user", "assistant", "assistant"] -# agent_1_id = uuid.uuid4() -# agent_2_id = uuid.uuid4() -# agent_ids = [agent_1_id, agent_2_id, agent_1_id] -# ids = [uuid.uuid4(), uuid.uuid4(), uuid.uuid4()] -# user_id = uuid.uuid4() -# -# -## Data generation functions: Passages -# def generate_passages(embed_model): -# """Generate list of 3 Passage objects""" -# # embeddings: use openai if env is set, otherwise local -# passages = [] -# for text, _, _, agent_id, id in zip(texts, dates, roles, agent_ids, ids): -# embedding, embedding_model, embedding_dim = None, None, None -# if embed_model: -# embedding = embed_model.get_text_embedding(text) -# embedding_model = "gpt-4" -# embedding_dim = len(embedding) -# passages.append( -# Passage( -# user_id=user_id, -# text=text, -# agent_id=agent_id, -# embedding=embedding, -# data_source="test_source", -# id=id, -# embedding_dim=embedding_dim, -# embedding_model=embedding_model, -# ) -# ) -# return passages -# -# -## Data generation functions: Messages -# def generate_messages(embed_model): -# """Generate list of 3 Message objects""" -# messages = [] -# for text, date, role, agent_id, id in zip(texts, dates, roles, agent_ids, ids): -# embedding, embedding_model, embedding_dim = None, None, None -# if embed_model: -# embedding = embed_model.get_text_embedding(text) -# embedding_model = "gpt-4" -# embedding_dim = len(embedding) -# messages.append( -# Message( -# user_id=user_id, -# text=text, -# agent_id=agent_id, -# role=role, -# created_at=date, -# id=id, -# model="gpt-4", -# embedding=embedding, -# embedding_model=embedding_model, -# embedding_dim=embedding_dim, -# ) -# ) -# print(messages[-1].text) -# return messages -# -# -# @pytest.fixture(autouse=True) -# def clear_dynamically_created_models(): -# """Wipe globals for SQLAlchemy""" -# yield -# for key in list(globals().keys()): -# if key.endswith("Model"): -# del globals()[key] -# -# -# @pytest.fixture(autouse=True) -# def recreate_declarative_base(): -# """Recreate the declarative base before each test""" -# global Base -# Base = declarative_base() -# yield -# Base.metadata.clear() -# -# -# @pytest.mark.parametrize("storage_connector", with_qdrant_storage(["postgres", "chroma", "sqlite", "milvus"])) -## @pytest.mark.parametrize("storage_connector", ["sqlite", "chroma"]) -## @pytest.mark.parametrize("storage_connector", ["postgres"]) -# @pytest.mark.parametrize("table_type", [TableType.RECALL_MEMORY, TableType.ARCHIVAL_MEMORY]) -# def test_storage( -# storage_connector, -# table_type, -# clear_dynamically_created_models, -# recreate_declarative_base, -# ): -# # setup letta config -# # TODO: set env for different config path -# -# # hacky way to cleanup globals that scruw up tests -# # for table_name in ['Message']: -# # if 'Message' in globals(): -# # print("Removing messages", globals()['Message']) -# # del globals()['Message'] -# -# wipe_config() -# if os.getenv("OPENAI_API_KEY"): -# create_config("openai") -# credentials = LettaCredentials( -# openai_key=os.getenv("OPENAI_API_KEY"), -# ) -# else: # hosted -# create_config("letta_hosted") -# LettaCredentials() -# -# config = LettaConfig.load() -# TEST_MEMGPT_CONFIG.default_embedding_config = config.default_embedding_config -# TEST_MEMGPT_CONFIG.default_llm_config = config.default_llm_config -# -# if storage_connector == "postgres": -# TEST_MEMGPT_CONFIG.archival_storage_uri = settings.letta_pg_uri -# TEST_MEMGPT_CONFIG.recall_storage_uri = settings.letta_pg_uri -# TEST_MEMGPT_CONFIG.archival_storage_type = "postgres" -# TEST_MEMGPT_CONFIG.recall_storage_type = "postgres" -# if storage_connector == "lancedb": -# # TODO: complete lancedb implementation -# if not os.getenv("LANCEDB_TEST_URL"): -# print("Skipping test, missing LanceDB URI") -# return -# TEST_MEMGPT_CONFIG.archival_storage_uri = os.environ["LANCEDB_TEST_URL"] -# TEST_MEMGPT_CONFIG.recall_storage_uri = os.environ["LANCEDB_TEST_URL"] -# TEST_MEMGPT_CONFIG.archival_storage_type = "lancedb" -# TEST_MEMGPT_CONFIG.recall_storage_type = "lancedb" -# if storage_connector == "chroma": -# if table_type == TableType.RECALL_MEMORY: -# print("Skipping test, chroma only supported for archival memory") -# return -# TEST_MEMGPT_CONFIG.archival_storage_type = "chroma" -# TEST_MEMGPT_CONFIG.archival_storage_path = "./test_chroma" -# if storage_connector == "sqlite": -# if table_type == TableType.ARCHIVAL_MEMORY: -# print("Skipping test, sqlite only supported for recall memory") -# return -# TEST_MEMGPT_CONFIG.recall_storage_type = "sqlite" -# if storage_connector == "qdrant": -# if table_type == TableType.RECALL_MEMORY: -# print("Skipping test, Qdrant only supports archival memory") -# return -# TEST_MEMGPT_CONFIG.archival_storage_type = "qdrant" -# TEST_MEMGPT_CONFIG.archival_storage_uri = "localhost:6333" -# if storage_connector == "milvus": -# if table_type == TableType.RECALL_MEMORY: -# print("Skipping test, Milvus only supports archival memory") -# return -# TEST_MEMGPT_CONFIG.archival_storage_type = "milvus" -# TEST_MEMGPT_CONFIG.archival_storage_uri = "./milvus.db" -# # get embedding model -# embedding_config = TEST_MEMGPT_CONFIG.default_embedding_config -# embed_model = embedding_model(TEST_MEMGPT_CONFIG.default_embedding_config) -# -# # create user -# ms = MetadataStore(TEST_MEMGPT_CONFIG) -# ms.delete_user(user_id) -# user = User(id=user_id) -# agent = AgentState( -# user_id=user_id, -# name="agent_1", -# id=agent_1_id, -# llm_config=TEST_MEMGPT_CONFIG.default_llm_config, -# embedding_config=TEST_MEMGPT_CONFIG.default_embedding_config, -# system="", -# tools=BASE_TOOLS, -# state={ -# "persona": "", -# "human": "", -# "messages": None, -# }, -# ) -# ms.create_user(user) -# ms.create_agent(agent) -# -# # create storage connector -# conn = StorageConnector.get_storage_connector(table_type, config=TEST_MEMGPT_CONFIG, user_id=user_id, agent_id=agent.id) -# # conn.client.delete_collection(conn.collection.name) # clear out data -# conn.delete_table() -# conn = StorageConnector.get_storage_connector(table_type, config=TEST_MEMGPT_CONFIG, user_id=user_id, agent_id=agent.id) -# -# # generate data -# if table_type == TableType.ARCHIVAL_MEMORY: -# records = generate_passages(embed_model) -# elif table_type == TableType.RECALL_MEMORY: -# records = generate_messages(embed_model) -# else: -# raise NotImplementedError(f"Table type {table_type} not implemented") -# -# # check record dimentions -# print("TABLE TYPE", table_type, type(records[0]), len(records[0].embedding)) -# if embed_model: -# assert len(records[0].embedding) == MAX_EMBEDDING_DIM, f"Expected {MAX_EMBEDDING_DIM}, got {len(records[0].embedding)}" -# assert ( -# records[0].embedding_dim == embedding_config.embedding_dim -# ), f"Expected {embedding_config.embedding_dim}, got {records[0].embedding_dim}" -# -# # test: insert -# conn.insert(records[0]) -# assert conn.size() == 1, f"Expected 1 record, got {conn.size()}: {conn.get_all()}" -# -# # test: insert_many -# conn.insert_many(records[1:]) -# assert ( -# conn.size() == 2 -# ), f"Expected 2 records, got {conn.size()}: {conn.get_all()}" # expect 2, since storage connector filters for agent1 -# -# # test: update -# # NOTE: only testing with messages -# if table_type == TableType.RECALL_MEMORY: -# TEST_STRING = "hello world" -# -# updated_record = records[1] -# updated_record.text = TEST_STRING -# -# current_record = conn.get(id=updated_record.id) -# assert current_record is not None, f"Couldn't find {updated_record.id}" -# assert current_record.text != TEST_STRING, (current_record.text, TEST_STRING) -# -# conn.update(updated_record) -# new_record = conn.get(id=updated_record.id) -# assert new_record is not None, f"Couldn't find {updated_record.id}" -# assert new_record.text == TEST_STRING, (new_record.text, TEST_STRING) -# -# # test: list_loaded_data -# # TODO: add back -# # if table_type == TableType.ARCHIVAL_MEMORY: -# # sources = StorageConnector.list_loaded_data(storage_type=storage_connector) -# # assert len(sources) == 1, f"Expected 1 source, got {len(sources)}" -# # assert sources[0] == "test_source", f"Expected 'test_source', got {sources[0]}" -# -# # test: get_all_paginated -# paginated_total = 0 -# for page in conn.get_all_paginated(page_size=1): -# paginated_total += len(page) -# assert paginated_total == 2, f"Expected 2 records, got {paginated_total}" -# -# # test: get_all -# all_records = conn.get_all() -# assert len(all_records) == 2, f"Expected 2 records, got {len(all_records)}" -# all_records = conn.get_all(limit=1) -# assert len(all_records) == 1, f"Expected 1 records, got {len(all_records)}" -# -# # test: get -# print("GET ID", ids[0], records) -# res = conn.get(id=ids[0]) -# assert res.text == texts[0], f"Expected {texts[0]}, got {res.text}" -# -# # test: size -# assert conn.size() == 2, f"Expected 2 records, got {conn.size()}" -# assert conn.size(filters={"agent_id": agent.id}) == 2, f"Expected 2 records, got {conn.size(filters={'agent_id', agent.id})}" -# if table_type == TableType.RECALL_MEMORY: -# assert conn.size(filters={"role": "user"}) == 1, f"Expected 1 record, got {conn.size(filters={'role': 'user'})}" -# -# # test: query (vector) -# if table_type == TableType.ARCHIVAL_MEMORY: -# query = "why was she crying" -# query_vec = query_embedding(embed_model, query) -# res = conn.query(None, query_vec, top_k=2) -# assert len(res) == 2, f"Expected 2 results, got {len(res)}" -# print("Archival memory results", res) -# assert "wept" in res[0].text, f"Expected 'wept' in results, but got {res[0].text}" -# -# # test optional query functions for recall memory -# if table_type == TableType.RECALL_MEMORY: -# # test: query_text -# query = "CindereLLa" -# res = conn.query_text(query) -# assert len(res) == 1, f"Expected 1 result, got {len(res)}" -# assert "Cinderella" in res[0].text, f"Expected 'Cinderella' in results, but got {res[0].text}" -# -# # test: query_date (recall memory only) -# print("Testing recall memory date search") -# start_date = datetime(2009, 10, 5, 18, 00) -# start_date = start_date - timedelta(days=1) -# end_date = start_date + timedelta(days=1) -# res = conn.query_date(start_date=start_date, end_date=end_date) -# print("DATE", res) -# assert len(res) == 1, f"Expected 1 result, got {len(res)}: {res}" -# -# # test: delete -# conn.delete({"id": ids[0]}) -# assert conn.size() == 1, f"Expected 2 records, got {conn.size()}" -# -# # cleanup -# ms.delete_user(user_id) -# diff --git a/tests/test_summarize.py b/tests/test_summarize.py index 90499d5fb3..4bf180e108 100644 --- a/tests/test_summarize.py +++ b/tests/test_summarize.py @@ -1,14 +1,11 @@ import uuid from typing import List -import pytest - from letta import create_client from letta.client.client import LocalClient from letta.schemas.embedding_config import EmbeddingConfig from letta.schemas.llm_config import LLMConfig from letta.schemas.message import Message -from letta.settings import tool_settings from .utils import wipe_config @@ -21,21 +18,6 @@ # TODO: these tests should add function calls into the summarized message sequence:W -@pytest.fixture -def mock_e2b_api_key_none(): - # Store the original value of e2b_api_key - original_api_key = tool_settings.e2b_api_key - - # Set e2b_api_key to None - tool_settings.e2b_api_key = None - - # Yield control to the test - yield - - # Restore the original value of e2b_api_key - tool_settings.e2b_api_key = original_api_key - - def create_test_agent(): """Create a test agent that we can call functions on""" wipe_config() From 48f38e6286b87270aa0041da0f833b39e96f5b51 Mon Sep 17 00:00:00 2001 From: Charles Packer Date: Fri, 6 Dec 2024 13:04:31 -0800 Subject: [PATCH 02/39] feat: added new workflow to warn about poetry diffs (#2179) --- .github/workflows/warn_poetry_updates.yml | 63 +++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 .github/workflows/warn_poetry_updates.yml diff --git a/.github/workflows/warn_poetry_updates.yml b/.github/workflows/warn_poetry_updates.yml new file mode 100644 index 0000000000..74478c9943 --- /dev/null +++ b/.github/workflows/warn_poetry_updates.yml @@ -0,0 +1,63 @@ +name: Check Poetry Dependencies Changes + +on: + pull_request: + paths: + - 'poetry.lock' + - 'pyproject.toml' + +jobs: + check-poetry-changes: + runs-on: ubuntu-latest + permissions: + pull-requests: write + + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Check for poetry.lock changes + id: check-poetry-lock + run: | + if git diff --name-only ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} | grep -q "poetry.lock"; then + echo "poetry_lock_changed=true" >> $GITHUB_OUTPUT + else + echo "poetry_lock_changed=false" >> $GITHUB_OUTPUT + fi + + - name: Check for pyproject.toml changes + id: check-pyproject + run: | + if git diff --name-only ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} | grep -q "pyproject.toml"; then + echo "pyproject_changed=true" >> $GITHUB_OUTPUT + else + echo "pyproject_changed=false" >> $GITHUB_OUTPUT + fi + + - name: Create PR comment + if: steps.check-poetry-lock.outputs.poetry_lock_changed == 'true' || steps.check-pyproject.outputs.pyproject_changed == 'true' + uses: actions/github-script@v7 + with: + script: | + const poetryLockChanged = ${{ steps.check-poetry-lock.outputs.poetry_lock_changed }}; + const pyprojectChanged = ${{ steps.check-pyproject.outputs.pyproject_changed }}; + + let message = '📦 Dependencies Alert:\n\n'; + + if (poetryLockChanged && pyprojectChanged) { + message += '- Both `poetry.lock` and `pyproject.toml` have been modified\n'; + } else if (poetryLockChanged) { + message += '- `poetry.lock` has been modified\n'; + } else if (pyprojectChanged) { + message += '- `pyproject.toml` has been modified\n'; + } + + message += '\nPlease review these changes carefully to ensure they are intended (cc @sarahwooders @cpacker).'; + + github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: message + }); From d0ad9bddd9ada11dab0a3e36fd94d4ee51ec0297 Mon Sep 17 00:00:00 2001 From: Charles Packer Date: Fri, 6 Dec 2024 13:05:30 -0800 Subject: [PATCH 03/39] fix: fix runtime warnings with the server (#2178) --- letta/server/rest_api/routers/v1/agents.py | 2 +- letta/server/rest_api/routers/v1/blocks.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/letta/server/rest_api/routers/v1/agents.py b/letta/server/rest_api/routers/v1/agents.py index 6a583c3a3c..20661ef9b7 100644 --- a/letta/server/rest_api/routers/v1/agents.py +++ b/letta/server/rest_api/routers/v1/agents.py @@ -465,7 +465,7 @@ async def send_message( @router.post( "/{agent_id}/messages/stream", response_model=None, - operation_id="create_agent_message", + operation_id="create_agent_message_stream", responses={ 200: { "description": "Successful response", diff --git a/letta/server/rest_api/routers/v1/blocks.py b/letta/server/rest_api/routers/v1/blocks.py index 798e7aa4ac..f58172d6f2 100644 --- a/letta/server/rest_api/routers/v1/blocks.py +++ b/letta/server/rest_api/routers/v1/blocks.py @@ -76,7 +76,7 @@ def get_block( raise HTTPException(status_code=404, detail="Block not found") -@router.patch("/{block_id}/attach", response_model=Block, operation_id="update_agent_memory_block") +@router.patch("/{block_id}/attach", response_model=Block, operation_id="link_agent_memory_block") def link_agent_memory_block( block_id: str, agent_id: str = Query(..., description="The unique identifier of the agent to attach the source to."), @@ -96,7 +96,7 @@ def link_agent_memory_block( return block -@router.patch("/{block_id}/detach", response_model=Memory, operation_id="update_agent_memory_block") +@router.patch("/{block_id}/detach", response_model=Memory, operation_id="unlink_agent_memory_block") def unlink_agent_memory_block( block_id: str, agent_id: str = Query(..., description="The unique identifier of the agent to attach the source to."), From b7105a2e375a45e8a636274b1b9e9a6a1883819b Mon Sep 17 00:00:00 2001 From: Shubham Naik Date: Fri, 6 Dec 2024 19:56:02 -0800 Subject: [PATCH 04/39] chore: add new ui (#2182) Co-authored-by: Shubham Naik --- .../static_files/assets/index-1b5d1a41.js | 271 ------------------ .../static_files/assets/index-43ab4d62.css | 1 + .../static_files/assets/index-4848e3d7.js | 40 +++ .../static_files/assets/index-56a3f8c6.css | 1 - letta/server/static_files/index.html | 4 +- 5 files changed, 43 insertions(+), 274 deletions(-) delete mode 100644 letta/server/static_files/assets/index-1b5d1a41.js create mode 100644 letta/server/static_files/assets/index-43ab4d62.css create mode 100644 letta/server/static_files/assets/index-4848e3d7.js delete mode 100644 letta/server/static_files/assets/index-56a3f8c6.css diff --git a/letta/server/static_files/assets/index-1b5d1a41.js b/letta/server/static_files/assets/index-1b5d1a41.js deleted file mode 100644 index 076048c044..0000000000 --- a/letta/server/static_files/assets/index-1b5d1a41.js +++ /dev/null @@ -1,271 +0,0 @@ -var qh=(e,t,n)=>{if(!t.has(e))throw TypeError("Cannot "+n)};var $=(e,t,n)=>(qh(e,t,"read from private field"),n?n.call(e):t.get(e)),xe=(e,t,n)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,n)},me=(e,t,n,r)=>(qh(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n),Tf=(e,t,n,r)=>({set _(a){me(e,t,a,n)},get _(){return $(e,t,r)}}),Ue=(e,t,n)=>(qh(e,t,"access private method"),n);function yP(e,t){for(var n=0;nr[a]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))r(a);new MutationObserver(a=>{for(const o of a)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(a){const o={};return a.integrity&&(o.integrity=a.integrity),a.referrerPolicy&&(o.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?o.credentials="include":a.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(a){if(a.ep)return;a.ep=!0;const o=n(a);fetch(a.href,o)}})();var nn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Tc(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var vP={exports:{}},pm={},SP={exports:{}},at={};/** - * @license React - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Wd=Symbol.for("react.element"),rB=Symbol.for("react.portal"),aB=Symbol.for("react.fragment"),oB=Symbol.for("react.strict_mode"),iB=Symbol.for("react.profiler"),sB=Symbol.for("react.provider"),lB=Symbol.for("react.context"),cB=Symbol.for("react.forward_ref"),uB=Symbol.for("react.suspense"),dB=Symbol.for("react.memo"),fB=Symbol.for("react.lazy"),oT=Symbol.iterator;function pB(e){return e===null||typeof e!="object"?null:(e=oT&&e[oT]||e["@@iterator"],typeof e=="function"?e:null)}var wP={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},EP=Object.assign,xP={};function Rc(e,t,n){this.props=e,this.context=t,this.refs=xP,this.updater=n||wP}Rc.prototype.isReactComponent={};Rc.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};Rc.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function kP(){}kP.prototype=Rc.prototype;function Qk(e,t,n){this.props=e,this.context=t,this.refs=xP,this.updater=n||wP}var Jk=Qk.prototype=new kP;Jk.constructor=Qk;EP(Jk,Rc.prototype);Jk.isPureReactComponent=!0;var iT=Array.isArray,CP=Object.prototype.hasOwnProperty,eC={current:null},_P={key:!0,ref:!0,__self:!0,__source:!0};function AP(e,t,n){var r,a={},o=null,i=null;if(t!=null)for(r in t.ref!==void 0&&(i=t.ref),t.key!==void 0&&(o=""+t.key),t)CP.call(t,r)&&!_P.hasOwnProperty(r)&&(a[r]=t[r]);var s=arguments.length-2;if(s===1)a.children=n;else if(1>>1,P=j[V];if(0>>1;Va(ae,A))nea(Q,ae)?(j[V]=Q,j[ne]=A,V=ne):(j[V]=ae,j[K]=A,V=K);else if(nea(Q,A))j[V]=Q,j[ne]=A,V=ne;else break e}}return O}function a(j,O){var A=j.sortIndex-O.sortIndex;return A!==0?A:j.id-O.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var i=Date,s=i.now();e.unstable_now=function(){return i.now()-s}}var l=[],c=[],u=1,d=null,g=3,m=!1,b=!1,y=!1,w=typeof setTimeout=="function"?setTimeout:null,v=typeof clearTimeout=="function"?clearTimeout:null,h=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function S(j){for(var O=n(c);O!==null;){if(O.callback===null)r(c);else if(O.startTime<=j)r(c),O.sortIndex=O.expirationTime,t(l,O);else break;O=n(c)}}function E(j){if(y=!1,S(j),!b)if(n(l)!==null)b=!0,U(k);else{var O=n(c);O!==null&&X(E,O.startTime-j)}}function k(j,O){b=!1,y&&(y=!1,v(_),_=-1),m=!0;var A=g;try{for(S(O),d=n(l);d!==null&&(!(d.expirationTime>O)||j&&!L());){var V=d.callback;if(typeof V=="function"){d.callback=null,g=d.priorityLevel;var P=V(d.expirationTime<=O);O=e.unstable_now(),typeof P=="function"?d.callback=P:d===n(l)&&r(l),S(O)}else r(l);d=n(l)}if(d!==null)var N=!0;else{var K=n(c);K!==null&&X(E,K.startTime-O),N=!1}return N}finally{d=null,g=A,m=!1}}var x=!1,C=null,_=-1,R=5,T=-1;function L(){return!(e.unstable_now()-Tj||125V?(j.sortIndex=A,t(c,j),n(l)===null&&j===n(c)&&(y?(v(_),_=-1):y=!0,X(E,A-V))):(j.sortIndex=P,t(l,j),b||m||(b=!0,U(k))),j},e.unstable_shouldYield=L,e.unstable_wrapCallback=function(j){var O=g;return function(){var A=g;g=O;try{return j.apply(this,arguments)}finally{g=A}}}})(IP);NP.exports=IP;var kB=NP.exports;/** - * @license React - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var OP=p,Ar=kB;function ie(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Rx=Object.prototype.hasOwnProperty,CB=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,lT={},cT={};function _B(e){return Rx.call(cT,e)?!0:Rx.call(lT,e)?!1:CB.test(e)?cT[e]=!0:(lT[e]=!0,!1)}function AB(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function TB(e,t,n,r){if(t===null||typeof t>"u"||AB(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function er(e,t,n,r,a,o,i){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=a,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=i}var Cn={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){Cn[e]=new er(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];Cn[t]=new er(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){Cn[e]=new er(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){Cn[e]=new er(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){Cn[e]=new er(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){Cn[e]=new er(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){Cn[e]=new er(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){Cn[e]=new er(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){Cn[e]=new er(e,5,!1,e.toLowerCase(),null,!1,!1)});var nC=/[\-:]([a-z])/g;function rC(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(nC,rC);Cn[t]=new er(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(nC,rC);Cn[t]=new er(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(nC,rC);Cn[t]=new er(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){Cn[e]=new er(e,1,!1,e.toLowerCase(),null,!1,!1)});Cn.xlinkHref=new er("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){Cn[e]=new er(e,1,!1,e.toLowerCase(),null,!0,!0)});function aC(e,t,n,r){var a=Cn.hasOwnProperty(t)?Cn[t]:null;(a!==null?a.type!==0:r||!(2s||a[i]!==o[s]){var l=` -`+a[i].replace(" at new "," at ");return e.displayName&&l.includes("")&&(l=l.replace("",e.displayName)),l}while(1<=i&&0<=s);break}}}finally{Kh=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?wu(e):""}function RB(e){switch(e.tag){case 5:return wu(e.type);case 16:return wu("Lazy");case 13:return wu("Suspense");case 19:return wu("SuspenseList");case 0:case 2:case 15:return e=Yh(e.type,!1),e;case 11:return e=Yh(e.type.render,!1),e;case 1:return e=Yh(e.type,!0),e;default:return""}}function Dx(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case yl:return"Fragment";case bl:return"Portal";case Nx:return"Profiler";case oC:return"StrictMode";case Ix:return"Suspense";case Ox:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case MP:return(e.displayName||"Context")+".Consumer";case LP:return(e._context.displayName||"Context")+".Provider";case iC:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case sC:return t=e.displayName||null,t!==null?t:Dx(e.type)||"Memo";case qo:t=e._payload,e=e._init;try{return Dx(e(t))}catch{}}return null}function NB(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Dx(t);case 8:return t===oC?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function vi(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function $P(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function IB(e){var t=$P(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var a=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return a.call(this)},set:function(i){r=""+i,o.call(this,i)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(i){r=""+i},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function If(e){e._valueTracker||(e._valueTracker=IB(e))}function FP(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=$P(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function eg(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Lx(e,t){var n=t.checked;return Ut({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function dT(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=vi(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function jP(e,t){t=t.checked,t!=null&&aC(e,"checked",t,!1)}function Mx(e,t){jP(e,t);var n=vi(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Px(e,t.type,n):t.hasOwnProperty("defaultValue")&&Px(e,t.type,vi(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function fT(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function Px(e,t,n){(t!=="number"||eg(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var Eu=Array.isArray;function Ll(e,t,n,r){if(e=e.options,t){t={};for(var a=0;a"+t.valueOf().toString()+"",t=Of.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Qu(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Iu={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},OB=["Webkit","ms","Moz","O"];Object.keys(Iu).forEach(function(e){OB.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Iu[t]=Iu[e]})});function HP(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||Iu.hasOwnProperty(e)&&Iu[e]?(""+t).trim():t+"px"}function VP(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,a=HP(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,a):e[n]=a}}var DB=Ut({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function jx(e,t){if(t){if(DB[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(ie(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(ie(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(ie(61))}if(t.style!=null&&typeof t.style!="object")throw Error(ie(62))}}function zx(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Ux=null;function lC(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Bx=null,Ml=null,Pl=null;function mT(e){if(e=Xd(e)){if(typeof Bx!="function")throw Error(ie(280));var t=e.stateNode;t&&(t=ym(t),Bx(e.stateNode,e.type,t))}}function qP(e){Ml?Pl?Pl.push(e):Pl=[e]:Ml=e}function GP(){if(Ml){var e=Ml,t=Pl;if(Pl=Ml=null,mT(e),t)for(e=0;e>>=0,e===0?32:31-(VB(e)/qB|0)|0}var Df=64,Lf=4194304;function xu(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function ag(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,a=e.suspendedLanes,o=e.pingedLanes,i=n&268435455;if(i!==0){var s=i&~a;s!==0?r=xu(s):(o&=i,o!==0&&(r=xu(o)))}else i=n&~a,i!==0?r=xu(i):o!==0&&(r=xu(o));if(r===0)return 0;if(t!==0&&t!==r&&!(t&a)&&(a=r&-r,o=t&-t,a>=o||a===16&&(o&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function Yd(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-da(t),e[t]=n}function YB(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=Du),kT=String.fromCharCode(32),CT=!1;function f$(e,t){switch(e){case"keyup":return xH.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function p$(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var vl=!1;function CH(e,t){switch(e){case"compositionend":return p$(t);case"keypress":return t.which!==32?null:(CT=!0,kT);case"textInput":return e=t.data,e===kT&&CT?null:e;default:return null}}function _H(e,t){if(vl)return e==="compositionend"||!hC&&f$(e,t)?(e=u$(),Rp=pC=ai=null,vl=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=RT(n)}}function b$(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?b$(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function y$(){for(var e=window,t=eg();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=eg(e.document)}return t}function bC(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function MH(e){var t=y$(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&b$(n.ownerDocument.documentElement,n)){if(r!==null&&bC(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var a=n.textContent.length,o=Math.min(r.start,a);r=r.end===void 0?o:Math.min(r.end,a),!e.extend&&o>r&&(a=r,r=o,o=a),a=NT(n,o);var i=NT(n,r);a&&i&&(e.rangeCount!==1||e.anchorNode!==a.node||e.anchorOffset!==a.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&(t=t.createRange(),t.setStart(a.node,a.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,Sl=null,Kx=null,Mu=null,Yx=!1;function IT(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Yx||Sl==null||Sl!==eg(r)||(r=Sl,"selectionStart"in r&&bC(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Mu&&ad(Mu,r)||(Mu=r,r=sg(Kx,"onSelect"),0xl||(e.current=t1[xl],t1[xl]=null,xl--)}function At(e,t){xl++,t1[xl]=e.current,e.current=t}var Si={},jn=Ii(Si),sr=Ii(!1),Ss=Si;function lc(e,t){var n=e.type.contextTypes;if(!n)return Si;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var a={},o;for(o in n)a[o]=t[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=a),a}function lr(e){return e=e.childContextTypes,e!=null}function cg(){Dt(sr),Dt(jn)}function FT(e,t,n){if(jn.current!==Si)throw Error(ie(168));At(jn,t),At(sr,n)}function A$(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var a in r)if(!(a in t))throw Error(ie(108,NB(e)||"Unknown",a));return Ut({},n,r)}function ug(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Si,Ss=jn.current,At(jn,e),At(sr,sr.current),!0}function jT(e,t,n){var r=e.stateNode;if(!r)throw Error(ie(169));n?(e=A$(e,t,Ss),r.__reactInternalMemoizedMergedChildContext=e,Dt(sr),Dt(jn),At(jn,e)):Dt(sr),At(sr,n)}var ao=null,vm=!1,cb=!1;function T$(e){ao===null?ao=[e]:ao.push(e)}function WH(e){vm=!0,T$(e)}function Oi(){if(!cb&&ao!==null){cb=!0;var e=0,t=vt;try{var n=ao;for(vt=1;e>=i,a-=i,io=1<<32-da(t)+a|n<_?(R=C,C=null):R=C.sibling;var T=g(v,C,S[_],E);if(T===null){C===null&&(C=R);break}e&&C&&T.alternate===null&&t(v,C),h=o(T,h,_),x===null?k=T:x.sibling=T,x=T,C=R}if(_===S.length)return n(v,C),Lt&&Gi(v,_),k;if(C===null){for(;__?(R=C,C=null):R=C.sibling;var L=g(v,C,T.value,E);if(L===null){C===null&&(C=R);break}e&&C&&L.alternate===null&&t(v,C),h=o(L,h,_),x===null?k=L:x.sibling=L,x=L,C=R}if(T.done)return n(v,C),Lt&&Gi(v,_),k;if(C===null){for(;!T.done;_++,T=S.next())T=d(v,T.value,E),T!==null&&(h=o(T,h,_),x===null?k=T:x.sibling=T,x=T);return Lt&&Gi(v,_),k}for(C=r(v,C);!T.done;_++,T=S.next())T=m(C,v,_,T.value,E),T!==null&&(e&&T.alternate!==null&&C.delete(T.key===null?_:T.key),h=o(T,h,_),x===null?k=T:x.sibling=T,x=T);return e&&C.forEach(function(D){return t(v,D)}),Lt&&Gi(v,_),k}function w(v,h,S,E){if(typeof S=="object"&&S!==null&&S.type===yl&&S.key===null&&(S=S.props.children),typeof S=="object"&&S!==null){switch(S.$$typeof){case Nf:e:{for(var k=S.key,x=h;x!==null;){if(x.key===k){if(k=S.type,k===yl){if(x.tag===7){n(v,x.sibling),h=a(x,S.props.children),h.return=v,v=h;break e}}else if(x.elementType===k||typeof k=="object"&&k!==null&&k.$$typeof===qo&>(k)===x.type){n(v,x.sibling),h=a(x,S.props),h.ref=Qc(v,x,S),h.return=v,v=h;break e}n(v,x);break}else t(v,x);x=x.sibling}S.type===yl?(h=bs(S.props.children,v.mode,E,S.key),h.return=v,v=h):(E=$p(S.type,S.key,S.props,null,v.mode,E),E.ref=Qc(v,h,S),E.return=v,v=E)}return i(v);case bl:e:{for(x=S.key;h!==null;){if(h.key===x)if(h.tag===4&&h.stateNode.containerInfo===S.containerInfo&&h.stateNode.implementation===S.implementation){n(v,h.sibling),h=a(h,S.children||[]),h.return=v,v=h;break e}else{n(v,h);break}else t(v,h);h=h.sibling}h=bb(S,v.mode,E),h.return=v,v=h}return i(v);case qo:return x=S._init,w(v,h,x(S._payload),E)}if(Eu(S))return b(v,h,S,E);if(Wc(S))return y(v,h,S,E);Uf(v,S)}return typeof S=="string"&&S!==""||typeof S=="number"?(S=""+S,h!==null&&h.tag===6?(n(v,h.sibling),h=a(h,S),h.return=v,v=h):(n(v,h),h=hb(S,v.mode,E),h.return=v,v=h),i(v)):n(v,h)}return w}var uc=P$(!0),$$=P$(!1),Qd={},La=Ii(Qd),ld=Ii(Qd),cd=Ii(Qd);function ts(e){if(e===Qd)throw Error(ie(174));return e}function _C(e,t){switch(At(cd,t),At(ld,e),At(La,Qd),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:Fx(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=Fx(t,e)}Dt(La),At(La,t)}function dc(){Dt(La),Dt(ld),Dt(cd)}function F$(e){ts(cd.current);var t=ts(La.current),n=Fx(t,e.type);t!==n&&(At(ld,e),At(La,n))}function AC(e){ld.current===e&&(Dt(La),Dt(ld))}var jt=Ii(0);function hg(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var ub=[];function TC(){for(var e=0;en?n:4,e(!0);var r=db.transition;db.transition={};try{e(!1),t()}finally{vt=n,db.transition=r}}function e4(){return Yr().memoizedState}function XH(e,t,n){var r=mi(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},t4(e))n4(t,n);else if(n=O$(e,t,n,r),n!==null){var a=Xn();fa(n,e,r,a),r4(n,t,r)}}function QH(e,t,n){var r=mi(e),a={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(t4(e))n4(t,a);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var i=t.lastRenderedState,s=o(i,n);if(a.hasEagerState=!0,a.eagerState=s,ha(s,i)){var l=t.interleaved;l===null?(a.next=a,kC(t)):(a.next=l.next,l.next=a),t.interleaved=a;return}}catch{}finally{}n=O$(e,t,a,r),n!==null&&(a=Xn(),fa(n,e,r,a),r4(n,t,r))}}function t4(e){var t=e.alternate;return e===zt||t!==null&&t===zt}function n4(e,t){Pu=bg=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function r4(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,uC(e,n)}}var yg={readContext:Kr,useCallback:Rn,useContext:Rn,useEffect:Rn,useImperativeHandle:Rn,useInsertionEffect:Rn,useLayoutEffect:Rn,useMemo:Rn,useReducer:Rn,useRef:Rn,useState:Rn,useDebugValue:Rn,useDeferredValue:Rn,useTransition:Rn,useMutableSource:Rn,useSyncExternalStore:Rn,useId:Rn,unstable_isNewReconciler:!1},JH={readContext:Kr,useCallback:function(e,t){return xa().memoizedState=[e,t===void 0?null:t],e},useContext:Kr,useEffect:KT,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,Dp(4194308,4,Y$.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Dp(4194308,4,e,t)},useInsertionEffect:function(e,t){return Dp(4,2,e,t)},useMemo:function(e,t){var n=xa();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=xa();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=XH.bind(null,zt,e),[r.memoizedState,e]},useRef:function(e){var t=xa();return e={current:e},t.memoizedState=e},useState:WT,useDebugValue:DC,useDeferredValue:function(e){return xa().memoizedState=e},useTransition:function(){var e=WT(!1),t=e[0];return e=ZH.bind(null,e[1]),xa().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=zt,a=xa();if(Lt){if(n===void 0)throw Error(ie(407));n=n()}else{if(n=t(),hn===null)throw Error(ie(349));Es&30||U$(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,KT(H$.bind(null,r,o,e),[e]),r.flags|=2048,fd(9,B$.bind(null,r,o,n,t),void 0,null),n},useId:function(){var e=xa(),t=hn.identifierPrefix;if(Lt){var n=so,r=io;n=(r&~(1<<32-da(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=ud++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=i.createElement(n,{is:r.is}):(e=i.createElement(n),n==="select"&&(i=e,r.multiple?i.multiple=!0:r.size&&(i.size=r.size))):e=i.createElementNS(e,n),e[Na]=t,e[sd]=r,f4(e,t,!1,!1),t.stateNode=e;e:{switch(i=zx(n,r),n){case"dialog":It("cancel",e),It("close",e),a=r;break;case"iframe":case"object":case"embed":It("load",e),a=r;break;case"video":case"audio":for(a=0;apc&&(t.flags|=128,r=!0,Jc(o,!1),t.lanes=4194304)}else{if(!r)if(e=hg(i),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Jc(o,!0),o.tail===null&&o.tailMode==="hidden"&&!i.alternate&&!Lt)return Nn(t),null}else 2*Xt()-o.renderingStartTime>pc&&n!==1073741824&&(t.flags|=128,r=!0,Jc(o,!1),t.lanes=4194304);o.isBackwards?(i.sibling=t.child,t.child=i):(n=o.last,n!==null?n.sibling=i:t.child=i,o.last=i)}return o.tail!==null?(t=o.tail,o.rendering=t,o.tail=t.sibling,o.renderingStartTime=Xt(),t.sibling=null,n=jt.current,At(jt,r?n&1|2:n&1),t):(Nn(t),null);case 22:case 23:return jC(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?Sr&1073741824&&(Nn(t),t.subtreeFlags&6&&(t.flags|=8192)):Nn(t),null;case 24:return null;case 25:return null}throw Error(ie(156,t.tag))}function sV(e,t){switch(vC(t),t.tag){case 1:return lr(t.type)&&cg(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return dc(),Dt(sr),Dt(jn),TC(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return AC(t),null;case 13:if(Dt(jt),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(ie(340));cc()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Dt(jt),null;case 4:return dc(),null;case 10:return xC(t.type._context),null;case 22:case 23:return jC(),null;case 24:return null;default:return null}}var Hf=!1,Mn=!1,lV=typeof WeakSet=="function"?WeakSet:Set,Se=null;function Al(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){Gt(e,t,r)}else n.current=null}function p1(e,t,n){try{n()}catch(r){Gt(e,t,r)}}var rR=!1;function cV(e,t){if(Zx=og,e=y$(),bC(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var a=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break e}var i=0,s=-1,l=-1,c=0,u=0,d=e,g=null;t:for(;;){for(var m;d!==n||a!==0&&d.nodeType!==3||(s=i+a),d!==o||r!==0&&d.nodeType!==3||(l=i+r),d.nodeType===3&&(i+=d.nodeValue.length),(m=d.firstChild)!==null;)g=d,d=m;for(;;){if(d===e)break t;if(g===n&&++c===a&&(s=i),g===o&&++u===r&&(l=i),(m=d.nextSibling)!==null)break;d=g,g=d.parentNode}d=m}n=s===-1||l===-1?null:{start:s,end:l}}else n=null}n=n||{start:0,end:0}}else n=null;for(Xx={focusedElem:e,selectionRange:n},og=!1,Se=t;Se!==null;)if(t=Se,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,Se=e;else for(;Se!==null;){t=Se;try{var b=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(b!==null){var y=b.memoizedProps,w=b.memoizedState,v=t.stateNode,h=v.getSnapshotBeforeUpdate(t.elementType===t.type?y:ia(t.type,y),w);v.__reactInternalSnapshotBeforeUpdate=h}break;case 3:var S=t.stateNode.containerInfo;S.nodeType===1?S.textContent="":S.nodeType===9&&S.documentElement&&S.removeChild(S.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(ie(163))}}catch(E){Gt(t,t.return,E)}if(e=t.sibling,e!==null){e.return=t.return,Se=e;break}Se=t.return}return b=rR,rR=!1,b}function $u(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var a=r=r.next;do{if((a.tag&e)===e){var o=a.destroy;a.destroy=void 0,o!==void 0&&p1(t,n,o)}a=a.next}while(a!==r)}}function Em(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function g1(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function m4(e){var t=e.alternate;t!==null&&(e.alternate=null,m4(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Na],delete t[sd],delete t[e1],delete t[qH],delete t[GH])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function h4(e){return e.tag===5||e.tag===3||e.tag===4}function aR(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||h4(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function m1(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=lg));else if(r!==4&&(e=e.child,e!==null))for(m1(e,t,n),e=e.sibling;e!==null;)m1(e,t,n),e=e.sibling}function h1(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(h1(e,t,n),e=e.sibling;e!==null;)h1(e,t,n),e=e.sibling}var xn=null,la=!1;function Oo(e,t,n){for(n=n.child;n!==null;)b4(e,t,n),n=n.sibling}function b4(e,t,n){if(Da&&typeof Da.onCommitFiberUnmount=="function")try{Da.onCommitFiberUnmount(gm,n)}catch{}switch(n.tag){case 5:Mn||Al(n,t);case 6:var r=xn,a=la;xn=null,Oo(e,t,n),xn=r,la=a,xn!==null&&(la?(e=xn,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):xn.removeChild(n.stateNode));break;case 18:xn!==null&&(la?(e=xn,n=n.stateNode,e.nodeType===8?lb(e.parentNode,n):e.nodeType===1&&lb(e,n),nd(e)):lb(xn,n.stateNode));break;case 4:r=xn,a=la,xn=n.stateNode.containerInfo,la=!0,Oo(e,t,n),xn=r,la=a;break;case 0:case 11:case 14:case 15:if(!Mn&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){a=r=r.next;do{var o=a,i=o.destroy;o=o.tag,i!==void 0&&(o&2||o&4)&&p1(n,t,i),a=a.next}while(a!==r)}Oo(e,t,n);break;case 1:if(!Mn&&(Al(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(s){Gt(n,t,s)}Oo(e,t,n);break;case 21:Oo(e,t,n);break;case 22:n.mode&1?(Mn=(r=Mn)||n.memoizedState!==null,Oo(e,t,n),Mn=r):Oo(e,t,n);break;default:Oo(e,t,n)}}function oR(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new lV),t.forEach(function(r){var a=yV.bind(null,e,r);n.has(r)||(n.add(r),r.then(a,a))})}}function aa(e,t){var n=t.deletions;if(n!==null)for(var r=0;ra&&(a=i),r&=~o}if(r=a,r=Xt()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*dV(r/1960))-r,10e?16:e,oi===null)var r=!1;else{if(e=oi,oi=null,wg=0,dt&6)throw Error(ie(331));var a=dt;for(dt|=4,Se=e.current;Se!==null;){var o=Se,i=o.child;if(Se.flags&16){var s=o.deletions;if(s!==null){for(var l=0;lXt()-$C?hs(e,0):PC|=n),cr(e,t)}function C4(e,t){t===0&&(e.mode&1?(t=Lf,Lf<<=1,!(Lf&130023424)&&(Lf=4194304)):t=1);var n=Xn();e=mo(e,t),e!==null&&(Yd(e,t,n),cr(e,n))}function bV(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),C4(e,n)}function yV(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(ie(314))}r!==null&&r.delete(t),C4(e,n)}var _4;_4=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||sr.current)ir=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return ir=!1,oV(e,t,n);ir=!!(e.flags&131072)}else ir=!1,Lt&&t.flags&1048576&&R$(t,fg,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Lp(e,t),e=t.pendingProps;var a=lc(t,jn.current);Fl(t,n),a=NC(null,t,r,e,a,n);var o=IC();return t.flags|=1,typeof a=="object"&&a!==null&&typeof a.render=="function"&&a.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,lr(r)?(o=!0,ug(t)):o=!1,t.memoizedState=a.state!==null&&a.state!==void 0?a.state:null,CC(t),a.updater=Sm,t.stateNode=a,a._reactInternals=t,i1(t,r,e,n),t=c1(null,t,r,!0,o,n)):(t.tag=0,Lt&&o&&yC(t),Kn(null,t,a,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Lp(e,t),e=t.pendingProps,a=r._init,r=a(r._payload),t.type=r,a=t.tag=SV(r),e=ia(r,e),a){case 0:t=l1(null,t,r,e,n);break e;case 1:t=eR(null,t,r,e,n);break e;case 11:t=QT(null,t,r,e,n);break e;case 14:t=JT(null,t,r,ia(r.type,e),n);break e}throw Error(ie(306,r,""))}return t;case 0:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:ia(r,a),l1(e,t,r,a,n);case 1:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:ia(r,a),eR(e,t,r,a,n);case 3:e:{if(c4(t),e===null)throw Error(ie(387));r=t.pendingProps,o=t.memoizedState,a=o.element,D$(e,t),mg(t,r,null,n);var i=t.memoizedState;if(r=i.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:i.cache,pendingSuspenseBoundaries:i.pendingSuspenseBoundaries,transitions:i.transitions},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){a=fc(Error(ie(423)),t),t=tR(e,t,r,n,a);break e}else if(r!==a){a=fc(Error(ie(424)),t),t=tR(e,t,r,n,a);break e}else for(xr=fi(t.stateNode.containerInfo.firstChild),Cr=t,Lt=!0,ua=null,n=$$(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(cc(),r===a){t=ho(e,t,n);break e}Kn(e,t,r,n)}t=t.child}return t;case 5:return F$(t),e===null&&r1(t),r=t.type,a=t.pendingProps,o=e!==null?e.memoizedProps:null,i=a.children,Qx(r,a)?i=null:o!==null&&Qx(r,o)&&(t.flags|=32),l4(e,t),Kn(e,t,i,n),t.child;case 6:return e===null&&r1(t),null;case 13:return u4(e,t,n);case 4:return _C(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=uc(t,null,r,n):Kn(e,t,r,n),t.child;case 11:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:ia(r,a),QT(e,t,r,a,n);case 7:return Kn(e,t,t.pendingProps,n),t.child;case 8:return Kn(e,t,t.pendingProps.children,n),t.child;case 12:return Kn(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,a=t.pendingProps,o=t.memoizedProps,i=a.value,At(pg,r._currentValue),r._currentValue=i,o!==null)if(ha(o.value,i)){if(o.children===a.children&&!sr.current){t=ho(e,t,n);break e}}else for(o=t.child,o!==null&&(o.return=t);o!==null;){var s=o.dependencies;if(s!==null){i=o.child;for(var l=s.firstContext;l!==null;){if(l.context===r){if(o.tag===1){l=co(-1,n&-n),l.tag=2;var c=o.updateQueue;if(c!==null){c=c.shared;var u=c.pending;u===null?l.next=l:(l.next=u.next,u.next=l),c.pending=l}}o.lanes|=n,l=o.alternate,l!==null&&(l.lanes|=n),a1(o.return,n,t),s.lanes|=n;break}l=l.next}}else if(o.tag===10)i=o.type===t.type?null:o.child;else if(o.tag===18){if(i=o.return,i===null)throw Error(ie(341));i.lanes|=n,s=i.alternate,s!==null&&(s.lanes|=n),a1(i,n,t),i=o.sibling}else i=o.child;if(i!==null)i.return=o;else for(i=o;i!==null;){if(i===t){i=null;break}if(o=i.sibling,o!==null){o.return=i.return,i=o;break}i=i.return}o=i}Kn(e,t,a.children,n),t=t.child}return t;case 9:return a=t.type,r=t.pendingProps.children,Fl(t,n),a=Kr(a),r=r(a),t.flags|=1,Kn(e,t,r,n),t.child;case 14:return r=t.type,a=ia(r,t.pendingProps),a=ia(r.type,a),JT(e,t,r,a,n);case 15:return i4(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:ia(r,a),Lp(e,t),t.tag=1,lr(r)?(e=!0,ug(t)):e=!1,Fl(t,n),M$(t,r,a),i1(t,r,a,n),c1(null,t,r,!0,e,n);case 19:return d4(e,t,n);case 22:return s4(e,t,n)}throw Error(ie(156,t.tag))};function A4(e,t){return JP(e,t)}function vV(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Vr(e,t,n,r){return new vV(e,t,n,r)}function UC(e){return e=e.prototype,!(!e||!e.isReactComponent)}function SV(e){if(typeof e=="function")return UC(e)?1:0;if(e!=null){if(e=e.$$typeof,e===iC)return 11;if(e===sC)return 14}return 2}function hi(e,t){var n=e.alternate;return n===null?(n=Vr(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function $p(e,t,n,r,a,o){var i=2;if(r=e,typeof e=="function")UC(e)&&(i=1);else if(typeof e=="string")i=5;else e:switch(e){case yl:return bs(n.children,a,o,t);case oC:i=8,a|=8;break;case Nx:return e=Vr(12,n,t,a|2),e.elementType=Nx,e.lanes=o,e;case Ix:return e=Vr(13,n,t,a),e.elementType=Ix,e.lanes=o,e;case Ox:return e=Vr(19,n,t,a),e.elementType=Ox,e.lanes=o,e;case PP:return km(n,a,o,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case LP:i=10;break e;case MP:i=9;break e;case iC:i=11;break e;case sC:i=14;break e;case qo:i=16,r=null;break e}throw Error(ie(130,e==null?e:typeof e,""))}return t=Vr(i,n,t,a),t.elementType=e,t.type=r,t.lanes=o,t}function bs(e,t,n,r){return e=Vr(7,e,r,t),e.lanes=n,e}function km(e,t,n,r){return e=Vr(22,e,r,t),e.elementType=PP,e.lanes=n,e.stateNode={isHidden:!1},e}function hb(e,t,n){return e=Vr(6,e,null,t),e.lanes=n,e}function bb(e,t,n){return t=Vr(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function wV(e,t,n,r,a){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Xh(0),this.expirationTimes=Xh(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Xh(0),this.identifierPrefix=r,this.onRecoverableError=a,this.mutableSourceEagerHydrationData=null}function BC(e,t,n,r,a,o,i,s,l){return e=new wV(e,t,n,s,l),t===1?(t=1,o===!0&&(t|=8)):t=0,o=Vr(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},CC(o),e}function EV(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(I4)}catch(e){console.error(e)}}I4(),RP.exports=Rr;var ba=RP.exports;const GC=Tc(ba),AV=yP({__proto__:null,default:GC},[ba]);var O4,pR=ba;O4=pR.createRoot,pR.hydrateRoot;function W(){return W=Object.assign?Object.assign.bind():function(e){for(var t=1;te.forEach(n=>TV(n,t))}function nt(...e){return p.useCallback(WC(...e),e)}function RV(e,t){const n=p.createContext(t);function r(o){const{children:i,...s}=o,l=p.useMemo(()=>s,Object.values(s));return p.createElement(n.Provider,{value:l},i)}function a(o){const i=p.useContext(n);if(i)return i;if(t!==void 0)return t;throw new Error(`\`${o}\` must be used within \`${e}\``)}return r.displayName=e+"Provider",[r,a]}function zn(e,t=[]){let n=[];function r(o,i){const s=p.createContext(i),l=n.length;n=[...n,i];function c(d){const{scope:g,children:m,...b}=d,y=(g==null?void 0:g[e][l])||s,w=p.useMemo(()=>b,Object.values(b));return p.createElement(y.Provider,{value:w},m)}function u(d,g){const m=(g==null?void 0:g[e][l])||s,b=p.useContext(m);if(b)return b;if(i!==void 0)return i;throw new Error(`\`${d}\` must be used within \`${o}\``)}return c.displayName=o+"Provider",[c,u]}const a=()=>{const o=n.map(i=>p.createContext(i));return function(s){const l=(s==null?void 0:s[e])||o;return p.useMemo(()=>({[`__scope${e}`]:{...s,[e]:l}}),[s,l])}};return a.scopeName=e,[r,NV(a,...t)]}function NV(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const r=e.map(a=>({useScope:a(),scopeName:a.scopeName}));return function(o){const i=r.reduce((s,{useScope:l,scopeName:c})=>{const d=l(o)[`__scope${c}`];return{...s,...d}},{});return p.useMemo(()=>({[`__scope${t.scopeName}`]:i}),[i])}};return n.scopeName=t.scopeName,n}const $a=p.forwardRef((e,t)=>{const{children:n,...r}=e,a=p.Children.toArray(n),o=a.find(IV);if(o){const i=o.props.children,s=a.map(l=>l===o?p.Children.count(i)>1?p.Children.only(null):p.isValidElement(i)?i.props.children:null:l);return p.createElement(w1,W({},r,{ref:t}),p.isValidElement(i)?p.cloneElement(i,void 0,s):null)}return p.createElement(w1,W({},r,{ref:t}),n)});$a.displayName="Slot";const w1=p.forwardRef((e,t)=>{const{children:n,...r}=e;return p.isValidElement(n)?p.cloneElement(n,{...OV(r,n.props),ref:t?WC(t,n.ref):n.ref}):p.Children.count(n)>1?p.Children.only(null):null});w1.displayName="SlotClone";const Rm=({children:e})=>p.createElement(p.Fragment,null,e);function IV(e){return p.isValidElement(e)&&e.type===Rm}function OV(e,t){const n={...t};for(const r in t){const a=e[r],o=t[r];/^on[A-Z]/.test(r)?a&&o?n[r]=(...s)=>{o(...s),a(...s)}:a&&(n[r]=a):r==="style"?n[r]={...a,...o}:r==="className"&&(n[r]=[a,o].filter(Boolean).join(" "))}return{...e,...n}}function Nm(e){const t=e+"CollectionProvider",[n,r]=zn(t),[a,o]=n(t,{collectionRef:{current:null},itemMap:new Map}),i=m=>{const{scope:b,children:y}=m,w=Ae.useRef(null),v=Ae.useRef(new Map).current;return Ae.createElement(a,{scope:b,itemMap:v,collectionRef:w},y)},s=e+"CollectionSlot",l=Ae.forwardRef((m,b)=>{const{scope:y,children:w}=m,v=o(s,y),h=nt(b,v.collectionRef);return Ae.createElement($a,{ref:h},w)}),c=e+"CollectionItemSlot",u="data-radix-collection-item",d=Ae.forwardRef((m,b)=>{const{scope:y,children:w,...v}=m,h=Ae.useRef(null),S=nt(b,h),E=o(c,y);return Ae.useEffect(()=>(E.itemMap.set(h,{ref:h,...v}),()=>void E.itemMap.delete(h))),Ae.createElement($a,{[u]:"",ref:S},w)});function g(m){const b=o(e+"CollectionConsumer",m);return Ae.useCallback(()=>{const w=b.collectionRef.current;if(!w)return[];const v=Array.from(w.querySelectorAll(`[${u}]`));return Array.from(b.itemMap.values()).sort((E,k)=>v.indexOf(E.ref.current)-v.indexOf(k.ref.current))},[b.collectionRef,b.itemMap])}return[{Provider:i,Slot:l,ItemSlot:d},g,r]}const DV=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"],ze=DV.reduce((e,t)=>{const n=p.forwardRef((r,a)=>{const{asChild:o,...i}=r,s=o?$a:t;return p.useEffect(()=>{window[Symbol.for("radix-ui")]=!0},[]),p.createElement(s,W({},i,{ref:a}))});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{});function KC(e,t){e&&ba.flushSync(()=>e.dispatchEvent(t))}function ur(e){const t=p.useRef(e);return p.useEffect(()=>{t.current=e}),p.useMemo(()=>(...n)=>{var r;return(r=t.current)===null||r===void 0?void 0:r.call(t,...n)},[])}function LV(e,t=globalThis==null?void 0:globalThis.document){const n=ur(e);p.useEffect(()=>{const r=a=>{a.key==="Escape"&&n(a)};return t.addEventListener("keydown",r),()=>t.removeEventListener("keydown",r)},[n,t])}const E1="dismissableLayer.update",MV="dismissableLayer.pointerDownOutside",PV="dismissableLayer.focusOutside";let gR;const D4=p.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Ls=p.forwardRef((e,t)=>{var n;const{disableOutsidePointerEvents:r=!1,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:i,onInteractOutside:s,onDismiss:l,...c}=e,u=p.useContext(D4),[d,g]=p.useState(null),m=(n=d==null?void 0:d.ownerDocument)!==null&&n!==void 0?n:globalThis==null?void 0:globalThis.document,[,b]=p.useState({}),y=nt(t,_=>g(_)),w=Array.from(u.layers),[v]=[...u.layersWithOutsidePointerEventsDisabled].slice(-1),h=w.indexOf(v),S=d?w.indexOf(d):-1,E=u.layersWithOutsidePointerEventsDisabled.size>0,k=S>=h,x=FV(_=>{const R=_.target,T=[...u.branches].some(L=>L.contains(R));!k||T||(o==null||o(_),s==null||s(_),_.defaultPrevented||l==null||l())},m),C=jV(_=>{const R=_.target;[...u.branches].some(L=>L.contains(R))||(i==null||i(_),s==null||s(_),_.defaultPrevented||l==null||l())},m);return LV(_=>{S===u.layers.size-1&&(a==null||a(_),!_.defaultPrevented&&l&&(_.preventDefault(),l()))},m),p.useEffect(()=>{if(d)return r&&(u.layersWithOutsidePointerEventsDisabled.size===0&&(gR=m.body.style.pointerEvents,m.body.style.pointerEvents="none"),u.layersWithOutsidePointerEventsDisabled.add(d)),u.layers.add(d),mR(),()=>{r&&u.layersWithOutsidePointerEventsDisabled.size===1&&(m.body.style.pointerEvents=gR)}},[d,m,r,u]),p.useEffect(()=>()=>{d&&(u.layers.delete(d),u.layersWithOutsidePointerEventsDisabled.delete(d),mR())},[d,u]),p.useEffect(()=>{const _=()=>b({});return document.addEventListener(E1,_),()=>document.removeEventListener(E1,_)},[]),p.createElement(ze.div,W({},c,{ref:y,style:{pointerEvents:E?k?"auto":"none":void 0,...e.style},onFocusCapture:fe(e.onFocusCapture,C.onFocusCapture),onBlurCapture:fe(e.onBlurCapture,C.onBlurCapture),onPointerDownCapture:fe(e.onPointerDownCapture,x.onPointerDownCapture)}))}),$V=p.forwardRef((e,t)=>{const n=p.useContext(D4),r=p.useRef(null),a=nt(t,r);return p.useEffect(()=>{const o=r.current;if(o)return n.branches.add(o),()=>{n.branches.delete(o)}},[n.branches]),p.createElement(ze.div,W({},e,{ref:a}))});function FV(e,t=globalThis==null?void 0:globalThis.document){const n=ur(e),r=p.useRef(!1),a=p.useRef(()=>{});return p.useEffect(()=>{const o=s=>{if(s.target&&!r.current){let u=function(){L4(MV,n,c,{discrete:!0})};var l=u;const c={originalEvent:s};s.pointerType==="touch"?(t.removeEventListener("click",a.current),a.current=u,t.addEventListener("click",a.current,{once:!0})):u()}else t.removeEventListener("click",a.current);r.current=!1},i=window.setTimeout(()=>{t.addEventListener("pointerdown",o)},0);return()=>{window.clearTimeout(i),t.removeEventListener("pointerdown",o),t.removeEventListener("click",a.current)}},[t,n]),{onPointerDownCapture:()=>r.current=!0}}function jV(e,t=globalThis==null?void 0:globalThis.document){const n=ur(e),r=p.useRef(!1);return p.useEffect(()=>{const a=o=>{o.target&&!r.current&&L4(PV,n,{originalEvent:o},{discrete:!1})};return t.addEventListener("focusin",a),()=>t.removeEventListener("focusin",a)},[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function mR(){const e=new CustomEvent(E1);document.dispatchEvent(e)}function L4(e,t,n,{discrete:r}){const a=n.originalEvent.target,o=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&a.addEventListener(e,t,{once:!0}),r?KC(a,o):a.dispatchEvent(o)}const zV=Ls,UV=$V,Jd=p.forwardRef((e,t)=>{var n;const{container:r=globalThis==null||(n=globalThis.document)===null||n===void 0?void 0:n.body,...a}=e;return r?GC.createPortal(p.createElement(ze.div,W({},a,{ref:t})),r):null}),Zr=globalThis!=null&&globalThis.document?p.useLayoutEffect:()=>{};function BV(e,t){return p.useReducer((n,r)=>{const a=t[n][r];return a??n},e)}const pr=e=>{const{present:t,children:n}=e,r=HV(t),a=typeof n=="function"?n({present:r.isPresent}):p.Children.only(n),o=nt(r.ref,a.ref);return typeof n=="function"||r.isPresent?p.cloneElement(a,{ref:o}):null};pr.displayName="Presence";function HV(e){const[t,n]=p.useState(),r=p.useRef({}),a=p.useRef(e),o=p.useRef("none"),i=e?"mounted":"unmounted",[s,l]=BV(i,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return p.useEffect(()=>{const c=Gf(r.current);o.current=s==="mounted"?c:"none"},[s]),Zr(()=>{const c=r.current,u=a.current;if(u!==e){const g=o.current,m=Gf(c);e?l("MOUNT"):m==="none"||(c==null?void 0:c.display)==="none"?l("UNMOUNT"):l(u&&g!==m?"ANIMATION_OUT":"UNMOUNT"),a.current=e}},[e,l]),Zr(()=>{if(t){const c=d=>{const m=Gf(r.current).includes(d.animationName);d.target===t&&m&&ba.flushSync(()=>l("ANIMATION_END"))},u=d=>{d.target===t&&(o.current=Gf(r.current))};return t.addEventListener("animationstart",u),t.addEventListener("animationcancel",c),t.addEventListener("animationend",c),()=>{t.removeEventListener("animationstart",u),t.removeEventListener("animationcancel",c),t.removeEventListener("animationend",c)}}else l("ANIMATION_END")},[t,l]),{isPresent:["mounted","unmountSuspended"].includes(s),ref:p.useCallback(c=>{c&&(r.current=getComputedStyle(c)),n(c)},[])}}function Gf(e){return(e==null?void 0:e.animationName)||"none"}function Fa({prop:e,defaultProp:t,onChange:n=()=>{}}){const[r,a]=VV({defaultProp:t,onChange:n}),o=e!==void 0,i=o?e:r,s=ur(n),l=p.useCallback(c=>{if(o){const d=typeof c=="function"?c(e):c;d!==e&&s(d)}else a(c)},[o,e,a,s]);return[i,l]}function VV({defaultProp:e,onChange:t}){const n=p.useState(e),[r]=n,a=p.useRef(r),o=ur(t);return p.useEffect(()=>{a.current!==r&&(o(r),a.current=r)},[r,a,o]),n}const Im=p.forwardRef((e,t)=>p.createElement(ze.span,W({},e,{ref:t,style:{position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal",...e.style}}))),qV=Im,M4="ToastProvider",[YC,GV,WV]=Nm("Toast"),[P4,JAe]=zn("Toast",[WV]),[KV,Om]=P4(M4),$4=e=>{const{__scopeToast:t,label:n="Notification",duration:r=5e3,swipeDirection:a="right",swipeThreshold:o=50,children:i}=e,[s,l]=p.useState(null),[c,u]=p.useState(0),d=p.useRef(!1),g=p.useRef(!1);return p.createElement(YC.Provider,{scope:t},p.createElement(KV,{scope:t,label:n,duration:r,swipeDirection:a,swipeThreshold:o,toastCount:c,viewport:s,onViewportChange:l,onToastAdd:p.useCallback(()=>u(m=>m+1),[]),onToastRemove:p.useCallback(()=>u(m=>m-1),[]),isFocusedToastEscapeKeyDownRef:d,isClosePausedRef:g},i))};$4.propTypes={label(e){if(e.label&&typeof e.label=="string"&&!e.label.trim()){const t=`Invalid prop \`label\` supplied to \`${M4}\`. Expected non-empty \`string\`.`;return new Error(t)}return null}};const YV="ToastViewport",ZV=["F8"],x1="toast.viewportPause",k1="toast.viewportResume",XV=p.forwardRef((e,t)=>{const{__scopeToast:n,hotkey:r=ZV,label:a="Notifications ({hotkey})",...o}=e,i=Om(YV,n),s=GV(n),l=p.useRef(null),c=p.useRef(null),u=p.useRef(null),d=p.useRef(null),g=nt(t,d,i.onViewportChange),m=r.join("+").replace(/Key/g,"").replace(/Digit/g,""),b=i.toastCount>0;p.useEffect(()=>{const w=v=>{var h;r.every(E=>v[E]||v.code===E)&&((h=d.current)===null||h===void 0||h.focus())};return document.addEventListener("keydown",w),()=>document.removeEventListener("keydown",w)},[r]),p.useEffect(()=>{const w=l.current,v=d.current;if(b&&w&&v){const h=()=>{if(!i.isClosePausedRef.current){const x=new CustomEvent(x1);v.dispatchEvent(x),i.isClosePausedRef.current=!0}},S=()=>{if(i.isClosePausedRef.current){const x=new CustomEvent(k1);v.dispatchEvent(x),i.isClosePausedRef.current=!1}},E=x=>{!w.contains(x.relatedTarget)&&S()},k=()=>{w.contains(document.activeElement)||S()};return w.addEventListener("focusin",h),w.addEventListener("focusout",E),w.addEventListener("pointermove",h),w.addEventListener("pointerleave",k),window.addEventListener("blur",h),window.addEventListener("focus",S),()=>{w.removeEventListener("focusin",h),w.removeEventListener("focusout",E),w.removeEventListener("pointermove",h),w.removeEventListener("pointerleave",k),window.removeEventListener("blur",h),window.removeEventListener("focus",S)}}},[b,i.isClosePausedRef]);const y=p.useCallback(({tabbingDirection:w})=>{const h=s().map(S=>{const E=S.ref.current,k=[E,...pq(E)];return w==="forwards"?k:k.reverse()});return(w==="forwards"?h.reverse():h).flat()},[s]);return p.useEffect(()=>{const w=d.current;if(w){const v=h=>{const S=h.altKey||h.ctrlKey||h.metaKey;if(h.key==="Tab"&&!S){const _=document.activeElement,R=h.shiftKey;if(h.target===w&&R){var k;(k=c.current)===null||k===void 0||k.focus();return}const D=y({tabbingDirection:R?"backwards":"forwards"}),H=D.findIndex(z=>z===_);if(yb(D.slice(H+1)))h.preventDefault();else{var x,C;R?(x=c.current)===null||x===void 0||x.focus():(C=u.current)===null||C===void 0||C.focus()}}};return w.addEventListener("keydown",v),()=>w.removeEventListener("keydown",v)}},[s,y]),p.createElement(UV,{ref:l,role:"region","aria-label":a.replace("{hotkey}",m),tabIndex:-1,style:{pointerEvents:b?void 0:"none"}},b&&p.createElement(hR,{ref:c,onFocusFromOutsideViewport:()=>{const w=y({tabbingDirection:"forwards"});yb(w)}}),p.createElement(YC.Slot,{scope:n},p.createElement(ze.ol,W({tabIndex:-1},o,{ref:g}))),b&&p.createElement(hR,{ref:u,onFocusFromOutsideViewport:()=>{const w=y({tabbingDirection:"backwards"});yb(w)}}))}),QV="ToastFocusProxy",hR=p.forwardRef((e,t)=>{const{__scopeToast:n,onFocusFromOutsideViewport:r,...a}=e,o=Om(QV,n);return p.createElement(Im,W({"aria-hidden":!0,tabIndex:0},a,{ref:t,style:{position:"fixed"},onFocus:i=>{var s;const l=i.relatedTarget;!((s=o.viewport)!==null&&s!==void 0&&s.contains(l))&&r()}}))}),Dm="Toast",JV="toast.swipeStart",eq="toast.swipeMove",tq="toast.swipeCancel",nq="toast.swipeEnd",rq=p.forwardRef((e,t)=>{const{forceMount:n,open:r,defaultOpen:a,onOpenChange:o,...i}=e,[s=!0,l]=Fa({prop:r,defaultProp:a,onChange:o});return p.createElement(pr,{present:n||s},p.createElement(F4,W({open:s},i,{ref:t,onClose:()=>l(!1),onPause:ur(e.onPause),onResume:ur(e.onResume),onSwipeStart:fe(e.onSwipeStart,c=>{c.currentTarget.setAttribute("data-swipe","start")}),onSwipeMove:fe(e.onSwipeMove,c=>{const{x:u,y:d}=c.detail.delta;c.currentTarget.setAttribute("data-swipe","move"),c.currentTarget.style.setProperty("--radix-toast-swipe-move-x",`${u}px`),c.currentTarget.style.setProperty("--radix-toast-swipe-move-y",`${d}px`)}),onSwipeCancel:fe(e.onSwipeCancel,c=>{c.currentTarget.setAttribute("data-swipe","cancel"),c.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),c.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),c.currentTarget.style.removeProperty("--radix-toast-swipe-end-x"),c.currentTarget.style.removeProperty("--radix-toast-swipe-end-y")}),onSwipeEnd:fe(e.onSwipeEnd,c=>{const{x:u,y:d}=c.detail.delta;c.currentTarget.setAttribute("data-swipe","end"),c.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),c.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),c.currentTarget.style.setProperty("--radix-toast-swipe-end-x",`${u}px`),c.currentTarget.style.setProperty("--radix-toast-swipe-end-y",`${d}px`),l(!1)})})))}),[aq,oq]=P4(Dm,{onClose(){}}),F4=p.forwardRef((e,t)=>{const{__scopeToast:n,type:r="foreground",duration:a,open:o,onClose:i,onEscapeKeyDown:s,onPause:l,onResume:c,onSwipeStart:u,onSwipeMove:d,onSwipeCancel:g,onSwipeEnd:m,...b}=e,y=Om(Dm,n),[w,v]=p.useState(null),h=nt(t,z=>v(z)),S=p.useRef(null),E=p.useRef(null),k=a||y.duration,x=p.useRef(0),C=p.useRef(k),_=p.useRef(0),{onToastAdd:R,onToastRemove:T}=y,L=ur(()=>{var z;(w==null?void 0:w.contains(document.activeElement))&&((z=y.viewport)===null||z===void 0||z.focus()),i()}),D=p.useCallback(z=>{!z||z===1/0||(window.clearTimeout(_.current),x.current=new Date().getTime(),_.current=window.setTimeout(L,z))},[L]);p.useEffect(()=>{const z=y.viewport;if(z){const M=()=>{D(C.current),c==null||c()},U=()=>{const X=new Date().getTime()-x.current;C.current=C.current-X,window.clearTimeout(_.current),l==null||l()};return z.addEventListener(x1,U),z.addEventListener(k1,M),()=>{z.removeEventListener(x1,U),z.removeEventListener(k1,M)}}},[y.viewport,k,l,c,D]),p.useEffect(()=>{o&&!y.isClosePausedRef.current&&D(k)},[o,k,y.isClosePausedRef,D]),p.useEffect(()=>(R(),()=>T()),[R,T]);const H=p.useMemo(()=>w?B4(w):null,[w]);return y.viewport?p.createElement(p.Fragment,null,H&&p.createElement(iq,{__scopeToast:n,role:"status","aria-live":r==="foreground"?"assertive":"polite","aria-atomic":!0},H),p.createElement(aq,{scope:n,onClose:L},ba.createPortal(p.createElement(YC.ItemSlot,{scope:n},p.createElement(zV,{asChild:!0,onEscapeKeyDown:fe(s,()=>{y.isFocusedToastEscapeKeyDownRef.current||L(),y.isFocusedToastEscapeKeyDownRef.current=!1})},p.createElement(ze.li,W({role:"status","aria-live":"off","aria-atomic":!0,tabIndex:0,"data-state":o?"open":"closed","data-swipe-direction":y.swipeDirection},b,{ref:h,style:{userSelect:"none",touchAction:"none",...e.style},onKeyDown:fe(e.onKeyDown,z=>{z.key==="Escape"&&(s==null||s(z.nativeEvent),z.nativeEvent.defaultPrevented||(y.isFocusedToastEscapeKeyDownRef.current=!0,L()))}),onPointerDown:fe(e.onPointerDown,z=>{z.button===0&&(S.current={x:z.clientX,y:z.clientY})}),onPointerMove:fe(e.onPointerMove,z=>{if(!S.current)return;const M=z.clientX-S.current.x,U=z.clientY-S.current.y,X=!!E.current,j=["left","right"].includes(y.swipeDirection),O=["left","up"].includes(y.swipeDirection)?Math.min:Math.max,A=j?O(0,M):0,V=j?0:O(0,U),P=z.pointerType==="touch"?10:2,N={x:A,y:V},K={originalEvent:z,delta:N};X?(E.current=N,Wf(eq,d,K,{discrete:!1})):bR(N,y.swipeDirection,P)?(E.current=N,Wf(JV,u,K,{discrete:!1}),z.target.setPointerCapture(z.pointerId)):(Math.abs(M)>P||Math.abs(U)>P)&&(S.current=null)}),onPointerUp:fe(e.onPointerUp,z=>{const M=E.current,U=z.target;if(U.hasPointerCapture(z.pointerId)&&U.releasePointerCapture(z.pointerId),E.current=null,S.current=null,M){const X=z.currentTarget,j={originalEvent:z,delta:M};bR(M,y.swipeDirection,y.swipeThreshold)?Wf(nq,m,j,{discrete:!0}):Wf(tq,g,j,{discrete:!0}),X.addEventListener("click",O=>O.preventDefault(),{once:!0})}})})))),y.viewport))):null});F4.propTypes={type(e){if(e.type&&!["foreground","background"].includes(e.type)){const t=`Invalid prop \`type\` supplied to \`${Dm}\`. Expected \`foreground | background\`.`;return new Error(t)}return null}};const iq=e=>{const{__scopeToast:t,children:n,...r}=e,a=Om(Dm,t),[o,i]=p.useState(!1),[s,l]=p.useState(!1);return dq(()=>i(!0)),p.useEffect(()=>{const c=window.setTimeout(()=>l(!0),1e3);return()=>window.clearTimeout(c)},[]),s?null:p.createElement(Jd,{asChild:!0},p.createElement(Im,r,o&&p.createElement(p.Fragment,null,a.label," ",n)))},sq=p.forwardRef((e,t)=>{const{__scopeToast:n,...r}=e;return p.createElement(ze.div,W({},r,{ref:t}))}),lq=p.forwardRef((e,t)=>{const{__scopeToast:n,...r}=e;return p.createElement(ze.div,W({},r,{ref:t}))}),cq="ToastAction",j4=p.forwardRef((e,t)=>{const{altText:n,...r}=e;return n?p.createElement(U4,{altText:n,asChild:!0},p.createElement(z4,W({},r,{ref:t}))):null});j4.propTypes={altText(e){return e.altText?null:new Error(`Missing prop \`altText\` expected on \`${cq}\``)}};const uq="ToastClose",z4=p.forwardRef((e,t)=>{const{__scopeToast:n,...r}=e,a=oq(uq,n);return p.createElement(U4,{asChild:!0},p.createElement(ze.button,W({type:"button"},r,{ref:t,onClick:fe(e.onClick,a.onClose)})))}),U4=p.forwardRef((e,t)=>{const{__scopeToast:n,altText:r,...a}=e;return p.createElement(ze.div,W({"data-radix-toast-announce-exclude":"","data-radix-toast-announce-alt":r||void 0},a,{ref:t}))});function B4(e){const t=[];return Array.from(e.childNodes).forEach(r=>{if(r.nodeType===r.TEXT_NODE&&r.textContent&&t.push(r.textContent),fq(r)){const a=r.ariaHidden||r.hidden||r.style.display==="none",o=r.dataset.radixToastAnnounceExclude==="";if(!a)if(o){const i=r.dataset.radixToastAnnounceAlt;i&&t.push(i)}else t.push(...B4(r))}}),t}function Wf(e,t,n,{discrete:r}){const a=n.originalEvent.currentTarget,o=new CustomEvent(e,{bubbles:!0,cancelable:!0,detail:n});t&&a.addEventListener(e,t,{once:!0}),r?KC(a,o):a.dispatchEvent(o)}const bR=(e,t,n=0)=>{const r=Math.abs(e.x),a=Math.abs(e.y),o=r>a;return t==="left"||t==="right"?o&&r>n:!o&&a>n};function dq(e=()=>{}){const t=ur(e);Zr(()=>{let n=0,r=0;return n=window.requestAnimationFrame(()=>r=window.requestAnimationFrame(t)),()=>{window.cancelAnimationFrame(n),window.cancelAnimationFrame(r)}},[t])}function fq(e){return e.nodeType===e.ELEMENT_NODE}function pq(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const a=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||a?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function yb(e){const t=document.activeElement;return e.some(n=>n===t?!0:(n.focus(),document.activeElement!==t))}const gq=$4,H4=XV,V4=rq,q4=sq,G4=lq,W4=j4,K4=z4;function Y4(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e))for(t=0;ttypeof e=="boolean"?"".concat(e):e===0?"0":e,vR=Z4,ef=(e,t)=>n=>{var r;if((t==null?void 0:t.variants)==null)return vR(e,n==null?void 0:n.class,n==null?void 0:n.className);const{variants:a,defaultVariants:o}=t,i=Object.keys(a).map(c=>{const u=n==null?void 0:n[c],d=o==null?void 0:o[c];if(u===null)return null;const g=yR(u)||yR(d);return a[c][g]}),s=n&&Object.entries(n).reduce((c,u)=>{let[d,g]=u;return g===void 0||(c[d]=g),c},{}),l=t==null||(r=t.compoundVariants)===null||r===void 0?void 0:r.reduce((c,u)=>{let{class:d,className:g,...m}=u;return Object.entries(m).every(b=>{let[y,w]=b;return Array.isArray(w)?w.includes({...o,...s}[y]):{...o,...s}[y]===w})?[...c,d,g]:c},[]);return vR(e,i,l,n==null?void 0:n.class,n==null?void 0:n.className)};var mq={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const hq=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Be=(e,t)=>{const n=p.forwardRef(({color:r="currentColor",size:a=24,strokeWidth:o=2,absoluteStrokeWidth:i,children:s,...l},c)=>p.createElement("svg",{ref:c,...mq,width:a,height:a,stroke:r,strokeWidth:i?Number(o)*24/Number(a):o,className:`lucide lucide-${hq(e)}`,...l},[...t.map(([u,d])=>p.createElement(u,d)),...(Array.isArray(s)?s:[s])||[]]));return n.displayName=`${e}`,n},X4=Be("AlertCircle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]),bq=Be("Archive",[["rect",{width:"20",height:"5",x:"2",y:"3",rx:"1",key:"1wp1u1"}],["path",{d:"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8",key:"1s80jp"}],["path",{d:"M10 12h4",key:"a56b0p"}]]),yq=Be("ArrowDownWideNarrow",[["path",{d:"m3 16 4 4 4-4",key:"1co6wj"}],["path",{d:"M7 20V4",key:"1yoxec"}],["path",{d:"M11 4h10",key:"1w87gc"}],["path",{d:"M11 8h7",key:"djye34"}],["path",{d:"M11 12h4",key:"q8tih4"}]]),Lm=Be("Bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]),vq=Be("CalendarSearch",[["path",{d:"M21 12V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14c0 1.1.9 2 2 2h7.5",key:"18ncp8"}],["path",{d:"M16 2v4",key:"4m81vk"}],["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M3 10h18",key:"8toen8"}],["path",{d:"M18 21a3 3 0 1 0 0-6 3 3 0 0 0 0 6v0Z",key:"mgbru4"}],["path",{d:"m22 22-1.5-1.5",key:"1x83k4"}]]),Mm=Be("CheckCheck",[["path",{d:"M18 6 7 17l-5-5",key:"116fxf"}],["path",{d:"m22 10-7.5 7.5L13 16",key:"ke71qq"}]]),Pm=Be("Check",[["polyline",{points:"20 6 9 17 4 12",key:"10jjfj"}]]),ZC=Be("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]),Sq=Be("ChevronLeft",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]),$m=Be("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]),wq=Be("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]),Q4=Be("Circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]),Eq=Be("Cog",[["path",{d:"M12 20a8 8 0 1 0 0-16 8 8 0 0 0 0 16Z",key:"sobvz5"}],["path",{d:"M12 14a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z",key:"11i496"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 22v-2",key:"1osdcq"}],["path",{d:"m17 20.66-1-1.73",key:"eq3orb"}],["path",{d:"M11 10.27 7 3.34",key:"16pf9h"}],["path",{d:"m20.66 17-1.73-1",key:"sg0v6f"}],["path",{d:"m3.34 7 1.73 1",key:"1ulond"}],["path",{d:"M14 12h8",key:"4f43i9"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"m20.66 7-1.73 1",key:"1ow05n"}],["path",{d:"m3.34 17 1.73-1",key:"nuk764"}],["path",{d:"m17 3.34-1 1.73",key:"2wel8s"}],["path",{d:"m11 13.73-4 6.93",key:"794ttg"}]]),xq=Be("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]),kq=Be("Dna",[["path",{d:"M2 15c6.667-6 13.333 0 20-6",key:"1pyr53"}],["path",{d:"M9 22c1.798-1.998 2.518-3.995 2.807-5.993",key:"q3hbxp"}],["path",{d:"M15 2c-1.798 1.998-2.518 3.995-2.807 5.993",key:"80uv8i"}],["path",{d:"m17 6-2.5-2.5",key:"5cdfhj"}],["path",{d:"m14 8-1-1",key:"15nbz5"}],["path",{d:"m7 18 2.5 2.5",key:"16tu1a"}],["path",{d:"m3.5 14.5.5.5",key:"hapbhd"}],["path",{d:"m20 9 .5.5",key:"1n7z02"}],["path",{d:"m6.5 12.5 1 1",key:"cs35ky"}],["path",{d:"m16.5 10.5 1 1",key:"696xn5"}],["path",{d:"m10 16 1.5 1.5",key:"11lckj"}]]),Cq=Be("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]),_q=Be("Folder",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]),Aq=Be("GripVertical",[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]]),Tq=Be("HeartOff",[["line",{x1:"2",y1:"2",x2:"22",y2:"22",key:"1w4vcy"}],["path",{d:"M16.5 16.5 12 21l-7-7c-1.5-1.45-3-3.2-3-5.5a5.5 5.5 0 0 1 2.14-4.35",key:"3mpagl"}],["path",{d:"M8.76 3.1c1.15.22 2.13.78 3.24 1.9 1.5-1.5 2.74-2 4.5-2A5.5 5.5 0 0 1 22 8.5c0 2.12-1.3 3.78-2.67 5.17",key:"1gh3v3"}]]),Rq=Be("IceCream",[["path",{d:"m7 11 4.08 10.35a1 1 0 0 0 1.84 0L17 11",key:"1v6356"}],["path",{d:"M17 7A5 5 0 0 0 7 7",key:"151p3v"}],["path",{d:"M17 7a2 2 0 0 1 0 4H7a2 2 0 0 1 0-4",key:"1sdaij"}]]),Nq=Be("Info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]),un=Be("Loader2",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]),SR=Be("LogOut",[["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}],["polyline",{points:"16 17 21 12 16 7",key:"1gabdz"}],["line",{x1:"21",x2:"9",y1:"12",y2:"12",key:"1uyos4"}]]),Iq=Be("MinusCircle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M8 12h8",key:"1wcyev"}]]),wR=Be("MoonStar",[["path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z",key:"a7tn18"}],["path",{d:"M19 3v4",key:"vgv24u"}],["path",{d:"M21 5h-4",key:"1wcg1f"}]]),Oq=Be("PackageSearch",[["path",{d:"M21 10V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l2-1.14",key:"e7tb2h"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["line",{x1:"12",x2:"12",y1:"22",y2:"12",key:"a4e8g8"}],["circle",{cx:"18.5",cy:"15.5",r:"2.5",key:"b5zd12"}],["path",{d:"M20.27 17.27 22 19",key:"1l4muz"}]]),Fm=Be("PenSquare",[["path",{d:"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1qinfi"}],["path",{d:"M18.5 2.5a2.12 2.12 0 0 1 3 3L12 15l-4 1 1-4Z",key:"w2jsv5"}]]),J4=Be("Pen",[["path",{d:"M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z",key:"5qss01"}]]),XC=Be("Pencil",[["path",{d:"M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z",key:"5qss01"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]),Dq=Be("PlusCircle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M8 12h8",key:"1wcyev"}],["path",{d:"M12 8v8",key:"napkw2"}]]),ya=Be("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]),Lq=Be("RefreshCcw",[["path",{d:"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"14sxne"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16",key:"1hlbsb"}],["path",{d:"M16 16h5v5",key:"ccwih5"}]]),Mq=Be("Repeat",[["path",{d:"m17 2 4 4-4 4",key:"nntrym"}],["path",{d:"M3 11v-1a4 4 0 0 1 4-4h14",key:"84bu3i"}],["path",{d:"m7 22-4-4 4-4",key:"1wqhfi"}],["path",{d:"M21 13v1a4 4 0 0 1-4 4H3",key:"1rx37r"}]]),Ms=Be("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]),Pq=Be("SendHorizontal",[["path",{d:"m3 3 3 9-3 9 19-9Z",key:"1aobqy"}],["path",{d:"M6 12h16",key:"s4cdu5"}]]),$q=Be("Send",[["path",{d:"m22 2-7 20-4-9-9-4Z",key:"1q3vgg"}],["path",{d:"M22 2 11 13",key:"nzbqef"}]]),Fq=Be("Settings",[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]),jq=Be("Smile",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M8 14s1.5 2 4 2 4-2 4-2",key:"1y1vjs"}],["line",{x1:"9",x2:"9.01",y1:"9",y2:"9",key:"yxxnd0"}],["line",{x1:"15",x2:"15.01",y1:"9",y2:"9",key:"1p4y9e"}]]),ER=Be("Sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]),eF=Be("Upload",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"17 8 12 3 7 8",key:"t8dd8p"}],["line",{x1:"12",x2:"12",y1:"3",y2:"15",key:"widbto"}]]),QC=Be("User",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]),Di=Be("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),zq=Be("Zap",[["polygon",{points:"13 2 3 14 12 14 11 22 21 10 12 10 13 2",key:"45s27k"}]]),JC="-";function Uq(e){const t=Hq(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;function a(i){const s=i.split(JC);return s[0]===""&&s.length!==1&&s.shift(),tF(s,t)||Bq(i)}function o(i,s){const l=n[i]||[];return s&&r[i]?[...l,...r[i]]:l}return{getClassGroupId:a,getConflictingClassGroupIds:o}}function tF(e,t){var i;if(e.length===0)return t.classGroupId;const n=e[0],r=t.nextPart.get(n),a=r?tF(e.slice(1),r):void 0;if(a)return a;if(t.validators.length===0)return;const o=e.join(JC);return(i=t.validators.find(({validator:s})=>s(o)))==null?void 0:i.classGroupId}const xR=/^\[(.+)\]$/;function Bq(e){if(xR.test(e)){const t=xR.exec(e)[1],n=t==null?void 0:t.substring(0,t.indexOf(":"));if(n)return"arbitrary.."+n}}function Hq(e){const{theme:t,prefix:n}=e,r={nextPart:new Map,validators:[]};return qq(Object.entries(e.classGroups),n).forEach(([o,i])=>{C1(i,r,o,t)}),r}function C1(e,t,n,r){e.forEach(a=>{if(typeof a=="string"){const o=a===""?t:kR(t,a);o.classGroupId=n;return}if(typeof a=="function"){if(Vq(a)){C1(a(r),t,n,r);return}t.validators.push({validator:a,classGroupId:n});return}Object.entries(a).forEach(([o,i])=>{C1(i,kR(t,o),n,r)})})}function kR(e,t){let n=e;return t.split(JC).forEach(r=>{n.nextPart.has(r)||n.nextPart.set(r,{nextPart:new Map,validators:[]}),n=n.nextPart.get(r)}),n}function Vq(e){return e.isThemeGetter}function qq(e,t){return t?e.map(([n,r])=>{const a=r.map(o=>typeof o=="string"?t+o:typeof o=="object"?Object.fromEntries(Object.entries(o).map(([i,s])=>[t+i,s])):o);return[n,a]}):e}function Gq(e){if(e<1)return{get:()=>{},set:()=>{}};let t=0,n=new Map,r=new Map;function a(o,i){n.set(o,i),t++,t>e&&(t=0,r=n,n=new Map)}return{get(o){let i=n.get(o);if(i!==void 0)return i;if((i=r.get(o))!==void 0)return a(o,i),i},set(o,i){n.has(o)?n.set(o,i):a(o,i)}}}const nF="!";function Wq(e){const t=e.separator,n=t.length===1,r=t[0],a=t.length;return function(i){const s=[];let l=0,c=0,u;for(let y=0;yc?u-c:void 0;return{modifiers:s,hasImportantModifier:g,baseClassName:m,maybePostfixModifierPosition:b}}}function Kq(e){if(e.length<=1)return e;const t=[];let n=[];return e.forEach(r=>{r[0]==="["?(t.push(...n.sort(),r),n=[]):n.push(r)}),t.push(...n.sort()),t}function Yq(e){return{cache:Gq(e.cacheSize),splitModifiers:Wq(e),...Uq(e)}}const Zq=/\s+/;function Xq(e,t){const{splitModifiers:n,getClassGroupId:r,getConflictingClassGroupIds:a}=t,o=new Set;return e.trim().split(Zq).map(i=>{const{modifiers:s,hasImportantModifier:l,baseClassName:c,maybePostfixModifierPosition:u}=n(i);let d=r(u?c.substring(0,u):c),g=!!u;if(!d){if(!u)return{isTailwindClass:!1,originalClassName:i};if(d=r(c),!d)return{isTailwindClass:!1,originalClassName:i};g=!1}const m=Kq(s).join(":");return{isTailwindClass:!0,modifierId:l?m+nF:m,classGroupId:d,originalClassName:i,hasPostfixModifier:g}}).reverse().filter(i=>{if(!i.isTailwindClass)return!0;const{modifierId:s,classGroupId:l,hasPostfixModifier:c}=i,u=s+l;return o.has(u)?!1:(o.add(u),a(l,c).forEach(d=>o.add(s+d)),!0)}).reverse().map(i=>i.originalClassName).join(" ")}function Qq(){let e=0,t,n,r="";for(;ed(u),e());return n=Yq(c),r=n.cache.get,a=n.cache.set,o=s,s(l)}function s(l){const c=r(l);if(c)return c;const u=Xq(l,n);return a(l,u),u}return function(){return o(Qq.apply(null,arguments))}}function Rt(e){const t=n=>n[e]||[];return t.isThemeGetter=!0,t}const aF=/^\[(?:([a-z-]+):)?(.+)\]$/i,eG=/^\d+\/\d+$/,tG=new Set(["px","full","screen"]),nG=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,rG=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,aG=/^-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,oG=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/;function oa(e){return ns(e)||tG.has(e)||eG.test(e)}function Do(e){return Oc(e,"length",pG)}function ns(e){return!!e&&!Number.isNaN(Number(e))}function Kf(e){return Oc(e,"number",ns)}function tu(e){return!!e&&Number.isInteger(Number(e))}function iG(e){return e.endsWith("%")&&ns(e.slice(0,-1))}function Ke(e){return aF.test(e)}function Lo(e){return nG.test(e)}const sG=new Set(["length","size","percentage"]);function lG(e){return Oc(e,sG,oF)}function cG(e){return Oc(e,"position",oF)}const uG=new Set(["image","url"]);function dG(e){return Oc(e,uG,mG)}function fG(e){return Oc(e,"",gG)}function nu(){return!0}function Oc(e,t,n){const r=aF.exec(e);return r?r[1]?typeof t=="string"?r[1]===t:t.has(r[1]):n(r[2]):!1}function pG(e){return rG.test(e)}function oF(){return!1}function gG(e){return aG.test(e)}function mG(e){return oG.test(e)}function hG(){const e=Rt("colors"),t=Rt("spacing"),n=Rt("blur"),r=Rt("brightness"),a=Rt("borderColor"),o=Rt("borderRadius"),i=Rt("borderSpacing"),s=Rt("borderWidth"),l=Rt("contrast"),c=Rt("grayscale"),u=Rt("hueRotate"),d=Rt("invert"),g=Rt("gap"),m=Rt("gradientColorStops"),b=Rt("gradientColorStopPositions"),y=Rt("inset"),w=Rt("margin"),v=Rt("opacity"),h=Rt("padding"),S=Rt("saturate"),E=Rt("scale"),k=Rt("sepia"),x=Rt("skew"),C=Rt("space"),_=Rt("translate"),R=()=>["auto","contain","none"],T=()=>["auto","hidden","clip","visible","scroll"],L=()=>["auto",Ke,t],D=()=>[Ke,t],H=()=>["",oa,Do],z=()=>["auto",ns,Ke],M=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],U=()=>["solid","dashed","dotted","double","none"],X=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity","plus-lighter"],j=()=>["start","end","center","between","around","evenly","stretch"],O=()=>["","0",Ke],A=()=>["auto","avoid","all","avoid-page","page","left","right","column"],V=()=>[ns,Kf],P=()=>[ns,Ke];return{cacheSize:500,separator:":",theme:{colors:[nu],spacing:[oa,Do],blur:["none","",Lo,Ke],brightness:V(),borderColor:[e],borderRadius:["none","","full",Lo,Ke],borderSpacing:D(),borderWidth:H(),contrast:V(),grayscale:O(),hueRotate:P(),invert:O(),gap:D(),gradientColorStops:[e],gradientColorStopPositions:[iG,Do],inset:L(),margin:L(),opacity:V(),padding:D(),saturate:V(),scale:V(),sepia:O(),skew:P(),space:D(),translate:D()},classGroups:{aspect:[{aspect:["auto","square","video",Ke]}],container:["container"],columns:[{columns:[Lo]}],"break-after":[{"break-after":A()}],"break-before":[{"break-before":A()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none"]}],clear:[{clear:["left","right","both","none"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...M(),Ke]}],overflow:[{overflow:T()}],"overflow-x":[{"overflow-x":T()}],"overflow-y":[{"overflow-y":T()}],overscroll:[{overscroll:R()}],"overscroll-x":[{"overscroll-x":R()}],"overscroll-y":[{"overscroll-y":R()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[y]}],"inset-x":[{"inset-x":[y]}],"inset-y":[{"inset-y":[y]}],start:[{start:[y]}],end:[{end:[y]}],top:[{top:[y]}],right:[{right:[y]}],bottom:[{bottom:[y]}],left:[{left:[y]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",tu,Ke]}],basis:[{basis:L()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",Ke]}],grow:[{grow:O()}],shrink:[{shrink:O()}],order:[{order:["first","last","none",tu,Ke]}],"grid-cols":[{"grid-cols":[nu]}],"col-start-end":[{col:["auto",{span:["full",tu,Ke]},Ke]}],"col-start":[{"col-start":z()}],"col-end":[{"col-end":z()}],"grid-rows":[{"grid-rows":[nu]}],"row-start-end":[{row:["auto",{span:[tu,Ke]},Ke]}],"row-start":[{"row-start":z()}],"row-end":[{"row-end":z()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",Ke]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",Ke]}],gap:[{gap:[g]}],"gap-x":[{"gap-x":[g]}],"gap-y":[{"gap-y":[g]}],"justify-content":[{justify:["normal",...j()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...j(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...j(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[h]}],px:[{px:[h]}],py:[{py:[h]}],ps:[{ps:[h]}],pe:[{pe:[h]}],pt:[{pt:[h]}],pr:[{pr:[h]}],pb:[{pb:[h]}],pl:[{pl:[h]}],m:[{m:[w]}],mx:[{mx:[w]}],my:[{my:[w]}],ms:[{ms:[w]}],me:[{me:[w]}],mt:[{mt:[w]}],mr:[{mr:[w]}],mb:[{mb:[w]}],ml:[{ml:[w]}],"space-x":[{"space-x":[C]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[C]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit",Ke,t]}],"min-w":[{"min-w":["min","max","fit",Ke,oa]}],"max-w":[{"max-w":["0","none","full","min","max","fit","prose",{screen:[Lo]},Lo,Ke]}],h:[{h:[Ke,t,"auto","min","max","fit"]}],"min-h":[{"min-h":["min","max","fit",oa,Ke]}],"max-h":[{"max-h":[Ke,t,"min","max","fit"]}],"font-size":[{text:["base",Lo,Do]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",Kf]}],"font-family":[{font:[nu]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractons"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",Ke]}],"line-clamp":[{"line-clamp":["none",ns,Kf]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",oa,Ke]}],"list-image":[{"list-image":["none",Ke]}],"list-style-type":[{list:["none","disc","decimal",Ke]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[v]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[v]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...U(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",oa,Do]}],"underline-offset":[{"underline-offset":["auto",oa,Ke]}],"text-decoration-color":[{decoration:[e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],indent:[{indent:D()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",Ke]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",Ke]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[v]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...M(),cG]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",lG]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},dG]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[b]}],"gradient-via-pos":[{via:[b]}],"gradient-to-pos":[{to:[b]}],"gradient-from":[{from:[m]}],"gradient-via":[{via:[m]}],"gradient-to":[{to:[m]}],rounded:[{rounded:[o]}],"rounded-s":[{"rounded-s":[o]}],"rounded-e":[{"rounded-e":[o]}],"rounded-t":[{"rounded-t":[o]}],"rounded-r":[{"rounded-r":[o]}],"rounded-b":[{"rounded-b":[o]}],"rounded-l":[{"rounded-l":[o]}],"rounded-ss":[{"rounded-ss":[o]}],"rounded-se":[{"rounded-se":[o]}],"rounded-ee":[{"rounded-ee":[o]}],"rounded-es":[{"rounded-es":[o]}],"rounded-tl":[{"rounded-tl":[o]}],"rounded-tr":[{"rounded-tr":[o]}],"rounded-br":[{"rounded-br":[o]}],"rounded-bl":[{"rounded-bl":[o]}],"border-w":[{border:[s]}],"border-w-x":[{"border-x":[s]}],"border-w-y":[{"border-y":[s]}],"border-w-s":[{"border-s":[s]}],"border-w-e":[{"border-e":[s]}],"border-w-t":[{"border-t":[s]}],"border-w-r":[{"border-r":[s]}],"border-w-b":[{"border-b":[s]}],"border-w-l":[{"border-l":[s]}],"border-opacity":[{"border-opacity":[v]}],"border-style":[{border:[...U(),"hidden"]}],"divide-x":[{"divide-x":[s]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[s]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[v]}],"divide-style":[{divide:U()}],"border-color":[{border:[a]}],"border-color-x":[{"border-x":[a]}],"border-color-y":[{"border-y":[a]}],"border-color-t":[{"border-t":[a]}],"border-color-r":[{"border-r":[a]}],"border-color-b":[{"border-b":[a]}],"border-color-l":[{"border-l":[a]}],"divide-color":[{divide:[a]}],"outline-style":[{outline:["",...U()]}],"outline-offset":[{"outline-offset":[oa,Ke]}],"outline-w":[{outline:[oa,Do]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:H()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[v]}],"ring-offset-w":[{"ring-offset":[oa,Do]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",Lo,fG]}],"shadow-color":[{shadow:[nu]}],opacity:[{opacity:[v]}],"mix-blend":[{"mix-blend":X()}],"bg-blend":[{"bg-blend":X()}],filter:[{filter:["","none"]}],blur:[{blur:[n]}],brightness:[{brightness:[r]}],contrast:[{contrast:[l]}],"drop-shadow":[{"drop-shadow":["","none",Lo,Ke]}],grayscale:[{grayscale:[c]}],"hue-rotate":[{"hue-rotate":[u]}],invert:[{invert:[d]}],saturate:[{saturate:[S]}],sepia:[{sepia:[k]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[n]}],"backdrop-brightness":[{"backdrop-brightness":[r]}],"backdrop-contrast":[{"backdrop-contrast":[l]}],"backdrop-grayscale":[{"backdrop-grayscale":[c]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[u]}],"backdrop-invert":[{"backdrop-invert":[d]}],"backdrop-opacity":[{"backdrop-opacity":[v]}],"backdrop-saturate":[{"backdrop-saturate":[S]}],"backdrop-sepia":[{"backdrop-sepia":[k]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[i]}],"border-spacing-x":[{"border-spacing-x":[i]}],"border-spacing-y":[{"border-spacing-y":[i]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",Ke]}],duration:[{duration:P()}],ease:[{ease:["linear","in","out","in-out",Ke]}],delay:[{delay:P()}],animate:[{animate:["none","spin","ping","pulse","bounce",Ke]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[E]}],"scale-x":[{"scale-x":[E]}],"scale-y":[{"scale-y":[E]}],rotate:[{rotate:[tu,Ke]}],"translate-x":[{"translate-x":[_]}],"translate-y":[{"translate-y":[_]}],"skew-x":[{"skew-x":[x]}],"skew-y":[{"skew-y":[x]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",Ke]}],accent:[{accent:["auto",e]}],appearance:["appearance-none"],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",Ke]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":D()}],"scroll-mx":[{"scroll-mx":D()}],"scroll-my":[{"scroll-my":D()}],"scroll-ms":[{"scroll-ms":D()}],"scroll-me":[{"scroll-me":D()}],"scroll-mt":[{"scroll-mt":D()}],"scroll-mr":[{"scroll-mr":D()}],"scroll-mb":[{"scroll-mb":D()}],"scroll-ml":[{"scroll-ml":D()}],"scroll-p":[{"scroll-p":D()}],"scroll-px":[{"scroll-px":D()}],"scroll-py":[{"scroll-py":D()}],"scroll-ps":[{"scroll-ps":D()}],"scroll-pe":[{"scroll-pe":D()}],"scroll-pt":[{"scroll-pt":D()}],"scroll-pr":[{"scroll-pr":D()}],"scroll-pb":[{"scroll-pb":D()}],"scroll-pl":[{"scroll-pl":D()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",Ke]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[oa,Do,Kf]}],stroke:[{stroke:[e,"none"]}],sr:["sr-only","not-sr-only"]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}}const bG=Jq(hG);function ee(...e){return bG(Z4(e))}const yG=gq,iF=p.forwardRef(({className:e,...t},n)=>f.jsx(H4,{ref:n,className:ee("fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",e),...t}));iF.displayName=H4.displayName;const vG=ef("group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),sF=p.forwardRef(({className:e,variant:t,...n},r)=>f.jsx(V4,{ref:r,className:ee(vG({variant:t}),e),...n}));sF.displayName=V4.displayName;const SG=p.forwardRef(({className:e,...t},n)=>f.jsx(W4,{ref:n,className:ee("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",e),...t}));SG.displayName=W4.displayName;const lF=p.forwardRef(({className:e,...t},n)=>f.jsx(K4,{ref:n,className:ee("absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",e),"toast-close":"",...t,children:f.jsx(Di,{className:"h-4 w-4"})}));lF.displayName=K4.displayName;const cF=p.forwardRef(({className:e,...t},n)=>f.jsx(q4,{ref:n,className:ee("text-sm font-semibold",e),...t}));cF.displayName=q4.displayName;const uF=p.forwardRef(({className:e,...t},n)=>f.jsx(G4,{ref:n,className:ee("text-sm opacity-90",e),...t}));uF.displayName=G4.displayName;const wG=1,EG=1e6;let vb=0;function xG(){return vb=(vb+1)%Number.MAX_VALUE,vb.toString()}const Sb=new Map,CR=e=>{if(Sb.has(e))return;const t=setTimeout(()=>{Sb.delete(e),zu({type:"REMOVE_TOAST",toastId:e})},EG);Sb.set(e,t)},kG=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,wG)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(n=>n.id===t.toast.id?{...n,...t.toast}:n)};case"DISMISS_TOAST":{const{toastId:n}=t;return n?CR(n):e.toasts.forEach(r=>{CR(r.id)}),{...e,toasts:e.toasts.map(r=>r.id===n||n===void 0?{...r,open:!1}:r)}}case"REMOVE_TOAST":return t.toastId===void 0?{...e,toasts:[]}:{...e,toasts:e.toasts.filter(n=>n.id!==t.toastId)}}},Fp=[];let jp={toasts:[]};function zu(e){jp=kG(jp,e),Fp.forEach(t=>{t(jp)})}function e_({...e}){const t=xG(),n=a=>zu({type:"UPDATE_TOAST",toast:{...a,id:t}}),r=()=>zu({type:"DISMISS_TOAST",toastId:t});return zu({type:"ADD_TOAST",toast:{...e,id:t,open:!0,onOpenChange:a=>{a||r()}}}),{id:t,dismiss:r,update:n}}function An(){const[e,t]=p.useState(jp);return p.useEffect(()=>(Fp.push(t),()=>{const n=Fp.indexOf(t);n>-1&&Fp.splice(n,1)}),[e]),{...e,toast:e_,dismiss:n=>zu({type:"DISMISS_TOAST",toastId:n})}}function CG(){const{toasts:e}=An();return f.jsxs(yG,{children:[e.map(function({id:t,title:n,description:r,action:a,...o}){return f.jsxs(sF,{...o,children:[f.jsxs("div",{className:"grid gap-1",children:[n&&f.jsx(cF,{children:n}),r&&f.jsx(uF,{children:r})]}),a,f.jsx(lF,{})]},t)}),f.jsx(iF,{})]})}var Dc=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},gc=typeof window>"u"||"Deno"in window;function Fr(){}function _G(e,t){return typeof e=="function"?e(t):e}function _1(e){return typeof e=="number"&&e>=0&&e!==1/0}function dF(e,t){return Math.max(e+(t||0)-Date.now(),0)}function _R(e,t){const{type:n="all",exact:r,fetchStatus:a,predicate:o,queryKey:i,stale:s}=e;if(i){if(r){if(t.queryHash!==t_(i,t.options))return!1}else if(!md(t.queryKey,i))return!1}if(n!=="all"){const l=t.isActive();if(n==="active"&&!l||n==="inactive"&&l)return!1}return!(typeof s=="boolean"&&t.isStale()!==s||typeof a<"u"&&a!==t.state.fetchStatus||o&&!o(t))}function AR(e,t){const{exact:n,status:r,predicate:a,mutationKey:o}=e;if(o){if(!t.options.mutationKey)return!1;if(n){if(gd(t.options.mutationKey)!==gd(o))return!1}else if(!md(t.options.mutationKey,o))return!1}return!(r&&t.state.status!==r||a&&!a(t))}function t_(e,t){return((t==null?void 0:t.queryKeyHashFn)||gd)(e)}function gd(e){return JSON.stringify(e,(t,n)=>A1(n)?Object.keys(n).sort().reduce((r,a)=>(r[a]=n[a],r),{}):n)}function md(e,t){return e===t?!0:typeof e!=typeof t?!1:e&&t&&typeof e=="object"&&typeof t=="object"?!Object.keys(t).some(n=>!md(e[n],t[n])):!1}function fF(e,t){if(e===t)return e;const n=TR(e)&&TR(t);if(n||A1(e)&&A1(t)){const r=n?e.length:Object.keys(e).length,a=n?t:Object.keys(t),o=a.length,i=n?[]:{};let s=0;for(let l=0;l"u")return!0;const n=t.prototype;return!(!RR(n)||!n.hasOwnProperty("isPrototypeOf"))}function RR(e){return Object.prototype.toString.call(e)==="[object Object]"}function pF(e){return new Promise(t=>{setTimeout(t,e)})}function NR(e){pF(0).then(e)}function T1(e,t,n){return typeof n.structuralSharing=="function"?n.structuralSharing(e,t):n.structuralSharing!==!1?fF(e,t):t}function AG(e,t,n=0){const r=[...e,t];return n&&r.length>n?r.slice(1):r}function TG(e,t,n=0){const r=[t,...e];return n&&r.length>n?r.slice(0,-1):r}var ss,Zo,ql,lP,RG=(lP=class extends Dc{constructor(){super();xe(this,ss,void 0);xe(this,Zo,void 0);xe(this,ql,void 0);me(this,ql,t=>{if(!gc&&window.addEventListener){const n=()=>t();return window.addEventListener("visibilitychange",n,!1),()=>{window.removeEventListener("visibilitychange",n)}}})}onSubscribe(){$(this,Zo)||this.setEventListener($(this,ql))}onUnsubscribe(){var t;this.hasListeners()||((t=$(this,Zo))==null||t.call(this),me(this,Zo,void 0))}setEventListener(t){var n;me(this,ql,t),(n=$(this,Zo))==null||n.call(this),me(this,Zo,t(r=>{typeof r=="boolean"?this.setFocused(r):this.onFocus()}))}setFocused(t){$(this,ss)!==t&&(me(this,ss,t),this.onFocus())}onFocus(){this.listeners.forEach(t=>{t()})}isFocused(){var t;return typeof $(this,ss)=="boolean"?$(this,ss):((t=globalThis.document)==null?void 0:t.visibilityState)!=="hidden"}},ss=new WeakMap,Zo=new WeakMap,ql=new WeakMap,lP),Cg=new RG,Gl,Xo,Wl,cP,NG=(cP=class extends Dc{constructor(){super();xe(this,Gl,!0);xe(this,Xo,void 0);xe(this,Wl,void 0);me(this,Wl,t=>{if(!gc&&window.addEventListener){const n=()=>t(!0),r=()=>t(!1);return window.addEventListener("online",n,!1),window.addEventListener("offline",r,!1),()=>{window.removeEventListener("online",n),window.removeEventListener("offline",r)}}})}onSubscribe(){$(this,Xo)||this.setEventListener($(this,Wl))}onUnsubscribe(){var t;this.hasListeners()||((t=$(this,Xo))==null||t.call(this),me(this,Xo,void 0))}setEventListener(t){var n;me(this,Wl,t),(n=$(this,Xo))==null||n.call(this),me(this,Xo,t(this.setOnline.bind(this)))}setOnline(t){$(this,Gl)!==t&&(me(this,Gl,t),this.listeners.forEach(r=>{r(t)}))}isOnline(){return $(this,Gl)}},Gl=new WeakMap,Xo=new WeakMap,Wl=new WeakMap,cP),_g=new NG;function IG(e){return Math.min(1e3*2**e,3e4)}function jm(e){return(e??"online")==="online"?_g.isOnline():!0}var gF=class{constructor(e){this.revert=e==null?void 0:e.revert,this.silent=e==null?void 0:e.silent}};function wb(e){return e instanceof gF}function mF(e){let t=!1,n=0,r=!1,a,o,i;const s=new Promise((w,v)=>{o=w,i=v}),l=w=>{var v;r||(m(new gF(w)),(v=e.abort)==null||v.call(e))},c=()=>{t=!0},u=()=>{t=!1},d=()=>!Cg.isFocused()||e.networkMode!=="always"&&!_g.isOnline(),g=w=>{var v;r||(r=!0,(v=e.onSuccess)==null||v.call(e,w),a==null||a(),o(w))},m=w=>{var v;r||(r=!0,(v=e.onError)==null||v.call(e,w),a==null||a(),i(w))},b=()=>new Promise(w=>{var v;a=h=>{const S=r||!d();return S&&w(h),S},(v=e.onPause)==null||v.call(e)}).then(()=>{var w;a=void 0,r||(w=e.onContinue)==null||w.call(e)}),y=()=>{if(r)return;let w;try{w=e.fn()}catch(v){w=Promise.reject(v)}Promise.resolve(w).then(g).catch(v=>{var x;if(r)return;const h=e.retry??(gc?0:3),S=e.retryDelay??IG,E=typeof S=="function"?S(n,v):S,k=h===!0||typeof h=="number"&&n{if(d())return b()}).then(()=>{t?m(v):y()})})};return jm(e.networkMode)?y():b().then(y),{promise:s,cancel:l,continue:()=>(a==null?void 0:a())?s:Promise.resolve(),cancelRetry:c,continueRetry:u}}function OG(){let e=[],t=0,n=u=>{u()},r=u=>{u()};const a=u=>{let d;t++;try{d=u()}finally{t--,t||s()}return d},o=u=>{t?e.push(u):NR(()=>{n(u)})},i=u=>(...d)=>{o(()=>{u(...d)})},s=()=>{const u=e;e=[],u.length&&NR(()=>{r(()=>{u.forEach(d=>{n(d)})})})};return{batch:a,batchCalls:i,schedule:o,setNotifyFunction:u=>{n=u},setBatchNotifyFunction:u=>{r=u}}}var sn=OG(),ls,uP,hF=(uP=class{constructor(){xe(this,ls,void 0)}destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),_1(this.gcTime)&&me(this,ls,setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(gc?1/0:5*60*1e3))}clearGcTimeout(){$(this,ls)&&(clearTimeout($(this,ls)),me(this,ls,void 0))}},ls=new WeakMap,uP),Kl,Yl,Lr,Qo,Mr,gn,Md,cs,Zl,zp,sa,eo,dP,DG=(dP=class extends hF{constructor(t){super();xe(this,Zl);xe(this,sa);xe(this,Kl,void 0);xe(this,Yl,void 0);xe(this,Lr,void 0);xe(this,Qo,void 0);xe(this,Mr,void 0);xe(this,gn,void 0);xe(this,Md,void 0);xe(this,cs,void 0);me(this,cs,!1),me(this,Md,t.defaultOptions),Ue(this,Zl,zp).call(this,t.options),me(this,gn,[]),me(this,Lr,t.cache),this.queryKey=t.queryKey,this.queryHash=t.queryHash,me(this,Kl,t.state||LG(this.options)),this.state=$(this,Kl),this.scheduleGc()}get meta(){return this.options.meta}optionalRemove(){!$(this,gn).length&&this.state.fetchStatus==="idle"&&$(this,Lr).remove(this)}setData(t,n){const r=T1(this.state.data,t,this.options);return Ue(this,sa,eo).call(this,{data:r,type:"success",dataUpdatedAt:n==null?void 0:n.updatedAt,manual:n==null?void 0:n.manual}),r}setState(t,n){Ue(this,sa,eo).call(this,{type:"setState",state:t,setStateOptions:n})}cancel(t){var r;const n=$(this,Qo);return(r=$(this,Mr))==null||r.cancel(t),n?n.then(Fr).catch(Fr):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState($(this,Kl))}isActive(){return $(this,gn).some(t=>t.options.enabled!==!1)}isDisabled(){return this.getObserversCount()>0&&!this.isActive()}isStale(){return this.state.isInvalidated||!this.state.dataUpdatedAt||$(this,gn).some(t=>t.getCurrentResult().isStale)}isStaleByTime(t=0){return this.state.isInvalidated||!this.state.dataUpdatedAt||!dF(this.state.dataUpdatedAt,t)}onFocus(){var n;const t=$(this,gn).find(r=>r.shouldFetchOnWindowFocus());t==null||t.refetch({cancelRefetch:!1}),(n=$(this,Mr))==null||n.continue()}onOnline(){var n;const t=$(this,gn).find(r=>r.shouldFetchOnReconnect());t==null||t.refetch({cancelRefetch:!1}),(n=$(this,Mr))==null||n.continue()}addObserver(t){$(this,gn).includes(t)||($(this,gn).push(t),this.clearGcTimeout(),$(this,Lr).notify({type:"observerAdded",query:this,observer:t}))}removeObserver(t){$(this,gn).includes(t)&&(me(this,gn,$(this,gn).filter(n=>n!==t)),$(this,gn).length||($(this,Mr)&&($(this,cs)?$(this,Mr).cancel({revert:!0}):$(this,Mr).cancelRetry()),this.scheduleGc()),$(this,Lr).notify({type:"observerRemoved",query:this,observer:t}))}getObserversCount(){return $(this,gn).length}invalidate(){this.state.isInvalidated||Ue(this,sa,eo).call(this,{type:"invalidate"})}fetch(t,n){var c,u,d,g;if(this.state.fetchStatus!=="idle"){if(this.state.dataUpdatedAt&&(n!=null&&n.cancelRefetch))this.cancel({silent:!0});else if($(this,Qo))return(c=$(this,Mr))==null||c.continueRetry(),$(this,Qo)}if(t&&Ue(this,Zl,zp).call(this,t),!this.options.queryFn){const m=$(this,gn).find(b=>b.options.queryFn);m&&Ue(this,Zl,zp).call(this,m.options)}const r=new AbortController,a={queryKey:this.queryKey,meta:this.meta},o=m=>{Object.defineProperty(m,"signal",{enumerable:!0,get:()=>(me(this,cs,!0),r.signal)})};o(a);const i=()=>this.options.queryFn?(me(this,cs,!1),this.options.persister?this.options.persister(this.options.queryFn,a,this):this.options.queryFn(a)):Promise.reject(new Error(`Missing queryFn: '${this.options.queryHash}'`)),s={fetchOptions:n,options:this.options,queryKey:this.queryKey,state:this.state,fetchFn:i};o(s),(u=this.options.behavior)==null||u.onFetch(s,this),me(this,Yl,this.state),(this.state.fetchStatus==="idle"||this.state.fetchMeta!==((d=s.fetchOptions)==null?void 0:d.meta))&&Ue(this,sa,eo).call(this,{type:"fetch",meta:(g=s.fetchOptions)==null?void 0:g.meta});const l=m=>{var b,y,w,v;wb(m)&&m.silent||Ue(this,sa,eo).call(this,{type:"error",error:m}),wb(m)||((y=(b=$(this,Lr).config).onError)==null||y.call(b,m,this),(v=(w=$(this,Lr).config).onSettled)==null||v.call(w,this.state.data,m,this)),this.isFetchingOptimistic||this.scheduleGc(),this.isFetchingOptimistic=!1};return me(this,Mr,mF({fn:s.fetchFn,abort:r.abort.bind(r),onSuccess:m=>{var b,y,w,v;if(typeof m>"u"){l(new Error(`${this.queryHash} data is undefined`));return}this.setData(m),(y=(b=$(this,Lr).config).onSuccess)==null||y.call(b,m,this),(v=(w=$(this,Lr).config).onSettled)==null||v.call(w,m,this.state.error,this),this.isFetchingOptimistic||this.scheduleGc(),this.isFetchingOptimistic=!1},onError:l,onFail:(m,b)=>{Ue(this,sa,eo).call(this,{type:"failed",failureCount:m,error:b})},onPause:()=>{Ue(this,sa,eo).call(this,{type:"pause"})},onContinue:()=>{Ue(this,sa,eo).call(this,{type:"continue"})},retry:s.options.retry,retryDelay:s.options.retryDelay,networkMode:s.options.networkMode})),me(this,Qo,$(this,Mr).promise),$(this,Qo)}},Kl=new WeakMap,Yl=new WeakMap,Lr=new WeakMap,Qo=new WeakMap,Mr=new WeakMap,gn=new WeakMap,Md=new WeakMap,cs=new WeakMap,Zl=new WeakSet,zp=function(t){this.options={...$(this,Md),...t},this.updateGcTime(this.options.gcTime)},sa=new WeakSet,eo=function(t){const n=r=>{switch(t.type){case"failed":return{...r,fetchFailureCount:t.failureCount,fetchFailureReason:t.error};case"pause":return{...r,fetchStatus:"paused"};case"continue":return{...r,fetchStatus:"fetching"};case"fetch":return{...r,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:t.meta??null,fetchStatus:jm(this.options.networkMode)?"fetching":"paused",...!r.dataUpdatedAt&&{error:null,status:"pending"}};case"success":return{...r,data:t.data,dataUpdateCount:r.dataUpdateCount+1,dataUpdatedAt:t.dataUpdatedAt??Date.now(),error:null,isInvalidated:!1,status:"success",...!t.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};case"error":const a=t.error;return wb(a)&&a.revert&&$(this,Yl)?{...$(this,Yl),fetchStatus:"idle"}:{...r,error:a,errorUpdateCount:r.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:r.fetchFailureCount+1,fetchFailureReason:a,fetchStatus:"idle",status:"error"};case"invalidate":return{...r,isInvalidated:!0};case"setState":return{...r,...t.state}}};this.state=n(this.state),sn.batch(()=>{$(this,gn).forEach(r=>{r.onQueryUpdate()}),$(this,Lr).notify({query:this,type:"updated",action:t})})},dP);function LG(e){const t=typeof e.initialData=="function"?e.initialData():e.initialData,n=typeof t<"u",r=n?typeof e.initialDataUpdatedAt=="function"?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:n?r??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:n?"success":"pending",fetchStatus:"idle"}}var Ca,fP,MG=(fP=class extends Dc{constructor(t={}){super();xe(this,Ca,void 0);this.config=t,me(this,Ca,new Map)}build(t,n,r){const a=n.queryKey,o=n.queryHash??t_(a,n);let i=this.get(o);return i||(i=new DG({cache:this,queryKey:a,queryHash:o,options:t.defaultQueryOptions(n),state:r,defaultOptions:t.getQueryDefaults(a)}),this.add(i)),i}add(t){$(this,Ca).has(t.queryHash)||($(this,Ca).set(t.queryHash,t),this.notify({type:"added",query:t}))}remove(t){const n=$(this,Ca).get(t.queryHash);n&&(t.destroy(),n===t&&$(this,Ca).delete(t.queryHash),this.notify({type:"removed",query:t}))}clear(){sn.batch(()=>{this.getAll().forEach(t=>{this.remove(t)})})}get(t){return $(this,Ca).get(t)}getAll(){return[...$(this,Ca).values()]}find(t){const n={exact:!0,...t};return this.getAll().find(r=>_R(n,r))}findAll(t={}){const n=this.getAll();return Object.keys(t).length>0?n.filter(r=>_R(t,r)):n}notify(t){sn.batch(()=>{this.listeners.forEach(n=>{n(t)})})}onFocus(){sn.batch(()=>{this.getAll().forEach(t=>{t.onFocus()})})}onOnline(){sn.batch(()=>{this.getAll().forEach(t=>{t.onOnline()})})}},Ca=new WeakMap,fP),_a,Pd,yr,Xl,Aa,Uo,pP,PG=(pP=class extends hF{constructor(t){super();xe(this,Aa);xe(this,_a,void 0);xe(this,Pd,void 0);xe(this,yr,void 0);xe(this,Xl,void 0);this.mutationId=t.mutationId,me(this,Pd,t.defaultOptions),me(this,yr,t.mutationCache),me(this,_a,[]),this.state=t.state||bF(),this.setOptions(t.options),this.scheduleGc()}setOptions(t){this.options={...$(this,Pd),...t},this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(t){$(this,_a).includes(t)||($(this,_a).push(t),this.clearGcTimeout(),$(this,yr).notify({type:"observerAdded",mutation:this,observer:t}))}removeObserver(t){me(this,_a,$(this,_a).filter(n=>n!==t)),this.scheduleGc(),$(this,yr).notify({type:"observerRemoved",mutation:this,observer:t})}optionalRemove(){$(this,_a).length||(this.state.status==="pending"?this.scheduleGc():$(this,yr).remove(this))}continue(){var t;return((t=$(this,Xl))==null?void 0:t.continue())??this.execute(this.state.variables)}async execute(t){var a,o,i,s,l,c,u,d,g,m,b,y,w,v,h,S,E,k,x,C;const n=()=>(me(this,Xl,mF({fn:()=>this.options.mutationFn?this.options.mutationFn(t):Promise.reject(new Error("No mutationFn found")),onFail:(_,R)=>{Ue(this,Aa,Uo).call(this,{type:"failed",failureCount:_,error:R})},onPause:()=>{Ue(this,Aa,Uo).call(this,{type:"pause"})},onContinue:()=>{Ue(this,Aa,Uo).call(this,{type:"continue"})},retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode})),$(this,Xl).promise),r=this.state.status==="pending";try{if(!r){Ue(this,Aa,Uo).call(this,{type:"pending",variables:t}),await((o=(a=$(this,yr).config).onMutate)==null?void 0:o.call(a,t,this));const R=await((s=(i=this.options).onMutate)==null?void 0:s.call(i,t));R!==this.state.context&&Ue(this,Aa,Uo).call(this,{type:"pending",context:R,variables:t})}const _=await n();return await((c=(l=$(this,yr).config).onSuccess)==null?void 0:c.call(l,_,t,this.state.context,this)),await((d=(u=this.options).onSuccess)==null?void 0:d.call(u,_,t,this.state.context)),await((m=(g=$(this,yr).config).onSettled)==null?void 0:m.call(g,_,null,this.state.variables,this.state.context,this)),await((y=(b=this.options).onSettled)==null?void 0:y.call(b,_,null,t,this.state.context)),Ue(this,Aa,Uo).call(this,{type:"success",data:_}),_}catch(_){try{throw await((v=(w=$(this,yr).config).onError)==null?void 0:v.call(w,_,t,this.state.context,this)),await((S=(h=this.options).onError)==null?void 0:S.call(h,_,t,this.state.context)),await((k=(E=$(this,yr).config).onSettled)==null?void 0:k.call(E,void 0,_,this.state.variables,this.state.context,this)),await((C=(x=this.options).onSettled)==null?void 0:C.call(x,void 0,_,t,this.state.context)),_}finally{Ue(this,Aa,Uo).call(this,{type:"error",error:_})}}}},_a=new WeakMap,Pd=new WeakMap,yr=new WeakMap,Xl=new WeakMap,Aa=new WeakSet,Uo=function(t){const n=r=>{switch(t.type){case"failed":return{...r,failureCount:t.failureCount,failureReason:t.error};case"pause":return{...r,isPaused:!0};case"continue":return{...r,isPaused:!1};case"pending":return{...r,context:t.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:!jm(this.options.networkMode),status:"pending",variables:t.variables,submittedAt:Date.now()};case"success":return{...r,data:t.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...r,data:void 0,error:t.error,failureCount:r.failureCount+1,failureReason:t.error,isPaused:!1,status:"error"}}};this.state=n(this.state),sn.batch(()=>{$(this,_a).forEach(r=>{r.onMutationUpdate(t)}),$(this,yr).notify({mutation:this,type:"updated",action:t})})},pP);function bF(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0}}var Pr,$d,us,gP,$G=(gP=class extends Dc{constructor(t={}){super();xe(this,Pr,void 0);xe(this,$d,void 0);xe(this,us,void 0);this.config=t,me(this,Pr,[]),me(this,$d,0)}build(t,n,r){const a=new PG({mutationCache:this,mutationId:++Tf(this,$d)._,options:t.defaultMutationOptions(n),state:r});return this.add(a),a}add(t){$(this,Pr).push(t),this.notify({type:"added",mutation:t})}remove(t){me(this,Pr,$(this,Pr).filter(n=>n!==t)),this.notify({type:"removed",mutation:t})}clear(){sn.batch(()=>{$(this,Pr).forEach(t=>{this.remove(t)})})}getAll(){return $(this,Pr)}find(t){const n={exact:!0,...t};return $(this,Pr).find(r=>AR(n,r))}findAll(t={}){return $(this,Pr).filter(n=>AR(t,n))}notify(t){sn.batch(()=>{this.listeners.forEach(n=>{n(t)})})}resumePausedMutations(){return me(this,us,($(this,us)??Promise.resolve()).then(()=>{const t=$(this,Pr).filter(n=>n.state.isPaused);return sn.batch(()=>t.reduce((n,r)=>n.then(()=>r.continue().catch(Fr)),Promise.resolve()))}).then(()=>{me(this,us,void 0)})),$(this,us)}},Pr=new WeakMap,$d=new WeakMap,us=new WeakMap,gP);function FG(e){return{onFetch:(t,n)=>{const r=async()=>{var b,y,w,v,h;const a=t.options,o=(w=(y=(b=t.fetchOptions)==null?void 0:b.meta)==null?void 0:y.fetchMore)==null?void 0:w.direction,i=((v=t.state.data)==null?void 0:v.pages)||[],s=((h=t.state.data)==null?void 0:h.pageParams)||[],l={pages:[],pageParams:[]};let c=!1;const u=S=>{Object.defineProperty(S,"signal",{enumerable:!0,get:()=>(t.signal.aborted?c=!0:t.signal.addEventListener("abort",()=>{c=!0}),t.signal)})},d=t.options.queryFn||(()=>Promise.reject(new Error(`Missing queryFn: '${t.options.queryHash}'`))),g=async(S,E,k)=>{if(c)return Promise.reject();if(E==null&&S.pages.length)return Promise.resolve(S);const x={queryKey:t.queryKey,pageParam:E,direction:k?"backward":"forward",meta:t.options.meta};u(x);const C=await d(x),{maxPages:_}=t.options,R=k?TG:AG;return{pages:R(S.pages,C,_),pageParams:R(S.pageParams,E,_)}};let m;if(o&&i.length){const S=o==="backward",E=S?jG:IR,k={pages:i,pageParams:s},x=E(a,k);m=await g(k,x,S)}else{m=await g(l,s[0]??a.initialPageParam);const S=e??i.length;for(let E=1;E{var a,o;return(o=(a=t.options).persister)==null?void 0:o.call(a,r,{queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},n)}:t.fetchFn=r}}}function IR(e,{pages:t,pageParams:n}){const r=t.length-1;return e.getNextPageParam(t[r],t,n[r],n)}function jG(e,{pages:t,pageParams:n}){var r;return(r=e.getPreviousPageParam)==null?void 0:r.call(e,t[0],t,n[0],n)}var an,Jo,ei,Ql,Jl,ti,ec,tc,mP,zG=(mP=class{constructor(e={}){xe(this,an,void 0);xe(this,Jo,void 0);xe(this,ei,void 0);xe(this,Ql,void 0);xe(this,Jl,void 0);xe(this,ti,void 0);xe(this,ec,void 0);xe(this,tc,void 0);me(this,an,e.queryCache||new MG),me(this,Jo,e.mutationCache||new $G),me(this,ei,e.defaultOptions||{}),me(this,Ql,new Map),me(this,Jl,new Map),me(this,ti,0)}mount(){Tf(this,ti)._++,$(this,ti)===1&&(me(this,ec,Cg.subscribe(()=>{Cg.isFocused()&&(this.resumePausedMutations(),$(this,an).onFocus())})),me(this,tc,_g.subscribe(()=>{_g.isOnline()&&(this.resumePausedMutations(),$(this,an).onOnline())})))}unmount(){var e,t;Tf(this,ti)._--,$(this,ti)===0&&((e=$(this,ec))==null||e.call(this),me(this,ec,void 0),(t=$(this,tc))==null||t.call(this),me(this,tc,void 0))}isFetching(e){return $(this,an).findAll({...e,fetchStatus:"fetching"}).length}isMutating(e){return $(this,Jo).findAll({...e,status:"pending"}).length}getQueryData(e){var t;return(t=$(this,an).find({queryKey:e}))==null?void 0:t.state.data}ensureQueryData(e){const t=this.getQueryData(e.queryKey);return t!==void 0?Promise.resolve(t):this.fetchQuery(e)}getQueriesData(e){return this.getQueryCache().findAll(e).map(({queryKey:t,state:n})=>{const r=n.data;return[t,r]})}setQueryData(e,t,n){const r=$(this,an).find({queryKey:e}),a=r==null?void 0:r.state.data,o=_G(t,a);if(typeof o>"u")return;const i=this.defaultQueryOptions({queryKey:e});return $(this,an).build(this,i).setData(o,{...n,manual:!0})}setQueriesData(e,t,n){return sn.batch(()=>this.getQueryCache().findAll(e).map(({queryKey:r})=>[r,this.setQueryData(r,t,n)]))}getQueryState(e){var t;return(t=$(this,an).find({queryKey:e}))==null?void 0:t.state}removeQueries(e){const t=$(this,an);sn.batch(()=>{t.findAll(e).forEach(n=>{t.remove(n)})})}resetQueries(e,t){const n=$(this,an),r={type:"active",...e};return sn.batch(()=>(n.findAll(e).forEach(a=>{a.reset()}),this.refetchQueries(r,t)))}cancelQueries(e={},t={}){const n={revert:!0,...t},r=sn.batch(()=>$(this,an).findAll(e).map(a=>a.cancel(n)));return Promise.all(r).then(Fr).catch(Fr)}invalidateQueries(e={},t={}){return sn.batch(()=>{if($(this,an).findAll(e).forEach(r=>{r.invalidate()}),e.refetchType==="none")return Promise.resolve();const n={...e,type:e.refetchType??e.type??"active"};return this.refetchQueries(n,t)})}refetchQueries(e={},t){const n={...t,cancelRefetch:(t==null?void 0:t.cancelRefetch)??!0},r=sn.batch(()=>$(this,an).findAll(e).filter(a=>!a.isDisabled()).map(a=>{let o=a.fetch(void 0,n);return n.throwOnError||(o=o.catch(Fr)),a.state.fetchStatus==="paused"?Promise.resolve():o}));return Promise.all(r).then(Fr)}fetchQuery(e){const t=this.defaultQueryOptions(e);typeof t.retry>"u"&&(t.retry=!1);const n=$(this,an).build(this,t);return n.isStaleByTime(t.staleTime)?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(Fr).catch(Fr)}fetchInfiniteQuery(e){return e.behavior=FG(e.pages),this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(Fr).catch(Fr)}resumePausedMutations(){return $(this,Jo).resumePausedMutations()}getQueryCache(){return $(this,an)}getMutationCache(){return $(this,Jo)}getDefaultOptions(){return $(this,ei)}setDefaultOptions(e){me(this,ei,e)}setQueryDefaults(e,t){$(this,Ql).set(gd(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){const t=[...$(this,Ql).values()];let n={};return t.forEach(r=>{md(e,r.queryKey)&&(n={...n,...r.defaultOptions})}),n}setMutationDefaults(e,t){$(this,Jl).set(gd(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){const t=[...$(this,Jl).values()];let n={};return t.forEach(r=>{md(e,r.mutationKey)&&(n={...n,...r.defaultOptions})}),n}defaultQueryOptions(e){if(e!=null&&e._defaulted)return e;const t={...$(this,ei).queries,...(e==null?void 0:e.queryKey)&&this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||(t.queryHash=t_(t.queryKey,t)),typeof t.refetchOnReconnect>"u"&&(t.refetchOnReconnect=t.networkMode!=="always"),typeof t.throwOnError>"u"&&(t.throwOnError=!!t.suspense),typeof t.networkMode>"u"&&t.persister&&(t.networkMode="offlineFirst"),t}defaultMutationOptions(e){return e!=null&&e._defaulted?e:{...$(this,ei).mutations,...(e==null?void 0:e.mutationKey)&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){$(this,an).clear(),$(this,Jo).clear()}},an=new WeakMap,Jo=new WeakMap,ei=new WeakMap,Ql=new WeakMap,Jl=new WeakMap,ti=new WeakMap,ec=new WeakMap,tc=new WeakMap,mP),rr,Ct,nc,On,ds,rc,Ta,Fd,ac,oc,fs,ps,ni,gs,ms,Cu,jd,R1,zd,N1,Ud,I1,Bd,O1,Hd,D1,Vd,L1,qd,M1,fm,yF,hP,UG=(hP=class extends Dc{constructor(t,n){super();xe(this,ms);xe(this,jd);xe(this,zd);xe(this,Ud);xe(this,Bd);xe(this,Hd);xe(this,Vd);xe(this,qd);xe(this,fm);xe(this,rr,void 0);xe(this,Ct,void 0);xe(this,nc,void 0);xe(this,On,void 0);xe(this,ds,void 0);xe(this,rc,void 0);xe(this,Ta,void 0);xe(this,Fd,void 0);xe(this,ac,void 0);xe(this,oc,void 0);xe(this,fs,void 0);xe(this,ps,void 0);xe(this,ni,void 0);xe(this,gs,void 0);me(this,Ct,void 0),me(this,nc,void 0),me(this,On,void 0),me(this,gs,new Set),me(this,rr,t),this.options=n,me(this,Ta,null),this.bindMethods(),this.setOptions(n)}bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&($(this,Ct).addObserver(this),OR($(this,Ct),this.options)?Ue(this,ms,Cu).call(this):this.updateResult(),Ue(this,Bd,O1).call(this))}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return P1($(this,Ct),this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return P1($(this,Ct),this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,Ue(this,Hd,D1).call(this),Ue(this,Vd,L1).call(this),$(this,Ct).removeObserver(this)}setOptions(t,n){const r=this.options,a=$(this,Ct);if(this.options=$(this,rr).defaultQueryOptions(t),kg(r,this.options)||$(this,rr).getQueryCache().notify({type:"observerOptionsUpdated",query:$(this,Ct),observer:this}),typeof this.options.enabled<"u"&&typeof this.options.enabled!="boolean")throw new Error("Expected enabled to be a boolean");this.options.queryKey||(this.options.queryKey=r.queryKey),Ue(this,qd,M1).call(this);const o=this.hasListeners();o&&DR($(this,Ct),a,this.options,r)&&Ue(this,ms,Cu).call(this),this.updateResult(n),o&&($(this,Ct)!==a||this.options.enabled!==r.enabled||this.options.staleTime!==r.staleTime)&&Ue(this,jd,R1).call(this);const i=Ue(this,zd,N1).call(this);o&&($(this,Ct)!==a||this.options.enabled!==r.enabled||i!==$(this,ni))&&Ue(this,Ud,I1).call(this,i)}getOptimisticResult(t){const n=$(this,rr).getQueryCache().build($(this,rr),t),r=this.createResult(n,t);return HG(this,r)&&(me(this,On,r),me(this,rc,this.options),me(this,ds,$(this,Ct).state)),r}getCurrentResult(){return $(this,On)}trackResult(t){const n={};return Object.keys(t).forEach(r=>{Object.defineProperty(n,r,{configurable:!1,enumerable:!0,get:()=>($(this,gs).add(r),t[r])})}),n}getCurrentQuery(){return $(this,Ct)}refetch({...t}={}){return this.fetch({...t})}fetchOptimistic(t){const n=$(this,rr).defaultQueryOptions(t),r=$(this,rr).getQueryCache().build($(this,rr),n);return r.isFetchingOptimistic=!0,r.fetch().then(()=>this.createResult(r,n))}fetch(t){return Ue(this,ms,Cu).call(this,{...t,cancelRefetch:t.cancelRefetch??!0}).then(()=>(this.updateResult(),$(this,On)))}createResult(t,n){var x;const r=$(this,Ct),a=this.options,o=$(this,On),i=$(this,ds),s=$(this,rc),c=t!==r?t.state:$(this,nc),{state:u}=t;let{error:d,errorUpdatedAt:g,fetchStatus:m,status:b}=u,y=!1,w;if(n._optimisticResults){const C=this.hasListeners(),_=!C&&OR(t,n),R=C&&DR(t,r,n,a);(_||R)&&(m=jm(t.options.networkMode)?"fetching":"paused",u.dataUpdatedAt||(b="pending")),n._optimisticResults==="isRestoring"&&(m="idle")}if(n.select&&typeof u.data<"u")if(o&&u.data===(i==null?void 0:i.data)&&n.select===$(this,Fd))w=$(this,ac);else try{me(this,Fd,n.select),w=n.select(u.data),w=T1(o==null?void 0:o.data,w,n),me(this,ac,w),me(this,Ta,null)}catch(C){me(this,Ta,C)}else w=u.data;if(typeof n.placeholderData<"u"&&typeof w>"u"&&b==="pending"){let C;if(o!=null&&o.isPlaceholderData&&n.placeholderData===(s==null?void 0:s.placeholderData))C=o.data;else if(C=typeof n.placeholderData=="function"?n.placeholderData((x=$(this,oc))==null?void 0:x.state.data,$(this,oc)):n.placeholderData,n.select&&typeof C<"u")try{C=n.select(C),me(this,Ta,null)}catch(_){me(this,Ta,_)}typeof C<"u"&&(b="success",w=T1(o==null?void 0:o.data,C,n),y=!0)}$(this,Ta)&&(d=$(this,Ta),w=$(this,ac),g=Date.now(),b="error");const v=m==="fetching",h=b==="pending",S=b==="error",E=h&&v;return{status:b,fetchStatus:m,isPending:h,isSuccess:b==="success",isError:S,isInitialLoading:E,isLoading:E,data:w,dataUpdatedAt:u.dataUpdatedAt,error:d,errorUpdatedAt:g,failureCount:u.fetchFailureCount,failureReason:u.fetchFailureReason,errorUpdateCount:u.errorUpdateCount,isFetched:u.dataUpdateCount>0||u.errorUpdateCount>0,isFetchedAfterMount:u.dataUpdateCount>c.dataUpdateCount||u.errorUpdateCount>c.errorUpdateCount,isFetching:v,isRefetching:v&&!h,isLoadingError:S&&u.dataUpdatedAt===0,isPaused:m==="paused",isPlaceholderData:y,isRefetchError:S&&u.dataUpdatedAt!==0,isStale:n_(t,n),refetch:this.refetch}}updateResult(t){const n=$(this,On),r=this.createResult($(this,Ct),this.options);if(me(this,ds,$(this,Ct).state),me(this,rc,this.options),kg(r,n))return;$(this,ds).data!==void 0&&me(this,oc,$(this,Ct)),me(this,On,r);const a={},o=()=>{if(!n)return!0;const{notifyOnChangeProps:i}=this.options,s=typeof i=="function"?i():i;if(s==="all"||!s&&!$(this,gs).size)return!0;const l=new Set(s??$(this,gs));return this.options.throwOnError&&l.add("error"),Object.keys($(this,On)).some(c=>{const u=c;return $(this,On)[u]!==n[u]&&l.has(u)})};(t==null?void 0:t.listeners)!==!1&&o()&&(a.listeners=!0),Ue(this,fm,yF).call(this,{...a,...t})}onQueryUpdate(){this.updateResult(),this.hasListeners()&&Ue(this,Bd,O1).call(this)}},rr=new WeakMap,Ct=new WeakMap,nc=new WeakMap,On=new WeakMap,ds=new WeakMap,rc=new WeakMap,Ta=new WeakMap,Fd=new WeakMap,ac=new WeakMap,oc=new WeakMap,fs=new WeakMap,ps=new WeakMap,ni=new WeakMap,gs=new WeakMap,ms=new WeakSet,Cu=function(t){Ue(this,qd,M1).call(this);let n=$(this,Ct).fetch(this.options,t);return t!=null&&t.throwOnError||(n=n.catch(Fr)),n},jd=new WeakSet,R1=function(){if(Ue(this,Hd,D1).call(this),gc||$(this,On).isStale||!_1(this.options.staleTime))return;const n=dF($(this,On).dataUpdatedAt,this.options.staleTime)+1;me(this,fs,setTimeout(()=>{$(this,On).isStale||this.updateResult()},n))},zd=new WeakSet,N1=function(){return(typeof this.options.refetchInterval=="function"?this.options.refetchInterval($(this,Ct)):this.options.refetchInterval)??!1},Ud=new WeakSet,I1=function(t){Ue(this,Vd,L1).call(this),me(this,ni,t),!(gc||this.options.enabled===!1||!_1($(this,ni))||$(this,ni)===0)&&me(this,ps,setInterval(()=>{(this.options.refetchIntervalInBackground||Cg.isFocused())&&Ue(this,ms,Cu).call(this)},$(this,ni)))},Bd=new WeakSet,O1=function(){Ue(this,jd,R1).call(this),Ue(this,Ud,I1).call(this,Ue(this,zd,N1).call(this))},Hd=new WeakSet,D1=function(){$(this,fs)&&(clearTimeout($(this,fs)),me(this,fs,void 0))},Vd=new WeakSet,L1=function(){$(this,ps)&&(clearInterval($(this,ps)),me(this,ps,void 0))},qd=new WeakSet,M1=function(){const t=$(this,rr).getQueryCache().build($(this,rr),this.options);if(t===$(this,Ct))return;const n=$(this,Ct);me(this,Ct,t),me(this,nc,t.state),this.hasListeners()&&(n==null||n.removeObserver(this),t.addObserver(this))},fm=new WeakSet,yF=function(t){sn.batch(()=>{t.listeners&&this.listeners.forEach(n=>{n($(this,On))}),$(this,rr).getQueryCache().notify({query:$(this,Ct),type:"observerResultsUpdated"})})},hP);function BG(e,t){return t.enabled!==!1&&!e.state.dataUpdatedAt&&!(e.state.status==="error"&&t.retryOnMount===!1)}function OR(e,t){return BG(e,t)||e.state.dataUpdatedAt>0&&P1(e,t,t.refetchOnMount)}function P1(e,t,n){if(t.enabled!==!1){const r=typeof n=="function"?n(e):n;return r==="always"||r!==!1&&n_(e,t)}return!1}function DR(e,t,n,r){return n.enabled!==!1&&(e!==t||r.enabled===!1)&&(!n.suspense||e.state.status!=="error")&&n_(e,n)}function n_(e,t){return e.isStaleByTime(t.staleTime)}function HG(e,t){return!kg(e.getCurrentResult(),t)}var ri,Wn,$r,oo,ic,Up,Gd,$1,bP,VG=(bP=class extends Dc{constructor(n,r){super();xe(this,ic);xe(this,Gd);xe(this,ri,void 0);xe(this,Wn,void 0);xe(this,$r,void 0);xe(this,oo,void 0);me(this,Wn,void 0),me(this,ri,n),this.setOptions(r),this.bindMethods(),Ue(this,ic,Up).call(this)}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(n){var a;const r=this.options;this.options=$(this,ri).defaultMutationOptions(n),kg(r,this.options)||$(this,ri).getMutationCache().notify({type:"observerOptionsUpdated",mutation:$(this,$r),observer:this}),(a=$(this,$r))==null||a.setOptions(this.options)}onUnsubscribe(){var n;this.hasListeners()||(n=$(this,$r))==null||n.removeObserver(this)}onMutationUpdate(n){Ue(this,ic,Up).call(this),Ue(this,Gd,$1).call(this,n)}getCurrentResult(){return $(this,Wn)}reset(){me(this,$r,void 0),Ue(this,ic,Up).call(this),Ue(this,Gd,$1).call(this)}mutate(n,r){var a;return me(this,oo,r),(a=$(this,$r))==null||a.removeObserver(this),me(this,$r,$(this,ri).getMutationCache().build($(this,ri),this.options)),$(this,$r).addObserver(this),$(this,$r).execute(n)}},ri=new WeakMap,Wn=new WeakMap,$r=new WeakMap,oo=new WeakMap,ic=new WeakSet,Up=function(){var r;const n=((r=$(this,$r))==null?void 0:r.state)??bF();me(this,Wn,{...n,isPending:n.status==="pending",isSuccess:n.status==="success",isError:n.status==="error",isIdle:n.status==="idle",mutate:this.mutate,reset:this.reset})},Gd=new WeakSet,$1=function(n){sn.batch(()=>{var r,a,o,i,s,l,c,u;$(this,oo)&&this.hasListeners()&&((n==null?void 0:n.type)==="success"?((a=(r=$(this,oo)).onSuccess)==null||a.call(r,n.data,$(this,Wn).variables,$(this,Wn).context),(i=(o=$(this,oo)).onSettled)==null||i.call(o,n.data,null,$(this,Wn).variables,$(this,Wn).context)):(n==null?void 0:n.type)==="error"&&((l=(s=$(this,oo)).onError)==null||l.call(s,n.error,$(this,Wn).variables,$(this,Wn).context),(u=(c=$(this,oo)).onSettled)==null||u.call(c,void 0,n.error,$(this,Wn).variables,$(this,Wn).context))),this.listeners.forEach(d=>{d($(this,Wn))})})},bP),vF=p.createContext(void 0),Bt=e=>{const t=p.useContext(vF);if(e)return e;if(!t)throw new Error("No QueryClient set, use QueryClientProvider to set one");return t},qG=({client:e,children:t})=>(p.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),p.createElement(vF.Provider,{value:e},t)),SF=p.createContext(!1),GG=()=>p.useContext(SF);SF.Provider;function WG(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}var KG=p.createContext(WG()),YG=()=>p.useContext(KG);function wF(e,t){return typeof e=="function"?e(...t):!!e}var ZG=(e,t)=>{(e.suspense||e.throwOnError)&&(t.isReset()||(e.retryOnMount=!1))},XG=e=>{p.useEffect(()=>{e.clearReset()},[e])},QG=({result:e,errorResetBoundary:t,throwOnError:n,query:r})=>e.isError&&!t.isReset()&&!e.isFetching&&wF(n,[e.error,r]),JG=e=>{e.suspense&&typeof e.staleTime!="number"&&(e.staleTime=1e3)},eW=(e,t)=>e.isLoading&&e.isFetching&&!t,tW=(e,t,n)=>(e==null?void 0:e.suspense)&&eW(t,n),nW=(e,t,n)=>t.fetchOptimistic(e).catch(()=>{n.clearReset()});function rW(e,t,n){const r=Bt(n),a=GG(),o=YG(),i=r.defaultQueryOptions(e);i._optimisticResults=a?"isRestoring":"optimistic",JG(i),ZG(i,o),XG(o);const[s]=p.useState(()=>new t(r,i)),l=s.getOptimisticResult(i);if(p.useSyncExternalStore(p.useCallback(c=>{const u=a?()=>{}:s.subscribe(sn.batchCalls(c));return s.updateResult(),u},[s,a]),()=>s.getCurrentResult(),()=>s.getCurrentResult()),p.useEffect(()=>{s.setOptions(i,{listeners:!1})},[i,s]),tW(i,l,a))throw nW(i,s,o);if(QG({result:l,errorResetBoundary:o,throwOnError:i.throwOnError,query:s.getCurrentQuery()}))throw l.error;return i.notifyOnChangeProps?l:s.trackResult(l)}function Jr(e,t){return rW(e,UG,t)}function gr(e,t){const n=Bt(t),[r]=p.useState(()=>new VG(n,e));p.useEffect(()=>{r.setOptions(e)},[r,e]);const a=p.useSyncExternalStore(p.useCallback(i=>r.subscribe(sn.batchCalls(i)),[r]),()=>r.getCurrentResult(),()=>r.getCurrentResult()),o=p.useCallback((i,s)=>{r.mutate(i,s).catch(aW)},[r]);if(a.error&&wF(r.options.throwOnError,[a.error]))throw a.error;return{...a,mutate:o,mutateAsync:a.mutate}}function aW(){}var oW=function(){return null};/** - * @remix-run/router v1.12.0 - * - * Copyright (c) Remix Software Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */function Wt(){return Wt=Object.assign?Object.assign.bind():function(e){for(var t=1;t"u")throw new Error(t)}function Cs(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function sW(){return Math.random().toString(36).substr(2,8)}function MR(e,t){return{usr:e.state,key:e.key,idx:t}}function hd(e,t,n,r){return n===void 0&&(n=null),Wt({pathname:typeof e=="string"?e:e.pathname,search:"",hash:""},typeof t=="string"?Co(t):t,{state:n,key:t&&t.key||r||sW()})}function _s(e){let{pathname:t="/",search:n="",hash:r=""}=e;return n&&n!=="?"&&(t+=n.charAt(0)==="?"?n:"?"+n),r&&r!=="#"&&(t+=r.charAt(0)==="#"?r:"#"+r),t}function Co(e){let t={};if(e){let n=e.indexOf("#");n>=0&&(t.hash=e.substr(n),e=e.substr(0,n));let r=e.indexOf("?");r>=0&&(t.search=e.substr(r),e=e.substr(0,r)),e&&(t.pathname=e)}return t}function lW(e,t,n,r){r===void 0&&(r={});let{window:a=document.defaultView,v5Compat:o=!1}=r,i=a.history,s=Yt.Pop,l=null,c=u();c==null&&(c=0,i.replaceState(Wt({},i.state,{idx:c}),""));function u(){return(i.state||{idx:null}).idx}function d(){s=Yt.Pop;let w=u(),v=w==null?null:w-c;c=w,l&&l({action:s,location:y.location,delta:v})}function g(w,v){s=Yt.Push;let h=hd(y.location,w,v);n&&n(h,w),c=u()+1;let S=MR(h,c),E=y.createHref(h);try{i.pushState(S,"",E)}catch(k){if(k instanceof DOMException&&k.name==="DataCloneError")throw k;a.location.assign(E)}o&&l&&l({action:s,location:y.location,delta:1})}function m(w,v){s=Yt.Replace;let h=hd(y.location,w,v);n&&n(h,w),c=u();let S=MR(h,c),E=y.createHref(h);i.replaceState(S,"",E),o&&l&&l({action:s,location:y.location,delta:0})}function b(w){let v=a.location.origin!=="null"?a.location.origin:a.location.href,h=typeof w=="string"?w:_s(w);return Ze(v,"No window.location.(origin|href) available to create URL for href: "+h),new URL(h,v)}let y={get action(){return s},get location(){return e(a,i)},listen(w){if(l)throw new Error("A history only accepts one active listener");return a.addEventListener(LR,d),l=w,()=>{a.removeEventListener(LR,d),l=null}},createHref(w){return t(a,w)},createURL:b,encodeLocation(w){let v=b(w);return{pathname:v.pathname,search:v.search,hash:v.hash}},push:g,replace:m,go(w){return i.go(w)}};return y}var Zt;(function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"})(Zt||(Zt={}));const cW=new Set(["lazy","caseSensitive","path","id","index","children"]);function uW(e){return e.index===!0}function F1(e,t,n,r){return n===void 0&&(n=[]),r===void 0&&(r={}),e.map((a,o)=>{let i=[...n,o],s=typeof a.id=="string"?a.id:i.join("-");if(Ze(a.index!==!0||!a.children,"Cannot specify children on an index route"),Ze(!r[s],'Found a route id collision on id "'+s+`". Route id's must be globally unique within Data Router usages`),uW(a)){let l=Wt({},a,t(a),{id:s});return r[s]=l,l}else{let l=Wt({},a,t(a),{id:s,children:void 0});return r[s]=l,a.children&&(l.children=F1(a.children,t,i,r)),l}})}function Rl(e,t,n){n===void 0&&(n="/");let r=typeof t=="string"?Co(t):t,a=wi(r.pathname||"/",n);if(a==null)return null;let o=EF(e);fW(o);let i=null;for(let s=0;i==null&&s{let l={relativePath:s===void 0?o.path||"":s,caseSensitive:o.caseSensitive===!0,childrenIndex:i,route:o};l.relativePath.startsWith("/")&&(Ze(l.relativePath.startsWith(r),'Absolute route path "'+l.relativePath+'" nested under path '+('"'+r+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),l.relativePath=l.relativePath.slice(r.length));let c=uo([r,l.relativePath]),u=n.concat(l);o.children&&o.children.length>0&&(Ze(o.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+c+'".')),EF(o.children,t,u,c)),!(o.path==null&&!o.index)&&t.push({path:c,score:vW(c,o.index),routesMeta:u})};return e.forEach((o,i)=>{var s;if(o.path===""||!((s=o.path)!=null&&s.includes("?")))a(o,i);else for(let l of xF(o.path))a(o,i,l)}),t}function xF(e){let t=e.split("/");if(t.length===0)return[];let[n,...r]=t,a=n.endsWith("?"),o=n.replace(/\?$/,"");if(r.length===0)return a?[o,""]:[o];let i=xF(r.join("/")),s=[];return s.push(...i.map(l=>l===""?o:[o,l].join("/"))),a&&s.push(...i),s.map(l=>e.startsWith("/")&&l===""?"/":l)}function fW(e){e.sort((t,n)=>t.score!==n.score?n.score-t.score:SW(t.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}const pW=/^:\w+$/,gW=3,mW=2,hW=1,bW=10,yW=-2,PR=e=>e==="*";function vW(e,t){let n=e.split("/"),r=n.length;return n.some(PR)&&(r+=yW),t&&(r+=mW),n.filter(a=>!PR(a)).reduce((a,o)=>a+(pW.test(o)?gW:o===""?hW:bW),r)}function SW(e,t){return e.length===t.length&&e.slice(0,-1).every((r,a)=>r===t[a])?e[e.length-1]-t[t.length-1]:0}function wW(e,t){let{routesMeta:n}=e,r={},a="/",o=[];for(let i=0;i{let{paramName:g,isOptional:m}=u;if(g==="*"){let y=s[d]||"";i=o.slice(0,o.length-y.length).replace(/(.)\/+$/,"$1")}const b=s[d];return m&&!b?c[g]=void 0:c[g]=kW(b||"",g),c},{}),pathname:o,pathnameBase:i,pattern:e}}function EW(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!0),Cs(e==="*"||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were '+('"'+e.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+e.replace(/\*$/,"/*")+'".'));let r=[],a="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:(\w+)(\?)?/g,(i,s,l)=>(r.push({paramName:s,isOptional:l!=null}),l?"/?([^\\/]+)?":"/([^\\/]+)"));return e.endsWith("*")?(r.push({paramName:"*"}),a+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?a+="\\/*$":e!==""&&e!=="/"&&(a+="(?:(?=\\/|$))"),[new RegExp(a,t?void 0:"i"),r]}function xW(e){try{return decodeURI(e)}catch(t){return Cs(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+t+").")),e}}function kW(e,t){try{return decodeURIComponent(e)}catch(n){return Cs(!1,'The value for the URL param "'+t+'" will not be decoded because'+(' the string "'+e+'" is a malformed URL segment. This is probably')+(" due to a bad percent encoding ("+n+").")),e}}function wi(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith("/")?t.length-1:t.length,r=e.charAt(n);return r&&r!=="/"?null:e.slice(n)||"/"}function CW(e,t){t===void 0&&(t="/");let{pathname:n,search:r="",hash:a=""}=typeof e=="string"?Co(e):e;return{pathname:n?n.startsWith("/")?n:_W(n,t):t,search:TW(r),hash:RW(a)}}function _W(e,t){let n=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(a=>{a===".."?n.length>1&&n.pop():a!=="."&&n.push(a)}),n.length>1?n.join("/"):"/"}function Eb(e,t,n,r){return"Cannot include a '"+e+"' character in a manually specified "+("`to."+t+"` field ["+JSON.stringify(r)+"]. Please separate it out to the ")+("`to."+n+"` field. Alternatively you may provide the full path as ")+'a string in and the router will parse it for you.'}function tf(e){return e.filter((t,n)=>n===0||t.route.path&&t.route.path.length>0)}function zm(e,t,n,r){r===void 0&&(r=!1);let a;typeof e=="string"?a=Co(e):(a=Wt({},e),Ze(!a.pathname||!a.pathname.includes("?"),Eb("?","pathname","search",a)),Ze(!a.pathname||!a.pathname.includes("#"),Eb("#","pathname","hash",a)),Ze(!a.search||!a.search.includes("#"),Eb("#","search","hash",a)));let o=e===""||a.pathname==="",i=o?"/":a.pathname,s;if(i==null)s=n;else if(r){let d=t[t.length-1].replace(/^\//,"").split("/");if(i.startsWith("..")){let g=i.split("/");for(;g[0]==="..";)g.shift(),d.pop();a.pathname=g.join("/")}s="/"+d.join("/")}else{let d=t.length-1;if(i.startsWith("..")){let g=i.split("/");for(;g[0]==="..";)g.shift(),d-=1;a.pathname=g.join("/")}s=d>=0?t[d]:"/"}let l=CW(a,s),c=i&&i!=="/"&&i.endsWith("/"),u=(o||i===".")&&n.endsWith("/");return!l.pathname.endsWith("/")&&(c||u)&&(l.pathname+="/"),l}const uo=e=>e.join("/").replace(/\/\/+/g,"/"),AW=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),TW=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,RW=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;class r_{constructor(t,n,r,a){a===void 0&&(a=!1),this.status=t,this.statusText=n||"",this.internal=a,r instanceof Error?(this.data=r.toString(),this.error=r):this.data=r}}function kF(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}const CF=["post","put","patch","delete"],NW=new Set(CF),IW=["get",...CF],OW=new Set(IW),DW=new Set([301,302,303,307,308]),LW=new Set([307,308]),xb={state:"idle",location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},MW={state:"idle",data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},ru={state:"unblocked",proceed:void 0,reset:void 0,location:void 0},_F=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,PW=e=>({hasErrorBoundary:!!e.hasErrorBoundary}),AF="remix-router-transitions";function $W(e){const t=e.window?e.window:typeof window<"u"?window:void 0,n=typeof t<"u"&&typeof t.document<"u"&&typeof t.document.createElement<"u",r=!n;Ze(e.routes.length>0,"You must provide a non-empty routes array to createRouter");let a;if(e.mapRouteProperties)a=e.mapRouteProperties;else if(e.detectErrorBoundary){let B=e.detectErrorBoundary;a=G=>({hasErrorBoundary:B(G)})}else a=PW;let o={},i=F1(e.routes,a,void 0,o),s,l=e.basename||"/",c=Wt({v7_fetcherPersist:!1,v7_normalizeFormMethod:!1,v7_prependBasename:!1},e.future),u=null,d=new Set,g=null,m=null,b=null,y=e.hydrationData!=null,w=Rl(i,e.history.location,l),v=null;if(w==null){let B=jr(404,{pathname:e.history.location.pathname}),{matches:G,route:te}=VR(i);w=G,v={[te.id]:B}}let h=!w.some(B=>B.route.lazy)&&(!w.some(B=>B.route.loader)||e.hydrationData!=null),S,E={historyAction:e.history.action,location:e.history.location,matches:w,initialized:h,navigation:xb,restoreScrollPosition:e.hydrationData!=null?!1:null,preventScrollReset:!1,revalidation:"idle",loaderData:e.hydrationData&&e.hydrationData.loaderData||{},actionData:e.hydrationData&&e.hydrationData.actionData||null,errors:e.hydrationData&&e.hydrationData.errors||v,fetchers:new Map,blockers:new Map},k=Yt.Pop,x=!1,C,_=!1,R=new Map,T=null,L=!1,D=!1,H=[],z=[],M=new Map,U=0,X=-1,j=new Map,O=new Set,A=new Map,V=new Map,P=new Set,N=new Map,K=new Map,ae=!1;function ne(){if(u=e.history.listen(B=>{let{action:G,location:te,delta:be}=B;if(ae){ae=!1;return}Cs(K.size===0||be!=null,"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs. This can also happen if you are using createHashRouter and the user manually changes the URL.");let Te=Io({currentLocation:E.location,nextLocation:te,historyAction:G});if(Te&&be!=null){ae=!0,e.history.go(be*-1),Sn(Te,{state:"blocked",location:te,proceed(){Sn(Te,{state:"proceeding",proceed:void 0,reset:void 0,location:te}),e.history.go(be)},reset(){let Qe=new Map(E.blockers);Qe.set(Te,ru),he({blockers:Qe})}});return}return We(G,te)}),n){KW(t,R);let B=()=>YW(t,R);t.addEventListener("pagehide",B),T=()=>t.removeEventListener("pagehide",B)}return E.initialized||We(Yt.Pop,E.location),S}function Q(){u&&u(),T&&T(),d.clear(),C&&C.abort(),E.fetchers.forEach((B,G)=>St(G)),E.blockers.forEach((B,G)=>Ir(G))}function pe(B){return d.add(B),()=>d.delete(B)}function he(B,G){G===void 0&&(G={}),E=Wt({},E,B);let te=[],be=[];c.v7_fetcherPersist&&E.fetchers.forEach((Te,Qe)=>{Te.state==="idle"&&(P.has(Qe)?be.push(Qe):te.push(Qe))}),[...d].forEach(Te=>Te(E,{deletedFetchers:be,unstable_viewTransitionOpts:G.viewTransitionOpts,unstable_flushSync:G.flushSync===!0})),c.v7_fetcherPersist&&(te.forEach(Te=>E.fetchers.delete(Te)),be.forEach(Te=>St(Te)))}function re(B,G,te){var be,Te;let{flushSync:Qe}=te===void 0?{}:te,je=E.actionData!=null&&E.navigation.formMethod!=null&&ca(E.navigation.formMethod)&&E.navigation.state==="loading"&&((be=B.state)==null?void 0:be._isRedirect)!==!0,Le;G.actionData?Object.keys(G.actionData).length>0?Le=G.actionData:Le=null:je?Le=E.actionData:Le=null;let Re=G.loaderData?HR(E.loaderData,G.loaderData,G.matches||[],G.errors):E.loaderData,it=E.blockers;it.size>0&&(it=new Map(it),it.forEach((xt,Ft)=>it.set(Ft,ru)));let wn=x===!0||E.navigation.formMethod!=null&&ca(E.navigation.formMethod)&&((Te=B.state)==null?void 0:Te._isRedirect)!==!0;s&&(i=s,s=void 0),L||k===Yt.Pop||(k===Yt.Push?e.history.push(B,B.state):k===Yt.Replace&&e.history.replace(B,B.state));let et;if(k===Yt.Pop){let xt=R.get(E.location.pathname);xt&&xt.has(B.pathname)?et={currentLocation:E.location,nextLocation:B}:R.has(B.pathname)&&(et={currentLocation:B,nextLocation:E.location})}else if(_){let xt=R.get(E.location.pathname);xt?xt.add(B.pathname):(xt=new Set([B.pathname]),R.set(E.location.pathname,xt)),et={currentLocation:E.location,nextLocation:B}}he(Wt({},G,{actionData:Le,loaderData:Re,historyAction:k,location:B,initialized:!0,navigation:xb,revalidation:"idle",restoreScrollPosition:rT(B,G.matches||E.matches),preventScrollReset:wn,blockers:it}),{viewTransitionOpts:et,flushSync:Qe===!0}),k=Yt.Pop,x=!1,_=!1,L=!1,D=!1,H=[],z=[]}async function Ee(B,G){if(typeof B=="number"){e.history.go(B);return}let te=z1(E.location,E.matches,l,c.v7_prependBasename,B,G==null?void 0:G.fromRouteId,G==null?void 0:G.relative),{path:be,submission:Te,error:Qe}=$R(c.v7_normalizeFormMethod,!1,te,G),je=E.location,Le=hd(E.location,be,G&&G.state);Le=Wt({},Le,e.history.encodeLocation(Le));let Re=G&&G.replace!=null?G.replace:void 0,it=Yt.Push;Re===!0?it=Yt.Replace:Re===!1||Te!=null&&ca(Te.formMethod)&&Te.formAction===E.location.pathname+E.location.search&&(it=Yt.Replace);let wn=G&&"preventScrollReset"in G?G.preventScrollReset===!0:void 0,et=(G&&G.unstable_flushSync)===!0,xt=Io({currentLocation:je,nextLocation:Le,historyAction:it});if(xt){Sn(xt,{state:"blocked",location:Le,proceed(){Sn(xt,{state:"proceeding",proceed:void 0,reset:void 0,location:Le}),Ee(B,G)},reset(){let Ft=new Map(E.blockers);Ft.set(xt,ru),he({blockers:Ft})}});return}return await We(it,Le,{submission:Te,pendingError:Qe,preventScrollReset:wn,replace:G&&G.replace,enableViewTransition:G&&G.unstable_viewTransition,flushSync:et})}function ke(){if(de(),he({revalidation:"loading"}),E.navigation.state!=="submitting"){if(E.navigation.state==="idle"){We(E.historyAction,E.location,{startUninterruptedRevalidation:!0});return}We(k||E.historyAction,E.navigation.location,{overrideNavigation:E.navigation})}}async function We(B,G,te){C&&C.abort(),C=null,k=B,L=(te&&te.startUninterruptedRevalidation)===!0,na(E.location,E.matches),x=(te&&te.preventScrollReset)===!0,_=(te&&te.enableViewTransition)===!0;let be=s||i,Te=te&&te.overrideNavigation,Qe=Rl(be,G,l),je=(te&&te.flushSync)===!0;if(!Qe){let Ft=jr(404,{pathname:G.pathname}),{matches:qn,route:Sa}=VR(be);Za(),re(G,{matches:qn,loaderData:{},errors:{[Sa.id]:Ft}},{flushSync:je});return}if(E.initialized&&!D&&BW(E.location,G)&&!(te&&te.submission&&ca(te.submission.formMethod))){re(G,{matches:Qe},{flushSync:je});return}C=new AbortController;let Le=ou(e.history,G,C.signal,te&&te.submission),Re,it;if(te&&te.pendingError)it={[Uu(Qe).route.id]:te.pendingError};else if(te&&te.submission&&ca(te.submission.formMethod)){let Ft=await Vt(Le,G,te.submission,Qe,{replace:te.replace,flushSync:je});if(Ft.shortCircuited)return;Re=Ft.pendingActionData,it=Ft.pendingActionError,Te=kb(G,te.submission),je=!1,Le=new Request(Le.url,{signal:Le.signal})}let{shortCircuited:wn,loaderData:et,errors:xt}=await mt(Le,G,Qe,Te,te&&te.submission,te&&te.fetcherSubmission,te&&te.replace,je,Re,it);wn||(C=null,re(G,Wt({matches:Qe},Re?{actionData:Re}:{},{loaderData:et,errors:xt})))}async function Vt(B,G,te,be,Te){Te===void 0&&(Te={}),de();let Qe=GW(G,te);he({navigation:Qe},{flushSync:Te.flushSync===!0});let je,Le=B1(be,G);if(!Le.route.action&&!Le.route.lazy)je={type:Zt.error,error:jr(405,{method:B.method,pathname:G.pathname,routeId:Le.route.id})};else if(je=await au("action",B,Le,be,o,a,l),B.signal.aborted)return{shortCircuited:!0};if(zl(je)){let Re;return Te&&Te.replace!=null?Re=Te.replace:Re=je.location===E.location.pathname+E.location.search,await Y(E,je,{submission:te,replace:Re}),{shortCircuited:!0}}if(Bu(je)){let Re=Uu(be,Le.route.id);return(Te&&Te.replace)!==!0&&(k=Yt.Push),{pendingActionData:{},pendingActionError:{[Re.route.id]:je.error}}}if(rs(je))throw jr(400,{type:"defer-action"});return{pendingActionData:{[Le.route.id]:je.data}}}async function mt(B,G,te,be,Te,Qe,je,Le,Re,it){let wn=be||kb(G,Te),et=Te||Qe||WR(wn),xt=s||i,[Ft,qn]=FR(e.history,E,te,et,G,D,H,z,A,O,xt,l,Re,it);if(Za(kt=>!(te&&te.some(Or=>Or.route.id===kt))||Ft&&Ft.some(Or=>Or.route.id===kt)),X=++U,Ft.length===0&&qn.length===0){let kt=He();return re(G,Wt({matches:te,loaderData:{},errors:it||null},Re?{actionData:Re}:{},kt?{fetchers:new Map(E.fetchers)}:{}),{flushSync:Le}),{shortCircuited:!0}}if(!L){qn.forEach(Or=>{let Qt=E.fetchers.get(Or.key),ji=iu(void 0,Qt?Qt.data:void 0);E.fetchers.set(Or.key,ji)});let kt=Re||E.actionData;he(Wt({navigation:wn},kt?Object.keys(kt).length===0?{actionData:null}:{actionData:kt}:{},qn.length>0?{fetchers:new Map(E.fetchers)}:{}),{flushSync:Le})}qn.forEach(kt=>{M.has(kt.key)&&le(kt.key),kt.controller&&M.set(kt.key,kt.controller)});let Sa=()=>qn.forEach(kt=>le(kt.key));C&&C.signal.addEventListener("abort",Sa);let{results:Gc,loaderResults:Uh,fetcherResults:Ys}=await ye(E.matches,te,Ft,qn,B);if(B.signal.aborted)return{shortCircuited:!0};C&&C.signal.removeEventListener("abort",Sa),qn.forEach(kt=>M.delete(kt.key));let ra=qR(Gc);if(ra){if(ra.idx>=Ft.length){let kt=qn[ra.idx-Ft.length].key;O.add(kt)}return await Y(E,ra.result,{replace:je}),{shortCircuited:!0}}let{loaderData:Af,errors:Bh}=BR(E,te,Ft,Uh,it,qn,Ys,N);N.forEach((kt,Or)=>{kt.subscribe(Qt=>{(Qt||kt.done)&&N.delete(Or)})});let Hh=He(),Vh=ft(X),Zs=Hh||Vh||qn.length>0;return Wt({loaderData:Af,errors:Bh},Zs?{fetchers:new Map(E.fetchers)}:{})}function Hn(B,G,te,be){if(r)throw new Error("router.fetch() was called during the server render, but it shouldn't be. You are likely calling a useFetcher() method in the body of your component. Try moving it to a useEffect or a callback.");M.has(B)&&le(B);let Te=(be&&be.unstable_flushSync)===!0,Qe=s||i,je=z1(E.location,E.matches,l,c.v7_prependBasename,te,G,be==null?void 0:be.relative),Le=Rl(Qe,je,l);if(!Le){_e(B,G,jr(404,{pathname:je}),{flushSync:Te});return}let{path:Re,submission:it,error:wn}=$R(c.v7_normalizeFormMethod,!0,je,be);if(wn){_e(B,G,wn,{flushSync:Te});return}let et=B1(Le,Re);if(x=(be&&be.preventScrollReset)===!0,it&&ca(it.formMethod)){F(B,G,Re,et,Le,Te,it);return}A.set(B,{routeId:G,path:Re}),q(B,G,Re,et,Le,Te,it)}async function F(B,G,te,be,Te,Qe,je){if(de(),A.delete(B),!be.route.action&&!be.route.lazy){let Qt=jr(405,{method:je.formMethod,pathname:te,routeId:G});_e(B,G,Qt,{flushSync:Qe});return}let Le=E.fetchers.get(B);oe(B,WW(je,Le),{flushSync:Qe});let Re=new AbortController,it=ou(e.history,te,Re.signal,je);M.set(B,Re);let wn=U,et=await au("action",it,be,Te,o,a,l);if(it.signal.aborted){M.get(B)===Re&&M.delete(B);return}if(P.has(B)){oe(B,Bo(void 0));return}if(zl(et))if(M.delete(B),X>wn){oe(B,Bo(void 0));return}else return O.add(B),oe(B,iu(je)),Y(E,et,{fetcherSubmission:je});if(Bu(et)){_e(B,G,et.error);return}if(rs(et))throw jr(400,{type:"defer-action"});let xt=E.navigation.location||E.location,Ft=ou(e.history,xt,Re.signal),qn=s||i,Sa=E.navigation.state!=="idle"?Rl(qn,E.navigation.location,l):E.matches;Ze(Sa,"Didn't find any matches after fetcher action");let Gc=++U;j.set(B,Gc);let Uh=iu(je,et.data);E.fetchers.set(B,Uh);let[Ys,ra]=FR(e.history,E,Sa,je,xt,D,H,z,A,O,qn,l,{[be.route.id]:et.data},void 0);ra.filter(Qt=>Qt.key!==B).forEach(Qt=>{let ji=Qt.key,aT=E.fetchers.get(ji),nB=iu(void 0,aT?aT.data:void 0);E.fetchers.set(ji,nB),M.has(ji)&&le(ji),Qt.controller&&M.set(ji,Qt.controller)}),he({fetchers:new Map(E.fetchers)});let Af=()=>ra.forEach(Qt=>le(Qt.key));Re.signal.addEventListener("abort",Af);let{results:Bh,loaderResults:Hh,fetcherResults:Vh}=await ye(E.matches,Sa,Ys,ra,Ft);if(Re.signal.aborted)return;Re.signal.removeEventListener("abort",Af),j.delete(B),M.delete(B),ra.forEach(Qt=>M.delete(Qt.key));let Zs=qR(Bh);if(Zs){if(Zs.idx>=Ys.length){let Qt=ra[Zs.idx-Ys.length].key;O.add(Qt)}return Y(E,Zs.result)}let{loaderData:kt,errors:Or}=BR(E,E.matches,Ys,Hh,void 0,ra,Vh,N);if(E.fetchers.has(B)){let Qt=Bo(et.data);E.fetchers.set(B,Qt)}ft(Gc),E.navigation.state==="loading"&&Gc>X?(Ze(k,"Expected pending action"),C&&C.abort(),re(E.navigation.location,{matches:Sa,loaderData:kt,errors:Or,fetchers:new Map(E.fetchers)})):(he({errors:Or,loaderData:HR(E.loaderData,kt,Sa,Or),fetchers:new Map(E.fetchers)}),D=!1)}async function q(B,G,te,be,Te,Qe,je){let Le=E.fetchers.get(B);oe(B,iu(je,Le?Le.data:void 0),{flushSync:Qe});let Re=new AbortController,it=ou(e.history,te,Re.signal);M.set(B,Re);let wn=U,et=await au("loader",it,be,Te,o,a,l);if(rs(et)&&(et=await NF(et,it.signal,!0)||et),M.get(B)===Re&&M.delete(B),!it.signal.aborted){if(P.has(B)){oe(B,Bo(void 0));return}if(zl(et))if(X>wn){oe(B,Bo(void 0));return}else{O.add(B),await Y(E,et);return}if(Bu(et)){_e(B,G,et.error);return}Ze(!rs(et),"Unhandled fetcher deferred data"),oe(B,Bo(et.data))}}async function Y(B,G,te){let{submission:be,fetcherSubmission:Te,replace:Qe}=te===void 0?{}:te;G.revalidate&&(D=!0);let je=hd(B.location,G.location,{_isRedirect:!0});if(Ze(je,"Expected a location on the redirect navigation"),n){let xt=!1;if(G.reloadDocument)xt=!0;else if(_F.test(G.location)){const Ft=e.history.createURL(G.location);xt=Ft.origin!==t.location.origin||wi(Ft.pathname,l)==null}if(xt){Qe?t.location.replace(G.location):t.location.assign(G.location);return}}C=null;let Le=Qe===!0?Yt.Replace:Yt.Push,{formMethod:Re,formAction:it,formEncType:wn}=B.navigation;!be&&!Te&&Re&&it&&wn&&(be=WR(B.navigation));let et=be||Te;if(LW.has(G.status)&&et&&ca(et.formMethod))await We(Le,je,{submission:Wt({},et,{formAction:G.location}),preventScrollReset:x});else{let xt=kb(je,be);await We(Le,je,{overrideNavigation:xt,fetcherSubmission:Te,preventScrollReset:x})}}async function ye(B,G,te,be,Te){let Qe=await Promise.all([...te.map(Re=>au("loader",Te,Re,G,o,a,l)),...be.map(Re=>Re.matches&&Re.match&&Re.controller?au("loader",ou(e.history,Re.path,Re.controller.signal),Re.match,Re.matches,o,a,l):{type:Zt.error,error:jr(404,{pathname:Re.path})})]),je=Qe.slice(0,te.length),Le=Qe.slice(te.length);return await Promise.all([GR(B,te,je,je.map(()=>Te.signal),!1,E.loaderData),GR(B,be.map(Re=>Re.match),Le,be.map(Re=>Re.controller?Re.controller.signal:null),!0)]),{results:Qe,loaderResults:je,fetcherResults:Le}}function de(){D=!0,H.push(...Za()),A.forEach((B,G)=>{M.has(G)&&(z.push(G),le(G))})}function oe(B,G,te){te===void 0&&(te={}),E.fetchers.set(B,G),he({fetchers:new Map(E.fetchers)},{flushSync:(te&&te.flushSync)===!0})}function _e(B,G,te,be){be===void 0&&(be={});let Te=Uu(E.matches,G);St(B),he({errors:{[Te.route.id]:te},fetchers:new Map(E.fetchers)},{flushSync:(be&&be.flushSync)===!0})}function wt(B){return c.v7_fetcherPersist&&(V.set(B,(V.get(B)||0)+1),P.has(B)&&P.delete(B)),E.fetchers.get(B)||MW}function St(B){let G=E.fetchers.get(B);M.has(B)&&!(G&&G.state==="loading"&&j.has(B))&&le(B),A.delete(B),j.delete(B),O.delete(B),P.delete(B),E.fetchers.delete(B)}function Z(B){if(c.v7_fetcherPersist){let G=(V.get(B)||0)-1;G<=0?(V.delete(B),P.add(B)):V.set(B,G)}else St(B);he({fetchers:new Map(E.fetchers)})}function le(B){let G=M.get(B);Ze(G,"Expected fetch controller: "+B),G.abort(),M.delete(B)}function De(B){for(let G of B){let te=wt(G),be=Bo(te.data);E.fetchers.set(G,be)}}function He(){let B=[],G=!1;for(let te of O){let be=E.fetchers.get(te);Ze(be,"Expected fetcher: "+te),be.state==="loading"&&(O.delete(te),B.push(te),G=!0)}return De(B),G}function ft(B){let G=[];for(let[te,be]of j)if(be0}function Tn(B,G){let te=E.blockers.get(B)||ru;return K.get(B)!==G&&K.set(B,G),te}function Ir(B){E.blockers.delete(B),K.delete(B)}function Sn(B,G){let te=E.blockers.get(B)||ru;Ze(te.state==="unblocked"&&G.state==="blocked"||te.state==="blocked"&&G.state==="blocked"||te.state==="blocked"&&G.state==="proceeding"||te.state==="blocked"&&G.state==="unblocked"||te.state==="proceeding"&&G.state==="unblocked","Invalid blocker state transition: "+te.state+" -> "+G.state);let be=new Map(E.blockers);be.set(B,G),he({blockers:be})}function Io(B){let{currentLocation:G,nextLocation:te,historyAction:be}=B;if(K.size===0)return;K.size>1&&Cs(!1,"A router only supports one blocker at a time");let Te=Array.from(K.entries()),[Qe,je]=Te[Te.length-1],Le=E.blockers.get(Qe);if(!(Le&&Le.state==="proceeding")&&je({currentLocation:G,nextLocation:te,historyAction:be}))return Qe}function Za(B){let G=[];return N.forEach((te,be)=>{(!B||B(be))&&(te.cancel(),G.push(be),N.delete(be))}),G}function Vn(B,G,te){if(g=B,b=G,m=te||null,!y&&E.navigation===xb){y=!0;let be=rT(E.location,E.matches);be!=null&&he({restoreScrollPosition:be})}return()=>{g=null,b=null,m=null}}function Xa(B,G){return m&&m(B,G.map(be=>dW(be,E.loaderData)))||B.key}function na(B,G){if(g&&b){let te=Xa(B,G);g[te]=b()}}function rT(B,G){if(g){let te=Xa(B,G),be=g[te];if(typeof be=="number")return be}return null}function tB(B){o={},s=F1(B,a,void 0,o)}return S={get basename(){return l},get state(){return E},get routes(){return i},get window(){return t},initialize:ne,subscribe:pe,enableScrollRestoration:Vn,navigate:Ee,fetch:Hn,revalidate:ke,createHref:B=>e.history.createHref(B),encodeLocation:B=>e.history.encodeLocation(B),getFetcher:wt,deleteFetcher:Z,dispose:Q,getBlocker:Tn,deleteBlocker:Ir,_internalFetchControllers:M,_internalActiveDeferreds:N,_internalSetRoutes:tB},S}function FW(e){return e!=null&&("formData"in e&&e.formData!=null||"body"in e&&e.body!==void 0)}function z1(e,t,n,r,a,o,i){let s,l;if(o){s=[];for(let u of t)if(s.push(u),u.route.id===o){l=u;break}}else s=t,l=t[t.length-1];let c=zm(a||".",tf(s).map(u=>u.pathnameBase),wi(e.pathname,n)||e.pathname,i==="path");return a==null&&(c.search=e.search,c.hash=e.hash),(a==null||a===""||a===".")&&l&&l.route.index&&!a_(c.search)&&(c.search=c.search?c.search.replace(/^\?/,"?index&"):"?index"),r&&n!=="/"&&(c.pathname=c.pathname==="/"?n:uo([n,c.pathname])),_s(c)}function $R(e,t,n,r){if(!r||!FW(r))return{path:n};if(r.formMethod&&!qW(r.formMethod))return{path:n,error:jr(405,{method:r.formMethod})};let a=()=>({path:n,error:jr(400,{type:"invalid-body"})}),o=r.formMethod||"get",i=e?o.toUpperCase():o.toLowerCase(),s=RF(n);if(r.body!==void 0){if(r.formEncType==="text/plain"){if(!ca(i))return a();let g=typeof r.body=="string"?r.body:r.body instanceof FormData||r.body instanceof URLSearchParams?Array.from(r.body.entries()).reduce((m,b)=>{let[y,w]=b;return""+m+y+"="+w+` -`},""):String(r.body);return{path:n,submission:{formMethod:i,formAction:s,formEncType:r.formEncType,formData:void 0,json:void 0,text:g}}}else if(r.formEncType==="application/json"){if(!ca(i))return a();try{let g=typeof r.body=="string"?JSON.parse(r.body):r.body;return{path:n,submission:{formMethod:i,formAction:s,formEncType:r.formEncType,formData:void 0,json:g,text:void 0}}}catch{return a()}}}Ze(typeof FormData=="function","FormData is not available in this environment");let l,c;if(r.formData)l=U1(r.formData),c=r.formData;else if(r.body instanceof FormData)l=U1(r.body),c=r.body;else if(r.body instanceof URLSearchParams)l=r.body,c=UR(l);else if(r.body==null)l=new URLSearchParams,c=new FormData;else try{l=new URLSearchParams(r.body),c=UR(l)}catch{return a()}let u={formMethod:i,formAction:s,formEncType:r&&r.formEncType||"application/x-www-form-urlencoded",formData:c,json:void 0,text:void 0};if(ca(u.formMethod))return{path:n,submission:u};let d=Co(n);return t&&d.search&&a_(d.search)&&l.append("index",""),d.search="?"+l,{path:_s(d),submission:u}}function jW(e,t){let n=e;if(t){let r=e.findIndex(a=>a.route.id===t);r>=0&&(n=e.slice(0,r))}return n}function FR(e,t,n,r,a,o,i,s,l,c,u,d,g,m){let b=m?Object.values(m)[0]:g?Object.values(g)[0]:void 0,y=e.createURL(t.location),w=e.createURL(a),v=m?Object.keys(m)[0]:void 0,S=jW(n,v).filter((k,x)=>{if(k.route.lazy)return!0;if(k.route.loader==null)return!1;if(zW(t.loaderData,t.matches[x],k)||i.some(R=>R===k.route.id))return!0;let C=t.matches[x],_=k;return jR(k,Wt({currentUrl:y,currentParams:C.params,nextUrl:w,nextParams:_.params},r,{actionResult:b,defaultShouldRevalidate:o||y.pathname+y.search===w.pathname+w.search||y.search!==w.search||TF(C,_)}))}),E=[];return l.forEach((k,x)=>{if(!n.some(L=>L.route.id===k.routeId))return;let C=Rl(u,k.path,d);if(!C){E.push({key:x,routeId:k.routeId,path:k.path,matches:null,match:null,controller:null});return}let _=t.fetchers.get(x),R=B1(C,k.path),T=!1;c.has(x)?T=!1:s.includes(x)?T=!0:_&&_.state!=="idle"&&_.data===void 0?T=o:T=jR(R,Wt({currentUrl:y,currentParams:t.matches[t.matches.length-1].params,nextUrl:w,nextParams:n[n.length-1].params},r,{actionResult:b,defaultShouldRevalidate:o})),T&&E.push({key:x,routeId:k.routeId,path:k.path,matches:C,match:R,controller:new AbortController})}),[S,E]}function zW(e,t,n){let r=!t||n.route.id!==t.route.id,a=e[n.route.id]===void 0;return r||a}function TF(e,t){let n=e.route.path;return e.pathname!==t.pathname||n!=null&&n.endsWith("*")&&e.params["*"]!==t.params["*"]}function jR(e,t){if(e.route.shouldRevalidate){let n=e.route.shouldRevalidate(t);if(typeof n=="boolean")return n}return t.defaultShouldRevalidate}async function zR(e,t,n){if(!e.lazy)return;let r=await e.lazy();if(!e.lazy)return;let a=n[e.id];Ze(a,"No route found in manifest");let o={};for(let i in r){let l=a[i]!==void 0&&i!=="hasErrorBoundary";Cs(!l,'Route "'+a.id+'" has a static property "'+i+'" defined but its lazy function is also returning a value for this property. '+('The lazy route property "'+i+'" will be ignored.')),!l&&!cW.has(i)&&(o[i]=r[i])}Object.assign(a,o),Object.assign(a,Wt({},t(a),{lazy:void 0}))}async function au(e,t,n,r,a,o,i,s){s===void 0&&(s={});let l,c,u,d=b=>{let y,w=new Promise((v,h)=>y=h);return u=()=>y(),t.signal.addEventListener("abort",u),Promise.race([b({request:t,params:n.params,context:s.requestContext}),w])};try{let b=n.route[e];if(n.route.lazy)if(b){let y,w=await Promise.all([d(b).catch(v=>{y=v}),zR(n.route,o,a)]);if(y)throw y;c=w[0]}else if(await zR(n.route,o,a),b=n.route[e],b)c=await d(b);else if(e==="action"){let y=new URL(t.url),w=y.pathname+y.search;throw jr(405,{method:t.method,pathname:w,routeId:n.route.id})}else return{type:Zt.data,data:void 0};else if(b)c=await d(b);else{let y=new URL(t.url),w=y.pathname+y.search;throw jr(404,{pathname:w})}Ze(c!==void 0,"You defined "+(e==="action"?"an action":"a loader")+" for route "+('"'+n.route.id+"\" but didn't return anything from your `"+e+"` ")+"function. Please return a value or `null`.")}catch(b){l=Zt.error,c=b}finally{u&&t.signal.removeEventListener("abort",u)}if(VW(c)){let b=c.status;if(DW.has(b)){let v=c.headers.get("Location");if(Ze(v,"Redirects returned/thrown from loaders/actions must have a Location header"),!_F.test(v))v=z1(new URL(t.url),r.slice(0,r.indexOf(n)+1),i,!0,v);else if(!s.isStaticRequest){let h=new URL(t.url),S=v.startsWith("//")?new URL(h.protocol+v):new URL(v),E=wi(S.pathname,i)!=null;S.origin===h.origin&&E&&(v=S.pathname+S.search+S.hash)}if(s.isStaticRequest)throw c.headers.set("Location",v),c;return{type:Zt.redirect,status:b,location:v,revalidate:c.headers.get("X-Remix-Revalidate")!==null,reloadDocument:c.headers.get("X-Remix-Reload-Document")!==null}}if(s.isRouteRequest)throw{type:l===Zt.error?Zt.error:Zt.data,response:c};let y,w=c.headers.get("Content-Type");return w&&/\bapplication\/json\b/.test(w)?y=await c.json():y=await c.text(),l===Zt.error?{type:l,error:new r_(b,c.statusText,y),headers:c.headers}:{type:Zt.data,data:y,statusCode:c.status,headers:c.headers}}if(l===Zt.error)return{type:l,error:c};if(HW(c)){var g,m;return{type:Zt.deferred,deferredData:c,statusCode:(g=c.init)==null?void 0:g.status,headers:((m=c.init)==null?void 0:m.headers)&&new Headers(c.init.headers)}}return{type:Zt.data,data:c}}function ou(e,t,n,r){let a=e.createURL(RF(t)).toString(),o={signal:n};if(r&&ca(r.formMethod)){let{formMethod:i,formEncType:s}=r;o.method=i.toUpperCase(),s==="application/json"?(o.headers=new Headers({"Content-Type":s}),o.body=JSON.stringify(r.json)):s==="text/plain"?o.body=r.text:s==="application/x-www-form-urlencoded"&&r.formData?o.body=U1(r.formData):o.body=r.formData}return new Request(a,o)}function U1(e){let t=new URLSearchParams;for(let[n,r]of e.entries())t.append(n,typeof r=="string"?r:r.name);return t}function UR(e){let t=new FormData;for(let[n,r]of e.entries())t.append(n,r);return t}function UW(e,t,n,r,a){let o={},i=null,s,l=!1,c={};return n.forEach((u,d)=>{let g=t[d].route.id;if(Ze(!zl(u),"Cannot handle redirect results in processLoaderData"),Bu(u)){let m=Uu(e,g),b=u.error;r&&(b=Object.values(r)[0],r=void 0),i=i||{},i[m.route.id]==null&&(i[m.route.id]=b),o[g]=void 0,l||(l=!0,s=kF(u.error)?u.error.status:500),u.headers&&(c[g]=u.headers)}else rs(u)?(a.set(g,u.deferredData),o[g]=u.deferredData.data):o[g]=u.data,u.statusCode!=null&&u.statusCode!==200&&!l&&(s=u.statusCode),u.headers&&(c[g]=u.headers)}),r&&(i=r,o[Object.keys(r)[0]]=void 0),{loaderData:o,errors:i,statusCode:s||200,loaderHeaders:c}}function BR(e,t,n,r,a,o,i,s){let{loaderData:l,errors:c}=UW(t,n,r,a,s);for(let u=0;ur.route.id===t)+1):[...e]).reverse().find(r=>r.route.hasErrorBoundary===!0)||e[0]}function VR(e){let t=e.length===1?e[0]:e.find(n=>n.index||!n.path||n.path==="/")||{id:"__shim-error-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:t}],route:t}}function jr(e,t){let{pathname:n,routeId:r,method:a,type:o}=t===void 0?{}:t,i="Unknown Server Error",s="Unknown @remix-run/router error";return e===400?(i="Bad Request",a&&n&&r?s="You made a "+a+' request to "'+n+'" but '+('did not provide a `loader` for route "'+r+'", ')+"so there is no way to handle the request.":o==="defer-action"?s="defer() is not supported in actions":o==="invalid-body"&&(s="Unable to encode submission body")):e===403?(i="Forbidden",s='Route "'+r+'" does not match URL "'+n+'"'):e===404?(i="Not Found",s='No route matches URL "'+n+'"'):e===405&&(i="Method Not Allowed",a&&n&&r?s="You made a "+a.toUpperCase()+' request to "'+n+'" but '+('did not provide an `action` for route "'+r+'", ')+"so there is no way to handle the request.":a&&(s='Invalid request method "'+a.toUpperCase()+'"')),new r_(e||500,i,new Error(s),!0)}function qR(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(zl(n))return{result:n,idx:t}}}function RF(e){let t=typeof e=="string"?Co(e):e;return _s(Wt({},t,{hash:""}))}function BW(e,t){return e.pathname!==t.pathname||e.search!==t.search?!1:e.hash===""?t.hash!=="":e.hash===t.hash?!0:t.hash!==""}function rs(e){return e.type===Zt.deferred}function Bu(e){return e.type===Zt.error}function zl(e){return(e&&e.type)===Zt.redirect}function HW(e){let t=e;return t&&typeof t=="object"&&typeof t.data=="object"&&typeof t.subscribe=="function"&&typeof t.cancel=="function"&&typeof t.resolveData=="function"}function VW(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.headers=="object"&&typeof e.body<"u"}function qW(e){return OW.has(e.toLowerCase())}function ca(e){return NW.has(e.toLowerCase())}async function GR(e,t,n,r,a,o){for(let i=0;id.route.id===l.route.id),u=c!=null&&!TF(c,l)&&(o&&o[l.route.id])!==void 0;if(rs(s)&&(a||u)){let d=r[i];Ze(d,"Expected an AbortSignal for revalidating fetcher deferred result"),await NF(s,d,a).then(g=>{g&&(n[i]=g||n[i])})}}}async function NF(e,t,n){if(n===void 0&&(n=!1),!await e.deferredData.resolveData(t)){if(n)try{return{type:Zt.data,data:e.deferredData.unwrappedData}}catch(a){return{type:Zt.error,error:a}}return{type:Zt.data,data:e.deferredData.data}}}function a_(e){return new URLSearchParams(e).getAll("index").some(t=>t==="")}function B1(e,t){let n=typeof t=="string"?Co(t).search:t.search;if(e[e.length-1].route.index&&a_(n||""))return e[e.length-1];let r=tf(e);return r[r.length-1]}function WR(e){let{formMethod:t,formAction:n,formEncType:r,text:a,formData:o,json:i}=e;if(!(!t||!n||!r)){if(a!=null)return{formMethod:t,formAction:n,formEncType:r,formData:void 0,json:void 0,text:a};if(o!=null)return{formMethod:t,formAction:n,formEncType:r,formData:o,json:void 0,text:void 0};if(i!==void 0)return{formMethod:t,formAction:n,formEncType:r,formData:void 0,json:i,text:void 0}}}function kb(e,t){return t?{state:"loading",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}:{state:"loading",location:e,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0}}function GW(e,t){return{state:"submitting",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}}function iu(e,t){return e?{state:"loading",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t}:{state:"loading",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:t}}function WW(e,t){return{state:"submitting",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t?t.data:void 0}}function Bo(e){return{state:"idle",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:e}}function KW(e,t){try{let n=e.sessionStorage.getItem(AF);if(n){let r=JSON.parse(n);for(let[a,o]of Object.entries(r||{}))o&&Array.isArray(o)&&t.set(a,new Set(o||[]))}}catch{}}function YW(e,t){if(t.size>0){let n={};for(let[r,a]of t)n[r]=[...a];try{e.sessionStorage.setItem(AF,JSON.stringify(n))}catch(r){Cs(!1,"Failed to save applied view transitions in sessionStorage ("+r+").")}}}/** - * React Router v6.19.0 - * - * Copyright (c) Remix Software Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */function Ag(){return Ag=Object.assign?Object.assign.bind():function(e){for(var t=1;tl.pathnameBase)),i=p.useRef(!1);return OF(()=>{i.current=!0}),p.useCallback(function(l,c){if(c===void 0&&(c={}),!i.current)return;if(typeof l=="number"){n.go(l);return}let u=zm(l,JSON.parse(o),a,c.relative==="path");e==null&&t!=="/"&&(u.pathname=u.pathname==="/"?t:uo([t,u.pathname])),(c.replace?n.replace:n.push)(u,c.state,c)},[t,n,o,a,e])}const QW=p.createContext(null);function JW(e){let t=p.useContext(_o).outlet;return t&&p.createElement(QW.Provider,{value:e},t)}function Bm(e,t){let{relative:n}=t===void 0?{}:t,{matches:r}=p.useContext(_o),{pathname:a}=Li(),o=JSON.stringify(tf(r).map((i,s)=>s===r.length-1?i.pathname:i.pathnameBase));return p.useMemo(()=>zm(e,JSON.parse(o),a,n==="path"),[e,o,a,n])}function eK(e,t,n){Lc()||Ze(!1);let{navigator:r}=p.useContext(Ps),{matches:a}=p.useContext(_o),o=a[a.length-1],i=o?o.params:{};o&&o.pathname;let s=o?o.pathnameBase:"/";o&&o.route;let l=Li(),c;if(t){var u;let y=typeof t=="string"?Co(t):t;s==="/"||(u=y.pathname)!=null&&u.startsWith(s)||Ze(!1),c=y}else c=l;let d=c.pathname||"/",g=s==="/"?d:d.slice(s.length)||"/",m=Rl(e,{pathname:g}),b=oK(m&&m.map(y=>Object.assign({},y,{params:Object.assign({},i,y.params),pathname:uo([s,r.encodeLocation?r.encodeLocation(y.pathname).pathname:y.pathname]),pathnameBase:y.pathnameBase==="/"?s:uo([s,r.encodeLocation?r.encodeLocation(y.pathnameBase).pathname:y.pathnameBase])})),a,n);return t&&b?p.createElement(Um.Provider,{value:{location:Ag({pathname:"/",search:"",hash:"",state:null,key:"default"},c),navigationType:Yt.Pop}},b):b}function tK(){let e=cK(),t=kF(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,a={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"},o=null;return p.createElement(p.Fragment,null,p.createElement("h2",null,"Unexpected Application Error!"),p.createElement("h3",{style:{fontStyle:"italic"}},t),n?p.createElement("pre",{style:a},n):null,o)}const nK=p.createElement(tK,null);class rK extends p.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,n){return n.location!==t.location||n.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error||n.error,location:n.location,revalidation:t.revalidation||n.revalidation}}componentDidCatch(t,n){console.error("React Router caught the following error during render",t,n)}render(){return this.state.error?p.createElement(_o.Provider,{value:this.props.routeContext},p.createElement(IF.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function aK(e){let{routeContext:t,match:n,children:r}=e,a=p.useContext(nf);return a&&a.static&&a.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(a.staticContext._deepestRenderedBoundaryId=n.route.id),p.createElement(_o.Provider,{value:t},r)}function oK(e,t,n){var r;if(t===void 0&&(t=[]),n===void 0&&(n=null),e==null){var a;if((a=n)!=null&&a.errors)e=n.matches;else return null}let o=e,i=(r=n)==null?void 0:r.errors;if(i!=null){let s=o.findIndex(l=>l.route.id&&(i==null?void 0:i[l.route.id]));s>=0||Ze(!1),o=o.slice(0,Math.min(o.length,s+1))}return o.reduceRight((s,l,c)=>{let u=l.route.id?i==null?void 0:i[l.route.id]:null,d=null;n&&(d=l.route.errorElement||nK);let g=t.concat(o.slice(0,c+1)),m=()=>{let b;return u?b=d:l.route.Component?b=p.createElement(l.route.Component,null):l.route.element?b=l.route.element:b=s,p.createElement(aK,{match:l,routeContext:{outlet:s,matches:g,isDataRoute:n!=null},children:b})};return n&&(l.route.ErrorBoundary||l.route.errorElement||c===0)?p.createElement(rK,{location:n.location,revalidation:n.revalidation,component:d,error:u,children:m(),routeContext:{outlet:null,matches:g,isDataRoute:!0}}):m()},null)}var DF=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(DF||{}),Tg=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(Tg||{});function iK(e){let t=p.useContext(nf);return t||Ze(!1),t}function sK(e){let t=p.useContext(o_);return t||Ze(!1),t}function lK(e){let t=p.useContext(_o);return t||Ze(!1),t}function LF(e){let t=lK(),n=t.matches[t.matches.length-1];return n.route.id||Ze(!1),n.route.id}function cK(){var e;let t=p.useContext(IF),n=sK(Tg.UseRouteError),r=LF(Tg.UseRouteError);return t||((e=n.errors)==null?void 0:e[r])}function uK(){let{router:e}=iK(DF.UseNavigateStable),t=LF(Tg.UseNavigateStable),n=p.useRef(!1);return OF(()=>{n.current=!0}),p.useCallback(function(a,o){o===void 0&&(o={}),n.current&&(typeof a=="number"?e.navigate(a):e.navigate(a,Ag({fromRouteId:t},o)))},[e,t])}function MF(e){let{to:t,replace:n,state:r,relative:a}=e;Lc()||Ze(!1);let{matches:o}=p.useContext(_o),{pathname:i}=Li(),s=Mi(),l=zm(t,tf(o).map(u=>u.pathnameBase),i,a==="path"),c=JSON.stringify(l);return p.useEffect(()=>s(JSON.parse(c),{replace:n,state:r,relative:a}),[s,c,a,n,r]),null}function PF(e){return JW(e.context)}function dK(e){let{basename:t="/",children:n=null,location:r,navigationType:a=Yt.Pop,navigator:o,static:i=!1}=e;Lc()&&Ze(!1);let s=t.replace(/^\/*/,"/"),l=p.useMemo(()=>({basename:s,navigator:o,static:i}),[s,o,i]);typeof r=="string"&&(r=Co(r));let{pathname:c="/",search:u="",hash:d="",state:g=null,key:m="default"}=r,b=p.useMemo(()=>{let y=wi(c,s);return y==null?null:{location:{pathname:y,search:u,hash:d,state:g,key:m},navigationType:a}},[s,c,u,d,g,m,a]);return b==null?null:p.createElement(Ps.Provider,{value:l},p.createElement(Um.Provider,{children:n,value:b}))}new Promise(()=>{});function fK(e){let t={hasErrorBoundary:e.ErrorBoundary!=null||e.errorElement!=null};return e.Component&&Object.assign(t,{element:p.createElement(e.Component),Component:void 0}),e.ErrorBoundary&&Object.assign(t,{errorElement:p.createElement(e.ErrorBoundary),ErrorBoundary:void 0}),t}/** - * React Router DOM v6.19.0 - * - * Copyright (c) Remix Software Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */function mc(){return mc=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&(n[a]=e[a]);return n}function pK(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function gK(e,t){return e.button===0&&(!t||t==="_self")&&!pK(e)}const mK=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","unstable_viewTransition"],hK=["aria-current","caseSensitive","className","end","style","to","unstable_viewTransition","children"];function bK(e,t){return $W({basename:t==null?void 0:t.basename,future:mc({},t==null?void 0:t.future,{v7_prependBasename:!0}),history:iW({window:t==null?void 0:t.window}),hydrationData:(t==null?void 0:t.hydrationData)||yK(),routes:e,mapRouteProperties:fK,window:t==null?void 0:t.window}).initialize()}function yK(){var e;let t=(e=window)==null?void 0:e.__staticRouterHydrationData;return t&&t.errors&&(t=mc({},t,{errors:vK(t.errors)})),t}function vK(e){if(!e)return null;let t=Object.entries(e),n={};for(let[r,a]of t)if(a&&a.__type==="RouteErrorResponse")n[r]=new r_(a.status,a.statusText,a.data,a.internal===!0);else if(a&&a.__type==="Error"){if(a.__subType){let o=window[a.__subType];if(typeof o=="function")try{let i=new o(a.message);i.stack="",n[r]=i}catch{}}if(n[r]==null){let o=new Error(a.message);o.stack="",n[r]=o}}else n[r]=a;return n}const FF=p.createContext({isTransitioning:!1}),SK=p.createContext(new Map),wK="startTransition",KR=Kd[wK],EK="flushSync",YR=AV[EK];function xK(e){KR?KR(e):e()}function su(e){YR?YR(e):e()}class kK{constructor(){this.status="pending",this.promise=new Promise((t,n)=>{this.resolve=r=>{this.status==="pending"&&(this.status="resolved",t(r))},this.reject=r=>{this.status==="pending"&&(this.status="rejected",n(r))}})}}function CK(e){let{fallbackElement:t,router:n,future:r}=e,[a,o]=p.useState(n.state),[i,s]=p.useState(),[l,c]=p.useState({isTransitioning:!1}),[u,d]=p.useState(),[g,m]=p.useState(),[b,y]=p.useState(),w=p.useRef(new Map),{v7_startTransition:v}=r||{},h=p.useCallback(C=>{v?xK(C):C()},[v]),S=p.useCallback((C,_)=>{let{deletedFetchers:R,unstable_flushSync:T,unstable_viewTransitionOpts:L}=_;R.forEach(H=>w.current.delete(H)),C.fetchers.forEach((H,z)=>{H.data!==void 0&&w.current.set(z,H.data)});let D=n.window==null||typeof n.window.document.startViewTransition!="function";if(!L||D){T?su(()=>o(C)):h(()=>o(C));return}if(T){su(()=>{g&&(u&&u.resolve(),g.skipTransition()),c({isTransitioning:!0,flushSync:!0,currentLocation:L.currentLocation,nextLocation:L.nextLocation})});let H=n.window.document.startViewTransition(()=>{su(()=>o(C))});H.finished.finally(()=>{su(()=>{d(void 0),m(void 0),s(void 0),c({isTransitioning:!1})})}),su(()=>m(H));return}g?(u&&u.resolve(),g.skipTransition(),y({state:C,currentLocation:L.currentLocation,nextLocation:L.nextLocation})):(s(C),c({isTransitioning:!0,flushSync:!1,currentLocation:L.currentLocation,nextLocation:L.nextLocation}))},[n.window,g,u,w,h]);p.useLayoutEffect(()=>n.subscribe(S),[n,S]),p.useEffect(()=>{l.isTransitioning&&!l.flushSync&&d(new kK)},[l]),p.useEffect(()=>{if(u&&i&&n.window){let C=i,_=u.promise,R=n.window.document.startViewTransition(async()=>{h(()=>o(C)),await _});R.finished.finally(()=>{d(void 0),m(void 0),s(void 0),c({isTransitioning:!1})}),m(R)}},[h,i,u,n.window]),p.useEffect(()=>{u&&i&&a.location.key===i.location.key&&u.resolve()},[u,g,a.location,i]),p.useEffect(()=>{!l.isTransitioning&&b&&(s(b.state),c({isTransitioning:!0,flushSync:!1,currentLocation:b.currentLocation,nextLocation:b.nextLocation}),y(void 0))},[l.isTransitioning,b]);let E=p.useMemo(()=>({createHref:n.createHref,encodeLocation:n.encodeLocation,go:C=>n.navigate(C),push:(C,_,R)=>n.navigate(C,{state:_,preventScrollReset:R==null?void 0:R.preventScrollReset}),replace:(C,_,R)=>n.navigate(C,{replace:!0,state:_,preventScrollReset:R==null?void 0:R.preventScrollReset})}),[n]),k=n.basename||"/",x=p.useMemo(()=>({router:n,navigator:E,static:!1,basename:k}),[n,E,k]);return p.createElement(p.Fragment,null,p.createElement(nf.Provider,{value:x},p.createElement(o_.Provider,{value:a},p.createElement(SK.Provider,{value:w.current},p.createElement(FF.Provider,{value:l},p.createElement(dK,{basename:k,location:a.location,navigationType:a.historyAction,navigator:E},a.initialized?p.createElement(_K,{routes:n.routes,state:a}):t))))),null)}function _K(e){let{routes:t,state:n}=e;return eK(t,void 0,n)}const AK=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",TK=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,bd=p.forwardRef(function(t,n){let{onClick:r,relative:a,reloadDocument:o,replace:i,state:s,target:l,to:c,preventScrollReset:u,unstable_viewTransition:d}=t,g=$F(t,mK),{basename:m}=p.useContext(Ps),b,y=!1;if(typeof c=="string"&&TK.test(c)&&(b=c,AK))try{let S=new URL(window.location.href),E=c.startsWith("//")?new URL(S.protocol+c):new URL(c),k=wi(E.pathname,m);E.origin===S.origin&&k!=null?c=k+E.search+E.hash:y=!0}catch{}let w=ZW(c,{relative:a}),v=NK(c,{replace:i,state:s,target:l,preventScrollReset:u,relative:a,unstable_viewTransition:d});function h(S){r&&r(S),S.defaultPrevented||v(S)}return p.createElement("a",mc({},g,{href:b||w,onClick:y||o?r:h,ref:n,target:l}))}),jF=p.forwardRef(function(t,n){let{"aria-current":r="page",caseSensitive:a=!1,className:o="",end:i=!1,style:s,to:l,unstable_viewTransition:c,children:u}=t,d=$F(t,hK),g=Bm(l,{relative:d.relative}),m=Li(),b=p.useContext(o_),{navigator:y}=p.useContext(Ps),w=b!=null&&IK(g)&&c===!0,v=y.encodeLocation?y.encodeLocation(g).pathname:g.pathname,h=m.pathname,S=b&&b.navigation&&b.navigation.location?b.navigation.location.pathname:null;a||(h=h.toLowerCase(),S=S?S.toLowerCase():null,v=v.toLowerCase());const E=v!=="/"&&v.endsWith("/")?v.length-1:v.length;let k=h===v||!i&&h.startsWith(v)&&h.charAt(E)==="/",x=S!=null&&(S===v||!i&&S.startsWith(v)&&S.charAt(v.length)==="/"),C={isActive:k,isPending:x,isTransitioning:w},_=k?r:void 0,R;typeof o=="function"?R=o(C):R=[o,k?"active":null,x?"pending":null,w?"transitioning":null].filter(Boolean).join(" ");let T=typeof s=="function"?s(C):s;return p.createElement(bd,mc({},d,{"aria-current":_,className:R,ref:n,style:T,to:l,unstable_viewTransition:c}),typeof u=="function"?u(C):u)});var H1;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(H1||(H1={}));var ZR;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(ZR||(ZR={}));function RK(e){let t=p.useContext(nf);return t||Ze(!1),t}function NK(e,t){let{target:n,replace:r,state:a,preventScrollReset:o,relative:i,unstable_viewTransition:s}=t===void 0?{}:t,l=Mi(),c=Li(),u=Bm(e,{relative:i});return p.useCallback(d=>{if(gK(d,n)){d.preventDefault();let g=r!==void 0?r:_s(c)===_s(u);l(e,{replace:g,state:a,preventScrollReset:o,relative:i,unstable_viewTransition:s})}},[c,l,u,r,a,n,e,o,i,s])}function IK(e,t){t===void 0&&(t={});let n=p.useContext(FF);n==null&&Ze(!1);let{basename:r}=RK(H1.useViewTransitionState),a=Bm(e,{relative:t.relative});if(!n.isTransitioning)return!1;let o=wi(n.currentLocation.pathname,r)||n.currentLocation.pathname,i=wi(n.nextLocation.pathname,r)||n.nextLocation.pathname;return j1(a.pathname,i)!=null||j1(a.pathname,o)!=null}const XR=e=>{let t;const n=new Set,r=(l,c)=>{const u=typeof l=="function"?l(t):l;if(!Object.is(u,t)){const d=t;t=c??typeof u!="object"?u:Object.assign({},t,u),n.forEach(g=>g(t,d))}},a=()=>t,s={setState:r,getState:a,subscribe:l=>(n.add(l),()=>n.delete(l)),destroy:()=>{n.clear()}};return t=e(r,a,s),s},OK=e=>e?XR(e):XR;var zF={exports:{}},UF={},BF={exports:{}},HF={};/** - * @license React - * use-sync-external-store-shim.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var hc=p;function DK(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var LK=typeof Object.is=="function"?Object.is:DK,MK=hc.useState,PK=hc.useEffect,$K=hc.useLayoutEffect,FK=hc.useDebugValue;function jK(e,t){var n=t(),r=MK({inst:{value:n,getSnapshot:t}}),a=r[0].inst,o=r[1];return $K(function(){a.value=n,a.getSnapshot=t,Cb(a)&&o({inst:a})},[e,n,t]),PK(function(){return Cb(a)&&o({inst:a}),e(function(){Cb(a)&&o({inst:a})})},[e]),FK(n),n}function Cb(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!LK(e,n)}catch{return!0}}function zK(e,t){return t()}var UK=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?zK:jK;HF.useSyncExternalStore=hc.useSyncExternalStore!==void 0?hc.useSyncExternalStore:UK;BF.exports=HF;var BK=BF.exports;/** - * @license React - * use-sync-external-store-shim/with-selector.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Hm=p,HK=BK;function VK(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var qK=typeof Object.is=="function"?Object.is:VK,GK=HK.useSyncExternalStore,WK=Hm.useRef,KK=Hm.useEffect,YK=Hm.useMemo,ZK=Hm.useDebugValue;UF.useSyncExternalStoreWithSelector=function(e,t,n,r,a){var o=WK(null);if(o.current===null){var i={hasValue:!1,value:null};o.current=i}else i=o.current;o=YK(function(){function l(m){if(!c){if(c=!0,u=m,m=r(m),a!==void 0&&i.hasValue){var b=i.value;if(a(b,m))return d=b}return d=m}if(b=d,qK(u,m))return b;var y=r(m);return a!==void 0&&a(b,y)?b:(u=m,d=y)}var c=!1,u,d,g=n===void 0?null:n;return[function(){return l(t())},g===null?void 0:function(){return l(g())}]},[t,n,r,a]);var s=GK(e,o[0],o[1]);return KK(function(){i.hasValue=!0,i.value=s},[s]),ZK(s),s};zF.exports=UF;var XK=zF.exports;const QK=Tc(XK),{useDebugValue:JK}=Ae,{useSyncExternalStoreWithSelector:eY}=QK;function tY(e,t=e.getState,n){const r=eY(e.subscribe,e.getState,e.getServerState||e.getState,t,n);return JK(r),r}const QR=e=>{const t=typeof e=="function"?OK(e):e,n=(r,a)=>tY(t,r,a);return Object.assign(n,t),n},rf=e=>e?QR(e):QR,nY=(e,t)=>(...n)=>Object.assign({},e,t(...n));function i_(e,t){let n;try{n=e()}catch{return}return{getItem:a=>{var o;const i=l=>l===null?null:JSON.parse(l,t==null?void 0:t.reviver),s=(o=n.getItem(a))!=null?o:null;return s instanceof Promise?s.then(i):i(s)},setItem:(a,o)=>n.setItem(a,JSON.stringify(o,t==null?void 0:t.replacer)),removeItem:a=>n.removeItem(a)}}const yd=e=>t=>{try{const n=e(t);return n instanceof Promise?n:{then(r){return yd(r)(n)},catch(r){return this}}}catch(n){return{then(r){return this},catch(r){return yd(r)(n)}}}},rY=(e,t)=>(n,r,a)=>{let o={getStorage:()=>localStorage,serialize:JSON.stringify,deserialize:JSON.parse,partialize:w=>w,version:0,merge:(w,v)=>({...v,...w}),...t},i=!1;const s=new Set,l=new Set;let c;try{c=o.getStorage()}catch{}if(!c)return e((...w)=>{console.warn(`[zustand persist middleware] Unable to update item '${o.name}', the given storage is currently unavailable.`),n(...w)},r,a);const u=yd(o.serialize),d=()=>{const w=o.partialize({...r()});let v;const h=u({state:w,version:o.version}).then(S=>c.setItem(o.name,S)).catch(S=>{v=S});if(v)throw v;return h},g=a.setState;a.setState=(w,v)=>{g(w,v),d()};const m=e((...w)=>{n(...w),d()},r,a);let b;const y=()=>{var w;if(!c)return;i=!1,s.forEach(h=>h(r()));const v=((w=o.onRehydrateStorage)==null?void 0:w.call(o,r()))||void 0;return yd(c.getItem.bind(c))(o.name).then(h=>{if(h)return o.deserialize(h)}).then(h=>{if(h)if(typeof h.version=="number"&&h.version!==o.version){if(o.migrate)return o.migrate(h.state,h.version);console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}else return h.state}).then(h=>{var S;return b=o.merge(h,(S=r())!=null?S:m),n(b,!0),d()}).then(()=>{v==null||v(b,void 0),i=!0,l.forEach(h=>h(b))}).catch(h=>{v==null||v(void 0,h)})};return a.persist={setOptions:w=>{o={...o,...w},w.getStorage&&(c=w.getStorage())},clearStorage:()=>{c==null||c.removeItem(o.name)},getOptions:()=>o,rehydrate:()=>y(),hasHydrated:()=>i,onHydrate:w=>(s.add(w),()=>{s.delete(w)}),onFinishHydration:w=>(l.add(w),()=>{l.delete(w)})},y(),b||m},aY=(e,t)=>(n,r,a)=>{let o={storage:i_(()=>localStorage),partialize:y=>y,version:0,merge:(y,w)=>({...w,...y}),...t},i=!1;const s=new Set,l=new Set;let c=o.storage;if(!c)return e((...y)=>{console.warn(`[zustand persist middleware] Unable to update item '${o.name}', the given storage is currently unavailable.`),n(...y)},r,a);const u=()=>{const y=o.partialize({...r()});return c.setItem(o.name,{state:y,version:o.version})},d=a.setState;a.setState=(y,w)=>{d(y,w),u()};const g=e((...y)=>{n(...y),u()},r,a);let m;const b=()=>{var y,w;if(!c)return;i=!1,s.forEach(h=>{var S;return h((S=r())!=null?S:g)});const v=((w=o.onRehydrateStorage)==null?void 0:w.call(o,(y=r())!=null?y:g))||void 0;return yd(c.getItem.bind(c))(o.name).then(h=>{if(h)if(typeof h.version=="number"&&h.version!==o.version){if(o.migrate)return o.migrate(h.state,h.version);console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}else return h.state}).then(h=>{var S;return m=o.merge(h,(S=r())!=null?S:g),n(m,!0),u()}).then(()=>{v==null||v(m,void 0),m=r(),i=!0,l.forEach(h=>h(m))}).catch(h=>{v==null||v(void 0,h)})};return a.persist={setOptions:y=>{o={...o,...y},y.storage&&(c=y.storage)},clearStorage:()=>{c==null||c.removeItem(o.name)},getOptions:()=>o,rehydrate:()=>b(),hasHydrated:()=>i,onHydrate:y=>(s.add(y),()=>{s.delete(y)}),onFinishHydration:y=>(l.add(y),()=>{l.delete(y)})},o.skipHydration||b(),m||g},oY=(e,t)=>"getStorage"in t||"serialize"in t||"deserialize"in t?rY(e,t):aY(e,t),Vm=oY,s_=rf(Vm((e,t)=>({auth:{uuid:null,token:null,loggedIn:!1,isAdmin:!1},actions:{setToken:n=>e(r=>({...r,auth:{...r.auth,token:n}})),setAsAuthenticated:(n,r,a)=>e(o=>({...o,auth:{token:r??o.auth.token,uuid:n,loggedIn:!0,isAdmin:a??!1}})),logout:()=>e(n=>({...n,auth:{token:null,uuid:null,loggedIn:!1,isAdmin:!1}}))}}),{name:"auth-storage",storage:i_(()=>localStorage),partialize:({actions:e,...t})=>t})),VF=()=>{var e;return(e=s_().auth)==null?void 0:e.uuid},iY=()=>s_().actions,qF=()=>{const{auth:e}=s_();return e.token?`Bearer ${e.token}`:""},sY={BASE_URL:"/",MODE:"production",DEV:!1,PROD:!0,SSR:!1}.VITE_BASE_URL||"/api";function GF(e,t){return function(){return e.apply(t,arguments)}}const{toString:lY}=Object.prototype,{getPrototypeOf:l_}=Object,qm=(e=>t=>{const n=lY.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),Ha=e=>(e=e.toLowerCase(),t=>qm(t)===e),Gm=e=>t=>typeof t===e,{isArray:Mc}=Array,vd=Gm("undefined");function cY(e){return e!==null&&!vd(e)&&e.constructor!==null&&!vd(e.constructor)&&Gr(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const WF=Ha("ArrayBuffer");function uY(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&WF(e.buffer),t}const dY=Gm("string"),Gr=Gm("function"),KF=Gm("number"),Wm=e=>e!==null&&typeof e=="object",fY=e=>e===!0||e===!1,Bp=e=>{if(qm(e)!=="object")return!1;const t=l_(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},pY=Ha("Date"),gY=Ha("File"),mY=Ha("Blob"),hY=Ha("FileList"),bY=e=>Wm(e)&&Gr(e.pipe),yY=e=>{let t;return e&&(typeof FormData=="function"&&e instanceof FormData||Gr(e.append)&&((t=qm(e))==="formdata"||t==="object"&&Gr(e.toString)&&e.toString()==="[object FormData]"))},vY=Ha("URLSearchParams"),SY=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function af(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let r,a;if(typeof e!="object"&&(e=[e]),Mc(e))for(r=0,a=e.length;r0;)if(a=n[r],t===a.toLowerCase())return a;return null}const ZF=(()=>typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global)(),XF=e=>!vd(e)&&e!==ZF;function V1(){const{caseless:e}=XF(this)&&this||{},t={},n=(r,a)=>{const o=e&&YF(t,a)||a;Bp(t[o])&&Bp(r)?t[o]=V1(t[o],r):Bp(r)?t[o]=V1({},r):Mc(r)?t[o]=r.slice():t[o]=r};for(let r=0,a=arguments.length;r(af(t,(a,o)=>{n&&Gr(a)?e[o]=GF(a,n):e[o]=a},{allOwnKeys:r}),e),EY=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),xY=(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},kY=(e,t,n,r)=>{let a,o,i;const s={};if(t=t||{},e==null)return t;do{for(a=Object.getOwnPropertyNames(e),o=a.length;o-- >0;)i=a[o],(!r||r(i,e,t))&&!s[i]&&(t[i]=e[i],s[i]=!0);e=n!==!1&&l_(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},CY=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return r!==-1&&r===n},_Y=e=>{if(!e)return null;if(Mc(e))return e;let t=e.length;if(!KF(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},AY=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&l_(Uint8Array)),TY=(e,t)=>{const r=(e&&e[Symbol.iterator]).call(e);let a;for(;(a=r.next())&&!a.done;){const o=a.value;t.call(e,o[0],o[1])}},RY=(e,t)=>{let n;const r=[];for(;(n=e.exec(t))!==null;)r.push(n);return r},NY=Ha("HTMLFormElement"),IY=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,a){return r.toUpperCase()+a}),JR=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),OY=Ha("RegExp"),QF=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};af(n,(a,o)=>{let i;(i=t(a,o,e))!==!1&&(r[o]=i||a)}),Object.defineProperties(e,r)},DY=e=>{QF(e,(t,n)=>{if(Gr(e)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const r=e[n];if(Gr(r)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},LY=(e,t)=>{const n={},r=a=>{a.forEach(o=>{n[o]=!0})};return Mc(e)?r(e):r(String(e).split(t)),n},MY=()=>{},PY=(e,t)=>(e=+e,Number.isFinite(e)?e:t),_b="abcdefghijklmnopqrstuvwxyz",e2="0123456789",JF={DIGIT:e2,ALPHA:_b,ALPHA_DIGIT:_b+_b.toUpperCase()+e2},$Y=(e=16,t=JF.ALPHA_DIGIT)=>{let n="";const{length:r}=t;for(;e--;)n+=t[Math.random()*r|0];return n};function FY(e){return!!(e&&Gr(e.append)&&e[Symbol.toStringTag]==="FormData"&&e[Symbol.iterator])}const jY=e=>{const t=new Array(10),n=(r,a)=>{if(Wm(r)){if(t.indexOf(r)>=0)return;if(!("toJSON"in r)){t[a]=r;const o=Mc(r)?[]:{};return af(r,(i,s)=>{const l=n(i,a+1);!vd(l)&&(o[s]=l)}),t[a]=void 0,o}}return r};return n(e,0)},zY=Ha("AsyncFunction"),UY=e=>e&&(Wm(e)||Gr(e))&&Gr(e.then)&&Gr(e.catch),J={isArray:Mc,isArrayBuffer:WF,isBuffer:cY,isFormData:yY,isArrayBufferView:uY,isString:dY,isNumber:KF,isBoolean:fY,isObject:Wm,isPlainObject:Bp,isUndefined:vd,isDate:pY,isFile:gY,isBlob:mY,isRegExp:OY,isFunction:Gr,isStream:bY,isURLSearchParams:vY,isTypedArray:AY,isFileList:hY,forEach:af,merge:V1,extend:wY,trim:SY,stripBOM:EY,inherits:xY,toFlatObject:kY,kindOf:qm,kindOfTest:Ha,endsWith:CY,toArray:_Y,forEachEntry:TY,matchAll:RY,isHTMLForm:NY,hasOwnProperty:JR,hasOwnProp:JR,reduceDescriptors:QF,freezeMethods:DY,toObjectSet:LY,toCamelCase:IY,noop:MY,toFiniteNumber:PY,findKey:YF,global:ZF,isContextDefined:XF,ALPHABET:JF,generateString:$Y,isSpecCompliantForm:FY,toJSONObject:jY,isAsyncFn:zY,isThenable:UY};function st(e,t,n,r,a){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),a&&(this.response=a)}J.inherits(st,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:J.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const e6=st.prototype,t6={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{t6[e]={value:e}});Object.defineProperties(st,t6);Object.defineProperty(e6,"isAxiosError",{value:!0});st.from=(e,t,n,r,a,o)=>{const i=Object.create(e6);return J.toFlatObject(e,i,function(l){return l!==Error.prototype},s=>s!=="isAxiosError"),st.call(i,e.message,t,n,r,a),i.cause=e,i.name=e.name,o&&Object.assign(i,o),i};const BY=null;function q1(e){return J.isPlainObject(e)||J.isArray(e)}function n6(e){return J.endsWith(e,"[]")?e.slice(0,-2):e}function t2(e,t,n){return e?e.concat(t).map(function(a,o){return a=n6(a),!n&&o?"["+a+"]":a}).join(n?".":""):t}function HY(e){return J.isArray(e)&&!e.some(q1)}const VY=J.toFlatObject(J,{},null,function(t){return/^is[A-Z]/.test(t)});function Km(e,t,n){if(!J.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=J.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(y,w){return!J.isUndefined(w[y])});const r=n.metaTokens,a=n.visitor||u,o=n.dots,i=n.indexes,l=(n.Blob||typeof Blob<"u"&&Blob)&&J.isSpecCompliantForm(t);if(!J.isFunction(a))throw new TypeError("visitor must be a function");function c(b){if(b===null)return"";if(J.isDate(b))return b.toISOString();if(!l&&J.isBlob(b))throw new st("Blob is not supported. Use a Buffer instead.");return J.isArrayBuffer(b)||J.isTypedArray(b)?l&&typeof Blob=="function"?new Blob([b]):Buffer.from(b):b}function u(b,y,w){let v=b;if(b&&!w&&typeof b=="object"){if(J.endsWith(y,"{}"))y=r?y:y.slice(0,-2),b=JSON.stringify(b);else if(J.isArray(b)&&HY(b)||(J.isFileList(b)||J.endsWith(y,"[]"))&&(v=J.toArray(b)))return y=n6(y),v.forEach(function(S,E){!(J.isUndefined(S)||S===null)&&t.append(i===!0?t2([y],E,o):i===null?y:y+"[]",c(S))}),!1}return q1(b)?!0:(t.append(t2(w,y,o),c(b)),!1)}const d=[],g=Object.assign(VY,{defaultVisitor:u,convertValue:c,isVisitable:q1});function m(b,y){if(!J.isUndefined(b)){if(d.indexOf(b)!==-1)throw Error("Circular reference detected in "+y.join("."));d.push(b),J.forEach(b,function(v,h){(!(J.isUndefined(v)||v===null)&&a.call(t,v,J.isString(h)?h.trim():h,y,g))===!0&&m(v,y?y.concat(h):[h])}),d.pop()}}if(!J.isObject(e))throw new TypeError("data must be an object");return m(e),t}function n2(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(r){return t[r]})}function c_(e,t){this._pairs=[],e&&Km(e,this,t)}const r6=c_.prototype;r6.append=function(t,n){this._pairs.push([t,n])};r6.toString=function(t){const n=t?function(r){return t.call(this,r,n2)}:n2;return this._pairs.map(function(a){return n(a[0])+"="+n(a[1])},"").join("&")};function qY(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function a6(e,t,n){if(!t)return e;const r=n&&n.encode||qY,a=n&&n.serialize;let o;if(a?o=a(t,n):o=J.isURLSearchParams(t)?t.toString():new c_(t,n).toString(r),o){const i=e.indexOf("#");i!==-1&&(e=e.slice(0,i)),e+=(e.indexOf("?")===-1?"?":"&")+o}return e}class GY{constructor(){this.handlers=[]}use(t,n,r){return this.handlers.push({fulfilled:t,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){J.forEach(this.handlers,function(r){r!==null&&t(r)})}}const r2=GY,o6={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},WY=typeof URLSearchParams<"u"?URLSearchParams:c_,KY=typeof FormData<"u"?FormData:null,YY=typeof Blob<"u"?Blob:null,ZY={isBrowser:!0,classes:{URLSearchParams:WY,FormData:KY,Blob:YY},protocols:["http","https","file","blob","url","data"]},i6=typeof window<"u"&&typeof document<"u",XY=(e=>i6&&["ReactNative","NativeScript","NS"].indexOf(e)<0)(typeof navigator<"u"&&navigator.product),QY=(()=>typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function")(),JY=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:i6,hasStandardBrowserEnv:XY,hasStandardBrowserWebWorkerEnv:QY},Symbol.toStringTag,{value:"Module"})),Ia={...JY,...ZY};function eZ(e,t){return Km(e,new Ia.classes.URLSearchParams,Object.assign({visitor:function(n,r,a,o){return Ia.isNode&&J.isBuffer(n)?(this.append(r,n.toString("base64")),!1):o.defaultVisitor.apply(this,arguments)}},t))}function tZ(e){return J.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function nZ(e){const t={},n=Object.keys(e);let r;const a=n.length;let o;for(r=0;r=n.length;return i=!i&&J.isArray(a)?a.length:i,l?(J.hasOwnProp(a,i)?a[i]=[a[i],r]:a[i]=r,!s):((!a[i]||!J.isObject(a[i]))&&(a[i]=[]),t(n,r,a[i],o)&&J.isArray(a[i])&&(a[i]=nZ(a[i])),!s)}if(J.isFormData(e)&&J.isFunction(e.entries)){const n={};return J.forEachEntry(e,(r,a)=>{t(tZ(r),a,n,0)}),n}return null}function rZ(e,t,n){if(J.isString(e))try{return(t||JSON.parse)(e),J.trim(e)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(e)}const u_={transitional:o6,adapter:["xhr","http"],transformRequest:[function(t,n){const r=n.getContentType()||"",a=r.indexOf("application/json")>-1,o=J.isObject(t);if(o&&J.isHTMLForm(t)&&(t=new FormData(t)),J.isFormData(t))return a?JSON.stringify(s6(t)):t;if(J.isArrayBuffer(t)||J.isBuffer(t)||J.isStream(t)||J.isFile(t)||J.isBlob(t))return t;if(J.isArrayBufferView(t))return t.buffer;if(J.isURLSearchParams(t))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let s;if(o){if(r.indexOf("application/x-www-form-urlencoded")>-1)return eZ(t,this.formSerializer).toString();if((s=J.isFileList(t))||r.indexOf("multipart/form-data")>-1){const l=this.env&&this.env.FormData;return Km(s?{"files[]":t}:t,l&&new l,this.formSerializer)}}return o||a?(n.setContentType("application/json",!1),rZ(t)):t}],transformResponse:[function(t){const n=this.transitional||u_.transitional,r=n&&n.forcedJSONParsing,a=this.responseType==="json";if(t&&J.isString(t)&&(r&&!this.responseType||a)){const i=!(n&&n.silentJSONParsing)&&a;try{return JSON.parse(t)}catch(s){if(i)throw s.name==="SyntaxError"?st.from(s,st.ERR_BAD_RESPONSE,this,null,this.response):s}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Ia.classes.FormData,Blob:Ia.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};J.forEach(["delete","get","head","post","put","patch"],e=>{u_.headers[e]={}});const d_=u_,aZ=J.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),oZ=e=>{const t={};let n,r,a;return e&&e.split(` -`).forEach(function(i){a=i.indexOf(":"),n=i.substring(0,a).trim().toLowerCase(),r=i.substring(a+1).trim(),!(!n||t[n]&&aZ[n])&&(n==="set-cookie"?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)}),t},a2=Symbol("internals");function lu(e){return e&&String(e).trim().toLowerCase()}function Hp(e){return e===!1||e==null?e:J.isArray(e)?e.map(Hp):String(e)}function iZ(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}const sZ=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function Ab(e,t,n,r,a){if(J.isFunction(r))return r.call(this,t,n);if(a&&(t=n),!!J.isString(t)){if(J.isString(r))return t.indexOf(r)!==-1;if(J.isRegExp(r))return r.test(t)}}function lZ(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,n,r)=>n.toUpperCase()+r)}function cZ(e,t){const n=J.toCamelCase(" "+t);["get","set","has"].forEach(r=>{Object.defineProperty(e,r+n,{value:function(a,o,i){return this[r].call(this,t,a,o,i)},configurable:!0})})}class Ym{constructor(t){t&&this.set(t)}set(t,n,r){const a=this;function o(s,l,c){const u=lu(l);if(!u)throw new Error("header name must be a non-empty string");const d=J.findKey(a,u);(!d||a[d]===void 0||c===!0||c===void 0&&a[d]!==!1)&&(a[d||l]=Hp(s))}const i=(s,l)=>J.forEach(s,(c,u)=>o(c,u,l));return J.isPlainObject(t)||t instanceof this.constructor?i(t,n):J.isString(t)&&(t=t.trim())&&!sZ(t)?i(oZ(t),n):t!=null&&o(n,t,r),this}get(t,n){if(t=lu(t),t){const r=J.findKey(this,t);if(r){const a=this[r];if(!n)return a;if(n===!0)return iZ(a);if(J.isFunction(n))return n.call(this,a,r);if(J.isRegExp(n))return n.exec(a);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,n){if(t=lu(t),t){const r=J.findKey(this,t);return!!(r&&this[r]!==void 0&&(!n||Ab(this,this[r],r,n)))}return!1}delete(t,n){const r=this;let a=!1;function o(i){if(i=lu(i),i){const s=J.findKey(r,i);s&&(!n||Ab(r,r[s],s,n))&&(delete r[s],a=!0)}}return J.isArray(t)?t.forEach(o):o(t),a}clear(t){const n=Object.keys(this);let r=n.length,a=!1;for(;r--;){const o=n[r];(!t||Ab(this,this[o],o,t,!0))&&(delete this[o],a=!0)}return a}normalize(t){const n=this,r={};return J.forEach(this,(a,o)=>{const i=J.findKey(r,o);if(i){n[i]=Hp(a),delete n[o];return}const s=t?lZ(o):String(o).trim();s!==o&&delete n[o],n[s]=Hp(a),r[s]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return J.forEach(this,(r,a)=>{r!=null&&r!==!1&&(n[a]=t&&J.isArray(r)?r.join(", "):r)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,n])=>t+": "+n).join(` -`)}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const r=new this(t);return n.forEach(a=>r.set(a)),r}static accessor(t){const r=(this[a2]=this[a2]={accessors:{}}).accessors,a=this.prototype;function o(i){const s=lu(i);r[s]||(cZ(a,i),r[s]=!0)}return J.isArray(t)?t.forEach(o):o(t),this}}Ym.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);J.reduceDescriptors(Ym.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(r){this[n]=r}}});J.freezeMethods(Ym);const fo=Ym;function Tb(e,t){const n=this||d_,r=t||n,a=fo.from(r.headers);let o=r.data;return J.forEach(e,function(s){o=s.call(n,o,a.normalize(),t?t.status:void 0)}),a.normalize(),o}function l6(e){return!!(e&&e.__CANCEL__)}function of(e,t,n){st.call(this,e??"canceled",st.ERR_CANCELED,t,n),this.name="CanceledError"}J.inherits(of,st,{__CANCEL__:!0});function uZ(e,t,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new st("Request failed with status code "+n.status,[st.ERR_BAD_REQUEST,st.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}const dZ=Ia.hasStandardBrowserEnv?{write(e,t,n,r,a,o){const i=[e+"="+encodeURIComponent(t)];J.isNumber(n)&&i.push("expires="+new Date(n).toGMTString()),J.isString(r)&&i.push("path="+r),J.isString(a)&&i.push("domain="+a),o===!0&&i.push("secure"),document.cookie=i.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function fZ(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function pZ(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function c6(e,t){return e&&!fZ(t)?pZ(e,t):t}const gZ=Ia.hasStandardBrowserEnv?function(){const t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");let r;function a(o){let i=o;return t&&(n.setAttribute("href",i),i=n.href),n.setAttribute("href",i),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:n.pathname.charAt(0)==="/"?n.pathname:"/"+n.pathname}}return r=a(window.location.href),function(i){const s=J.isString(i)?a(i):i;return s.protocol===r.protocol&&s.host===r.host}}():function(){return function(){return!0}}();function mZ(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function hZ(e,t){e=e||10;const n=new Array(e),r=new Array(e);let a=0,o=0,i;return t=t!==void 0?t:1e3,function(l){const c=Date.now(),u=r[o];i||(i=c),n[a]=l,r[a]=c;let d=o,g=0;for(;d!==a;)g+=n[d++],d=d%e;if(a=(a+1)%e,a===o&&(o=(o+1)%e),c-i{const o=a.loaded,i=a.lengthComputable?a.total:void 0,s=o-n,l=r(s),c=o<=i;n=o;const u={loaded:o,total:i,progress:i?o/i:void 0,bytes:s,rate:l||void 0,estimated:l&&i&&c?(i-o)/l:void 0,event:a};u[t?"download":"upload"]=!0,e(u)}}const bZ=typeof XMLHttpRequest<"u",yZ=bZ&&function(e){return new Promise(function(n,r){let a=e.data;const o=fo.from(e.headers).normalize();let{responseType:i,withXSRFToken:s}=e,l;function c(){e.cancelToken&&e.cancelToken.unsubscribe(l),e.signal&&e.signal.removeEventListener("abort",l)}let u;if(J.isFormData(a)){if(Ia.hasStandardBrowserEnv||Ia.hasStandardBrowserWebWorkerEnv)o.setContentType(!1);else if((u=o.getContentType())!==!1){const[y,...w]=u?u.split(";").map(v=>v.trim()).filter(Boolean):[];o.setContentType([y||"multipart/form-data",...w].join("; "))}}let d=new XMLHttpRequest;if(e.auth){const y=e.auth.username||"",w=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";o.set("Authorization","Basic "+btoa(y+":"+w))}const g=c6(e.baseURL,e.url);d.open(e.method.toUpperCase(),a6(g,e.params,e.paramsSerializer),!0),d.timeout=e.timeout;function m(){if(!d)return;const y=fo.from("getAllResponseHeaders"in d&&d.getAllResponseHeaders()),v={data:!i||i==="text"||i==="json"?d.responseText:d.response,status:d.status,statusText:d.statusText,headers:y,config:e,request:d};uZ(function(S){n(S),c()},function(S){r(S),c()},v),d=null}if("onloadend"in d?d.onloadend=m:d.onreadystatechange=function(){!d||d.readyState!==4||d.status===0&&!(d.responseURL&&d.responseURL.indexOf("file:")===0)||setTimeout(m)},d.onabort=function(){d&&(r(new st("Request aborted",st.ECONNABORTED,e,d)),d=null)},d.onerror=function(){r(new st("Network Error",st.ERR_NETWORK,e,d)),d=null},d.ontimeout=function(){let w=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";const v=e.transitional||o6;e.timeoutErrorMessage&&(w=e.timeoutErrorMessage),r(new st(w,v.clarifyTimeoutError?st.ETIMEDOUT:st.ECONNABORTED,e,d)),d=null},Ia.hasStandardBrowserEnv&&(s&&J.isFunction(s)&&(s=s(e)),s||s!==!1&&gZ(g))){const y=e.xsrfHeaderName&&e.xsrfCookieName&&dZ.read(e.xsrfCookieName);y&&o.set(e.xsrfHeaderName,y)}a===void 0&&o.setContentType(null),"setRequestHeader"in d&&J.forEach(o.toJSON(),function(w,v){d.setRequestHeader(v,w)}),J.isUndefined(e.withCredentials)||(d.withCredentials=!!e.withCredentials),i&&i!=="json"&&(d.responseType=e.responseType),typeof e.onDownloadProgress=="function"&&d.addEventListener("progress",o2(e.onDownloadProgress,!0)),typeof e.onUploadProgress=="function"&&d.upload&&d.upload.addEventListener("progress",o2(e.onUploadProgress)),(e.cancelToken||e.signal)&&(l=y=>{d&&(r(!y||y.type?new of(null,e,d):y),d.abort(),d=null)},e.cancelToken&&e.cancelToken.subscribe(l),e.signal&&(e.signal.aborted?l():e.signal.addEventListener("abort",l)));const b=mZ(g);if(b&&Ia.protocols.indexOf(b)===-1){r(new st("Unsupported protocol "+b+":",st.ERR_BAD_REQUEST,e));return}d.send(a||null)})},G1={http:BY,xhr:yZ};J.forEach(G1,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const i2=e=>`- ${e}`,vZ=e=>J.isFunction(e)||e===null||e===!1,u6={getAdapter:e=>{e=J.isArray(e)?e:[e];const{length:t}=e;let n,r;const a={};for(let o=0;o`adapter ${s} `+(l===!1?"is not supported by the environment":"is not available in the build"));let i=t?o.length>1?`since : -`+o.map(i2).join(` -`):" "+i2(o[0]):"as no adapter specified";throw new st("There is no suitable adapter to dispatch the request "+i,"ERR_NOT_SUPPORT")}return r},adapters:G1};function Rb(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new of(null,e)}function s2(e){return Rb(e),e.headers=fo.from(e.headers),e.data=Tb.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),u6.getAdapter(e.adapter||d_.adapter)(e).then(function(r){return Rb(e),r.data=Tb.call(e,e.transformResponse,r),r.headers=fo.from(r.headers),r},function(r){return l6(r)||(Rb(e),r&&r.response&&(r.response.data=Tb.call(e,e.transformResponse,r.response),r.response.headers=fo.from(r.response.headers))),Promise.reject(r)})}const l2=e=>e instanceof fo?{...e}:e;function bc(e,t){t=t||{};const n={};function r(c,u,d){return J.isPlainObject(c)&&J.isPlainObject(u)?J.merge.call({caseless:d},c,u):J.isPlainObject(u)?J.merge({},u):J.isArray(u)?u.slice():u}function a(c,u,d){if(J.isUndefined(u)){if(!J.isUndefined(c))return r(void 0,c,d)}else return r(c,u,d)}function o(c,u){if(!J.isUndefined(u))return r(void 0,u)}function i(c,u){if(J.isUndefined(u)){if(!J.isUndefined(c))return r(void 0,c)}else return r(void 0,u)}function s(c,u,d){if(d in t)return r(c,u);if(d in e)return r(void 0,c)}const l={url:o,method:o,data:o,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:s,headers:(c,u)=>a(l2(c),l2(u),!0)};return J.forEach(Object.keys(Object.assign({},e,t)),function(u){const d=l[u]||a,g=d(e[u],t[u],u);J.isUndefined(g)&&d!==s||(n[u]=g)}),n}const d6="1.6.8",f_={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{f_[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});const c2={};f_.transitional=function(t,n,r){function a(o,i){return"[Axios v"+d6+"] Transitional option '"+o+"'"+i+(r?". "+r:"")}return(o,i,s)=>{if(t===!1)throw new st(a(i," has been removed"+(n?" in "+n:"")),st.ERR_DEPRECATED);return n&&!c2[i]&&(c2[i]=!0,console.warn(a(i," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(o,i,s):!0}};function SZ(e,t,n){if(typeof e!="object")throw new st("options must be an object",st.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let a=r.length;for(;a-- >0;){const o=r[a],i=t[o];if(i){const s=e[o],l=s===void 0||i(s,o,e);if(l!==!0)throw new st("option "+o+" must be "+l,st.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new st("Unknown option "+o,st.ERR_BAD_OPTION)}}const W1={assertOptions:SZ,validators:f_},Mo=W1.validators;class Rg{constructor(t){this.defaults=t,this.interceptors={request:new r2,response:new r2}}async request(t,n){try{return await this._request(t,n)}catch(r){if(r instanceof Error){let a;Error.captureStackTrace?Error.captureStackTrace(a={}):a=new Error;const o=a.stack?a.stack.replace(/^.+\n/,""):"";r.stack?o&&!String(r.stack).endsWith(o.replace(/^.+\n.+\n/,""))&&(r.stack+=` -`+o):r.stack=o}throw r}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=bc(this.defaults,n);const{transitional:r,paramsSerializer:a,headers:o}=n;r!==void 0&&W1.assertOptions(r,{silentJSONParsing:Mo.transitional(Mo.boolean),forcedJSONParsing:Mo.transitional(Mo.boolean),clarifyTimeoutError:Mo.transitional(Mo.boolean)},!1),a!=null&&(J.isFunction(a)?n.paramsSerializer={serialize:a}:W1.assertOptions(a,{encode:Mo.function,serialize:Mo.function},!0)),n.method=(n.method||this.defaults.method||"get").toLowerCase();let i=o&&J.merge(o.common,o[n.method]);o&&J.forEach(["delete","get","head","post","put","patch","common"],b=>{delete o[b]}),n.headers=fo.concat(i,o);const s=[];let l=!0;this.interceptors.request.forEach(function(y){typeof y.runWhen=="function"&&y.runWhen(n)===!1||(l=l&&y.synchronous,s.unshift(y.fulfilled,y.rejected))});const c=[];this.interceptors.response.forEach(function(y){c.push(y.fulfilled,y.rejected)});let u,d=0,g;if(!l){const b=[s2.bind(this),void 0];for(b.unshift.apply(b,s),b.push.apply(b,c),g=b.length,u=Promise.resolve(n);d{if(!r._listeners)return;let o=r._listeners.length;for(;o-- >0;)r._listeners[o](a);r._listeners=null}),this.promise.then=a=>{let o;const i=new Promise(s=>{r.subscribe(s),o=s}).then(a);return i.cancel=function(){r.unsubscribe(o)},i},t(function(o,i,s){r.reason||(r.reason=new of(o,i,s),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}static source(){let t;return{token:new p_(function(a){t=a}),cancel:t}}}const wZ=p_;function EZ(e){return function(n){return e.apply(null,n)}}function xZ(e){return J.isObject(e)&&e.isAxiosError===!0}const K1={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(K1).forEach(([e,t])=>{K1[t]=e});const kZ=K1;function f6(e){const t=new Vp(e),n=GF(Vp.prototype.request,t);return J.extend(n,Vp.prototype,t,{allOwnKeys:!0}),J.extend(n,t,null,{allOwnKeys:!0}),n.create=function(a){return f6(bc(e,a))},n}const rn=f6(d_);rn.Axios=Vp;rn.CanceledError=of;rn.CancelToken=wZ;rn.isCancel=l6;rn.VERSION=d6;rn.toFormData=Km;rn.AxiosError=st;rn.Cancel=rn.CanceledError;rn.all=function(t){return Promise.all(t)};rn.spread=EZ;rn.isAxiosError=xZ;rn.mergeConfig=bc;rn.AxiosHeaders=fo;rn.formToJSON=e=>s6(J.isHTMLForm(e)?new FormData(e):e);rn.getAdapter=u6.getAdapter;rn.HttpStatusCode=kZ;rn.default=rn;const p6=rn,CZ={baseURL:sY,headers:{"Content-Type":"application/json","Cache-Control":"no-cache"}},cl=p6.create(CZ),_Z=()=>cl,AZ=({children:e})=>{const[t,n]=p.useState(!1),r=Mi(),a=qF();return p.useEffect(()=>{const o=s=>s,i=s=>Promise.reject(s);cl.interceptors.response.use(o,i)},[r,cl]),p.useEffect(()=>{const o=s=>(s.headers.Authorization=a||"",s),i=cl.interceptors.request.use(o);return()=>{cl.interceptors.request.eject(i)}},[a,cl]),p.useEffect(()=>{t||setTimeout(()=>n(!0),10)},[t]),t?e:f.jsx("div",{className:"sr-only",children:"Re-authenticating..."})},TZ="ToolsServiceListTools",g_=({userId:e}={},t)=>[TZ,...t??[{userId:e}]],RZ="SourcesServiceListSources",sf=({userId:e}={},t)=>[RZ,...t??[{userId:e}]],NZ="AgentsServiceListAgents",g6=({userId:e}={},t)=>[NZ,...t??[{userId:e}]],IZ="AgentsServiceGetAgent",$s=({agentId:e,userId:t},n)=>[IZ,...n??[{agentId:e,userId:t}]],OZ="AgentsServiceGetAgentSources",m6=({agentId:e},t)=>[OZ,...t??[{agentId:e}]],DZ="AgentsServiceListAgentArchivalMemory",h6=({after:e,agentId:t,before:n,limit:r,userId:a},o)=>[DZ,...o??[{after:e,agentId:t,before:n,limit:r,userId:a}]],LZ="AgentsServiceListAgentMessages",MZ=({agentId:e,assistantMessageFunctionKwarg:t,assistantMessageFunctionName:n,before:r,limit:a,msgObject:o,useAssistantMessage:i,userId:s},l)=>[LZ,...l??[{agentId:e,assistantMessageFunctionKwarg:t,assistantMessageFunctionName:n,before:r,limit:a,msgObject:o,useAssistantMessage:i,userId:s}]],PZ="ModelsServiceListModels",$Z=e=>[PZ,...e??[]],FZ="LlmsServiceListEmbeddingModels",jZ=e=>[FZ,...e??[]],zZ="BlocksServiceListMemoryBlocks",lf=({label:e,name:t,templatesOnly:n,userId:r}={},a)=>[zZ,...a??[{label:e,name:t,templatesOnly:n,userId:r}]],UZ="JobsServiceListJobs",BZ=({sourceId:e,userId:t}={},n)=>[UZ,...n??[{sourceId:e,userId:t}]],HZ="JobsServiceListActiveJobs",b6=({userId:e}={},t)=>[HZ,...t??[{userId:e}]];class u2{constructor(){this._fns=[]}eject(t){const n=this._fns.indexOf(t);n!==-1&&(this._fns=[...this._fns.slice(0,n),...this._fns.slice(n+1)])}use(t){this._fns=[...this._fns,t]}}const Ie={CREDENTIALS:"include",ENCODE_PATH:void 0,HEADERS:void 0,PASSWORD:void 0,TOKEN:void 0,USERNAME:void 0,VERSION:"1.0.0",WITH_CREDENTIALS:!1,interceptors:{request:new u2,response:new u2},BASE:""};class d2 extends Error{constructor(t,n,r){super(r),this.name="ApiError",this.url=n.url,this.status=n.status,this.statusText=n.statusText,this.body=n.body,this.request=t}}class VZ extends Error{constructor(t){super(t),this.name="CancelError"}get isCancelled(){return!0}}class qZ{constructor(t){this._isResolved=!1,this._isRejected=!1,this._isCancelled=!1,this.cancelHandlers=[],this.promise=new Promise((n,r)=>{this._resolve=n,this._reject=r;const a=s=>{this._isResolved||this._isRejected||this._isCancelled||(this._isResolved=!0,this._resolve&&this._resolve(s))},o=s=>{this._isResolved||this._isRejected||this._isCancelled||(this._isRejected=!0,this._reject&&this._reject(s))},i=s=>{this._isResolved||this._isRejected||this._isCancelled||this.cancelHandlers.push(s)};return Object.defineProperty(i,"isResolved",{get:()=>this._isResolved}),Object.defineProperty(i,"isRejected",{get:()=>this._isRejected}),Object.defineProperty(i,"isCancelled",{get:()=>this._isCancelled}),t(a,o,i)})}get[Symbol.toStringTag](){return"Cancellable Promise"}then(t,n){return this.promise.then(t,n)}catch(t){return this.promise.catch(t)}finally(t){return this.promise.finally(t)}cancel(){if(!(this._isResolved||this._isRejected||this._isCancelled)){if(this._isCancelled=!0,this.cancelHandlers.length)try{for(const t of this.cancelHandlers)t()}catch(t){console.warn("Cancellation threw an error",t);return}this.cancelHandlers.length=0,this._reject&&this._reject(new VZ("Request aborted"))}}get isCancelled(){return this._isCancelled}}const Zm=e=>typeof e=="string",Nb=e=>Zm(e)&&e!=="",y6=e=>e instanceof Blob,GZ=e=>e instanceof FormData,f2=e=>e>=200&&e<300,WZ=e=>{try{return btoa(e)}catch{return Buffer.from(e).toString("base64")}},KZ=e=>{const t=[],n=(a,o)=>{t.push(`${encodeURIComponent(a)}=${encodeURIComponent(String(o))}`)},r=(a,o)=>{o!=null&&(o instanceof Date?n(a,o.toISOString()):Array.isArray(o)?o.forEach(i=>r(a,i)):typeof o=="object"?Object.entries(o).forEach(([i,s])=>r(`${a}[${i}]`,s)):n(a,o))};return Object.entries(e).forEach(([a,o])=>r(a,o)),t.length?`?${t.join("&")}`:""},YZ=(e,t)=>{const n=e.ENCODE_PATH||encodeURI,r=t.url.replace("{api-version}",e.VERSION).replace(/{(.*?)}/g,(o,i)=>{var s;return(s=t.path)!=null&&s.hasOwnProperty(i)?n(String(t.path[i])):o}),a=e.BASE+r;return t.query?a+KZ(t.query):a},ZZ=e=>{if(e.formData){const t=new FormData,n=(r,a)=>{Zm(a)||y6(a)?t.append(r,a):t.append(r,JSON.stringify(a))};return Object.entries(e.formData).filter(([,r])=>r!=null).forEach(([r,a])=>{Array.isArray(a)?a.forEach(o=>n(r,o)):n(r,a)}),t}},Yf=async(e,t)=>typeof t=="function"?t(e):t,XZ=async(e,t)=>{const[n,r,a,o]=await Promise.all([Yf(t,e.TOKEN),Yf(t,e.USERNAME),Yf(t,e.PASSWORD),Yf(t,e.HEADERS)]),i=Object.entries({Accept:"application/json",...o,...t.headers}).filter(([,s])=>s!=null).reduce((s,[l,c])=>({...s,[l]:String(c)}),{});if(Nb(n)&&(i.Authorization=`Bearer ${n}`),Nb(r)&&Nb(a)){const s=WZ(`${r}:${a}`);i.Authorization=`Basic ${s}`}return t.body!==void 0?t.mediaType?i["Content-Type"]=t.mediaType:y6(t.body)?i["Content-Type"]=t.body.type||"application/octet-stream":Zm(t.body)?i["Content-Type"]="text/plain":GZ(t.body)||(i["Content-Type"]="application/json"):t.formData!==void 0&&t.mediaType&&(i["Content-Type"]=t.mediaType),i},QZ=e=>{if(e.body)return e.body},JZ=async(e,t,n,r,a,o,i,s)=>{const l=new AbortController;let c={data:r??a,headers:o,method:t.method,signal:l.signal,url:n,withCredentials:e.WITH_CREDENTIALS};i(()=>l.abort());for(const u of e.interceptors.request._fns)c=await u(c);try{return await s.request(c)}catch(u){const d=u;if(d.response)return d.response;throw u}},eX=(e,t)=>{if(t){const n=e.headers[t];if(Zm(n))return n}},tX=e=>{if(e.status!==204)return e.data},nX=(e,t)=>{const r={400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Payload Too Large",414:"URI Too Long",415:"Unsupported Media Type",416:"Range Not Satisfiable",417:"Expectation Failed",418:"Im a teapot",421:"Misdirected Request",422:"Unprocessable Content",423:"Locked",424:"Failed Dependency",425:"Too Early",426:"Upgrade Required",428:"Precondition Required",429:"Too Many Requests",431:"Request Header Fields Too Large",451:"Unavailable For Legal Reasons",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",508:"Loop Detected",510:"Not Extended",511:"Network Authentication Required",...e.errors}[t.status];if(r)throw new d2(e,t,r);if(!t.ok){const a=t.status??"unknown",o=t.statusText??"unknown",i=(()=>{try{return JSON.stringify(t.body,null,2)}catch{return}})();throw new d2(e,t,`Generic Error: status: ${a}; status text: ${o}; body: ${i}`)}},Pe=(e,t,n=p6)=>new qZ(async(r,a,o)=>{try{const i=YZ(e,t),s=ZZ(t),l=QZ(t),c=await XZ(e,t);if(!o.isCancelled){let u=await JZ(e,t,i,l,s,c,o,n);for(const y of e.interceptors.response._fns)u=await y(u);const d=tX(u),g=eX(u,t.responseHeader);let m=d;t.responseTransformer&&f2(u.status)&&(m=await t.responseTransformer(d));const b={url:i,ok:f2(u.status),status:u.status,statusText:u.statusText,body:g??m};nX(t,b),r(b.body)}}catch(i){a(i)}});class m_{static deleteTool(t,n){return Pe(Ie,{method:"DELETE",url:"/v1/tools/{tool_id}",path:{tool_id:t.toolId},errors:{422:"Validation Error"},headers:n})}static getTool(t,n){return Pe(Ie,{method:"GET",url:"/v1/tools/{tool_id}",path:{tool_id:t.toolId},errors:{422:"Validation Error"},headers:n})}static updateTool(t,n){return Pe(Ie,{method:"PATCH",url:"/v1/tools/{tool_id}",path:{tool_id:t.toolId},body:t.requestBody,mediaType:"application/json",errors:{422:"Validation Error"},headers:n})}static getToolIdByName(t,n){return Pe(Ie,{method:"GET",url:"/v1/tools/name/{tool_name}",path:{tool_name:t.toolName},errors:{422:"Validation Error"},headers:n})}static listTools(t={},n){return Pe(Ie,{method:"GET",url:"/v1/tools/",errors:{422:"Validation Error"},headers:n})}static createTool(t,n){return Pe(Ie,{method:"POST",url:"/v1/tools/",query:{update:t.update},body:t.requestBody,mediaType:"application/json",errors:{422:"Validation Error"},headers:n})}}class Pc{static getSource(t,n){return Pe(Ie,{method:"GET",url:"/v1/sources/{source_id}",path:{source_id:t.sourceId},errors:{422:"Validation Error"},headers:n})}static updateSource(t,n){return Pe(Ie,{method:"PATCH",url:"/v1/sources/{source_id}",path:{source_id:t.sourceId},body:t.requestBody,mediaType:"application/json",errors:{422:"Validation Error"},headers:n})}static deleteSource(t,n){return Pe(Ie,{method:"DELETE",url:"/v1/sources/{source_id}",path:{source_id:t.sourceId},errors:{422:"Validation Error"},headers:n})}static getSourceIdByName(t,n){return Pe(Ie,{method:"GET",url:"/v1/sources/name/{source_name}",path:{source_name:t.sourceName},errors:{422:"Validation Error"},headers:n})}static listSources(t={},n){return Pe(Ie,{method:"GET",url:"/v1/sources/",errors:{422:"Validation Error"},headers:n})}static createSource(t,n){return Pe(Ie,{method:"POST",url:"/v1/sources/",body:t.requestBody,mediaType:"application/json",errors:{422:"Validation Error"},headers:n})}static attachAgentToSource(t,n){return Pe(Ie,{method:"POST",url:"/v1/sources/{source_id}/attach",path:{source_id:t.sourceId},query:{agent_id:t.agentId},errors:{422:"Validation Error"},headers:n})}static detachAgentFromSource(t,n){return Pe(Ie,{method:"POST",url:"/v1/sources/{source_id}/detach",path:{source_id:t.sourceId},query:{agent_id:t.agentId},errors:{422:"Validation Error"},headers:n})}static uploadFileToSource(t,n){return Pe(Ie,{method:"POST",url:"/v1/sources/{source_id}/upload",path:{source_id:t.sourceId},formData:t.formData,mediaType:"multipart/form-data",errors:{422:"Validation Error"},headers:n})}static listSourcePassages(t,n){return Pe(Ie,{method:"GET",url:"/v1/sources/{source_id}/passages",path:{source_id:t.sourceId},errors:{422:"Validation Error"},headers:n})}static listFilesFromSource(t,n){return Pe(Ie,{method:"GET",url:"/v1/sources/{source_id}/files",path:{source_id:t.sourceId},query:{limit:t.limit,cursor:t.cursor},errors:{422:"Validation Error"},headers:n})}}class Va{static listAgents(t={},n){return Pe(Ie,{method:"GET",url:"/v1/agents/",errors:{422:"Validation Error"},headers:n})}static createAgent(t,n){return Pe(Ie,{method:"POST",url:"/v1/agents/",body:t.requestBody,mediaType:"application/json",errors:{422:"Validation Error"},headers:n})}static updateAgent(t,n){return Pe(Ie,{method:"PATCH",url:"/v1/agents/{agent_id}",path:{agent_id:t.agentId},body:t.requestBody,mediaType:"application/json",errors:{422:"Validation Error"},headers:n})}static getAgent(t,n){return Pe(Ie,{method:"GET",url:"/v1/agents/{agent_id}",path:{agent_id:t.agentId},errors:{422:"Validation Error"},headers:n})}static deleteAgent(t,n){return Pe(Ie,{method:"DELETE",url:"/v1/agents/{agent_id}",path:{agent_id:t.agentId},errors:{422:"Validation Error"},headers:n})}static getAgentSources(t,n){return Pe(Ie,{method:"GET",url:"/v1/agents/{agent_id}/sources",path:{agent_id:t.agentId},errors:{422:"Validation Error"},headers:n})}static listAgentInContextMessages(t,n){return Pe(Ie,{method:"GET",url:"/v1/agents/{agent_id}/memory/messages",path:{agent_id:t.agentId},errors:{422:"Validation Error"},headers:n})}static getAgentMemory(t,n){return Pe(Ie,{method:"GET",url:"/v1/agents/{agent_id}/memory",path:{agent_id:t.agentId},errors:{422:"Validation Error"},headers:n})}static updateAgentMemory(t,n){return Pe(Ie,{method:"PATCH",url:"/v1/agents/{agent_id}/memory",path:{agent_id:t.agentId},body:t.requestBody,mediaType:"application/json",errors:{422:"Validation Error"},headers:n})}static getAgentRecallMemorySummary(t,n){return Pe(Ie,{method:"GET",url:"/v1/agents/{agent_id}/memory/recall",path:{agent_id:t.agentId},errors:{422:"Validation Error"},headers:n})}static getAgentArchivalMemorySummary(t,n){return Pe(Ie,{method:"GET",url:"/v1/agents/{agent_id}/memory/archival",path:{agent_id:t.agentId},errors:{422:"Validation Error"},headers:n})}static listAgentArchivalMemory(t,n){return Pe(Ie,{method:"GET",url:"/v1/agents/{agent_id}/archival",path:{agent_id:t.agentId},query:{after:t.after,before:t.before,limit:t.limit},errors:{422:"Validation Error"},headers:n})}static createAgentArchivalMemory(t,n){return Pe(Ie,{method:"POST",url:"/v1/agents/{agent_id}/archival",path:{agent_id:t.agentId},body:t.requestBody,mediaType:"application/json",errors:{422:"Validation Error"},headers:n})}static deleteAgentArchivalMemory(t,n){return Pe(Ie,{method:"DELETE",url:"/v1/agents/{agent_id}/archival/{memory_id}",path:{agent_id:t.agentId,memory_id:t.memoryId},errors:{422:"Validation Error"},headers:n})}static listAgentMessages(t,n){return Pe(Ie,{method:"GET",url:"/v1/agents/{agent_id}/messages",path:{agent_id:t.agentId},query:{before:t.before,limit:t.limit,msg_object:t.msgObject,use_assistant_message:t.useAssistantMessage,assistant_message_function_name:t.assistantMessageFunctionName,assistant_message_function_kwarg:t.assistantMessageFunctionKwarg},errors:{422:"Validation Error"},headers:n})}static createAgentMessage(t,n){return Pe(Ie,{method:"POST",url:"/v1/agents/{agent_id}/messages",path:{agent_id:t.agentId},body:t.requestBody,mediaType:"application/json",errors:{422:"Validation Error"},headers:n})}static updateAgentMessage(t,n){return Pe(Ie,{method:"PATCH",url:"/v1/agents/{agent_id}/messages/{message_id}",path:{agent_id:t.agentId,message_id:t.messageId},body:t.requestBody,mediaType:"application/json",errors:{422:"Validation Error"},headers:n})}}class rX{static listModels(t){return Pe(Ie,{method:"GET",url:"/v1/models/",headers:t})}static listEmbeddingModels(t){return Pe(Ie,{method:"GET",url:"/v1/models/embedding",headers:t})}}class aX{static listModels(t){return Pe(Ie,{method:"GET",url:"/v1/models/",headers:t})}static listEmbeddingModels(t){return Pe(Ie,{method:"GET",url:"/v1/models/embedding",headers:t})}}class h_{static listMemoryBlocks(t={},n){return Pe(Ie,{method:"GET",url:"/v1/blocks/",query:{label:t.label,templates_only:t.templatesOnly,name:t.name},errors:{422:"Validation Error"},headers:n})}static createMemoryBlock(t,n){return Pe(Ie,{method:"POST",url:"/v1/blocks/",body:t.requestBody,mediaType:"application/json",errors:{422:"Validation Error"},headers:n})}static updateMemoryBlock(t,n){return Pe(Ie,{method:"PATCH",url:"/v1/blocks/{block_id}",path:{block_id:t.blockId},body:t.requestBody,mediaType:"application/json",errors:{422:"Validation Error"},headers:n})}static deleteMemoryBlock(t,n){return Pe(Ie,{method:"DELETE",url:"/v1/blocks/{block_id}",path:{block_id:t.blockId},errors:{422:"Validation Error"},headers:n})}static getMemoryBlock(t,n){return Pe(Ie,{method:"GET",url:"/v1/blocks/{block_id}",path:{block_id:t.blockId},errors:{422:"Validation Error"},headers:n})}}class oX{static listJobs(t={},n){return Pe(Ie,{method:"GET",url:"/v1/jobs/",query:{source_id:t.sourceId},errors:{422:"Validation Error"},headers:n})}static listActiveJobs(t={},n){return Pe(Ie,{method:"GET",url:"/v1/jobs/active",errors:{422:"Validation Error"},headers:n})}static getJob(t,n){return Pe(Ie,{method:"GET",url:"/v1/jobs/{job_id}",path:{job_id:t.jobId},errors:{422:"Validation Error"},headers:n})}static deleteJob(t,n){return Pe(Ie,{method:"DELETE",url:"/v1/jobs/{job_id}",path:{job_id:t.jobId},errors:{422:"Validation Error"},headers:n})}}const Xm=({userId:e}={},t,n)=>Jr({queryKey:g_({userId:e},t),queryFn:()=>m_.listTools({userId:e}),...n}),b_=({userId:e}={},t,n)=>Jr({queryKey:sf({userId:e},t),queryFn:()=>Pc.listSources({userId:e}),...n}),Qm=({userId:e}={},t,n)=>Jr({queryKey:g6({userId:e},t),queryFn:()=>Va.listAgents({userId:e}),...n}),y_=({agentId:e,userId:t},n,r)=>Jr({queryKey:$s({agentId:e,userId:t},n),queryFn:()=>Va.getAgent({agentId:e,userId:t}),...r}),v6=({agentId:e},t,n)=>Jr({queryKey:m6({agentId:e},t),queryFn:()=>Va.getAgentSources({agentId:e}),...n}),S6=({after:e,agentId:t,before:n,limit:r,userId:a},o,i)=>Jr({queryKey:h6({after:e,agentId:t,before:n,limit:r,userId:a},o),queryFn:()=>Va.listAgentArchivalMemory({after:e,agentId:t,before:n,limit:r,userId:a}),...i}),iX=({agentId:e,assistantMessageFunctionKwarg:t,assistantMessageFunctionName:n,before:r,limit:a,msgObject:o,useAssistantMessage:i,userId:s},l,c)=>Jr({queryKey:MZ({agentId:e,assistantMessageFunctionKwarg:t,assistantMessageFunctionName:n,before:r,limit:a,msgObject:o,useAssistantMessage:i,userId:s},l),queryFn:()=>Va.listAgentMessages({agentId:e,assistantMessageFunctionKwarg:t,assistantMessageFunctionName:n,before:r,limit:a,msgObject:o,useAssistantMessage:i,userId:s}),...c}),w6=(e,t)=>Jr({queryKey:$Z(e),queryFn:()=>rX.listModels(),...t}),E6=(e,t)=>Jr({queryKey:jZ(e),queryFn:()=>aX.listEmbeddingModels(),...t}),Ng=({label:e,name:t,templatesOnly:n,userId:r}={},a,o)=>Jr({queryKey:lf({label:e,name:t,templatesOnly:n,userId:r},a),queryFn:()=>h_.listMemoryBlocks({label:e,name:t,templatesOnly:n,userId:r}),...o}),sX=({userId:e}={},t,n)=>Jr({queryKey:b6({userId:e},t),queryFn:()=>oX.listActiveJobs({userId:e}),...n}),lX=e=>gr({mutationFn:({requestBody:t,update:n,userId:r})=>m_.createTool({requestBody:t,update:n,userId:r}),...e}),cX=e=>gr({mutationFn:({requestBody:t,userId:n})=>Pc.createSource({requestBody:t,userId:n}),...e}),x6=e=>gr({mutationFn:({agentId:t,sourceId:n,userId:r})=>Pc.attachAgentToSource({agentId:t,sourceId:n,userId:r}),...e}),k6=e=>gr({mutationFn:({agentId:t,sourceId:n,userId:r})=>Pc.detachAgentFromSource({agentId:t,sourceId:n,userId:r}),...e}),C6=e=>gr({mutationFn:({formData:t,sourceId:n,userId:r})=>Pc.uploadFileToSource({formData:t,sourceId:n,userId:r}),...e}),uX=e=>gr({mutationFn:({requestBody:t,userId:n})=>Va.createAgent({requestBody:t,userId:n}),...e}),dX=e=>gr({mutationFn:({agentId:t,requestBody:n,userId:r})=>Va.createAgentArchivalMemory({agentId:t,requestBody:n,userId:r}),...e}),_6=e=>gr({mutationFn:({requestBody:t,userId:n})=>h_.createMemoryBlock({requestBody:t,userId:n}),...e}),fX=e=>gr({mutationFn:({requestBody:t,toolId:n,userId:r})=>m_.updateTool({requestBody:t,toolId:n,userId:r}),...e}),pX=e=>gr({mutationFn:({requestBody:t,sourceId:n,userId:r})=>Pc.updateSource({requestBody:t,sourceId:n,userId:r}),...e}),cf=e=>gr({mutationFn:({agentId:t,requestBody:n,userId:r})=>Va.updateAgent({agentId:t,requestBody:n,userId:r}),...e}),v_=e=>gr({mutationFn:({blockId:t,requestBody:n})=>h_.updateMemoryBlock({blockId:t,requestBody:n}),...e}),gX=e=>gr({mutationFn:({agentId:t,userId:n})=>Va.deleteAgent({agentId:t,userId:n}),...e}),mX=e=>gr({mutationFn:({agentId:t,memoryId:n,userId:r})=>Va.deleteAgentArchivalMemory({agentId:t,memoryId:n,userId:r}),...e});Ie.BASE="";Ie.HEADERS={"Content-Type":"application/json","Cache-Control":"no-cache"};const hX=({children:e})=>{const[t,n]=p.useState(!1),r=qF(),a=Mi();return p.useEffect(()=>{const o=i=>i;return Ie.interceptors.response.use(o),()=>{Ie.interceptors.response.eject(o)}},[a]),p.useEffect(()=>{const o=i=>(i.headers={...i.headers,Authorization:"Bearer password"},i);return Ie.interceptors.request.use(o),()=>{Ie.interceptors.request.eject(o)}},[r]),p.useEffect(()=>{t||setTimeout(()=>n(!0),10)},[t]),t?e:f.jsx("div",{className:"sr-only",children:"Re-authenticating..."})},yc=ef("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",xs:"text-xs h-7 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10",iconSm:"h-9 w-9",iconXs:"h-7 w-7"}},defaultVariants:{variant:"default",size:"default"}});function p2({isBusy:e,icon:t}){return e?f.jsx(un,{className:"h-4 w-4 animate-spin"}):t||null}const ue=p.forwardRef(({className:e,children:t,label:n,isBusy:r,icon:a,iconPosition:o="left",disabled:i,variant:s,size:l,asChild:c=!1,...u},d)=>{const g=c?$a:"button",m=p.useMemo(()=>i||r,[i,r]),b=p.useMemo(()=>a||o?"flex items-center gap-1":"",[a,o]);return f.jsxs(g,{className:ee(b,yc({variant:s,size:l,className:e})),disabled:m,ref:d,...u,children:[o==="left"&&f.jsx(p2,{isBusy:r??!1,icon:a??null}),f.jsx(Rm,{children:t}),o==="right"&&f.jsx(p2,{isBusy:r??!1,icon:a??null})]})});ue.displayName="Button";const Fs=({children:e,className:t})=>f.jsx("div",{className:ee("h-full w-full overflow-auto",t),children:e});function Zf({children:e,className:t}){return f.jsx("div",{className:ee("flex justify-center text-muted-foreground",t),children:e})}function bX(e){return f.jsxs("svg",{viewBox:"0 0 20 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:[f.jsx("path",{d:"M5.21875 8.90625H3.84375C3.46875 8.90625 3.125 9.21875 3.125 9.625C3.125 10.0313 3.4375 10.3437 3.84375 10.3437H5.21875C5.59375 10.3437 5.9375 10.0313 5.9375 9.625C5.9375 9.21875 5.59375 8.90625 5.21875 8.90625Z",fill:"currentColor"}),f.jsx("path",{d:"M12.875 8.90625H11.5C11.125 8.90625 10.7812 9.21875 10.7812 9.625C10.7812 10.0313 11.0937 10.3437 11.5 10.3437H12.875C13.25 10.3437 13.5938 10.0313 13.5938 9.625C13.5938 9.21875 13.25 8.90625 12.875 8.90625Z",fill:"currentColor"}),f.jsx("path",{d:"M17.7187 8.09375V3.9375C18.5 3.65625 19.0312 2.90625 19.0312 2.0625C19.0312 0.9375 18.125 0.03125 17 0.03125C15.875 0.03125 14.9687 0.9375 14.9687 2.0625C14.9687 2.9375 15.5312 3.65625 16.2812 3.9375V8.0625H15.9375V7.84375C15.9375 6.59375 14.9062 5.5625 13.6562 5.5625H11.875V4.875C11.875 3.84375 11.0312 3.03125 10.0312 3.03125H9.0625V0.96875C9.0625 0.59375 8.75 0.25 8.34375 0.25C7.9375 0.25 7.625 0.5625 7.625 0.96875V3.03125H6.625C5.59375 3.03125 4.78125 3.875 4.78125 4.875V5.5625H2.8125C1.5625 5.5625 0.53125 6.59375 0.53125 7.84375V13.6875C0.53125 14.9375 1.5625 15.9688 2.8125 15.9688H13.6875C14.9375 15.9688 15.9687 14.9375 15.9687 13.6875V13.4688H17.625C18.6562 13.4688 19.4687 12.625 19.4687 11.625V9.96875C19.4687 8.9375 18.6875 8.15625 17.7187 8.09375ZM17 1.4375C17.3437 1.4375 17.625 1.71875 17.625 2.0625C17.625 2.40625 17.3437 2.6875 17 2.6875C16.6562 2.6875 16.375 2.40625 16.375 2.0625C16.375 1.71875 16.6562 1.4375 17 1.4375ZM6.21875 4.875C6.21875 4.625 6.40625 4.4375 6.65625 4.4375H10.0312C10.2812 4.4375 10.4687 4.625 10.4687 4.875V5.5625H6.21875V4.875ZM14.5312 13.6875C14.5312 14.1562 14.1562 14.5625 13.6562 14.5625H2.8125C2.34375 14.5625 1.9375 14.1875 1.9375 13.6875V7.84375C1.9375 7.375 2.3125 6.96875 2.8125 6.96875H13.6875C14.1562 6.96875 14.5625 7.34375 14.5625 7.84375V13.6875H14.5312ZM18.0625 11.5938C18.0625 11.8438 17.875 12.0312 17.625 12.0312H15.9375V9.46875H17.5937C17.8437 9.46875 18.0312 9.65625 18.0312 9.90625V11.5938H18.0625Z",fill:"currentColor"}),f.jsx("path",{d:"M9.5 11.125C9.125 11.125 8.78125 11.4375 8.78125 11.8437C8.78125 12.0937 8.59375 12.2813 8.34375 12.2813C8.09375 12.2813 7.90625 12.0937 7.90625 11.8437C7.90625 11.4687 7.59375 11.125 7.1875 11.125C6.78125 11.125 6.46875 11.4375 6.46875 11.8437C6.46875 12.875 7.3125 13.6875 8.3125 13.6875C9.3125 13.6875 10.1562 12.8437 10.1562 11.8437C10.1875 11.4375 9.875 11.125 9.5 11.125Z",fill:"currentColor"})]})}function yX(e){return f.jsx("svg",{viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:f.jsx("path",{d:"M8.00039 11.3998C7.85039 11.3998 7.72539 11.3498 7.60039 11.2498L1.85039 5.5998C1.62539 5.3748 1.62539 5.0248 1.85039 4.7998C2.07539 4.5748 2.42539 4.5748 2.65039 4.7998L8.00039 10.0248L13.3504 4.7498C13.5754 4.5248 13.9254 4.5248 14.1504 4.7498C14.3754 4.9748 14.3754 5.3248 14.1504 5.5498L8.40039 11.1998C8.27539 11.3248 8.15039 11.3998 8.00039 11.3998Z",fill:"currentColor"})})}function vX(e){return f.jsx("svg",{viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:f.jsx("path",{d:"M13.7504 11.4002C13.6004 11.4002 13.4754 11.3502 13.3504 11.2502L8.00039 5.9752L2.65039 11.2252C2.42539 11.4502 2.07539 11.4502 1.85039 11.2252C1.62539 11.0002 1.62539 10.6502 1.85039 10.4252L7.60039 4.7752C7.82539 4.5502 8.17539 4.5502 8.40039 4.7752L14.1504 10.4252C14.3754 10.6502 14.3754 11.0002 14.1504 11.2252C14.0504 11.3252 13.9004 11.4002 13.7504 11.4002Z",fill:"currentColor"})})}function SX(e){return f.jsxs("svg",{viewBox:"0 0 20 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:[f.jsx("path",{d:"M10 9.5C12.5938 9.5 14.6875 7.40625 14.6875 4.8125C14.6875 2.21875 12.5938 0.125 10 0.125C7.40625 0.125 5.3125 2.21875 5.3125 4.8125C5.3125 7.40625 7.40625 9.5 10 9.5ZM10 1.53125C11.8125 1.53125 13.2812 3 13.2812 4.8125C13.2812 6.625 11.8125 8.09375 10 8.09375C8.1875 8.09375 6.71875 6.625 6.71875 4.8125C6.71875 3 8.1875 1.53125 10 1.53125Z",fill:"currentColor"}),f.jsx("path",{d:"M19.2191 14.625C16.6566 12.4688 13.4066 11.2812 10.0004 11.2812C6.59412 11.2812 3.34412 12.4688 0.781616 14.625C0.500366 14.875 0.437866 15.3125 0.687866 15.625C0.937866 15.9063 1.37537 15.9688 1.68787 15.7188C4.00037 13.75 6.93787 12.6875 10.0004 12.6875C13.0629 12.6875 16.0004 13.75 18.2816 15.6875C18.4066 15.8125 18.5629 15.8438 18.7504 15.8438C18.9379 15.8438 19.1566 15.75 19.2816 15.5938C19.5316 15.3125 19.5004 14.875 19.2191 14.625Z",fill:"currentColor"})]})}function wX(e){return f.jsxs("svg",{viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:[f.jsx("path",{d:"M17.875 2.9375H11C10.625 2.9375 10.2812 3.0625 10 3.25C9.71875 3.0625 9.375 2.9375 9 2.9375H2.125C1.25 2.9375 0.5625 3.65625 0.5625 4.5V14.6875C0.5625 15.5625 1.28125 16.25 2.125 16.25H9.3125V16.3437C9.3125 16.7187 9.625 17.0625 10.0312 17.0625C10.4062 17.0625 10.75 16.75 10.75 16.3437V16.25H17.9375C18.8125 16.25 19.5 15.5312 19.5 14.6875V4.5C19.4688 3.625 18.75 2.9375 17.875 2.9375ZM2.125 14.875C2.03125 14.875 1.96875 14.8125 1.96875 14.7187V4.5C1.96875 4.40625 2.03125 4.34375 2.125 4.34375H9.03125C9.1875 4.34375 9.3125 4.46875 9.3125 4.625V14.875H2.125ZM18.0625 14.6875C18.0625 14.7812 18 14.8437 17.9062 14.8437H10.7188V4.625C10.7188 4.46875 10.8438 4.34375 11 4.34375H17.9062C18 4.34375 18.0625 4.40625 18.0625 4.5V14.6875Z",fill:"currentColor"}),f.jsx("path",{d:"M4.46875 7.40625H6.78125C7.15625 7.40625 7.5 7.09375 7.5 6.6875C7.5 6.28125 7.1875 5.96875 6.78125 5.96875H4.46875C4.09375 5.96875 3.75 6.28125 3.75 6.6875C3.75 7.09375 4.0625 7.40625 4.46875 7.40625Z",fill:"currentColor"}),f.jsx("path",{d:"M13.125 7.40625H15.4375C15.8125 7.40625 16.1562 7.09375 16.1562 6.6875C16.1562 6.28125 15.8438 5.96875 15.4375 5.96875H13.125C12.75 5.96875 12.4062 6.28125 12.4062 6.6875C12.4062 7.09375 12.75 7.40625 13.125 7.40625Z",fill:"currentColor"}),f.jsx("path",{d:"M15.5 8.5625H13.1875C12.8125 8.5625 12.4688 8.875 12.4688 9.28125C12.4688 9.6875 12.7812 10 13.1875 10H15.5C15.875 10 16.2188 9.6875 16.2188 9.28125C16.2188 8.875 15.875 8.5625 15.5 8.5625Z",fill:"currentColor"}),f.jsx("path",{d:"M6.8125 8.5625H4.5C4.125 8.5625 3.78125 8.875 3.78125 9.28125C3.78125 9.6875 4.09375 10 4.5 10H6.8125C7.1875 10 7.53125 9.6875 7.53125 9.28125C7.53125 8.875 7.21875 8.5625 6.8125 8.5625Z",fill:"currentColor"}),f.jsx("path",{d:"M6.8125 11.3125H4.5C4.125 11.3125 3.78125 11.625 3.78125 12.0312C3.78125 12.4375 4.09375 12.75 4.5 12.75H6.8125C7.1875 12.75 7.53125 12.4375 7.53125 12.0312C7.53125 11.625 7.21875 11.3125 6.8125 11.3125Z",fill:"currentColor"}),f.jsx("path",{d:"M15.5 11.3125H13.1875C12.8125 11.3125 12.4688 11.625 12.4688 12.0312C12.4688 12.4375 12.7812 12.75 13.1875 12.75H15.5C15.875 12.75 16.2188 12.4375 16.2188 12.0312C16.2188 11.625 15.875 11.3125 15.5 11.3125Z",fill:"currentColor"})]})}function EX(e){return f.jsxs("svg",{viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:[f.jsx("path",{d:"M17.5625 2.28125H2.4375C1.40625 2.28125 0.5625 3.125 0.5625 4.15625V12.875C0.5625 13.9063 1.40625 14.75 2.4375 14.75H6.9375L9.4375 17.5C9.5625 17.6563 9.75 17.7188 9.96875 17.7188C10.1562 17.7188 10.3438 17.625 10.5 17.5L13.0625 14.7188H17.5938C18.625 14.7188 19.4688 13.875 19.4688 12.8438V4.15625C19.4688 3.125 18.5938 2.28125 17.5625 2.28125ZM18.0625 12.8438C18.0625 13.0938 17.8438 13.3125 17.5938 13.3125H12.7188C12.5312 13.3125 12.3438 13.4063 12.1875 13.5313L9.9375 15.9688L7.75 13.5625C7.625 13.4063 7.4375 13.3438 7.21875 13.3438H2.4375C2.1875 13.3438 1.96875 13.125 1.96875 12.875V4.15625C1.96875 3.90625 2.1875 3.6875 2.4375 3.6875H17.5625C17.8125 3.6875 18.0312 3.90625 18.0312 4.15625V12.8438H18.0625Z",fill:"currentColor"}),f.jsx("path",{d:"M5.5625 7.59375C5.15625 7.59375 4.8125 7.9375 4.8125 8.34375C4.8125 8.75 5.15625 9.09375 5.5625 9.09375C5.96875 9.09375 6.3125 8.75 6.3125 8.34375C6.3125 7.9375 6 7.59375 5.5625 7.59375Z",fill:"currentColor"}),f.jsx("path",{d:"M10 7.59375C9.59375 7.59375 9.25 7.9375 9.25 8.34375C9.25 8.75 9.59375 9.09375 10 9.09375C10.4062 9.09375 10.75 8.75 10.75 8.34375C10.75 7.9375 10.4062 7.59375 10 7.59375Z",fill:"currentColor"}),f.jsx("path",{d:"M14.4375 7.59375C14.0313 7.59375 13.6875 7.9375 13.6875 8.34375C13.6875 8.75 14.0313 9.09375 14.4375 9.09375C14.8438 9.09375 15.1875 8.75 15.1875 8.34375C15.1875 7.9375 14.8438 7.59375 14.4375 7.59375Z",fill:"currentColor"})]})}function xX(e){return f.jsx("svg",{viewBox:"0 0 14 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:f.jsx("path",{d:"M7 0.5625C3.34375 0.5625 0.46875 2.28125 0.46875 4.4375V15.5625C0.46875 17.7188 3.40625 19.4375 6.96875 19.4375C10.5625 19.4375 13.5 17.6875 13.5 15.5625V4.4375C13.5312 2.25 10.6562 0.5625 7 0.5625ZM7 1.96875C10 1.96875 12.125 3.28125 12.125 4.4375C12.125 5.625 10.0312 6.90625 7 6.90625C3.96875 6.90625 1.875 5.59375 1.875 4.4375C1.875 3.25 4 1.96875 7 1.96875ZM7 18.0625C4.0625 18.0625 1.90625 16.75 1.90625 15.5938V14.375C3.09375 15.25 4.90625 15.7813 7 15.7813C9.09375 15.7813 10.9375 15.2188 12.125 14.375V15.5938C12.125 16.75 9.9375 18.0625 7 18.0625ZM7 14.375C4 14.375 1.90625 13.125 1.90625 12V10.5625C3.125 11.4375 5.03125 11.9688 7 11.9688C9.0625 11.9688 10.9063 11.4375 12.125 10.5625V12C12.125 13.125 10 14.375 7 14.375ZM11.3125 9.40625C10.3437 10.125 8.75 10.5625 7 10.5625C5.28125 10.5625 3.65625 10.125 2.6875 9.40625C2.3125 9.15625 1.90625 8.71875 1.90625 8.1875V6.875C3.09375 7.75 4.9375 8.3125 7.03125 8.3125C9.125 8.3125 10.9688 7.75 12.1562 6.875V8.1875C12.125 8.6875 11.6875 9.125 11.3125 9.40625Z",fill:"currentColor"})})}function kX(e){return f.jsxs("svg",{viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:[f.jsx("g",{clipPath:"url(#clip0_6318_531)",children:f.jsx("path",{d:"M18.7505 13.7189L16.813 11.7814C16.0317 11.0002 14.7505 11.0002 13.9692 11.7814L13.438 12.3127L11.7192 10.5939L13.3442 8.96891L16.5317 8.12515C17.2192 7.93765 17.7817 7.37515 17.9692 6.68765L18.8755 3.3439C18.9692 2.9689 18.7505 2.5939 18.3755 2.4689C18.0005 2.37515 17.6255 2.5939 17.5005 2.9689L16.5942 6.31265C16.5317 6.5314 16.3755 6.68765 16.1567 6.75015L12.813 7.6564C12.688 7.68765 12.5942 7.75015 12.5005 7.8439L10.7505 9.59391L9.68799 8.5314L11.438 6.7814C11.5317 6.68765 11.5942 6.5939 11.6255 6.4689L12.5005 3.12515C12.563 2.9064 12.7192 2.75015 12.938 2.68765L16.2817 1.7814C16.6567 1.68765 16.8755 1.2814 16.7817 0.906405C16.688 0.531405 16.313 0.312655 15.938 0.437655L12.5942 1.31265C11.9067 1.50015 11.3442 2.06265 11.1567 2.75015L10.313 5.9064L8.68799 7.5314L7.063 5.9064C7.688 5.18765 7.7505 4.12515 7.188 3.3439L5.84425 1.56265C5.5005 1.0939 4.96925 0.812655 4.3755 0.781405C3.78175 0.750155 3.21925 0.937655 2.813 1.37515L1.53175 2.6564C1.1255 3.06265 0.906746 3.62515 0.937996 4.2189C0.969246 4.81265 1.2505 5.3439 1.71925 5.68765L3.5005 7.0314C3.84425 7.31265 4.28175 7.43765 4.71925 7.43765C5.21925 7.43765 5.688 7.25015 6.063 6.9064L7.688 8.5314L5.59425 10.6252L2.438 11.4689C1.7505 11.6564 1.188 12.2189 1.0005 12.9064L0.312996 15.5002C0.125496 16.1877 0.312996 16.9377 0.844246 17.4689L1.813 18.4377C2.188 18.8127 2.71925 19.0314 3.2505 19.0314C3.438 19.0314 3.59425 19.0002 3.78175 18.9689L6.3755 18.2814C7.063 18.0939 7.6255 17.5314 7.813 16.8439L8.65675 13.6877L10.7505 11.5939L12.4692 13.3127L11.938 13.8439C11.1567 14.6252 11.1567 15.9064 11.938 16.6877L13.8755 18.6252C14.5317 19.2814 15.3755 19.6252 16.313 19.6252C17.2505 19.6252 18.0942 19.2814 18.7505 18.6252C19.4067 17.9689 19.7505 17.1252 19.7505 16.1877C19.7505 15.2502 19.4067 14.3752 18.7505 13.7189ZM4.34425 5.87515L2.563 4.5314C2.3755 4.37515 2.34425 4.18765 2.313 4.0939C2.313 4.00015 2.313 3.7814 2.5005 3.62515L3.78175 2.3439C3.938 2.18765 4.09425 2.1564 4.21925 2.1564H4.2505C4.34425 2.1564 4.53175 2.2189 4.688 2.4064L6.03175 4.18765C6.21925 4.43765 6.188 4.75015 5.96925 4.9689L5.1255 5.81265C4.938 6.0314 4.59425 6.06265 4.34425 5.87515ZM7.53175 12.8127C7.438 12.9064 7.3755 13.0002 7.34425 13.1252L6.438 16.4689C6.3755 16.6877 6.21925 16.8439 6.0005 16.9064L3.40675 17.5939C3.188 17.6564 2.96925 17.5939 2.813 17.4377L1.84425 16.4689C1.688 16.3127 1.6255 16.0939 1.688 15.8752L2.3755 13.2814C2.438 13.0627 2.59425 12.9064 2.813 12.8439L6.15675 11.9377C6.28175 11.9064 6.3755 11.8439 6.46925 11.7502L8.71924 9.50015L9.78174 10.5627L7.53175 12.8127ZM17.7505 17.5939C17.3755 17.9689 16.8442 18.1877 16.313 18.1877C15.7817 18.1877 15.2505 17.9689 14.8755 17.5939L12.938 15.6564C12.7192 15.4377 12.7192 15.0314 12.938 14.8127L13.4692 14.2814L13.9067 14.7189C14.0317 14.8439 14.2192 14.9377 14.4067 14.9377C14.5942 14.9377 14.7817 14.8752 14.9067 14.7189C15.188 14.4377 15.188 14.0002 14.9067 13.7189L14.4692 13.2814L15.0005 12.7502C15.1255 12.6252 15.2505 12.5627 15.438 12.5627C15.5942 12.5627 15.7505 12.6252 15.8755 12.7502L17.813 14.6877C18.188 15.0627 18.4067 15.5939 18.4067 16.1252C18.4067 16.6564 18.1567 17.2189 17.7505 17.5939Z",fill:"currentColor"})}),f.jsx("defs",{children:f.jsx("clipPath",{id:"clip0_6318_531",children:f.jsx("rect",{width:"20",height:"20",fill:"white"})})})]})}/** - * table-core - * - * Copyright (c) TanStack - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */function ii(e,t){return typeof e=="function"?e(t):e}function Tr(e,t){return n=>{t.setState(r=>({...r,[e]:ii(n,r[e])}))}}function Ig(e){return e instanceof Function}function CX(e){return Array.isArray(e)&&e.every(t=>typeof t=="number")}function _X(e,t){const n=[],r=a=>{a.forEach(o=>{n.push(o);const i=t(o);i!=null&&i.length&&r(i)})};return r(e),n}function $e(e,t,n){let r=[],a;return o=>{let i;n.key&&n.debug&&(i=Date.now());const s=e(o);if(!(s.length!==r.length||s.some((u,d)=>r[d]!==u)))return a;r=s;let c;if(n.key&&n.debug&&(c=Date.now()),a=t(...s),n==null||n.onChange==null||n.onChange(a),n.key&&n.debug&&n!=null&&n.debug()){const u=Math.round((Date.now()-i)*100)/100,d=Math.round((Date.now()-c)*100)/100,g=d/16,m=(b,y)=>{for(b=String(b);b.length{var a;return(a=e==null?void 0:e.debugAll)!=null?a:e[t]},key:!1,onChange:r}}function AX(e,t,n,r){var a,o;const s={...e._getDefaultColumnDef(),...t},l=s.accessorKey;let c=(a=(o=s.id)!=null?o:l?l.replace(".","_"):void 0)!=null?a:typeof s.header=="string"?s.header:void 0,u;if(s.accessorFn?u=s.accessorFn:l&&(l.includes(".")?u=g=>{let m=g;for(const y of l.split(".")){var b;m=(b=m)==null?void 0:b[y]}return m}:u=g=>g[s.accessorKey]),!c)throw new Error;let d={id:`${String(c)}`,accessorFn:u,parent:r,depth:n,columnDef:s,columns:[],getFlatColumns:$e(()=>[!0],()=>{var g;return[d,...(g=d.columns)==null?void 0:g.flatMap(m=>m.getFlatColumns())]},Fe(e.options,"debugColumns")),getLeafColumns:$e(()=>[e._getOrderColumnsFn()],g=>{var m;if((m=d.columns)!=null&&m.length){let b=d.columns.flatMap(y=>y.getLeafColumns());return g(b)}return[d]},Fe(e.options,"debugColumns"))};for(const g of e._features)g.createColumn==null||g.createColumn(d,e);return d}const In="debugHeaders";function g2(e,t,n){var r;let o={id:(r=n.id)!=null?r:t.id,column:t,index:n.index,isPlaceholder:!!n.isPlaceholder,placeholderId:n.placeholderId,depth:n.depth,subHeaders:[],colSpan:0,rowSpan:0,headerGroup:null,getLeafHeaders:()=>{const i=[],s=l=>{l.subHeaders&&l.subHeaders.length&&l.subHeaders.map(s),i.push(l)};return s(o),i},getContext:()=>({table:e,header:o,column:t})};return e._features.forEach(i=>{i.createHeader==null||i.createHeader(o,e)}),o}const TX={createTable:e=>{e.getHeaderGroups=$e(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(t,n,r,a)=>{var o,i;const s=(o=r==null?void 0:r.map(d=>n.find(g=>g.id===d)).filter(Boolean))!=null?o:[],l=(i=a==null?void 0:a.map(d=>n.find(g=>g.id===d)).filter(Boolean))!=null?i:[],c=n.filter(d=>!(r!=null&&r.includes(d.id))&&!(a!=null&&a.includes(d.id)));return Xf(t,[...s,...c,...l],e)},Fe(e.options,In)),e.getCenterHeaderGroups=$e(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(t,n,r,a)=>(n=n.filter(o=>!(r!=null&&r.includes(o.id))&&!(a!=null&&a.includes(o.id))),Xf(t,n,e,"center")),Fe(e.options,In)),e.getLeftHeaderGroups=$e(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left],(t,n,r)=>{var a;const o=(a=r==null?void 0:r.map(i=>n.find(s=>s.id===i)).filter(Boolean))!=null?a:[];return Xf(t,o,e,"left")},Fe(e.options,In)),e.getRightHeaderGroups=$e(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.right],(t,n,r)=>{var a;const o=(a=r==null?void 0:r.map(i=>n.find(s=>s.id===i)).filter(Boolean))!=null?a:[];return Xf(t,o,e,"right")},Fe(e.options,In)),e.getFooterGroups=$e(()=>[e.getHeaderGroups()],t=>[...t].reverse(),Fe(e.options,In)),e.getLeftFooterGroups=$e(()=>[e.getLeftHeaderGroups()],t=>[...t].reverse(),Fe(e.options,In)),e.getCenterFooterGroups=$e(()=>[e.getCenterHeaderGroups()],t=>[...t].reverse(),Fe(e.options,In)),e.getRightFooterGroups=$e(()=>[e.getRightHeaderGroups()],t=>[...t].reverse(),Fe(e.options,In)),e.getFlatHeaders=$e(()=>[e.getHeaderGroups()],t=>t.map(n=>n.headers).flat(),Fe(e.options,In)),e.getLeftFlatHeaders=$e(()=>[e.getLeftHeaderGroups()],t=>t.map(n=>n.headers).flat(),Fe(e.options,In)),e.getCenterFlatHeaders=$e(()=>[e.getCenterHeaderGroups()],t=>t.map(n=>n.headers).flat(),Fe(e.options,In)),e.getRightFlatHeaders=$e(()=>[e.getRightHeaderGroups()],t=>t.map(n=>n.headers).flat(),Fe(e.options,In)),e.getCenterLeafHeaders=$e(()=>[e.getCenterFlatHeaders()],t=>t.filter(n=>{var r;return!((r=n.subHeaders)!=null&&r.length)}),Fe(e.options,In)),e.getLeftLeafHeaders=$e(()=>[e.getLeftFlatHeaders()],t=>t.filter(n=>{var r;return!((r=n.subHeaders)!=null&&r.length)}),Fe(e.options,In)),e.getRightLeafHeaders=$e(()=>[e.getRightFlatHeaders()],t=>t.filter(n=>{var r;return!((r=n.subHeaders)!=null&&r.length)}),Fe(e.options,In)),e.getLeafHeaders=$e(()=>[e.getLeftHeaderGroups(),e.getCenterHeaderGroups(),e.getRightHeaderGroups()],(t,n,r)=>{var a,o,i,s,l,c;return[...(a=(o=t[0])==null?void 0:o.headers)!=null?a:[],...(i=(s=n[0])==null?void 0:s.headers)!=null?i:[],...(l=(c=r[0])==null?void 0:c.headers)!=null?l:[]].map(u=>u.getLeafHeaders()).flat()},Fe(e.options,In))}};function Xf(e,t,n,r){var a,o;let i=0;const s=function(g,m){m===void 0&&(m=1),i=Math.max(i,m),g.filter(b=>b.getIsVisible()).forEach(b=>{var y;(y=b.columns)!=null&&y.length&&s(b.columns,m+1)},0)};s(e);let l=[];const c=(g,m)=>{const b={depth:m,id:[r,`${m}`].filter(Boolean).join("_"),headers:[]},y=[];g.forEach(w=>{const v=[...y].reverse()[0],h=w.column.depth===b.depth;let S,E=!1;if(h&&w.column.parent?S=w.column.parent:(S=w.column,E=!0),v&&(v==null?void 0:v.column)===S)v.subHeaders.push(w);else{const k=g2(n,S,{id:[r,m,S.id,w==null?void 0:w.id].filter(Boolean).join("_"),isPlaceholder:E,placeholderId:E?`${y.filter(x=>x.column===S).length}`:void 0,depth:m,index:y.length});k.subHeaders.push(w),y.push(k)}b.headers.push(w),w.headerGroup=b}),l.push(b),m>0&&c(y,m-1)},u=t.map((g,m)=>g2(n,g,{depth:i,index:m}));c(u,i-1),l.reverse();const d=g=>g.filter(b=>b.column.getIsVisible()).map(b=>{let y=0,w=0,v=[0];b.subHeaders&&b.subHeaders.length?(v=[],d(b.subHeaders).forEach(S=>{let{colSpan:E,rowSpan:k}=S;y+=E,v.push(k)})):y=1;const h=Math.min(...v);return w=w+h,b.colSpan=y,b.rowSpan=w,{colSpan:y,rowSpan:w}});return d((a=(o=l[0])==null?void 0:o.headers)!=null?a:[]),l}const Qf={size:150,minSize:20,maxSize:Number.MAX_SAFE_INTEGER},Ib=()=>({startOffset:null,startSize:null,deltaOffset:null,deltaPercentage:null,isResizingColumn:!1,columnSizingStart:[]}),RX={getDefaultColumnDef:()=>Qf,getInitialState:e=>({columnSizing:{},columnSizingInfo:Ib(),...e}),getDefaultOptions:e=>({columnResizeMode:"onEnd",columnResizeDirection:"ltr",onColumnSizingChange:Tr("columnSizing",e),onColumnSizingInfoChange:Tr("columnSizingInfo",e)}),createColumn:(e,t)=>{e.getSize=()=>{var n,r,a;const o=t.getState().columnSizing[e.id];return Math.min(Math.max((n=e.columnDef.minSize)!=null?n:Qf.minSize,(r=o??e.columnDef.size)!=null?r:Qf.size),(a=e.columnDef.maxSize)!=null?a:Qf.maxSize)},e.getStart=$e(n=>[n,Hu(t,n),t.getState().columnSizing],(n,r)=>r.slice(0,e.getIndex(n)).reduce((a,o)=>a+o.getSize(),0),Fe(t.options,"debugColumns")),e.getAfter=$e(n=>[n,Hu(t,n),t.getState().columnSizing],(n,r)=>r.slice(e.getIndex(n)+1).reduce((a,o)=>a+o.getSize(),0),Fe(t.options,"debugColumns")),e.resetSize=()=>{t.setColumnSizing(n=>{let{[e.id]:r,...a}=n;return a})},e.getCanResize=()=>{var n,r;return((n=e.columnDef.enableResizing)!=null?n:!0)&&((r=t.options.enableColumnResizing)!=null?r:!0)},e.getIsResizing=()=>t.getState().columnSizingInfo.isResizingColumn===e.id},createHeader:(e,t)=>{e.getSize=()=>{let n=0;const r=a=>{if(a.subHeaders.length)a.subHeaders.forEach(r);else{var o;n+=(o=a.column.getSize())!=null?o:0}};return r(e),n},e.getStart=()=>{if(e.index>0){const n=e.headerGroup.headers[e.index-1];return n.getStart()+n.getSize()}return 0},e.getResizeHandler=n=>{const r=t.getColumn(e.column.id),a=r==null?void 0:r.getCanResize();return o=>{if(!r||!a||(o.persist==null||o.persist(),Ob(o)&&o.touches&&o.touches.length>1))return;const i=e.getSize(),s=e?e.getLeafHeaders().map(v=>[v.column.id,v.column.getSize()]):[[r.id,r.getSize()]],l=Ob(o)?Math.round(o.touches[0].clientX):o.clientX,c={},u=(v,h)=>{typeof h=="number"&&(t.setColumnSizingInfo(S=>{var E,k;const x=t.options.columnResizeDirection==="rtl"?-1:1,C=(h-((E=S==null?void 0:S.startOffset)!=null?E:0))*x,_=Math.max(C/((k=S==null?void 0:S.startSize)!=null?k:0),-.999999);return S.columnSizingStart.forEach(R=>{let[T,L]=R;c[T]=Math.round(Math.max(L+L*_,0)*100)/100}),{...S,deltaOffset:C,deltaPercentage:_}}),(t.options.columnResizeMode==="onChange"||v==="end")&&t.setColumnSizing(S=>({...S,...c})))},d=v=>u("move",v),g=v=>{u("end",v),t.setColumnSizingInfo(h=>({...h,isResizingColumn:!1,startOffset:null,startSize:null,deltaOffset:null,deltaPercentage:null,columnSizingStart:[]}))},m=n||typeof document<"u"?document:null,b={moveHandler:v=>d(v.clientX),upHandler:v=>{m==null||m.removeEventListener("mousemove",b.moveHandler),m==null||m.removeEventListener("mouseup",b.upHandler),g(v.clientX)}},y={moveHandler:v=>(v.cancelable&&(v.preventDefault(),v.stopPropagation()),d(v.touches[0].clientX),!1),upHandler:v=>{var h;m==null||m.removeEventListener("touchmove",y.moveHandler),m==null||m.removeEventListener("touchend",y.upHandler),v.cancelable&&(v.preventDefault(),v.stopPropagation()),g((h=v.touches[0])==null?void 0:h.clientX)}},w=NX()?{passive:!1}:!1;Ob(o)?(m==null||m.addEventListener("touchmove",y.moveHandler,w),m==null||m.addEventListener("touchend",y.upHandler,w)):(m==null||m.addEventListener("mousemove",b.moveHandler,w),m==null||m.addEventListener("mouseup",b.upHandler,w)),t.setColumnSizingInfo(v=>({...v,startOffset:l,startSize:i,deltaOffset:0,deltaPercentage:0,columnSizingStart:s,isResizingColumn:r.id}))}}},createTable:e=>{e.setColumnSizing=t=>e.options.onColumnSizingChange==null?void 0:e.options.onColumnSizingChange(t),e.setColumnSizingInfo=t=>e.options.onColumnSizingInfoChange==null?void 0:e.options.onColumnSizingInfoChange(t),e.resetColumnSizing=t=>{var n;e.setColumnSizing(t?{}:(n=e.initialState.columnSizing)!=null?n:{})},e.resetHeaderSizeInfo=t=>{var n;e.setColumnSizingInfo(t?Ib():(n=e.initialState.columnSizingInfo)!=null?n:Ib())},e.getTotalSize=()=>{var t,n;return(t=(n=e.getHeaderGroups()[0])==null?void 0:n.headers.reduce((r,a)=>r+a.getSize(),0))!=null?t:0},e.getLeftTotalSize=()=>{var t,n;return(t=(n=e.getLeftHeaderGroups()[0])==null?void 0:n.headers.reduce((r,a)=>r+a.getSize(),0))!=null?t:0},e.getCenterTotalSize=()=>{var t,n;return(t=(n=e.getCenterHeaderGroups()[0])==null?void 0:n.headers.reduce((r,a)=>r+a.getSize(),0))!=null?t:0},e.getRightTotalSize=()=>{var t,n;return(t=(n=e.getRightHeaderGroups()[0])==null?void 0:n.headers.reduce((r,a)=>r+a.getSize(),0))!=null?t:0}}};let Jf=null;function NX(){if(typeof Jf=="boolean")return Jf;let e=!1;try{const t={get passive(){return e=!0,!1}},n=()=>{};window.addEventListener("test",n,t),window.removeEventListener("test",n)}catch{e=!1}return Jf=e,Jf}function Ob(e){return e.type==="touchstart"}const IX={getInitialState:e=>({expanded:{},...e}),getDefaultOptions:e=>({onExpandedChange:Tr("expanded",e),paginateExpandedRows:!0}),createTable:e=>{let t=!1,n=!1;e._autoResetExpanded=()=>{var r,a;if(!t){e._queue(()=>{t=!0});return}if((r=(a=e.options.autoResetAll)!=null?a:e.options.autoResetExpanded)!=null?r:!e.options.manualExpanding){if(n)return;n=!0,e._queue(()=>{e.resetExpanded(),n=!1})}},e.setExpanded=r=>e.options.onExpandedChange==null?void 0:e.options.onExpandedChange(r),e.toggleAllRowsExpanded=r=>{r??!e.getIsAllRowsExpanded()?e.setExpanded(!0):e.setExpanded({})},e.resetExpanded=r=>{var a,o;e.setExpanded(r?{}:(a=(o=e.initialState)==null?void 0:o.expanded)!=null?a:{})},e.getCanSomeRowsExpand=()=>e.getPrePaginationRowModel().flatRows.some(r=>r.getCanExpand()),e.getToggleAllRowsExpandedHandler=()=>r=>{r.persist==null||r.persist(),e.toggleAllRowsExpanded()},e.getIsSomeRowsExpanded=()=>{const r=e.getState().expanded;return r===!0||Object.values(r).some(Boolean)},e.getIsAllRowsExpanded=()=>{const r=e.getState().expanded;return typeof r=="boolean"?r===!0:!(!Object.keys(r).length||e.getRowModel().flatRows.some(a=>!a.getIsExpanded()))},e.getExpandedDepth=()=>{let r=0;return(e.getState().expanded===!0?Object.keys(e.getRowModel().rowsById):Object.keys(e.getState().expanded)).forEach(o=>{const i=o.split(".");r=Math.max(r,i.length)}),r},e.getPreExpandedRowModel=()=>e.getSortedRowModel(),e.getExpandedRowModel=()=>(!e._getExpandedRowModel&&e.options.getExpandedRowModel&&(e._getExpandedRowModel=e.options.getExpandedRowModel(e)),e.options.manualExpanding||!e._getExpandedRowModel?e.getPreExpandedRowModel():e._getExpandedRowModel())},createRow:(e,t)=>{e.toggleExpanded=n=>{t.setExpanded(r=>{var a;const o=r===!0?!0:!!(r!=null&&r[e.id]);let i={};if(r===!0?Object.keys(t.getRowModel().rowsById).forEach(s=>{i[s]=!0}):i=r,n=(a=n)!=null?a:!o,!o&&n)return{...i,[e.id]:!0};if(o&&!n){const{[e.id]:s,...l}=i;return l}return r})},e.getIsExpanded=()=>{var n;const r=t.getState().expanded;return!!((n=t.options.getIsRowExpanded==null?void 0:t.options.getIsRowExpanded(e))!=null?n:r===!0||r!=null&&r[e.id])},e.getCanExpand=()=>{var n,r,a;return(n=t.options.getRowCanExpand==null?void 0:t.options.getRowCanExpand(e))!=null?n:((r=t.options.enableExpanding)!=null?r:!0)&&!!((a=e.subRows)!=null&&a.length)},e.getIsAllParentsExpanded=()=>{let n=!0,r=e;for(;n&&r.parentId;)r=t.getRow(r.parentId,!0),n=r.getIsExpanded();return n},e.getToggleExpandedHandler=()=>{const n=e.getCanExpand();return()=>{n&&e.toggleExpanded()}}}},A6=(e,t,n)=>{var r;const a=n.toLowerCase();return!!(!((r=e.getValue(t))==null||(r=r.toString())==null||(r=r.toLowerCase())==null)&&r.includes(a))};A6.autoRemove=e=>pa(e);const T6=(e,t,n)=>{var r;return!!(!((r=e.getValue(t))==null||(r=r.toString())==null)&&r.includes(n))};T6.autoRemove=e=>pa(e);const R6=(e,t,n)=>{var r;return((r=e.getValue(t))==null||(r=r.toString())==null?void 0:r.toLowerCase())===(n==null?void 0:n.toLowerCase())};R6.autoRemove=e=>pa(e);const N6=(e,t,n)=>{var r;return(r=e.getValue(t))==null?void 0:r.includes(n)};N6.autoRemove=e=>pa(e)||!(e!=null&&e.length);const I6=(e,t,n)=>!n.some(r=>{var a;return!((a=e.getValue(t))!=null&&a.includes(r))});I6.autoRemove=e=>pa(e)||!(e!=null&&e.length);const O6=(e,t,n)=>n.some(r=>{var a;return(a=e.getValue(t))==null?void 0:a.includes(r)});O6.autoRemove=e=>pa(e)||!(e!=null&&e.length);const D6=(e,t,n)=>e.getValue(t)===n;D6.autoRemove=e=>pa(e);const L6=(e,t,n)=>e.getValue(t)==n;L6.autoRemove=e=>pa(e);const S_=(e,t,n)=>{let[r,a]=n;const o=e.getValue(t);return o>=r&&o<=a};S_.resolveFilterValue=e=>{let[t,n]=e,r=typeof t!="number"?parseFloat(t):t,a=typeof n!="number"?parseFloat(n):n,o=t===null||Number.isNaN(r)?-1/0:r,i=n===null||Number.isNaN(a)?1/0:a;if(o>i){const s=o;o=i,i=s}return[o,i]};S_.autoRemove=e=>pa(e)||pa(e[0])&&pa(e[1]);const Qa={includesString:A6,includesStringSensitive:T6,equalsString:R6,arrIncludes:N6,arrIncludesAll:I6,arrIncludesSome:O6,equals:D6,weakEquals:L6,inNumberRange:S_};function pa(e){return e==null||e===""}const OX={getDefaultColumnDef:()=>({filterFn:"auto"}),getInitialState:e=>({columnFilters:[],globalFilter:void 0,...e}),getDefaultOptions:e=>({onColumnFiltersChange:Tr("columnFilters",e),onGlobalFilterChange:Tr("globalFilter",e),filterFromLeafRows:!1,maxLeafRowFilterDepth:100,globalFilterFn:"auto",getColumnCanGlobalFilter:t=>{var n;const r=(n=e.getCoreRowModel().flatRows[0])==null||(n=n._getAllCellsByColumnId()[t.id])==null?void 0:n.getValue();return typeof r=="string"||typeof r=="number"}}),createColumn:(e,t)=>{e.getAutoFilterFn=()=>{const n=t.getCoreRowModel().flatRows[0],r=n==null?void 0:n.getValue(e.id);return typeof r=="string"?Qa.includesString:typeof r=="number"?Qa.inNumberRange:typeof r=="boolean"||r!==null&&typeof r=="object"?Qa.equals:Array.isArray(r)?Qa.arrIncludes:Qa.weakEquals},e.getFilterFn=()=>{var n,r;return Ig(e.columnDef.filterFn)?e.columnDef.filterFn:e.columnDef.filterFn==="auto"?e.getAutoFilterFn():(n=(r=t.options.filterFns)==null?void 0:r[e.columnDef.filterFn])!=null?n:Qa[e.columnDef.filterFn]},e.getCanFilter=()=>{var n,r,a;return((n=e.columnDef.enableColumnFilter)!=null?n:!0)&&((r=t.options.enableColumnFilters)!=null?r:!0)&&((a=t.options.enableFilters)!=null?a:!0)&&!!e.accessorFn},e.getCanGlobalFilter=()=>{var n,r,a,o;return((n=e.columnDef.enableGlobalFilter)!=null?n:!0)&&((r=t.options.enableGlobalFilter)!=null?r:!0)&&((a=t.options.enableFilters)!=null?a:!0)&&((o=t.options.getColumnCanGlobalFilter==null?void 0:t.options.getColumnCanGlobalFilter(e))!=null?o:!0)&&!!e.accessorFn},e.getIsFiltered=()=>e.getFilterIndex()>-1,e.getFilterValue=()=>{var n;return(n=t.getState().columnFilters)==null||(n=n.find(r=>r.id===e.id))==null?void 0:n.value},e.getFilterIndex=()=>{var n,r;return(n=(r=t.getState().columnFilters)==null?void 0:r.findIndex(a=>a.id===e.id))!=null?n:-1},e.setFilterValue=n=>{t.setColumnFilters(r=>{const a=e.getFilterFn(),o=r==null?void 0:r.find(u=>u.id===e.id),i=ii(n,o?o.value:void 0);if(m2(a,i,e)){var s;return(s=r==null?void 0:r.filter(u=>u.id!==e.id))!=null?s:[]}const l={id:e.id,value:i};if(o){var c;return(c=r==null?void 0:r.map(u=>u.id===e.id?l:u))!=null?c:[]}return r!=null&&r.length?[...r,l]:[l]})},e._getFacetedRowModel=t.options.getFacetedRowModel&&t.options.getFacetedRowModel(t,e.id),e.getFacetedRowModel=()=>e._getFacetedRowModel?e._getFacetedRowModel():t.getPreFilteredRowModel(),e._getFacetedUniqueValues=t.options.getFacetedUniqueValues&&t.options.getFacetedUniqueValues(t,e.id),e.getFacetedUniqueValues=()=>e._getFacetedUniqueValues?e._getFacetedUniqueValues():new Map,e._getFacetedMinMaxValues=t.options.getFacetedMinMaxValues&&t.options.getFacetedMinMaxValues(t,e.id),e.getFacetedMinMaxValues=()=>{if(e._getFacetedMinMaxValues)return e._getFacetedMinMaxValues()}},createRow:(e,t)=>{e.columnFilters={},e.columnFiltersMeta={}},createTable:e=>{e.getGlobalAutoFilterFn=()=>Qa.includesString,e.getGlobalFilterFn=()=>{var t,n;const{globalFilterFn:r}=e.options;return Ig(r)?r:r==="auto"?e.getGlobalAutoFilterFn():(t=(n=e.options.filterFns)==null?void 0:n[r])!=null?t:Qa[r]},e.setColumnFilters=t=>{const n=e.getAllLeafColumns(),r=a=>{var o;return(o=ii(t,a))==null?void 0:o.filter(i=>{const s=n.find(l=>l.id===i.id);if(s){const l=s.getFilterFn();if(m2(l,i.value,s))return!1}return!0})};e.options.onColumnFiltersChange==null||e.options.onColumnFiltersChange(r)},e.setGlobalFilter=t=>{e.options.onGlobalFilterChange==null||e.options.onGlobalFilterChange(t)},e.resetGlobalFilter=t=>{e.setGlobalFilter(t?void 0:e.initialState.globalFilter)},e.resetColumnFilters=t=>{var n,r;e.setColumnFilters(t?[]:(n=(r=e.initialState)==null?void 0:r.columnFilters)!=null?n:[])},e.getPreFilteredRowModel=()=>e.getCoreRowModel(),e.getFilteredRowModel=()=>(!e._getFilteredRowModel&&e.options.getFilteredRowModel&&(e._getFilteredRowModel=e.options.getFilteredRowModel(e)),e.options.manualFiltering||!e._getFilteredRowModel?e.getPreFilteredRowModel():e._getFilteredRowModel()),e._getGlobalFacetedRowModel=e.options.getFacetedRowModel&&e.options.getFacetedRowModel(e,"__global__"),e.getGlobalFacetedRowModel=()=>e.options.manualFiltering||!e._getGlobalFacetedRowModel?e.getPreFilteredRowModel():e._getGlobalFacetedRowModel(),e._getGlobalFacetedUniqueValues=e.options.getFacetedUniqueValues&&e.options.getFacetedUniqueValues(e,"__global__"),e.getGlobalFacetedUniqueValues=()=>e._getGlobalFacetedUniqueValues?e._getGlobalFacetedUniqueValues():new Map,e._getGlobalFacetedMinMaxValues=e.options.getFacetedMinMaxValues&&e.options.getFacetedMinMaxValues(e,"__global__"),e.getGlobalFacetedMinMaxValues=()=>{if(e._getGlobalFacetedMinMaxValues)return e._getGlobalFacetedMinMaxValues()}}};function m2(e,t,n){return(e&&e.autoRemove?e.autoRemove(t,n):!1)||typeof t>"u"||typeof t=="string"&&!t}const DX=(e,t,n)=>n.reduce((r,a)=>{const o=a.getValue(e);return r+(typeof o=="number"?o:0)},0),LX=(e,t,n)=>{let r;return n.forEach(a=>{const o=a.getValue(e);o!=null&&(r>o||r===void 0&&o>=o)&&(r=o)}),r},MX=(e,t,n)=>{let r;return n.forEach(a=>{const o=a.getValue(e);o!=null&&(r=o)&&(r=o)}),r},PX=(e,t,n)=>{let r,a;return n.forEach(o=>{const i=o.getValue(e);i!=null&&(r===void 0?i>=i&&(r=a=i):(r>i&&(r=i),a{let n=0,r=0;if(t.forEach(a=>{let o=a.getValue(e);o!=null&&(o=+o)>=o&&(++n,r+=o)}),n)return r/n},FX=(e,t)=>{if(!t.length)return;const n=t.map(o=>o.getValue(e));if(!CX(n))return;if(n.length===1)return n[0];const r=Math.floor(n.length/2),a=n.sort((o,i)=>o-i);return n.length%2!==0?a[r]:(a[r-1]+a[r])/2},jX=(e,t)=>Array.from(new Set(t.map(n=>n.getValue(e))).values()),zX=(e,t)=>new Set(t.map(n=>n.getValue(e))).size,UX=(e,t)=>t.length,Db={sum:DX,min:LX,max:MX,extent:PX,mean:$X,median:FX,unique:jX,uniqueCount:zX,count:UX},BX={getDefaultColumnDef:()=>({aggregatedCell:e=>{var t,n;return(t=(n=e.getValue())==null||n.toString==null?void 0:n.toString())!=null?t:null},aggregationFn:"auto"}),getInitialState:e=>({grouping:[],...e}),getDefaultOptions:e=>({onGroupingChange:Tr("grouping",e),groupedColumnMode:"reorder"}),createColumn:(e,t)=>{e.toggleGrouping=()=>{t.setGrouping(n=>n!=null&&n.includes(e.id)?n.filter(r=>r!==e.id):[...n??[],e.id])},e.getCanGroup=()=>{var n,r,a,o;return(n=(r=(a=(o=e.columnDef.enableGrouping)!=null?o:!0)!=null?a:t.options.enableGrouping)!=null?r:!0)!=null?n:!!e.accessorFn},e.getIsGrouped=()=>{var n;return(n=t.getState().grouping)==null?void 0:n.includes(e.id)},e.getGroupedIndex=()=>{var n;return(n=t.getState().grouping)==null?void 0:n.indexOf(e.id)},e.getToggleGroupingHandler=()=>{const n=e.getCanGroup();return()=>{n&&e.toggleGrouping()}},e.getAutoAggregationFn=()=>{const n=t.getCoreRowModel().flatRows[0],r=n==null?void 0:n.getValue(e.id);if(typeof r=="number")return Db.sum;if(Object.prototype.toString.call(r)==="[object Date]")return Db.extent},e.getAggregationFn=()=>{var n,r;if(!e)throw new Error;return Ig(e.columnDef.aggregationFn)?e.columnDef.aggregationFn:e.columnDef.aggregationFn==="auto"?e.getAutoAggregationFn():(n=(r=t.options.aggregationFns)==null?void 0:r[e.columnDef.aggregationFn])!=null?n:Db[e.columnDef.aggregationFn]}},createTable:e=>{e.setGrouping=t=>e.options.onGroupingChange==null?void 0:e.options.onGroupingChange(t),e.resetGrouping=t=>{var n,r;e.setGrouping(t?[]:(n=(r=e.initialState)==null?void 0:r.grouping)!=null?n:[])},e.getPreGroupedRowModel=()=>e.getFilteredRowModel(),e.getGroupedRowModel=()=>(!e._getGroupedRowModel&&e.options.getGroupedRowModel&&(e._getGroupedRowModel=e.options.getGroupedRowModel(e)),e.options.manualGrouping||!e._getGroupedRowModel?e.getPreGroupedRowModel():e._getGroupedRowModel())},createRow:(e,t)=>{e.getIsGrouped=()=>!!e.groupingColumnId,e.getGroupingValue=n=>{if(e._groupingValuesCache.hasOwnProperty(n))return e._groupingValuesCache[n];const r=t.getColumn(n);return r!=null&&r.columnDef.getGroupingValue?(e._groupingValuesCache[n]=r.columnDef.getGroupingValue(e.original),e._groupingValuesCache[n]):e.getValue(n)},e._groupingValuesCache={}},createCell:(e,t,n,r)=>{e.getIsGrouped=()=>t.getIsGrouped()&&t.id===n.groupingColumnId,e.getIsPlaceholder=()=>!e.getIsGrouped()&&t.getIsGrouped(),e.getIsAggregated=()=>{var a;return!e.getIsGrouped()&&!e.getIsPlaceholder()&&!!((a=n.subRows)!=null&&a.length)}}};function HX(e,t,n){if(!(t!=null&&t.length)||!n)return e;const r=e.filter(o=>!t.includes(o.id));return n==="remove"?r:[...t.map(o=>e.find(i=>i.id===o)).filter(Boolean),...r]}const VX={getInitialState:e=>({columnOrder:[],...e}),getDefaultOptions:e=>({onColumnOrderChange:Tr("columnOrder",e)}),createColumn:(e,t)=>{e.getIndex=$e(n=>[Hu(t,n)],n=>n.findIndex(r=>r.id===e.id),Fe(t.options,"debugColumns")),e.getIsFirstColumn=n=>{var r;return((r=Hu(t,n)[0])==null?void 0:r.id)===e.id},e.getIsLastColumn=n=>{var r;const a=Hu(t,n);return((r=a[a.length-1])==null?void 0:r.id)===e.id}},createTable:e=>{e.setColumnOrder=t=>e.options.onColumnOrderChange==null?void 0:e.options.onColumnOrderChange(t),e.resetColumnOrder=t=>{var n;e.setColumnOrder(t?[]:(n=e.initialState.columnOrder)!=null?n:[])},e._getOrderColumnsFn=$e(()=>[e.getState().columnOrder,e.getState().grouping,e.options.groupedColumnMode],(t,n,r)=>a=>{let o=[];if(!(t!=null&&t.length))o=a;else{const i=[...t],s=[...a];for(;s.length&&i.length;){const l=i.shift(),c=s.findIndex(u=>u.id===l);c>-1&&o.push(s.splice(c,1)[0])}o=[...o,...s]}return HX(o,n,r)},Fe(e.options,"debugTable"))}},Y1=0,Z1=10,Lb=()=>({pageIndex:Y1,pageSize:Z1}),qX={getInitialState:e=>({...e,pagination:{...Lb(),...e==null?void 0:e.pagination}}),getDefaultOptions:e=>({onPaginationChange:Tr("pagination",e)}),createTable:e=>{let t=!1,n=!1;e._autoResetPageIndex=()=>{var r,a;if(!t){e._queue(()=>{t=!0});return}if((r=(a=e.options.autoResetAll)!=null?a:e.options.autoResetPageIndex)!=null?r:!e.options.manualPagination){if(n)return;n=!0,e._queue(()=>{e.resetPageIndex(),n=!1})}},e.setPagination=r=>{const a=o=>ii(r,o);return e.options.onPaginationChange==null?void 0:e.options.onPaginationChange(a)},e.resetPagination=r=>{var a;e.setPagination(r?Lb():(a=e.initialState.pagination)!=null?a:Lb())},e.setPageIndex=r=>{e.setPagination(a=>{let o=ii(r,a.pageIndex);const i=typeof e.options.pageCount>"u"||e.options.pageCount===-1?Number.MAX_SAFE_INTEGER:e.options.pageCount-1;return o=Math.max(0,Math.min(o,i)),{...a,pageIndex:o}})},e.resetPageIndex=r=>{var a,o;e.setPageIndex(r?Y1:(a=(o=e.initialState)==null||(o=o.pagination)==null?void 0:o.pageIndex)!=null?a:Y1)},e.resetPageSize=r=>{var a,o;e.setPageSize(r?Z1:(a=(o=e.initialState)==null||(o=o.pagination)==null?void 0:o.pageSize)!=null?a:Z1)},e.setPageSize=r=>{e.setPagination(a=>{const o=Math.max(1,ii(r,a.pageSize)),i=a.pageSize*a.pageIndex,s=Math.floor(i/o);return{...a,pageIndex:s,pageSize:o}})},e.setPageCount=r=>e.setPagination(a=>{var o;let i=ii(r,(o=e.options.pageCount)!=null?o:-1);return typeof i=="number"&&(i=Math.max(-1,i)),{...a,pageCount:i}}),e.getPageOptions=$e(()=>[e.getPageCount()],r=>{let a=[];return r&&r>0&&(a=[...new Array(r)].fill(null).map((o,i)=>i)),a},Fe(e.options,"debugTable")),e.getCanPreviousPage=()=>e.getState().pagination.pageIndex>0,e.getCanNextPage=()=>{const{pageIndex:r}=e.getState().pagination,a=e.getPageCount();return a===-1?!0:a===0?!1:re.setPageIndex(r=>r-1),e.nextPage=()=>e.setPageIndex(r=>r+1),e.getPrePaginationRowModel=()=>e.getExpandedRowModel(),e.getPaginationRowModel=()=>(!e._getPaginationRowModel&&e.options.getPaginationRowModel&&(e._getPaginationRowModel=e.options.getPaginationRowModel(e)),e.options.manualPagination||!e._getPaginationRowModel?e.getPrePaginationRowModel():e._getPaginationRowModel()),e.getPageCount=()=>{var r;return(r=e.options.pageCount)!=null?r:Math.ceil(e.getPrePaginationRowModel().rows.length/e.getState().pagination.pageSize)}}},Mb=()=>({left:[],right:[]}),Pb=()=>({top:[],bottom:[]}),GX={getInitialState:e=>({columnPinning:Mb(),rowPinning:Pb(),...e}),getDefaultOptions:e=>({onColumnPinningChange:Tr("columnPinning",e),onRowPinningChange:Tr("rowPinning",e)}),createColumn:(e,t)=>{e.pin=n=>{const r=e.getLeafColumns().map(a=>a.id).filter(Boolean);t.setColumnPinning(a=>{var o,i;if(n==="right"){var s,l;return{left:((s=a==null?void 0:a.left)!=null?s:[]).filter(d=>!(r!=null&&r.includes(d))),right:[...((l=a==null?void 0:a.right)!=null?l:[]).filter(d=>!(r!=null&&r.includes(d))),...r]}}if(n==="left"){var c,u;return{left:[...((c=a==null?void 0:a.left)!=null?c:[]).filter(d=>!(r!=null&&r.includes(d))),...r],right:((u=a==null?void 0:a.right)!=null?u:[]).filter(d=>!(r!=null&&r.includes(d)))}}return{left:((o=a==null?void 0:a.left)!=null?o:[]).filter(d=>!(r!=null&&r.includes(d))),right:((i=a==null?void 0:a.right)!=null?i:[]).filter(d=>!(r!=null&&r.includes(d)))}})},e.getCanPin=()=>e.getLeafColumns().some(r=>{var a,o,i;return((a=r.columnDef.enablePinning)!=null?a:!0)&&((o=(i=t.options.enableColumnPinning)!=null?i:t.options.enablePinning)!=null?o:!0)}),e.getIsPinned=()=>{const n=e.getLeafColumns().map(s=>s.id),{left:r,right:a}=t.getState().columnPinning,o=n.some(s=>r==null?void 0:r.includes(s)),i=n.some(s=>a==null?void 0:a.includes(s));return o?"left":i?"right":!1},e.getPinnedIndex=()=>{var n,r;const a=e.getIsPinned();return a?(n=(r=t.getState().columnPinning)==null||(r=r[a])==null?void 0:r.indexOf(e.id))!=null?n:-1:0}},createRow:(e,t)=>{e.pin=(n,r,a)=>{const o=r?e.getLeafRows().map(l=>{let{id:c}=l;return c}):[],i=a?e.getParentRows().map(l=>{let{id:c}=l;return c}):[],s=new Set([...i,e.id,...o]);t.setRowPinning(l=>{var c,u;if(n==="bottom"){var d,g;return{top:((d=l==null?void 0:l.top)!=null?d:[]).filter(y=>!(s!=null&&s.has(y))),bottom:[...((g=l==null?void 0:l.bottom)!=null?g:[]).filter(y=>!(s!=null&&s.has(y))),...Array.from(s)]}}if(n==="top"){var m,b;return{top:[...((m=l==null?void 0:l.top)!=null?m:[]).filter(y=>!(s!=null&&s.has(y))),...Array.from(s)],bottom:((b=l==null?void 0:l.bottom)!=null?b:[]).filter(y=>!(s!=null&&s.has(y)))}}return{top:((c=l==null?void 0:l.top)!=null?c:[]).filter(y=>!(s!=null&&s.has(y))),bottom:((u=l==null?void 0:l.bottom)!=null?u:[]).filter(y=>!(s!=null&&s.has(y)))}})},e.getCanPin=()=>{var n;const{enableRowPinning:r,enablePinning:a}=t.options;return typeof r=="function"?r(e):(n=r??a)!=null?n:!0},e.getIsPinned=()=>{const n=[e.id],{top:r,bottom:a}=t.getState().rowPinning,o=n.some(s=>r==null?void 0:r.includes(s)),i=n.some(s=>a==null?void 0:a.includes(s));return o?"top":i?"bottom":!1},e.getPinnedIndex=()=>{var n,r;const a=e.getIsPinned();if(!a)return-1;const o=(n=t._getPinnedRows(a))==null?void 0:n.map(i=>{let{id:s}=i;return s});return(r=o==null?void 0:o.indexOf(e.id))!=null?r:-1},e.getCenterVisibleCells=$e(()=>[e._getAllVisibleCells(),t.getState().columnPinning.left,t.getState().columnPinning.right],(n,r,a)=>{const o=[...r??[],...a??[]];return n.filter(i=>!o.includes(i.column.id))},Fe(t.options,"debugRows")),e.getLeftVisibleCells=$e(()=>[e._getAllVisibleCells(),t.getState().columnPinning.left,,],(n,r)=>(r??[]).map(o=>n.find(i=>i.column.id===o)).filter(Boolean).map(o=>({...o,position:"left"})),Fe(t.options,"debugRows")),e.getRightVisibleCells=$e(()=>[e._getAllVisibleCells(),t.getState().columnPinning.right],(n,r)=>(r??[]).map(o=>n.find(i=>i.column.id===o)).filter(Boolean).map(o=>({...o,position:"right"})),Fe(t.options,"debugRows"))},createTable:e=>{e.setColumnPinning=t=>e.options.onColumnPinningChange==null?void 0:e.options.onColumnPinningChange(t),e.resetColumnPinning=t=>{var n,r;return e.setColumnPinning(t?Mb():(n=(r=e.initialState)==null?void 0:r.columnPinning)!=null?n:Mb())},e.getIsSomeColumnsPinned=t=>{var n;const r=e.getState().columnPinning;if(!t){var a,o;return!!((a=r.left)!=null&&a.length||(o=r.right)!=null&&o.length)}return!!((n=r[t])!=null&&n.length)},e.getLeftLeafColumns=$e(()=>[e.getAllLeafColumns(),e.getState().columnPinning.left],(t,n)=>(n??[]).map(r=>t.find(a=>a.id===r)).filter(Boolean),Fe(e.options,"debugColumns")),e.getRightLeafColumns=$e(()=>[e.getAllLeafColumns(),e.getState().columnPinning.right],(t,n)=>(n??[]).map(r=>t.find(a=>a.id===r)).filter(Boolean),Fe(e.options,"debugColumns")),e.getCenterLeafColumns=$e(()=>[e.getAllLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(t,n,r)=>{const a=[...n??[],...r??[]];return t.filter(o=>!a.includes(o.id))},Fe(e.options,"debugColumns")),e.setRowPinning=t=>e.options.onRowPinningChange==null?void 0:e.options.onRowPinningChange(t),e.resetRowPinning=t=>{var n,r;return e.setRowPinning(t?Pb():(n=(r=e.initialState)==null?void 0:r.rowPinning)!=null?n:Pb())},e.getIsSomeRowsPinned=t=>{var n;const r=e.getState().rowPinning;if(!t){var a,o;return!!((a=r.top)!=null&&a.length||(o=r.bottom)!=null&&o.length)}return!!((n=r[t])!=null&&n.length)},e._getPinnedRows=$e(t=>[e.getRowModel().rows,e.getState().rowPinning[t],t],(t,n,r)=>{var a;return((a=e.options.keepPinnedRows)==null||a?(n??[]).map(i=>{const s=e.getRow(i,!0);return s.getIsAllParentsExpanded()?s:null}):(n??[]).map(i=>t.find(s=>s.id===i))).filter(Boolean).map(i=>({...i,position:r}))},Fe(e.options,"debugRows")),e.getTopRows=()=>e._getPinnedRows("top"),e.getBottomRows=()=>e._getPinnedRows("bottom"),e.getCenterRows=$e(()=>[e.getRowModel().rows,e.getState().rowPinning.top,e.getState().rowPinning.bottom],(t,n,r)=>{const a=new Set([...n??[],...r??[]]);return t.filter(o=>!a.has(o.id))},Fe(e.options,"debugRows"))}},WX={getInitialState:e=>({rowSelection:{},...e}),getDefaultOptions:e=>({onRowSelectionChange:Tr("rowSelection",e),enableRowSelection:!0,enableMultiRowSelection:!0,enableSubRowSelection:!0}),createTable:e=>{e.setRowSelection=t=>e.options.onRowSelectionChange==null?void 0:e.options.onRowSelectionChange(t),e.resetRowSelection=t=>{var n;return e.setRowSelection(t?{}:(n=e.initialState.rowSelection)!=null?n:{})},e.toggleAllRowsSelected=t=>{e.setRowSelection(n=>{t=typeof t<"u"?t:!e.getIsAllRowsSelected();const r={...n},a=e.getPreGroupedRowModel().flatRows;return t?a.forEach(o=>{o.getCanSelect()&&(r[o.id]=!0)}):a.forEach(o=>{delete r[o.id]}),r})},e.toggleAllPageRowsSelected=t=>e.setRowSelection(n=>{const r=typeof t<"u"?t:!e.getIsAllPageRowsSelected(),a={...n};return e.getRowModel().rows.forEach(o=>{X1(a,o.id,r,!0,e)}),a}),e.getPreSelectedRowModel=()=>e.getCoreRowModel(),e.getSelectedRowModel=$e(()=>[e.getState().rowSelection,e.getCoreRowModel()],(t,n)=>Object.keys(t).length?$b(e,n):{rows:[],flatRows:[],rowsById:{}},Fe(e.options,"debugTable")),e.getFilteredSelectedRowModel=$e(()=>[e.getState().rowSelection,e.getFilteredRowModel()],(t,n)=>Object.keys(t).length?$b(e,n):{rows:[],flatRows:[],rowsById:{}},Fe(e.options,"debugTable")),e.getGroupedSelectedRowModel=$e(()=>[e.getState().rowSelection,e.getSortedRowModel()],(t,n)=>Object.keys(t).length?$b(e,n):{rows:[],flatRows:[],rowsById:{}},Fe(e.options,"debugTable")),e.getIsAllRowsSelected=()=>{const t=e.getFilteredRowModel().flatRows,{rowSelection:n}=e.getState();let r=!!(t.length&&Object.keys(n).length);return r&&t.some(a=>a.getCanSelect()&&!n[a.id])&&(r=!1),r},e.getIsAllPageRowsSelected=()=>{const t=e.getPaginationRowModel().flatRows.filter(a=>a.getCanSelect()),{rowSelection:n}=e.getState();let r=!!t.length;return r&&t.some(a=>!n[a.id])&&(r=!1),r},e.getIsSomeRowsSelected=()=>{var t;const n=Object.keys((t=e.getState().rowSelection)!=null?t:{}).length;return n>0&&n{const t=e.getPaginationRowModel().flatRows;return e.getIsAllPageRowsSelected()?!1:t.filter(n=>n.getCanSelect()).some(n=>n.getIsSelected()||n.getIsSomeSelected())},e.getToggleAllRowsSelectedHandler=()=>t=>{e.toggleAllRowsSelected(t.target.checked)},e.getToggleAllPageRowsSelectedHandler=()=>t=>{e.toggleAllPageRowsSelected(t.target.checked)}},createRow:(e,t)=>{e.toggleSelected=(n,r)=>{const a=e.getIsSelected();t.setRowSelection(o=>{var i;if(n=typeof n<"u"?n:!a,e.getCanSelect()&&a===n)return o;const s={...o};return X1(s,e.id,n,(i=r==null?void 0:r.selectChildren)!=null?i:!0,t),s})},e.getIsSelected=()=>{const{rowSelection:n}=t.getState();return w_(e,n)},e.getIsSomeSelected=()=>{const{rowSelection:n}=t.getState();return Q1(e,n)==="some"},e.getIsAllSubRowsSelected=()=>{const{rowSelection:n}=t.getState();return Q1(e,n)==="all"},e.getCanSelect=()=>{var n;return typeof t.options.enableRowSelection=="function"?t.options.enableRowSelection(e):(n=t.options.enableRowSelection)!=null?n:!0},e.getCanSelectSubRows=()=>{var n;return typeof t.options.enableSubRowSelection=="function"?t.options.enableSubRowSelection(e):(n=t.options.enableSubRowSelection)!=null?n:!0},e.getCanMultiSelect=()=>{var n;return typeof t.options.enableMultiRowSelection=="function"?t.options.enableMultiRowSelection(e):(n=t.options.enableMultiRowSelection)!=null?n:!0},e.getToggleSelectedHandler=()=>{const n=e.getCanSelect();return r=>{var a;n&&e.toggleSelected((a=r.target)==null?void 0:a.checked)}}}},X1=(e,t,n,r,a)=>{var o;const i=a.getRow(t,!0);n?(i.getCanMultiSelect()||Object.keys(e).forEach(s=>delete e[s]),i.getCanSelect()&&(e[t]=!0)):delete e[t],r&&(o=i.subRows)!=null&&o.length&&i.getCanSelectSubRows()&&i.subRows.forEach(s=>X1(e,s.id,n,r,a))};function $b(e,t){const n=e.getState().rowSelection,r=[],a={},o=function(i,s){return i.map(l=>{var c;const u=w_(l,n);if(u&&(r.push(l),a[l.id]=l),(c=l.subRows)!=null&&c.length&&(l={...l,subRows:o(l.subRows)}),u)return l}).filter(Boolean)};return{rows:o(t.rows),flatRows:r,rowsById:a}}function w_(e,t){var n;return(n=t[e.id])!=null?n:!1}function Q1(e,t,n){var r;if(!((r=e.subRows)!=null&&r.length))return!1;let a=!0,o=!1;return e.subRows.forEach(i=>{if(!(o&&!a)&&(i.getCanSelect()&&(w_(i,t)?o=!0:a=!1),i.subRows&&i.subRows.length)){const s=Q1(i,t);s==="all"?o=!0:(s==="some"&&(o=!0),a=!1)}}),a?"all":o?"some":!1}const J1=/([0-9]+)/gm,KX=(e,t,n)=>M6(Ei(e.getValue(n)).toLowerCase(),Ei(t.getValue(n)).toLowerCase()),YX=(e,t,n)=>M6(Ei(e.getValue(n)),Ei(t.getValue(n))),ZX=(e,t,n)=>E_(Ei(e.getValue(n)).toLowerCase(),Ei(t.getValue(n)).toLowerCase()),XX=(e,t,n)=>E_(Ei(e.getValue(n)),Ei(t.getValue(n))),QX=(e,t,n)=>{const r=e.getValue(n),a=t.getValue(n);return r>a?1:rE_(e.getValue(n),t.getValue(n));function E_(e,t){return e===t?0:e>t?1:-1}function Ei(e){return typeof e=="number"?isNaN(e)||e===1/0||e===-1/0?"":String(e):typeof e=="string"?e:""}function M6(e,t){const n=e.split(J1).filter(Boolean),r=t.split(J1).filter(Boolean);for(;n.length&&r.length;){const a=n.shift(),o=r.shift(),i=parseInt(a,10),s=parseInt(o,10),l=[i,s].sort();if(isNaN(l[0])){if(a>o)return 1;if(o>a)return-1;continue}if(isNaN(l[1]))return isNaN(i)?-1:1;if(i>s)return 1;if(s>i)return-1}return n.length-r.length}const cu={alphanumeric:KX,alphanumericCaseSensitive:YX,text:ZX,textCaseSensitive:XX,datetime:QX,basic:JX},eQ={getInitialState:e=>({sorting:[],...e}),getDefaultColumnDef:()=>({sortingFn:"auto",sortUndefined:1}),getDefaultOptions:e=>({onSortingChange:Tr("sorting",e),isMultiSortEvent:t=>t.shiftKey}),createColumn:(e,t)=>{e.getAutoSortingFn=()=>{const n=t.getFilteredRowModel().flatRows.slice(10);let r=!1;for(const a of n){const o=a==null?void 0:a.getValue(e.id);if(Object.prototype.toString.call(o)==="[object Date]")return cu.datetime;if(typeof o=="string"&&(r=!0,o.split(J1).length>1))return cu.alphanumeric}return r?cu.text:cu.basic},e.getAutoSortDir=()=>{const n=t.getFilteredRowModel().flatRows[0];return typeof(n==null?void 0:n.getValue(e.id))=="string"?"asc":"desc"},e.getSortingFn=()=>{var n,r;if(!e)throw new Error;return Ig(e.columnDef.sortingFn)?e.columnDef.sortingFn:e.columnDef.sortingFn==="auto"?e.getAutoSortingFn():(n=(r=t.options.sortingFns)==null?void 0:r[e.columnDef.sortingFn])!=null?n:cu[e.columnDef.sortingFn]},e.toggleSorting=(n,r)=>{const a=e.getNextSortingOrder(),o=typeof n<"u"&&n!==null;t.setSorting(i=>{const s=i==null?void 0:i.find(m=>m.id===e.id),l=i==null?void 0:i.findIndex(m=>m.id===e.id);let c=[],u,d=o?n:a==="desc";if(i!=null&&i.length&&e.getCanMultiSort()&&r?s?u="toggle":u="add":i!=null&&i.length&&l!==i.length-1?u="replace":s?u="toggle":u="replace",u==="toggle"&&(o||a||(u="remove")),u==="add"){var g;c=[...i,{id:e.id,desc:d}],c.splice(0,c.length-((g=t.options.maxMultiSortColCount)!=null?g:Number.MAX_SAFE_INTEGER))}else u==="toggle"?c=i.map(m=>m.id===e.id?{...m,desc:d}:m):u==="remove"?c=i.filter(m=>m.id!==e.id):c=[{id:e.id,desc:d}];return c})},e.getFirstSortDir=()=>{var n,r;return((n=(r=e.columnDef.sortDescFirst)!=null?r:t.options.sortDescFirst)!=null?n:e.getAutoSortDir()==="desc")?"desc":"asc"},e.getNextSortingOrder=n=>{var r,a;const o=e.getFirstSortDir(),i=e.getIsSorted();return i?i!==o&&((r=t.options.enableSortingRemoval)==null||r)&&(!(n&&(a=t.options.enableMultiRemove)!=null)||a)?!1:i==="desc"?"asc":"desc":o},e.getCanSort=()=>{var n,r;return((n=e.columnDef.enableSorting)!=null?n:!0)&&((r=t.options.enableSorting)!=null?r:!0)&&!!e.accessorFn},e.getCanMultiSort=()=>{var n,r;return(n=(r=e.columnDef.enableMultiSort)!=null?r:t.options.enableMultiSort)!=null?n:!!e.accessorFn},e.getIsSorted=()=>{var n;const r=(n=t.getState().sorting)==null?void 0:n.find(a=>a.id===e.id);return r?r.desc?"desc":"asc":!1},e.getSortIndex=()=>{var n,r;return(n=(r=t.getState().sorting)==null?void 0:r.findIndex(a=>a.id===e.id))!=null?n:-1},e.clearSorting=()=>{t.setSorting(n=>n!=null&&n.length?n.filter(r=>r.id!==e.id):[])},e.getToggleSortingHandler=()=>{const n=e.getCanSort();return r=>{n&&(r.persist==null||r.persist(),e.toggleSorting==null||e.toggleSorting(void 0,e.getCanMultiSort()?t.options.isMultiSortEvent==null?void 0:t.options.isMultiSortEvent(r):!1))}}},createTable:e=>{e.setSorting=t=>e.options.onSortingChange==null?void 0:e.options.onSortingChange(t),e.resetSorting=t=>{var n,r;e.setSorting(t?[]:(n=(r=e.initialState)==null?void 0:r.sorting)!=null?n:[])},e.getPreSortedRowModel=()=>e.getGroupedRowModel(),e.getSortedRowModel=()=>(!e._getSortedRowModel&&e.options.getSortedRowModel&&(e._getSortedRowModel=e.options.getSortedRowModel(e)),e.options.manualSorting||!e._getSortedRowModel?e.getPreSortedRowModel():e._getSortedRowModel())}},tQ={getInitialState:e=>({columnVisibility:{},...e}),getDefaultOptions:e=>({onColumnVisibilityChange:Tr("columnVisibility",e)}),createColumn:(e,t)=>{e.toggleVisibility=n=>{e.getCanHide()&&t.setColumnVisibility(r=>({...r,[e.id]:n??!e.getIsVisible()}))},e.getIsVisible=()=>{var n,r;return(n=(r=t.getState().columnVisibility)==null?void 0:r[e.id])!=null?n:!0},e.getCanHide=()=>{var n,r;return((n=e.columnDef.enableHiding)!=null?n:!0)&&((r=t.options.enableHiding)!=null?r:!0)},e.getToggleVisibilityHandler=()=>n=>{e.toggleVisibility==null||e.toggleVisibility(n.target.checked)}},createRow:(e,t)=>{e._getAllVisibleCells=$e(()=>[e.getAllCells(),t.getState().columnVisibility],n=>n.filter(r=>r.column.getIsVisible()),Fe(t.options,"debugRows")),e.getVisibleCells=$e(()=>[e.getLeftVisibleCells(),e.getCenterVisibleCells(),e.getRightVisibleCells()],(n,r,a)=>[...n,...r,...a],Fe(t.options,"debugRows"))},createTable:e=>{const t=(n,r)=>$e(()=>[r(),r().filter(a=>a.getIsVisible()).map(a=>a.id).join("_")],a=>a.filter(o=>o.getIsVisible==null?void 0:o.getIsVisible()),Fe(e.options,"debugColumns"));e.getVisibleFlatColumns=t("getVisibleFlatColumns",()=>e.getAllFlatColumns()),e.getVisibleLeafColumns=t("getVisibleLeafColumns",()=>e.getAllLeafColumns()),e.getLeftVisibleLeafColumns=t("getLeftVisibleLeafColumns",()=>e.getLeftLeafColumns()),e.getRightVisibleLeafColumns=t("getRightVisibleLeafColumns",()=>e.getRightLeafColumns()),e.getCenterVisibleLeafColumns=t("getCenterVisibleLeafColumns",()=>e.getCenterLeafColumns()),e.setColumnVisibility=n=>e.options.onColumnVisibilityChange==null?void 0:e.options.onColumnVisibilityChange(n),e.resetColumnVisibility=n=>{var r;e.setColumnVisibility(n?{}:(r=e.initialState.columnVisibility)!=null?r:{})},e.toggleAllColumnsVisible=n=>{var r;n=(r=n)!=null?r:!e.getIsAllColumnsVisible(),e.setColumnVisibility(e.getAllLeafColumns().reduce((a,o)=>({...a,[o.id]:n||!(o.getCanHide!=null&&o.getCanHide())}),{}))},e.getIsAllColumnsVisible=()=>!e.getAllLeafColumns().some(n=>!(n.getIsVisible!=null&&n.getIsVisible())),e.getIsSomeColumnsVisible=()=>e.getAllLeafColumns().some(n=>n.getIsVisible==null?void 0:n.getIsVisible()),e.getToggleAllColumnsVisibilityHandler=()=>n=>{var r;e.toggleAllColumnsVisible((r=n.target)==null?void 0:r.checked)}}};function Hu(e,t){return t?t==="center"?e.getCenterVisibleLeafColumns():t==="left"?e.getLeftVisibleLeafColumns():e.getRightVisibleLeafColumns():e.getVisibleLeafColumns()}const h2=[TX,tQ,VX,GX,OX,eQ,BX,IX,qX,WX,RX];function nQ(e){var t;(e.debugAll||e.debugTable)&&console.info("Creating Table Instance...");let n={_features:h2};const r=n._features.reduce((u,d)=>Object.assign(u,d.getDefaultOptions==null?void 0:d.getDefaultOptions(n)),{}),a=u=>n.options.mergeOptions?n.options.mergeOptions(r,u):{...r,...u};let i={...{},...(t=e.initialState)!=null?t:{}};n._features.forEach(u=>{var d;i=(d=u.getInitialState==null?void 0:u.getInitialState(i))!=null?d:i});const s=[];let l=!1;const c={_features:h2,options:{...r,...e},initialState:i,_queue:u=>{s.push(u),l||(l=!0,Promise.resolve().then(()=>{for(;s.length;)s.shift()();l=!1}).catch(d=>setTimeout(()=>{throw d})))},reset:()=>{n.setState(n.initialState)},setOptions:u=>{const d=ii(u,n.options);n.options=a(d)},getState:()=>n.options.state,setState:u=>{n.options.onStateChange==null||n.options.onStateChange(u)},_getRowId:(u,d,g)=>{var m;return(m=n.options.getRowId==null?void 0:n.options.getRowId(u,d,g))!=null?m:`${g?[g.id,d].join("."):d}`},getCoreRowModel:()=>(n._getCoreRowModel||(n._getCoreRowModel=n.options.getCoreRowModel(n)),n._getCoreRowModel()),getRowModel:()=>n.getPaginationRowModel(),getRow:(u,d)=>{let g=(d?n.getPrePaginationRowModel():n.getRowModel()).rowsById[u];if(!g&&(g=n.getCoreRowModel().rowsById[u],!g))throw new Error;return g},_getDefaultColumnDef:$e(()=>[n.options.defaultColumn],u=>{var d;return u=(d=u)!=null?d:{},{header:g=>{const m=g.header.column.columnDef;return m.accessorKey?m.accessorKey:m.accessorFn?m.id:null},cell:g=>{var m,b;return(m=(b=g.renderValue())==null||b.toString==null?void 0:b.toString())!=null?m:null},...n._features.reduce((g,m)=>Object.assign(g,m.getDefaultColumnDef==null?void 0:m.getDefaultColumnDef()),{}),...u}},Fe(e,"debugColumns")),_getColumnDefs:()=>n.options.columns,getAllColumns:$e(()=>[n._getColumnDefs()],u=>{const d=function(g,m,b){return b===void 0&&(b=0),g.map(y=>{const w=AX(n,y,b,m),v=y;return w.columns=v.columns?d(v.columns,w,b+1):[],w})};return d(u)},Fe(e,"debugColumns")),getAllFlatColumns:$e(()=>[n.getAllColumns()],u=>u.flatMap(d=>d.getFlatColumns()),Fe(e,"debugColumns")),_getAllFlatColumnsById:$e(()=>[n.getAllFlatColumns()],u=>u.reduce((d,g)=>(d[g.id]=g,d),{}),Fe(e,"debugColumns")),getAllLeafColumns:$e(()=>[n.getAllColumns(),n._getOrderColumnsFn()],(u,d)=>{let g=u.flatMap(m=>m.getLeafColumns());return d(g)},Fe(e,"debugColumns")),getColumn:u=>n._getAllFlatColumnsById()[u]};Object.assign(n,c);for(let u=0;u{var i;return(i=o.getValue())!=null?i:e.options.renderFallbackValue},o={id:`${t.id}_${n.id}`,row:t,column:n,getValue:()=>t.getValue(r),renderValue:a,getContext:$e(()=>[e,n,t,o],(i,s,l,c)=>({table:i,column:s,row:l,cell:c,getValue:c.getValue,renderValue:c.renderValue}),Fe(e.options,"debugCells"))};return e._features.forEach(i=>{i.createCell==null||i.createCell(o,n,t,e)},{}),o}const aQ=(e,t,n,r,a,o,i)=>{let s={id:t,index:r,original:n,depth:a,parentId:i,_valuesCache:{},_uniqueValuesCache:{},getValue:l=>{if(s._valuesCache.hasOwnProperty(l))return s._valuesCache[l];const c=e.getColumn(l);if(c!=null&&c.accessorFn)return s._valuesCache[l]=c.accessorFn(s.original,r),s._valuesCache[l]},getUniqueValues:l=>{if(s._uniqueValuesCache.hasOwnProperty(l))return s._uniqueValuesCache[l];const c=e.getColumn(l);if(c!=null&&c.accessorFn)return c.columnDef.getUniqueValues?(s._uniqueValuesCache[l]=c.columnDef.getUniqueValues(s.original,r),s._uniqueValuesCache[l]):(s._uniqueValuesCache[l]=[s.getValue(l)],s._uniqueValuesCache[l])},renderValue:l=>{var c;return(c=s.getValue(l))!=null?c:e.options.renderFallbackValue},subRows:o??[],getLeafRows:()=>_X(s.subRows,l=>l.subRows),getParentRow:()=>s.parentId?e.getRow(s.parentId,!0):void 0,getParentRows:()=>{let l=[],c=s;for(;;){const u=c.getParentRow();if(!u)break;l.push(u),c=u}return l.reverse()},getAllCells:$e(()=>[e.getAllLeafColumns()],l=>l.map(c=>rQ(e,s,c,c.id)),Fe(e.options,"debugRows")),_getAllCellsByColumnId:$e(()=>[s.getAllCells()],l=>l.reduce((c,u)=>(c[u.column.id]=u,c),{}),Fe(e.options,"debugRows"))};for(let l=0;l$e(()=>[e.options.data],t=>{const n={rows:[],flatRows:[],rowsById:{}},r=function(a,o,i){o===void 0&&(o=0);const s=[];for(let c=0;ce._autoResetPageIndex()))}function iQ(e){const t=[],n=r=>{var a;t.push(r),(a=r.subRows)!=null&&a.length&&r.getIsExpanded()&&r.subRows.forEach(n)};return e.rows.forEach(n),{rows:t,flatRows:e.flatRows,rowsById:e.rowsById}}function sQ(e){return t=>$e(()=>[t.getState().pagination,t.getPrePaginationRowModel(),t.options.paginateExpandedRows?void 0:t.getState().expanded],(n,r)=>{if(!r.rows.length)return r;const{pageSize:a,pageIndex:o}=n;let{rows:i,flatRows:s,rowsById:l}=r;const c=a*o,u=c+a;i=i.slice(c,u);let d;t.options.paginateExpandedRows?d={rows:i,flatRows:s,rowsById:l}:d=iQ({rows:i,flatRows:s,rowsById:l}),d.flatRows=[];const g=m=>{d.flatRows.push(m),m.subRows.length&&m.subRows.forEach(g)};return d.rows.forEach(g),d},Fe(t.options,"debugTable"))}/** - * react-table - * - * Copyright (c) TanStack - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */function P6(e,t){return e?lQ(e)?p.createElement(e,t):e:null}function lQ(e){return cQ(e)||typeof e=="function"||uQ(e)}function cQ(e){return typeof e=="function"&&(()=>{const t=Object.getPrototypeOf(e);return t.prototype&&t.prototype.isReactComponent})()}function uQ(e){return typeof e=="object"&&typeof e.$$typeof=="symbol"&&["react.memo","react.forward_ref"].includes(e.$$typeof.description)}function dQ(e){const t={state:{},onStateChange:()=>{},renderFallbackValue:null,...e},[n]=p.useState(()=>({current:nQ(t)})),[r,a]=p.useState(()=>n.current.initialState);return n.current.setOptions(o=>({...o,...e,state:{...r,...e.state},onStateChange:i=>{a(i),e.onStateChange==null||e.onStateChange(i)}})),n.current}const $6=p.forwardRef(({className:e,...t},n)=>f.jsx("div",{className:"relative w-full overflow-auto",children:f.jsx("table",{ref:n,className:ee("caption-bottom w-full text-sm",e),...t})}));$6.displayName="Table";const F6=p.forwardRef(({className:e,...t},n)=>f.jsx("thead",{ref:n,className:ee("[&_tr]:border-b",e),...t}));F6.displayName="TableHeader";const _u=p.forwardRef(({className:e,...t},n)=>f.jsx("tbody",{ref:n,className:ee("[&_tr:last-child]:border-0",e),...t}));_u.displayName="TableBody";const fQ=p.forwardRef(({className:e,...t},n)=>f.jsx("tfoot",{ref:n,className:ee("bg-primary font-medium text-primary-foreground",e),...t}));fQ.displayName="TableFooter";const Zi=p.forwardRef(({className:e,...t},n)=>f.jsx("tr",{ref:n,className:ee("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",e),...t}));Zi.displayName="TableRow";const j6=p.forwardRef(({className:e,...t},n)=>f.jsx("th",{ref:n,className:ee("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",e),...t}));j6.displayName="TableHead";const ul=p.forwardRef(({className:e,...t},n)=>f.jsx("td",{ref:n,className:ee("p-4 align-middle [&:has([role=checkbox])]:pr-0",e),...t}));ul.displayName="TableCell";const pQ=p.forwardRef(({className:e,...t},n)=>f.jsx("caption",{ref:n,className:ee("mt-4 text-sm text-muted-foreground",e),...t}));pQ.displayName="TableCaption";function Pi({className:e,...t}){return f.jsx("div",{className:ee("animate-pulse rounded-md bg-muted",e),...t})}const gQ=ef("relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground",{variants:{variant:{default:"bg-background text-foreground",destructive:"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive"}},defaultVariants:{variant:"default"}}),Jm=p.forwardRef(({className:e,variant:t,...n},r)=>f.jsx("div",{ref:r,role:"alert",className:ee(gQ({variant:t}),e),...n}));Jm.displayName="Alert";const z6=p.forwardRef(({className:e,...t},n)=>f.jsx("h5",{ref:n,className:ee("mb-1 font-medium leading-none tracking-tight",e),...t}));z6.displayName="AlertTitle";const U6=p.forwardRef(({className:e,...t},n)=>f.jsx("div",{ref:n,className:ee("text-sm [&_p]:leading-relaxed",e),...t}));U6.displayName="AlertDescription";function mQ(e){var i;const{table:t,isLoading:n,expandedRowsContent:r,error:a}=e,o=p.useMemo(()=>t.getAllColumns().length,[t]);return n?f.jsx(_u,{children:Array.from({length:15}).map((s,l)=>f.jsx(Zi,{children:t.getVisibleFlatColumns().map(c=>f.jsx(ul,{width:c.getSize(),className:"text-center",children:f.jsx(Pi,{className:"w-[95%] h-2"})},c.id))},l))}):a?f.jsx(_u,{children:f.jsx(Zi,{children:f.jsx(ul,{colSpan:o,className:"text-center",children:f.jsx(Jm,{variant:"destructive",children:a})})})}):((i=t.getRowModel().rows)==null?void 0:i.length)===0?f.jsx(_u,{children:f.jsx(Zi,{children:f.jsx(ul,{colSpan:o,className:"h-24 text-center",children:"No results."})})}):f.jsx(_u,{children:t.getRowModel().rows.map((s,l)=>f.jsxs(f.Fragment,{children:[f.jsx(Zi,{"data-state":s.getIsSelected()&&"selected",className:ee(s.getIsExpanded()&&"border-b-0"),children:s.getVisibleCells().map(c=>f.jsx(ul,{style:{width:`${c.column.getSize()}px`},children:P6(c.column.columnDef.cell,c.getContext())},c.id))},s.id),s.getIsExpanded()?f.jsx(Zi,{children:f.jsx(ul,{colSpan:o,className:"text-center pt-0",children:r?r(l):null})},s.id):null]}))})}function uf({columns:e,data:t,renderPagination:n,className:r,isLoading:a,error:o,expandedRowsContent:i}){const s=dQ({data:t,columns:e,getCoreRowModel:oQ(),getPaginationRowModel:sQ()});return f.jsxs(f.Fragment,{children:[f.jsx("div",{className:ee("rounded-md border",r),children:f.jsxs($6,{children:[f.jsx(F6,{children:s.getHeaderGroups().map(l=>f.jsx(Zi,{children:l.headers.map(c=>f.jsx(j6,{children:c.isPlaceholder?null:P6(c.column.columnDef.header,c.getContext())},c.id))},l.id))}),f.jsx(mQ,{table:s,isLoading:!!a,error:o,expandedRowsContent:i})]})}),n&&n(s)]})}function df({table:e,className:t,renderAdditionalInfo:n}){return f.jsxs("div",{className:ee("flex items-center justify-end space-x-2",t),children:[n&&n(e),f.jsxs("div",{className:"space-x-2",children:[f.jsx(ue,{variant:"outline",size:"sm",onClick:()=>e.previousPage(),disabled:!e.getCanPreviousPage(),children:"Previous"}),f.jsx(ue,{variant:"outline",size:"sm",onClick:()=>e.nextPage(),disabled:!e.getCanNextPage(),children:"Next"})]})]})}const hQ=p.createContext(void 0);function x_(e){const t=p.useContext(hQ);return e||t||"ltr"}let Fb=0;function eh(){p.useEffect(()=>{var e,t;const n=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",(e=n[0])!==null&&e!==void 0?e:b2()),document.body.insertAdjacentElement("beforeend",(t=n[1])!==null&&t!==void 0?t:b2()),Fb++,()=>{Fb===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(r=>r.remove()),Fb--}},[])}function b2(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.cssText="outline: none; opacity: 0; position: fixed; pointer-events: none",e}const jb="focusScope.autoFocusOnMount",zb="focusScope.autoFocusOnUnmount",y2={bubbles:!1,cancelable:!0},th=p.forwardRef((e,t)=>{const{loop:n=!1,trapped:r=!1,onMountAutoFocus:a,onUnmountAutoFocus:o,...i}=e,[s,l]=p.useState(null),c=ur(a),u=ur(o),d=p.useRef(null),g=nt(t,y=>l(y)),m=p.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;p.useEffect(()=>{if(r){let h=function(x){if(m.paused||!s)return;const C=x.target;s.contains(C)?d.current=C:Ho(d.current,{select:!0})},S=function(x){if(m.paused||!s)return;const C=x.relatedTarget;C!==null&&(s.contains(C)||Ho(d.current,{select:!0}))},E=function(x){if(document.activeElement===document.body)for(const _ of x)_.removedNodes.length>0&&Ho(s)};var y=h,w=S,v=E;document.addEventListener("focusin",h),document.addEventListener("focusout",S);const k=new MutationObserver(E);return s&&k.observe(s,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",h),document.removeEventListener("focusout",S),k.disconnect()}}},[r,s,m.paused]),p.useEffect(()=>{if(s){S2.add(m);const y=document.activeElement;if(!s.contains(y)){const v=new CustomEvent(jb,y2);s.addEventListener(jb,c),s.dispatchEvent(v),v.defaultPrevented||(bQ(EQ(B6(s)),{select:!0}),document.activeElement===y&&Ho(s))}return()=>{s.removeEventListener(jb,c),setTimeout(()=>{const v=new CustomEvent(zb,y2);s.addEventListener(zb,u),s.dispatchEvent(v),v.defaultPrevented||Ho(y??document.body,{select:!0}),s.removeEventListener(zb,u),S2.remove(m)},0)}}},[s,c,u,m]);const b=p.useCallback(y=>{if(!n&&!r||m.paused)return;const w=y.key==="Tab"&&!y.altKey&&!y.ctrlKey&&!y.metaKey,v=document.activeElement;if(w&&v){const h=y.currentTarget,[S,E]=yQ(h);S&&E?!y.shiftKey&&v===E?(y.preventDefault(),n&&Ho(S,{select:!0})):y.shiftKey&&v===S&&(y.preventDefault(),n&&Ho(E,{select:!0})):v===h&&y.preventDefault()}},[n,r,m.paused]);return p.createElement(ze.div,W({tabIndex:-1},i,{ref:g,onKeyDown:b}))});function bQ(e,{select:t=!1}={}){const n=document.activeElement;for(const r of e)if(Ho(r,{select:t}),document.activeElement!==n)return}function yQ(e){const t=B6(e),n=v2(t,e),r=v2(t.reverse(),e);return[n,r]}function B6(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const a=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||a?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function v2(e,t){for(const n of e)if(!vQ(n,{upTo:t}))return n}function vQ(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function SQ(e){return e instanceof HTMLInputElement&&"select"in e}function Ho(e,{select:t=!1}={}){if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&SQ(e)&&t&&e.select()}}const S2=wQ();function wQ(){let e=[];return{add(t){const n=e[0];t!==n&&(n==null||n.pause()),e=w2(e,t),e.unshift(t)},remove(t){var n;e=w2(e,t),(n=e[0])===null||n===void 0||n.resume()}}}function w2(e,t){const n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function EQ(e){return e.filter(t=>t.tagName!=="A")}const xQ=Kd["useId".toString()]||(()=>{});let kQ=0;function bi(e){const[t,n]=p.useState(xQ());return Zr(()=>{e||n(r=>r??String(kQ++))},[e]),e||(t?`radix-${t}`:"")}const CQ=["top","right","bottom","left"],xi=Math.min,Er=Math.max,Og=Math.round,ep=Math.floor,ki=e=>({x:e,y:e}),_Q={left:"right",right:"left",bottom:"top",top:"bottom"},AQ={start:"end",end:"start"};function ek(e,t,n){return Er(e,xi(t,n))}function bo(e,t){return typeof e=="function"?e(t):e}function yo(e){return e.split("-")[0]}function $c(e){return e.split("-")[1]}function k_(e){return e==="x"?"y":"x"}function C_(e){return e==="y"?"height":"width"}function Fc(e){return["top","bottom"].includes(yo(e))?"y":"x"}function __(e){return k_(Fc(e))}function TQ(e,t,n){n===void 0&&(n=!1);const r=$c(e),a=__(e),o=C_(a);let i=a==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return t.reference[o]>t.floating[o]&&(i=Dg(i)),[i,Dg(i)]}function RQ(e){const t=Dg(e);return[tk(e),t,tk(t)]}function tk(e){return e.replace(/start|end/g,t=>AQ[t])}function NQ(e,t,n){const r=["left","right"],a=["right","left"],o=["top","bottom"],i=["bottom","top"];switch(e){case"top":case"bottom":return n?t?a:r:t?r:a;case"left":case"right":return t?o:i;default:return[]}}function IQ(e,t,n,r){const a=$c(e);let o=NQ(yo(e),n==="start",r);return a&&(o=o.map(i=>i+"-"+a),t&&(o=o.concat(o.map(tk)))),o}function Dg(e){return e.replace(/left|right|bottom|top/g,t=>_Q[t])}function OQ(e){return{top:0,right:0,bottom:0,left:0,...e}}function H6(e){return typeof e!="number"?OQ(e):{top:e,right:e,bottom:e,left:e}}function Lg(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}function E2(e,t,n){let{reference:r,floating:a}=e;const o=Fc(t),i=__(t),s=C_(i),l=yo(t),c=o==="y",u=r.x+r.width/2-a.width/2,d=r.y+r.height/2-a.height/2,g=r[s]/2-a[s]/2;let m;switch(l){case"top":m={x:u,y:r.y-a.height};break;case"bottom":m={x:u,y:r.y+r.height};break;case"right":m={x:r.x+r.width,y:d};break;case"left":m={x:r.x-a.width,y:d};break;default:m={x:r.x,y:r.y}}switch($c(t)){case"start":m[i]-=g*(n&&c?-1:1);break;case"end":m[i]+=g*(n&&c?-1:1);break}return m}const DQ=async(e,t,n)=>{const{placement:r="bottom",strategy:a="absolute",middleware:o=[],platform:i}=n,s=o.filter(Boolean),l=await(i.isRTL==null?void 0:i.isRTL(t));let c=await i.getElementRects({reference:e,floating:t,strategy:a}),{x:u,y:d}=E2(c,r,l),g=r,m={},b=0;for(let y=0;y({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:a,rects:o,platform:i,elements:s,middlewareData:l}=t,{element:c,padding:u=0}=bo(e,t)||{};if(c==null)return{};const d=H6(u),g={x:n,y:r},m=__(a),b=C_(m),y=await i.getDimensions(c),w=m==="y",v=w?"top":"left",h=w?"bottom":"right",S=w?"clientHeight":"clientWidth",E=o.reference[b]+o.reference[m]-g[m]-o.floating[b],k=g[m]-o.reference[m],x=await(i.getOffsetParent==null?void 0:i.getOffsetParent(c));let C=x?x[S]:0;(!C||!await(i.isElement==null?void 0:i.isElement(x)))&&(C=s.floating[S]||o.floating[b]);const _=E/2-k/2,R=C/2-y[b]/2-1,T=xi(d[v],R),L=xi(d[h],R),D=T,H=C-y[b]-L,z=C/2-y[b]/2+_,M=ek(D,z,H),U=!l.arrow&&$c(a)!=null&&z!=M&&o.reference[b]/2-(zD<=0)){var R,T;const D=(((R=o.flip)==null?void 0:R.index)||0)+1,H=k[D];if(H)return{data:{index:D,overflows:_},reset:{placement:H}};let z=(T=_.filter(M=>M.overflows[0]<=0).sort((M,U)=>M.overflows[1]-U.overflows[1])[0])==null?void 0:T.placement;if(!z)switch(m){case"bestFit":{var L;const M=(L=_.map(U=>[U.placement,U.overflows.filter(X=>X>0).reduce((X,j)=>X+j,0)]).sort((U,X)=>U[1]-X[1])[0])==null?void 0:L[0];M&&(z=M);break}case"initialPlacement":z=s;break}if(a!==z)return{reset:{placement:z}}}return{}}}};function k2(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function C2(e){return CQ.some(t=>e[t]>=0)}const MQ=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n}=t,{strategy:r="referenceHidden",...a}=bo(e,t);switch(r){case"referenceHidden":{const o=await Sd(t,{...a,elementContext:"reference"}),i=k2(o,n.reference);return{data:{referenceHiddenOffsets:i,referenceHidden:C2(i)}}}case"escaped":{const o=await Sd(t,{...a,altBoundary:!0}),i=k2(o,n.floating);return{data:{escapedOffsets:i,escaped:C2(i)}}}default:return{}}}}};async function PQ(e,t){const{placement:n,platform:r,elements:a}=e,o=await(r.isRTL==null?void 0:r.isRTL(a.floating)),i=yo(n),s=$c(n),l=Fc(n)==="y",c=["left","top"].includes(i)?-1:1,u=o&&l?-1:1,d=bo(t,e);let{mainAxis:g,crossAxis:m,alignmentAxis:b}=typeof d=="number"?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...d};return s&&typeof b=="number"&&(m=s==="end"?b*-1:b),l?{x:m*u,y:g*c}:{x:g*c,y:m*u}}const $Q=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){const{x:n,y:r}=t,a=await PQ(t,e);return{x:n+a.x,y:r+a.y,data:a}}}},FQ=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:a}=t,{mainAxis:o=!0,crossAxis:i=!1,limiter:s={fn:w=>{let{x:v,y:h}=w;return{x:v,y:h}}},...l}=bo(e,t),c={x:n,y:r},u=await Sd(t,l),d=Fc(yo(a)),g=k_(d);let m=c[g],b=c[d];if(o){const w=g==="y"?"top":"left",v=g==="y"?"bottom":"right",h=m+u[w],S=m-u[v];m=ek(h,m,S)}if(i){const w=d==="y"?"top":"left",v=d==="y"?"bottom":"right",h=b+u[w],S=b-u[v];b=ek(h,b,S)}const y=s.fn({...t,[g]:m,[d]:b});return{...y,data:{x:y.x-n,y:y.y-r}}}}},jQ=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:n,y:r,placement:a,rects:o,middlewareData:i}=t,{offset:s=0,mainAxis:l=!0,crossAxis:c=!0}=bo(e,t),u={x:n,y:r},d=Fc(a),g=k_(d);let m=u[g],b=u[d];const y=bo(s,t),w=typeof y=="number"?{mainAxis:y,crossAxis:0}:{mainAxis:0,crossAxis:0,...y};if(l){const S=g==="y"?"height":"width",E=o.reference[g]-o.floating[S]+w.mainAxis,k=o.reference[g]+o.reference[S]-w.mainAxis;mk&&(m=k)}if(c){var v,h;const S=g==="y"?"width":"height",E=["top","left"].includes(yo(a)),k=o.reference[d]-o.floating[S]+(E&&((v=i.offset)==null?void 0:v[d])||0)+(E?0:w.crossAxis),x=o.reference[d]+o.reference[S]+(E?0:((h=i.offset)==null?void 0:h[d])||0)-(E?w.crossAxis:0);bx&&(b=x)}return{[g]:m,[d]:b}}}},zQ=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){const{placement:n,rects:r,platform:a,elements:o}=t,{apply:i=()=>{},...s}=bo(e,t),l=await Sd(t,s),c=yo(n),u=$c(n),d=Fc(n)==="y",{width:g,height:m}=r.floating;let b,y;c==="top"||c==="bottom"?(b=c,y=u===(await(a.isRTL==null?void 0:a.isRTL(o.floating))?"start":"end")?"left":"right"):(y=c,b=u==="end"?"top":"bottom");const w=m-l[b],v=g-l[y],h=!t.middlewareData.shift;let S=w,E=v;if(d){const x=g-l.left-l.right;E=u||h?xi(v,x):x}else{const x=m-l.top-l.bottom;S=u||h?xi(w,x):x}if(h&&!u){const x=Er(l.left,0),C=Er(l.right,0),_=Er(l.top,0),R=Er(l.bottom,0);d?E=g-2*(x!==0||C!==0?x+C:Er(l.left,l.right)):S=m-2*(_!==0||R!==0?_+R:Er(l.top,l.bottom))}await i({...t,availableWidth:E,availableHeight:S});const k=await a.getDimensions(o.floating);return g!==k.width||m!==k.height?{reset:{rects:!0}}:{}}}};function Ci(e){return V6(e)?(e.nodeName||"").toLowerCase():"#document"}function _r(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function Ao(e){var t;return(t=(V6(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function V6(e){return e instanceof Node||e instanceof _r(e).Node}function vo(e){return e instanceof Element||e instanceof _r(e).Element}function ja(e){return e instanceof HTMLElement||e instanceof _r(e).HTMLElement}function _2(e){return typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof _r(e).ShadowRoot}function ff(e){const{overflow:t,overflowX:n,overflowY:r,display:a}=Xr(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!["inline","contents"].includes(a)}function UQ(e){return["table","td","th"].includes(Ci(e))}function A_(e){const t=T_(),n=Xr(e);return n.transform!=="none"||n.perspective!=="none"||(n.containerType?n.containerType!=="normal":!1)||!t&&(n.backdropFilter?n.backdropFilter!=="none":!1)||!t&&(n.filter?n.filter!=="none":!1)||["transform","perspective","filter"].some(r=>(n.willChange||"").includes(r))||["paint","layout","strict","content"].some(r=>(n.contain||"").includes(r))}function BQ(e){let t=vc(e);for(;ja(t)&&!nh(t);){if(A_(t))return t;t=vc(t)}return null}function T_(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function nh(e){return["html","body","#document"].includes(Ci(e))}function Xr(e){return _r(e).getComputedStyle(e)}function rh(e){return vo(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function vc(e){if(Ci(e)==="html")return e;const t=e.assignedSlot||e.parentNode||_2(e)&&e.host||Ao(e);return _2(t)?t.host:t}function q6(e){const t=vc(e);return nh(t)?e.ownerDocument?e.ownerDocument.body:e.body:ja(t)&&ff(t)?t:q6(t)}function wd(e,t,n){var r;t===void 0&&(t=[]),n===void 0&&(n=!0);const a=q6(e),o=a===((r=e.ownerDocument)==null?void 0:r.body),i=_r(a);return o?t.concat(i,i.visualViewport||[],ff(a)?a:[],i.frameElement&&n?wd(i.frameElement):[]):t.concat(a,wd(a,[],n))}function G6(e){const t=Xr(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const a=ja(e),o=a?e.offsetWidth:n,i=a?e.offsetHeight:r,s=Og(n)!==o||Og(r)!==i;return s&&(n=o,r=i),{width:n,height:r,$:s}}function R_(e){return vo(e)?e:e.contextElement}function Ul(e){const t=R_(e);if(!ja(t))return ki(1);const n=t.getBoundingClientRect(),{width:r,height:a,$:o}=G6(t);let i=(o?Og(n.width):n.width)/r,s=(o?Og(n.height):n.height)/a;return(!i||!Number.isFinite(i))&&(i=1),(!s||!Number.isFinite(s))&&(s=1),{x:i,y:s}}const HQ=ki(0);function W6(e){const t=_r(e);return!T_()||!t.visualViewport?HQ:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function VQ(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==_r(e)?!1:t}function As(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);const a=e.getBoundingClientRect(),o=R_(e);let i=ki(1);t&&(r?vo(r)&&(i=Ul(r)):i=Ul(e));const s=VQ(o,n,r)?W6(o):ki(0);let l=(a.left+s.x)/i.x,c=(a.top+s.y)/i.y,u=a.width/i.x,d=a.height/i.y;if(o){const g=_r(o),m=r&&vo(r)?_r(r):r;let b=g.frameElement;for(;b&&r&&m!==g;){const y=Ul(b),w=b.getBoundingClientRect(),v=Xr(b),h=w.left+(b.clientLeft+parseFloat(v.paddingLeft))*y.x,S=w.top+(b.clientTop+parseFloat(v.paddingTop))*y.y;l*=y.x,c*=y.y,u*=y.x,d*=y.y,l+=h,c+=S,b=_r(b).frameElement}}return Lg({width:u,height:d,x:l,y:c})}function qQ(e){let{rect:t,offsetParent:n,strategy:r}=e;const a=ja(n),o=Ao(n);if(n===o)return t;let i={scrollLeft:0,scrollTop:0},s=ki(1);const l=ki(0);if((a||!a&&r!=="fixed")&&((Ci(n)!=="body"||ff(o))&&(i=rh(n)),ja(n))){const c=As(n);s=Ul(n),l.x=c.x+n.clientLeft,l.y=c.y+n.clientTop}return{width:t.width*s.x,height:t.height*s.y,x:t.x*s.x-i.scrollLeft*s.x+l.x,y:t.y*s.y-i.scrollTop*s.y+l.y}}function GQ(e){return Array.from(e.getClientRects())}function K6(e){return As(Ao(e)).left+rh(e).scrollLeft}function WQ(e){const t=Ao(e),n=rh(e),r=e.ownerDocument.body,a=Er(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),o=Er(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let i=-n.scrollLeft+K6(e);const s=-n.scrollTop;return Xr(r).direction==="rtl"&&(i+=Er(t.clientWidth,r.clientWidth)-a),{width:a,height:o,x:i,y:s}}function KQ(e,t){const n=_r(e),r=Ao(e),a=n.visualViewport;let o=r.clientWidth,i=r.clientHeight,s=0,l=0;if(a){o=a.width,i=a.height;const c=T_();(!c||c&&t==="fixed")&&(s=a.offsetLeft,l=a.offsetTop)}return{width:o,height:i,x:s,y:l}}function YQ(e,t){const n=As(e,!0,t==="fixed"),r=n.top+e.clientTop,a=n.left+e.clientLeft,o=ja(e)?Ul(e):ki(1),i=e.clientWidth*o.x,s=e.clientHeight*o.y,l=a*o.x,c=r*o.y;return{width:i,height:s,x:l,y:c}}function A2(e,t,n){let r;if(t==="viewport")r=KQ(e,n);else if(t==="document")r=WQ(Ao(e));else if(vo(t))r=YQ(t,n);else{const a=W6(e);r={...t,x:t.x-a.x,y:t.y-a.y}}return Lg(r)}function Y6(e,t){const n=vc(e);return n===t||!vo(n)||nh(n)?!1:Xr(n).position==="fixed"||Y6(n,t)}function ZQ(e,t){const n=t.get(e);if(n)return n;let r=wd(e,[],!1).filter(s=>vo(s)&&Ci(s)!=="body"),a=null;const o=Xr(e).position==="fixed";let i=o?vc(e):e;for(;vo(i)&&!nh(i);){const s=Xr(i),l=A_(i);!l&&s.position==="fixed"&&(a=null),(o?!l&&!a:!l&&s.position==="static"&&!!a&&["absolute","fixed"].includes(a.position)||ff(i)&&!l&&Y6(e,i))?r=r.filter(u=>u!==i):a=s,i=vc(i)}return t.set(e,r),r}function XQ(e){let{element:t,boundary:n,rootBoundary:r,strategy:a}=e;const i=[...n==="clippingAncestors"?ZQ(t,this._c):[].concat(n),r],s=i[0],l=i.reduce((c,u)=>{const d=A2(t,u,a);return c.top=Er(d.top,c.top),c.right=xi(d.right,c.right),c.bottom=xi(d.bottom,c.bottom),c.left=Er(d.left,c.left),c},A2(t,s,a));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}}function QQ(e){return G6(e)}function JQ(e,t,n){const r=ja(t),a=Ao(t),o=n==="fixed",i=As(e,!0,o,t);let s={scrollLeft:0,scrollTop:0};const l=ki(0);if(r||!r&&!o)if((Ci(t)!=="body"||ff(a))&&(s=rh(t)),r){const c=As(t,!0,o,t);l.x=c.x+t.clientLeft,l.y=c.y+t.clientTop}else a&&(l.x=K6(a));return{x:i.left+s.scrollLeft-l.x,y:i.top+s.scrollTop-l.y,width:i.width,height:i.height}}function T2(e,t){return!ja(e)||Xr(e).position==="fixed"?null:t?t(e):e.offsetParent}function Z6(e,t){const n=_r(e);if(!ja(e))return n;let r=T2(e,t);for(;r&&UQ(r)&&Xr(r).position==="static";)r=T2(r,t);return r&&(Ci(r)==="html"||Ci(r)==="body"&&Xr(r).position==="static"&&!A_(r))?n:r||BQ(e)||n}const eJ=async function(e){let{reference:t,floating:n,strategy:r}=e;const a=this.getOffsetParent||Z6,o=this.getDimensions;return{reference:JQ(t,await a(n),r),floating:{x:0,y:0,...await o(n)}}};function tJ(e){return Xr(e).direction==="rtl"}const nJ={convertOffsetParentRelativeRectToViewportRelativeRect:qQ,getDocumentElement:Ao,getClippingRect:XQ,getOffsetParent:Z6,getElementRects:eJ,getClientRects:GQ,getDimensions:QQ,getScale:Ul,isElement:vo,isRTL:tJ};function rJ(e,t){let n=null,r;const a=Ao(e);function o(){clearTimeout(r),n&&n.disconnect(),n=null}function i(s,l){s===void 0&&(s=!1),l===void 0&&(l=1),o();const{left:c,top:u,width:d,height:g}=e.getBoundingClientRect();if(s||t(),!d||!g)return;const m=ep(u),b=ep(a.clientWidth-(c+d)),y=ep(a.clientHeight-(u+g)),w=ep(c),h={rootMargin:-m+"px "+-b+"px "+-y+"px "+-w+"px",threshold:Er(0,xi(1,l))||1};let S=!0;function E(k){const x=k[0].intersectionRatio;if(x!==l){if(!S)return i();x?i(!1,x):r=setTimeout(()=>{i(!1,1e-7)},100)}S=!1}try{n=new IntersectionObserver(E,{...h,root:a.ownerDocument})}catch{n=new IntersectionObserver(E,h)}n.observe(e)}return i(!0),o}function aJ(e,t,n,r){r===void 0&&(r={});const{ancestorScroll:a=!0,ancestorResize:o=!0,elementResize:i=typeof ResizeObserver=="function",layoutShift:s=typeof IntersectionObserver=="function",animationFrame:l=!1}=r,c=R_(e),u=a||o?[...c?wd(c):[],...wd(t)]:[];u.forEach(v=>{a&&v.addEventListener("scroll",n,{passive:!0}),o&&v.addEventListener("resize",n)});const d=c&&s?rJ(c,n):null;let g=-1,m=null;i&&(m=new ResizeObserver(v=>{let[h]=v;h&&h.target===c&&m&&(m.unobserve(t),cancelAnimationFrame(g),g=requestAnimationFrame(()=>{m&&m.observe(t)})),n()}),c&&!l&&m.observe(c),m.observe(t));let b,y=l?As(e):null;l&&w();function w(){const v=As(e);y&&(v.x!==y.x||v.y!==y.y||v.width!==y.width||v.height!==y.height)&&n(),y=v,b=requestAnimationFrame(w)}return n(),()=>{u.forEach(v=>{a&&v.removeEventListener("scroll",n),o&&v.removeEventListener("resize",n)}),d&&d(),m&&m.disconnect(),m=null,l&&cancelAnimationFrame(b)}}const oJ=(e,t,n)=>{const r=new Map,a={platform:nJ,...n},o={...a.platform,_c:r};return DQ(e,t,{...a,platform:o})},iJ=e=>{function t(n){return{}.hasOwnProperty.call(n,"current")}return{name:"arrow",options:e,fn(n){const{element:r,padding:a}=typeof e=="function"?e(n):e;return r&&t(r)?r.current!=null?x2({element:r.current,padding:a}).fn(n):{}:r?x2({element:r,padding:a}).fn(n):{}}}};var qp=typeof document<"u"?p.useLayoutEffect:p.useEffect;function Mg(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let n,r,a;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(n=e.length,n!=t.length)return!1;for(r=n;r--!==0;)if(!Mg(e[r],t[r]))return!1;return!0}if(a=Object.keys(e),n=a.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!{}.hasOwnProperty.call(t,a[r]))return!1;for(r=n;r--!==0;){const o=a[r];if(!(o==="_owner"&&e.$$typeof)&&!Mg(e[o],t[o]))return!1}return!0}return e!==e&&t!==t}function X6(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function R2(e,t){const n=X6(e);return Math.round(t*n)/n}function N2(e){const t=p.useRef(e);return qp(()=>{t.current=e}),t}function sJ(e){e===void 0&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:r=[],platform:a,elements:{reference:o,floating:i}={},transform:s=!0,whileElementsMounted:l,open:c}=e,[u,d]=p.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[g,m]=p.useState(r);Mg(g,r)||m(r);const[b,y]=p.useState(null),[w,v]=p.useState(null),h=p.useCallback(U=>{U!=x.current&&(x.current=U,y(U))},[y]),S=p.useCallback(U=>{U!==C.current&&(C.current=U,v(U))},[v]),E=o||b,k=i||w,x=p.useRef(null),C=p.useRef(null),_=p.useRef(u),R=N2(l),T=N2(a),L=p.useCallback(()=>{if(!x.current||!C.current)return;const U={placement:t,strategy:n,middleware:g};T.current&&(U.platform=T.current),oJ(x.current,C.current,U).then(X=>{const j={...X,isPositioned:!0};D.current&&!Mg(_.current,j)&&(_.current=j,ba.flushSync(()=>{d(j)}))})},[g,t,n,T]);qp(()=>{c===!1&&_.current.isPositioned&&(_.current.isPositioned=!1,d(U=>({...U,isPositioned:!1})))},[c]);const D=p.useRef(!1);qp(()=>(D.current=!0,()=>{D.current=!1}),[]),qp(()=>{if(E&&(x.current=E),k&&(C.current=k),E&&k){if(R.current)return R.current(E,k,L);L()}},[E,k,L,R]);const H=p.useMemo(()=>({reference:x,floating:C,setReference:h,setFloating:S}),[h,S]),z=p.useMemo(()=>({reference:E,floating:k}),[E,k]),M=p.useMemo(()=>{const U={position:n,left:0,top:0};if(!z.floating)return U;const X=R2(z.floating,u.x),j=R2(z.floating,u.y);return s?{...U,transform:"translate("+X+"px, "+j+"px)",...X6(z.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:X,top:j}},[n,s,z.floating,u.x,u.y]);return p.useMemo(()=>({...u,update:L,refs:H,elements:z,floatingStyles:M}),[u,L,H,z,M])}function N_(e){const[t,n]=p.useState(void 0);return Zr(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const r=new ResizeObserver(a=>{if(!Array.isArray(a)||!a.length)return;const o=a[0];let i,s;if("borderBoxSize"in o){const l=o.borderBoxSize,c=Array.isArray(l)?l[0]:l;i=c.inlineSize,s=c.blockSize}else i=e.offsetWidth,s=e.offsetHeight;n({width:i,height:s})});return r.observe(e,{box:"border-box"}),()=>r.unobserve(e)}else n(void 0)},[e]),t}const Q6="Popper",[J6,qa]=zn(Q6),[lJ,e7]=J6(Q6),cJ=e=>{const{__scopePopper:t,children:n}=e,[r,a]=p.useState(null);return p.createElement(lJ,{scope:t,anchor:r,onAnchorChange:a},n)},uJ="PopperAnchor",dJ=p.forwardRef((e,t)=>{const{__scopePopper:n,virtualRef:r,...a}=e,o=e7(uJ,n),i=p.useRef(null),s=nt(t,i);return p.useEffect(()=>{o.onAnchorChange((r==null?void 0:r.current)||i.current)}),r?null:p.createElement(ze.div,W({},a,{ref:s}))}),t7="PopperContent",[fJ,tTe]=J6(t7),pJ=p.forwardRef((e,t)=>{var n,r,a,o,i,s,l,c;const{__scopePopper:u,side:d="bottom",sideOffset:g=0,align:m="center",alignOffset:b=0,arrowPadding:y=0,avoidCollisions:w=!0,collisionBoundary:v=[],collisionPadding:h=0,sticky:S="partial",hideWhenDetached:E=!1,updatePositionStrategy:k="optimized",onPlaced:x,...C}=e,_=e7(t7,u),[R,T]=p.useState(null),L=nt(t,mt=>T(mt)),[D,H]=p.useState(null),z=N_(D),M=(n=z==null?void 0:z.width)!==null&&n!==void 0?n:0,U=(r=z==null?void 0:z.height)!==null&&r!==void 0?r:0,X=d+(m!=="center"?"-"+m:""),j=typeof h=="number"?h:{top:0,right:0,bottom:0,left:0,...h},O=Array.isArray(v)?v:[v],A=O.length>0,V={padding:j,boundary:O.filter(gJ),altBoundary:A},{refs:P,floatingStyles:N,placement:K,isPositioned:ae,middlewareData:ne}=sJ({strategy:"fixed",placement:X,whileElementsMounted:(...mt)=>aJ(...mt,{animationFrame:k==="always"}),elements:{reference:_.anchor},middleware:[$Q({mainAxis:g+U,alignmentAxis:b}),w&&FQ({mainAxis:!0,crossAxis:!1,limiter:S==="partial"?jQ():void 0,...V}),w&&LQ({...V}),zQ({...V,apply:({elements:mt,rects:Hn,availableWidth:F,availableHeight:q})=>{const{width:Y,height:ye}=Hn.reference,de=mt.floating.style;de.setProperty("--radix-popper-available-width",`${F}px`),de.setProperty("--radix-popper-available-height",`${q}px`),de.setProperty("--radix-popper-anchor-width",`${Y}px`),de.setProperty("--radix-popper-anchor-height",`${ye}px`)}}),D&&iJ({element:D,padding:y}),mJ({arrowWidth:M,arrowHeight:U}),E&&MQ({strategy:"referenceHidden",...V})]}),[Q,pe]=n7(K),he=ur(x);Zr(()=>{ae&&(he==null||he())},[ae,he]);const re=(a=ne.arrow)===null||a===void 0?void 0:a.x,Ee=(o=ne.arrow)===null||o===void 0?void 0:o.y,ke=((i=ne.arrow)===null||i===void 0?void 0:i.centerOffset)!==0,[We,Vt]=p.useState();return Zr(()=>{R&&Vt(window.getComputedStyle(R).zIndex)},[R]),p.createElement("div",{ref:P.setFloating,"data-radix-popper-content-wrapper":"",style:{...N,transform:ae?N.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:We,["--radix-popper-transform-origin"]:[(s=ne.transformOrigin)===null||s===void 0?void 0:s.x,(l=ne.transformOrigin)===null||l===void 0?void 0:l.y].join(" ")},dir:e.dir},p.createElement(fJ,{scope:u,placedSide:Q,onArrowChange:H,arrowX:re,arrowY:Ee,shouldHideArrow:ke},p.createElement(ze.div,W({"data-side":Q,"data-align":pe},C,{ref:L,style:{...C.style,animation:ae?void 0:"none",opacity:(c=ne.hide)!==null&&c!==void 0&&c.referenceHidden?0:void 0}}))))});function gJ(e){return e!==null}const mJ=e=>({name:"transformOrigin",options:e,fn(t){var n,r,a,o,i;const{placement:s,rects:l,middlewareData:c}=t,d=((n=c.arrow)===null||n===void 0?void 0:n.centerOffset)!==0,g=d?0:e.arrowWidth,m=d?0:e.arrowHeight,[b,y]=n7(s),w={start:"0%",center:"50%",end:"100%"}[y],v=((r=(a=c.arrow)===null||a===void 0?void 0:a.x)!==null&&r!==void 0?r:0)+g/2,h=((o=(i=c.arrow)===null||i===void 0?void 0:i.y)!==null&&o!==void 0?o:0)+m/2;let S="",E="";return b==="bottom"?(S=d?w:`${v}px`,E=`${-m}px`):b==="top"?(S=d?w:`${v}px`,E=`${l.floating.height+m}px`):b==="right"?(S=`${-m}px`,E=d?w:`${h}px`):b==="left"&&(S=`${l.floating.width+m}px`,E=d?w:`${h}px`),{data:{x:S,y:E}}}});function n7(e){const[t,n="center"]=e.split("-");return[t,n]}const ah=cJ,pf=dJ,gf=pJ,Ub="rovingFocusGroup.onEntryFocus",hJ={bubbles:!1,cancelable:!0},I_="RovingFocusGroup",[nk,r7,bJ]=Nm(I_),[yJ,oh]=zn(I_,[bJ]),[vJ,SJ]=yJ(I_),wJ=p.forwardRef((e,t)=>p.createElement(nk.Provider,{scope:e.__scopeRovingFocusGroup},p.createElement(nk.Slot,{scope:e.__scopeRovingFocusGroup},p.createElement(EJ,W({},e,{ref:t}))))),EJ=p.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:n,orientation:r,loop:a=!1,dir:o,currentTabStopId:i,defaultCurrentTabStopId:s,onCurrentTabStopIdChange:l,onEntryFocus:c,...u}=e,d=p.useRef(null),g=nt(t,d),m=x_(o),[b=null,y]=Fa({prop:i,defaultProp:s,onChange:l}),[w,v]=p.useState(!1),h=ur(c),S=r7(n),E=p.useRef(!1),[k,x]=p.useState(0);return p.useEffect(()=>{const C=d.current;if(C)return C.addEventListener(Ub,h),()=>C.removeEventListener(Ub,h)},[h]),p.createElement(vJ,{scope:n,orientation:r,dir:m,loop:a,currentTabStopId:b,onItemFocus:p.useCallback(C=>y(C),[y]),onItemShiftTab:p.useCallback(()=>v(!0),[]),onFocusableItemAdd:p.useCallback(()=>x(C=>C+1),[]),onFocusableItemRemove:p.useCallback(()=>x(C=>C-1),[])},p.createElement(ze.div,W({tabIndex:w||k===0?-1:0,"data-orientation":r},u,{ref:g,style:{outline:"none",...e.style},onMouseDown:fe(e.onMouseDown,()=>{E.current=!0}),onFocus:fe(e.onFocus,C=>{const _=!E.current;if(C.target===C.currentTarget&&_&&!w){const R=new CustomEvent(Ub,hJ);if(C.currentTarget.dispatchEvent(R),!R.defaultPrevented){const T=S().filter(M=>M.focusable),L=T.find(M=>M.active),D=T.find(M=>M.id===b),z=[L,D,...T].filter(Boolean).map(M=>M.ref.current);a7(z)}}E.current=!1}),onBlur:fe(e.onBlur,()=>v(!1))})))}),xJ="RovingFocusGroupItem",kJ=p.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:n,focusable:r=!0,active:a=!1,tabStopId:o,...i}=e,s=bi(),l=o||s,c=SJ(xJ,n),u=c.currentTabStopId===l,d=r7(n),{onFocusableItemAdd:g,onFocusableItemRemove:m}=c;return p.useEffect(()=>{if(r)return g(),()=>m()},[r,g,m]),p.createElement(nk.ItemSlot,{scope:n,id:l,focusable:r,active:a},p.createElement(ze.span,W({tabIndex:u?0:-1,"data-orientation":c.orientation},i,{ref:t,onMouseDown:fe(e.onMouseDown,b=>{r?c.onItemFocus(l):b.preventDefault()}),onFocus:fe(e.onFocus,()=>c.onItemFocus(l)),onKeyDown:fe(e.onKeyDown,b=>{if(b.key==="Tab"&&b.shiftKey){c.onItemShiftTab();return}if(b.target!==b.currentTarget)return;const y=AJ(b,c.orientation,c.dir);if(y!==void 0){b.preventDefault();let v=d().filter(h=>h.focusable).map(h=>h.ref.current);if(y==="last")v.reverse();else if(y==="prev"||y==="next"){y==="prev"&&v.reverse();const h=v.indexOf(b.currentTarget);v=c.loop?TJ(v,h+1):v.slice(h+1)}setTimeout(()=>a7(v))}})})))}),CJ={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function _J(e,t){return t!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function AJ(e,t,n){const r=_J(e.key,n);if(!(t==="vertical"&&["ArrowLeft","ArrowRight"].includes(r))&&!(t==="horizontal"&&["ArrowUp","ArrowDown"].includes(r)))return CJ[r]}function a7(e){const t=document.activeElement;for(const n of e)if(n===t||(n.focus(),document.activeElement!==t))return}function TJ(e,t){return e.map((n,r)=>e[(t+r)%e.length])}const o7=wJ,i7=kJ;var RJ=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},Qs=new WeakMap,tp=new WeakMap,np={},Bb=0,s7=function(e){return e&&(e.host||s7(e.parentNode))},NJ=function(e,t){return t.map(function(n){if(e.contains(n))return n;var r=s7(n);return r&&e.contains(r)?r:(console.error("aria-hidden",n,"in not contained inside",e,". Doing nothing"),null)}).filter(function(n){return!!n})},IJ=function(e,t,n,r){var a=NJ(t,Array.isArray(e)?e:[e]);np[n]||(np[n]=new WeakMap);var o=np[n],i=[],s=new Set,l=new Set(a),c=function(d){!d||s.has(d)||(s.add(d),c(d.parentNode))};a.forEach(c);var u=function(d){!d||l.has(d)||Array.prototype.forEach.call(d.children,function(g){if(s.has(g))u(g);else{var m=g.getAttribute(r),b=m!==null&&m!=="false",y=(Qs.get(g)||0)+1,w=(o.get(g)||0)+1;Qs.set(g,y),o.set(g,w),i.push(g),y===1&&b&&tp.set(g,!0),w===1&&g.setAttribute(n,"true"),b||g.setAttribute(r,"true")}})};return u(t),s.clear(),Bb++,function(){i.forEach(function(d){var g=Qs.get(d)-1,m=o.get(d)-1;Qs.set(d,g),o.set(d,m),g||(tp.has(d)||d.removeAttribute(r),tp.delete(d)),m||d.removeAttribute(n)}),Bb--,Bb||(Qs=new WeakMap,Qs=new WeakMap,tp=new WeakMap,np={})}},mf=function(e,t,n){n===void 0&&(n="data-aria-hidden");var r=Array.from(Array.isArray(e)?e:[e]),a=t||RJ(e);return a?(r.push.apply(r,Array.from(a.querySelectorAll("[aria-live]"))),IJ(r,a,n,"aria-hidden")):function(){return null}},Pn=function(){return Pn=Object.assign||function(t){for(var n,r=1,a=arguments.length;r"u")return VJ;var t=qJ(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},WJ=D_(),KJ=function(e,t,n,r){var a=e.left,o=e.top,i=e.right,s=e.gap;return n===void 0&&(n="margin"),` - .`.concat(OJ,` { - overflow: hidden `).concat(r,`; - padding-right: `).concat(s,"px ").concat(r,`; - } - body { - overflow: hidden `).concat(r,`; - overscroll-behavior: contain; - `).concat([t&&"position: relative ".concat(r,";"),n==="margin"&&` - padding-left: `.concat(a,`px; - padding-top: `).concat(o,`px; - padding-right: `).concat(i,`px; - margin-left:0; - margin-top:0; - margin-right: `).concat(s,"px ").concat(r,`; - `),n==="padding"&&"padding-right: ".concat(s,"px ").concat(r,";")].filter(Boolean).join(""),` - } - - .`).concat(Vu,` { - right: `).concat(s,"px ").concat(r,`; - } - - .`).concat(qu,` { - margin-right: `).concat(s,"px ").concat(r,`; - } - - .`).concat(Vu," .").concat(Vu,` { - right: 0 `).concat(r,`; - } - - .`).concat(qu," .").concat(qu,` { - margin-right: 0 `).concat(r,`; - } - - body { - `).concat(DJ,": ").concat(s,`px; - } -`)},g7=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,a=r===void 0?"margin":r,o=p.useMemo(function(){return GJ(a)},[a]);return p.createElement(WJ,{styles:KJ(o,!t,a,n?"":"!important")})},rk=!1;if(typeof window<"u")try{var rp=Object.defineProperty({},"passive",{get:function(){return rk=!0,!0}});window.addEventListener("test",rp,rp),window.removeEventListener("test",rp,rp)}catch{rk=!1}var Js=rk?{passive:!1}:!1,YJ=function(e){return e.tagName==="TEXTAREA"},m7=function(e,t){var n=window.getComputedStyle(e);return n[t]!=="hidden"&&!(n.overflowY===n.overflowX&&!YJ(e)&&n[t]==="visible")},ZJ=function(e){return m7(e,"overflowY")},XJ=function(e){return m7(e,"overflowX")},O2=function(e,t){var n=t;do{typeof ShadowRoot<"u"&&n instanceof ShadowRoot&&(n=n.host);var r=h7(e,n);if(r){var a=b7(e,n),o=a[1],i=a[2];if(o>i)return!0}n=n.parentNode}while(n&&n!==document.body);return!1},QJ=function(e){var t=e.scrollTop,n=e.scrollHeight,r=e.clientHeight;return[t,n,r]},JJ=function(e){var t=e.scrollLeft,n=e.scrollWidth,r=e.clientWidth;return[t,n,r]},h7=function(e,t){return e==="v"?ZJ(t):XJ(t)},b7=function(e,t){return e==="v"?QJ(t):JJ(t)},eee=function(e,t){return e==="h"&&t==="rtl"?-1:1},tee=function(e,t,n,r,a){var o=eee(e,window.getComputedStyle(t).direction),i=o*r,s=n.target,l=t.contains(s),c=!1,u=i>0,d=0,g=0;do{var m=b7(e,s),b=m[0],y=m[1],w=m[2],v=y-w-o*b;(b||v)&&h7(e,s)&&(d+=v,g+=b),s=s.parentNode}while(!l&&s!==document.body||l&&(t.contains(s)||t===s));return(u&&(a&&d===0||!a&&i>d)||!u&&(a&&g===0||!a&&-i>g))&&(c=!0),c},ap=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},D2=function(e){return[e.deltaX,e.deltaY]},L2=function(e){return e&&"current"in e?e.current:e},nee=function(e,t){return e[0]===t[0]&&e[1]===t[1]},ree=function(e){return` - .block-interactivity-`.concat(e,` {pointer-events: none;} - .allow-interactivity-`).concat(e,` {pointer-events: all;} -`)},aee=0,el=[];function oee(e){var t=p.useRef([]),n=p.useRef([0,0]),r=p.useRef(),a=p.useState(aee++)[0],o=p.useState(function(){return D_()})[0],i=p.useRef(e);p.useEffect(function(){i.current=e},[e]),p.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(a));var y=l7([e.lockRef.current],(e.shards||[]).map(L2),!0).filter(Boolean);return y.forEach(function(w){return w.classList.add("allow-interactivity-".concat(a))}),function(){document.body.classList.remove("block-interactivity-".concat(a)),y.forEach(function(w){return w.classList.remove("allow-interactivity-".concat(a))})}}},[e.inert,e.lockRef.current,e.shards]);var s=p.useCallback(function(y,w){if("touches"in y&&y.touches.length===2)return!i.current.allowPinchZoom;var v=ap(y),h=n.current,S="deltaX"in y?y.deltaX:h[0]-v[0],E="deltaY"in y?y.deltaY:h[1]-v[1],k,x=y.target,C=Math.abs(S)>Math.abs(E)?"h":"v";if("touches"in y&&C==="h"&&x.type==="range")return!1;var _=O2(C,x);if(!_)return!0;if(_?k=C:(k=C==="v"?"h":"v",_=O2(C,x)),!_)return!1;if(!r.current&&"changedTouches"in y&&(S||E)&&(r.current=k),!k)return!0;var R=r.current||k;return tee(R,w,y,R==="h"?S:E,!0)},[]),l=p.useCallback(function(y){var w=y;if(!(!el.length||el[el.length-1]!==o)){var v="deltaY"in w?D2(w):ap(w),h=t.current.filter(function(k){return k.name===w.type&&k.target===w.target&&nee(k.delta,v)})[0];if(h&&h.should){w.cancelable&&w.preventDefault();return}if(!h){var S=(i.current.shards||[]).map(L2).filter(Boolean).filter(function(k){return k.contains(w.target)}),E=S.length>0?s(w,S[0]):!i.current.noIsolation;E&&w.cancelable&&w.preventDefault()}}},[]),c=p.useCallback(function(y,w,v,h){var S={name:y,delta:w,target:v,should:h};t.current.push(S),setTimeout(function(){t.current=t.current.filter(function(E){return E!==S})},1)},[]),u=p.useCallback(function(y){n.current=ap(y),r.current=void 0},[]),d=p.useCallback(function(y){c(y.type,D2(y),y.target,s(y,e.lockRef.current))},[]),g=p.useCallback(function(y){c(y.type,ap(y),y.target,s(y,e.lockRef.current))},[]);p.useEffect(function(){return el.push(o),e.setCallbacks({onScrollCapture:d,onWheelCapture:d,onTouchMoveCapture:g}),document.addEventListener("wheel",l,Js),document.addEventListener("touchmove",l,Js),document.addEventListener("touchstart",u,Js),function(){el=el.filter(function(y){return y!==o}),document.removeEventListener("wheel",l,Js),document.removeEventListener("touchmove",l,Js),document.removeEventListener("touchstart",u,Js)}},[]);var m=e.removeScrollBar,b=e.inert;return p.createElement(p.Fragment,null,b?p.createElement(o,{styles:ree(a)}):null,m?p.createElement(g7,{gapMode:"margin"}):null)}const iee=f7(p7,oee);var y7=p.forwardRef(function(e,t){return p.createElement(ih,Pn({},e,{ref:t,sideCar:iee}))});y7.classNames=ih.classNames;const sh=y7,ak=["Enter"," "],see=["ArrowDown","PageUp","Home"],v7=["ArrowUp","PageDown","End"],lee=[...see,...v7],cee={ltr:[...ak,"ArrowRight"],rtl:[...ak,"ArrowLeft"]},uee={ltr:["ArrowLeft"],rtl:["ArrowRight"]},lh="Menu",[Ed,dee,fee]=Nm(lh),[js,S7]=zn(lh,[fee,qa,oh]),w7=qa(),E7=oh(),[nTe,zs]=js(lh),[rTe,hf]=js(lh),pee=p.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e,a=w7(n);return p.createElement(pf,W({},a,r,{ref:t}))}),x7="MenuPortal",[gee,k7]=js(x7,{forceMount:void 0}),mee=e=>{const{__scopeMenu:t,forceMount:n,children:r,container:a}=e,o=zs(x7,t);return p.createElement(gee,{scope:t,forceMount:n},p.createElement(pr,{present:n||o.open},p.createElement(Jd,{asChild:!0,container:a},r)))},ga="MenuContent",[hee,L_]=js(ga),bee=p.forwardRef((e,t)=>{const n=k7(ga,e.__scopeMenu),{forceMount:r=n.forceMount,...a}=e,o=zs(ga,e.__scopeMenu),i=hf(ga,e.__scopeMenu);return p.createElement(Ed.Provider,{scope:e.__scopeMenu},p.createElement(pr,{present:r||o.open},p.createElement(Ed.Slot,{scope:e.__scopeMenu},i.modal?p.createElement(yee,W({},a,{ref:t})):p.createElement(vee,W({},a,{ref:t})))))}),yee=p.forwardRef((e,t)=>{const n=zs(ga,e.__scopeMenu),r=p.useRef(null),a=nt(t,r);return p.useEffect(()=>{const o=r.current;if(o)return mf(o)},[]),p.createElement(M_,W({},e,{ref:a,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:fe(e.onFocusOutside,o=>o.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)}))}),vee=p.forwardRef((e,t)=>{const n=zs(ga,e.__scopeMenu);return p.createElement(M_,W({},e,{ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)}))}),M_=p.forwardRef((e,t)=>{const{__scopeMenu:n,loop:r=!1,trapFocus:a,onOpenAutoFocus:o,onCloseAutoFocus:i,disableOutsidePointerEvents:s,onEntryFocus:l,onEscapeKeyDown:c,onPointerDownOutside:u,onFocusOutside:d,onInteractOutside:g,onDismiss:m,disableOutsideScroll:b,...y}=e,w=zs(ga,n),v=hf(ga,n),h=w7(n),S=E7(n),E=dee(n),[k,x]=p.useState(null),C=p.useRef(null),_=nt(t,C,w.onContentChange),R=p.useRef(0),T=p.useRef(""),L=p.useRef(0),D=p.useRef(null),H=p.useRef("right"),z=p.useRef(0),M=b?sh:p.Fragment,U=b?{as:$a,allowPinchZoom:!0}:void 0,X=O=>{var A,V;const P=T.current+O,N=E().filter(he=>!he.disabled),K=document.activeElement,ae=(A=N.find(he=>he.ref.current===K))===null||A===void 0?void 0:A.textValue,ne=N.map(he=>he.textValue),Q=Mee(ne,P,ae),pe=(V=N.find(he=>he.textValue===Q))===null||V===void 0?void 0:V.ref.current;(function he(re){T.current=re,window.clearTimeout(R.current),re!==""&&(R.current=window.setTimeout(()=>he(""),1e3))})(P),pe&&setTimeout(()=>pe.focus())};p.useEffect(()=>()=>window.clearTimeout(R.current),[]),eh();const j=p.useCallback(O=>{var A,V;return H.current===((A=D.current)===null||A===void 0?void 0:A.side)&&$ee(O,(V=D.current)===null||V===void 0?void 0:V.area)},[]);return p.createElement(hee,{scope:n,searchRef:T,onItemEnter:p.useCallback(O=>{j(O)&&O.preventDefault()},[j]),onItemLeave:p.useCallback(O=>{var A;j(O)||((A=C.current)===null||A===void 0||A.focus(),x(null))},[j]),onTriggerLeave:p.useCallback(O=>{j(O)&&O.preventDefault()},[j]),pointerGraceTimerRef:L,onPointerGraceIntentChange:p.useCallback(O=>{D.current=O},[])},p.createElement(M,U,p.createElement(th,{asChild:!0,trapped:a,onMountAutoFocus:fe(o,O=>{var A;O.preventDefault(),(A=C.current)===null||A===void 0||A.focus()}),onUnmountAutoFocus:i},p.createElement(Ls,{asChild:!0,disableOutsidePointerEvents:s,onEscapeKeyDown:c,onPointerDownOutside:u,onFocusOutside:d,onInteractOutside:g,onDismiss:m},p.createElement(o7,W({asChild:!0},S,{dir:v.dir,orientation:"vertical",loop:r,currentTabStopId:k,onCurrentTabStopIdChange:x,onEntryFocus:fe(l,O=>{v.isUsingKeyboardRef.current||O.preventDefault()})}),p.createElement(gf,W({role:"menu","aria-orientation":"vertical","data-state":R7(w.open),"data-radix-menu-content":"",dir:v.dir},h,y,{ref:_,style:{outline:"none",...y.style},onKeyDown:fe(y.onKeyDown,O=>{const V=O.target.closest("[data-radix-menu-content]")===O.currentTarget,P=O.ctrlKey||O.altKey||O.metaKey,N=O.key.length===1;V&&(O.key==="Tab"&&O.preventDefault(),!P&&N&&X(O.key));const K=C.current;if(O.target!==K||!lee.includes(O.key))return;O.preventDefault();const ne=E().filter(Q=>!Q.disabled).map(Q=>Q.ref.current);v7.includes(O.key)&&ne.reverse(),Dee(ne)}),onBlur:fe(e.onBlur,O=>{O.currentTarget.contains(O.target)||(window.clearTimeout(R.current),T.current="")}),onPointerMove:fe(e.onPointerMove,xd(O=>{const A=O.target,V=z.current!==O.clientX;if(O.currentTarget.contains(A)&&V){const P=O.clientX>z.current?"right":"left";H.current=P,z.current=O.clientX}}))})))))))}),See=p.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e;return p.createElement(ze.div,W({},r,{ref:t}))}),ok="MenuItem",M2="menu.itemSelect",P_=p.forwardRef((e,t)=>{const{disabled:n=!1,onSelect:r,...a}=e,o=p.useRef(null),i=hf(ok,e.__scopeMenu),s=L_(ok,e.__scopeMenu),l=nt(t,o),c=p.useRef(!1),u=()=>{const d=o.current;if(!n&&d){const g=new CustomEvent(M2,{bubbles:!0,cancelable:!0});d.addEventListener(M2,m=>r==null?void 0:r(m),{once:!0}),KC(d,g),g.defaultPrevented?c.current=!1:i.onClose()}};return p.createElement(C7,W({},a,{ref:l,disabled:n,onClick:fe(e.onClick,u),onPointerDown:d=>{var g;(g=e.onPointerDown)===null||g===void 0||g.call(e,d),c.current=!0},onPointerUp:fe(e.onPointerUp,d=>{var g;c.current||(g=d.currentTarget)===null||g===void 0||g.click()}),onKeyDown:fe(e.onKeyDown,d=>{const g=s.searchRef.current!=="";n||g&&d.key===" "||ak.includes(d.key)&&(d.currentTarget.click(),d.preventDefault())})}))}),C7=p.forwardRef((e,t)=>{const{__scopeMenu:n,disabled:r=!1,textValue:a,...o}=e,i=L_(ok,n),s=E7(n),l=p.useRef(null),c=nt(t,l),[u,d]=p.useState(!1),[g,m]=p.useState("");return p.useEffect(()=>{const b=l.current;if(b){var y;m(((y=b.textContent)!==null&&y!==void 0?y:"").trim())}},[o.children]),p.createElement(Ed.ItemSlot,{scope:n,disabled:r,textValue:a??g},p.createElement(i7,W({asChild:!0},s,{focusable:!r}),p.createElement(ze.div,W({role:"menuitem","data-highlighted":u?"":void 0,"aria-disabled":r||void 0,"data-disabled":r?"":void 0},o,{ref:c,onPointerMove:fe(e.onPointerMove,xd(b=>{r?i.onItemLeave(b):(i.onItemEnter(b),b.defaultPrevented||b.currentTarget.focus())})),onPointerLeave:fe(e.onPointerLeave,xd(b=>i.onItemLeave(b))),onFocus:fe(e.onFocus,()=>d(!0)),onBlur:fe(e.onBlur,()=>d(!1))}))))}),wee=p.forwardRef((e,t)=>{const{checked:n=!1,onCheckedChange:r,...a}=e;return p.createElement(A7,{scope:e.__scopeMenu,checked:n},p.createElement(P_,W({role:"menuitemcheckbox","aria-checked":Pg(n)?"mixed":n},a,{ref:t,"data-state":$_(n),onSelect:fe(a.onSelect,()=>r==null?void 0:r(Pg(n)?!0:!n),{checkForDefaultPrevented:!1})})))}),Eee="MenuRadioGroup",[aTe,xee]=js(Eee,{value:void 0,onValueChange:()=>{}}),kee="MenuRadioItem",Cee=p.forwardRef((e,t)=>{const{value:n,...r}=e,a=xee(kee,e.__scopeMenu),o=n===a.value;return p.createElement(A7,{scope:e.__scopeMenu,checked:o},p.createElement(P_,W({role:"menuitemradio","aria-checked":o},r,{ref:t,"data-state":$_(o),onSelect:fe(r.onSelect,()=>{var i;return(i=a.onValueChange)===null||i===void 0?void 0:i.call(a,n)},{checkForDefaultPrevented:!1})})))}),_7="MenuItemIndicator",[A7,_ee]=js(_7,{checked:!1}),Aee=p.forwardRef((e,t)=>{const{__scopeMenu:n,forceMount:r,...a}=e,o=_ee(_7,n);return p.createElement(pr,{present:r||Pg(o.checked)||o.checked===!0},p.createElement(ze.span,W({},a,{ref:t,"data-state":$_(o.checked)})))}),Tee=p.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e;return p.createElement(ze.div,W({role:"separator","aria-orientation":"horizontal"},r,{ref:t}))}),Ree="MenuSub",[oTe,T7]=js(Ree),op="MenuSubTrigger",Nee=p.forwardRef((e,t)=>{const n=zs(op,e.__scopeMenu),r=hf(op,e.__scopeMenu),a=T7(op,e.__scopeMenu),o=L_(op,e.__scopeMenu),i=p.useRef(null),{pointerGraceTimerRef:s,onPointerGraceIntentChange:l}=o,c={__scopeMenu:e.__scopeMenu},u=p.useCallback(()=>{i.current&&window.clearTimeout(i.current),i.current=null},[]);return p.useEffect(()=>u,[u]),p.useEffect(()=>{const d=s.current;return()=>{window.clearTimeout(d),l(null)}},[s,l]),p.createElement(pee,W({asChild:!0},c),p.createElement(C7,W({id:a.triggerId,"aria-haspopup":"menu","aria-expanded":n.open,"aria-controls":a.contentId,"data-state":R7(n.open)},e,{ref:WC(t,a.onTriggerChange),onClick:d=>{var g;(g=e.onClick)===null||g===void 0||g.call(e,d),!(e.disabled||d.defaultPrevented)&&(d.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:fe(e.onPointerMove,xd(d=>{o.onItemEnter(d),!d.defaultPrevented&&!e.disabled&&!n.open&&!i.current&&(o.onPointerGraceIntentChange(null),i.current=window.setTimeout(()=>{n.onOpenChange(!0),u()},100))})),onPointerLeave:fe(e.onPointerLeave,xd(d=>{var g;u();const m=(g=n.content)===null||g===void 0?void 0:g.getBoundingClientRect();if(m){var b;const y=(b=n.content)===null||b===void 0?void 0:b.dataset.side,w=y==="right",v=w?-5:5,h=m[w?"left":"right"],S=m[w?"right":"left"];o.onPointerGraceIntentChange({area:[{x:d.clientX+v,y:d.clientY},{x:h,y:m.top},{x:S,y:m.top},{x:S,y:m.bottom},{x:h,y:m.bottom}],side:y}),window.clearTimeout(s.current),s.current=window.setTimeout(()=>o.onPointerGraceIntentChange(null),300)}else{if(o.onTriggerLeave(d),d.defaultPrevented)return;o.onPointerGraceIntentChange(null)}})),onKeyDown:fe(e.onKeyDown,d=>{const g=o.searchRef.current!=="";if(!(e.disabled||g&&d.key===" ")&&cee[r.dir].includes(d.key)){var m;n.onOpenChange(!0),(m=n.content)===null||m===void 0||m.focus(),d.preventDefault()}})})))}),Iee="MenuSubContent",Oee=p.forwardRef((e,t)=>{const n=k7(ga,e.__scopeMenu),{forceMount:r=n.forceMount,...a}=e,o=zs(ga,e.__scopeMenu),i=hf(ga,e.__scopeMenu),s=T7(Iee,e.__scopeMenu),l=p.useRef(null),c=nt(t,l);return p.createElement(Ed.Provider,{scope:e.__scopeMenu},p.createElement(pr,{present:r||o.open},p.createElement(Ed.Slot,{scope:e.__scopeMenu},p.createElement(M_,W({id:s.contentId,"aria-labelledby":s.triggerId},a,{ref:c,align:"start",side:i.dir==="rtl"?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:u=>{var d;i.isUsingKeyboardRef.current&&((d=l.current)===null||d===void 0||d.focus()),u.preventDefault()},onCloseAutoFocus:u=>u.preventDefault(),onFocusOutside:fe(e.onFocusOutside,u=>{u.target!==s.trigger&&o.onOpenChange(!1)}),onEscapeKeyDown:fe(e.onEscapeKeyDown,u=>{i.onClose(),u.preventDefault()}),onKeyDown:fe(e.onKeyDown,u=>{const d=u.currentTarget.contains(u.target),g=uee[i.dir].includes(u.key);if(d&&g){var m;o.onOpenChange(!1),(m=s.trigger)===null||m===void 0||m.focus(),u.preventDefault()}})})))))});function R7(e){return e?"open":"closed"}function Pg(e){return e==="indeterminate"}function $_(e){return Pg(e)?"indeterminate":e?"checked":"unchecked"}function Dee(e){const t=document.activeElement;for(const n of e)if(n===t||(n.focus(),document.activeElement!==t))return}function Lee(e,t){return e.map((n,r)=>e[(t+r)%e.length])}function Mee(e,t,n){const a=t.length>1&&Array.from(t).every(c=>c===t[0])?t[0]:t,o=n?e.indexOf(n):-1;let i=Lee(e,Math.max(o,0));a.length===1&&(i=i.filter(c=>c!==n));const l=i.find(c=>c.toLowerCase().startsWith(a.toLowerCase()));return l!==n?l:void 0}function Pee(e,t){const{x:n,y:r}=e;let a=!1;for(let o=0,i=t.length-1;or!=u>r&&n<(c-s)*(r-l)/(u-l)+s&&(a=!a)}return a}function $ee(e,t){if(!t)return!1;const n={x:e.clientX,y:e.clientY};return Pee(n,t)}function xd(e){return t=>t.pointerType==="mouse"?e(t):void 0}const Fee=mee,jee=bee,zee=See,Uee=P_,Bee=wee,Hee=Cee,Vee=Aee,qee=Tee,Gee=Nee,Wee=Oee,N7="DropdownMenu",[Kee,iTe]=zn(N7,[S7]),Ga=S7(),[sTe,Yee]=Kee(N7),Zee=e=>{const{__scopeDropdownMenu:t,...n}=e,r=Ga(t);return p.createElement(Fee,W({},r,n))},Xee="DropdownMenuContent",Qee=p.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,a=Yee(Xee,n),o=Ga(n),i=p.useRef(!1);return p.createElement(jee,W({id:a.contentId,"aria-labelledby":a.triggerId},o,r,{ref:t,onCloseAutoFocus:fe(e.onCloseAutoFocus,s=>{var l;i.current||(l=a.triggerRef.current)===null||l===void 0||l.focus(),i.current=!1,s.preventDefault()}),onInteractOutside:fe(e.onInteractOutside,s=>{const l=s.detail.originalEvent,c=l.button===0&&l.ctrlKey===!0,u=l.button===2||c;(!a.modal||u)&&(i.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}}))}),Jee=p.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,a=Ga(n);return p.createElement(zee,W({},a,r,{ref:t}))}),ete=p.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,a=Ga(n);return p.createElement(Uee,W({},a,r,{ref:t}))}),tte=p.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,a=Ga(n);return p.createElement(Bee,W({},a,r,{ref:t}))}),nte=p.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,a=Ga(n);return p.createElement(Hee,W({},a,r,{ref:t}))}),rte=p.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,a=Ga(n);return p.createElement(Vee,W({},a,r,{ref:t}))}),ate=p.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,a=Ga(n);return p.createElement(qee,W({},a,r,{ref:t}))}),ote=p.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,a=Ga(n);return p.createElement(Gee,W({},a,r,{ref:t}))}),ite=p.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,a=Ga(n);return p.createElement(Wee,W({},a,r,{ref:t,style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}}))}),ste=Zee,I7=Qee,O7=Jee,D7=ete,L7=tte,M7=nte,P7=rte,$7=ate,F7=ote,j7=ite,lte=p.forwardRef(({className:e,inset:t,children:n,...r},a)=>f.jsxs(F7,{ref:a,className:ee("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent",t&&"pl-8",e),...r,children:[n,f.jsx($m,{className:"ml-auto h-4 w-4"})]}));lte.displayName=F7.displayName;const cte=p.forwardRef(({className:e,...t},n)=>f.jsx(j7,{ref:n,className:ee("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...t}));cte.displayName=j7.displayName;const ute=p.forwardRef(({className:e,sideOffset:t=4,...n},r)=>f.jsx(ste,{children:f.jsx(I7,{ref:r,sideOffset:t,className:ee("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...n})}));ute.displayName=I7.displayName;const dte=p.forwardRef(({className:e,inset:t,...n},r)=>f.jsx(D7,{ref:r,className:ee("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t&&"pl-8",e),...n}));dte.displayName=D7.displayName;const fte=p.forwardRef(({className:e,children:t,checked:n,...r},a)=>f.jsxs(L7,{ref:a,className:ee("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),checked:n,...r,children:[f.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:f.jsx(P7,{children:f.jsx(Pm,{className:"h-4 w-4"})})}),t]}));fte.displayName=L7.displayName;const pte=p.forwardRef(({className:e,children:t,...n},r)=>f.jsxs(M7,{ref:r,className:ee("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),...n,children:[f.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:f.jsx(P7,{children:f.jsx(Q4,{className:"h-2 w-2 fill-current"})})}),t]}));pte.displayName=M7.displayName;const gte=p.forwardRef(({className:e,inset:t,...n},r)=>f.jsx(O7,{ref:r,className:ee("px-2 py-1.5 text-sm font-semibold",t&&"pl-8",e),...n}));gte.displayName=O7.displayName;const mte=p.forwardRef(({className:e,...t},n)=>f.jsx($7,{ref:n,className:ee("-mx-1 my-1 h-px bg-muted",e),...t}));mte.displayName=$7.displayName;function P2(e,[t,n]){return Math.min(n,Math.max(t,e))}function F_(e){const t=p.useRef({value:e,previous:e});return p.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}const hte=[" ","Enter","ArrowUp","ArrowDown"],bte=[" ","Enter"],ch="Select",[uh,j_,yte]=Nm(ch),[jc,lTe]=zn(ch,[yte,qa]),z_=qa(),[vte,Us]=jc(ch),[Ste,wte]=jc(ch),Ete=e=>{const{__scopeSelect:t,children:n,open:r,defaultOpen:a,onOpenChange:o,value:i,defaultValue:s,onValueChange:l,dir:c,name:u,autoComplete:d,disabled:g,required:m}=e,b=z_(t),[y,w]=p.useState(null),[v,h]=p.useState(null),[S,E]=p.useState(!1),k=x_(c),[x=!1,C]=Fa({prop:r,defaultProp:a,onChange:o}),[_,R]=Fa({prop:i,defaultProp:s,onChange:l}),T=p.useRef(null),L=y?!!y.closest("form"):!0,[D,H]=p.useState(new Set),z=Array.from(D).map(M=>M.props.value).join(";");return p.createElement(ah,b,p.createElement(vte,{required:m,scope:t,trigger:y,onTriggerChange:w,valueNode:v,onValueNodeChange:h,valueNodeHasChildren:S,onValueNodeHasChildrenChange:E,contentId:bi(),value:_,onValueChange:R,open:x,onOpenChange:C,dir:k,triggerPointerDownPosRef:T,disabled:g},p.createElement(uh.Provider,{scope:t},p.createElement(Ste,{scope:e.__scopeSelect,onNativeOptionAdd:p.useCallback(M=>{H(U=>new Set(U).add(M))},[]),onNativeOptionRemove:p.useCallback(M=>{H(U=>{const X=new Set(U);return X.delete(M),X})},[])},n)),L?p.createElement(H7,{key:z,"aria-hidden":!0,required:m,tabIndex:-1,name:u,autoComplete:d,value:_,onChange:M=>R(M.target.value),disabled:g},_===void 0?p.createElement("option",{value:""}):null,Array.from(D)):null))},xte="SelectTrigger",kte=p.forwardRef((e,t)=>{const{__scopeSelect:n,disabled:r=!1,...a}=e,o=z_(n),i=Us(xte,n),s=i.disabled||r,l=nt(t,i.onTriggerChange),c=j_(n),[u,d,g]=V7(b=>{const y=c().filter(h=>!h.disabled),w=y.find(h=>h.value===i.value),v=q7(y,b,w);v!==void 0&&i.onValueChange(v.value)}),m=()=>{s||(i.onOpenChange(!0),g())};return p.createElement(pf,W({asChild:!0},o),p.createElement(ze.button,W({type:"button",role:"combobox","aria-controls":i.contentId,"aria-expanded":i.open,"aria-required":i.required,"aria-autocomplete":"none",dir:i.dir,"data-state":i.open?"open":"closed",disabled:s,"data-disabled":s?"":void 0,"data-placeholder":B7(i.value)?"":void 0},a,{ref:l,onClick:fe(a.onClick,b=>{b.currentTarget.focus()}),onPointerDown:fe(a.onPointerDown,b=>{const y=b.target;y.hasPointerCapture(b.pointerId)&&y.releasePointerCapture(b.pointerId),b.button===0&&b.ctrlKey===!1&&(m(),i.triggerPointerDownPosRef.current={x:Math.round(b.pageX),y:Math.round(b.pageY)},b.preventDefault())}),onKeyDown:fe(a.onKeyDown,b=>{const y=u.current!=="";!(b.ctrlKey||b.altKey||b.metaKey)&&b.key.length===1&&d(b.key),!(y&&b.key===" ")&&hte.includes(b.key)&&(m(),b.preventDefault())})})))}),Cte="SelectValue",_te=p.forwardRef((e,t)=>{const{__scopeSelect:n,className:r,style:a,children:o,placeholder:i="",...s}=e,l=Us(Cte,n),{onValueNodeHasChildrenChange:c}=l,u=o!==void 0,d=nt(t,l.onValueNodeChange);return Zr(()=>{c(u)},[c,u]),p.createElement(ze.span,W({},s,{ref:d,style:{pointerEvents:"none"}}),B7(l.value)?p.createElement(p.Fragment,null,i):o)}),Ate=p.forwardRef((e,t)=>{const{__scopeSelect:n,children:r,...a}=e;return p.createElement(ze.span,W({"aria-hidden":!0},a,{ref:t}),r||"▼")}),Tte=e=>p.createElement(Jd,W({asChild:!0},e)),Sc="SelectContent",Rte=p.forwardRef((e,t)=>{const n=Us(Sc,e.__scopeSelect),[r,a]=p.useState();if(Zr(()=>{a(new DocumentFragment)},[]),!n.open){const o=r;return o?ba.createPortal(p.createElement(z7,{scope:e.__scopeSelect},p.createElement(uh.Slot,{scope:e.__scopeSelect},p.createElement("div",null,e.children))),o):null}return p.createElement(Nte,W({},e,{ref:t}))}),ro=10,[z7,dh]=jc(Sc),Nte=p.forwardRef((e,t)=>{const{__scopeSelect:n,position:r="item-aligned",onCloseAutoFocus:a,onEscapeKeyDown:o,onPointerDownOutside:i,side:s,sideOffset:l,align:c,alignOffset:u,arrowPadding:d,collisionBoundary:g,collisionPadding:m,sticky:b,hideWhenDetached:y,avoidCollisions:w,...v}=e,h=Us(Sc,n),[S,E]=p.useState(null),[k,x]=p.useState(null),C=nt(t,Q=>E(Q)),[_,R]=p.useState(null),[T,L]=p.useState(null),D=j_(n),[H,z]=p.useState(!1),M=p.useRef(!1);p.useEffect(()=>{if(S)return mf(S)},[S]),eh();const U=p.useCallback(Q=>{const[pe,...he]=D().map(ke=>ke.ref.current),[re]=he.slice(-1),Ee=document.activeElement;for(const ke of Q)if(ke===Ee||(ke==null||ke.scrollIntoView({block:"nearest"}),ke===pe&&k&&(k.scrollTop=0),ke===re&&k&&(k.scrollTop=k.scrollHeight),ke==null||ke.focus(),document.activeElement!==Ee))return},[D,k]),X=p.useCallback(()=>U([_,S]),[U,_,S]);p.useEffect(()=>{H&&X()},[H,X]);const{onOpenChange:j,triggerPointerDownPosRef:O}=h;p.useEffect(()=>{if(S){let Q={x:0,y:0};const pe=re=>{var Ee,ke,We,Vt;Q={x:Math.abs(Math.round(re.pageX)-((Ee=(ke=O.current)===null||ke===void 0?void 0:ke.x)!==null&&Ee!==void 0?Ee:0)),y:Math.abs(Math.round(re.pageY)-((We=(Vt=O.current)===null||Vt===void 0?void 0:Vt.y)!==null&&We!==void 0?We:0))}},he=re=>{Q.x<=10&&Q.y<=10?re.preventDefault():S.contains(re.target)||j(!1),document.removeEventListener("pointermove",pe),O.current=null};return O.current!==null&&(document.addEventListener("pointermove",pe),document.addEventListener("pointerup",he,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",pe),document.removeEventListener("pointerup",he,{capture:!0})}}},[S,j,O]),p.useEffect(()=>{const Q=()=>j(!1);return window.addEventListener("blur",Q),window.addEventListener("resize",Q),()=>{window.removeEventListener("blur",Q),window.removeEventListener("resize",Q)}},[j]);const[A,V]=V7(Q=>{const pe=D().filter(Ee=>!Ee.disabled),he=pe.find(Ee=>Ee.ref.current===document.activeElement),re=q7(pe,Q,he);re&&setTimeout(()=>re.ref.current.focus())}),P=p.useCallback((Q,pe,he)=>{const re=!M.current&&!he;(h.value!==void 0&&h.value===pe||re)&&(R(Q),re&&(M.current=!0))},[h.value]),N=p.useCallback(()=>S==null?void 0:S.focus(),[S]),K=p.useCallback((Q,pe,he)=>{const re=!M.current&&!he;(h.value!==void 0&&h.value===pe||re)&&L(Q)},[h.value]),ae=r==="popper"?$2:Ite,ne=ae===$2?{side:s,sideOffset:l,align:c,alignOffset:u,arrowPadding:d,collisionBoundary:g,collisionPadding:m,sticky:b,hideWhenDetached:y,avoidCollisions:w}:{};return p.createElement(z7,{scope:n,content:S,viewport:k,onViewportChange:x,itemRefCallback:P,selectedItem:_,onItemLeave:N,itemTextRefCallback:K,focusSelectedItem:X,selectedItemText:T,position:r,isPositioned:H,searchRef:A},p.createElement(sh,{as:$a,allowPinchZoom:!0},p.createElement(th,{asChild:!0,trapped:h.open,onMountAutoFocus:Q=>{Q.preventDefault()},onUnmountAutoFocus:fe(a,Q=>{var pe;(pe=h.trigger)===null||pe===void 0||pe.focus({preventScroll:!0}),Q.preventDefault()})},p.createElement(Ls,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:o,onPointerDownOutside:i,onFocusOutside:Q=>Q.preventDefault(),onDismiss:()=>h.onOpenChange(!1)},p.createElement(ae,W({role:"listbox",id:h.contentId,"data-state":h.open?"open":"closed",dir:h.dir,onContextMenu:Q=>Q.preventDefault()},v,ne,{onPlaced:()=>z(!0),ref:C,style:{display:"flex",flexDirection:"column",outline:"none",...v.style},onKeyDown:fe(v.onKeyDown,Q=>{const pe=Q.ctrlKey||Q.altKey||Q.metaKey;if(Q.key==="Tab"&&Q.preventDefault(),!pe&&Q.key.length===1&&V(Q.key),["ArrowUp","ArrowDown","Home","End"].includes(Q.key)){let re=D().filter(Ee=>!Ee.disabled).map(Ee=>Ee.ref.current);if(["ArrowUp","End"].includes(Q.key)&&(re=re.slice().reverse()),["ArrowUp","ArrowDown"].includes(Q.key)){const Ee=Q.target,ke=re.indexOf(Ee);re=re.slice(ke+1)}setTimeout(()=>U(re)),Q.preventDefault()}})}))))))}),Ite=p.forwardRef((e,t)=>{const{__scopeSelect:n,onPlaced:r,...a}=e,o=Us(Sc,n),i=dh(Sc,n),[s,l]=p.useState(null),[c,u]=p.useState(null),d=nt(t,C=>u(C)),g=j_(n),m=p.useRef(!1),b=p.useRef(!0),{viewport:y,selectedItem:w,selectedItemText:v,focusSelectedItem:h}=i,S=p.useCallback(()=>{if(o.trigger&&o.valueNode&&s&&c&&y&&w&&v){const C=o.trigger.getBoundingClientRect(),_=c.getBoundingClientRect(),R=o.valueNode.getBoundingClientRect(),T=v.getBoundingClientRect();if(o.dir!=="rtl"){const Ee=T.left-_.left,ke=R.left-Ee,We=C.left-ke,Vt=C.width+We,mt=Math.max(Vt,_.width),Hn=window.innerWidth-ro,F=P2(ke,[ro,Hn-mt]);s.style.minWidth=Vt+"px",s.style.left=F+"px"}else{const Ee=_.right-T.right,ke=window.innerWidth-R.right-Ee,We=window.innerWidth-C.right-ke,Vt=C.width+We,mt=Math.max(Vt,_.width),Hn=window.innerWidth-ro,F=P2(ke,[ro,Hn-mt]);s.style.minWidth=Vt+"px",s.style.right=F+"px"}const L=g(),D=window.innerHeight-ro*2,H=y.scrollHeight,z=window.getComputedStyle(c),M=parseInt(z.borderTopWidth,10),U=parseInt(z.paddingTop,10),X=parseInt(z.borderBottomWidth,10),j=parseInt(z.paddingBottom,10),O=M+U+H+j+X,A=Math.min(w.offsetHeight*5,O),V=window.getComputedStyle(y),P=parseInt(V.paddingTop,10),N=parseInt(V.paddingBottom,10),K=C.top+C.height/2-ro,ae=D-K,ne=w.offsetHeight/2,Q=w.offsetTop+ne,pe=M+U+Q,he=O-pe;if(pe<=K){const Ee=w===L[L.length-1].ref.current;s.style.bottom="0px";const ke=c.clientHeight-y.offsetTop-y.offsetHeight,We=Math.max(ae,ne+(Ee?N:0)+ke+X),Vt=pe+We;s.style.height=Vt+"px"}else{const Ee=w===L[0].ref.current;s.style.top="0px";const We=Math.max(K,M+y.offsetTop+(Ee?P:0)+ne)+he;s.style.height=We+"px",y.scrollTop=pe-K+y.offsetTop}s.style.margin=`${ro}px 0`,s.style.minHeight=A+"px",s.style.maxHeight=D+"px",r==null||r(),requestAnimationFrame(()=>m.current=!0)}},[g,o.trigger,o.valueNode,s,c,y,w,v,o.dir,r]);Zr(()=>S(),[S]);const[E,k]=p.useState();Zr(()=>{c&&k(window.getComputedStyle(c).zIndex)},[c]);const x=p.useCallback(C=>{C&&b.current===!0&&(S(),h==null||h(),b.current=!1)},[S,h]);return p.createElement(Ote,{scope:n,contentWrapper:s,shouldExpandOnScrollRef:m,onScrollButtonChange:x},p.createElement("div",{ref:l,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:E}},p.createElement(ze.div,W({},a,{ref:d,style:{boxSizing:"border-box",maxHeight:"100%",...a.style}}))))}),$2=p.forwardRef((e,t)=>{const{__scopeSelect:n,align:r="start",collisionPadding:a=ro,...o}=e,i=z_(n);return p.createElement(gf,W({},i,o,{ref:t,align:r,collisionPadding:a,style:{boxSizing:"border-box",...o.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}}))}),[Ote,Dte]=jc(Sc,{}),F2="SelectViewport",Lte=p.forwardRef((e,t)=>{const{__scopeSelect:n,...r}=e,a=dh(F2,n),o=Dte(F2,n),i=nt(t,a.onViewportChange),s=p.useRef(0);return p.createElement(p.Fragment,null,p.createElement("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"}}),p.createElement(uh.Slot,{scope:n},p.createElement(ze.div,W({"data-radix-select-viewport":"",role:"presentation"},r,{ref:i,style:{position:"relative",flex:1,overflow:"auto",...r.style},onScroll:fe(r.onScroll,l=>{const c=l.currentTarget,{contentWrapper:u,shouldExpandOnScrollRef:d}=o;if(d!=null&&d.current&&u){const g=Math.abs(s.current-c.scrollTop);if(g>0){const m=window.innerHeight-ro*2,b=parseFloat(u.style.minHeight),y=parseFloat(u.style.height),w=Math.max(b,y);if(w0?S:0,u.style.justifyContent="flex-end")}}}s.current=c.scrollTop})}))))}),Mte="SelectGroup",[cTe,Pte]=jc(Mte),$te="SelectLabel",Fte=p.forwardRef((e,t)=>{const{__scopeSelect:n,...r}=e,a=Pte($te,n);return p.createElement(ze.div,W({id:a.id},r,{ref:t}))}),ik="SelectItem",[jte,U7]=jc(ik),zte=p.forwardRef((e,t)=>{const{__scopeSelect:n,value:r,disabled:a=!1,textValue:o,...i}=e,s=Us(ik,n),l=dh(ik,n),c=s.value===r,[u,d]=p.useState(o??""),[g,m]=p.useState(!1),b=nt(t,v=>{var h;return(h=l.itemRefCallback)===null||h===void 0?void 0:h.call(l,v,r,a)}),y=bi(),w=()=>{a||(s.onValueChange(r),s.onOpenChange(!1))};if(r==="")throw new Error("A must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return p.createElement(jte,{scope:n,value:r,disabled:a,textId:y,isSelected:c,onItemTextChange:p.useCallback(v=>{d(h=>{var S;return h||((S=v==null?void 0:v.textContent)!==null&&S!==void 0?S:"").trim()})},[])},p.createElement(uh.ItemSlot,{scope:n,value:r,disabled:a,textValue:u},p.createElement(ze.div,W({role:"option","aria-labelledby":y,"data-highlighted":g?"":void 0,"aria-selected":c&&g,"data-state":c?"checked":"unchecked","aria-disabled":a||void 0,"data-disabled":a?"":void 0,tabIndex:a?void 0:-1},i,{ref:b,onFocus:fe(i.onFocus,()=>m(!0)),onBlur:fe(i.onBlur,()=>m(!1)),onPointerUp:fe(i.onPointerUp,w),onPointerMove:fe(i.onPointerMove,v=>{if(a){var h;(h=l.onItemLeave)===null||h===void 0||h.call(l)}else v.currentTarget.focus({preventScroll:!0})}),onPointerLeave:fe(i.onPointerLeave,v=>{if(v.currentTarget===document.activeElement){var h;(h=l.onItemLeave)===null||h===void 0||h.call(l)}}),onKeyDown:fe(i.onKeyDown,v=>{var h;((h=l.searchRef)===null||h===void 0?void 0:h.current)!==""&&v.key===" "||(bte.includes(v.key)&&w(),v.key===" "&&v.preventDefault())})}))))}),ip="SelectItemText",Ute=p.forwardRef((e,t)=>{const{__scopeSelect:n,className:r,style:a,...o}=e,i=Us(ip,n),s=dh(ip,n),l=U7(ip,n),c=wte(ip,n),[u,d]=p.useState(null),g=nt(t,v=>d(v),l.onItemTextChange,v=>{var h;return(h=s.itemTextRefCallback)===null||h===void 0?void 0:h.call(s,v,l.value,l.disabled)}),m=u==null?void 0:u.textContent,b=p.useMemo(()=>p.createElement("option",{key:l.value,value:l.value,disabled:l.disabled},m),[l.disabled,l.value,m]),{onNativeOptionAdd:y,onNativeOptionRemove:w}=c;return Zr(()=>(y(b),()=>w(b)),[y,w,b]),p.createElement(p.Fragment,null,p.createElement(ze.span,W({id:l.textId},o,{ref:g})),l.isSelected&&i.valueNode&&!i.valueNodeHasChildren?ba.createPortal(o.children,i.valueNode):null)}),Bte="SelectItemIndicator",Hte=p.forwardRef((e,t)=>{const{__scopeSelect:n,...r}=e;return U7(Bte,n).isSelected?p.createElement(ze.span,W({"aria-hidden":!0},r,{ref:t})):null}),Vte=p.forwardRef((e,t)=>{const{__scopeSelect:n,...r}=e;return p.createElement(ze.div,W({"aria-hidden":!0},r,{ref:t}))});function B7(e){return e===""||e===void 0}const H7=p.forwardRef((e,t)=>{const{value:n,...r}=e,a=p.useRef(null),o=nt(t,a),i=F_(n);return p.useEffect(()=>{const s=a.current,l=window.HTMLSelectElement.prototype,u=Object.getOwnPropertyDescriptor(l,"value").set;if(i!==n&&u){const d=new Event("change",{bubbles:!0});u.call(s,n),s.dispatchEvent(d)}},[i,n]),p.createElement(Im,{asChild:!0},p.createElement("select",W({},r,{ref:o,defaultValue:n})))});H7.displayName="BubbleSelect";function V7(e){const t=ur(e),n=p.useRef(""),r=p.useRef(0),a=p.useCallback(i=>{const s=n.current+i;t(s),function l(c){n.current=c,window.clearTimeout(r.current),c!==""&&(r.current=window.setTimeout(()=>l(""),1e3))}(s)},[t]),o=p.useCallback(()=>{n.current="",window.clearTimeout(r.current)},[]);return p.useEffect(()=>()=>window.clearTimeout(r.current),[]),[n,a,o]}function q7(e,t,n){const a=t.length>1&&Array.from(t).every(c=>c===t[0])?t[0]:t,o=n?e.indexOf(n):-1;let i=qte(e,Math.max(o,0));a.length===1&&(i=i.filter(c=>c!==n));const l=i.find(c=>c.textValue.toLowerCase().startsWith(a.toLowerCase()));return l!==n?l:void 0}function qte(e,t){return e.map((n,r)=>e[(t+r)%e.length])}const Gte=Ete,G7=kte,Wte=_te,Kte=Ate,Yte=Tte,W7=Rte,Zte=Lte,K7=Fte,Y7=zte,Xte=Ute,Qte=Hte,Z7=Vte,So=Gte,wo=Wte,za=p.forwardRef(({className:e,children:t,...n},r)=>f.jsxs(G7,{ref:r,className:ee("flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",e),...n,children:[t,f.jsx(Kte,{asChild:!0,children:f.jsx(ZC,{className:"h-4 w-4 opacity-50"})})]}));za.displayName=G7.displayName;const Ua=p.forwardRef(({className:e,children:t,position:n="popper",...r},a)=>f.jsx(Yte,{children:f.jsx(W7,{ref:a,className:ee("relative z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",n==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",e),position:n,...r,children:f.jsx(Zte,{className:ee("p-1",n==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:t})})}));Ua.displayName=W7.displayName;const Jte=p.forwardRef(({className:e,...t},n)=>f.jsx(K7,{ref:n,className:ee("py-1.5 pl-8 pr-2 text-sm font-semibold",e),...t}));Jte.displayName=K7.displayName;const Fn=p.forwardRef(({className:e,children:t,...n},r)=>f.jsxs(Y7,{ref:r,className:ee("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),...n,children:[f.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:f.jsx(Qte,{children:f.jsx(Pm,{className:"h-4 w-4"})})}),f.jsx(Xte,{children:t})]}));Fn.displayName=Y7.displayName;const ene=p.forwardRef(({className:e,...t},n)=>f.jsx(Z7,{ref:n,className:ee("-mx-1 my-1 h-px bg-muted",e),...t}));ene.displayName=Z7.displayName;function Ts(e){"@babel/helpers - typeof";return Ts=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Ts(e)}function _i(e){if(e===null||e===!0||e===!1)return NaN;var t=Number(e);return isNaN(t)?t:t<0?Math.ceil(t):Math.floor(t)}function Un(e,t){if(t.length1?"s":"")+" required, but only "+t.length+" present")}function Wa(e){Un(1,arguments);var t=Object.prototype.toString.call(e);return e instanceof Date||Ts(e)==="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):((typeof e=="string"||t==="[object String]")&&typeof console<"u"&&(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"),console.warn(new Error().stack)),new Date(NaN))}function tne(e,t){Un(2,arguments);var n=Wa(e).getTime(),r=_i(t);return new Date(n+r)}var nne={};function fh(){return nne}function rne(e){var t=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return t.setUTCFullYear(e.getFullYear()),e.getTime()-t.getTime()}var X7=6e4,Q7=36e5;function ane(e){return Un(1,arguments),e instanceof Date||Ts(e)==="object"&&Object.prototype.toString.call(e)==="[object Date]"}function one(e){if(Un(1,arguments),!ane(e)&&typeof e!="number")return!1;var t=Wa(e);return!isNaN(Number(t))}function ine(e,t){Un(2,arguments);var n=_i(t);return tne(e,-n)}var sne=864e5;function lne(e){Un(1,arguments);var t=Wa(e),n=t.getTime();t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0);var r=t.getTime(),a=n-r;return Math.floor(a/sne)+1}function $g(e){Un(1,arguments);var t=1,n=Wa(e),r=n.getUTCDay(),a=(r=a.getTime()?n+1:t.getTime()>=i.getTime()?n:n-1}function cne(e){Un(1,arguments);var t=J7(e),n=new Date(0);n.setUTCFullYear(t,0,4),n.setUTCHours(0,0,0,0);var r=$g(n);return r}var une=6048e5;function dne(e){Un(1,arguments);var t=Wa(e),n=$g(t).getTime()-cne(t).getTime();return Math.round(n/une)+1}function Fg(e,t){var n,r,a,o,i,s,l,c;Un(1,arguments);var u=fh(),d=_i((n=(r=(a=(o=t==null?void 0:t.weekStartsOn)!==null&&o!==void 0?o:t==null||(i=t.locale)===null||i===void 0||(s=i.options)===null||s===void 0?void 0:s.weekStartsOn)!==null&&a!==void 0?a:u.weekStartsOn)!==null&&r!==void 0?r:(l=u.locale)===null||l===void 0||(c=l.options)===null||c===void 0?void 0:c.weekStartsOn)!==null&&n!==void 0?n:0);if(!(d>=0&&d<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var g=Wa(e),m=g.getUTCDay(),b=(m=1&&m<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var b=new Date(0);b.setUTCFullYear(d+1,0,m),b.setUTCHours(0,0,0,0);var y=Fg(b,t),w=new Date(0);w.setUTCFullYear(d,0,m),w.setUTCHours(0,0,0,0);var v=Fg(w,t);return u.getTime()>=y.getTime()?d+1:u.getTime()>=v.getTime()?d:d-1}function fne(e,t){var n,r,a,o,i,s,l,c;Un(1,arguments);var u=fh(),d=_i((n=(r=(a=(o=t==null?void 0:t.firstWeekContainsDate)!==null&&o!==void 0?o:t==null||(i=t.locale)===null||i===void 0||(s=i.options)===null||s===void 0?void 0:s.firstWeekContainsDate)!==null&&a!==void 0?a:u.firstWeekContainsDate)!==null&&r!==void 0?r:(l=u.locale)===null||l===void 0||(c=l.options)===null||c===void 0?void 0:c.firstWeekContainsDate)!==null&&n!==void 0?n:1),g=e8(e,t),m=new Date(0);m.setUTCFullYear(g,0,d),m.setUTCHours(0,0,0,0);var b=Fg(m,t);return b}var pne=6048e5;function gne(e,t){Un(1,arguments);var n=Wa(e),r=Fg(n,t).getTime()-fne(n,t).getTime();return Math.round(r/pne)+1}function bt(e,t){for(var n=e<0?"-":"",r=Math.abs(e).toString();r.length0?r:1-r;return bt(n==="yy"?a%100:a,n.length)},M:function(t,n){var r=t.getUTCMonth();return n==="M"?String(r+1):bt(r+1,2)},d:function(t,n){return bt(t.getUTCDate(),n.length)},a:function(t,n){var r=t.getUTCHours()/12>=1?"pm":"am";switch(n){case"a":case"aa":return r.toUpperCase();case"aaa":return r;case"aaaaa":return r[0];case"aaaa":default:return r==="am"?"a.m.":"p.m."}},h:function(t,n){return bt(t.getUTCHours()%12||12,n.length)},H:function(t,n){return bt(t.getUTCHours(),n.length)},m:function(t,n){return bt(t.getUTCMinutes(),n.length)},s:function(t,n){return bt(t.getUTCSeconds(),n.length)},S:function(t,n){var r=n.length,a=t.getUTCMilliseconds(),o=Math.floor(a*Math.pow(10,r-3));return bt(o,n.length)}};const Po=mne;var tl={am:"am",pm:"pm",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},hne={G:function(t,n,r){var a=t.getUTCFullYear()>0?1:0;switch(n){case"G":case"GG":case"GGG":return r.era(a,{width:"abbreviated"});case"GGGGG":return r.era(a,{width:"narrow"});case"GGGG":default:return r.era(a,{width:"wide"})}},y:function(t,n,r){if(n==="yo"){var a=t.getUTCFullYear(),o=a>0?a:1-a;return r.ordinalNumber(o,{unit:"year"})}return Po.y(t,n)},Y:function(t,n,r,a){var o=e8(t,a),i=o>0?o:1-o;if(n==="YY"){var s=i%100;return bt(s,2)}return n==="Yo"?r.ordinalNumber(i,{unit:"year"}):bt(i,n.length)},R:function(t,n){var r=J7(t);return bt(r,n.length)},u:function(t,n){var r=t.getUTCFullYear();return bt(r,n.length)},Q:function(t,n,r){var a=Math.ceil((t.getUTCMonth()+1)/3);switch(n){case"Q":return String(a);case"QQ":return bt(a,2);case"Qo":return r.ordinalNumber(a,{unit:"quarter"});case"QQQ":return r.quarter(a,{width:"abbreviated",context:"formatting"});case"QQQQQ":return r.quarter(a,{width:"narrow",context:"formatting"});case"QQQQ":default:return r.quarter(a,{width:"wide",context:"formatting"})}},q:function(t,n,r){var a=Math.ceil((t.getUTCMonth()+1)/3);switch(n){case"q":return String(a);case"qq":return bt(a,2);case"qo":return r.ordinalNumber(a,{unit:"quarter"});case"qqq":return r.quarter(a,{width:"abbreviated",context:"standalone"});case"qqqqq":return r.quarter(a,{width:"narrow",context:"standalone"});case"qqqq":default:return r.quarter(a,{width:"wide",context:"standalone"})}},M:function(t,n,r){var a=t.getUTCMonth();switch(n){case"M":case"MM":return Po.M(t,n);case"Mo":return r.ordinalNumber(a+1,{unit:"month"});case"MMM":return r.month(a,{width:"abbreviated",context:"formatting"});case"MMMMM":return r.month(a,{width:"narrow",context:"formatting"});case"MMMM":default:return r.month(a,{width:"wide",context:"formatting"})}},L:function(t,n,r){var a=t.getUTCMonth();switch(n){case"L":return String(a+1);case"LL":return bt(a+1,2);case"Lo":return r.ordinalNumber(a+1,{unit:"month"});case"LLL":return r.month(a,{width:"abbreviated",context:"standalone"});case"LLLLL":return r.month(a,{width:"narrow",context:"standalone"});case"LLLL":default:return r.month(a,{width:"wide",context:"standalone"})}},w:function(t,n,r,a){var o=gne(t,a);return n==="wo"?r.ordinalNumber(o,{unit:"week"}):bt(o,n.length)},I:function(t,n,r){var a=dne(t);return n==="Io"?r.ordinalNumber(a,{unit:"week"}):bt(a,n.length)},d:function(t,n,r){return n==="do"?r.ordinalNumber(t.getUTCDate(),{unit:"date"}):Po.d(t,n)},D:function(t,n,r){var a=lne(t);return n==="Do"?r.ordinalNumber(a,{unit:"dayOfYear"}):bt(a,n.length)},E:function(t,n,r){var a=t.getUTCDay();switch(n){case"E":case"EE":case"EEE":return r.day(a,{width:"abbreviated",context:"formatting"});case"EEEEE":return r.day(a,{width:"narrow",context:"formatting"});case"EEEEEE":return r.day(a,{width:"short",context:"formatting"});case"EEEE":default:return r.day(a,{width:"wide",context:"formatting"})}},e:function(t,n,r,a){var o=t.getUTCDay(),i=(o-a.weekStartsOn+8)%7||7;switch(n){case"e":return String(i);case"ee":return bt(i,2);case"eo":return r.ordinalNumber(i,{unit:"day"});case"eee":return r.day(o,{width:"abbreviated",context:"formatting"});case"eeeee":return r.day(o,{width:"narrow",context:"formatting"});case"eeeeee":return r.day(o,{width:"short",context:"formatting"});case"eeee":default:return r.day(o,{width:"wide",context:"formatting"})}},c:function(t,n,r,a){var o=t.getUTCDay(),i=(o-a.weekStartsOn+8)%7||7;switch(n){case"c":return String(i);case"cc":return bt(i,n.length);case"co":return r.ordinalNumber(i,{unit:"day"});case"ccc":return r.day(o,{width:"abbreviated",context:"standalone"});case"ccccc":return r.day(o,{width:"narrow",context:"standalone"});case"cccccc":return r.day(o,{width:"short",context:"standalone"});case"cccc":default:return r.day(o,{width:"wide",context:"standalone"})}},i:function(t,n,r){var a=t.getUTCDay(),o=a===0?7:a;switch(n){case"i":return String(o);case"ii":return bt(o,n.length);case"io":return r.ordinalNumber(o,{unit:"day"});case"iii":return r.day(a,{width:"abbreviated",context:"formatting"});case"iiiii":return r.day(a,{width:"narrow",context:"formatting"});case"iiiiii":return r.day(a,{width:"short",context:"formatting"});case"iiii":default:return r.day(a,{width:"wide",context:"formatting"})}},a:function(t,n,r){var a=t.getUTCHours(),o=a/12>=1?"pm":"am";switch(n){case"a":case"aa":return r.dayPeriod(o,{width:"abbreviated",context:"formatting"});case"aaa":return r.dayPeriod(o,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return r.dayPeriod(o,{width:"narrow",context:"formatting"});case"aaaa":default:return r.dayPeriod(o,{width:"wide",context:"formatting"})}},b:function(t,n,r){var a=t.getUTCHours(),o;switch(a===12?o=tl.noon:a===0?o=tl.midnight:o=a/12>=1?"pm":"am",n){case"b":case"bb":return r.dayPeriod(o,{width:"abbreviated",context:"formatting"});case"bbb":return r.dayPeriod(o,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return r.dayPeriod(o,{width:"narrow",context:"formatting"});case"bbbb":default:return r.dayPeriod(o,{width:"wide",context:"formatting"})}},B:function(t,n,r){var a=t.getUTCHours(),o;switch(a>=17?o=tl.evening:a>=12?o=tl.afternoon:a>=4?o=tl.morning:o=tl.night,n){case"B":case"BB":case"BBB":return r.dayPeriod(o,{width:"abbreviated",context:"formatting"});case"BBBBB":return r.dayPeriod(o,{width:"narrow",context:"formatting"});case"BBBB":default:return r.dayPeriod(o,{width:"wide",context:"formatting"})}},h:function(t,n,r){if(n==="ho"){var a=t.getUTCHours()%12;return a===0&&(a=12),r.ordinalNumber(a,{unit:"hour"})}return Po.h(t,n)},H:function(t,n,r){return n==="Ho"?r.ordinalNumber(t.getUTCHours(),{unit:"hour"}):Po.H(t,n)},K:function(t,n,r){var a=t.getUTCHours()%12;return n==="Ko"?r.ordinalNumber(a,{unit:"hour"}):bt(a,n.length)},k:function(t,n,r){var a=t.getUTCHours();return a===0&&(a=24),n==="ko"?r.ordinalNumber(a,{unit:"hour"}):bt(a,n.length)},m:function(t,n,r){return n==="mo"?r.ordinalNumber(t.getUTCMinutes(),{unit:"minute"}):Po.m(t,n)},s:function(t,n,r){return n==="so"?r.ordinalNumber(t.getUTCSeconds(),{unit:"second"}):Po.s(t,n)},S:function(t,n){return Po.S(t,n)},X:function(t,n,r,a){var o=a._originalDate||t,i=o.getTimezoneOffset();if(i===0)return"Z";switch(n){case"X":return z2(i);case"XXXX":case"XX":return Ki(i);case"XXXXX":case"XXX":default:return Ki(i,":")}},x:function(t,n,r,a){var o=a._originalDate||t,i=o.getTimezoneOffset();switch(n){case"x":return z2(i);case"xxxx":case"xx":return Ki(i);case"xxxxx":case"xxx":default:return Ki(i,":")}},O:function(t,n,r,a){var o=a._originalDate||t,i=o.getTimezoneOffset();switch(n){case"O":case"OO":case"OOO":return"GMT"+j2(i,":");case"OOOO":default:return"GMT"+Ki(i,":")}},z:function(t,n,r,a){var o=a._originalDate||t,i=o.getTimezoneOffset();switch(n){case"z":case"zz":case"zzz":return"GMT"+j2(i,":");case"zzzz":default:return"GMT"+Ki(i,":")}},t:function(t,n,r,a){var o=a._originalDate||t,i=Math.floor(o.getTime()/1e3);return bt(i,n.length)},T:function(t,n,r,a){var o=a._originalDate||t,i=o.getTime();return bt(i,n.length)}};function j2(e,t){var n=e>0?"-":"+",r=Math.abs(e),a=Math.floor(r/60),o=r%60;if(o===0)return n+String(a);var i=t||"";return n+String(a)+i+bt(o,2)}function z2(e,t){if(e%60===0){var n=e>0?"-":"+";return n+bt(Math.abs(e)/60,2)}return Ki(e,t)}function Ki(e,t){var n=t||"",r=e>0?"-":"+",a=Math.abs(e),o=bt(Math.floor(a/60),2),i=bt(a%60,2);return r+o+n+i}const bne=hne;var U2=function(t,n){switch(t){case"P":return n.date({width:"short"});case"PP":return n.date({width:"medium"});case"PPP":return n.date({width:"long"});case"PPPP":default:return n.date({width:"full"})}},t8=function(t,n){switch(t){case"p":return n.time({width:"short"});case"pp":return n.time({width:"medium"});case"ppp":return n.time({width:"long"});case"pppp":default:return n.time({width:"full"})}},yne=function(t,n){var r=t.match(/(P+)(p+)?/)||[],a=r[1],o=r[2];if(!o)return U2(t,n);var i;switch(a){case"P":i=n.dateTime({width:"short"});break;case"PP":i=n.dateTime({width:"medium"});break;case"PPP":i=n.dateTime({width:"long"});break;case"PPPP":default:i=n.dateTime({width:"full"});break}return i.replace("{{date}}",U2(a,n)).replace("{{time}}",t8(o,n))},vne={p:t8,P:yne};const Sne=vne;var wne=["D","DD"],Ene=["YY","YYYY"];function xne(e){return wne.indexOf(e)!==-1}function kne(e){return Ene.indexOf(e)!==-1}function B2(e,t,n){if(e==="YYYY")throw new RangeError("Use `yyyy` instead of `YYYY` (in `".concat(t,"`) for formatting years to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(e==="YY")throw new RangeError("Use `yy` instead of `YY` (in `".concat(t,"`) for formatting years to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(e==="D")throw new RangeError("Use `d` instead of `D` (in `".concat(t,"`) for formatting days of the month to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(e==="DD")throw new RangeError("Use `dd` instead of `DD` (in `".concat(t,"`) for formatting days of the month to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"))}var Cne={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},_ne=function(t,n,r){var a,o=Cne[t];return typeof o=="string"?a=o:n===1?a=o.one:a=o.other.replace("{{count}}",n.toString()),r!=null&&r.addSuffix?r.comparison&&r.comparison>0?"in "+a:a+" ago":a};const Ane=_ne;function qb(e){return function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=t.width?String(t.width):e.defaultWidth,r=e.formats[n]||e.formats[e.defaultWidth];return r}}var Tne={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},Rne={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},Nne={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},Ine={date:qb({formats:Tne,defaultWidth:"full"}),time:qb({formats:Rne,defaultWidth:"full"}),dateTime:qb({formats:Nne,defaultWidth:"full"})};const One=Ine;var Dne={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},Lne=function(t,n,r,a){return Dne[t]};const Mne=Lne;function uu(e){return function(t,n){var r=n!=null&&n.context?String(n.context):"standalone",a;if(r==="formatting"&&e.formattingValues){var o=e.defaultFormattingWidth||e.defaultWidth,i=n!=null&&n.width?String(n.width):o;a=e.formattingValues[i]||e.formattingValues[o]}else{var s=e.defaultWidth,l=n!=null&&n.width?String(n.width):e.defaultWidth;a=e.values[l]||e.values[s]}var c=e.argumentCallback?e.argumentCallback(t):t;return a[c]}}var Pne={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},$ne={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},Fne={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},jne={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},zne={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},Une={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},Bne=function(t,n){var r=Number(t),a=r%100;if(a>20||a<10)switch(a%10){case 1:return r+"st";case 2:return r+"nd";case 3:return r+"rd"}return r+"th"},Hne={ordinalNumber:Bne,era:uu({values:Pne,defaultWidth:"wide"}),quarter:uu({values:$ne,defaultWidth:"wide",argumentCallback:function(t){return t-1}}),month:uu({values:Fne,defaultWidth:"wide"}),day:uu({values:jne,defaultWidth:"wide"}),dayPeriod:uu({values:zne,defaultWidth:"wide",formattingValues:Une,defaultFormattingWidth:"wide"})};const Vne=Hne;function du(e){return function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=n.width,a=r&&e.matchPatterns[r]||e.matchPatterns[e.defaultMatchWidth],o=t.match(a);if(!o)return null;var i=o[0],s=r&&e.parsePatterns[r]||e.parsePatterns[e.defaultParseWidth],l=Array.isArray(s)?Gne(s,function(d){return d.test(i)}):qne(s,function(d){return d.test(i)}),c;c=e.valueCallback?e.valueCallback(l):l,c=n.valueCallback?n.valueCallback(c):c;var u=t.slice(i.length);return{value:c,rest:u}}}function qne(e,t){for(var n in e)if(e.hasOwnProperty(n)&&t(e[n]))return n}function Gne(e,t){for(var n=0;n1&&arguments[1]!==void 0?arguments[1]:{},r=t.match(e.matchPattern);if(!r)return null;var a=r[0],o=t.match(e.parsePattern);if(!o)return null;var i=e.valueCallback?e.valueCallback(o[0]):o[0];i=n.valueCallback?n.valueCallback(i):i;var s=t.slice(a.length);return{value:i,rest:s}}}var Kne=/^(\d+)(th|st|nd|rd)?/i,Yne=/\d+/i,Zne={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},Xne={any:[/^b/i,/^(a|c)/i]},Qne={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},Jne={any:[/1/i,/2/i,/3/i,/4/i]},ere={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},tre={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},nre={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},rre={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},are={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},ore={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},ire={ordinalNumber:Wne({matchPattern:Kne,parsePattern:Yne,valueCallback:function(t){return parseInt(t,10)}}),era:du({matchPatterns:Zne,defaultMatchWidth:"wide",parsePatterns:Xne,defaultParseWidth:"any"}),quarter:du({matchPatterns:Qne,defaultMatchWidth:"wide",parsePatterns:Jne,defaultParseWidth:"any",valueCallback:function(t){return t+1}}),month:du({matchPatterns:ere,defaultMatchWidth:"wide",parsePatterns:tre,defaultParseWidth:"any"}),day:du({matchPatterns:nre,defaultMatchWidth:"wide",parsePatterns:rre,defaultParseWidth:"any"}),dayPeriod:du({matchPatterns:are,defaultMatchWidth:"any",parsePatterns:ore,defaultParseWidth:"any"})};const sre=ire;var lre={code:"en-US",formatDistance:Ane,formatLong:One,formatRelative:Mne,localize:Vne,match:sre,options:{weekStartsOn:0,firstWeekContainsDate:1}};const cre=lre;var ure=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,dre=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,fre=/^'([^]*?)'?$/,pre=/''/g,gre=/[a-zA-Z]/;function Bs(e,t,n){var r,a,o,i,s,l,c,u,d,g,m,b,y,w,v,h,S,E;Un(2,arguments);var k=String(t),x=fh(),C=(r=(a=n==null?void 0:n.locale)!==null&&a!==void 0?a:x.locale)!==null&&r!==void 0?r:cre,_=_i((o=(i=(s=(l=n==null?void 0:n.firstWeekContainsDate)!==null&&l!==void 0?l:n==null||(c=n.locale)===null||c===void 0||(u=c.options)===null||u===void 0?void 0:u.firstWeekContainsDate)!==null&&s!==void 0?s:x.firstWeekContainsDate)!==null&&i!==void 0?i:(d=x.locale)===null||d===void 0||(g=d.options)===null||g===void 0?void 0:g.firstWeekContainsDate)!==null&&o!==void 0?o:1);if(!(_>=1&&_<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var R=_i((m=(b=(y=(w=n==null?void 0:n.weekStartsOn)!==null&&w!==void 0?w:n==null||(v=n.locale)===null||v===void 0||(h=v.options)===null||h===void 0?void 0:h.weekStartsOn)!==null&&y!==void 0?y:x.weekStartsOn)!==null&&b!==void 0?b:(S=x.locale)===null||S===void 0||(E=S.options)===null||E===void 0?void 0:E.weekStartsOn)!==null&&m!==void 0?m:0);if(!(R>=0&&R<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(!C.localize)throw new RangeError("locale must contain localize property");if(!C.formatLong)throw new RangeError("locale must contain formatLong property");var T=Wa(e);if(!one(T))throw new RangeError("Invalid time value");var L=rne(T),D=ine(T,L),H={firstWeekContainsDate:_,weekStartsOn:R,locale:C,_originalDate:T},z=k.match(dre).map(function(M){var U=M[0];if(U==="p"||U==="P"){var X=Sne[U];return X(M,C.formatLong)}return M}).join("").match(ure).map(function(M){if(M==="''")return"'";var U=M[0];if(U==="'")return mre(M);var X=bne[U];if(X)return!(n!=null&&n.useAdditionalWeekYearTokens)&&kne(M)&&B2(M,t,String(e)),!(n!=null&&n.useAdditionalDayOfYearTokens)&&xne(M)&&B2(M,t,String(e)),X(D,M,C.localize,H);if(U.match(gre))throw new RangeError("Format string contains an unescaped latin alphabet character `"+U+"`");return M}).join("");return z}function mre(e){var t=e.match(fre);return t?t[1].replace(pre,"'"):e}function sk(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n2)return t;if(/:/.test(n[0])?r=n[0]:(t.date=n[0],r=n[1],sp.timeZoneDelimiter.test(t.date)&&(t.date=e.split(sp.timeZoneDelimiter)[0],r=e.substr(t.date.length,e.length))),r){var a=sp.timezone.exec(r);a?(t.time=r.replace(a[1],""),t.timezone=a[1]):t.time=r}return t}function kre(e,t){var n=new RegExp("^(?:(\\d{4}|[+-]\\d{"+(4+t)+"})|(\\d{2}|[+-]\\d{"+(2+t)+"})$)"),r=e.match(n);if(!r)return{year:NaN,restDateString:""};var a=r[1]?parseInt(r[1]):null,o=r[2]?parseInt(r[2]):null;return{year:o===null?a:o*100,restDateString:e.slice((r[1]||r[2]).length)}}function Cre(e,t){if(t===null)return new Date(NaN);var n=e.match(Sre);if(!n)return new Date(NaN);var r=!!n[4],a=fu(n[1]),o=fu(n[2])-1,i=fu(n[3]),s=fu(n[4]),l=fu(n[5])-1;if(r)return Ore(t,s,l)?Tre(t,s,l):new Date(NaN);var c=new Date(0);return!Nre(t,o,i)||!Ire(t,a)?new Date(NaN):(c.setUTCFullYear(t,o,Math.max(a,i)),c)}function fu(e){return e?parseInt(e):1}function _re(e){var t=e.match(wre);if(!t)return NaN;var n=Gb(t[1]),r=Gb(t[2]),a=Gb(t[3]);return Dre(n,r,a)?n*Q7+r*X7+a*1e3:NaN}function Gb(e){return e&&parseFloat(e.replace(",","."))||0}function Are(e){if(e==="Z")return 0;var t=e.match(Ere);if(!t)return 0;var n=t[1]==="+"?-1:1,r=parseInt(t[2]),a=t[3]&&parseInt(t[3])||0;return Lre(r,a)?n*(r*Q7+a*X7):NaN}function Tre(e,t,n){var r=new Date(0);r.setUTCFullYear(e,0,4);var a=r.getUTCDay()||7,o=(t-1)*7+n+1-a;return r.setUTCDate(r.getUTCDate()+o),r}var Rre=[31,null,31,30,31,30,31,31,30,31,30,31];function r8(e){return e%400===0||e%4===0&&e%100!==0}function Nre(e,t,n){return t>=0&&t<=11&&n>=1&&n<=(Rre[t]||(r8(e)?29:28))}function Ire(e,t){return t>=1&&t<=(r8(e)?366:365)}function Ore(e,t,n){return t>=1&&t<=53&&n>=0&&n<=6}function Dre(e,t,n){return e===24?t===0&&n===0:n>=0&&n<60&&t>=0&&t<60&&e>=0&&e<25}function Lre(e,t){return t>=0&&t<=59}const Mre=(e,t,n="Never")=>{const r=e.getValue(t);return r?Bs(new Date(r),"MMM dd, yyyy"):n},Dn=({isLoading:e,children:t})=>e?f.jsx(Pi,{className:"h-6 w-full"}):t,_n=p.forwardRef(({className:e,type:t,...n},r)=>f.jsx("input",{type:t,className:ee("flex h-10 w-full rounded-md border border-input bg-background-lighter px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",e),ref:r,...n}));_n.displayName="Input";const Pre=({value:e,onValueChange:t})=>f.jsx("form",{children:f.jsxs("div",{className:"relative",children:[f.jsx(Ms,{className:"pointer-events-none absolute left-[12px] top-3 h-4 w-4 text-muted-foreground"}),f.jsx(_n,{placeholder:"Search",value:e,onChange:n=>t(n.target.value),className:"w-52 pl-8 lg:w-80"})]})}),zi=({isLoading:e,children:t})=>e?f.jsx(Pi,{className:"h-6 w-full"}):t,H2=(e,t)=>{const n=e.getValue(t);return n?Bs(new Date(n),"MMM dd, yyyy"):"Never"},$re=(e,t)=>[{accessorKey:"name",header:"Agent Name",cell:({row:n})=>f.jsx(zi,{isLoading:t,children:n.getValue("name")})},{accessorFn:n=>{var r,a;return((a=(r=n.memory)==null?void 0:r.memory)==null?void 0:a.recall_memory)??0},accessorKey:"messages",header:()=>f.jsx(Zf,{children:f.jsx(EX,{className:"h-5 w-5"})}),cell:({row:n})=>f.jsx(zi,{isLoading:t,children:f.jsx("div",{className:" text-center tabular-nums",children:n.getValue("messages")??0})})},{accessorFn:n=>{var r,a;return((a=(r=n.memory)==null?void 0:r.memory)==null?void 0:a.archival_memory)??0},accessorKey:"memories",header:()=>f.jsx(Zf,{children:f.jsx(wX,{className:"h-5 w-5"})}),cell:({row:n})=>f.jsx(zi,{isLoading:t,children:f.jsx("div",{className:"text-center tabular-nums",children:n.getValue("memories")??0})})},{accessorFn:n=>0,accessorKey:"sources",header:()=>f.jsx(Zf,{children:f.jsx(xX,{className:"h-5 w-4"})}),cell:({row:n})=>f.jsx(zi,{isLoading:t,children:f.jsx("div",{className:"text-center tabular-nums",children:n.getValue("sources")??0})})},{accessorFn:n=>n.tools.length,accessorKey:"tools",header:()=>f.jsx(Zf,{className:"justify-center",children:f.jsx(kX,{className:"h-5 w-5"})}),cell:({row:n})=>f.jsx(zi,{isLoading:t,children:f.jsx("div",{className:"text-center tabular-nums",children:n.getValue("tools")??0})})},{accessorKey:"last_run",header:"Last Run",cell:({row:n})=>f.jsx(zi,{isLoading:t,children:H2(n,"last_run")})},{accessorKey:"created_at",header:"Lifespan",cell:({row:n})=>f.jsx(zi,{isLoading:t,children:H2(n,"created_at")})},{accessorKey:"chat",header:"",cell:({row:n})=>t?f.jsx(Pi,{className:"h-6 w-6"}):f.jsxs("div",{className:"flex",children:[f.jsx(ue,{onClick:()=>e(n.original),className:"rounded-lg px-3 py-1",variant:"outline",children:"Chat"}),f.jsx(ue,{variant:"ghost",onClick:()=>n.toggleExpanded(),children:n.getIsExpanded()?f.jsx(vX,{className:"h-4 w-4 text-muted-foreground"}):f.jsx(yX,{className:"h-4 w-4 text-muted-foreground"})})]})}],U_=rf(Vm((e,t)=>({currentAgent:null,lastAgentInitMessage:null,actions:{setAgent:n=>e({currentAgent:n}),setLastAgentInitMessage:n=>e(r=>({...r,lastAgentInitMessage:n})),removeAgent:()=>e(n=>({...n,currentAgent:null}))}}),{name:"agent-storage",partialize:({actions:e,...t})=>t})),To=()=>U_(e=>e.currentAgent),Fre=()=>U_(e=>e.lastAgentInitMessage),ph=()=>U_(e=>e.actions);function jre({setShowingAgentCreation:e}){return f.jsxs("div",{className:"flex h-full flex-col items-center justify-center gap-3",children:[f.jsx("h2",{className:"font-semibold",children:"Create your first agent"}),f.jsxs(ue,{size:"sm",onClick:()=>e(!0),children:[f.jsx(ya,{className:"mr-2 h-4 w-4"}),"Create Agent"]})]})}const zre=e=>{const{agent:t}=e,n=p.useMemo(()=>{var o;return Object.values(((o=t.memory)==null?void 0:o.memory)||{})},[t]),r=p.useMemo(()=>{var o;return((o=n.find(i=>i.label==="persona"))==null?void 0:o.name)??"Not set"},[t]),a=p.useMemo(()=>{var o;return((o=n.find(i=>i.label==="human"))==null?void 0:o.name)??"Not set"},[t]);return f.jsxs("div",{className:"flex flex-col",children:[f.jsxs("div",{className:"flex gap-4 border-b-[1px] py-3",children:[f.jsxs("div",{className:"flex gap-3 text-muted-foreground",children:[f.jsx(bX,{className:"h-4 w-5"}),f.jsx("h6",{children:"Agent Persona"})]}),f.jsx("p",{children:r})]}),f.jsxs("div",{className:"flex gap-4 py-3",children:[f.jsxs("div",{className:"flex gap-3 text-muted-foreground",children:[f.jsx(SX,{className:"h-4 w-5"}),f.jsx("h6",{children:"Human Persona"})]}),f.jsx("p",{children:a})]})]})},Ure=({className:e,setShowingAgentCreation:t})=>{const[n,r]=p.useState(""),{setAgent:a}=ph(),{data:o,isSuccess:i,isError:s,isLoading:l}=Qm({userId:void 0},void 0,{retry:!1}),c=p.useMemo(()=>i?o==null?void 0:o.filter(g=>g.name.toLowerCase().includes(n.toLowerCase())):[],[o,i,n]),u=Mi(),d=g=>{a(g),u(`${g.name}/chat`,{relative:"path"})};return f.jsxs(f.Fragment,{children:[f.jsx("div",{className:"flex items-center justify-between bg-background/95 px-4 pb-3 pt-2.5 backdrop-blur supports-[backdrop-filter]:bg-background/60",children:f.jsx(Pre,{value:n,onValueChange:r})}),f.jsx("div",{className:e,children:!l&&c.length===0?f.jsx(jre,{setShowingAgentCreation:t}):f.jsx(uf,{columns:$re(d,!1),isLoading:l,data:c,error:s?"There was an error loading the agents. Please try again later":void 0,renderPagination:g=>f.jsx(df,{className:"mt-4",table:g}),expandedRowsContent:g=>f.jsx(zre,{agent:c[g]})})})]})},a8="Dialog",[o8,i8]=zn(a8),[Bre,va]=o8(a8),Hre=e=>{const{__scopeDialog:t,children:n,open:r,defaultOpen:a,onOpenChange:o,modal:i=!0}=e,s=p.useRef(null),l=p.useRef(null),[c=!1,u]=Fa({prop:r,defaultProp:a,onChange:o});return p.createElement(Bre,{scope:t,triggerRef:s,contentRef:l,contentId:bi(),titleId:bi(),descriptionId:bi(),open:c,onOpenChange:u,onOpenToggle:p.useCallback(()=>u(d=>!d),[u]),modal:i},n)},Vre="DialogTrigger",qre=p.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,a=va(Vre,n),o=nt(t,a.triggerRef);return p.createElement(ze.button,W({type:"button","aria-haspopup":"dialog","aria-expanded":a.open,"aria-controls":a.contentId,"data-state":B_(a.open)},r,{ref:o,onClick:fe(e.onClick,a.onOpenToggle)}))}),s8="DialogPortal",[Gre,l8]=o8(s8,{forceMount:void 0}),Wre=e=>{const{__scopeDialog:t,forceMount:n,children:r,container:a}=e,o=va(s8,t);return p.createElement(Gre,{scope:t,forceMount:n},p.Children.map(r,i=>p.createElement(pr,{present:n||o.open},p.createElement(Jd,{asChild:!0,container:a},i))))},lk="DialogOverlay",Kre=p.forwardRef((e,t)=>{const n=l8(lk,e.__scopeDialog),{forceMount:r=n.forceMount,...a}=e,o=va(lk,e.__scopeDialog);return o.modal?p.createElement(pr,{present:r||o.open},p.createElement(Yre,W({},a,{ref:t}))):null}),Yre=p.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,a=va(lk,n);return p.createElement(sh,{as:$a,allowPinchZoom:!0,shards:[a.contentRef]},p.createElement(ze.div,W({"data-state":B_(a.open)},r,{ref:t,style:{pointerEvents:"auto",...r.style}})))}),wc="DialogContent",Zre=p.forwardRef((e,t)=>{const n=l8(wc,e.__scopeDialog),{forceMount:r=n.forceMount,...a}=e,o=va(wc,e.__scopeDialog);return p.createElement(pr,{present:r||o.open},o.modal?p.createElement(Xre,W({},a,{ref:t})):p.createElement(Qre,W({},a,{ref:t})))}),Xre=p.forwardRef((e,t)=>{const n=va(wc,e.__scopeDialog),r=p.useRef(null),a=nt(t,n.contentRef,r);return p.useEffect(()=>{const o=r.current;if(o)return mf(o)},[]),p.createElement(c8,W({},e,{ref:a,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:fe(e.onCloseAutoFocus,o=>{var i;o.preventDefault(),(i=n.triggerRef.current)===null||i===void 0||i.focus()}),onPointerDownOutside:fe(e.onPointerDownOutside,o=>{const i=o.detail.originalEvent,s=i.button===0&&i.ctrlKey===!0;(i.button===2||s)&&o.preventDefault()}),onFocusOutside:fe(e.onFocusOutside,o=>o.preventDefault())}))}),Qre=p.forwardRef((e,t)=>{const n=va(wc,e.__scopeDialog),r=p.useRef(!1),a=p.useRef(!1);return p.createElement(c8,W({},e,{ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:o=>{var i;if((i=e.onCloseAutoFocus)===null||i===void 0||i.call(e,o),!o.defaultPrevented){var s;r.current||(s=n.triggerRef.current)===null||s===void 0||s.focus(),o.preventDefault()}r.current=!1,a.current=!1},onInteractOutside:o=>{var i,s;(i=e.onInteractOutside)===null||i===void 0||i.call(e,o),o.defaultPrevented||(r.current=!0,o.detail.originalEvent.type==="pointerdown"&&(a.current=!0));const l=o.target;((s=n.triggerRef.current)===null||s===void 0?void 0:s.contains(l))&&o.preventDefault(),o.detail.originalEvent.type==="focusin"&&a.current&&o.preventDefault()}}))}),c8=p.forwardRef((e,t)=>{const{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:a,onCloseAutoFocus:o,...i}=e,s=va(wc,n),l=p.useRef(null),c=nt(t,l);return eh(),p.createElement(p.Fragment,null,p.createElement(th,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:a,onUnmountAutoFocus:o},p.createElement(Ls,W({role:"dialog",id:s.contentId,"aria-describedby":s.descriptionId,"aria-labelledby":s.titleId,"data-state":B_(s.open)},i,{ref:c,onDismiss:()=>s.onOpenChange(!1)}))),!1)}),u8="DialogTitle",Jre=p.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,a=va(u8,n);return p.createElement(ze.h2,W({id:a.titleId},r,{ref:t}))}),eae="DialogDescription",tae=p.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,a=va(eae,n);return p.createElement(ze.p,W({id:a.descriptionId},r,{ref:t}))}),nae="DialogClose",rae=p.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,a=va(nae,n);return p.createElement(ze.button,W({type:"button"},r,{ref:t,onClick:fe(e.onClick,()=>a.onOpenChange(!1))}))});function B_(e){return e?"open":"closed"}const aae="DialogTitleWarning",[oae,uTe]=RV(aae,{contentName:wc,titleName:u8,docsSlug:"dialog"}),d8=Hre,iae=qre,f8=Wre,H_=Kre,V_=Zre,q_=Jre,G_=tae,W_=rae,Kt=d8,sae=f8,p8=p.forwardRef(({className:e,...t},n)=>f.jsx(H_,{ref:n,className:ee("fixed inset-0 z-50 bg-background/80 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...t}));p8.displayName=H_.displayName;const Ht=p.forwardRef(({className:e,children:t,hasCloseButton:n=!0,...r},a)=>f.jsxs(sae,{children:[f.jsx(p8,{}),f.jsxs(V_,{ref:a,className:ee("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg md:w-full",e),...r,children:[t,n?f.jsxs(W_,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[f.jsx(Di,{className:"h-4 w-4"}),f.jsx("span",{className:"sr-only",children:"Close"})]}):null]})]}));Ht.displayName=V_.displayName;const Pt=({className:e,...t})=>f.jsx("div",{className:ee("flex flex-col space-y-1.5 text-center sm:text-left",e),...t});Pt.displayName="DialogHeader";const g8=({className:e,...t})=>f.jsx("div",{className:ee("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",e),...t});g8.displayName="DialogFooter";const $t=p.forwardRef(({className:e,...t},n)=>f.jsx(q_,{ref:n,className:ee("text-lg font-semibold leading-none tracking-tight",e),...t}));$t.displayName=q_.displayName;const dn=p.forwardRef(({className:e,...t},n)=>f.jsx(G_,{ref:n,className:ee("text-sm text-muted-foreground",e),...t}));dn.displayName=G_.displayName;const lae=({open:e,onOpenChange:t,closeDialog:n})=>{const r=()=>{t(!1),n()};return f.jsx(Kt,{open:e,onOpenChange:t,children:f.jsxs(Ht,{children:[f.jsxs(Pt,{children:[f.jsx($t,{children:"Cancel Creating Agent"}),f.jsx(dn,{children:"Are you sure you want to cancel creating an Agent? All the information you worked on will be lost."})]}),f.jsxs("div",{className:"flex justify-end gap-4",children:[f.jsx(ue,{variant:"ghost",onClick:()=>t(!1),children:"No"}),f.jsx(ue,{onClick:r,children:"Yes"})]})]})})};var bf=e=>e.type==="checkbox",Nl=e=>e instanceof Date,Yn=e=>e==null;const m8=e=>typeof e=="object";var cn=e=>!Yn(e)&&!Array.isArray(e)&&m8(e)&&!Nl(e),h8=e=>cn(e)&&e.target?bf(e.target)?e.target.checked:e.target.value:e,cae=e=>e.substring(0,e.search(/\.\d+(\.|$)/))||e,b8=(e,t)=>e.has(cae(t)),uae=e=>{const t=e.constructor&&e.constructor.prototype;return cn(t)&&t.hasOwnProperty("isPrototypeOf")},K_=typeof window<"u"&&typeof window.HTMLElement<"u"&&typeof document<"u";function Ln(e){let t;const n=Array.isArray(e);if(e instanceof Date)t=new Date(e);else if(e instanceof Set)t=new Set(e);else if(!(K_&&(e instanceof Blob||e instanceof FileList))&&(n||cn(e)))if(t=n?[]:{},!n&&!uae(e))t=e;else for(const r in e)e.hasOwnProperty(r)&&(t[r]=Ln(e[r]));else return e;return t}var zc=e=>Array.isArray(e)?e.filter(Boolean):[],Ot=e=>e===void 0,ge=(e,t,n)=>{if(!t||!cn(e))return n;const r=zc(t.split(/[,[\].]+?/)).reduce((a,o)=>Yn(a)?a:a[o],e);return Ot(r)||r===e?Ot(e[t])?n:e[t]:r},si=e=>typeof e=="boolean";const jg={BLUR:"blur",FOCUS_OUT:"focusout",CHANGE:"change"},Hr={onBlur:"onBlur",onChange:"onChange",onSubmit:"onSubmit",onTouched:"onTouched",all:"all"},Ja={max:"max",min:"min",maxLength:"maxLength",minLength:"minLength",pattern:"pattern",required:"required",validate:"validate"},y8=Ae.createContext(null),Hs=()=>Ae.useContext(y8),dae=e=>{const{children:t,...n}=e;return Ae.createElement(y8.Provider,{value:n},t)};var v8=(e,t,n,r=!0)=>{const a={defaultValues:t._defaultValues};for(const o in e)Object.defineProperty(a,o,{get:()=>{const i=o;return t._proxyFormState[i]!==Hr.all&&(t._proxyFormState[i]=!r||Hr.all),n&&(n[i]=!0),e[i]}});return a},wr=e=>cn(e)&&!Object.keys(e).length,S8=(e,t,n,r)=>{n(e);const{name:a,...o}=e;return wr(o)||Object.keys(o).length>=Object.keys(t).length||Object.keys(o).find(i=>t[i]===(!r||Hr.all))},kr=e=>Array.isArray(e)?e:[e],w8=(e,t,n)=>!e||!t||e===t||kr(e).some(r=>r&&(n?r===t:r.startsWith(t)||t.startsWith(r)));function gh(e){const t=Ae.useRef(e);t.current=e,Ae.useEffect(()=>{const n=!e.disabled&&t.current.subject&&t.current.subject.subscribe({next:t.current.next});return()=>{n&&n.unsubscribe()}},[e.disabled])}function fae(e){const t=Hs(),{control:n=t.control,disabled:r,name:a,exact:o}=e||{},[i,s]=Ae.useState(n._formState),l=Ae.useRef(!0),c=Ae.useRef({isDirty:!1,isLoading:!1,dirtyFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1}),u=Ae.useRef(a);return u.current=a,gh({disabled:r,next:d=>l.current&&w8(u.current,d.name,o)&&S8(d,c.current,n._updateFormState)&&s({...n._formState,...d}),subject:n._subjects.state}),Ae.useEffect(()=>(l.current=!0,c.current.isValid&&n._updateValid(!0),()=>{l.current=!1}),[n]),v8(i,n,c.current,!1)}var Oa=e=>typeof e=="string",E8=(e,t,n,r,a)=>Oa(e)?(r&&t.watch.add(e),ge(n,e,a)):Array.isArray(e)?e.map(o=>(r&&t.watch.add(o),ge(n,o))):(r&&(t.watchAll=!0),n);function pae(e){const t=Hs(),{control:n=t.control,name:r,defaultValue:a,disabled:o,exact:i}=e||{},s=Ae.useRef(r);s.current=r,gh({disabled:o,subject:n._subjects.values,next:u=>{w8(s.current,u.name,i)&&c(Ln(E8(s.current,n._names,u.values||n._formValues,!1,a)))}});const[l,c]=Ae.useState(n._getWatch(r,a));return Ae.useEffect(()=>n._removeUnmounted()),l}var Y_=e=>/^\w*$/.test(e),x8=e=>zc(e.replace(/["|']|\]/g,"").split(/\.|\[/));function ht(e,t,n){let r=-1;const a=Y_(t)?[t]:x8(t),o=a.length,i=o-1;for(;++r{const u=a._options.shouldUnregister||o,d=(g,m)=>{const b=ge(a._fields,g);b&&(b._f.mount=m)};if(d(n,!0),u){const g=Ln(ge(a._options.defaultValues,n));ht(a._defaultValues,n,g),Ot(ge(a._formValues,n))&&ht(a._formValues,n,g)}return()=>{(i?u&&!a._state.action:u)?a.unregister(n):d(n,!1)}},[n,a,i,o]),Ae.useEffect(()=>{ge(a._fields,n)&&a._updateDisabledField({disabled:r,fields:a._fields,name:n})},[r,n,a]),{field:{name:n,value:s,...si(r)?{disabled:r}:{},onChange:Ae.useCallback(u=>c.current.onChange({target:{value:h8(u),name:n},type:jg.CHANGE}),[n]),onBlur:Ae.useCallback(()=>c.current.onBlur({target:{value:ge(a._formValues,n),name:n},type:jg.BLUR}),[n,a]),ref:u=>{const d=ge(a._fields,n);d&&u&&(d._f.ref={focus:()=>u.focus(),select:()=>u.select(),setCustomValidity:g=>u.setCustomValidity(g),reportValidity:()=>u.reportValidity()})}},formState:l,fieldState:Object.defineProperties({},{invalid:{enumerable:!0,get:()=>!!ge(l.errors,n)},isDirty:{enumerable:!0,get:()=>!!ge(l.dirtyFields,n)},isTouched:{enumerable:!0,get:()=>!!ge(l.touchedFields,n)},error:{enumerable:!0,get:()=>ge(l.errors,n)}})}}const mae=e=>e.render(gae(e));var k8=(e,t,n,r,a)=>t?{...n[e],types:{...n[e]&&n[e].types?n[e].types:{},[r]:a||!0}}:{};const zg=(e,t,n)=>{for(const r of n||Object.keys(e)){const a=ge(e,r);if(a){const{_f:o,...i}=a;if(o&&t(o.name)){if(o.ref.focus){o.ref.focus();break}else if(o.refs&&o.refs[0].focus){o.refs[0].focus();break}}else cn(i)&&zg(i,t)}}};var $o=()=>{const e=typeof performance>"u"?Date.now():performance.now()*1e3;return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>{const n=(Math.random()*16+e)%16|0;return(t=="x"?n:n&3|8).toString(16)})},Wb=(e,t,n={})=>n.shouldFocus||Ot(n.shouldFocus)?n.focusName||`${e}.${Ot(n.focusIndex)?t:n.focusIndex}.`:"",ck=e=>({isOnSubmit:!e||e===Hr.onSubmit,isOnBlur:e===Hr.onBlur,isOnChange:e===Hr.onChange,isOnAll:e===Hr.all,isOnTouch:e===Hr.onTouched}),uk=(e,t,n)=>!n&&(t.watchAll||t.watch.has(e)||[...t.watch].some(r=>e.startsWith(r)&&/^\.\w+/.test(e.slice(r.length)))),C8=(e,t,n)=>{const r=zc(ge(e,n));return ht(r,"root",t[n]),ht(e,n,r),e},Z_=e=>e.type==="file",li=e=>typeof e=="function",Ug=e=>{if(!K_)return!1;const t=e?e.ownerDocument:0;return e instanceof(t&&t.defaultView?t.defaultView.HTMLElement:HTMLElement)},Gp=e=>Oa(e),X_=e=>e.type==="radio",Bg=e=>e instanceof RegExp;const V2={value:!1,isValid:!1},q2={value:!0,isValid:!0};var _8=e=>{if(Array.isArray(e)){if(e.length>1){const t=e.filter(n=>n&&n.checked&&!n.disabled).map(n=>n.value);return{value:t,isValid:!!t.length}}return e[0].checked&&!e[0].disabled?e[0].attributes&&!Ot(e[0].attributes.value)?Ot(e[0].value)||e[0].value===""?q2:{value:e[0].value,isValid:!0}:q2:V2}return V2};const G2={isValid:!1,value:null};var A8=e=>Array.isArray(e)?e.reduce((t,n)=>n&&n.checked&&!n.disabled?{isValid:!0,value:n.value}:t,G2):G2;function W2(e,t,n="validate"){if(Gp(e)||Array.isArray(e)&&e.every(Gp)||si(e)&&!e)return{type:n,message:Gp(e)?e:"",ref:t}}var nl=e=>cn(e)&&!Bg(e)?e:{value:e,message:""},dk=async(e,t,n,r,a)=>{const{ref:o,refs:i,required:s,maxLength:l,minLength:c,min:u,max:d,pattern:g,validate:m,name:b,valueAsNumber:y,mount:w,disabled:v}=e._f,h=ge(t,b);if(!w||v)return{};const S=i?i[0]:o,E=D=>{r&&S.reportValidity&&(S.setCustomValidity(si(D)?"":D||""),S.reportValidity())},k={},x=X_(o),C=bf(o),_=x||C,R=(y||Z_(o))&&Ot(o.value)&&Ot(h)||Ug(o)&&o.value===""||h===""||Array.isArray(h)&&!h.length,T=k8.bind(null,b,n,k),L=(D,H,z,M=Ja.maxLength,U=Ja.minLength)=>{const X=D?H:z;k[b]={type:D?M:U,message:X,ref:o,...T(D?M:U,X)}};if(a?!Array.isArray(h)||!h.length:s&&(!_&&(R||Yn(h))||si(h)&&!h||C&&!_8(i).isValid||x&&!A8(i).isValid)){const{value:D,message:H}=Gp(s)?{value:!!s,message:s}:nl(s);if(D&&(k[b]={type:Ja.required,message:H,ref:S,...T(Ja.required,H)},!n))return E(H),k}if(!R&&(!Yn(u)||!Yn(d))){let D,H;const z=nl(d),M=nl(u);if(!Yn(h)&&!isNaN(h)){const U=o.valueAsNumber||h&&+h;Yn(z.value)||(D=U>z.value),Yn(M.value)||(H=Unew Date(new Date().toDateString()+" "+A),j=o.type=="time",O=o.type=="week";Oa(z.value)&&h&&(D=j?X(h)>X(z.value):O?h>z.value:U>new Date(z.value)),Oa(M.value)&&h&&(H=j?X(h)+D.value,M=!Yn(H.value)&&h.length<+H.value;if((z||M)&&(L(z,D.message,H.message),!n))return E(k[b].message),k}if(g&&!R&&Oa(h)){const{value:D,message:H}=nl(g);if(Bg(D)&&!h.match(D)&&(k[b]={type:Ja.pattern,message:H,ref:o,...T(Ja.pattern,H)},!n))return E(H),k}if(m){if(li(m)){const D=await m(h,t),H=W2(D,S);if(H&&(k[b]={...H,...T(Ja.validate,H.message)},!n))return E(H.message),k}else if(cn(m)){let D={};for(const H in m){if(!wr(D)&&!n)break;const z=W2(await m[H](h,t),S,H);z&&(D={...z,...T(H,z.message)},E(z.message),n&&(k[b]=D))}if(!wr(D)&&(k[b]={ref:S,...D},!n))return k}}return E(!0),k};function Kb(e,t){return[...e,...kr(t)]}var Yb=e=>Array.isArray(e)?e.map(()=>{}):void 0;function Zb(e,t,n){return[...e.slice(0,t),...kr(n),...e.slice(t)]}var Xb=(e,t,n)=>Array.isArray(e)?(Ot(e[n])&&(e[n]=void 0),e.splice(n,0,e.splice(t,1)[0]),e):[];function Qb(e,t){return[...kr(t),...kr(e)]}function hae(e,t){let n=0;const r=[...e];for(const a of t)r.splice(a-n,1),n++;return zc(r).length?r:[]}var Jb=(e,t)=>Ot(t)?[]:hae(e,kr(t).sort((n,r)=>n-r)),ey=(e,t,n)=>{e[t]=[e[n],e[n]=e[t]][0]};function bae(e,t){const n=t.slice(0,-1).length;let r=0;for(;r(e[t]=n,e);function vae(e){const t=Hs(),{control:n=t.control,name:r,keyName:a="id",shouldUnregister:o}=e,[i,s]=Ae.useState(n._getFieldArray(r)),l=Ae.useRef(n._getFieldArray(r).map($o)),c=Ae.useRef(i),u=Ae.useRef(r),d=Ae.useRef(!1);u.current=r,c.current=i,n._names.array.add(r),e.rules&&n.register(r,e.rules),gh({next:({values:k,name:x})=>{if(x===u.current||!x){const C=ge(k,u.current);Array.isArray(C)&&(s(C),l.current=C.map($o))}},subject:n._subjects.array});const g=Ae.useCallback(k=>{d.current=!0,n._updateFieldArray(r,k)},[n,r]),m=(k,x)=>{const C=kr(Ln(k)),_=Kb(n._getFieldArray(r),C);n._names.focus=Wb(r,_.length-1,x),l.current=Kb(l.current,C.map($o)),g(_),s(_),n._updateFieldArray(r,_,Kb,{argA:Yb(k)})},b=(k,x)=>{const C=kr(Ln(k)),_=Qb(n._getFieldArray(r),C);n._names.focus=Wb(r,0,x),l.current=Qb(l.current,C.map($o)),g(_),s(_),n._updateFieldArray(r,_,Qb,{argA:Yb(k)})},y=k=>{const x=Jb(n._getFieldArray(r),k);l.current=Jb(l.current,k),g(x),s(x),n._updateFieldArray(r,x,Jb,{argA:k})},w=(k,x,C)=>{const _=kr(Ln(x)),R=Zb(n._getFieldArray(r),k,_);n._names.focus=Wb(r,k,C),l.current=Zb(l.current,k,_.map($o)),g(R),s(R),n._updateFieldArray(r,R,Zb,{argA:k,argB:Yb(x)})},v=(k,x)=>{const C=n._getFieldArray(r);ey(C,k,x),ey(l.current,k,x),g(C),s(C),n._updateFieldArray(r,C,ey,{argA:k,argB:x},!1)},h=(k,x)=>{const C=n._getFieldArray(r);Xb(C,k,x),Xb(l.current,k,x),g(C),s(C),n._updateFieldArray(r,C,Xb,{argA:k,argB:x},!1)},S=(k,x)=>{const C=Ln(x),_=K2(n._getFieldArray(r),k,C);l.current=[..._].map((R,T)=>!R||T===k?$o():l.current[T]),g(_),s([..._]),n._updateFieldArray(r,_,K2,{argA:k,argB:C},!0,!1)},E=k=>{const x=kr(Ln(k));l.current=x.map($o),g([...x]),s([...x]),n._updateFieldArray(r,[...x],C=>C,{},!0,!1)};return Ae.useEffect(()=>{if(n._state.action=!1,uk(r,n._names)&&n._subjects.state.next({...n._formState}),d.current&&(!ck(n._options.mode).isOnSubmit||n._formState.isSubmitted))if(n._options.resolver)n._executeSchema([r]).then(k=>{const x=ge(k.errors,r),C=ge(n._formState.errors,r);(C?!x&&C.type||x&&(C.type!==x.type||C.message!==x.message):x&&x.type)&&(x?ht(n._formState.errors,r,x):pn(n._formState.errors,r),n._subjects.state.next({errors:n._formState.errors}))});else{const k=ge(n._fields,r);k&&k._f&&dk(k,n._formValues,n._options.criteriaMode===Hr.all,n._options.shouldUseNativeValidation,!0).then(x=>!wr(x)&&n._subjects.state.next({errors:C8(n._formState.errors,x,r)}))}n._subjects.values.next({name:r,values:{...n._formValues}}),n._names.focus&&zg(n._fields,k=>!!k&&k.startsWith(n._names.focus||"")),n._names.focus="",n._updateValid(),d.current=!1},[i,r,n]),Ae.useEffect(()=>(!ge(n._formValues,r)&&n._updateFieldArray(r),()=>{(n._options.shouldUnregister||o)&&n.unregister(r)}),[r,n,a,o]),{swap:Ae.useCallback(v,[g,r,n]),move:Ae.useCallback(h,[g,r,n]),prepend:Ae.useCallback(b,[g,r,n]),append:Ae.useCallback(m,[g,r,n]),remove:Ae.useCallback(y,[g,r,n]),insert:Ae.useCallback(w,[g,r,n]),update:Ae.useCallback(S,[g,r,n]),replace:Ae.useCallback(E,[g,r,n]),fields:Ae.useMemo(()=>i.map((k,x)=>({...k,[a]:l.current[x]||$o()})),[i,a])}}function ty(){let e=[];return{get observers(){return e},next:a=>{for(const o of e)o.next&&o.next(a)},subscribe:a=>(e.push(a),{unsubscribe:()=>{e=e.filter(o=>o!==a)}}),unsubscribe:()=>{e=[]}}}var Hg=e=>Yn(e)||!m8(e);function as(e,t){if(Hg(e)||Hg(t))return e===t;if(Nl(e)&&Nl(t))return e.getTime()===t.getTime();const n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(const a of n){const o=e[a];if(!r.includes(a))return!1;if(a!=="ref"){const i=t[a];if(Nl(o)&&Nl(i)||cn(o)&&cn(i)||Array.isArray(o)&&Array.isArray(i)?!as(o,i):o!==i)return!1}}return!0}var T8=e=>e.type==="select-multiple",Sae=e=>X_(e)||bf(e),ny=e=>Ug(e)&&e.isConnected,R8=e=>{for(const t in e)if(li(e[t]))return!0;return!1};function Vg(e,t={}){const n=Array.isArray(e);if(cn(e)||n)for(const r in e)Array.isArray(e[r])||cn(e[r])&&!R8(e[r])?(t[r]=Array.isArray(e[r])?[]:{},Vg(e[r],t[r])):Yn(e[r])||(t[r]=!0);return t}function N8(e,t,n){const r=Array.isArray(e);if(cn(e)||r)for(const a in e)Array.isArray(e[a])||cn(e[a])&&!R8(e[a])?Ot(t)||Hg(n[a])?n[a]=Array.isArray(e[a])?Vg(e[a],[]):{...Vg(e[a])}:N8(e[a],Yn(t)?{}:t[a],n[a]):n[a]=!as(e[a],t[a]);return n}var ry=(e,t)=>N8(e,t,Vg(t)),I8=(e,{valueAsNumber:t,valueAsDate:n,setValueAs:r})=>Ot(e)?e:t?e===""?NaN:e&&+e:n&&Oa(e)?new Date(e):r?r(e):e;function ay(e){const t=e.ref;if(!(e.refs?e.refs.every(n=>n.disabled):t.disabled))return Z_(t)?t.files:X_(t)?A8(e.refs).value:T8(t)?[...t.selectedOptions].map(({value:n})=>n):bf(t)?_8(e.refs).value:I8(Ot(t.value)?e.ref.value:t.value,e)}var wae=(e,t,n,r)=>{const a={};for(const o of e){const i=ge(t,o);i&&ht(a,o,i._f)}return{criteriaMode:n,names:[...e],fields:a,shouldUseNativeValidation:r}},pu=e=>Ot(e)?e:Bg(e)?e.source:cn(e)?Bg(e.value)?e.value.source:e.value:e,Eae=e=>e.mount&&(e.required||e.min||e.max||e.maxLength||e.minLength||e.pattern||e.validate);function Y2(e,t,n){const r=ge(e,n);if(r||Y_(n))return{error:r,name:n};const a=n.split(".");for(;a.length;){const o=a.join("."),i=ge(t,o),s=ge(e,o);if(i&&!Array.isArray(i)&&n!==o)return{name:n};if(s&&s.type)return{name:o,error:s};a.pop()}return{name:n}}var xae=(e,t,n,r,a)=>a.isOnAll?!1:!n&&a.isOnTouch?!(t||e):(n?r.isOnBlur:a.isOnBlur)?!e:(n?r.isOnChange:a.isOnChange)?e:!0,kae=(e,t)=>!zc(ge(e,t)).length&&pn(e,t);const Cae={mode:Hr.onSubmit,reValidateMode:Hr.onChange,shouldFocusError:!0};function _ae(e={},t){let n={...Cae,...e},r={submitCount:0,isDirty:!1,isLoading:li(n.defaultValues),isValidating:!1,isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,touchedFields:{},dirtyFields:{},errors:{}},a={},o=cn(n.defaultValues)||cn(n.values)?Ln(n.defaultValues||n.values)||{}:{},i=n.shouldUnregister?{}:Ln(o),s={action:!1,mount:!1,watch:!1},l={mount:new Set,unMount:new Set,array:new Set,watch:new Set},c,u=0;const d={isDirty:!1,dirtyFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1},g={values:ty(),array:ty(),state:ty()},m=e.resetOptions&&e.resetOptions.keepDirtyValues,b=ck(n.mode),y=ck(n.reValidateMode),w=n.criteriaMode===Hr.all,v=F=>q=>{clearTimeout(u),u=setTimeout(F,q)},h=async F=>{if(d.isValid||F){const q=n.resolver?wr((await R()).errors):await L(a,!0);q!==r.isValid&&g.state.next({isValid:q})}},S=F=>d.isValidating&&g.state.next({isValidating:F}),E=(F,q=[],Y,ye,de=!0,oe=!0)=>{if(ye&&Y){if(s.action=!0,oe&&Array.isArray(ge(a,F))){const _e=Y(ge(a,F),ye.argA,ye.argB);de&&ht(a,F,_e)}if(oe&&Array.isArray(ge(r.errors,F))){const _e=Y(ge(r.errors,F),ye.argA,ye.argB);de&&ht(r.errors,F,_e),kae(r.errors,F)}if(d.touchedFields&&oe&&Array.isArray(ge(r.touchedFields,F))){const _e=Y(ge(r.touchedFields,F),ye.argA,ye.argB);de&&ht(r.touchedFields,F,_e)}d.dirtyFields&&(r.dirtyFields=ry(o,i)),g.state.next({name:F,isDirty:H(F,q),dirtyFields:r.dirtyFields,errors:r.errors,isValid:r.isValid})}else ht(i,F,q)},k=(F,q)=>{ht(r.errors,F,q),g.state.next({errors:r.errors})},x=(F,q,Y,ye)=>{const de=ge(a,F);if(de){const oe=ge(i,F,Ot(Y)?ge(o,F):Y);Ot(oe)||ye&&ye.defaultChecked||q?ht(i,F,q?oe:ay(de._f)):U(F,oe),s.mount&&h()}},C=(F,q,Y,ye,de)=>{let oe=!1,_e=!1;const wt={name:F};if(!Y||ye){d.isDirty&&(_e=r.isDirty,r.isDirty=wt.isDirty=H(),oe=_e!==wt.isDirty);const St=as(ge(o,F),q);_e=ge(r.dirtyFields,F),St?pn(r.dirtyFields,F):ht(r.dirtyFields,F,!0),wt.dirtyFields=r.dirtyFields,oe=oe||d.dirtyFields&&_e!==!St}if(Y){const St=ge(r.touchedFields,F);St||(ht(r.touchedFields,F,Y),wt.touchedFields=r.touchedFields,oe=oe||d.touchedFields&&St!==Y)}return oe&&de&&g.state.next(wt),oe?wt:{}},_=(F,q,Y,ye)=>{const de=ge(r.errors,F),oe=d.isValid&&si(q)&&r.isValid!==q;if(e.delayError&&Y?(c=v(()=>k(F,Y)),c(e.delayError)):(clearTimeout(u),c=null,Y?ht(r.errors,F,Y):pn(r.errors,F)),(Y?!as(de,Y):de)||!wr(ye)||oe){const _e={...ye,...oe&&si(q)?{isValid:q}:{},errors:r.errors,name:F};r={...r,..._e},g.state.next(_e)}S(!1)},R=async F=>n.resolver(i,n.context,wae(F||l.mount,a,n.criteriaMode,n.shouldUseNativeValidation)),T=async F=>{const{errors:q}=await R(F);if(F)for(const Y of F){const ye=ge(q,Y);ye?ht(r.errors,Y,ye):pn(r.errors,Y)}else r.errors=q;return q},L=async(F,q,Y={valid:!0})=>{for(const ye in F){const de=F[ye];if(de){const{_f:oe,..._e}=de;if(oe){const wt=l.array.has(oe.name),St=await dk(de,i,w,n.shouldUseNativeValidation&&!q,wt);if(St[oe.name]&&(Y.valid=!1,q))break;!q&&(ge(St,oe.name)?wt?C8(r.errors,St,oe.name):ht(r.errors,oe.name,St[oe.name]):pn(r.errors,oe.name))}_e&&await L(_e,q,Y)}}return Y.valid},D=()=>{for(const F of l.unMount){const q=ge(a,F);q&&(q._f.refs?q._f.refs.every(Y=>!ny(Y)):!ny(q._f.ref))&&ne(F)}l.unMount=new Set},H=(F,q)=>(F&&q&&ht(i,F,q),!as(V(),o)),z=(F,q,Y)=>E8(F,l,{...s.mount?i:Ot(q)?o:Oa(F)?{[F]:q}:q},Y,q),M=F=>zc(ge(s.mount?i:o,F,e.shouldUnregister?ge(o,F,[]):[])),U=(F,q,Y={})=>{const ye=ge(a,F);let de=q;if(ye){const oe=ye._f;oe&&(!oe.disabled&&ht(i,F,I8(q,oe)),de=Ug(oe.ref)&&Yn(q)?"":q,T8(oe.ref)?[...oe.ref.options].forEach(_e=>_e.selected=de.includes(_e.value)):oe.refs?bf(oe.ref)?oe.refs.length>1?oe.refs.forEach(_e=>(!_e.defaultChecked||!_e.disabled)&&(_e.checked=Array.isArray(de)?!!de.find(wt=>wt===_e.value):de===_e.value)):oe.refs[0]&&(oe.refs[0].checked=!!de):oe.refs.forEach(_e=>_e.checked=_e.value===de):Z_(oe.ref)?oe.ref.value="":(oe.ref.value=de,oe.ref.type||g.values.next({name:F,values:{...i}})))}(Y.shouldDirty||Y.shouldTouch)&&C(F,de,Y.shouldTouch,Y.shouldDirty,!0),Y.shouldValidate&&A(F)},X=(F,q,Y)=>{for(const ye in q){const de=q[ye],oe=`${F}.${ye}`,_e=ge(a,oe);(l.array.has(F)||!Hg(de)||_e&&!_e._f)&&!Nl(de)?X(oe,de,Y):U(oe,de,Y)}},j=(F,q,Y={})=>{const ye=ge(a,F),de=l.array.has(F),oe=Ln(q);ht(i,F,oe),de?(g.array.next({name:F,values:{...i}}),(d.isDirty||d.dirtyFields)&&Y.shouldDirty&&g.state.next({name:F,dirtyFields:ry(o,i),isDirty:H(F,oe)})):ye&&!ye._f&&!Yn(oe)?X(F,oe,Y):U(F,oe,Y),uk(F,l)&&g.state.next({...r}),g.values.next({name:F,values:{...i}}),!s.mount&&t()},O=async F=>{const q=F.target;let Y=q.name,ye=!0;const de=ge(a,Y),oe=()=>q.type?ay(de._f):h8(F);if(de){let _e,wt;const St=oe(),Z=F.type===jg.BLUR||F.type===jg.FOCUS_OUT,le=!Eae(de._f)&&!n.resolver&&!ge(r.errors,Y)&&!de._f.deps||xae(Z,ge(r.touchedFields,Y),r.isSubmitted,y,b),De=uk(Y,l,Z);ht(i,Y,St),Z?(de._f.onBlur&&de._f.onBlur(F),c&&c(0)):de._f.onChange&&de._f.onChange(F);const He=C(Y,St,Z,!1),ft=!wr(He)||De;if(!Z&&g.values.next({name:Y,type:F.type,values:{...i}}),le)return d.isValid&&h(),ft&&g.state.next({name:Y,...De?{}:He});if(!Z&&De&&g.state.next({...r}),S(!0),n.resolver){const{errors:Tn}=await R([Y]),Ir=Y2(r.errors,a,Y),Sn=Y2(Tn,a,Ir.name||Y);_e=Sn.error,Y=Sn.name,wt=wr(Tn)}else _e=(await dk(de,i,w,n.shouldUseNativeValidation))[Y],ye=Number.isNaN(St)||St===ge(i,Y,St),ye&&(_e?wt=!1:d.isValid&&(wt=await L(a,!0)));ye&&(de._f.deps&&A(de._f.deps),_(Y,wt,_e,He))}},A=async(F,q={})=>{let Y,ye;const de=kr(F);if(S(!0),n.resolver){const oe=await T(Ot(F)?F:de);Y=wr(oe),ye=F?!de.some(_e=>ge(oe,_e)):Y}else F?(ye=(await Promise.all(de.map(async oe=>{const _e=ge(a,oe);return await L(_e&&_e._f?{[oe]:_e}:_e)}))).every(Boolean),!(!ye&&!r.isValid)&&h()):ye=Y=await L(a);return g.state.next({...!Oa(F)||d.isValid&&Y!==r.isValid?{}:{name:F},...n.resolver||!F?{isValid:Y}:{},errors:r.errors,isValidating:!1}),q.shouldFocus&&!ye&&zg(a,oe=>oe&&ge(r.errors,oe),F?de:l.mount),ye},V=F=>{const q={...o,...s.mount?i:{}};return Ot(F)?q:Oa(F)?ge(q,F):F.map(Y=>ge(q,Y))},P=(F,q)=>({invalid:!!ge((q||r).errors,F),isDirty:!!ge((q||r).dirtyFields,F),isTouched:!!ge((q||r).touchedFields,F),error:ge((q||r).errors,F)}),N=F=>{F&&kr(F).forEach(q=>pn(r.errors,q)),g.state.next({errors:F?r.errors:{}})},K=(F,q,Y)=>{const ye=(ge(a,F,{_f:{}})._f||{}).ref;ht(r.errors,F,{...q,ref:ye}),g.state.next({name:F,errors:r.errors,isValid:!1}),Y&&Y.shouldFocus&&ye&&ye.focus&&ye.focus()},ae=(F,q)=>li(F)?g.values.subscribe({next:Y=>F(z(void 0,q),Y)}):z(F,q,!0),ne=(F,q={})=>{for(const Y of F?kr(F):l.mount)l.mount.delete(Y),l.array.delete(Y),q.keepValue||(pn(a,Y),pn(i,Y)),!q.keepError&&pn(r.errors,Y),!q.keepDirty&&pn(r.dirtyFields,Y),!q.keepTouched&&pn(r.touchedFields,Y),!n.shouldUnregister&&!q.keepDefaultValue&&pn(o,Y);g.values.next({values:{...i}}),g.state.next({...r,...q.keepDirty?{isDirty:H()}:{}}),!q.keepIsValid&&h()},Q=({disabled:F,name:q,field:Y,fields:ye})=>{if(si(F)){const de=F?void 0:ge(i,q,ay(Y?Y._f:ge(ye,q)._f));ht(i,q,de),C(q,de,!1,!1,!0)}},pe=(F,q={})=>{let Y=ge(a,F);const ye=si(q.disabled);return ht(a,F,{...Y||{},_f:{...Y&&Y._f?Y._f:{ref:{name:F}},name:F,mount:!0,...q}}),l.mount.add(F),Y?Q({field:Y,disabled:q.disabled,name:F}):x(F,!0,q.value),{...ye?{disabled:q.disabled}:{},...n.progressive?{required:!!q.required,min:pu(q.min),max:pu(q.max),minLength:pu(q.minLength),maxLength:pu(q.maxLength),pattern:pu(q.pattern)}:{},name:F,onChange:O,onBlur:O,ref:de=>{if(de){pe(F,q),Y=ge(a,F);const oe=Ot(de.value)&&de.querySelectorAll&&de.querySelectorAll("input,select,textarea")[0]||de,_e=Sae(oe),wt=Y._f.refs||[];if(_e?wt.find(St=>St===oe):oe===Y._f.ref)return;ht(a,F,{_f:{...Y._f,..._e?{refs:[...wt.filter(ny),oe,...Array.isArray(ge(o,F))?[{}]:[]],ref:{type:oe.type,name:F}}:{ref:oe}}}),x(F,!1,void 0,oe)}else Y=ge(a,F,{}),Y._f&&(Y._f.mount=!1),(n.shouldUnregister||q.shouldUnregister)&&!(b8(l.array,F)&&s.action)&&l.unMount.add(F)}}},he=()=>n.shouldFocusError&&zg(a,F=>F&&ge(r.errors,F),l.mount),re=(F,q)=>async Y=>{Y&&(Y.preventDefault&&Y.preventDefault(),Y.persist&&Y.persist());let ye=Ln(i);if(g.state.next({isSubmitting:!0}),n.resolver){const{errors:de,values:oe}=await R();r.errors=de,ye=oe}else await L(a);pn(r.errors,"root"),wr(r.errors)?(g.state.next({errors:{}}),await F(ye,Y)):(q&&await q({...r.errors},Y),he(),setTimeout(he)),g.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:wr(r.errors),submitCount:r.submitCount+1,errors:r.errors})},Ee=(F,q={})=>{ge(a,F)&&(Ot(q.defaultValue)?j(F,ge(o,F)):(j(F,q.defaultValue),ht(o,F,q.defaultValue)),q.keepTouched||pn(r.touchedFields,F),q.keepDirty||(pn(r.dirtyFields,F),r.isDirty=q.defaultValue?H(F,ge(o,F)):H()),q.keepError||(pn(r.errors,F),d.isValid&&h()),g.state.next({...r}))},ke=(F,q={})=>{const Y=F?Ln(F):o,ye=Ln(Y),de=F&&!wr(F)?ye:o;if(q.keepDefaultValues||(o=Y),!q.keepValues){if(q.keepDirtyValues||m)for(const oe of l.mount)ge(r.dirtyFields,oe)?ht(de,oe,ge(i,oe)):j(oe,ge(de,oe));else{if(K_&&Ot(F))for(const oe of l.mount){const _e=ge(a,oe);if(_e&&_e._f){const wt=Array.isArray(_e._f.refs)?_e._f.refs[0]:_e._f.ref;if(Ug(wt)){const St=wt.closest("form");if(St){St.reset();break}}}}a={}}i=e.shouldUnregister?q.keepDefaultValues?Ln(o):{}:Ln(de),g.array.next({values:{...de}}),g.values.next({values:{...de}})}l={mount:new Set,unMount:new Set,array:new Set,watch:new Set,watchAll:!1,focus:""},!s.mount&&t(),s.mount=!d.isValid||!!q.keepIsValid,s.watch=!!e.shouldUnregister,g.state.next({submitCount:q.keepSubmitCount?r.submitCount:0,isDirty:q.keepDirty?r.isDirty:!!(q.keepDefaultValues&&!as(F,o)),isSubmitted:q.keepIsSubmitted?r.isSubmitted:!1,dirtyFields:q.keepDirtyValues?r.dirtyFields:q.keepDefaultValues&&F?ry(o,F):{},touchedFields:q.keepTouched?r.touchedFields:{},errors:q.keepErrors?r.errors:{},isSubmitSuccessful:q.keepIsSubmitSuccessful?r.isSubmitSuccessful:!1,isSubmitting:!1})},We=(F,q)=>ke(li(F)?F(i):F,q);return{control:{register:pe,unregister:ne,getFieldState:P,handleSubmit:re,setError:K,_executeSchema:R,_getWatch:z,_getDirty:H,_updateValid:h,_removeUnmounted:D,_updateFieldArray:E,_updateDisabledField:Q,_getFieldArray:M,_reset:ke,_resetDefaultValues:()=>li(n.defaultValues)&&n.defaultValues().then(F=>{We(F,n.resetOptions),g.state.next({isLoading:!1})}),_updateFormState:F=>{r={...r,...F}},_subjects:g,_proxyFormState:d,get _fields(){return a},get _formValues(){return i},get _state(){return s},set _state(F){s=F},get _defaultValues(){return o},get _names(){return l},set _names(F){l=F},get _formState(){return r},set _formState(F){r=F},get _options(){return n},set _options(F){n={...n,...F}}},trigger:A,register:pe,handleSubmit:re,watch:ae,setValue:j,getValues:V,reset:We,resetField:Ee,clearErrors:N,unregister:ne,setError:K,setFocus:(F,q={})=>{const Y=ge(a,F),ye=Y&&Y._f;if(ye){const de=ye.refs?ye.refs[0]:ye.ref;de.focus&&(de.focus(),q.shouldSelect&&de.select())}},getFieldState:P}}function bn(e={}){const t=Ae.useRef(),n=Ae.useRef(),[r,a]=Ae.useState({isDirty:!1,isValidating:!1,isLoading:li(e.defaultValues),isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,submitCount:0,dirtyFields:{},touchedFields:{},errors:{},defaultValues:li(e.defaultValues)?void 0:e.defaultValues});t.current||(t.current={..._ae(e,()=>a(i=>({...i}))),formState:r});const o=t.current.control;return o._options=e,gh({subject:o._subjects.state,next:i=>{S8(i,o._proxyFormState,o._updateFormState,!0)&&a({...o._formState})}}),Ae.useEffect(()=>{e.values&&!as(e.values,n.current)?(o._reset(e.values,o._options.resetOptions),n.current=e.values):o._resetDefaultValues()},[e.values,o]),Ae.useEffect(()=>{o._state.mount||(o._updateValid(),o._state.mount=!0),o._state.watch&&(o._state.watch=!1,o._subjects.state.next({...o._formState})),o._removeUnmounted()}),t.current.formState=v8(r,o),t.current}var Z2=function(e,t,n){if(e&&"reportValidity"in e){var r=ge(n,t);e.setCustomValidity(r&&r.message||""),e.reportValidity()}},O8=function(e,t){var n=function(a){var o=t.fields[a];o&&o.ref&&"reportValidity"in o.ref?Z2(o.ref,a,e):o.refs&&o.refs.forEach(function(i){return Z2(i,a,e)})};for(var r in t.fields)n(r)},Aae=function(e,t){t.shouldUseNativeValidation&&O8(e,t);var n={};for(var r in e){var a=ge(t.fields,r),o=Object.assign(e[r]||{},{ref:a&&a.ref});if(Rae(t.names||Object.keys(e),r)){var i=Object.assign({},Tae(ge(n,r)));ht(i,"root",o),ht(n,r,i)}else ht(n,r,o)}return n},Tae=function(e){return Array.isArray(e)?e.filter(Boolean):[]},Rae=function(e,t){return e.some(function(n){return n.startsWith(t+".")})},Nae=function(e,t){for(var n={};e.length;){var r=e[0],a=r.code,o=r.message,i=r.path.join(".");if(!n[i])if("unionErrors"in r){var s=r.unionErrors[0].errors[0];n[i]={message:s.message,type:s.code}}else n[i]={message:o,type:a};if("unionErrors"in r&&r.unionErrors.forEach(function(u){return u.errors.forEach(function(d){return e.push(d)})}),t){var l=n[i].types,c=l&&l[r.code];n[i]=k8(i,t,n,a,c?[].concat(c,r.message):r.message)}e.shift()}return n},yn=function(e,t,n){return n===void 0&&(n={}),function(r,a,o){try{return Promise.resolve(function(i,s){try{var l=Promise.resolve(e[n.mode==="sync"?"parse":"parseAsync"](r,t)).then(function(c){return o.shouldUseNativeValidation&&O8({},o),{errors:{},values:n.raw?r:c}})}catch(c){return s(c)}return l&&l.then?l.then(void 0,s):l}(0,function(i){if(function(s){return s.errors!=null}(i))return{values:{},errors:Aae(Nae(i.errors,!o.shouldUseNativeValidation&&o.criteriaMode==="all"),o)};throw i}))}catch(i){return Promise.reject(i)}}};function Bl(e,t,{checkForDefaultPrevented:n=!0}={}){return function(a){if(e==null||e(a),n===!1||!a.defaultPrevented)return t==null?void 0:t(a)}}function Iae(e,t){typeof e=="function"?e(t):e!=null&&(e.current=t)}function D8(...e){return t=>e.forEach(n=>Iae(n,t))}function yf(...e){return p.useCallback(D8(...e),e)}function Oae(e,t=[]){let n=[];function r(o,i){const s=p.createContext(i),l=n.length;n=[...n,i];function c(d){const{scope:g,children:m,...b}=d,y=(g==null?void 0:g[e][l])||s,w=p.useMemo(()=>b,Object.values(b));return p.createElement(y.Provider,{value:w},m)}function u(d,g){const m=(g==null?void 0:g[e][l])||s,b=p.useContext(m);if(b)return b;if(i!==void 0)return i;throw new Error(`\`${d}\` must be used within \`${o}\``)}return c.displayName=o+"Provider",[c,u]}const a=()=>{const o=n.map(i=>p.createContext(i));return function(s){const l=(s==null?void 0:s[e])||o;return p.useMemo(()=>({[`__scope${e}`]:{...s,[e]:l}}),[s,l])}};return a.scopeName=e,[r,Dae(a,...t)]}function Dae(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const r=e.map(a=>({useScope:a(),scopeName:a.scopeName}));return function(o){const i=r.reduce((s,{useScope:l,scopeName:c})=>{const d=l(o)[`__scope${c}`];return{...s,...d}},{});return p.useMemo(()=>({[`__scope${t.scopeName}`]:i}),[i])}};return n.scopeName=t.scopeName,n}const fk=globalThis!=null&&globalThis.document?p.useLayoutEffect:()=>{},Lae=Kd["useId".toString()]||(()=>{});let Mae=0;function oy(e){const[t,n]=p.useState(Lae());return fk(()=>{e||n(r=>r??String(Mae++))},[e]),e||(t?`radix-${t}`:"")}function Rs(e){const t=p.useRef(e);return p.useEffect(()=>{t.current=e}),p.useMemo(()=>(...n)=>{var r;return(r=t.current)===null||r===void 0?void 0:r.call(t,...n)},[])}function Pae({prop:e,defaultProp:t,onChange:n=()=>{}}){const[r,a]=$ae({defaultProp:t,onChange:n}),o=e!==void 0,i=o?e:r,s=Rs(n),l=p.useCallback(c=>{if(o){const d=typeof c=="function"?c(e):c;d!==e&&s(d)}else a(c)},[o,e,a,s]);return[i,l]}function $ae({defaultProp:e,onChange:t}){const n=p.useState(e),[r]=n,a=p.useRef(r),o=Rs(t);return p.useEffect(()=>{a.current!==r&&(o(r),a.current=r)},[r,a,o]),n}const Q_=p.forwardRef((e,t)=>{const{children:n,...r}=e,a=p.Children.toArray(n),o=a.find(jae);if(o){const i=o.props.children,s=a.map(l=>l===o?p.Children.count(i)>1?p.Children.only(null):p.isValidElement(i)?i.props.children:null:l);return p.createElement(pk,W({},r,{ref:t}),p.isValidElement(i)?p.cloneElement(i,void 0,s):null)}return p.createElement(pk,W({},r,{ref:t}),n)});Q_.displayName="Slot";const pk=p.forwardRef((e,t)=>{const{children:n,...r}=e;return p.isValidElement(n)?p.cloneElement(n,{...zae(r,n.props),ref:D8(t,n.ref)}):p.Children.count(n)>1?p.Children.only(null):null});pk.displayName="SlotClone";const Fae=({children:e})=>p.createElement(p.Fragment,null,e);function jae(e){return p.isValidElement(e)&&e.type===Fae}function zae(e,t){const n={...t};for(const r in t){const a=e[r],o=t[r];/^on[A-Z]/.test(r)?n[r]=(...s)=>{o==null||o(...s),a==null||a(...s)}:r==="style"?n[r]={...a,...o}:r==="className"&&(n[r]=[a,o].filter(Boolean).join(" "))}return{...e,...n}}const Uae=["a","button","div","h2","h3","img","li","nav","ol","p","span","svg","ul"],mh=Uae.reduce((e,t)=>{const n=p.forwardRef((r,a)=>{const{asChild:o,...i}=r,s=o?Q_:t;return p.useEffect(()=>{window[Symbol.for("radix-ui")]=!0},[]),p.createElement(s,W({},i,{ref:a}))});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{});function Bae(e,t){e&&ba.flushSync(()=>e.dispatchEvent(t))}function Hae(e){const t=Rs(e);p.useEffect(()=>{const n=r=>{r.key==="Escape"&&t(r)};return document.addEventListener("keydown",n),()=>document.removeEventListener("keydown",n)},[t])}const gk="dismissableLayer.update",Vae="dismissableLayer.pointerDownOutside",qae="dismissableLayer.focusOutside";let X2;const Gae=p.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Wae=p.forwardRef((e,t)=>{const{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:r,onPointerDownOutside:a,onFocusOutside:o,onInteractOutside:i,onDismiss:s,...l}=e,c=p.useContext(Gae),[u,d]=p.useState(null),[,g]=p.useState({}),m=yf(t,x=>d(x)),b=Array.from(c.layers),[y]=[...c.layersWithOutsidePointerEventsDisabled].slice(-1),w=b.indexOf(y),v=u?b.indexOf(u):-1,h=c.layersWithOutsidePointerEventsDisabled.size>0,S=v>=w,E=Kae(x=>{const C=x.target,_=[...c.branches].some(R=>R.contains(C));!S||_||(a==null||a(x),i==null||i(x),x.defaultPrevented||s==null||s())}),k=Yae(x=>{const C=x.target;[...c.branches].some(R=>R.contains(C))||(o==null||o(x),i==null||i(x),x.defaultPrevented||s==null||s())});return Hae(x=>{v===c.layers.size-1&&(r==null||r(x),!x.defaultPrevented&&s&&(x.preventDefault(),s()))}),p.useEffect(()=>{if(u)return n&&(c.layersWithOutsidePointerEventsDisabled.size===0&&(X2=document.body.style.pointerEvents,document.body.style.pointerEvents="none"),c.layersWithOutsidePointerEventsDisabled.add(u)),c.layers.add(u),Q2(),()=>{n&&c.layersWithOutsidePointerEventsDisabled.size===1&&(document.body.style.pointerEvents=X2)}},[u,n,c]),p.useEffect(()=>()=>{u&&(c.layers.delete(u),c.layersWithOutsidePointerEventsDisabled.delete(u),Q2())},[u,c]),p.useEffect(()=>{const x=()=>g({});return document.addEventListener(gk,x),()=>document.removeEventListener(gk,x)},[]),p.createElement(mh.div,W({},l,{ref:m,style:{pointerEvents:h?S?"auto":"none":void 0,...e.style},onFocusCapture:Bl(e.onFocusCapture,k.onFocusCapture),onBlurCapture:Bl(e.onBlurCapture,k.onBlurCapture),onPointerDownCapture:Bl(e.onPointerDownCapture,E.onPointerDownCapture)}))});function Kae(e){const t=Rs(e),n=p.useRef(!1),r=p.useRef(()=>{});return p.useEffect(()=>{const a=i=>{if(i.target&&!n.current){let c=function(){L8(Vae,t,l,{discrete:!0})};var s=c;const l={originalEvent:i};i.pointerType==="touch"?(document.removeEventListener("click",r.current),r.current=c,document.addEventListener("click",r.current,{once:!0})):c()}n.current=!1},o=window.setTimeout(()=>{document.addEventListener("pointerdown",a)},0);return()=>{window.clearTimeout(o),document.removeEventListener("pointerdown",a),document.removeEventListener("click",r.current)}},[t]),{onPointerDownCapture:()=>n.current=!0}}function Yae(e){const t=Rs(e),n=p.useRef(!1);return p.useEffect(()=>{const r=a=>{a.target&&!n.current&&L8(qae,t,{originalEvent:a},{discrete:!1})};return document.addEventListener("focusin",r),()=>document.removeEventListener("focusin",r)},[t]),{onFocusCapture:()=>n.current=!0,onBlurCapture:()=>n.current=!1}}function Q2(){const e=new CustomEvent(gk);document.dispatchEvent(e)}function L8(e,t,n,{discrete:r}){const a=n.originalEvent.target,o=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&a.addEventListener(e,t,{once:!0}),r?Bae(a,o):a.dispatchEvent(o)}const iy="focusScope.autoFocusOnMount",sy="focusScope.autoFocusOnUnmount",J2={bubbles:!1,cancelable:!0},Zae=p.forwardRef((e,t)=>{const{loop:n=!1,trapped:r=!1,onMountAutoFocus:a,onUnmountAutoFocus:o,...i}=e,[s,l]=p.useState(null),c=Rs(a),u=Rs(o),d=p.useRef(null),g=yf(t,y=>l(y)),m=p.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;p.useEffect(()=>{if(r){let v=function(S){if(m.paused||!s)return;const E=S.target;s.contains(E)?d.current=E:Yi(d.current,{select:!0})},h=function(S){m.paused||!s||s.contains(S.relatedTarget)||Yi(d.current,{select:!0})};var y=v,w=h;return document.addEventListener("focusin",v),document.addEventListener("focusout",h),()=>{document.removeEventListener("focusin",v),document.removeEventListener("focusout",h)}}},[r,s,m.paused]),p.useEffect(()=>{if(s){tN.add(m);const y=document.activeElement;if(!s.contains(y)){const v=new CustomEvent(iy,J2);s.addEventListener(iy,c),s.dispatchEvent(v),v.defaultPrevented||(Xae(noe(M8(s)),{select:!0}),document.activeElement===y&&Yi(s))}return()=>{s.removeEventListener(iy,c),setTimeout(()=>{const v=new CustomEvent(sy,J2);s.addEventListener(sy,u),s.dispatchEvent(v),v.defaultPrevented||Yi(y??document.body,{select:!0}),s.removeEventListener(sy,u),tN.remove(m)},0)}}},[s,c,u,m]);const b=p.useCallback(y=>{if(!n&&!r||m.paused)return;const w=y.key==="Tab"&&!y.altKey&&!y.ctrlKey&&!y.metaKey,v=document.activeElement;if(w&&v){const h=y.currentTarget,[S,E]=Qae(h);S&&E?!y.shiftKey&&v===E?(y.preventDefault(),n&&Yi(S,{select:!0})):y.shiftKey&&v===S&&(y.preventDefault(),n&&Yi(E,{select:!0})):v===h&&y.preventDefault()}},[n,r,m.paused]);return p.createElement(mh.div,W({tabIndex:-1},i,{ref:g,onKeyDown:b}))});function Xae(e,{select:t=!1}={}){const n=document.activeElement;for(const r of e)if(Yi(r,{select:t}),document.activeElement!==n)return}function Qae(e){const t=M8(e),n=eN(t,e),r=eN(t.reverse(),e);return[n,r]}function M8(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const a=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||a?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function eN(e,t){for(const n of e)if(!Jae(n,{upTo:t}))return n}function Jae(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function eoe(e){return e instanceof HTMLInputElement&&"select"in e}function Yi(e,{select:t=!1}={}){if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&eoe(e)&&t&&e.select()}}const tN=toe();function toe(){let e=[];return{add(t){const n=e[0];t!==n&&(n==null||n.pause()),e=nN(e,t),e.unshift(t)},remove(t){var n;e=nN(e,t),(n=e[0])===null||n===void 0||n.resume()}}}function nN(e,t){const n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function noe(e){return e.filter(t=>t.tagName!=="A")}const roe=p.forwardRef((e,t)=>{var n;const{container:r=globalThis==null||(n=globalThis.document)===null||n===void 0?void 0:n.body,...a}=e;return r?GC.createPortal(p.createElement(mh.div,W({},a,{ref:t})),r):null});function aoe(e,t){return p.useReducer((n,r)=>{const a=t[n][r];return a??n},e)}const hh=e=>{const{present:t,children:n}=e,r=ooe(t),a=typeof n=="function"?n({present:r.isPresent}):p.Children.only(n),o=yf(r.ref,a.ref);return typeof n=="function"||r.isPresent?p.cloneElement(a,{ref:o}):null};hh.displayName="Presence";function ooe(e){const[t,n]=p.useState(),r=p.useRef({}),a=p.useRef(e),o=p.useRef("none"),i=e?"mounted":"unmounted",[s,l]=aoe(i,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return p.useEffect(()=>{const c=lp(r.current);o.current=s==="mounted"?c:"none"},[s]),fk(()=>{const c=r.current,u=a.current;if(u!==e){const g=o.current,m=lp(c);e?l("MOUNT"):m==="none"||(c==null?void 0:c.display)==="none"?l("UNMOUNT"):l(u&&g!==m?"ANIMATION_OUT":"UNMOUNT"),a.current=e}},[e,l]),fk(()=>{if(t){const c=d=>{const m=lp(r.current).includes(d.animationName);d.target===t&&m&&ba.flushSync(()=>l("ANIMATION_END"))},u=d=>{d.target===t&&(o.current=lp(r.current))};return t.addEventListener("animationstart",u),t.addEventListener("animationcancel",c),t.addEventListener("animationend",c),()=>{t.removeEventListener("animationstart",u),t.removeEventListener("animationcancel",c),t.removeEventListener("animationend",c)}}else l("ANIMATION_END")},[t,l]),{isPresent:["mounted","unmountSuspended"].includes(s),ref:p.useCallback(c=>{c&&(r.current=getComputedStyle(c)),n(c)},[])}}function lp(e){return(e==null?void 0:e.animationName)||"none"}let ly=0;function ioe(){p.useEffect(()=>{var e,t;const n=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",(e=n[0])!==null&&e!==void 0?e:rN()),document.body.insertAdjacentElement("beforeend",(t=n[1])!==null&&t!==void 0?t:rN()),ly++,()=>{ly===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(r=>r.remove()),ly--}},[])}function rN(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.cssText="outline: none; opacity: 0; position: fixed; pointer-events: none",e}var P8=u7(),cy=function(){},bh=p.forwardRef(function(e,t){var n=p.useRef(null),r=p.useState({onScrollCapture:cy,onWheelCapture:cy,onTouchMoveCapture:cy}),a=r[0],o=r[1],i=e.forwardProps,s=e.children,l=e.className,c=e.removeScrollBar,u=e.enabled,d=e.shards,g=e.sideCar,m=e.noIsolation,b=e.inert,y=e.allowPinchZoom,w=e.as,v=w===void 0?"div":w,h=O_(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noIsolation","inert","allowPinchZoom","as"]),S=g,E=c7([n,t]),k=Pn(Pn({},h),a);return p.createElement(p.Fragment,null,u&&p.createElement(S,{sideCar:P8,removeScrollBar:c,shards:d,noIsolation:m,inert:b,setCallbacks:o,allowPinchZoom:!!y,lockRef:n}),i?p.cloneElement(p.Children.only(s),Pn(Pn({},k),{ref:E})):p.createElement(v,Pn({},k,{className:l,ref:E}),s))});bh.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1};bh.classNames={fullWidth:qu,zeroRight:Vu};var mk=!1;if(typeof window<"u")try{var cp=Object.defineProperty({},"passive",{get:function(){return mk=!0,!0}});window.addEventListener("test",cp,cp),window.removeEventListener("test",cp,cp)}catch{mk=!1}var rl=mk?{passive:!1}:!1,soe=function(e){var t=window.getComputedStyle(e);return t.overflowY!=="hidden"&&!(t.overflowY===t.overflowX&&t.overflowY==="visible")},loe=function(e){var t=window.getComputedStyle(e);return t.overflowX!=="hidden"&&!(t.overflowY===t.overflowX&&t.overflowX==="visible")},aN=function(e,t){var n=t;do{typeof ShadowRoot<"u"&&n instanceof ShadowRoot&&(n=n.host);var r=$8(e,n);if(r){var a=F8(e,n),o=a[1],i=a[2];if(o>i)return!0}n=n.parentNode}while(n&&n!==document.body);return!1},coe=function(e){var t=e.scrollTop,n=e.scrollHeight,r=e.clientHeight;return[t,n,r]},uoe=function(e){var t=e.scrollLeft,n=e.scrollWidth,r=e.clientWidth;return[t,n,r]},$8=function(e,t){return e==="v"?soe(t):loe(t)},F8=function(e,t){return e==="v"?coe(t):uoe(t)},doe=function(e,t){return e==="h"&&t==="rtl"?-1:1},foe=function(e,t,n,r,a){var o=doe(e,window.getComputedStyle(t).direction),i=o*r,s=n.target,l=t.contains(s),c=!1,u=i>0,d=0,g=0;do{var m=F8(e,s),b=m[0],y=m[1],w=m[2],v=y-w-o*b;(b||v)&&$8(e,s)&&(d+=v,g+=b),s=s.parentNode}while(!l&&s!==document.body||l&&(t.contains(s)||t===s));return(u&&(a&&d===0||!a&&i>d)||!u&&(a&&g===0||!a&&-i>g))&&(c=!0),c},up=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},oN=function(e){return[e.deltaX,e.deltaY]},iN=function(e){return e&&"current"in e?e.current:e},poe=function(e,t){return e[0]===t[0]&&e[1]===t[1]},goe=function(e){return` - .block-interactivity-`.concat(e,` {pointer-events: none;} - .allow-interactivity-`).concat(e,` {pointer-events: all;} -`)},moe=0,al=[];function hoe(e){var t=p.useRef([]),n=p.useRef([0,0]),r=p.useRef(),a=p.useState(moe++)[0],o=p.useState(function(){return D_()})[0],i=p.useRef(e);p.useEffect(function(){i.current=e},[e]),p.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(a));var y=l7([e.lockRef.current],(e.shards||[]).map(iN),!0).filter(Boolean);return y.forEach(function(w){return w.classList.add("allow-interactivity-".concat(a))}),function(){document.body.classList.remove("block-interactivity-".concat(a)),y.forEach(function(w){return w.classList.remove("allow-interactivity-".concat(a))})}}},[e.inert,e.lockRef.current,e.shards]);var s=p.useCallback(function(y,w){if("touches"in y&&y.touches.length===2)return!i.current.allowPinchZoom;var v=up(y),h=n.current,S="deltaX"in y?y.deltaX:h[0]-v[0],E="deltaY"in y?y.deltaY:h[1]-v[1],k,x=y.target,C=Math.abs(S)>Math.abs(E)?"h":"v";if("touches"in y&&C==="h"&&x.type==="range")return!1;var _=aN(C,x);if(!_)return!0;if(_?k=C:(k=C==="v"?"h":"v",_=aN(C,x)),!_)return!1;if(!r.current&&"changedTouches"in y&&(S||E)&&(r.current=k),!k)return!0;var R=r.current||k;return foe(R,w,y,R==="h"?S:E,!0)},[]),l=p.useCallback(function(y){var w=y;if(!(!al.length||al[al.length-1]!==o)){var v="deltaY"in w?oN(w):up(w),h=t.current.filter(function(k){return k.name===w.type&&k.target===w.target&&poe(k.delta,v)})[0];if(h&&h.should){w.preventDefault();return}if(!h){var S=(i.current.shards||[]).map(iN).filter(Boolean).filter(function(k){return k.contains(w.target)}),E=S.length>0?s(w,S[0]):!i.current.noIsolation;E&&w.preventDefault()}}},[]),c=p.useCallback(function(y,w,v,h){var S={name:y,delta:w,target:v,should:h};t.current.push(S),setTimeout(function(){t.current=t.current.filter(function(E){return E!==S})},1)},[]),u=p.useCallback(function(y){n.current=up(y),r.current=void 0},[]),d=p.useCallback(function(y){c(y.type,oN(y),y.target,s(y,e.lockRef.current))},[]),g=p.useCallback(function(y){c(y.type,up(y),y.target,s(y,e.lockRef.current))},[]);p.useEffect(function(){return al.push(o),e.setCallbacks({onScrollCapture:d,onWheelCapture:d,onTouchMoveCapture:g}),document.addEventListener("wheel",l,rl),document.addEventListener("touchmove",l,rl),document.addEventListener("touchstart",u,rl),function(){al=al.filter(function(y){return y!==o}),document.removeEventListener("wheel",l,rl),document.removeEventListener("touchmove",l,rl),document.removeEventListener("touchstart",u,rl)}},[]);var m=e.removeScrollBar,b=e.inert;return p.createElement(p.Fragment,null,b?p.createElement(o,{styles:goe(a)}):null,m?p.createElement(g7,{gapMode:"margin"}):null)}const boe=f7(P8,hoe);var j8=p.forwardRef(function(e,t){return p.createElement(bh,Pn({},e,{ref:t,sideCar:boe}))});j8.classNames=bh.classNames;const yoe=j8,z8="Dialog",[U8,dTe]=Oae(z8),[voe,Vs]=U8(z8),Soe=e=>{const{__scopeDialog:t,children:n,open:r,defaultOpen:a,onOpenChange:o,modal:i=!0}=e,s=p.useRef(null),l=p.useRef(null),[c=!1,u]=Pae({prop:r,defaultProp:a,onChange:o});return p.createElement(voe,{scope:t,triggerRef:s,contentRef:l,contentId:oy(),titleId:oy(),descriptionId:oy(),open:c,onOpenChange:u,onOpenToggle:p.useCallback(()=>u(d=>!d),[u]),modal:i},n)},B8="DialogPortal",[woe,H8]=U8(B8,{forceMount:void 0}),Eoe=e=>{const{__scopeDialog:t,forceMount:n,children:r,container:a}=e,o=Vs(B8,t);return p.createElement(woe,{scope:t,forceMount:n},p.Children.map(r,i=>p.createElement(hh,{present:n||o.open},p.createElement(roe,{asChild:!0,container:a},i))))},hk="DialogOverlay",xoe=p.forwardRef((e,t)=>{const n=H8(hk,e.__scopeDialog),{forceMount:r=n.forceMount,...a}=e,o=Vs(hk,e.__scopeDialog);return o.modal?p.createElement(hh,{present:r||o.open},p.createElement(koe,W({},a,{ref:t}))):null}),koe=p.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,a=Vs(hk,n);return p.createElement(yoe,{as:Q_,allowPinchZoom:!0,shards:[a.contentRef]},p.createElement(mh.div,W({"data-state":q8(a.open)},r,{ref:t,style:{pointerEvents:"auto",...r.style}})))}),kd="DialogContent",Coe=p.forwardRef((e,t)=>{const n=H8(kd,e.__scopeDialog),{forceMount:r=n.forceMount,...a}=e,o=Vs(kd,e.__scopeDialog);return p.createElement(hh,{present:r||o.open},o.modal?p.createElement(_oe,W({},a,{ref:t})):p.createElement(Aoe,W({},a,{ref:t})))}),_oe=p.forwardRef((e,t)=>{const n=Vs(kd,e.__scopeDialog),r=p.useRef(null),a=yf(t,n.contentRef,r);return p.useEffect(()=>{const o=r.current;if(o)return mf(o)},[]),p.createElement(V8,W({},e,{ref:a,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:Bl(e.onCloseAutoFocus,o=>{var i;o.preventDefault(),(i=n.triggerRef.current)===null||i===void 0||i.focus()}),onPointerDownOutside:Bl(e.onPointerDownOutside,o=>{const i=o.detail.originalEvent,s=i.button===0&&i.ctrlKey===!0;(i.button===2||s)&&o.preventDefault()}),onFocusOutside:Bl(e.onFocusOutside,o=>o.preventDefault())}))}),Aoe=p.forwardRef((e,t)=>{const n=Vs(kd,e.__scopeDialog),r=p.useRef(!1);return p.createElement(V8,W({},e,{ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:a=>{var o;if((o=e.onCloseAutoFocus)===null||o===void 0||o.call(e,a),!a.defaultPrevented){var i;r.current||(i=n.triggerRef.current)===null||i===void 0||i.focus(),a.preventDefault()}r.current=!1},onInteractOutside:a=>{var o,i;(o=e.onInteractOutside)===null||o===void 0||o.call(e,a),a.defaultPrevented||(r.current=!0);const s=a.target;((i=n.triggerRef.current)===null||i===void 0?void 0:i.contains(s))&&a.preventDefault()}}))}),V8=p.forwardRef((e,t)=>{const{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:a,onCloseAutoFocus:o,...i}=e,s=Vs(kd,n),l=p.useRef(null),c=yf(t,l);return ioe(),p.createElement(p.Fragment,null,p.createElement(Zae,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:a,onUnmountAutoFocus:o},p.createElement(Wae,W({role:"dialog",id:s.contentId,"aria-describedby":s.descriptionId,"aria-labelledby":s.titleId,"data-state":q8(s.open)},i,{ref:c,onDismiss:()=>s.onOpenChange(!1)}))),!1)});function q8(e){return e?"open":"closed"}const Toe=Soe,Roe=Eoe,Noe=xoe,Ioe=Coe;var sN=1,Ooe=.9,Doe=.3,uy=.1,Loe=0,dy=.999,Moe=.9999,Poe=.99,lN=/[\\\/\-_+.# \t"@\[\(\{&]/,$oe=/[\\\/\-_+.# \t"@\[\(\{&]/g;function bk(e,t,n,r,a,o){if(o===t.length)return a===e.length?sN:Poe;for(var i=r.charAt(o),s=n.indexOf(i,a),l=0,c,u,d;s>=0;)c=bk(e,t,n,r,s+1,o+1),c>l&&(s===a?c*=sN:lN.test(e.charAt(s-1))?(c*=Ooe,d=e.slice(a,s-1).match($oe),d&&a>0&&(c*=Math.pow(dy,d.length))):lN.test(e.slice(a,s-1))?(c*=Loe,a>0&&(c*=Math.pow(dy,s-a))):(c*=Doe,a>0&&(c*=Math.pow(dy,s-a))),e.charAt(s)!==t.charAt(o)&&(c*=Moe)),cc&&(c=u*uy)),c>l&&(l=c),s=n.indexOf(i,s+1);return l}function Foe(e,t){return bk(e,t,e.toLowerCase(),t.toLowerCase(),0,0)}var joe=Foe;const zoe=Tc(joe);var Uoe='[cmdk-list-sizer=""]',gu='[cmdk-group=""]',fy='[cmdk-group-items=""]',Boe='[cmdk-group-heading=""]',G8='[cmdk-item=""]',cN=`${G8}:not([aria-disabled="true"])`,yk="cmdk-item-select",Vo="data-value",Hoe=(e,t)=>zoe(e,t),W8=p.createContext(void 0),vf=()=>p.useContext(W8),K8=p.createContext(void 0),J_=()=>p.useContext(K8),Y8=p.createContext(void 0),Z8=p.forwardRef((e,t)=>{let n=p.useRef(null),r=dl(()=>({search:"",value:"",filtered:{count:0,items:new Map,groups:new Set}})),a=dl(()=>new Set),o=dl(()=>new Map),i=dl(()=>new Map),s=dl(()=>new Set),l=t9(e),{label:c,children:u,value:d,onValueChange:g,filter:m,shouldFilter:b,...y}=e,w=p.useId(),v=p.useId(),h=p.useId(),S=Xoe();Uc(()=>{if(d!==void 0){let O=d.trim().toLowerCase();r.current.value=O,S(6,T),E.emit()}},[d]);let E=p.useMemo(()=>({subscribe:O=>(s.current.add(O),()=>s.current.delete(O)),snapshot:()=>r.current,setState:(O,A,V)=>{var P,N,K;if(!Object.is(r.current[O],A)){if(r.current[O]=A,O==="search")R(),C(),S(1,_);else if(O==="value")if(((P=l.current)==null?void 0:P.value)!==void 0){(K=(N=l.current).onValueChange)==null||K.call(N,A);return}else V||S(5,T);E.emit()}},emit:()=>{s.current.forEach(O=>O())}}),[]),k=p.useMemo(()=>({value:(O,A)=>{A!==i.current.get(O)&&(i.current.set(O,A),r.current.filtered.items.set(O,x(A)),S(2,()=>{C(),E.emit()}))},item:(O,A)=>(a.current.add(O),A&&(o.current.has(A)?o.current.get(A).add(O):o.current.set(A,new Set([O]))),S(3,()=>{R(),C(),r.current.value||_(),E.emit()}),()=>{i.current.delete(O),a.current.delete(O),r.current.filtered.items.delete(O),S(4,()=>{R(),_(),E.emit()})}),group:O=>(o.current.has(O)||o.current.set(O,new Set),()=>{i.current.delete(O),o.current.delete(O)}),filter:()=>l.current.shouldFilter,label:c||e["aria-label"],listId:w,inputId:h,labelId:v}),[]);function x(O){var A;let V=((A=l.current)==null?void 0:A.filter)??Hoe;return O?V(O,r.current.search):0}function C(){if(!n.current||!r.current.search||l.current.shouldFilter===!1)return;let O=r.current.filtered.items,A=[];r.current.filtered.groups.forEach(P=>{let N=o.current.get(P),K=0;N.forEach(ae=>{let ne=O.get(ae);K=Math.max(ne,K)}),A.push([P,K])});let V=n.current.querySelector(Uoe);D().sort((P,N)=>{let K=P.getAttribute(Vo),ae=N.getAttribute(Vo);return(O.get(ae)??0)-(O.get(K)??0)}).forEach(P=>{let N=P.closest(fy);N?N.appendChild(P.parentElement===N?P:P.closest(`${fy} > *`)):V.appendChild(P.parentElement===V?P:P.closest(`${fy} > *`))}),A.sort((P,N)=>N[1]-P[1]).forEach(P=>{let N=n.current.querySelector(`${gu}[${Vo}="${P[0]}"]`);N==null||N.parentElement.appendChild(N)})}function _(){let O=D().find(V=>!V.ariaDisabled),A=O==null?void 0:O.getAttribute(Vo);E.setState("value",A||void 0)}function R(){if(!r.current.search||l.current.shouldFilter===!1){r.current.filtered.count=a.current.size;return}r.current.filtered.groups=new Set;let O=0;for(let A of a.current){let V=i.current.get(A),P=x(V);r.current.filtered.items.set(A,P),P>0&&O++}for(let[A,V]of o.current)for(let P of V)if(r.current.filtered.items.get(P)>0){r.current.filtered.groups.add(A);break}r.current.filtered.count=O}function T(){var O,A,V;let P=L();P&&(((O=P.parentElement)==null?void 0:O.firstChild)===P&&((V=(A=P.closest(gu))==null?void 0:A.querySelector(Boe))==null||V.scrollIntoView({block:"nearest"})),P.scrollIntoView({block:"nearest"}))}function L(){return n.current.querySelector(`${G8}[aria-selected="true"]`)}function D(){return Array.from(n.current.querySelectorAll(cN))}function H(O){let A=D()[O];A&&E.setState("value",A.getAttribute(Vo))}function z(O){var A;let V=L(),P=D(),N=P.findIndex(ae=>ae===V),K=P[N+O];(A=l.current)!=null&&A.loop&&(K=N+O<0?P[P.length-1]:N+O===P.length?P[0]:P[N+O]),K&&E.setState("value",K.getAttribute(Vo))}function M(O){let A=L(),V=A==null?void 0:A.closest(gu),P;for(;V&&!P;)V=O>0?Yoe(V,gu):Zoe(V,gu),P=V==null?void 0:V.querySelector(cN);P?E.setState("value",P.getAttribute(Vo)):z(O)}let U=()=>H(D().length-1),X=O=>{O.preventDefault(),O.metaKey?U():O.altKey?M(1):z(1)},j=O=>{O.preventDefault(),O.metaKey?H(0):O.altKey?M(-1):z(-1)};return p.createElement("div",{ref:Sf([n,t]),...y,"cmdk-root":"",onKeyDown:O=>{var A;if((A=y.onKeyDown)==null||A.call(y,O),!O.defaultPrevented)switch(O.key){case"n":case"j":{O.ctrlKey&&X(O);break}case"ArrowDown":{X(O);break}case"p":case"k":{O.ctrlKey&&j(O);break}case"ArrowUp":{j(O);break}case"Home":{O.preventDefault(),H(0);break}case"End":{O.preventDefault(),U();break}case"Enter":{O.preventDefault();let V=L();if(V){let P=new Event(yk);V.dispatchEvent(P)}}}}},p.createElement("label",{"cmdk-label":"",htmlFor:k.inputId,id:k.labelId,style:Qoe},c),p.createElement(K8.Provider,{value:E},p.createElement(W8.Provider,{value:k},u)))}),X8=p.forwardRef((e,t)=>{let n=p.useId(),r=p.useRef(null),a=p.useContext(Y8),o=vf(),i=t9(e);Uc(()=>o.item(n,a),[]);let s=n9(n,r,[e.value,e.children,r]),l=J_(),c=Ec(v=>v.value&&v.value===s.current),u=Ec(v=>o.filter()===!1?!0:v.search?v.filtered.items.get(n)>0:!0);p.useEffect(()=>{let v=r.current;if(!(!v||e.disabled))return v.addEventListener(yk,d),()=>v.removeEventListener(yk,d)},[u,e.onSelect,e.disabled]);function d(){var v,h;(h=(v=i.current).onSelect)==null||h.call(v,s.current)}function g(){l.setState("value",s.current,!0)}if(!u)return null;let{disabled:m,value:b,onSelect:y,...w}=e;return p.createElement("div",{ref:Sf([r,t]),...w,"cmdk-item":"",role:"option","aria-disabled":m||void 0,"aria-selected":c||void 0,"data-selected":c||void 0,onPointerMove:m?void 0:g,onClick:m?void 0:d},e.children)}),Q8=p.forwardRef((e,t)=>{let{heading:n,children:r,...a}=e,o=p.useId(),i=p.useRef(null),s=p.useRef(null),l=p.useId(),c=vf(),u=Ec(g=>c.filter()===!1?!0:g.search?g.filtered.groups.has(o):!0);Uc(()=>c.group(o),[]),n9(o,i,[e.value,e.heading,s]);let d=p.createElement(Y8.Provider,{value:o},r);return p.createElement("div",{ref:Sf([i,t]),...a,"cmdk-group":"",role:"presentation",hidden:u?void 0:!0},n&&p.createElement("div",{ref:s,"cmdk-group-heading":"","aria-hidden":!0,id:l},n),p.createElement("div",{"cmdk-group-items":"",role:"group","aria-labelledby":n?l:void 0},d))}),Voe=p.forwardRef((e,t)=>{let{alwaysRender:n,...r}=e,a=p.useRef(null),o=Ec(i=>!i.search);return!n&&!o?null:p.createElement("div",{ref:Sf([a,t]),...r,"cmdk-separator":"",role:"separator"})}),J8=p.forwardRef((e,t)=>{let{onValueChange:n,...r}=e,a=e.value!=null,o=J_(),i=Ec(l=>l.search),s=vf();return p.useEffect(()=>{e.value!=null&&o.setState("search",e.value)},[e.value]),p.createElement("input",{ref:t,...r,"cmdk-input":"",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"aria-autocomplete":"list",role:"combobox","aria-expanded":!0,"aria-controls":s.listId,"aria-labelledby":s.labelId,id:s.inputId,type:"text",value:a?e.value:i,onChange:l=>{a||o.setState("search",l.target.value),n==null||n(l.target.value)}})}),qoe=p.forwardRef((e,t)=>{let{children:n,...r}=e,a=p.useRef(null),o=p.useRef(null),i=vf();return p.useEffect(()=>{if(o.current&&a.current){let s=o.current,l=a.current,c,u=new ResizeObserver(()=>{c=requestAnimationFrame(()=>{let d=s.getBoundingClientRect().height;l.style.setProperty("--cmdk-list-height",d.toFixed(1)+"px")})});return u.observe(s),()=>{cancelAnimationFrame(c),u.unobserve(s)}}},[]),p.createElement("div",{ref:Sf([a,t]),...r,"cmdk-list":"",role:"listbox","aria-label":"Suggestions",id:i.listId,"aria-labelledby":i.inputId},p.createElement("div",{ref:o,"cmdk-list-sizer":""},n))}),Goe=p.forwardRef((e,t)=>{let{open:n,onOpenChange:r,container:a,...o}=e;return p.createElement(Toe,{open:n,onOpenChange:r},p.createElement(Roe,{container:a},p.createElement(Noe,{"cmdk-overlay":""}),p.createElement(Ioe,{"aria-label":e.label,"cmdk-dialog":""},p.createElement(Z8,{ref:t,...o}))))}),e9=p.forwardRef((e,t)=>{let n=p.useRef(!0),r=Ec(a=>a.filtered.count===0);return p.useEffect(()=>{n.current=!1},[]),n.current||!r?null:p.createElement("div",{ref:t,...e,"cmdk-empty":"",role:"presentation"})}),Woe=p.forwardRef((e,t)=>{let{progress:n,children:r,...a}=e;return p.createElement("div",{ref:t,...a,"cmdk-loading":"",role:"progressbar","aria-valuenow":n,"aria-valuemin":0,"aria-valuemax":100,"aria-label":"Loading..."},p.createElement("div",{"aria-hidden":!0},r))}),Koe=Object.assign(Z8,{List:qoe,Item:X8,Input:J8,Group:Q8,Separator:Voe,Dialog:Goe,Empty:e9,Loading:Woe});function Yoe(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return n;n=n.nextElementSibling}}function Zoe(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return n;n=n.previousElementSibling}}function t9(e){let t=p.useRef(e);return Uc(()=>{t.current=e}),t}var Uc=typeof window>"u"?p.useEffect:p.useLayoutEffect;function dl(e){let t=p.useRef();return t.current===void 0&&(t.current=e()),t}function Sf(e){return t=>{e.forEach(n=>{typeof n=="function"?n(t):n!=null&&(n.current=t)})}}function Ec(e){let t=J_(),n=()=>e(t.snapshot());return p.useSyncExternalStore(t.subscribe,n,n)}function n9(e,t,n){let r=p.useRef(),a=vf();return Uc(()=>{var o;let i=(()=>{var s;for(let l of n){if(typeof l=="string")return l.trim().toLowerCase();if(typeof l=="object"&&"current"in l&&l.current)return(s=l.current.textContent)==null?void 0:s.trim().toLowerCase()}})();a.value(e,i),(o=t.current)==null||o.setAttribute(Vo,i),r.current=i}),r}var Xoe=()=>{let[e,t]=p.useState(),n=dl(()=>new Map);return Uc(()=>{n.current.forEach(r=>r()),n.current=new Map},[e]),(r,a)=>{n.current.set(r,a),t({})}},Qoe={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"};const r9="Popover",[a9,fTe]=zn(r9,[qa]),eA=qa(),[Joe,Bc]=a9(r9),o9=e=>{const{__scopePopover:t,children:n,open:r,defaultOpen:a,onOpenChange:o,modal:i=!1}=e,s=eA(t),l=p.useRef(null),[c,u]=p.useState(!1),[d=!1,g]=Fa({prop:r,defaultProp:a,onChange:o});return p.createElement(ah,s,p.createElement(Joe,{scope:t,contentId:bi(),triggerRef:l,open:d,onOpenChange:g,onOpenToggle:p.useCallback(()=>g(m=>!m),[g]),hasCustomAnchor:c,onCustomAnchorAdd:p.useCallback(()=>u(!0),[]),onCustomAnchorRemove:p.useCallback(()=>u(!1),[]),modal:i},n))},eie="PopoverTrigger",i9=p.forwardRef((e,t)=>{const{__scopePopover:n,...r}=e,a=Bc(eie,n),o=eA(n),i=nt(t,a.triggerRef),s=p.createElement(ze.button,W({type:"button","aria-haspopup":"dialog","aria-expanded":a.open,"aria-controls":a.contentId,"data-state":u9(a.open)},r,{ref:i,onClick:fe(e.onClick,a.onOpenToggle)}));return a.hasCustomAnchor?s:p.createElement(pf,W({asChild:!0},o),s)}),s9="PopoverPortal",[tie,nie]=a9(s9,{forceMount:void 0}),rie=e=>{const{__scopePopover:t,forceMount:n,children:r,container:a}=e,o=Bc(s9,t);return p.createElement(tie,{scope:t,forceMount:n},p.createElement(pr,{present:n||o.open},p.createElement(Jd,{asChild:!0,container:a},r)))},Cd="PopoverContent",l9=p.forwardRef((e,t)=>{const n=nie(Cd,e.__scopePopover),{forceMount:r=n.forceMount,...a}=e,o=Bc(Cd,e.__scopePopover);return p.createElement(pr,{present:r||o.open},o.modal?p.createElement(aie,W({},a,{ref:t})):p.createElement(oie,W({},a,{ref:t})))}),aie=p.forwardRef((e,t)=>{const n=Bc(Cd,e.__scopePopover),r=p.useRef(null),a=nt(t,r),o=p.useRef(!1);return p.useEffect(()=>{const i=r.current;if(i)return mf(i)},[]),p.createElement(sh,{as:$a,allowPinchZoom:!0},p.createElement(c9,W({},e,{ref:a,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:fe(e.onCloseAutoFocus,i=>{var s;i.preventDefault(),o.current||(s=n.triggerRef.current)===null||s===void 0||s.focus()}),onPointerDownOutside:fe(e.onPointerDownOutside,i=>{const s=i.detail.originalEvent,l=s.button===0&&s.ctrlKey===!0,c=s.button===2||l;o.current=c},{checkForDefaultPrevented:!1}),onFocusOutside:fe(e.onFocusOutside,i=>i.preventDefault(),{checkForDefaultPrevented:!1})})))}),oie=p.forwardRef((e,t)=>{const n=Bc(Cd,e.__scopePopover),r=p.useRef(!1),a=p.useRef(!1);return p.createElement(c9,W({},e,{ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:o=>{var i;if((i=e.onCloseAutoFocus)===null||i===void 0||i.call(e,o),!o.defaultPrevented){var s;r.current||(s=n.triggerRef.current)===null||s===void 0||s.focus(),o.preventDefault()}r.current=!1,a.current=!1},onInteractOutside:o=>{var i,s;(i=e.onInteractOutside)===null||i===void 0||i.call(e,o),o.defaultPrevented||(r.current=!0,o.detail.originalEvent.type==="pointerdown"&&(a.current=!0));const l=o.target;((s=n.triggerRef.current)===null||s===void 0?void 0:s.contains(l))&&o.preventDefault(),o.detail.originalEvent.type==="focusin"&&a.current&&o.preventDefault()}}))}),c9=p.forwardRef((e,t)=>{const{__scopePopover:n,trapFocus:r,onOpenAutoFocus:a,onCloseAutoFocus:o,disableOutsidePointerEvents:i,onEscapeKeyDown:s,onPointerDownOutside:l,onFocusOutside:c,onInteractOutside:u,...d}=e,g=Bc(Cd,n),m=eA(n);return eh(),p.createElement(th,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:a,onUnmountAutoFocus:o},p.createElement(Ls,{asChild:!0,disableOutsidePointerEvents:i,onInteractOutside:u,onEscapeKeyDown:s,onPointerDownOutside:l,onFocusOutside:c,onDismiss:()=>g.onOpenChange(!1)},p.createElement(gf,W({"data-state":u9(g.open),role:"dialog",id:g.contentId},m,d,{ref:t,style:{...d.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}}))))});function u9(e){return e?"open":"closed"}const iie=o9,sie=i9,lie=rie,d9=l9,uN=o9,dN=p.forwardRef(({className:e,children:t,...n},r)=>f.jsx(i9,{asChild:!0,...n,children:f.jsxs(ue,{variant:"outline",role:"combobox",className:ee("w-full justify-between font-normal py-2 px-3 hover:bg-transparent",e),children:[t,f.jsx(ZC,{className:"h-4 w-4 opacity-50"})]})})),fN=p.forwardRef(({className:e,children:t,...n},r)=>f.jsx(l9,{className:ee("PopoverContent z-50 bg-background rounded-md border"),...n,children:t})),pN=p.forwardRef(({className:e,children:t,...n},r)=>f.jsx(Koe,{className:ee("w-full",e),...n,children:t})),gN=p.forwardRef(({className:e,children:t,...n},r)=>f.jsx(J8,{className:ee("w-full pt-2 px-3 bg-background text-foreground border-b py-3 focus-visible:outline-none",e),...n,children:t})),mN=p.forwardRef(({className:e,children:t,...n},r)=>f.jsx(e9,{className:ee("w-full px-3 text-destructive text-sm",e),...n,children:t})),hN=p.forwardRef(({className:e,children:t,...n},r)=>f.jsx(Q8,{className:ee("w-full",e),...n,children:t})),bN=p.forwardRef(({className:e,children:t,...n},r)=>f.jsx(X8,{className:ee("w-full py-2 px-3 hover:bg-muted",e),...n,children:t})),cie=p.forwardRef((e,t)=>p.createElement(ze.label,W({},e,{ref:t,onMouseDown:n=>{var r;(r=e.onMouseDown)===null||r===void 0||r.call(e,n),!n.defaultPrevented&&n.detail>1&&n.preventDefault()}}))),f9=cie,uie=ef("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),os=p.forwardRef(({className:e,...t},n)=>f.jsx(f9,{ref:n,className:ee(uie(),e),...t}));os.displayName=f9.displayName;const vn=dae,p9=p.createContext({}),ut=({...e})=>f.jsx(p9.Provider,{value:{name:e.name},children:f.jsx(mae,{...e})}),yh=()=>{const e=p.useContext(p9),t=p.useContext(g9),{getFieldState:n,formState:r}=Hs(),a=n(e.name,r);if(!e)throw new Error("useFormField should be used within ");const{id:o}=t;return{id:o,name:e.name,formItemId:`${o}-form-item`,formDescriptionId:`${o}-form-item-description`,formMessageId:`${o}-form-item-message`,...a}},g9=p.createContext({}),ot=p.forwardRef(({className:e,...t},n)=>{const r=p.useId();return f.jsx(g9.Provider,{value:{id:r},children:f.jsx("div",{ref:n,className:ee("space-y-2",e),...t})})});ot.displayName="FormItem";const yt=p.forwardRef(({className:e,...t},n)=>{const{error:r,formItemId:a}=yh();return f.jsx(os,{ref:n,className:ee(r&&"text-destructive",e),htmlFor:a,...t})});yt.displayName="FormLabel";const pt=p.forwardRef(({...e},t)=>{const{error:n,formItemId:r,formDescriptionId:a,formMessageId:o}=yh();return f.jsx($a,{ref:t,id:r,"aria-describedby":n?`${a} ${o}`:`${a}`,"aria-invalid":!!n,...e})});pt.displayName="FormControl";const Mt=p.forwardRef(({className:e,...t},n)=>{const{formDescriptionId:r}=yh();return f.jsx("p",{ref:n,id:r,className:ee("text-sm text-muted-foreground",e),...t})});Mt.displayName="FormDescription";const lt=p.forwardRef(({className:e,children:t,...n},r)=>{const{error:a,formMessageId:o}=yh(),i=a?String(a==null?void 0:a.message):t;return i?f.jsx("p",{ref:r,id:o,className:ee("text-sm font-medium text-destructive",e),...n,children:i}):null});lt.displayName="FormMessage";function die(){const e=p.useRef(null);return{formRef:e,onKeyDown:n=>{var r;n.key==="Enter"&&!n.shiftKey&&!n.nativeEvent.isComposing&&((r=e.current)==null||r.requestSubmit(),n.preventDefault())}}}const qs=p.forwardRef(({className:e,...t},n)=>f.jsx("textarea",{className:ee("flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",e),ref:n,...t}));qs.displayName="Textarea";const Ai=({limit:e,charCount:t,...n})=>f.jsxs("div",{className:"relative",children:[f.jsx(qs,{className:ee("min-h-80",n.className),...n}),f.jsxs("div",{className:"absolute bottom-2 right-2.5 text-xs text-muted-foreground",children:[t??0," / ",e]})]}),fie=(...e)=>ee("scroll-m-20 text-2xl font-semibold tracking-tight",e),pie=(...e)=>ee("rounded bg-muted px-[0.3rem] py-[0.2rem] font-mono text-sm font-semibold",e),Tt=(...e)=>ee("text-sm text-muted-foreground",e);var gt;(function(e){e.assertEqual=a=>a;function t(a){}e.assertIs=t;function n(a){throw new Error}e.assertNever=n,e.arrayToEnum=a=>{const o={};for(const i of a)o[i]=i;return o},e.getValidEnumValues=a=>{const o=e.objectKeys(a).filter(s=>typeof a[a[s]]!="number"),i={};for(const s of o)i[s]=a[s];return e.objectValues(i)},e.objectValues=a=>e.objectKeys(a).map(function(o){return a[o]}),e.objectKeys=typeof Object.keys=="function"?a=>Object.keys(a):a=>{const o=[];for(const i in a)Object.prototype.hasOwnProperty.call(a,i)&&o.push(i);return o},e.find=(a,o)=>{for(const i of a)if(o(i))return i},e.isInteger=typeof Number.isInteger=="function"?a=>Number.isInteger(a):a=>typeof a=="number"&&isFinite(a)&&Math.floor(a)===a;function r(a,o=" | "){return a.map(i=>typeof i=="string"?`'${i}'`:i).join(o)}e.joinValues=r,e.jsonStringifyReplacer=(a,o)=>typeof o=="bigint"?o.toString():o})(gt||(gt={}));var yN;(function(e){e.mergeShapes=(t,n)=>({...t,...n})})(yN||(yN={}));const ve=gt.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),Xi=e=>{switch(typeof e){case"undefined":return ve.undefined;case"string":return ve.string;case"number":return isNaN(e)?ve.nan:ve.number;case"boolean":return ve.boolean;case"function":return ve.function;case"bigint":return ve.bigint;case"symbol":return ve.symbol;case"object":return Array.isArray(e)?ve.array:e===null?ve.null:e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?ve.promise:typeof Map<"u"&&e instanceof Map?ve.map:typeof Set<"u"&&e instanceof Set?ve.set:typeof Date<"u"&&e instanceof Date?ve.date:ve.object;default:return ve.unknown}},ce=gt.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);class Ma extends Error{constructor(t){super(),this.issues=[],this.addIssue=r=>{this.issues=[...this.issues,r]},this.addIssues=(r=[])=>{this.issues=[...this.issues,...r]};const n=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,n):this.__proto__=n,this.name="ZodError",this.issues=t}get errors(){return this.issues}format(t){const n=t||function(o){return o.message},r={_errors:[]},a=o=>{for(const i of o.issues)if(i.code==="invalid_union")i.unionErrors.map(a);else if(i.code==="invalid_return_type")a(i.returnTypeError);else if(i.code==="invalid_arguments")a(i.argumentsError);else if(i.path.length===0)r._errors.push(n(i));else{let s=r,l=0;for(;ln.message){const n={},r=[];for(const a of this.issues)a.path.length>0?(n[a.path[0]]=n[a.path[0]]||[],n[a.path[0]].push(t(a))):r.push(t(a));return{formErrors:r,fieldErrors:n}}get formErrors(){return this.flatten()}}Ma.create=e=>new Ma(e);const qg=(e,t)=>{let n;switch(e.code){case ce.invalid_type:e.received===ve.undefined?n="Required":n=`Expected ${e.expected}, received ${e.received}`;break;case ce.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(e.expected,gt.jsonStringifyReplacer)}`;break;case ce.unrecognized_keys:n=`Unrecognized key(s) in object: ${gt.joinValues(e.keys,", ")}`;break;case ce.invalid_union:n="Invalid input";break;case ce.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${gt.joinValues(e.options)}`;break;case ce.invalid_enum_value:n=`Invalid enum value. Expected ${gt.joinValues(e.options)}, received '${e.received}'`;break;case ce.invalid_arguments:n="Invalid function arguments";break;case ce.invalid_return_type:n="Invalid function return type";break;case ce.invalid_date:n="Invalid date";break;case ce.invalid_string:typeof e.validation=="object"?"includes"in e.validation?(n=`Invalid input: must include "${e.validation.includes}"`,typeof e.validation.position=="number"&&(n=`${n} at one or more positions greater than or equal to ${e.validation.position}`)):"startsWith"in e.validation?n=`Invalid input: must start with "${e.validation.startsWith}"`:"endsWith"in e.validation?n=`Invalid input: must end with "${e.validation.endsWith}"`:gt.assertNever(e.validation):e.validation!=="regex"?n=`Invalid ${e.validation}`:n="Invalid";break;case ce.too_small:e.type==="array"?n=`Array must contain ${e.exact?"exactly":e.inclusive?"at least":"more than"} ${e.minimum} element(s)`:e.type==="string"?n=`String must contain ${e.exact?"exactly":e.inclusive?"at least":"over"} ${e.minimum} character(s)`:e.type==="number"?n=`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:e.type==="date"?n=`Date must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(e.minimum))}`:n="Invalid input";break;case ce.too_big:e.type==="array"?n=`Array must contain ${e.exact?"exactly":e.inclusive?"at most":"less than"} ${e.maximum} element(s)`:e.type==="string"?n=`String must contain ${e.exact?"exactly":e.inclusive?"at most":"under"} ${e.maximum} character(s)`:e.type==="number"?n=`Number must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="bigint"?n=`BigInt must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="date"?n=`Date must be ${e.exact?"exactly":e.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(e.maximum))}`:n="Invalid input";break;case ce.custom:n="Invalid input";break;case ce.invalid_intersection_types:n="Intersection results could not be merged";break;case ce.not_multiple_of:n=`Number must be a multiple of ${e.multipleOf}`;break;case ce.not_finite:n="Number must be finite";break;default:n=t.defaultError,gt.assertNever(e)}return{message:n}};let gie=qg;function vk(){return gie}const Sk=e=>{const{data:t,path:n,errorMaps:r,issueData:a}=e,o=[...n,...a.path||[]],i={...a,path:o};let s="";const l=r.filter(c=>!!c).slice().reverse();for(const c of l)s=c(i,{data:t,defaultError:s}).message;return{...a,path:o,message:a.message||s}};function we(e,t){const n=Sk({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,vk(),qg].filter(r=>!!r)});e.common.issues.push(n)}class Qn{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(t,n){const r=[];for(const a of n){if(a.status==="aborted")return Ge;a.status==="dirty"&&t.dirty(),r.push(a.value)}return{status:t.value,value:r}}static async mergeObjectAsync(t,n){const r=[];for(const a of n)r.push({key:await a.key,value:await a.value});return Qn.mergeObjectSync(t,r)}static mergeObjectSync(t,n){const r={};for(const a of n){const{key:o,value:i}=a;if(o.status==="aborted"||i.status==="aborted")return Ge;o.status==="dirty"&&t.dirty(),i.status==="dirty"&&t.dirty(),o.value!=="__proto__"&&(typeof i.value<"u"||a.alwaysSet)&&(r[o.value]=i.value)}return{status:t.value,value:r}}}const Ge=Object.freeze({status:"aborted"}),mie=e=>({status:"dirty",value:e}),dr=e=>({status:"valid",value:e}),vN=e=>e.status==="aborted",SN=e=>e.status==="dirty",Gg=e=>e.status==="valid",wk=e=>typeof Promise<"u"&&e instanceof Promise;var Ne;(function(e){e.errToObj=t=>typeof t=="string"?{message:t}:t||{},e.toString=t=>typeof t=="string"?t:t==null?void 0:t.message})(Ne||(Ne={}));class Ba{constructor(t,n,r,a){this._cachedPath=[],this.parent=t,this.data=n,this._path=r,this._key=a}get path(){return this._cachedPath.length||(this._key instanceof Array?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}const wN=(e,t)=>{if(Gg(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const n=new Ma(e.common.issues);return this._error=n,this._error}}};function qe(e){if(!e)return{};const{errorMap:t,invalid_type_error:n,required_error:r,description:a}=e;if(t&&(n||r))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return t?{errorMap:t,description:a}:{errorMap:(i,s)=>i.code!=="invalid_type"?{message:s.defaultError}:typeof s.data>"u"?{message:r??s.defaultError}:{message:n??s.defaultError},description:a}}class rt{constructor(t){this.spa=this.safeParseAsync,this._def=t,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this)}get description(){return this._def.description}_getType(t){return Xi(t.data)}_getOrReturnCtx(t,n){return n||{common:t.parent.common,data:t.data,parsedType:Xi(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}_processInputParams(t){return{status:new Qn,ctx:{common:t.parent.common,data:t.data,parsedType:Xi(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}}_parseSync(t){const n=this._parse(t);if(wk(n))throw new Error("Synchronous parse encountered promise.");return n}_parseAsync(t){const n=this._parse(t);return Promise.resolve(n)}parse(t,n){const r=this.safeParse(t,n);if(r.success)return r.data;throw r.error}safeParse(t,n){var r;const a={common:{issues:[],async:(r=n==null?void 0:n.async)!==null&&r!==void 0?r:!1,contextualErrorMap:n==null?void 0:n.errorMap},path:(n==null?void 0:n.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:Xi(t)},o=this._parseSync({data:t,path:a.path,parent:a});return wN(a,o)}async parseAsync(t,n){const r=await this.safeParseAsync(t,n);if(r.success)return r.data;throw r.error}async safeParseAsync(t,n){const r={common:{issues:[],contextualErrorMap:n==null?void 0:n.errorMap,async:!0},path:(n==null?void 0:n.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:Xi(t)},a=this._parse({data:t,path:r.path,parent:r}),o=await(wk(a)?a:Promise.resolve(a));return wN(r,o)}refine(t,n){const r=a=>typeof n=="string"||typeof n>"u"?{message:n}:typeof n=="function"?n(a):n;return this._refinement((a,o)=>{const i=t(a),s=()=>o.addIssue({code:ce.custom,...r(a)});return typeof Promise<"u"&&i instanceof Promise?i.then(l=>l?!0:(s(),!1)):i?!0:(s(),!1)})}refinement(t,n){return this._refinement((r,a)=>t(r)?!0:(a.addIssue(typeof n=="function"?n(r,a):n),!1))}_refinement(t){return new xo({schema:this,typeName:Me.ZodEffects,effect:{type:"refinement",refinement:t}})}superRefine(t){return this._refinement(t)}optional(){return yi.create(this,this._def)}nullable(){return _c.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return Pa.create(this,this._def)}promise(){return Td.create(this,this._def)}or(t){return Yg.create([this,t],this._def)}and(t){return Zg.create(this,t,this._def)}transform(t){return new xo({...qe(this._def),schema:this,typeName:Me.ZodEffects,effect:{type:"transform",transform:t}})}default(t){const n=typeof t=="function"?t:()=>t;return new tm({...qe(this._def),innerType:this,defaultValue:n,typeName:Me.ZodDefault})}brand(){return new Aie({typeName:Me.ZodBranded,type:this,...qe(this._def)})}catch(t){const n=typeof t=="function"?t:()=>t;return new Ak({...qe(this._def),innerType:this,catchValue:n,typeName:Me.ZodCatch})}describe(t){const n=this.constructor;return new n({...this._def,description:t})}pipe(t){return vh.create(this,t)}readonly(){return Rk.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}const hie=/^c[^\s-]{8,}$/i,bie=/^[a-z][a-z0-9]*$/,yie=/^[0-9A-HJKMNP-TV-Z]{26}$/,vie=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,Sie=/^(?!\.)(?!.*\.\.)([A-Z0-9_+-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,wie="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";let py;const Eie=/^(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))$/,xie=/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,kie=e=>e.precision?e.offset?new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{${e.precision}}(([+-]\\d{2}(:?\\d{2})?)|Z)$`):new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{${e.precision}}Z$`):e.precision===0?e.offset?new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(([+-]\\d{2}(:?\\d{2})?)|Z)$"):new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"):e.offset?new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(([+-]\\d{2}(:?\\d{2})?)|Z)$"):new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?Z$");function Cie(e,t){return!!((t==="v4"||!t)&&Eie.test(e)||(t==="v6"||!t)&&xie.test(e))}class lo extends rt{_parse(t){if(this._def.coerce&&(t.data=String(t.data)),this._getType(t)!==ve.string){const o=this._getOrReturnCtx(t);return we(o,{code:ce.invalid_type,expected:ve.string,received:o.parsedType}),Ge}const r=new Qn;let a;for(const o of this._def.checks)if(o.kind==="min")t.data.lengtho.value&&(a=this._getOrReturnCtx(t,a),we(a,{code:ce.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!1,message:o.message}),r.dirty());else if(o.kind==="length"){const i=t.data.length>o.value,s=t.data.lengtht.test(a),{validation:n,code:ce.invalid_string,...Ne.errToObj(r)})}_addCheck(t){return new lo({...this._def,checks:[...this._def.checks,t]})}email(t){return this._addCheck({kind:"email",...Ne.errToObj(t)})}url(t){return this._addCheck({kind:"url",...Ne.errToObj(t)})}emoji(t){return this._addCheck({kind:"emoji",...Ne.errToObj(t)})}uuid(t){return this._addCheck({kind:"uuid",...Ne.errToObj(t)})}cuid(t){return this._addCheck({kind:"cuid",...Ne.errToObj(t)})}cuid2(t){return this._addCheck({kind:"cuid2",...Ne.errToObj(t)})}ulid(t){return this._addCheck({kind:"ulid",...Ne.errToObj(t)})}ip(t){return this._addCheck({kind:"ip",...Ne.errToObj(t)})}datetime(t){var n;return typeof t=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,message:t}):this._addCheck({kind:"datetime",precision:typeof(t==null?void 0:t.precision)>"u"?null:t==null?void 0:t.precision,offset:(n=t==null?void 0:t.offset)!==null&&n!==void 0?n:!1,...Ne.errToObj(t==null?void 0:t.message)})}regex(t,n){return this._addCheck({kind:"regex",regex:t,...Ne.errToObj(n)})}includes(t,n){return this._addCheck({kind:"includes",value:t,position:n==null?void 0:n.position,...Ne.errToObj(n==null?void 0:n.message)})}startsWith(t,n){return this._addCheck({kind:"startsWith",value:t,...Ne.errToObj(n)})}endsWith(t,n){return this._addCheck({kind:"endsWith",value:t,...Ne.errToObj(n)})}min(t,n){return this._addCheck({kind:"min",value:t,...Ne.errToObj(n)})}max(t,n){return this._addCheck({kind:"max",value:t,...Ne.errToObj(n)})}length(t,n){return this._addCheck({kind:"length",value:t,...Ne.errToObj(n)})}nonempty(t){return this.min(1,Ne.errToObj(t))}trim(){return new lo({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new lo({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new lo({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(t=>t.kind==="datetime")}get isEmail(){return!!this._def.checks.find(t=>t.kind==="email")}get isURL(){return!!this._def.checks.find(t=>t.kind==="url")}get isEmoji(){return!!this._def.checks.find(t=>t.kind==="emoji")}get isUUID(){return!!this._def.checks.find(t=>t.kind==="uuid")}get isCUID(){return!!this._def.checks.find(t=>t.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(t=>t.kind==="cuid2")}get isULID(){return!!this._def.checks.find(t=>t.kind==="ulid")}get isIP(){return!!this._def.checks.find(t=>t.kind==="ip")}get minLength(){let t=null;for(const n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t}get maxLength(){let t=null;for(const n of this._def.checks)n.kind==="max"&&(t===null||n.value{var t;return new lo({checks:[],typeName:Me.ZodString,coerce:(t=e==null?void 0:e.coerce)!==null&&t!==void 0?t:!1,...qe(e)})};function _ie(e,t){const n=(e.toString().split(".")[1]||"").length,r=(t.toString().split(".")[1]||"").length,a=n>r?n:r,o=parseInt(e.toFixed(a).replace(".","")),i=parseInt(t.toFixed(a).replace(".",""));return o%i/Math.pow(10,a)}class xc extends rt{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(t){if(this._def.coerce&&(t.data=Number(t.data)),this._getType(t)!==ve.number){const o=this._getOrReturnCtx(t);return we(o,{code:ce.invalid_type,expected:ve.number,received:o.parsedType}),Ge}let r;const a=new Qn;for(const o of this._def.checks)o.kind==="int"?gt.isInteger(t.data)||(r=this._getOrReturnCtx(t,r),we(r,{code:ce.invalid_type,expected:"integer",received:"float",message:o.message}),a.dirty()):o.kind==="min"?(o.inclusive?t.datao.value:t.data>=o.value)&&(r=this._getOrReturnCtx(t,r),we(r,{code:ce.too_big,maximum:o.value,type:"number",inclusive:o.inclusive,exact:!1,message:o.message}),a.dirty()):o.kind==="multipleOf"?_ie(t.data,o.value)!==0&&(r=this._getOrReturnCtx(t,r),we(r,{code:ce.not_multiple_of,multipleOf:o.value,message:o.message}),a.dirty()):o.kind==="finite"?Number.isFinite(t.data)||(r=this._getOrReturnCtx(t,r),we(r,{code:ce.not_finite,message:o.message}),a.dirty()):gt.assertNever(o);return{status:a.value,value:t.data}}gte(t,n){return this.setLimit("min",t,!0,Ne.toString(n))}gt(t,n){return this.setLimit("min",t,!1,Ne.toString(n))}lte(t,n){return this.setLimit("max",t,!0,Ne.toString(n))}lt(t,n){return this.setLimit("max",t,!1,Ne.toString(n))}setLimit(t,n,r,a){return new xc({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:Ne.toString(a)}]})}_addCheck(t){return new xc({...this._def,checks:[...this._def.checks,t]})}int(t){return this._addCheck({kind:"int",message:Ne.toString(t)})}positive(t){return this._addCheck({kind:"min",value:0,inclusive:!1,message:Ne.toString(t)})}negative(t){return this._addCheck({kind:"max",value:0,inclusive:!1,message:Ne.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:0,inclusive:!0,message:Ne.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:0,inclusive:!0,message:Ne.toString(t)})}multipleOf(t,n){return this._addCheck({kind:"multipleOf",value:t,message:Ne.toString(n)})}finite(t){return this._addCheck({kind:"finite",message:Ne.toString(t)})}safe(t){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:Ne.toString(t)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:Ne.toString(t)})}get minValue(){let t=null;for(const n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t}get maxValue(){let t=null;for(const n of this._def.checks)n.kind==="max"&&(t===null||n.valuet.kind==="int"||t.kind==="multipleOf"&>.isInteger(t.value))}get isFinite(){let t=null,n=null;for(const r of this._def.checks){if(r.kind==="finite"||r.kind==="int"||r.kind==="multipleOf")return!0;r.kind==="min"?(n===null||r.value>n)&&(n=r.value):r.kind==="max"&&(t===null||r.valuenew xc({checks:[],typeName:Me.ZodNumber,coerce:(e==null?void 0:e.coerce)||!1,...qe(e)});class kc extends rt{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(t){if(this._def.coerce&&(t.data=BigInt(t.data)),this._getType(t)!==ve.bigint){const o=this._getOrReturnCtx(t);return we(o,{code:ce.invalid_type,expected:ve.bigint,received:o.parsedType}),Ge}let r;const a=new Qn;for(const o of this._def.checks)o.kind==="min"?(o.inclusive?t.datao.value:t.data>=o.value)&&(r=this._getOrReturnCtx(t,r),we(r,{code:ce.too_big,type:"bigint",maximum:o.value,inclusive:o.inclusive,message:o.message}),a.dirty()):o.kind==="multipleOf"?t.data%o.value!==BigInt(0)&&(r=this._getOrReturnCtx(t,r),we(r,{code:ce.not_multiple_of,multipleOf:o.value,message:o.message}),a.dirty()):gt.assertNever(o);return{status:a.value,value:t.data}}gte(t,n){return this.setLimit("min",t,!0,Ne.toString(n))}gt(t,n){return this.setLimit("min",t,!1,Ne.toString(n))}lte(t,n){return this.setLimit("max",t,!0,Ne.toString(n))}lt(t,n){return this.setLimit("max",t,!1,Ne.toString(n))}setLimit(t,n,r,a){return new kc({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:Ne.toString(a)}]})}_addCheck(t){return new kc({...this._def,checks:[...this._def.checks,t]})}positive(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:Ne.toString(t)})}negative(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:Ne.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:Ne.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:Ne.toString(t)})}multipleOf(t,n){return this._addCheck({kind:"multipleOf",value:t,message:Ne.toString(n)})}get minValue(){let t=null;for(const n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t}get maxValue(){let t=null;for(const n of this._def.checks)n.kind==="max"&&(t===null||n.value{var t;return new kc({checks:[],typeName:Me.ZodBigInt,coerce:(t=e==null?void 0:e.coerce)!==null&&t!==void 0?t:!1,...qe(e)})};class Ek extends rt{_parse(t){if(this._def.coerce&&(t.data=!!t.data),this._getType(t)!==ve.boolean){const r=this._getOrReturnCtx(t);return we(r,{code:ce.invalid_type,expected:ve.boolean,received:r.parsedType}),Ge}return dr(t.data)}}Ek.create=e=>new Ek({typeName:Me.ZodBoolean,coerce:(e==null?void 0:e.coerce)||!1,...qe(e)});class _d extends rt{_parse(t){if(this._def.coerce&&(t.data=new Date(t.data)),this._getType(t)!==ve.date){const o=this._getOrReturnCtx(t);return we(o,{code:ce.invalid_type,expected:ve.date,received:o.parsedType}),Ge}if(isNaN(t.data.getTime())){const o=this._getOrReturnCtx(t);return we(o,{code:ce.invalid_date}),Ge}const r=new Qn;let a;for(const o of this._def.checks)o.kind==="min"?t.data.getTime()o.value&&(a=this._getOrReturnCtx(t,a),we(a,{code:ce.too_big,message:o.message,inclusive:!0,exact:!1,maximum:o.value,type:"date"}),r.dirty()):gt.assertNever(o);return{status:r.value,value:new Date(t.data.getTime())}}_addCheck(t){return new _d({...this._def,checks:[...this._def.checks,t]})}min(t,n){return this._addCheck({kind:"min",value:t.getTime(),message:Ne.toString(n)})}max(t,n){return this._addCheck({kind:"max",value:t.getTime(),message:Ne.toString(n)})}get minDate(){let t=null;for(const n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t!=null?new Date(t):null}get maxDate(){let t=null;for(const n of this._def.checks)n.kind==="max"&&(t===null||n.valuenew _d({checks:[],coerce:(e==null?void 0:e.coerce)||!1,typeName:Me.ZodDate,...qe(e)});class xk extends rt{_parse(t){if(this._getType(t)!==ve.symbol){const r=this._getOrReturnCtx(t);return we(r,{code:ce.invalid_type,expected:ve.symbol,received:r.parsedType}),Ge}return dr(t.data)}}xk.create=e=>new xk({typeName:Me.ZodSymbol,...qe(e)});class Wg extends rt{_parse(t){if(this._getType(t)!==ve.undefined){const r=this._getOrReturnCtx(t);return we(r,{code:ce.invalid_type,expected:ve.undefined,received:r.parsedType}),Ge}return dr(t.data)}}Wg.create=e=>new Wg({typeName:Me.ZodUndefined,...qe(e)});class Kg extends rt{_parse(t){if(this._getType(t)!==ve.null){const r=this._getOrReturnCtx(t);return we(r,{code:ce.invalid_type,expected:ve.null,received:r.parsedType}),Ge}return dr(t.data)}}Kg.create=e=>new Kg({typeName:Me.ZodNull,...qe(e)});class Ad extends rt{constructor(){super(...arguments),this._any=!0}_parse(t){return dr(t.data)}}Ad.create=e=>new Ad({typeName:Me.ZodAny,...qe(e)});class Hl extends rt{constructor(){super(...arguments),this._unknown=!0}_parse(t){return dr(t.data)}}Hl.create=e=>new Hl({typeName:Me.ZodUnknown,...qe(e)});class Ti extends rt{_parse(t){const n=this._getOrReturnCtx(t);return we(n,{code:ce.invalid_type,expected:ve.never,received:n.parsedType}),Ge}}Ti.create=e=>new Ti({typeName:Me.ZodNever,...qe(e)});class kk extends rt{_parse(t){if(this._getType(t)!==ve.undefined){const r=this._getOrReturnCtx(t);return we(r,{code:ce.invalid_type,expected:ve.void,received:r.parsedType}),Ge}return dr(t.data)}}kk.create=e=>new kk({typeName:Me.ZodVoid,...qe(e)});class Pa extends rt{_parse(t){const{ctx:n,status:r}=this._processInputParams(t),a=this._def;if(n.parsedType!==ve.array)return we(n,{code:ce.invalid_type,expected:ve.array,received:n.parsedType}),Ge;if(a.exactLength!==null){const i=n.data.length>a.exactLength.value,s=n.data.lengtha.maxLength.value&&(we(n,{code:ce.too_big,maximum:a.maxLength.value,type:"array",inclusive:!0,exact:!1,message:a.maxLength.message}),r.dirty()),n.common.async)return Promise.all([...n.data].map((i,s)=>a.type._parseAsync(new Ba(n,i,n.path,s)))).then(i=>Qn.mergeArray(r,i));const o=[...n.data].map((i,s)=>a.type._parseSync(new Ba(n,i,n.path,s)));return Qn.mergeArray(r,o)}get element(){return this._def.type}min(t,n){return new Pa({...this._def,minLength:{value:t,message:Ne.toString(n)}})}max(t,n){return new Pa({...this._def,maxLength:{value:t,message:Ne.toString(n)}})}length(t,n){return new Pa({...this._def,exactLength:{value:t,message:Ne.toString(n)}})}nonempty(t){return this.min(1,t)}}Pa.create=(e,t)=>new Pa({type:e,minLength:null,maxLength:null,exactLength:null,typeName:Me.ZodArray,...qe(t)});function fl(e){if(e instanceof qt){const t={};for(const n in e.shape){const r=e.shape[n];t[n]=yi.create(fl(r))}return new qt({...e._def,shape:()=>t})}else return e instanceof Pa?new Pa({...e._def,type:fl(e.element)}):e instanceof yi?yi.create(fl(e.unwrap())):e instanceof _c?_c.create(fl(e.unwrap())):e instanceof Eo?Eo.create(e.items.map(t=>fl(t))):e}class qt extends rt{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;const t=this._def.shape(),n=gt.objectKeys(t);return this._cached={shape:t,keys:n}}_parse(t){if(this._getType(t)!==ve.object){const c=this._getOrReturnCtx(t);return we(c,{code:ce.invalid_type,expected:ve.object,received:c.parsedType}),Ge}const{status:r,ctx:a}=this._processInputParams(t),{shape:o,keys:i}=this._getCached(),s=[];if(!(this._def.catchall instanceof Ti&&this._def.unknownKeys==="strip"))for(const c in a.data)i.includes(c)||s.push(c);const l=[];for(const c of i){const u=o[c],d=a.data[c];l.push({key:{status:"valid",value:c},value:u._parse(new Ba(a,d,a.path,c)),alwaysSet:c in a.data})}if(this._def.catchall instanceof Ti){const c=this._def.unknownKeys;if(c==="passthrough")for(const u of s)l.push({key:{status:"valid",value:u},value:{status:"valid",value:a.data[u]}});else if(c==="strict")s.length>0&&(we(a,{code:ce.unrecognized_keys,keys:s}),r.dirty());else if(c!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const c=this._def.catchall;for(const u of s){const d=a.data[u];l.push({key:{status:"valid",value:u},value:c._parse(new Ba(a,d,a.path,u)),alwaysSet:u in a.data})}}return a.common.async?Promise.resolve().then(async()=>{const c=[];for(const u of l){const d=await u.key;c.push({key:d,value:await u.value,alwaysSet:u.alwaysSet})}return c}).then(c=>Qn.mergeObjectSync(r,c)):Qn.mergeObjectSync(r,l)}get shape(){return this._def.shape()}strict(t){return Ne.errToObj,new qt({...this._def,unknownKeys:"strict",...t!==void 0?{errorMap:(n,r)=>{var a,o,i,s;const l=(i=(o=(a=this._def).errorMap)===null||o===void 0?void 0:o.call(a,n,r).message)!==null&&i!==void 0?i:r.defaultError;return n.code==="unrecognized_keys"?{message:(s=Ne.errToObj(t).message)!==null&&s!==void 0?s:l}:{message:l}}}:{}})}strip(){return new qt({...this._def,unknownKeys:"strip"})}passthrough(){return new qt({...this._def,unknownKeys:"passthrough"})}extend(t){return new qt({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new qt({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:Me.ZodObject})}setKey(t,n){return this.augment({[t]:n})}catchall(t){return new qt({...this._def,catchall:t})}pick(t){const n={};return gt.objectKeys(t).forEach(r=>{t[r]&&this.shape[r]&&(n[r]=this.shape[r])}),new qt({...this._def,shape:()=>n})}omit(t){const n={};return gt.objectKeys(this.shape).forEach(r=>{t[r]||(n[r]=this.shape[r])}),new qt({...this._def,shape:()=>n})}deepPartial(){return fl(this)}partial(t){const n={};return gt.objectKeys(this.shape).forEach(r=>{const a=this.shape[r];t&&!t[r]?n[r]=a:n[r]=a.optional()}),new qt({...this._def,shape:()=>n})}required(t){const n={};return gt.objectKeys(this.shape).forEach(r=>{if(t&&!t[r])n[r]=this.shape[r];else{let o=this.shape[r];for(;o instanceof yi;)o=o._def.innerType;n[r]=o}}),new qt({...this._def,shape:()=>n})}keyof(){return m9(gt.objectKeys(this.shape))}}qt.create=(e,t)=>new qt({shape:()=>e,unknownKeys:"strip",catchall:Ti.create(),typeName:Me.ZodObject,...qe(t)});qt.strictCreate=(e,t)=>new qt({shape:()=>e,unknownKeys:"strict",catchall:Ti.create(),typeName:Me.ZodObject,...qe(t)});qt.lazycreate=(e,t)=>new qt({shape:e,unknownKeys:"strip",catchall:Ti.create(),typeName:Me.ZodObject,...qe(t)});class Yg extends rt{_parse(t){const{ctx:n}=this._processInputParams(t),r=this._def.options;function a(o){for(const s of o)if(s.result.status==="valid")return s.result;for(const s of o)if(s.result.status==="dirty")return n.common.issues.push(...s.ctx.common.issues),s.result;const i=o.map(s=>new Ma(s.ctx.common.issues));return we(n,{code:ce.invalid_union,unionErrors:i}),Ge}if(n.common.async)return Promise.all(r.map(async o=>{const i={...n,common:{...n.common,issues:[]},parent:null};return{result:await o._parseAsync({data:n.data,path:n.path,parent:i}),ctx:i}})).then(a);{let o;const i=[];for(const l of r){const c={...n,common:{...n.common,issues:[]},parent:null},u=l._parseSync({data:n.data,path:n.path,parent:c});if(u.status==="valid")return u;u.status==="dirty"&&!o&&(o={result:u,ctx:c}),c.common.issues.length&&i.push(c.common.issues)}if(o)return n.common.issues.push(...o.ctx.common.issues),o.result;const s=i.map(l=>new Ma(l));return we(n,{code:ce.invalid_union,unionErrors:s}),Ge}}get options(){return this._def.options}}Yg.create=(e,t)=>new Yg({options:e,typeName:Me.ZodUnion,...qe(t)});const Wp=e=>e instanceof Qg?Wp(e.schema):e instanceof xo?Wp(e.innerType()):e instanceof Jg?[e.value]:e instanceof Ns?e.options:e instanceof em?Object.keys(e.enum):e instanceof tm?Wp(e._def.innerType):e instanceof Wg?[void 0]:e instanceof Kg?[null]:null;class tA extends rt{_parse(t){const{ctx:n}=this._processInputParams(t);if(n.parsedType!==ve.object)return we(n,{code:ce.invalid_type,expected:ve.object,received:n.parsedType}),Ge;const r=this.discriminator,a=n.data[r],o=this.optionsMap.get(a);return o?n.common.async?o._parseAsync({data:n.data,path:n.path,parent:n}):o._parseSync({data:n.data,path:n.path,parent:n}):(we(n,{code:ce.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[r]}),Ge)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(t,n,r){const a=new Map;for(const o of n){const i=Wp(o.shape[t]);if(!i)throw new Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`);for(const s of i){if(a.has(s))throw new Error(`Discriminator property ${String(t)} has duplicate value ${String(s)}`);a.set(s,o)}}return new tA({typeName:Me.ZodDiscriminatedUnion,discriminator:t,options:n,optionsMap:a,...qe(r)})}}function Ck(e,t){const n=Xi(e),r=Xi(t);if(e===t)return{valid:!0,data:e};if(n===ve.object&&r===ve.object){const a=gt.objectKeys(t),o=gt.objectKeys(e).filter(s=>a.indexOf(s)!==-1),i={...e,...t};for(const s of o){const l=Ck(e[s],t[s]);if(!l.valid)return{valid:!1};i[s]=l.data}return{valid:!0,data:i}}else if(n===ve.array&&r===ve.array){if(e.length!==t.length)return{valid:!1};const a=[];for(let o=0;o{if(vN(o)||vN(i))return Ge;const s=Ck(o.value,i.value);return s.valid?((SN(o)||SN(i))&&n.dirty(),{status:n.value,value:s.data}):(we(r,{code:ce.invalid_intersection_types}),Ge)};return r.common.async?Promise.all([this._def.left._parseAsync({data:r.data,path:r.path,parent:r}),this._def.right._parseAsync({data:r.data,path:r.path,parent:r})]).then(([o,i])=>a(o,i)):a(this._def.left._parseSync({data:r.data,path:r.path,parent:r}),this._def.right._parseSync({data:r.data,path:r.path,parent:r}))}}Zg.create=(e,t,n)=>new Zg({left:e,right:t,typeName:Me.ZodIntersection,...qe(n)});class Eo extends rt{_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==ve.array)return we(r,{code:ce.invalid_type,expected:ve.array,received:r.parsedType}),Ge;if(r.data.lengththis._def.items.length&&(we(r,{code:ce.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),n.dirty());const o=[...r.data].map((i,s)=>{const l=this._def.items[s]||this._def.rest;return l?l._parse(new Ba(r,i,r.path,s)):null}).filter(i=>!!i);return r.common.async?Promise.all(o).then(i=>Qn.mergeArray(n,i)):Qn.mergeArray(n,o)}get items(){return this._def.items}rest(t){return new Eo({...this._def,rest:t})}}Eo.create=(e,t)=>{if(!Array.isArray(e))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new Eo({items:e,typeName:Me.ZodTuple,rest:null,...qe(t)})};class Xg extends rt{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==ve.object)return we(r,{code:ce.invalid_type,expected:ve.object,received:r.parsedType}),Ge;const a=[],o=this._def.keyType,i=this._def.valueType;for(const s in r.data)a.push({key:o._parse(new Ba(r,s,r.path,s)),value:i._parse(new Ba(r,r.data[s],r.path,s))});return r.common.async?Qn.mergeObjectAsync(n,a):Qn.mergeObjectSync(n,a)}get element(){return this._def.valueType}static create(t,n,r){return n instanceof rt?new Xg({keyType:t,valueType:n,typeName:Me.ZodRecord,...qe(r)}):new Xg({keyType:lo.create(),valueType:t,typeName:Me.ZodRecord,...qe(n)})}}class _k extends rt{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==ve.map)return we(r,{code:ce.invalid_type,expected:ve.map,received:r.parsedType}),Ge;const a=this._def.keyType,o=this._def.valueType,i=[...r.data.entries()].map(([s,l],c)=>({key:a._parse(new Ba(r,s,r.path,[c,"key"])),value:o._parse(new Ba(r,l,r.path,[c,"value"]))}));if(r.common.async){const s=new Map;return Promise.resolve().then(async()=>{for(const l of i){const c=await l.key,u=await l.value;if(c.status==="aborted"||u.status==="aborted")return Ge;(c.status==="dirty"||u.status==="dirty")&&n.dirty(),s.set(c.value,u.value)}return{status:n.value,value:s}})}else{const s=new Map;for(const l of i){const c=l.key,u=l.value;if(c.status==="aborted"||u.status==="aborted")return Ge;(c.status==="dirty"||u.status==="dirty")&&n.dirty(),s.set(c.value,u.value)}return{status:n.value,value:s}}}}_k.create=(e,t,n)=>new _k({valueType:t,keyType:e,typeName:Me.ZodMap,...qe(n)});class Cc extends rt{_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==ve.set)return we(r,{code:ce.invalid_type,expected:ve.set,received:r.parsedType}),Ge;const a=this._def;a.minSize!==null&&r.data.sizea.maxSize.value&&(we(r,{code:ce.too_big,maximum:a.maxSize.value,type:"set",inclusive:!0,exact:!1,message:a.maxSize.message}),n.dirty());const o=this._def.valueType;function i(l){const c=new Set;for(const u of l){if(u.status==="aborted")return Ge;u.status==="dirty"&&n.dirty(),c.add(u.value)}return{status:n.value,value:c}}const s=[...r.data.values()].map((l,c)=>o._parse(new Ba(r,l,r.path,c)));return r.common.async?Promise.all(s).then(l=>i(l)):i(s)}min(t,n){return new Cc({...this._def,minSize:{value:t,message:Ne.toString(n)}})}max(t,n){return new Cc({...this._def,maxSize:{value:t,message:Ne.toString(n)}})}size(t,n){return this.min(t,n).max(t,n)}nonempty(t){return this.min(1,t)}}Cc.create=(e,t)=>new Cc({valueType:e,minSize:null,maxSize:null,typeName:Me.ZodSet,...qe(t)});class Gu extends rt{constructor(){super(...arguments),this.validate=this.implement}_parse(t){const{ctx:n}=this._processInputParams(t);if(n.parsedType!==ve.function)return we(n,{code:ce.invalid_type,expected:ve.function,received:n.parsedType}),Ge;function r(s,l){return Sk({data:s,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,vk(),qg].filter(c=>!!c),issueData:{code:ce.invalid_arguments,argumentsError:l}})}function a(s,l){return Sk({data:s,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,vk(),qg].filter(c=>!!c),issueData:{code:ce.invalid_return_type,returnTypeError:l}})}const o={errorMap:n.common.contextualErrorMap},i=n.data;if(this._def.returns instanceof Td){const s=this;return dr(async function(...l){const c=new Ma([]),u=await s._def.args.parseAsync(l,o).catch(m=>{throw c.addIssue(r(l,m)),c}),d=await Reflect.apply(i,this,u);return await s._def.returns._def.type.parseAsync(d,o).catch(m=>{throw c.addIssue(a(d,m)),c})})}else{const s=this;return dr(function(...l){const c=s._def.args.safeParse(l,o);if(!c.success)throw new Ma([r(l,c.error)]);const u=Reflect.apply(i,this,c.data),d=s._def.returns.safeParse(u,o);if(!d.success)throw new Ma([a(u,d.error)]);return d.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new Gu({...this._def,args:Eo.create(t).rest(Hl.create())})}returns(t){return new Gu({...this._def,returns:t})}implement(t){return this.parse(t)}strictImplement(t){return this.parse(t)}static create(t,n,r){return new Gu({args:t||Eo.create([]).rest(Hl.create()),returns:n||Hl.create(),typeName:Me.ZodFunction,...qe(r)})}}class Qg extends rt{get schema(){return this._def.getter()}_parse(t){const{ctx:n}=this._processInputParams(t);return this._def.getter()._parse({data:n.data,path:n.path,parent:n})}}Qg.create=(e,t)=>new Qg({getter:e,typeName:Me.ZodLazy,...qe(t)});class Jg extends rt{_parse(t){if(t.data!==this._def.value){const n=this._getOrReturnCtx(t);return we(n,{received:n.data,code:ce.invalid_literal,expected:this._def.value}),Ge}return{status:"valid",value:t.data}}get value(){return this._def.value}}Jg.create=(e,t)=>new Jg({value:e,typeName:Me.ZodLiteral,...qe(t)});function m9(e,t){return new Ns({values:e,typeName:Me.ZodEnum,...qe(t)})}class Ns extends rt{_parse(t){if(typeof t.data!="string"){const n=this._getOrReturnCtx(t),r=this._def.values;return we(n,{expected:gt.joinValues(r),received:n.parsedType,code:ce.invalid_type}),Ge}if(this._def.values.indexOf(t.data)===-1){const n=this._getOrReturnCtx(t),r=this._def.values;return we(n,{received:n.data,code:ce.invalid_enum_value,options:r}),Ge}return dr(t.data)}get options(){return this._def.values}get enum(){const t={};for(const n of this._def.values)t[n]=n;return t}get Values(){const t={};for(const n of this._def.values)t[n]=n;return t}get Enum(){const t={};for(const n of this._def.values)t[n]=n;return t}extract(t){return Ns.create(t)}exclude(t){return Ns.create(this.options.filter(n=>!t.includes(n)))}}Ns.create=m9;class em extends rt{_parse(t){const n=gt.getValidEnumValues(this._def.values),r=this._getOrReturnCtx(t);if(r.parsedType!==ve.string&&r.parsedType!==ve.number){const a=gt.objectValues(n);return we(r,{expected:gt.joinValues(a),received:r.parsedType,code:ce.invalid_type}),Ge}if(n.indexOf(t.data)===-1){const a=gt.objectValues(n);return we(r,{received:r.data,code:ce.invalid_enum_value,options:a}),Ge}return dr(t.data)}get enum(){return this._def.values}}em.create=(e,t)=>new em({values:e,typeName:Me.ZodNativeEnum,...qe(t)});class Td extends rt{unwrap(){return this._def.type}_parse(t){const{ctx:n}=this._processInputParams(t);if(n.parsedType!==ve.promise&&n.common.async===!1)return we(n,{code:ce.invalid_type,expected:ve.promise,received:n.parsedType}),Ge;const r=n.parsedType===ve.promise?n.data:Promise.resolve(n.data);return dr(r.then(a=>this._def.type.parseAsync(a,{path:n.path,errorMap:n.common.contextualErrorMap})))}}Td.create=(e,t)=>new Td({type:e,typeName:Me.ZodPromise,...qe(t)});class xo extends rt{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===Me.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(t){const{status:n,ctx:r}=this._processInputParams(t),a=this._def.effect||null,o={addIssue:i=>{we(r,i),i.fatal?n.abort():n.dirty()},get path(){return r.path}};if(o.addIssue=o.addIssue.bind(o),a.type==="preprocess"){const i=a.transform(r.data,o);return r.common.issues.length?{status:"dirty",value:r.data}:r.common.async?Promise.resolve(i).then(s=>this._def.schema._parseAsync({data:s,path:r.path,parent:r})):this._def.schema._parseSync({data:i,path:r.path,parent:r})}if(a.type==="refinement"){const i=s=>{const l=a.refinement(s,o);if(r.common.async)return Promise.resolve(l);if(l instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return s};if(r.common.async===!1){const s=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});return s.status==="aborted"?Ge:(s.status==="dirty"&&n.dirty(),i(s.value),{status:n.value,value:s.value})}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(s=>s.status==="aborted"?Ge:(s.status==="dirty"&&n.dirty(),i(s.value).then(()=>({status:n.value,value:s.value}))))}if(a.type==="transform")if(r.common.async===!1){const i=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});if(!Gg(i))return i;const s=a.transform(i.value,o);if(s instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:n.value,value:s}}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(i=>Gg(i)?Promise.resolve(a.transform(i.value,o)).then(s=>({status:n.value,value:s})):i);gt.assertNever(a)}}xo.create=(e,t,n)=>new xo({schema:e,typeName:Me.ZodEffects,effect:t,...qe(n)});xo.createWithPreprocess=(e,t,n)=>new xo({schema:t,effect:{type:"preprocess",transform:e},typeName:Me.ZodEffects,...qe(n)});class yi extends rt{_parse(t){return this._getType(t)===ve.undefined?dr(void 0):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}}yi.create=(e,t)=>new yi({innerType:e,typeName:Me.ZodOptional,...qe(t)});class _c extends rt{_parse(t){return this._getType(t)===ve.null?dr(null):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}}_c.create=(e,t)=>new _c({innerType:e,typeName:Me.ZodNullable,...qe(t)});class tm extends rt{_parse(t){const{ctx:n}=this._processInputParams(t);let r=n.data;return n.parsedType===ve.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:n.path,parent:n})}removeDefault(){return this._def.innerType}}tm.create=(e,t)=>new tm({innerType:e,typeName:Me.ZodDefault,defaultValue:typeof t.default=="function"?t.default:()=>t.default,...qe(t)});class Ak extends rt{_parse(t){const{ctx:n}=this._processInputParams(t),r={...n,common:{...n.common,issues:[]}},a=this._def.innerType._parse({data:r.data,path:r.path,parent:{...r}});return wk(a)?a.then(o=>({status:"valid",value:o.status==="valid"?o.value:this._def.catchValue({get error(){return new Ma(r.common.issues)},input:r.data})})):{status:"valid",value:a.status==="valid"?a.value:this._def.catchValue({get error(){return new Ma(r.common.issues)},input:r.data})}}removeCatch(){return this._def.innerType}}Ak.create=(e,t)=>new Ak({innerType:e,typeName:Me.ZodCatch,catchValue:typeof t.catch=="function"?t.catch:()=>t.catch,...qe(t)});class Tk extends rt{_parse(t){if(this._getType(t)!==ve.nan){const r=this._getOrReturnCtx(t);return we(r,{code:ce.invalid_type,expected:ve.nan,received:r.parsedType}),Ge}return{status:"valid",value:t.data}}}Tk.create=e=>new Tk({typeName:Me.ZodNaN,...qe(e)});class Aie extends rt{_parse(t){const{ctx:n}=this._processInputParams(t),r=n.data;return this._def.type._parse({data:r,path:n.path,parent:n})}unwrap(){return this._def.type}}class vh extends rt{_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.common.async)return(async()=>{const o=await this._def.in._parseAsync({data:r.data,path:r.path,parent:r});return o.status==="aborted"?Ge:o.status==="dirty"?(n.dirty(),mie(o.value)):this._def.out._parseAsync({data:o.value,path:r.path,parent:r})})();{const a=this._def.in._parseSync({data:r.data,path:r.path,parent:r});return a.status==="aborted"?Ge:a.status==="dirty"?(n.dirty(),{status:"dirty",value:a.value}):this._def.out._parseSync({data:a.value,path:r.path,parent:r})}}static create(t,n){return new vh({in:t,out:n,typeName:Me.ZodPipeline})}}class Rk extends rt{_parse(t){const n=this._def.innerType._parse(t);return Gg(n)&&(n.value=Object.freeze(n.value)),n}}Rk.create=(e,t)=>new Rk({innerType:e,typeName:Me.ZodReadonly,...qe(t)});const Tie=(e,t={},n)=>e?Ad.create().superRefine((r,a)=>{var o,i;if(!e(r)){const s=typeof t=="function"?t(r):typeof t=="string"?{message:t}:t,l=(i=(o=s.fatal)!==null&&o!==void 0?o:n)!==null&&i!==void 0?i:!0,c=typeof s=="string"?{message:s}:s;a.addIssue({code:"custom",...c,fatal:l})}}):Ad.create();qt.lazycreate;var Me;(function(e){e.ZodString="ZodString",e.ZodNumber="ZodNumber",e.ZodNaN="ZodNaN",e.ZodBigInt="ZodBigInt",e.ZodBoolean="ZodBoolean",e.ZodDate="ZodDate",e.ZodSymbol="ZodSymbol",e.ZodUndefined="ZodUndefined",e.ZodNull="ZodNull",e.ZodAny="ZodAny",e.ZodUnknown="ZodUnknown",e.ZodNever="ZodNever",e.ZodVoid="ZodVoid",e.ZodArray="ZodArray",e.ZodObject="ZodObject",e.ZodUnion="ZodUnion",e.ZodDiscriminatedUnion="ZodDiscriminatedUnion",e.ZodIntersection="ZodIntersection",e.ZodTuple="ZodTuple",e.ZodRecord="ZodRecord",e.ZodMap="ZodMap",e.ZodSet="ZodSet",e.ZodFunction="ZodFunction",e.ZodLazy="ZodLazy",e.ZodLiteral="ZodLiteral",e.ZodEnum="ZodEnum",e.ZodEffects="ZodEffects",e.ZodNativeEnum="ZodNativeEnum",e.ZodOptional="ZodOptional",e.ZodNullable="ZodNullable",e.ZodDefault="ZodDefault",e.ZodCatch="ZodCatch",e.ZodPromise="ZodPromise",e.ZodBranded="ZodBranded",e.ZodPipeline="ZodPipeline",e.ZodReadonly="ZodReadonly"})(Me||(Me={}));const Ce=lo.create;xc.create;Tk.create;kc.create;Ek.create;_d.create;xk.create;Wg.create;Kg.create;const Rie=Ad.create;Hl.create;Ti.create;kk.create;const nA=Pa.create,Xe=qt.create;qt.strictCreate;Yg.create;tA.create;Zg.create;Eo.create;Xg.create;_k.create;Cc.create;Gu.create;Qg.create;Jg.create;Ns.create;em.create;Td.create;xo.create;yi.create;_c.create;xo.createWithPreprocess;vh.create;function EN({setEditPersona:e,personas:t,descriptionName:n,fieldName:r}){const a=Hs(),o=()=>{e(void 0);const i=t.find(s=>s.name===a.watch(n));i&&a.setValue(r,i.value||"")};return f.jsxs("div",{className:"flex justify-end gap-3",children:[f.jsx(ue,{variant:"ghost",type:"button",onClick:o,children:f.jsx("span",{children:"Cancel"})}),f.jsx(ue,{variant:"outline",onClick:()=>e(void 0),children:f.jsx("span",{children:"Save changes"})})]})}function xN({setEditPersona:e,editPersona:t,personaValue:n}){const r=Hs(),a=Mi();return f.jsxs("div",{className:"mt-2 flex gap-4",children:[r.getValues(n)?f.jsxs(ue,{variant:"ghost",className:"px-0",onClick:()=>e(t),children:[f.jsx(XC,{className:"mr-1 h-4 w-4"}),f.jsx("span",{children:"Edit Persona"})]}):null,f.jsxs(ue,{variant:"ghost",className:"px-0",onClick:()=>a(t==="human"?"/human-templates?openCreatePersona":"/agent-templates?openCreatePersona"),children:[f.jsx(ya,{className:"h-4 w-4"}),f.jsx("span",{children:"New Template"})]})]})}const Nie=Xe({name:Ce().min(2,{message:"Name must be at least 2 characters."}).max(30,{message:"Name must not be longer than 30 characters."}),model:Ce(),humanName:Ce().max(2e3),agentName:Ce().max(2e3)});function Iie(e,t){let n="Error creating agent";const r=`${n}: Unspecified error.`;try{const a=JSON.parse(e.message);a.detail&&(a.detail=="None"?n=r:n=`${n}: ${a.detail}`)}catch{n=r}t({title:n,duration:5e3})}const Qr="persona",fr="human";function Oie({personas:e,humans:t,models:n,tools:r,closeDialog:a,openCancelCreateAgent:o}){const i=Bt(),s=uX(),{toast:l}=An(),c=2e3,u=2e3,d=Nie.extend({humanValue:Ce().max(u).min(2,{message:"Human name must be at least 2 characters."}),agentValue:Ce().max(c).min(2,{message:"Agent name must be at least 2 characters."}),embedding_model:Ce()}),{data:g}=E6(),m=bn({resolver:yn(d),defaultValues:{name:"",model:"",embedding_model:"",humanName:"",agentName:"",humanValue:"",agentValue:""},mode:"onChange"}),b=C=>{const _=n.find(R=>R.model===C.model);_&&g&&s.mutate({requestBody:{name:C.name,embedding_config:g.find(R=>R.embedding_model===C.embedding_model)||void 0,llm_config:_,tools:r.filter(R=>R.tags.includes("base")).map(R=>R.name).filter(R=>!!R),memory:{memory:{[fr]:{name:C.humanName,label:fr,value:C.humanValue},[Qr]:{name:C.agentName,label:Qr,value:C.agentValue}}}}},{onSuccess:()=>{i.invalidateQueries({queryKey:g6()}),a(),l({title:"Agent created successfully!",duration:5e3})},onError:R=>Iie(R,l)})},[y,w]=p.useState(),v=m.getFieldState("humanValue").isDirty,h=m.getFieldState("agentValue").isDirty,[S,E]=p.useState(!1),[k,x]=p.useState(!1);return f.jsx(vn,{...m,children:f.jsxs("form",{onSubmit:m.handleSubmit(b),className:"space-y-8",children:[f.jsxs("div",{className:"space-y-4",children:[f.jsx(ut,{control:m.control,name:"name",render:({field:C})=>f.jsxs(ot,{className:"space-y-1",children:[f.jsx(yt,{children:"Agent Name"}),f.jsx(pt,{children:f.jsx(_n,{...C})}),f.jsx(Mt,{className:"text-xs",children:"This is your agents display name. It can be a real name or a pseudonym."}),f.jsx(lt,{})]})}),f.jsx(ut,{control:m.control,name:"model",render:({field:C})=>f.jsxs(ot,{className:"space-y-1",children:[f.jsx(yt,{children:"Model"}),f.jsxs(So,{onValueChange:C.onChange,value:C.value,children:[f.jsx(pt,{children:f.jsx(za,{children:f.jsx(wo,{placeholder:"Select a model"})})}),f.jsx(Ua,{children:n.map(_=>f.jsx(Fn,{value:_.model,children:_.model},_.model))})]}),f.jsx(Mt,{className:"text-xs ",children:"Select the model to be used with this agent."}),f.jsx(lt,{})]})}),f.jsx(ut,{control:m.control,name:"embedding_model",render:({field:C})=>f.jsxs(ot,{className:"space-y-1",children:[f.jsx(yt,{children:"Embedding Config"}),f.jsxs(So,{onValueChange:C.onChange,value:C.value,children:[f.jsx(pt,{children:f.jsx(za,{children:f.jsx(wo,{placeholder:"Select a model"})})}),f.jsx(Ua,{children:g?g.map(_=>f.jsx(Fn,{value:_.embedding_model,children:_.embedding_model},_.embedding_model)):f.jsx(Fn,{value:"loading",disabled:!0,children:"Loading..."})})]}),f.jsx(lt,{})]})})]}),f.jsxs("div",{className:"space-y-6",children:[f.jsxs("div",{children:[f.jsx("p",{className:"font-semibold ",children:"Core memory"}),f.jsx("p",{className:"text-sm text-muted-foreground",children:"Agent’s core memory about itself (agent persona) and the user (human persona)."})]}),f.jsxs("div",{children:[f.jsx(ut,{control:m.control,name:"agentName",render:({field:C})=>f.jsxs(ot,{className:"space-y-1",children:[f.jsx(yt,{children:"Agent Persona"}),f.jsxs(uN,{open:S,onOpenChange:E,children:[f.jsx(dN,{children:f.jsxs("div",{className:"flex gap-2",children:[f.jsx("span",{children:C.value??"Search or select"}),h?f.jsx("div",{className:"text-muted-foreground",children:"(Edited)"}):null]})}),f.jsx(fN,{children:f.jsxs(pN,{children:[f.jsx(gN,{placeholder:"Search persona"}),f.jsx(mN,{children:"No Agent Persona was found."}),f.jsx(hN,{children:e.map(_=>f.jsx(bN,{value:_.name||"",onSelect:R=>{const T=e.find(L=>L.name===R);C.onChange(R),m.setValue("agentValue",(T==null?void 0:T.value)||""),E(!1)},children:_.name},_.name))})]})})]}),f.jsx(lt,{})]})}),y==="agent"?null:f.jsx(xN,{editPersona:"agent",setEditPersona:w,personaValue:"agentName"})]}),y==="agent"?f.jsx(ut,{control:m.control,name:"agentValue",render:({field:C})=>{var _;return f.jsxs(f.Fragment,{children:[f.jsxs(ot,{className:"space-y-1",children:[f.jsx(yt,{children:"Persona Description"}),f.jsx(pt,{children:f.jsx(Ai,{placeholder:"Describe your persona here",charCount:(_=C.value)==null?void 0:_.length,limit:c,...C})}),f.jsx(Mt,{children:"You can use no more than 2000 characters."}),f.jsx(lt,{})]}),f.jsx(EN,{fieldName:"agentValue",descriptionName:"agentName",personas:e,setEditPersona:w})]})}}):null,f.jsxs("div",{children:[f.jsx(ut,{control:m.control,name:"humanName",render:({field:C})=>f.jsxs(ot,{className:"space-y-1",children:[f.jsx(yt,{children:"Human Persona"}),f.jsxs(uN,{open:k,onOpenChange:x,children:[f.jsx(dN,{children:f.jsxs("div",{className:"flex gap-2",children:[f.jsx("span",{children:C.value??"Search or select"}),v?f.jsx("span",{className:"text-muted-foreground",children:"(Edited)"}):null]})}),f.jsx(fN,{children:f.jsxs(pN,{children:[f.jsx(gN,{placeholder:"Search human"}),f.jsx(mN,{children:"No Human Persona was found."}),f.jsx(hN,{children:t.map(_=>f.jsx(bN,{value:_.name||"",onSelect:R=>{const T=t.find(L=>L.name===R);C.onChange(R),m.setValue("humanValue",(T==null?void 0:T.value)||""),x(!1)},children:_.name},_.name))})]})})]}),f.jsx(lt,{})]})}),y==="human"?null:f.jsx(xN,{editPersona:"human",setEditPersona:w,personaValue:"humanName"})]}),y==="human"?f.jsxs(f.Fragment,{children:[f.jsx(ut,{control:m.control,name:"humanValue",render:({field:C})=>{var _;return f.jsxs(ot,{className:"space-y-1",children:[f.jsx(yt,{children:"Persona Description"}),f.jsx(pt,{children:f.jsx(Ai,{placeholder:"Describe your human here",charCount:(_=C.value)==null?void 0:_.length,limit:c,...C})}),f.jsx(Mt,{children:"You can use no more than 2000 characters."}),f.jsx(lt,{})]})}}),f.jsx(EN,{fieldName:"humanValue",descriptionName:"humanName",personas:t,setEditPersona:w})]}):null]}),f.jsxs("div",{className:"flex justify-between",children:[f.jsx(ue,{type:"button",variant:"ghost",onClick:()=>o(),children:"Cancel"}),f.jsxs("div",{className:"flex items-center",children:[s.isPending?f.jsxs("div",{className:Tt("mr-4 flex items-center animate-in slide-in-from-bottom-2"),children:[f.jsx(un,{className:"mr-2 h-4 w-4 animate-spin "}),f.jsx("span",{children:"Creating Agent..."})]}):null,f.jsx(ue,{type:"submit",children:"Create Agent"})]})]})]})})}const Die=({open:e,onOpenChange:t})=>{const{data:n}=w6(),{data:r}=Ng({label:Qr}),{data:a}=Ng({label:fr}),{data:o}=Xm(),[i,s]=p.useState(!1);return f.jsxs(Kt,{open:e,onOpenChange:t,children:[f.jsxs(Ht,{className:"h-full max-h-[95svh] w-full gap-8 sm:max-w-[800px]",hasCloseButton:!1,children:[f.jsxs("button",{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",onClick:()=>s(!0),children:[f.jsx(Di,{className:"h-4 w-4"}),f.jsx("span",{className:"sr-only",children:"Close"})]}),f.jsx(Pt,{children:f.jsx($t,{children:"Create Agent"})}),f.jsx("div",{className:"-mt-8 h-full overflow-y-auto p-1",children:f.jsx(Oie,{models:n||[],humans:a??[],personas:r??[],tools:o??[],closeDialog:()=>t(!1),openCancelCreateAgent:()=>s(!0)})})]}),f.jsx(lae,{open:i,onOpenChange:l=>s(l),closeDialog:()=>t(!1)})]})},Lie=()=>{const[e,t]=p.useState(!1);return f.jsxs(Fs,{className:"flex flex-col",children:[f.jsxs("div",{className:"flex items-center justify-between px-4",children:[f.jsx("h1",{className:"mb-4 flex pt-2 text-2xl font-bold",children:"Agents"}),f.jsx(ue,{icon:f.jsx(ya,{className:"h-4 w-4"}),onClick:()=>t(!0),size:"sm",children:"Create Agent"})]}),f.jsx(Ure,{className:"mx-4 h-full",setShowingAgentCreation:t}),f.jsx(Die,{open:e,onOpenChange:n=>t(n)})]})},Mie={path:"agents",element:f.jsx(Lie,{})},h9=ef("inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground hover:bg-primary/80",secondary:"border-transparent bg-background-darker hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function b9({className:e,variant:t,...n}){return f.jsx("div",{className:ee(h9({variant:t}),e),...n})}const Pie=(e,t)=>e==="date"?vre(t):t,y9=rf(Vm(e=>({history:{},actions:{addMessage:(t,n)=>e(r=>({...r,history:{...r.history,[t]:[...r.history[t]??[],n]}})),replaceLastMessage:(t,n)=>e(r=>{const a=[...r.history[t]];return a.length>0&&(a[a.length-1]=n),{...r,history:{...r.history,[t]:a}}}),replaceMessageIds:(t,n,r)=>e(a=>{const o=a.history[t],i=[];for(const s of o)s.id===n&&(console.log("replacing old id",n,r),s.id=r),i.push(s);return{...a,history:{...a.history,[t]:i}}})}}),{name:"message-history-storage",storage:i_(()=>localStorage,{reviver:Pie}),partialize:({actions:e,...t})=>t})),$ie=e=>y9(t=>t.history[e]??[]),Fie=()=>y9(e=>e.actions);async function jie(e,t){const n=e.getReader();let r;for(;!(r=await n.read()).done;)t(r.value)}function zie(e){let t,n,r,a=!1;return function(i){t===void 0?(t=i,n=0,r=-1):t=Bie(t,i);const s=t.length;let l=0;for(;n0){const l=a.decode(i.subarray(0,s)),c=s+(i[s+1]===32?2:1),u=a.decode(i.subarray(c));switch(l){case"data":r.data=r.data?r.data+` -`+u:u;break;case"event":r.event=u;break;case"id":e(r.id=u);break;case"retry":const d=parseInt(u,10);isNaN(d)||t(r.retry=d);break}}}}function Bie(e,t){const n=new Uint8Array(e.length+t.length);return n.set(e),n.set(t,e.length),n}function kN(){return{data:"",event:"",id:"",retry:void 0}}var Hie=globalThis&&globalThis.__rest||function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,r=Object.getOwnPropertySymbols(e);a{const m=Object.assign({},r);m.accept||(m.accept=Nk);let b;function y(){b.abort(),document.hidden||k()}l||document.addEventListener("visibilitychange",y);let w=Vie,v=0;function h(){document.removeEventListener("visibilitychange",y),window.clearTimeout(v),b.abort()}n==null||n.addEventListener("abort",()=>{h(),d()});const S=c??window.fetch,E=a??qie;async function k(){var x;b=new AbortController;try{const C=await S(e,Object.assign(Object.assign({},u),{headers:m,signal:b.signal}));await E(C),await jie(C.body,zie(Uie(_=>{_?m[CN]=_:delete m[CN]},_=>{w=_},o))),i==null||i(),h(),d()}catch(C){if(!b.signal.aborted)try{const _=(x=s==null?void 0:s(C))!==null&&x!==void 0?x:w;window.clearTimeout(v),v=window.setTimeout(k,_)}catch(_){h(),g(_)}}}k()})}function qie(e){const t=e.headers.get("content-type");if(!(t!=null&&t.startsWith(Nk)))throw new Error(`Expected content-type to be ${Nk}, Actual: ${t}`)}const S9="/v1";var En=[];for(var gy=0;gy<256;++gy)En.push((gy+256).toString(16).slice(1));function Gie(e,t=0){return(En[e[t+0]]+En[e[t+1]]+En[e[t+2]]+En[e[t+3]]+"-"+En[e[t+4]]+En[e[t+5]]+"-"+En[e[t+6]]+En[e[t+7]]+"-"+En[e[t+8]]+En[e[t+9]]+"-"+En[e[t+10]]+En[e[t+11]]+En[e[t+12]]+En[e[t+13]]+En[e[t+14]]+En[e[t+15]]).toLowerCase()}var dp,Wie=new Uint8Array(16);function Kie(){if(!dp&&(dp=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!dp))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return dp(Wie)}var Yie=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto);const _N={randomUUID:Yie};function Wu(e,t,n){if(_N.randomUUID&&!t&&!e)return _N.randomUUID();e=e||{};var r=e.random||(e.rng||Kie)();if(r[6]=r[6]&15|64,r[8]=r[8]&63|128,t){n=n||0;for(var a=0;a<16;++a)t[n+a]=r[a];return t}return Gie(r)}const Zie=rf(nY({socket:null,socketURL:null,readyState:0,abortController:null,onReplaceTemporaryIdsWithReturnedIdsCallback:(e,t)=>console.warn("no replace id callback set up."),onMessageCallback:e=>console.warn("No message callback set up. Simply logging message",e),onLastMessageReplaceCallback:e=>console.warn("No replace last message callback set up. Simply logging message",e)},(e,t)=>({actions:{sendMessage:({agentId:n,memoryName:r,message:a,role:o})=>{const i=new AbortController;e(E=>({...E,abortController:i,readyState:2}));const{onMessageCallback:s,onLastMessageReplaceCallback:l,onReplaceTemporaryIdsWithReturnedIdsCallback:c}=t(),u=()=>e(E=>({...E,readyState:0})),d=()=>e(E=>({...E,readyState:0})),g=()=>e(E=>({...E,readyState:1})),m=()=>e(E=>(i.abort(),{...E,abortController:null,readyState:3})),b={messages:[{role:o??"user",text:a,name:r}],stream_steps:!0,stream_tokens:!0};let y="",w="",v=Wu(),h=!1;const S=()=>{y="",w="",v=Wu()};return v9(`${S9}/agents/${n}/messages`,{method:"POST",headers:{"Content-Type":"application/json",Accept:"text/event-stream",Authorization:"Bearer password"},body:JSON.stringify(b),signal:i.signal,onopen:async E=>{E.ok&&E.status===200?(console.log("Connection made ",E),g()):E.status>=400&&E.status<500&&E.status!==429&&(console.log("Client-side error ",E),m())},onmessage:async E=>{if(E.data==="[DONE]"||E.data==="[DONE_GEN]"||E.data==="[DONE_STEP]")return;const k=Xe({internal_monologue:Ce()}).or(Xe({function_call:Xe({name:Ce(),arguments:Ce()})})).or(Xe({function_call:Xe({name:Ce()})})).or(Xe({function_call:Xe({arguments:Ce()})})).or(Xe({function_return:Ce(),status:Ce(),id:Ce()})).or(Xe({function_return:Ce(),date:Ce(),status:Ce(),id:Ce()})).and(Xe({date:Ce().optional().transform(C=>C?new Date(C):new Date)})).safeParse(JSON.parse(E.data));if(!k.success){console.log("error",k.error.message,E.data),m();return}const x=k.data;if("internal_monologue"in x)y+=x.internal_monologue??"",y.length===0?s({type:"agent_response",message_type:"internal_monologue",message:"",date:x.date,id:v}):l({type:"agent_response",message_type:"internal_monologue",message:y,date:x.date,id:v});else if("function_call"in x){const C=x.function_call;"name"in C&&(C.name==="send_message"?(h=!0,s({type:"agent_response",message_type:"assistant_message",message:"",date:x.date,id:v})):(w+=C.name+"(",s({type:"agent_response",message_type:"function_call",message:"",date:x.date,id:v}))),"arguments"in C&&(w+=C.arguments.replace(/\\n/g,` -`),l(h?{type:"agent_response",message_type:"assistant_message",message:w.startsWith(`{ - "message": "`)?w.replace(`{ - "message": "`,"").replace('"}',"").replace('",}',"").replace(`" -}`,""):"",date:x.date,id:v}:{type:"agent_response",message_type:"function_call",message:w.replace("}","})"),date:x.date,id:v}))}else"function_return"in x?(h=!1,console.error("replacing ids",v,x.id),c(v,x.id),console.log("a",x),s({type:"agent_response",message_type:"function_return",message:"None",date:x.date,id:x.id}),d(),S()):"internal_error"in x?(console.log("error",x),m()):console.log("not matched",x)},onclose(){console.log("Connection closed by the server"),S(),u()},onerror(E){console.log("There was an error from server",E),S(),m()}}),v},registerOnMessageCallback:n=>e(r=>({...r,onMessageCallback:n})),registerOnLastMessageReplaceCallback:n=>e(r=>({...r,onLastMessageReplaceCallback:n})),registerOnReplaceTemporaryIdsWithReturnedIdsCallback:n=>e(r=>({...r,onReplaceTemporaryIdsWithReturnedIdsCallback:n})),abortStream:()=>{var n;(n=t().abortController)==null||n.abort(),e({...e,abortController:null,readyState:0})}}}))),AN=()=>Zie(e=>e.actions),Xie="The user is back! Let's pick up the conversation! Reflect on the previous conversation and use your function calling to send them a friendly message.",wf=rf(Vm((e,t)=>({showingMessageReceipts:!1,showingInternalMonologue:!0,shouldSendAutoMessage:!1,autoMessage:Xie,showingFunctions:!0,actions:{setShouldSendAutoMessage:n=>e({...t(),shouldSendAutoMessage:n}),setAutoMessage:n=>e({...t(),autoMessage:n}),setShowingInternalMonologue:n=>e({...t(),showingInternalMonologue:n}),setShowingFunctions:n=>e({...t(),showingFunctions:n}),setShowingMessageReceipts:n=>e({...t(),showingMessageReceipts:n})}}),{name:"chat-storage",partialize:({actions:e,...t})=>t})),Qie=()=>wf(e=>e.showingMessageReceipts),w9=()=>wf(e=>e.showingInternalMonologue),E9=()=>wf(e=>e.showingFunctions),x9=()=>wf(e=>({shouldSendAutoMessage:e.shouldSendAutoMessage,autoMessage:e.autoMessage})),Jie=()=>wf(e=>e.actions),ese=iie,tse=sie,k9=p.forwardRef(({className:e,align:t="center",sideOffset:n=4,...r},a)=>f.jsx(lie,{children:f.jsx(d9,{ref:a,align:t,sideOffset:n,className:ee("z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...r})}));k9.displayName=d9.displayName;const C9="Switch",[nse,pTe]=zn(C9),[rse,ase]=nse(C9),ose=p.forwardRef((e,t)=>{const{__scopeSwitch:n,name:r,checked:a,defaultChecked:o,required:i,disabled:s,value:l="on",onCheckedChange:c,...u}=e,[d,g]=p.useState(null),m=nt(t,h=>g(h)),b=p.useRef(!1),y=d?!!d.closest("form"):!0,[w=!1,v]=Fa({prop:a,defaultProp:o,onChange:c});return p.createElement(rse,{scope:n,checked:w,disabled:s},p.createElement(ze.button,W({type:"button",role:"switch","aria-checked":w,"aria-required":i,"data-state":_9(w),"data-disabled":s?"":void 0,disabled:s,value:l},u,{ref:m,onClick:fe(e.onClick,h=>{v(S=>!S),y&&(b.current=h.isPropagationStopped(),b.current||h.stopPropagation())})})),y&&p.createElement(lse,{control:d,bubbles:!b.current,name:r,value:l,checked:w,required:i,disabled:s,style:{transform:"translateX(-100%)"}}))}),ise="SwitchThumb",sse=p.forwardRef((e,t)=>{const{__scopeSwitch:n,...r}=e,a=ase(ise,n);return p.createElement(ze.span,W({"data-state":_9(a.checked),"data-disabled":a.disabled?"":void 0},r,{ref:t}))}),lse=e=>{const{control:t,checked:n,bubbles:r=!0,...a}=e,o=p.useRef(null),i=F_(n),s=N_(t);return p.useEffect(()=>{const l=o.current,c=window.HTMLInputElement.prototype,d=Object.getOwnPropertyDescriptor(c,"checked").set;if(i!==n&&d){const g=new Event("click",{bubbles:r});d.call(l,n),l.dispatchEvent(g)}},[i,n,r]),p.createElement("input",W({type:"checkbox","aria-hidden":!0,defaultChecked:n},a,{tabIndex:-1,ref:o,style:{...e.style,...s,position:"absolute",pointerEvents:"none",opacity:0,margin:0}}))};function _9(e){return e?"checked":"unchecked"}const A9=ose,cse=sse,Kp=p.forwardRef(({className:e,...t},n)=>f.jsx(A9,{className:ee("peer inline-flex h-[24px] w-[44px] shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",e),...t,ref:n,children:f.jsx(cse,{className:ee("pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0")})}));Kp.displayName=A9.displayName;const use=()=>{const{autoMessage:e,shouldSendAutoMessage:t}=x9(),[n,r]=p.useState(e),[a,o]=p.useState("idle"),i=w9(),s=E9(),{setShowingInternalMonologue:l,setShowingFunctions:c,setAutoMessage:u,setShouldSendAutoMessage:d}=Jie(),g=()=>{o("updating"),setTimeout(()=>{u(n),o("success"),setTimeout(()=>o("idle"),600)},600)};return f.jsxs(ese,{children:[f.jsx(tse,{asChild:!0,children:f.jsx(ue,{size:"iconXs",className:"absolute right-3 top-2 z-10",variant:"outline",children:f.jsx(Fq,{className:"size-4"})})}),f.jsxs(k9,{align:"end",className:"w-80 space-y-4 rounded-md border bg-background p-4",children:[f.jsxs("div",{className:"flex items-center justify-between",children:[f.jsx(os,{htmlFor:"internal-monologue",children:"Show Internal Monologue"}),f.jsx(Kp,{checked:i,onCheckedChange:m=>l(m),id:"internal-monologue"})]}),f.jsxs("div",{className:"flex items-center justify-between",children:[f.jsx(os,{htmlFor:"showing-functions",children:"Show Functions"}),f.jsx(Kp,{checked:s,onCheckedChange:m=>c(m),id:"showing-functions"})]}),f.jsxs("div",{className:"flex items-center justify-between",children:[f.jsx(os,{htmlFor:"should-send-auto-message",children:"Send Auto Message"}),f.jsx(Kp,{checked:t,onCheckedChange:m=>d(m),id:"should-send-auto-message"})]}),f.jsxs("div",{className:"flex flex-col space-y-2",children:[f.jsx(os,{htmlFor:"auto-message",children:"Auto Message"}),f.jsx(qs,{id:"auto-message",className:"min-h-[10rem] resize-none",value:n,onChange:m=>r(m.target.value)}),f.jsxs("div",{className:"flex items-center",children:[f.jsx(ue,{disabled:a==="updating",onClick:g,className:"w-fit",variant:"outline",size:"xs",children:"Update Message"}),a!=="updating"?null:f.jsx("div",{className:Tt("ml-4 flex items-center animate-in slide-in-from-bottom-2"),children:f.jsx(un,{className:"mr-2 h-4 w-4 animate-spin "})}),a!=="success"?null:f.jsx("div",{className:Tt("ml-4 flex items-center text-emerald-600 animate-in slide-in-from-bottom-2"),children:f.jsx(Mm,{className:"mr-2 h-4 w-4 "})})]})]})]})]})},Sh=({children:e,className:t})=>f.jsx("h4",{className:ee("text-sm font-medium uppercase text-foreground",t),children:e}),wh=({children:e,className:t,button:n,onClickInfo:r})=>f.jsxs(Sh,{className:ee("flex h-8 items-center justify-between",t),children:[f.jsxs("span",{className:"inline-flex items-center tabular-nums",children:[f.jsx("span",{children:e}),f.jsx(Nq,{className:"ml-1.5 size-3.5 text-muted-foreground",onClick:r})]}),n]}),rA=({onClick:e})=>f.jsx(ue,{onClick:e,size:"iconXs",variant:"outline",children:f.jsx(ya,{className:"size-4 text-foreground"})}),T9=({className:e,children:t,onClick:n})=>f.jsxs("div",{className:ee("flex items-center justify-between rounded-md border border-dashed p-2 text-sm font-normal text-muted-foreground",e),children:[f.jsx("span",{children:t}),f.jsx(ue,{onClick:n,size:"iconXs",variant:"outline",children:f.jsx(ya,{className:"size-4 text-foreground"})})]}),dse=Xe({message:Ce().min(1,"Message cannot be empty...")}),fse=e=>{const n=bn({resolver:yn(dse),defaultValues:{message:""}});function r(a){e.onCreateArchivalMemory(a.message)}return f.jsx(vn,{...n,children:f.jsxs("form",{onSubmit:n.handleSubmit(r),className:"mt-4",children:[f.jsx(ut,{control:n.control,name:"message",render:({field:a})=>{var o;return f.jsxs(ot,{className:"-mt-2 w-full",children:[f.jsx(yt,{className:"sr-only",children:"Memory to store"}),f.jsx(pt,{className:"w-full",children:f.jsx(Ai,{className:"min-h-40",placeholder:"What you want the agent to know about you",charCount:(o=a.value)==null?void 0:o.length,limit:2e3,...a})}),f.jsx(lt,{})]})}}),f.jsxs("div",{className:"flex items-center justify-between pt-8",children:[f.jsx(ue,{type:"button",onClick:e.onCancel,variant:"ghost",children:"Cancel"}),f.jsxs("div",{className:"flex gap-3",children:[e.isPending&&f.jsxs("div",{className:Tt("mr-4 flex items-center animate-in slide-in-from-bottom-2"),children:[f.jsx(un,{className:"mr-2 h-4 w-4 animate-spin "}),f.jsx("span",{children:"Saving memory..."})]}),f.jsx(ue,{disabled:e.isPending,type:"submit",children:"Save Memory"})]})]})]})})},pse=({agentId:e,open:t,onOpenChange:n})=>{const r=Bt(),a=dX(),o=i=>{a.mutate({agentId:e||"",requestBody:{text:i}},{onSuccess:()=>{n(!1),r.invalidateQueries({queryKey:h6({agentId:e||""})})}})};return f.jsx(Kt,{open:t,onOpenChange:n,children:f.jsxs(Ht,{className:"max-h-[95svh] w-full sm:max-w-[800px]",children:[f.jsxs(Pt,{children:[f.jsx($t,{children:"Add Memory"}),f.jsx(dn,{children:"Add a memory. Archival memory serves as an infinite, structured storage space for reflections, insights, and other data not fitting into core memory."})]}),f.jsx(fse,{isPending:a.isPending,onCreateArchivalMemory:o,onCancel:()=>n(!1)})]})})},gse=({memoryId:e,agentId:t,open:n,onOpenChange:r})=>{const a=Bt(),o=mX(),i=()=>o.mutate({agentId:t||"",memoryId:e},{onSuccess:()=>{a.invalidateQueries({queryKey:$s({agentId:t||""})}),r(!1)}});return f.jsx(Kt,{open:n,onOpenChange:r,children:f.jsxs(Ht,{className:"w-full sm:max-w-[350px]",children:[f.jsxs(Pt,{children:[f.jsx($t,{children:"Delete Memory"}),f.jsx(dn,{className:"!my-4",children:"Are you sure you want to delete this memory?"})]}),f.jsxs(g8,{children:[f.jsx(ue,{size:"sm",type:"button",onClick:()=>r(!1),variant:"ghost",children:"Cancel"}),f.jsx(ue,{size:"sm",disabled:o.isPending,onClick:i,children:"Delete"})]})]})})},R9=({className:e,archivalMemory:t,agentId:n,isViewMemoryDialog:r})=>{const[a,o]=p.useState(!1),[i,s]=p.useState(!0),[l,c]=p.useState(!1),u=p.useRef(null),d=p.useRef(null);return p.useLayoutEffect(()=>{(()=>{if(u.current&&d.current){const m=u.current.scrollWidth>d.current.clientWidth;c(m)}})()},[t.text]),f.jsxs(f.Fragment,{children:[f.jsxs("div",{className:ee("relative w-full rounded-md border p-4 pr-10",e),children:[f.jsxs("div",{className:"flex-1",children:[f.jsx("div",{className:"mb-1 text-xs text-muted-foreground",children:"Jun 18 2024"}),f.jsx("div",{className:ee("break-words text-sm",i&&"truncate"),ref:d,children:f.jsx("p",{ref:u,className:ee(i?"w-min":"w-full",!r&&"inline"),children:t.text})})]}),f.jsx(ue,{className:"absolute right-2 top-2.5 text-muted-foreground",onClick:()=>o(!0),variant:"ghost",size:"iconXs",children:f.jsx(Di,{className:"size-4"})}),r&&l?f.jsx(ue,{className:"mt-2 h-7 w-fit p-0 font-semibold",variant:"link",onClick:()=>s(!i),children:i?f.jsxs(f.Fragment,{children:["more",f.jsx(ZC,{className:"ml-2 h-4 w-4"})]}):f.jsxs(f.Fragment,{children:["less",f.jsx(wq,{className:"ml-2 h-4 w-4"})]})}):null]}),f.jsx(gse,{memoryId:t.id||"",agentId:n,open:a,onOpenChange:o})]})},mse=({setCurrentPage:e,className:t,currentPage:n,totalPages:r})=>f.jsx("div",{className:ee("flex items-center justify-end space-x-2",t),children:f.jsxs("div",{className:"space-x-2",children:[f.jsx(ue,{variant:"outline",size:"sm",onClick:()=>e(a=>Math.max(a-1,1)),disabled:n===1,children:"Previous"}),f.jsx(ue,{variant:"outline",size:"sm",onClick:()=>e(a=>Math.min(a+1,r)),disabled:n===r,children:"Next"})]})}),aA=({items:e,searchTerm:t,setSearchTerm:n,setShowSearchInput:r,showSearchInput:a,onOpenAddDialog:o,buttonText:i,isViewArchivalMemoryDialog:s,setShowFilterButton:l,showFilterButton:c})=>{const u=()=>{r(!a),l&&l(!1)},d=()=>{l&&l(!c),r(!1)};return f.jsxs("div",{className:"flex items-center justify-between",children:[f.jsxs("div",{className:"flex h-8 w-full items-center justify-between",children:[f.jsxs("p",{className:"text-xs",children:[e?e==null?void 0:e.length:null," items"]}),f.jsxs("div",{className:"flex h-full gap-2",children:[f.jsxs("div",{className:"relative flex h-full items-center justify-end border-r-2",children:[a?f.jsx(_n,{placeholder:"Search",value:t,onChange:g=>n(g.target.value),className:"mr-2 h-8 w-32 pl-9 md:w-52"}):null,f.jsx("button",{className:ee("mr-2",a&&"absolute left-3 top-2"),onClick:()=>u(),children:f.jsx(Ms,{className:ee("h-4 w-4")})})]}),s?f.jsxs("div",{className:"flex h-full items-center justify-end gap-2 border-r-2",children:[c?f.jsx(ue,{className:"px-2 py-0",size:"sm",children:f.jsx("span",{className:"p-0 text-xs",children:"Oldest to newest"})}):null,f.jsx("button",{className:ee("mr-2 h-full p-0.5",c&&"bg-muted"),onClick:()=>d(),children:f.jsx(yq,{className:"h-4 w-4"})})]}):null]})]}),f.jsxs(ue,{variant:"ghost",onClick:()=>o(!0),children:[i,f.jsx(ya,{className:"ml-1 h-4 w-4"})]})]})},hse=({agentId:e,open:t,onOpenChange:n,onOpenAddMemory:r})=>{VF();const o=S6({agentId:e||""}).data??[],[i,s]=p.useState(!1),[l,c]=p.useState(!1),[u,d]=p.useState(""),g=(o??[]).filter(S=>S.text.toLowerCase().includes(u.toLowerCase())),[m,b]=p.useState(1),y=10,w=m*y,v=w-y,h=g.slice(v,w);return f.jsx(Kt,{open:t,onOpenChange:n,children:f.jsxs(Ht,{className:"flex max-h-[95svh] flex-col overflow-auto sm:max-w-[800px]",children:[f.jsxs(Pt,{children:[f.jsx($t,{children:"Archival Memory"}),f.jsx(dn,{children:"Archival memory serves as an infinite, structured storage space for reflections, insights, and other data not fitting into core memory."}),f.jsx(aA,{items:o,searchTerm:u,setSearchTerm:d,setShowSearchInput:s,showSearchInput:i,onOpenAddDialog:r,buttonText:"Add Memory",isViewArchivalMemoryDialog:!0,setShowFilterButton:c,showFilterButton:l})]}),f.jsx("div",{className:"flex w-full flex-col",children:h.map(S=>f.jsx(R9,{agentId:e,archivalMemory:S,className:"mb-2",isViewMemoryDialog:!0},S.id))}),f.jsx(mse,{currentPage:m,setCurrentPage:b,totalPages:Math.ceil(g.length/y)})]})})},bse=({agentId:e})=>{const t=S6({agentId:e??""},void 0,{enabled:!!e}),n=t.data??[],[r,a]=p.useState(!1),[o,i]=p.useState(!1),s=()=>a(!0);return f.jsxs(f.Fragment,{children:[f.jsxs("div",{className:"py-4",children:[f.jsxs(wh,{button:n.length===0?null:f.jsx(rA,{onClick:()=>i(!0)}),children:["Archival Memory (",n.length,")"]}),t.isFetching?f.jsx(Pi,{className:"h-[70px]"}):null,t.isError?f.jsx("div",{className:"h-[70px] border border-destructive",children:"Something went wrong..."}):null,t.isSuccess?f.jsxs(f.Fragment,{children:[f.jsx("div",{className:"mt-2",children:[...n].slice(0,3).map(l=>f.jsx(R9,{className:"mb-2",archivalMemory:l,agentId:e},l.id))}),n.length<1?null:f.jsxs(ue,{onClick:s,className:"mt-2 h-7 w-fit p-2 font-semibold",variant:"link",children:["See all ",f.jsx($m,{className:"ml-2 h-4 w-4"})]}),n.length>0?null:f.jsx(T9,{onClick:()=>i(!0),children:"Nothing here yet. Add memory"})]}):null]}),f.jsx(hse,{agentId:e,open:r,onOpenChange:a,onOpenAddMemory:l=>i(l)}),f.jsx(pse,{agentId:e,open:o,onOpenChange:i})]})},yse=(e,t)=>e.length>t?e.substring(0,t)+"...":e;function vse(e,t){let n="Error adding data source...";const r=`${n}: Unspecified error.`;try{const a=JSON.parse(e.message);a.detail&&(a.detail=="None"?n=r:n=`${n}: ${a.detail}`)}catch{n=r}t({title:n,duration:5e3})}const N9=({source:e,handleRemoveDataSource:t})=>f.jsxs("div",{className:"relative rounded-md border p-4",children:[f.jsxs("p",{className:"flex items-center gap-1",children:[f.jsx("span",{className:"font-medium",children:e.name}),f.jsx("span",{className:"mt-0.5 text-xs text-muted-foreground",children:Bs(new Date(e.created_at||""),"MMM dd yyyy")})]}),f.jsx("p",{className:Tt(),children:(e==null?void 0:e.description)??"None"}),f.jsxs("button",{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",onClick:()=>t(e.id||""),children:[f.jsx(Di,{className:"h-4 w-4"}),f.jsx("span",{className:"sr-only",children:"Close"})]})]},e.id),Sse=Xe({sourceIds:nA(Ce())}),wse=({closeDialog:e})=>{const t=To(),n=Bt(),{data:r,isLoading:a}=b_(),{data:o}=v6({agentId:(t==null?void 0:t.id)||""}),i=x6(),[s,l]=p.useState(!1),{toast:c}=An(),u=r??[],d=bn({resolver:yn(Sse),mode:"onSubmit",defaultValues:{sourceIds:[]}}),g=async v=>{if(!(t!=null&&t.id))return;l(!0);const h=[];for(const S of v.sourceIds)try{const E=await i.mutateAsync({agentId:t.id,sourceId:S},{onSuccess:()=>{n.invalidateQueries({queryKey:m6({agentId:t.id||""})}),c({title:"Data source added successfully!",duration:5e3})}});h.push(E)}catch(E){vse(E,c)}h.length>0&&c({title:"Data source added successfully!",duration:5e3}),l(!1),e()},m=d.watch("sourceIds"),b=p.useMemo(()=>{if(!u)return[];const v=new Set(m),h=new Set((o||[]).map(S=>S.id));return u.filter(S=>!v.has(S.id||"")&&!h.has(S.id))},[r,u,m]),y=v=>{m.some(h=>h===v)||d.setValue("sourceIds",[...m,v])},w=v=>{d.setValue("sourceIds",m.filter(h=>h!==v))};return f.jsx(vn,{...d,children:f.jsxs("form",{onSubmit:d.handleSubmit(g,v=>console.log(v)),className:"space-y-8",children:[f.jsx(ut,{control:d.control,name:"sourceIds",render:()=>f.jsxs(ot,{children:[f.jsxs(So,{disabled:a,value:"",onValueChange:v=>y(v),children:[f.jsx(pt,{children:f.jsx(za,{children:f.jsx(wo,{placeholder:a?"Loading data sources...":"Search or select data source"})})}),f.jsx(Ua,{className:"max-h-[200px] overflow-y-auto",children:(b==null?void 0:b.length)===0?f.jsx(Fn,{value:"no-sources",disabled:!0,children:"No additional data sources available"}):b.map(v=>f.jsx(Fn,{value:v.id||"",children:v.name},v.id))})]}),f.jsx(lt,{})]})}),f.jsx("div",{className:"space-y-2",children:d.watch("sourceIds")?u.filter(v=>d.getValues("sourceIds").some(h=>h===v.id)).map(v=>f.jsx(N9,{handleRemoveDataSource:w,source:v},v.id)):null}),f.jsxs("div",{className:"flex items-center justify-between",children:[f.jsx(ue,{variant:"ghost",type:"button",onClick:()=>e(),children:"Cancel"}),f.jsxs("div",{className:"flex gap-3",children:[s&&f.jsxs("div",{className:Tt("mr-4 flex items-center animate-in slide-in-from-bottom-2"),children:[f.jsx(un,{className:"mr-2 h-4 w-4 animate-spin "}),f.jsx("span",{children:"Attaching to agent..."})]}),f.jsx(ue,{type:"submit",children:"Add Source"})]})]})]})})},Ese=({open:e,onOpenChange:t})=>f.jsx(Kt,{open:e,onOpenChange:t,children:f.jsxs(Ht,{className:"max-h-[95svh] w-full sm:max-w-[800px]",children:[f.jsxs(Pt,{children:[f.jsx($t,{children:"Add Data Source"}),f.jsx(dn,{children:"By adding a data source, you will make it available to the Agent to use for information."})]}),f.jsx(wse,{closeDialog:()=>t(!1)})]})}),xse=({onDetach:e,onOpenAddSourceChange:t})=>{const n=[],[r,a]=p.useState(!1),[o,i]=p.useState(""),s=(n??[]).filter(l=>l.name.toLowerCase().includes(o.toLowerCase()));return f.jsxs(f.Fragment,{children:[f.jsx(aA,{items:n,searchTerm:o,setSearchTerm:i,setShowSearchInput:a,showSearchInput:r,onOpenAddDialog:t,buttonText:"Add Source"}),f.jsx("div",{className:"space-y-2",children:n?s.map(l=>f.jsx(N9,{handleRemoveDataSource:e,source:l},l.id)):null})]})},kse=({open:e,onOpenChange:t,onDetach:n,onOpenAddSourceChange:r})=>f.jsx(Kt,{open:e,onOpenChange:t,children:f.jsxs(Ht,{className:"max-h-[95svh] w-full sm:max-w-[800px]",children:[f.jsxs(Pt,{children:[f.jsx($t,{children:"Data Sources"}),f.jsx(dn,{children:"Data sources make it available to the Agent to use for information outside of the immediate context window."})]}),f.jsx(xse,{onDetach:n,onOpenAddSourceChange:r})]})}),Cse=()=>{const[e,t]=p.useState(!1),[n,r]=p.useState(!1),a=To(),{data:o}=v6({agentId:(a==null?void 0:a.id)||""}),i=p.useMemo(()=>o??[],[o]),s=k6(),{toast:l}=An(),c=u=>{!u||!a||s.mutate({agentId:a.id||"",sourceId:u},{onSuccess:()=>{l({title:"Agent detached successfully!",duration:3e3})},onError:d=>l({title:"Failed to detach agent!",duration:3e3})})};return f.jsxs("div",{className:"py-4",children:[f.jsxs(wh,{button:i.length===0?null:f.jsx(rA,{onClick:()=>t(!0)}),onClickInfo:()=>r(!0),children:["Data Sources (",i.length,")"]}),f.jsx("ul",{className:"mt-2 space-y-2",children:i.map(u=>f.jsxs("li",{className:"rounded-md border p-4",children:[f.jsx("div",{className:"relative flex justify-between",children:f.jsxs("p",{className:"flex items-center gap-2",children:[f.jsx("span",{className:"font-medium",children:u.name}),f.jsx("span",{className:"text-xs",children:Bs(new Date(u.created_at||""),"MMM dd yyyy")})]})}),f.jsx("p",{className:Tt(),children:yse((u==null?void 0:u.description)??"None",42)})]},u.id))}),i.length>0?null:f.jsx(T9,{onClick:()=>t(!0),children:"Nothing here yet. Add source"}),f.jsx(Ese,{open:e,onOpenChange:u=>t(u)}),f.jsx(kse,{open:n,onOpenChange:u=>r(u),onDetach:c,onOpenAddSourceChange:u=>t(u)})]})},_se="AlertDialog",[Ase,gTe]=zn(_se,[i8]),Ro=i8(),Tse=e=>{const{__scopeAlertDialog:t,...n}=e,r=Ro(t);return p.createElement(d8,W({},r,n,{modal:!0}))},Rse=p.forwardRef((e,t)=>{const{__scopeAlertDialog:n,...r}=e,a=Ro(n);return p.createElement(iae,W({},a,r,{ref:t}))}),Nse=e=>{const{__scopeAlertDialog:t,...n}=e,r=Ro(t);return p.createElement(f8,W({},r,n))},Ise=p.forwardRef((e,t)=>{const{__scopeAlertDialog:n,...r}=e,a=Ro(n);return p.createElement(H_,W({},a,r,{ref:t}))}),I9="AlertDialogContent",[Ose,Dse]=Ase(I9),Lse=p.forwardRef((e,t)=>{const{__scopeAlertDialog:n,children:r,...a}=e,o=Ro(n),i=p.useRef(null),s=nt(t,i),l=p.useRef(null);return p.createElement(oae,{contentName:I9,titleName:Mse,docsSlug:"alert-dialog"},p.createElement(Ose,{scope:n,cancelRef:l},p.createElement(V_,W({role:"alertdialog"},o,a,{ref:s,onOpenAutoFocus:fe(a.onOpenAutoFocus,c=>{var u;c.preventDefault(),(u=l.current)===null||u===void 0||u.focus({preventScroll:!0})}),onPointerDownOutside:c=>c.preventDefault(),onInteractOutside:c=>c.preventDefault()}),p.createElement(Rm,null,r),!1)))}),Mse="AlertDialogTitle",Pse=p.forwardRef((e,t)=>{const{__scopeAlertDialog:n,...r}=e,a=Ro(n);return p.createElement(q_,W({},a,r,{ref:t}))}),$se=p.forwardRef((e,t)=>{const{__scopeAlertDialog:n,...r}=e,a=Ro(n);return p.createElement(G_,W({},a,r,{ref:t}))}),Fse=p.forwardRef((e,t)=>{const{__scopeAlertDialog:n,...r}=e,a=Ro(n);return p.createElement(W_,W({},a,r,{ref:t}))}),jse="AlertDialogCancel",zse=p.forwardRef((e,t)=>{const{__scopeAlertDialog:n,...r}=e,{cancelRef:a}=Dse(jse,n),o=Ro(n),i=nt(t,a);return p.createElement(W_,W({},o,r,{ref:i}))}),Use=Tse,Bse=Rse,Hse=Nse,O9=Ise,D9=Lse,L9=Fse,M9=zse,P9=Pse,$9=$se,Vse=Use,qse=Bse,Gse=Hse,F9=p.forwardRef(({className:e,children:t,...n},r)=>f.jsx(O9,{className:ee("fixed inset-0 z-50 bg-background/80 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...n,ref:r}));F9.displayName=O9.displayName;const j9=p.forwardRef(({className:e,...t},n)=>f.jsxs(Gse,{children:[f.jsx(F9,{}),f.jsx(D9,{ref:n,className:ee("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg md:w-full",e),...t})]}));j9.displayName=D9.displayName;const z9=({className:e,...t})=>f.jsx("div",{className:ee("flex flex-col space-y-2 text-center sm:text-left",e),...t});z9.displayName="AlertDialogHeader";const U9=({className:e,...t})=>f.jsx("div",{className:ee("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",e),...t});U9.displayName="AlertDialogFooter";const B9=p.forwardRef(({className:e,...t},n)=>f.jsx(P9,{ref:n,className:ee("text-lg font-semibold",e),...t}));B9.displayName=P9.displayName;const H9=p.forwardRef(({className:e,...t},n)=>f.jsx($9,{ref:n,className:ee("text-sm text-muted-foreground",e),...t}));H9.displayName=$9.displayName;const V9=p.forwardRef(({className:e,variant:t,...n},r)=>f.jsx(L9,{ref:r,className:ee(yc({variant:t}),e),...n}));V9.displayName=L9.displayName;const q9=p.forwardRef(({className:e,...t},n)=>f.jsx(M9,{ref:n,className:ee(yc({variant:"outline"}),"mt-2 sm:mt-0",e),...t}));q9.displayName=M9.displayName;const Wse=()=>{const e=To(),{mutate:t,isPending:n}=gX(),{toast:r}=An(),a=Mi(),o=p.useCallback(()=>{e&&t({agentId:e.id||""},{onSuccess:()=>{r({title:"Agent deleted successfully",duration:500}),a("/agents")},onError:()=>{r({title:"There was an error deleting the agent, please try again",duration:5e3})}})},[e==null?void 0:e.id,a,t]);return f.jsxs(Vse,{children:[f.jsx(qse,{asChild:!0,children:f.jsx(ue,{variant:"destructive",children:"Delete Agent"})}),f.jsxs(j9,{children:[f.jsxs(z9,{children:[f.jsx(B9,{children:"Delete Agent"}),f.jsx(H9,{children:"When you delete an agent, all the information and interaction will be lost. Are you sure you want to delete the agent"})]}),f.jsxs(U9,{children:[f.jsx(q9,{children:"Cancel"}),f.jsx(V9,{onClick:o,variant:"destructive",children:f.jsxs(f.Fragment,{children:[n&&f.jsx(un,{className:"mr-2 h-4 w-4 animate-spin "}),"Delete Agent"]})})]})]})]})},Kse=()=>f.jsxs("div",{className:"flex flex-col gap-2 pb-10 pt-4",children:[f.jsx(Sh,{children:"Delete Agent"}),f.jsx("p",{className:" text-sm text-muted-foreground",children:"When you delete an agent, all the information and interaction will be lost."}),f.jsx(Wse,{})]}),Yse={configItem:e=>["config",e]},Zse=e=>{const t=_Z();return Jr({queryKey:Yse.configItem(e),enabled:!!e,queryFn:async()=>t.get("/config").then(n=>n.data)})},G9=({icon:e,name:t,isEditing:n,onEditPersonaClicked:r})=>f.jsxs("div",{className:"flex items-center justify-between py-4",children:[f.jsxs("div",{className:"flex items-center font-medium",children:[e,f.jsx("span",{children:t})]}),n?null:f.jsxs(ue,{onClick:r,variant:"ghost",size:"xs",children:["Edit Persona ",f.jsx(XC,{className:"ml-2 size-4"})]})]}),W9=({renderContent:e,state:t,onClose:n})=>{const r=p.useRef("closed"),a=t==="edit"||t==="closed"&&r.current==="edit";return p.useEffect(()=>{r.current=t},[t]),f.jsx(Kt,{open:t==="view"||t==="edit",onOpenChange:o=>{o||n()},children:f.jsx(Ht,{className:"max-h-[95svh] w-full sm:max-w-[800px]",children:e(a)})})},K9=({status:e,limit:t,defaultContent:n,onCancelClicked:r,onSaveClicked:a})=>{const[o,i]=p.useState(n);return f.jsxs(f.Fragment,{children:[f.jsxs(os,{children:["Persona Description",f.jsx(Ai,{charCount:(o==null?void 0:o.length)??0,limit:t,onChange:s=>i(s.target.value),className:"min-h-[60vh] whitespace-pre-line font-normal",defaultValue:o})]}),f.jsxs("div",{className:"flex items-center justify-between pt-8",children:[f.jsx(ue,{onClick:()=>r(),variant:"ghost",children:"Cancel"}),f.jsxs("div",{className:"flex items-center",children:[e!=="pending"?null:f.jsxs("div",{className:Tt("mr-4 flex items-center animate-in slide-in-from-bottom-2"),children:[f.jsx(un,{className:"mr-2 h-4 w-4 animate-spin "}),f.jsx("span",{children:"Updating persona..."})]}),e!=="success"?null:f.jsxs("div",{className:Tt("mr-4 flex items-center text-emerald-600 animate-in slide-in-from-bottom-2"),children:[f.jsx(Mm,{className:"mr-2 h-4 w-4 "}),f.jsx("span",{children:"Persona updated!"})]}),f.jsx(ue,{onClick:()=>a(o),children:"Save"})]})]})]})},Xse=({name:e,state:t,onClose:n,onSaveEditPersonaClicked:r,onEditPersonaClicked:a,onCancelEditPersonaClicked:o,status:i,content:s})=>{Zse(VF());const l=2e3;return f.jsx(W9,{name:e,state:t,onClose:n,renderContent:c=>f.jsxs(f.Fragment,{children:[f.jsxs(Pt,{children:[f.jsx($t,{children:c?"Edit Agent Persona":"Agent Persona"}),f.jsx(dn,{children:c?"You can edit your personas memory. This won’t affect the persona original template. Any changes will be saved as new core memories.":"This information stores details about the agent's persona, guiding its behaviour and responses to maintain consistency and personality in interactions."})]}),f.jsxs("div",{className:c?"":"mb-8",children:[f.jsx(G9,{name:e,icon:f.jsx(Lm,{className:"mr-2 size-6"}),isEditing:c,onEditPersonaClicked:a}),c?null:f.jsx("p",{className:"whitespace-pre-line",children:s}),c?f.jsx(K9,{status:i,defaultContent:s,limit:l,onCancelClicked:o,onSaveClicked:r}):null]})]})})},Qse=({name:e,state:t,onClose:n,content:r,onCancelEditPersonaClicked:a,onEditPersonaClicked:o,onSaveEditPersonaClicked:i,status:s})=>f.jsx(W9,{name:e,state:t,onClose:n,renderContent:l=>f.jsxs(f.Fragment,{children:[f.jsxs(Pt,{children:[f.jsx($t,{children:l?"Edit Human Persona":"Human Persona"}),f.jsx(dn,{children:l?"You can edit your personas memory. This won’t affect the persona original template. Any changes will be saved as new core memories":"Stores key details about the person the agent is conversing with, enabling personalised and friend-like conversations"})]}),f.jsxs("div",{className:l?"":"mb-8",children:[f.jsx(G9,{name:e,icon:f.jsx(QC,{className:"mr-2 size-6"}),isEditing:l,onEditPersonaClicked:o}),l?null:f.jsx("p",{className:"whitespace-pre-line",children:r}),l?f.jsx(K9,{status:s,defaultContent:r,limit:2e3,onCancelClicked:a,onSaveClicked:i}):null]})]})}),TN=({className:e,title:t,name:n,content:r,onEditClick:a,onMoreClick:o,icon:i})=>f.jsxs("div",{className:ee("rounded-md border p-3",e),children:[f.jsxs("div",{className:"flex items-center justify-between",children:[f.jsxs("div",{className:"flex items-center font-semibold",children:[i,f.jsx("span",{children:t})]}),f.jsx(ue,{onClick:a,size:"iconXs",variant:"ghost",children:f.jsx(XC,{className:"h-4 w-4 text-muted-foreground"})})]}),f.jsxs("div",{className:"flex flex-col gap-2 pl-7",children:[f.jsx("p",{className:"mt-2 text-xs text-muted-foreground/60",children:n}),f.jsxs("p",{className:"relative h-[78px] overflow-hidden text-ellipsis text-sm text-muted-foreground",children:[r,f.jsx("span",{className:"absolute bottom-0 right-0 h-5 w-10 bg-gradient-to-r from-transparent to-background to-55%"})]}),f.jsxs(ue,{onClick:o,className:"-ml-2 h-7 w-fit p-2 font-semibold",variant:"link",children:["more ",f.jsx($m,{className:"ml-2 h-4 w-4"})]})]})]}),Jse=({agentId:e})=>{const t=v_(),{data:n,refetch:r,isRefetching:a}=y_({agentId:e||""}),{mutate:o}=cf(),i=Bt(),s=p.useMemo(()=>{var b,y;return(y=(b=n==null?void 0:n.memory)==null?void 0:b.memory)==null?void 0:y[fr]},[n]),l=p.useMemo(()=>{var b,y;return(y=(b=n==null?void 0:n.memory)==null?void 0:b.memory)==null?void 0:y[Qr]},[n]),[c,u]=p.useState("closed"),[d,g]=p.useState("closed"),m=b=>y=>{var w,v,h;!l||!e||o({agentId:e,requestBody:{id:e,memory:{...n==null?void 0:n.memory,memory:{...(w=n==null?void 0:n.memory)==null?void 0:w.memory,[b]:{...(h=(v=n==null?void 0:n.memory)==null?void 0:v.memory)==null?void 0:h[b],value:y}}}}},{onSuccess:()=>{i.invalidateQueries({queryKey:$s({agentId:e})})}})};return f.jsxs("div",{className:"pb-6 pt-4",children:[f.jsxs("div",{className:"flex items-center justify-between",children:[f.jsx(wh,{children:"Core Memory"}),f.jsx(ue,{onClick:b=>{b.stopPropagation(),r()},disabled:a,variant:"outline",className:"z-10 h-7 w-7 p-0",children:f.jsx(Lq,{className:"size-5 "+(a?"animate-spin":"")})})]}),!l||!s?f.jsx("p",{className:"flex items-center justify-center p-20",children:"Loading memory..."}):f.jsxs(f.Fragment,{children:[f.jsx(TN,{className:"mt-2",title:"Agent Persona",name:l.name||"",content:l.value,onMoreClick:()=>u("view"),onEditClick:()=>u("edit"),icon:f.jsx(Lm,{className:"mr-2 h-5 w-5"})}),f.jsx(TN,{className:"my-4",title:"Human Persona",name:s.name||"",content:s.value,onMoreClick:()=>g("view"),onEditClick:()=>g("edit"),icon:f.jsx(QC,{className:"mr-2 h-5 w-5"})}),f.jsx(Xse,{status:t.status,content:l.value||"",name:l.name||"",onClose:()=>u("closed"),state:c,onEditPersonaClicked:()=>u("edit"),onCancelEditPersonaClicked:()=>u("closed"),onSaveEditPersonaClicked:m(Qr)}),f.jsx(Qse,{status:t.status,content:s.value||"",name:s.name||"",onClose:()=>g("closed"),state:d,onEditPersonaClicked:()=>g("edit"),onCancelEditPersonaClicked:()=>g("closed"),onSaveEditPersonaClicked:m(fr)})]})]})},ele=(e,t)=>{var a,o;const n=(a=e.tags)==null?void 0:a.includes("memgpt-base"),r=(o=t.tags)==null?void 0:o.includes("memgpt-base");return n&&r?e.name.localeCompare(t.name):n?-1:1},to="-ml-1 mr-2 size-5",tle={archival_memory_insert:f.jsx(bq,{className:to}),archival_memory_search:f.jsx(Oq,{className:to}),conversation_search:f.jsx(Ms,{className:to}),conversation_search_date:f.jsx(vq,{className:to}),core_memory_append:f.jsx(ya,{className:to}),core_memory_replace:f.jsx(Mq,{className:to}),pause_heartbeats:f.jsx(Tq,{className:to}),send_message:f.jsx($q,{className:to})},oA=({tool:e,showDescription:t,isAddModal:n,onClick:r})=>{var o,i;const a=n??!e.tags.some(s=>s==="memgpt-base");return f.jsxs("div",{className:"rounded-md border px-4 py-2",children:[f.jsxs("div",{className:"flex items-end justify-between",children:[f.jsxs("span",{className:"inline-flex items-center text-sm font-semibold",children:[tle[e.name]??f.jsx(Rq,{className:to})," ",e.name.replace(/_/g," ").replace(/\w\S*/g,s=>s.charAt(0).toUpperCase()+s.substring(1).toLowerCase())]}),a?f.jsx(ue,{variant:"ghost",size:"iconXs",type:"button",onClick:r,children:f.jsx(Di,{className:"size-4"})}):f.jsx("div",{className:"h-7"})]}),f.jsxs("div",{className:"mt-1 flex items-center justify-between",children:[f.jsx("span",{className:"ml-6 text-xs text-muted-foreground",children:e.name}),f.jsx(b9,{variant:"secondary",className:"text-muted-foreground",children:(o=e.tags[0])==null?void 0:o.replace("memgpt-","")})]}),t?f.jsx("div",{className:"mt-2",children:f.jsx("p",{className:"text-sm text-muted-foreground",children:JSON.stringify((i=e==null?void 0:e.json_schema)==null?void 0:i.description)||""})}):null]})},Y9=()=>{const e=To();return y_({agentId:(e==null?void 0:e.id)||""},void 0,{initialData:e,enabled:!!e})},nle=Xe({toolIds:nA(Ce())}),rle=({closeDialog:e})=>{const{data:t}=Y9(),{data:n,isLoading:r}=Xm(),{mutate:a,isPending:o}=cf(),i=Bt(),s=p.useMemo(()=>new Set(t==null?void 0:t.tools),[t]),l=p.useMemo(()=>(n||[]).filter(v=>!s.has(v.name)),[n]),c=To(),u=(c==null?void 0:c.tools)??[],d=bn({resolver:yn(nle),mode:"onSubmit",defaultValues:{toolIds:[]}}),g=async v=>{v.toolIds.length&&c!=null&&c.id&&a({agentId:c.id,requestBody:{id:c.id,tools:Array.from(new Set([...Array.from(s),...v.toolIds]))}},{onSuccess:()=>{i.invalidateQueries({queryKey:$s({agentId:c.id||""})}),e()}})},m=l.filter(v=>!u.some(h=>h===v.id)),b=d.watch("toolIds"),y=v=>{b.some(h=>h===v)||d.setValue("toolIds",[...b,v])},w=v=>{d.setValue("toolIds",b.filter(h=>h!==v))};return f.jsx(vn,{...d,children:f.jsxs("form",{onSubmit:d.handleSubmit(g,v=>console.log(v)),className:"space-y-8",children:[f.jsx(ut,{control:d.control,name:"toolIds",render:({field:v})=>f.jsxs(ot,{children:[f.jsxs(So,{disabled:r,onValueChange:h=>y(h),children:[f.jsx(pt,{children:f.jsx(za,{children:f.jsx(wo,{placeholder:r?"Loading tools...":"Search or select tools"})})}),f.jsx(Ua,{className:"max-h-[200px] overflow-y-auto",children:(m??[]).map(h=>f.jsx(Fn,{value:h.name,children:h.name},h.id))})]}),f.jsx(lt,{})]})}),f.jsx("div",{className:"space-y-2",children:d.watch("toolIds")?l.filter(v=>d.getValues("toolIds").some(h=>h===v.id)).map(v=>f.jsx(oA,{tool:v,showDescription:!0,isAddModal:!0,onClick:()=>w(v.id||"")},v.id)):null}),f.jsxs("div",{className:"flex items-center justify-between",children:[f.jsx(ue,{variant:"ghost",type:"button",onClick:()=>e(),children:"Cancel"}),f.jsxs("div",{className:"flex gap-3",children:[o&&f.jsxs("div",{className:Tt("mr-4 flex items-center animate-in slide-in-from-bottom-2"),children:[f.jsx(un,{className:"mr-2 h-4 w-4 animate-spin "}),f.jsx("span",{children:"Adding tool to agent..."})]}),f.jsx(ue,{type:"submit",children:"Add Tool"})]})]})]})})},ale=({open:e,onOpenChange:t})=>f.jsx(Kt,{open:e,onOpenChange:t,children:f.jsxs(Ht,{className:"max-h-[95svh] w-full sm:max-w-[800px]",children:[f.jsx(Pt,{children:f.jsx($t,{children:"Add Tool"})}),f.jsx(rle,{closeDialog:()=>t(!1)})]})}),ole=({toolId:e,onClose:t})=>{const{mutate:n,isPending:r}=cf(),{data:a}=Y9(),o=Bt(),i=p.useMemo(()=>new Set(a==null?void 0:a.tools),[a]),s=()=>{!e||!(a!=null&&a.id)||n({agentId:a.id,requestBody:{id:a.id,tools:Array.from(i).filter(l=>l!==e)}},{onSuccess:()=>{o.invalidateQueries({queryKey:$s({agentId:a.id||""})}),t()}})};return f.jsx(Kt,{open:!0,onOpenChange:()=>{t()},children:f.jsxs(Ht,{className:"max-h-[95svh] w-full max-w-80 overflow-auto",children:[f.jsxs(Pt,{children:[f.jsx($t,{children:"Remove Tool"}),f.jsx(dn,{children:"Are you sure you want to remove this Tool? This is a base Agent tool, removing it might result in problems in hove the Agent functions."})]}),f.jsxs("div",{className:"flex justify-end gap-4",children:[f.jsx(ue,{type:"button",variant:"ghost",onClick:()=>t(),children:"Cancel"}),f.jsx(ue,{isBusy:r,onClick:s,children:"Remove"})]})]})})},ile=({open:e,onOpenChange:t,onOpenAddToolsChange:n,tools:r,onRemoveTool:a})=>{const[o,i]=p.useState(!1),[s,l]=p.useState(""),c=(r??[]).filter(u=>{var d;return(d=u.name)==null?void 0:d.toLowerCase().includes(s.toLowerCase())});return f.jsx(Kt,{open:e,onOpenChange:t,children:f.jsxs(Ht,{className:"max-h-[95svh] w-full overflow-auto sm:max-w-[800px]",children:[f.jsx(Pt,{children:f.jsx($t,{children:"Tools"})}),f.jsx(aA,{items:r,searchTerm:s,setSearchTerm:l,setShowSearchInput:i,showSearchInput:o,onOpenAddDialog:n,buttonText:"Add Tool"}),c==null?void 0:c.map(u=>f.jsx(oA,{tool:u,showDescription:!0,onClick:()=>a(u.name||"")},u.id))]})})},sle=({tools:e})=>{const[t,n]=p.useState(!1),[r,a]=p.useState(!1),[o,i]=p.useState(null),{data:s}=Xm(),l=p.useMemo(()=>(s==null?void 0:s.filter(u=>e.find(d=>d===u.name)))||[],[s,e]),c=(s||[]).length>l.length;return f.jsxs(f.Fragment,{children:[f.jsxs("div",{className:"py-4",children:[f.jsxs(wh,{button:c?f.jsx(rA,{onClick:()=>n(!0)}):null,children:["Tools (",e.length,")"]}),f.jsx("div",{className:"mt-2 space-y-2",children:l.sort(ele).slice(0,3).map(u=>f.jsx(oA,{tool:u,onClick:()=>i(u.name||"")},u.id))}),e.length<3?null:f.jsxs(ue,{onClick:()=>a(!0),className:"mt-2 h-7 w-fit p-2 font-semibold",variant:"link",children:["See all ",f.jsx($m,{className:"ml-2 h-4 w-4"})]})]}),f.jsx(ile,{onOpenChange:u=>a(u),open:r,onOpenAddToolsChange:u=>n(u),tools:l,onRemoveTool:u=>i(u)}),f.jsx(ale,{onOpenChange:n,open:t}),o&&f.jsx(ole,{onClose:()=>i(null),toolId:o})]})};function lle(e){const{agent:t}=e,[n,r]=p.useState(!1),{data:a}=w6(),{mutate:o}=cf(),i=Bt(),s=p.useCallback(l=>{if(!t.id)return;const c=a==null?void 0:a.find(u=>u.model===l);c&&o({agentId:t.id,requestBody:{llm_config:c,id:t.id}},{onSuccess:()=>{i.setQueriesData({queryKey:$s({agentId:t.id||""})},u=>{if(u)return{...u,llm_config:c}})}})},[t.id,o,i]);return f.jsx("div",{className:"pb-6 pt-4",children:f.jsxs("div",{className:"h-[35px] flex flex-col justify-between",children:[f.jsx(Sh,{children:"Model"}),n?f.jsxs("div",{className:"flex items-center gap-2",children:[f.jsxs(So,{value:t.llm_config.model,onValueChange:s,children:[f.jsx(za,{children:f.jsx(wo,{placeholder:"Select a model"})}),f.jsx(Ua,{children:a?a.map(l=>f.jsx(Fn,{value:l.model,children:l.model},l.model)):f.jsx(Fn,{value:"loading",disabled:!0,children:"Loading..."})})]}),f.jsxs("button",{onClick:()=>r(!1),className:"h-7 w-7 p-0",children:[f.jsx(Di,{})," ",f.jsx("div",{className:"sr-only",children:"Close"})," "]})]}):f.jsxs("div",{onClick:()=>r(!0),className:"flex cursor-pointer items-center gap-2 text-sm",children:[t.llm_config.model," ",f.jsx(J4,{className:"w-4"}),f.jsx("div",{className:"sr-only",children:"Edit"})]})]})})}function cle(e){const{agent:t}=e,{data:n}=E6(),[r,a]=p.useState(!1),{mutate:o}=cf(),i=Bt(),s=p.useCallback(l=>{if(!n||!t.id)return;const c=n.find(u=>u.embedding_model===l);c&&o({agentId:t.id,requestBody:{embedding_config:c,id:t.id}},{onSuccess:()=>{i.setQueriesData({queryKey:$s({agentId:t.id||""})},u=>{if(u)return{...u,embedding_config:c}})}})},[t.id,n,o,i]);return f.jsx("div",{className:"pb-6 pt-4",children:f.jsxs("div",{className:"h-[35px] flex w-full flex-col items-start justify-start",children:[f.jsx(Sh,{children:"Embedding Model"}),r?f.jsxs("div",{className:"flex w-full items-center gap-2",children:[f.jsxs(So,{value:t.embedding_config.embedding_model,onValueChange:s,children:[f.jsx(za,{className:"w-full",children:f.jsx(wo,{placeholder:"Select an embedding model"})}),f.jsx(Ua,{children:n?n.map(l=>f.jsx(Fn,{value:l.embedding_model,children:l.embedding_model},l.embedding_model)):f.jsx(Fn,{value:"loading",disabled:!0,children:"Loading..."})})]}),f.jsxs("button",{onClick:()=>a(!1),className:"h-7 w-7 p-0",children:[f.jsx(Di,{})," ",f.jsx("div",{className:"sr-only",children:"Close"})," "]})]}):f.jsxs("div",{onClick:()=>a(!0),className:"flex cursor-pointer items-center gap-2 text-sm",children:[t.embedding_config.embedding_model," ",f.jsx(J4,{className:"w-4"}),f.jsx("div",{className:"sr-only",children:"Edit"})]})]})})}const ule=({currentAgentId:e})=>{const t=To(),{data:n}=y_({agentId:(t==null?void 0:t.id)||""},void 0,{initialData:t,enabled:!!t});return f.jsxs("div",{className:"w-96 flex-none overflow-auto px-4",children:[n&&f.jsx(lle,{agent:n}),n&&f.jsx(cle,{agent:n}),f.jsx(Jse,{agentId:e}),f.jsx(bse,{agentId:e}),f.jsx(Cse,{}),f.jsx(sle,{tools:(n==null?void 0:n.tools)??[]}),f.jsx(Kse,{})]})},RN={user:6,"internal-monologue":5,assistant:4,"function-call":3,"message-receipt":2,error:1,login:0},dle=(e,t)=>e.sort((n,r)=>{const a=n.date.toISOString().localeCompare(r.date.toISOString());return a!==0?a:RN[r.type]-RN[n.type]}).filter(n=>!!n.message),fle=()=>{const e=p.useRef(null),t=p.useRef(null),n=p.useRef(null),[r,a]=p.useState(!0),[o,i]=p.useState(!1),s=p.useCallback(()=>{e.current&&e.current.scrollIntoView({block:"end",behavior:"smooth"})},[]);return p.useEffect(()=>{e.current&&r&&!o&&e.current.scrollIntoView({block:"end"})},[r,o]),p.useEffect(()=>{const{current:l}=t;if(l){const c=u=>{const d=u.target,g=25,m=d.scrollTop+d.clientHeight>=d.scrollHeight-g;a(m)};return l.addEventListener("scroll",c,{passive:!0}),()=>{l.removeEventListener("scroll",c)}}},[]),p.useEffect(()=>{if(n.current){const l=new IntersectionObserver(c=>{c.forEach(u=>{u.isIntersecting?i(!0):i(!1)})},{rootMargin:"0px 0px 100px 0px"});return l.observe(n.current),()=>{l.disconnect()}}}),{messagesRef:e,scrollRef:t,visibilityRef:n,scrollToBottom:s,isAtBottom:r,isVisible:o}},ple=({children:e})=>f.jsx("div",{className:"relative flex-1 overflow-y-auto",children:e}),gle=({name:e,date:t})=>e?f.jsxs("p",{className:"flex items-center",children:[f.jsx("span",{className:"mr-2 flex h-6 w-6 items-center justify-center rounded-full bg-primary text-primary-foreground",children:f.jsx(Lm,{className:"h-4 w-4"})}),f.jsx("span",{className:"text-sm font-semibold text-foreground",children:e}),f.jsx("span",{className:"ml-2 text-xs font-normal text-muted-foreground",children:t?Bs(t,"MMM d yy, h:mm a"):""})]}):null;function mle(e){if(typeof e!="string")throw new TypeError("Expected a string");return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}const Eh=function(e){if(e==null)return vle;if(typeof e=="function")return xh(e);if(typeof e=="object")return Array.isArray(e)?hle(e):ble(e);if(typeof e=="string")return yle(e);throw new Error("Expected function, string, or object as test")};function hle(e){const t=[];let n=-1;for(;++n":""))+")"})}return g;function g(){let m=Z9,b,y,w;if((!t||o(l,c,u[u.length-1]||void 0))&&(m=xle(n(l,u)),m[0]===Ik))return m;if("children"in l&&l.children){const v=l;if(v.children&&m[0]!==Ele)for(y=(r?v.children.length:-1)+i,w=u.concat(v);y>-1&&y0?{type:"text",value:x}:void 0),x===!1?g.lastIndex=E+1:(b!==E&&h.push({type:"text",value:c.value.slice(b,E)}),Array.isArray(x)?h.push(...x):x&&h.push(x),b=E+S[0].length,v=!0),!g.global)break;S=g.exec(c.value)}return v?(b-1&&e.test(String.fromCharCode(n))}}const my="phrasing",hy=["autolink","link","image","label"];function Dle(){return{transforms:[zle],enter:{literalAutolink:Mle,literalAutolinkEmail:by,literalAutolinkHttp:by,literalAutolinkWww:by},exit:{literalAutolink:jle,literalAutolinkEmail:Fle,literalAutolinkHttp:Ple,literalAutolinkWww:$le}}}function Lle(){return{unsafe:[{character:"@",before:"[+\\-.\\w]",after:"[\\-.\\w]",inConstruct:my,notInConstruct:hy},{character:".",before:"[Ww]",after:"[\\-.\\w]",inConstruct:my,notInConstruct:hy},{character:":",before:"[ps]",after:"\\/",inConstruct:my,notInConstruct:hy}]}}function Mle(e){this.enter({type:"link",title:null,url:"",children:[]},e)}function by(e){this.config.enter.autolinkProtocol.call(this,e)}function Ple(e){this.config.exit.autolinkProtocol.call(this,e)}function $le(e){this.config.exit.data.call(this,e);const t=this.stack[this.stack.length-1];t.type,t.url="http://"+this.sliceSerialize(e)}function Fle(e){this.config.exit.autolinkEmail.call(this,e)}function jle(e){this.exit(e)}function zle(e){Q9(e,[[/(https?:\/\/|www(?=\.))([-.\w]+)([^ \t\r\n]*)/gi,Ule],[/([-.\w+]+)@([-\w]+(?:\.[-\w]+)+)/g,Ble]],{ignore:["link","linkReference"]})}function Ule(e,t,n,r,a){let o="";if(!J9(a)||(/^w/i.test(t)&&(n=t+n,t="",o="http://"),!Hle(n)))return!1;const i=Vle(n+r);if(!i[0])return!1;const s={type:"link",title:null,url:o+t+i[0],children:[{type:"text",value:t+i[0]}]};return i[1]?[s,{type:"text",value:i[1]}]:s}function Ble(e,t,n,r){return!J9(r,!0)||/[-\d_]$/.test(n)?!1:{type:"link",title:null,url:"mailto:"+t+"@"+n,children:[{type:"text",value:t+"@"+n}]}}function Hle(e){const t=e.split(".");return!(t.length<2||t[t.length-1]&&(/_/.test(t[t.length-1])||!/[a-zA-Z\d]/.test(t[t.length-1]))||t[t.length-2]&&(/_/.test(t[t.length-2])||!/[a-zA-Z\d]/.test(t[t.length-2])))}function Vle(e){const t=/[!"&'),.:;<>?\]}]+$/.exec(e);if(!t)return[e,void 0];e=e.slice(0,t.index);let n=t[0],r=n.indexOf(")");const a=NN(e,"(");let o=NN(e,")");for(;r!==-1&&a>o;)e+=n.slice(0,r+1),n=n.slice(r+1),r=n.indexOf(")"),o++;return[e,n]}function J9(e,t){const n=e.input.charCodeAt(e.index-1);return(e.index===0||Is(n)||kh(n))&&(!t||n!==47)}function ma(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}ej.peek=tce;function qle(){return{enter:{gfmFootnoteDefinition:Wle,gfmFootnoteDefinitionLabelString:Kle,gfmFootnoteCall:Xle,gfmFootnoteCallString:Qle},exit:{gfmFootnoteDefinition:Zle,gfmFootnoteDefinitionLabelString:Yle,gfmFootnoteCall:ece,gfmFootnoteCallString:Jle}}}function Gle(){return{unsafe:[{character:"[",inConstruct:["phrasing","label","reference"]}],handlers:{footnoteDefinition:nce,footnoteReference:ej}}}function Wle(e){this.enter({type:"footnoteDefinition",identifier:"",label:"",children:[]},e)}function Kle(){this.buffer()}function Yle(e){const t=this.resume(),n=this.stack[this.stack.length-1];n.type,n.label=t,n.identifier=ma(this.sliceSerialize(e)).toLowerCase()}function Zle(e){this.exit(e)}function Xle(e){this.enter({type:"footnoteReference",identifier:"",label:""},e)}function Qle(){this.buffer()}function Jle(e){const t=this.resume(),n=this.stack[this.stack.length-1];n.type,n.label=t,n.identifier=ma(this.sliceSerialize(e)).toLowerCase()}function ece(e){this.exit(e)}function ej(e,t,n,r){const a=n.createTracker(r);let o=a.move("[^");const i=n.enter("footnoteReference"),s=n.enter("reference");return o+=a.move(n.safe(n.associationId(e),{...a.current(),before:o,after:"]"})),s(),i(),o+=a.move("]"),o}function tce(){return"["}function nce(e,t,n,r){const a=n.createTracker(r);let o=a.move("[^");const i=n.enter("footnoteDefinition"),s=n.enter("label");return o+=a.move(n.safe(n.associationId(e),{...a.current(),before:o,after:"]"})),s(),o+=a.move("]:"+(e.children&&e.children.length>0?" ":"")),a.shift(4),o+=a.move(n.indentLines(n.containerFlow(e,a.current()),rce)),i(),o}function rce(e,t,n){return t===0?e:(n?"":" ")+e}const ace=["autolink","destinationLiteral","destinationRaw","reference","titleQuote","titleApostrophe"];tj.peek=cce;function oce(){return{canContainEols:["delete"],enter:{strikethrough:sce},exit:{strikethrough:lce}}}function ice(){return{unsafe:[{character:"~",inConstruct:"phrasing",notInConstruct:ace}],handlers:{delete:tj}}}function sce(e){this.enter({type:"delete",children:[]},e)}function lce(e){this.exit(e)}function tj(e,t,n,r){const a=n.createTracker(r),o=n.enter("strikethrough");let i=a.move("~~");return i+=n.containerPhrasing(e,{...a.current(),before:i,after:"~"}),i+=a.move("~~"),o(),i}function cce(){return"~"}function uce(e,t={}){const n=(t.align||[]).concat(),r=t.stringLength||fce,a=[],o=[],i=[],s=[];let l=0,c=-1;for(;++cl&&(l=e[c].length);++ws[w])&&(s[w]=h)}b.push(v)}o[c]=b,i[c]=y}let u=-1;if(typeof n=="object"&&"length"in n)for(;++us[u]&&(s[u]=v),g[u]=v),d[u]=h}o.splice(1,0,d),i.splice(1,0,g),c=-1;const m=[];for(;++c "),o.shift(2);const i=n.indentLines(n.containerFlow(e,o.current()),gce);return a(),i}function gce(e,t,n){return">"+(n?"":" ")+e}function mce(e,t){return ON(e,t.inConstruct,!0)&&!ON(e,t.notInConstruct,!1)}function ON(e,t,n){if(typeof t=="string"&&(t=[t]),!t||t.length===0)return n;let r=-1;for(;++ri&&(i=o):o=1,a=r+t.length,r=n.indexOf(t,a);return i}function bce(e,t){return!!(t.options.fences===!1&&e.value&&!e.lang&&/[^ \r\n]/.test(e.value)&&!/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(e.value))}function yce(e){const t=e.options.fence||"`";if(t!=="`"&&t!=="~")throw new Error("Cannot serialize code with `"+t+"` for `options.fence`, expected `` ` `` or `~`");return t}function vce(e,t,n,r){const a=yce(n),o=e.value||"",i=a==="`"?"GraveAccent":"Tilde";if(bce(e,n)){const d=n.enter("codeIndented"),g=n.indentLines(o,Sce);return d(),g}const s=n.createTracker(r),l=a.repeat(Math.max(hce(o,a)+1,3)),c=n.enter("codeFenced");let u=s.move(l);if(e.lang){const d=n.enter(`codeFencedLang${i}`);u+=s.move(n.safe(e.lang,{before:u,after:" ",encode:["`"],...s.current()})),d()}if(e.lang&&e.meta){const d=n.enter(`codeFencedMeta${i}`);u+=s.move(" "),u+=s.move(n.safe(e.meta,{before:u,after:` -`,encode:["`"],...s.current()})),d()}return u+=s.move(` -`),o&&(u+=s.move(o+` -`)),u+=s.move(l),c(),u}function Sce(e,t,n){return(n?"":" ")+e}function iA(e){const t=e.options.quote||'"';if(t!=='"'&&t!=="'")throw new Error("Cannot serialize title with `"+t+"` for `options.quote`, expected `\"`, or `'`");return t}function wce(e,t,n,r){const a=iA(n),o=a==='"'?"Quote":"Apostrophe",i=n.enter("definition");let s=n.enter("label");const l=n.createTracker(r);let c=l.move("[");return c+=l.move(n.safe(n.associationId(e),{before:c,after:"]",...l.current()})),c+=l.move("]: "),s(),!e.url||/[\0- \u007F]/.test(e.url)?(s=n.enter("destinationLiteral"),c+=l.move("<"),c+=l.move(n.safe(e.url,{before:c,after:">",...l.current()})),c+=l.move(">")):(s=n.enter("destinationRaw"),c+=l.move(n.safe(e.url,{before:c,after:e.title?" ":` -`,...l.current()}))),s(),e.title&&(s=n.enter(`title${o}`),c+=l.move(" "+a),c+=l.move(n.safe(e.title,{before:c,after:a,...l.current()})),c+=l.move(a),s()),i(),c}function Ece(e){const t=e.options.emphasis||"*";if(t!=="*"&&t!=="_")throw new Error("Cannot serialize emphasis with `"+t+"` for `options.emphasis`, expected `*`, or `_`");return t}nj.peek=xce;function nj(e,t,n,r){const a=Ece(n),o=n.enter("emphasis"),i=n.createTracker(r);let s=i.move(a);return s+=i.move(n.containerPhrasing(e,{before:s,after:a,...i.current()})),s+=i.move(a),o(),s}function xce(e,t,n){return n.options.emphasis||"*"}function sA(e,t,n,r){let a,o,i;typeof t=="function"&&typeof n!="function"?(o=void 0,i=t,a=n):(o=t,i=n,a=r),X9(e,o,s,a);function s(l,c){const u=c[c.length-1],d=u?u.children.indexOf(l):void 0;return i(l,d,u)}}const kce={};function lA(e,t){const n=t||kce,r=typeof n.includeImageAlt=="boolean"?n.includeImageAlt:!0,a=typeof n.includeHtml=="boolean"?n.includeHtml:!0;return rj(e,r,a)}function rj(e,t,n){if(Cce(e)){if("value"in e)return e.type==="html"&&!n?"":e.value;if(t&&"alt"in e&&e.alt)return e.alt;if("children"in e)return LN(e.children,t,n)}return Array.isArray(e)?LN(e,t,n):""}function LN(e,t,n){const r=[];let a=-1;for(;++a",...l.current()})),c+=l.move(">")):(s=n.enter("destinationRaw"),c+=l.move(n.safe(e.url,{before:c,after:e.title?" ":")",...l.current()}))),s(),e.title&&(s=n.enter(`title${o}`),c+=l.move(" "+a),c+=l.move(n.safe(e.title,{before:c,after:a,...l.current()})),c+=l.move(a),s()),c+=l.move(")"),i(),c}function Rce(){return"!"}ij.peek=Nce;function ij(e,t,n,r){const a=e.referenceType,o=n.enter("imageReference");let i=n.enter("label");const s=n.createTracker(r);let l=s.move("![");const c=n.safe(e.alt,{before:l,after:"]",...s.current()});l+=s.move(c+"]["),i();const u=n.stack;n.stack=[],i=n.enter("reference");const d=n.safe(n.associationId(e),{before:l,after:"]",...s.current()});return i(),n.stack=u,o(),a==="full"||!c||c!==d?l+=s.move(d+"]"):a==="shortcut"?l=l.slice(0,-1):l+=s.move("]"),l}function Nce(){return"!"}sj.peek=Ice;function sj(e,t,n){let r=e.value||"",a="`",o=-1;for(;new RegExp("(^|[^`])"+a+"([^`]|$)").test(r);)a+="`";for(/[^ \r\n]/.test(r)&&(/^[ \r\n]/.test(r)&&/[ \r\n]$/.test(r)||/^`|`$/.test(r))&&(r=" "+r+" ");++o\u007F]/.test(e.url))}cj.peek=Oce;function cj(e,t,n,r){const a=iA(n),o=a==='"'?"Quote":"Apostrophe",i=n.createTracker(r);let s,l;if(lj(e,n)){const u=n.stack;n.stack=[],s=n.enter("autolink");let d=i.move("<");return d+=i.move(n.containerPhrasing(e,{before:d,after:">",...i.current()})),d+=i.move(">"),s(),n.stack=u,d}s=n.enter("link"),l=n.enter("label");let c=i.move("[");return c+=i.move(n.containerPhrasing(e,{before:c,after:"](",...i.current()})),c+=i.move("]("),l(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(l=n.enter("destinationLiteral"),c+=i.move("<"),c+=i.move(n.safe(e.url,{before:c,after:">",...i.current()})),c+=i.move(">")):(l=n.enter("destinationRaw"),c+=i.move(n.safe(e.url,{before:c,after:e.title?" ":")",...i.current()}))),l(),e.title&&(l=n.enter(`title${o}`),c+=i.move(" "+a),c+=i.move(n.safe(e.title,{before:c,after:a,...i.current()})),c+=i.move(a),l()),c+=i.move(")"),s(),c}function Oce(e,t,n){return lj(e,n)?"<":"["}uj.peek=Dce;function uj(e,t,n,r){const a=e.referenceType,o=n.enter("linkReference");let i=n.enter("label");const s=n.createTracker(r);let l=s.move("[");const c=n.containerPhrasing(e,{before:l,after:"]",...s.current()});l+=s.move(c+"]["),i();const u=n.stack;n.stack=[],i=n.enter("reference");const d=n.safe(n.associationId(e),{before:l,after:"]",...s.current()});return i(),n.stack=u,o(),a==="full"||!c||c!==d?l+=s.move(d+"]"):a==="shortcut"?l=l.slice(0,-1):l+=s.move("]"),l}function Dce(){return"["}function cA(e){const t=e.options.bullet||"*";if(t!=="*"&&t!=="+"&&t!=="-")throw new Error("Cannot serialize items with `"+t+"` for `options.bullet`, expected `*`, `+`, or `-`");return t}function Lce(e){const t=cA(e),n=e.options.bulletOther;if(!n)return t==="*"?"-":"*";if(n!=="*"&&n!=="+"&&n!=="-")throw new Error("Cannot serialize items with `"+n+"` for `options.bulletOther`, expected `*`, `+`, or `-`");if(n===t)throw new Error("Expected `bullet` (`"+t+"`) and `bulletOther` (`"+n+"`) to be different");return n}function Mce(e){const t=e.options.bulletOrdered||".";if(t!=="."&&t!==")")throw new Error("Cannot serialize items with `"+t+"` for `options.bulletOrdered`, expected `.` or `)`");return t}function dj(e){const t=e.options.rule||"*";if(t!=="*"&&t!=="-"&&t!=="_")throw new Error("Cannot serialize rules with `"+t+"` for `options.rule`, expected `*`, `-`, or `_`");return t}function Pce(e,t,n,r){const a=n.enter("list"),o=n.bulletCurrent;let i=e.ordered?Mce(n):cA(n);const s=e.ordered?i==="."?")":".":Lce(n);let l=t&&n.bulletLastUsed?i===n.bulletLastUsed:!1;if(!e.ordered){const u=e.children?e.children[0]:void 0;if((i==="*"||i==="-")&&u&&(!u.children||!u.children[0])&&n.stack[n.stack.length-1]==="list"&&n.stack[n.stack.length-2]==="listItem"&&n.stack[n.stack.length-3]==="list"&&n.stack[n.stack.length-4]==="listItem"&&n.indexStack[n.indexStack.length-1]===0&&n.indexStack[n.indexStack.length-2]===0&&n.indexStack[n.indexStack.length-3]===0&&(l=!0),dj(n)===i&&u){let d=-1;for(;++d-1?t.start:1)+(n.options.incrementListMarker===!1?0:t.children.indexOf(e))+o);let i=o.length+1;(a==="tab"||a==="mixed"&&(t&&t.type==="list"&&t.spread||e.spread))&&(i=Math.ceil(i/4)*4);const s=n.createTracker(r);s.move(o+" ".repeat(i-o.length)),s.shift(i);const l=n.enter("listItem"),c=n.indentLines(n.containerFlow(e,s.current()),u);return l(),c;function u(d,g,m){return g?(m?"":" ".repeat(i))+d:(m?o:o+" ".repeat(i-o.length))+d}}function jce(e,t,n,r){const a=n.enter("paragraph"),o=n.enter("phrasing"),i=n.containerPhrasing(e,r);return o(),a(),i}const zce=Eh(["break","delete","emphasis","footnote","footnoteReference","image","imageReference","inlineCode","inlineMath","link","linkReference","mdxJsxTextElement","mdxTextExpression","strong","text","textDirective"]);function Uce(e,t,n,r){return(e.children.some(function(i){return zce(i)})?n.containerPhrasing:n.containerFlow).call(n,e,r)}function Bce(e){const t=e.options.strong||"*";if(t!=="*"&&t!=="_")throw new Error("Cannot serialize strong with `"+t+"` for `options.strong`, expected `*`, or `_`");return t}fj.peek=Hce;function fj(e,t,n,r){const a=Bce(n),o=n.enter("strong"),i=n.createTracker(r);let s=i.move(a+a);return s+=i.move(n.containerPhrasing(e,{before:s,after:a,...i.current()})),s+=i.move(a+a),o(),s}function Hce(e,t,n){return n.options.strong||"*"}function Vce(e,t,n,r){return n.safe(e.value,r)}function qce(e){const t=e.options.ruleRepetition||3;if(t<3)throw new Error("Cannot serialize rules with repetition `"+t+"` for `options.ruleRepetition`, expected `3` or more");return t}function Gce(e,t,n){const r=(dj(n)+(n.options.ruleSpaces?" ":"")).repeat(qce(n));return n.options.ruleSpaces?r.slice(0,-1):r}const pj={blockquote:pce,break:DN,code:vce,definition:wce,emphasis:nj,hardBreak:DN,heading:Ace,html:aj,image:oj,imageReference:ij,inlineCode:sj,link:cj,linkReference:uj,list:Pce,listItem:Fce,paragraph:jce,root:Uce,strong:fj,text:Vce,thematicBreak:Gce},MN=document.createElement("i");function uA(e){const t="&"+e+";";MN.innerHTML=t;const n=MN.textContent;return n.charCodeAt(n.length-1)===59&&e!=="semi"||n===t?!1:n}function gj(e,t){const n=Number.parseInt(e,t);return n<9||n===11||n>13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||(n&65535)===65535||(n&65535)===65534||n>1114111?"�":String.fromCodePoint(n)}const Wce=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function Kce(e){return e.replace(Wce,Yce)}function Yce(e,t,n){if(t)return t;if(n.charCodeAt(0)===35){const a=n.charCodeAt(1),o=a===120||a===88;return gj(n.slice(o?2:1),o?16:10)}return uA(n)||e}function Zce(){return{enter:{table:Xce,tableData:PN,tableHeader:PN,tableRow:Jce},exit:{codeText:eue,table:Qce,tableData:yy,tableHeader:yy,tableRow:yy}}}function Xce(e){const t=e._align;this.enter({type:"table",align:t.map(function(n){return n==="none"?null:n}),children:[]},e),this.data.inTable=!0}function Qce(e){this.exit(e),this.data.inTable=void 0}function Jce(e){this.enter({type:"tableRow",children:[]},e)}function yy(e){this.exit(e)}function PN(e){this.enter({type:"tableCell",children:[]},e)}function eue(e){let t=this.resume();this.data.inTable&&(t=t.replace(/\\([\\|])/g,tue));const n=this.stack[this.stack.length-1];n.type,n.value=t,this.exit(e)}function tue(e,t){return t==="|"?t:e}function nue(e){const t=e||{},n=t.tableCellPadding,r=t.tablePipeAlign,a=t.stringLength,o=n?" ":"|";return{unsafe:[{character:"\r",inConstruct:"tableCell"},{character:` -`,inConstruct:"tableCell"},{atBreak:!0,character:"|",after:"[ :-]"},{character:"|",inConstruct:"tableCell"},{atBreak:!0,character:":",after:"-"},{atBreak:!0,character:"-",after:"[:|-]"}],handlers:{inlineCode:g,table:i,tableCell:l,tableRow:s}};function i(m,b,y,w){return c(u(m,y,w),m.align)}function s(m,b,y,w){const v=d(m,y,w),h=c([v]);return h.slice(0,h.indexOf(` -`))}function l(m,b,y,w){const v=y.enter("tableCell"),h=y.enter("phrasing"),S=y.containerPhrasing(m,{...w,before:o,after:o});return h(),v(),S}function c(m,b){return uce(m,{align:b,alignDelimiters:r,padding:n,stringLength:a})}function u(m,b,y){const w=m.children;let v=-1;const h=[],S=b.enter("table");for(;++va?0:a+t:t=t>a?a:t,n=n>0?n:0,r.length<1e4)i=Array.from(r),i.unshift(t,n),e.splice(...i);else for(n&&e.splice(t,n);o0?(Wr(e,e.length,0,t),e):t}const FN={}.hasOwnProperty;function mj(e){const t={};let n=-1;for(;++n0&&!n&&(e[e.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),n}function Hc(e){const t=[];let n=-1,r=0,a=0;for(;++n55295&&o<57344){const s=e.charCodeAt(n+1);o<56320&&s>56319&&s<57344?(i=String.fromCharCode(o,s),a=1):i="�"}else i=String.fromCharCode(o);i&&(t.push(e.slice(r,n),encodeURIComponent(i)),r=n+a+1,i=""),a&&(n+=a,a=0)}return t.join("")+e.slice(r)}function rm(e){if(e===null||Et(e)||Is(e))return 1;if(kh(e))return 2}function Ch(e,t,n){const r=[];let a=-1;for(;++a1&&e[n][1].end.offset-e[n][1].start.offset>1?2:1;const d=Object.assign({},e[r][1].end),g=Object.assign({},e[n][1].start);jN(d,-l),jN(g,l),i={type:l>1?"strongSequence":"emphasisSequence",start:d,end:Object.assign({},e[r][1].end)},s={type:l>1?"strongSequence":"emphasisSequence",start:Object.assign({},e[n][1].start),end:g},o={type:l>1?"strongText":"emphasisText",start:Object.assign({},e[r][1].end),end:Object.assign({},e[n][1].start)},a={type:l>1?"strong":"emphasis",start:Object.assign({},i.start),end:Object.assign({},s.end)},e[r][1].end=Object.assign({},i.start),e[n][1].start=Object.assign({},s.end),c=[],e[r][1].end.offset-e[r][1].start.offset&&(c=Br(c,[["enter",e[r][1],t],["exit",e[r][1],t]])),c=Br(c,[["enter",a,t],["enter",i,t],["exit",i,t],["enter",o,t]]),c=Br(c,Ch(t.parser.constructs.insideSpan.null,e.slice(r+1,n),t)),c=Br(c,[["exit",o,t],["enter",s,t],["exit",s,t],["exit",a,t]]),e[n][1].end.offset-e[n][1].start.offset?(u=2,c=Br(c,[["enter",e[n][1],t],["exit",e[n][1],t]])):u=0,Wr(e,r-1,n-r+3,c),n=r+c.length-u-2;break}}for(n=-1;++n0&&tt(x)?ct(e,h,"linePrefix",o+1)(x):h(x)}function h(x){return x===null||Oe(x)?e.check(zN,y,E)(x):(e.enter("codeFlowValue"),S(x))}function S(x){return x===null||Oe(x)?(e.exit("codeFlowValue"),h(x)):(e.consume(x),S)}function E(x){return e.exit("codeFenced"),t(x)}function k(x,C,_){let R=0;return T;function T(M){return x.enter("lineEnding"),x.consume(M),x.exit("lineEnding"),L}function L(M){return x.enter("codeFencedFence"),tt(M)?ct(x,D,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(M):D(M)}function D(M){return M===s?(x.enter("codeFencedFenceSequence"),H(M)):_(M)}function H(M){return M===s?(R++,x.consume(M),H):R>=i?(x.exit("codeFencedFenceSequence"),tt(M)?ct(x,z,"whitespace")(M):z(M)):_(M)}function z(M){return M===null||Oe(M)?(x.exit("codeFencedFence"),C(M)):_(M)}}}function Due(e,t,n){const r=this;return a;function a(i){return i===null?n(i):(e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),o)}function o(i){return r.parser.lazy[r.now().line]?n(i):t(i)}}const vy={name:"codeIndented",tokenize:Mue},Lue={tokenize:Pue,partial:!0};function Mue(e,t,n){const r=this;return a;function a(c){return e.enter("codeIndented"),ct(e,o,"linePrefix",4+1)(c)}function o(c){const u=r.events[r.events.length-1];return u&&u[1].type==="linePrefix"&&u[2].sliceSerialize(u[1],!0).length>=4?i(c):n(c)}function i(c){return c===null?l(c):Oe(c)?e.attempt(Lue,i,l)(c):(e.enter("codeFlowValue"),s(c))}function s(c){return c===null||Oe(c)?(e.exit("codeFlowValue"),i(c)):(e.consume(c),s)}function l(c){return e.exit("codeIndented"),t(c)}}function Pue(e,t,n){const r=this;return a;function a(i){return r.parser.lazy[r.now().line]?n(i):Oe(i)?(e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),a):ct(e,o,"linePrefix",4+1)(i)}function o(i){const s=r.events[r.events.length-1];return s&&s[1].type==="linePrefix"&&s[2].sliceSerialize(s[1],!0).length>=4?t(i):Oe(i)?a(i):n(i)}}const $ue={name:"codeText",tokenize:zue,resolve:Fue,previous:jue};function Fue(e){let t=e.length-4,n=3,r,a;if((e[n][1].type==="lineEnding"||e[n][1].type==="space")&&(e[t][1].type==="lineEnding"||e[t][1].type==="space")){for(r=n;++r=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+t+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return tthis.left.length?this.right.slice(this.right.length-r+this.left.length,this.right.length-t+this.left.length).reverse():this.left.slice(t).concat(this.right.slice(this.right.length-r+this.left.length).reverse())}splice(t,n,r){const a=n||0;this.setCursor(Math.trunc(t));const o=this.right.splice(this.right.length-a,Number.POSITIVE_INFINITY);return r&&mu(this.left,r),o.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(t){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(t)}pushMany(t){this.setCursor(Number.POSITIVE_INFINITY),mu(this.left,t)}unshift(t){this.setCursor(0),this.right.push(t)}unshiftMany(t){this.setCursor(0),mu(this.right,t.reverse())}setCursor(t){if(!(t===this.left.length||t>this.left.length&&this.right.length===0||t<0&&this.left.length===0))if(t=4?t(i):e.interrupt(r.parser.constructs.flow,n,t)(i)}}function Tj(e,t,n,r,a,o,i,s,l){const c=l||Number.POSITIVE_INFINITY;let u=0;return d;function d(v){return v===60?(e.enter(r),e.enter(a),e.enter(o),e.consume(v),e.exit(o),g):v===null||v===32||v===41||nm(v)?n(v):(e.enter(r),e.enter(i),e.enter(s),e.enter("chunkString",{contentType:"string"}),y(v))}function g(v){return v===62?(e.enter(o),e.consume(v),e.exit(o),e.exit(a),e.exit(r),t):(e.enter(s),e.enter("chunkString",{contentType:"string"}),m(v))}function m(v){return v===62?(e.exit("chunkString"),e.exit(s),g(v)):v===null||v===60||Oe(v)?n(v):(e.consume(v),v===92?b:m)}function b(v){return v===60||v===62||v===92?(e.consume(v),m):m(v)}function y(v){return!u&&(v===null||v===41||Et(v))?(e.exit("chunkString"),e.exit(s),e.exit(i),e.exit(r),t(v)):u999||m===null||m===91||m===93&&!l||m===94&&!s&&"_hiddenFootnoteSupport"in i.parser.constructs?n(m):m===93?(e.exit(o),e.enter(a),e.consume(m),e.exit(a),e.exit(r),t):Oe(m)?(e.enter("lineEnding"),e.consume(m),e.exit("lineEnding"),u):(e.enter("chunkString",{contentType:"string"}),d(m))}function d(m){return m===null||m===91||m===93||Oe(m)||s++>999?(e.exit("chunkString"),u(m)):(e.consume(m),l||(l=!tt(m)),m===92?g:d)}function g(m){return m===91||m===92||m===93?(e.consume(m),s++,d):d(m)}}function Nj(e,t,n,r,a,o){let i;return s;function s(g){return g===34||g===39||g===40?(e.enter(r),e.enter(a),e.consume(g),e.exit(a),i=g===40?41:g,l):n(g)}function l(g){return g===i?(e.enter(a),e.consume(g),e.exit(a),e.exit(r),t):(e.enter(o),c(g))}function c(g){return g===i?(e.exit(o),l(i)):g===null?n(g):Oe(g)?(e.enter("lineEnding"),e.consume(g),e.exit("lineEnding"),ct(e,c,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),u(g))}function u(g){return g===i||g===null||Oe(g)?(e.exit("chunkString"),c(g)):(e.consume(g),g===92?d:u)}function d(g){return g===i||g===92?(e.consume(g),u):u(g)}}function Ku(e,t){let n;return r;function r(a){return Oe(a)?(e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),n=!0,r):tt(a)?ct(e,r,n?"linePrefix":"lineSuffix")(a):t(a)}}const Kue={name:"definition",tokenize:Zue},Yue={tokenize:Xue,partial:!0};function Zue(e,t,n){const r=this;let a;return o;function o(m){return e.enter("definition"),i(m)}function i(m){return Rj.call(r,e,s,n,"definitionLabel","definitionLabelMarker","definitionLabelString")(m)}function s(m){return a=ma(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),m===58?(e.enter("definitionMarker"),e.consume(m),e.exit("definitionMarker"),l):n(m)}function l(m){return Et(m)?Ku(e,c)(m):c(m)}function c(m){return Tj(e,u,n,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(m)}function u(m){return e.attempt(Yue,d,d)(m)}function d(m){return tt(m)?ct(e,g,"whitespace")(m):g(m)}function g(m){return m===null||Oe(m)?(e.exit("definition"),r.parser.defined.push(a),t(m)):n(m)}}function Xue(e,t,n){return r;function r(s){return Et(s)?Ku(e,a)(s):n(s)}function a(s){return Nj(e,o,n,"definitionTitle","definitionTitleMarker","definitionTitleString")(s)}function o(s){return tt(s)?ct(e,i,"whitespace")(s):i(s)}function i(s){return s===null||Oe(s)?t(s):n(s)}}const Que={name:"hardBreakEscape",tokenize:Jue};function Jue(e,t,n){return r;function r(o){return e.enter("hardBreakEscape"),e.consume(o),a}function a(o){return Oe(o)?(e.exit("hardBreakEscape"),t(o)):n(o)}}const ede={name:"headingAtx",tokenize:nde,resolve:tde};function tde(e,t){let n=e.length-2,r=3,a,o;return e[r][1].type==="whitespace"&&(r+=2),n-2>r&&e[n][1].type==="whitespace"&&(n-=2),e[n][1].type==="atxHeadingSequence"&&(r===n-1||n-4>r&&e[n-2][1].type==="whitespace")&&(n-=r+1===n?2:4),n>r&&(a={type:"atxHeadingText",start:e[r][1].start,end:e[n][1].end},o={type:"chunkText",start:e[r][1].start,end:e[n][1].end,contentType:"text"},Wr(e,r,n-r+1,[["enter",a,t],["enter",o,t],["exit",o,t],["exit",a,t]])),e}function nde(e,t,n){let r=0;return a;function a(u){return e.enter("atxHeading"),o(u)}function o(u){return e.enter("atxHeadingSequence"),i(u)}function i(u){return u===35&&r++<6?(e.consume(u),i):u===null||Et(u)?(e.exit("atxHeadingSequence"),s(u)):n(u)}function s(u){return u===35?(e.enter("atxHeadingSequence"),l(u)):u===null||Oe(u)?(e.exit("atxHeading"),t(u)):tt(u)?ct(e,s,"whitespace")(u):(e.enter("atxHeadingText"),c(u))}function l(u){return u===35?(e.consume(u),l):(e.exit("atxHeadingSequence"),s(u))}function c(u){return u===null||u===35||Et(u)?(e.exit("atxHeadingText"),s(u)):(e.consume(u),c)}}const rde=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],BN=["pre","script","style","textarea"],ade={name:"htmlFlow",tokenize:lde,resolveTo:sde,concrete:!0},ode={tokenize:ude,partial:!0},ide={tokenize:cde,partial:!0};function sde(e){let t=e.length;for(;t--&&!(e[t][0]==="enter"&&e[t][1].type==="htmlFlow"););return t>1&&e[t-2][1].type==="linePrefix"&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function lde(e,t,n){const r=this;let a,o,i,s,l;return c;function c(N){return u(N)}function u(N){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(N),d}function d(N){return N===33?(e.consume(N),g):N===47?(e.consume(N),o=!0,y):N===63?(e.consume(N),a=3,r.interrupt?t:A):Zn(N)?(e.consume(N),i=String.fromCharCode(N),w):n(N)}function g(N){return N===45?(e.consume(N),a=2,m):N===91?(e.consume(N),a=5,s=0,b):Zn(N)?(e.consume(N),a=4,r.interrupt?t:A):n(N)}function m(N){return N===45?(e.consume(N),r.interrupt?t:A):n(N)}function b(N){const K="CDATA[";return N===K.charCodeAt(s++)?(e.consume(N),s===K.length?r.interrupt?t:D:b):n(N)}function y(N){return Zn(N)?(e.consume(N),i=String.fromCharCode(N),w):n(N)}function w(N){if(N===null||N===47||N===62||Et(N)){const K=N===47,ae=i.toLowerCase();return!K&&!o&&BN.includes(ae)?(a=1,r.interrupt?t(N):D(N)):rde.includes(i.toLowerCase())?(a=6,K?(e.consume(N),v):r.interrupt?t(N):D(N)):(a=7,r.interrupt&&!r.parser.lazy[r.now().line]?n(N):o?h(N):S(N))}return N===45||$n(N)?(e.consume(N),i+=String.fromCharCode(N),w):n(N)}function v(N){return N===62?(e.consume(N),r.interrupt?t:D):n(N)}function h(N){return tt(N)?(e.consume(N),h):T(N)}function S(N){return N===47?(e.consume(N),T):N===58||N===95||Zn(N)?(e.consume(N),E):tt(N)?(e.consume(N),S):T(N)}function E(N){return N===45||N===46||N===58||N===95||$n(N)?(e.consume(N),E):k(N)}function k(N){return N===61?(e.consume(N),x):tt(N)?(e.consume(N),k):S(N)}function x(N){return N===null||N===60||N===61||N===62||N===96?n(N):N===34||N===39?(e.consume(N),l=N,C):tt(N)?(e.consume(N),x):_(N)}function C(N){return N===l?(e.consume(N),l=null,R):N===null||Oe(N)?n(N):(e.consume(N),C)}function _(N){return N===null||N===34||N===39||N===47||N===60||N===61||N===62||N===96||Et(N)?k(N):(e.consume(N),_)}function R(N){return N===47||N===62||tt(N)?S(N):n(N)}function T(N){return N===62?(e.consume(N),L):n(N)}function L(N){return N===null||Oe(N)?D(N):tt(N)?(e.consume(N),L):n(N)}function D(N){return N===45&&a===2?(e.consume(N),U):N===60&&a===1?(e.consume(N),X):N===62&&a===4?(e.consume(N),V):N===63&&a===3?(e.consume(N),A):N===93&&a===5?(e.consume(N),O):Oe(N)&&(a===6||a===7)?(e.exit("htmlFlowData"),e.check(ode,P,H)(N)):N===null||Oe(N)?(e.exit("htmlFlowData"),H(N)):(e.consume(N),D)}function H(N){return e.check(ide,z,P)(N)}function z(N){return e.enter("lineEnding"),e.consume(N),e.exit("lineEnding"),M}function M(N){return N===null||Oe(N)?H(N):(e.enter("htmlFlowData"),D(N))}function U(N){return N===45?(e.consume(N),A):D(N)}function X(N){return N===47?(e.consume(N),i="",j):D(N)}function j(N){if(N===62){const K=i.toLowerCase();return BN.includes(K)?(e.consume(N),V):D(N)}return Zn(N)&&i.length<8?(e.consume(N),i+=String.fromCharCode(N),j):D(N)}function O(N){return N===93?(e.consume(N),A):D(N)}function A(N){return N===62?(e.consume(N),V):N===45&&a===2?(e.consume(N),A):D(N)}function V(N){return N===null||Oe(N)?(e.exit("htmlFlowData"),P(N)):(e.consume(N),V)}function P(N){return e.exit("htmlFlow"),t(N)}}function cde(e,t,n){const r=this;return a;function a(i){return Oe(i)?(e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),o):n(i)}function o(i){return r.parser.lazy[r.now().line]?n(i):t(i)}}function ude(e,t,n){return r;function r(a){return e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),e.attempt(Ef,t,n)}}const dde={name:"htmlText",tokenize:fde};function fde(e,t,n){const r=this;let a,o,i;return s;function s(A){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(A),l}function l(A){return A===33?(e.consume(A),c):A===47?(e.consume(A),k):A===63?(e.consume(A),S):Zn(A)?(e.consume(A),_):n(A)}function c(A){return A===45?(e.consume(A),u):A===91?(e.consume(A),o=0,b):Zn(A)?(e.consume(A),h):n(A)}function u(A){return A===45?(e.consume(A),m):n(A)}function d(A){return A===null?n(A):A===45?(e.consume(A),g):Oe(A)?(i=d,X(A)):(e.consume(A),d)}function g(A){return A===45?(e.consume(A),m):d(A)}function m(A){return A===62?U(A):A===45?g(A):d(A)}function b(A){const V="CDATA[";return A===V.charCodeAt(o++)?(e.consume(A),o===V.length?y:b):n(A)}function y(A){return A===null?n(A):A===93?(e.consume(A),w):Oe(A)?(i=y,X(A)):(e.consume(A),y)}function w(A){return A===93?(e.consume(A),v):y(A)}function v(A){return A===62?U(A):A===93?(e.consume(A),v):y(A)}function h(A){return A===null||A===62?U(A):Oe(A)?(i=h,X(A)):(e.consume(A),h)}function S(A){return A===null?n(A):A===63?(e.consume(A),E):Oe(A)?(i=S,X(A)):(e.consume(A),S)}function E(A){return A===62?U(A):S(A)}function k(A){return Zn(A)?(e.consume(A),x):n(A)}function x(A){return A===45||$n(A)?(e.consume(A),x):C(A)}function C(A){return Oe(A)?(i=C,X(A)):tt(A)?(e.consume(A),C):U(A)}function _(A){return A===45||$n(A)?(e.consume(A),_):A===47||A===62||Et(A)?R(A):n(A)}function R(A){return A===47?(e.consume(A),U):A===58||A===95||Zn(A)?(e.consume(A),T):Oe(A)?(i=R,X(A)):tt(A)?(e.consume(A),R):U(A)}function T(A){return A===45||A===46||A===58||A===95||$n(A)?(e.consume(A),T):L(A)}function L(A){return A===61?(e.consume(A),D):Oe(A)?(i=L,X(A)):tt(A)?(e.consume(A),L):R(A)}function D(A){return A===null||A===60||A===61||A===62||A===96?n(A):A===34||A===39?(e.consume(A),a=A,H):Oe(A)?(i=D,X(A)):tt(A)?(e.consume(A),D):(e.consume(A),z)}function H(A){return A===a?(e.consume(A),a=void 0,M):A===null?n(A):Oe(A)?(i=H,X(A)):(e.consume(A),H)}function z(A){return A===null||A===34||A===39||A===60||A===61||A===96?n(A):A===47||A===62||Et(A)?R(A):(e.consume(A),z)}function M(A){return A===47||A===62||Et(A)?R(A):n(A)}function U(A){return A===62?(e.consume(A),e.exit("htmlTextData"),e.exit("htmlText"),t):n(A)}function X(A){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(A),e.exit("lineEnding"),j}function j(A){return tt(A)?ct(e,O,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(A):O(A)}function O(A){return e.enter("htmlTextData"),i(A)}}const fA={name:"labelEnd",tokenize:yde,resolveTo:bde,resolveAll:hde},pde={tokenize:vde},gde={tokenize:Sde},mde={tokenize:wde};function hde(e){let t=-1;for(;++t=3&&(c===null||Oe(c))?(e.exit("thematicBreak"),t(c)):n(c)}function l(c){return c===a?(e.consume(c),r++,l):(e.exit("thematicBreakSequence"),tt(c)?ct(e,s,"whitespace")(c):s(c))}}const nr={name:"list",tokenize:Nde,continuation:{tokenize:Ide},exit:Dde},Tde={tokenize:Lde,partial:!0},Rde={tokenize:Ode,partial:!0};function Nde(e,t,n){const r=this,a=r.events[r.events.length-1];let o=a&&a[1].type==="linePrefix"?a[2].sliceSerialize(a[1],!0).length:0,i=0;return s;function s(m){const b=r.containerState.type||(m===42||m===43||m===45?"listUnordered":"listOrdered");if(b==="listUnordered"?!r.containerState.marker||m===r.containerState.marker:Ok(m)){if(r.containerState.type||(r.containerState.type=b,e.enter(b,{_container:!0})),b==="listUnordered")return e.enter("listItemPrefix"),m===42||m===45?e.check(Yp,n,c)(m):c(m);if(!r.interrupt||m===49)return e.enter("listItemPrefix"),e.enter("listItemValue"),l(m)}return n(m)}function l(m){return Ok(m)&&++i<10?(e.consume(m),l):(!r.interrupt||i<2)&&(r.containerState.marker?m===r.containerState.marker:m===41||m===46)?(e.exit("listItemValue"),c(m)):n(m)}function c(m){return e.enter("listItemMarker"),e.consume(m),e.exit("listItemMarker"),r.containerState.marker=r.containerState.marker||m,e.check(Ef,r.interrupt?n:u,e.attempt(Tde,g,d))}function u(m){return r.containerState.initialBlankLine=!0,o++,g(m)}function d(m){return tt(m)?(e.enter("listItemPrefixWhitespace"),e.consume(m),e.exit("listItemPrefixWhitespace"),g):n(m)}function g(m){return r.containerState.size=o+r.sliceSerialize(e.exit("listItemPrefix"),!0).length,t(m)}}function Ide(e,t,n){const r=this;return r.containerState._closeFlow=void 0,e.check(Ef,a,o);function a(s){return r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,ct(e,t,"listItemIndent",r.containerState.size+1)(s)}function o(s){return r.containerState.furtherBlankLines||!tt(s)?(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,i(s)):(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,e.attempt(Rde,t,i)(s))}function i(s){return r.containerState._closeFlow=!0,r.interrupt=void 0,ct(e,e.attempt(nr,t,n),"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(s)}}function Ode(e,t,n){const r=this;return ct(e,a,"listItemIndent",r.containerState.size+1);function a(o){const i=r.events[r.events.length-1];return i&&i[1].type==="listItemIndent"&&i[2].sliceSerialize(i[1],!0).length===r.containerState.size?t(o):n(o)}}function Dde(e){e.exit(this.containerState.type)}function Lde(e,t,n){const r=this;return ct(e,a,"listItemPrefixWhitespace",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4+1);function a(o){const i=r.events[r.events.length-1];return!tt(o)&&i&&i[1].type==="listItemPrefixWhitespace"?t(o):n(o)}}const HN={name:"setextUnderline",tokenize:Pde,resolveTo:Mde};function Mde(e,t){let n=e.length,r,a,o;for(;n--;)if(e[n][0]==="enter"){if(e[n][1].type==="content"){r=n;break}e[n][1].type==="paragraph"&&(a=n)}else e[n][1].type==="content"&&e.splice(n,1),!o&&e[n][1].type==="definition"&&(o=n);const i={type:"setextHeading",start:Object.assign({},e[a][1].start),end:Object.assign({},e[e.length-1][1].end)};return e[a][1].type="setextHeadingText",o?(e.splice(a,0,["enter",i,t]),e.splice(o+1,0,["exit",e[r][1],t]),e[r][1].end=Object.assign({},e[o][1].end)):e[r][1]=i,e.push(["exit",i,t]),e}function Pde(e,t,n){const r=this;let a;return o;function o(c){let u=r.events.length,d;for(;u--;)if(r.events[u][1].type!=="lineEnding"&&r.events[u][1].type!=="linePrefix"&&r.events[u][1].type!=="content"){d=r.events[u][1].type==="paragraph";break}return!r.parser.lazy[r.now().line]&&(r.interrupt||d)?(e.enter("setextHeadingLine"),a=c,i(c)):n(c)}function i(c){return e.enter("setextHeadingLineSequence"),s(c)}function s(c){return c===a?(e.consume(c),s):(e.exit("setextHeadingLineSequence"),tt(c)?ct(e,l,"lineSuffix")(c):l(c))}function l(c){return c===null||Oe(c)?(e.exit("setextHeadingLine"),t(c)):n(c)}}const $de={tokenize:qde,partial:!0};function Fde(){return{document:{[91]:{name:"gfmFootnoteDefinition",tokenize:Bde,continuation:{tokenize:Hde},exit:Vde}},text:{[91]:{name:"gfmFootnoteCall",tokenize:Ude},[93]:{name:"gfmPotentialFootnoteCall",add:"after",tokenize:jde,resolveTo:zde}}}}function jde(e,t,n){const r=this;let a=r.events.length;const o=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let i;for(;a--;){const l=r.events[a][1];if(l.type==="labelImage"){i=l;break}if(l.type==="gfmFootnoteCall"||l.type==="labelLink"||l.type==="label"||l.type==="image"||l.type==="link")break}return s;function s(l){if(!i||!i._balanced)return n(l);const c=ma(r.sliceSerialize({start:i.end,end:r.now()}));return c.codePointAt(0)!==94||!o.includes(c.slice(1))?n(l):(e.enter("gfmFootnoteCallLabelMarker"),e.consume(l),e.exit("gfmFootnoteCallLabelMarker"),t(l))}}function zde(e,t){let n=e.length;for(;n--;)if(e[n][1].type==="labelImage"&&e[n][0]==="enter"){e[n][1];break}e[n+1][1].type="data",e[n+3][1].type="gfmFootnoteCallLabelMarker";const r={type:"gfmFootnoteCall",start:Object.assign({},e[n+3][1].start),end:Object.assign({},e[e.length-1][1].end)},a={type:"gfmFootnoteCallMarker",start:Object.assign({},e[n+3][1].end),end:Object.assign({},e[n+3][1].end)};a.end.column++,a.end.offset++,a.end._bufferIndex++;const o={type:"gfmFootnoteCallString",start:Object.assign({},a.end),end:Object.assign({},e[e.length-1][1].start)},i={type:"chunkString",contentType:"string",start:Object.assign({},o.start),end:Object.assign({},o.end)},s=[e[n+1],e[n+2],["enter",r,t],e[n+3],e[n+4],["enter",a,t],["exit",a,t],["enter",o,t],["enter",i,t],["exit",i,t],["exit",o,t],e[e.length-2],e[e.length-1],["exit",r,t]];return e.splice(n,e.length-n+1,...s),e}function Ude(e,t,n){const r=this,a=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let o=0,i;return s;function s(d){return e.enter("gfmFootnoteCall"),e.enter("gfmFootnoteCallLabelMarker"),e.consume(d),e.exit("gfmFootnoteCallLabelMarker"),l}function l(d){return d!==94?n(d):(e.enter("gfmFootnoteCallMarker"),e.consume(d),e.exit("gfmFootnoteCallMarker"),e.enter("gfmFootnoteCallString"),e.enter("chunkString").contentType="string",c)}function c(d){if(o>999||d===93&&!i||d===null||d===91||Et(d))return n(d);if(d===93){e.exit("chunkString");const g=e.exit("gfmFootnoteCallString");return a.includes(ma(r.sliceSerialize(g)))?(e.enter("gfmFootnoteCallLabelMarker"),e.consume(d),e.exit("gfmFootnoteCallLabelMarker"),e.exit("gfmFootnoteCall"),t):n(d)}return Et(d)||(i=!0),o++,e.consume(d),d===92?u:c}function u(d){return d===91||d===92||d===93?(e.consume(d),o++,c):c(d)}}function Bde(e,t,n){const r=this,a=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let o,i=0,s;return l;function l(b){return e.enter("gfmFootnoteDefinition")._container=!0,e.enter("gfmFootnoteDefinitionLabel"),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(b),e.exit("gfmFootnoteDefinitionLabelMarker"),c}function c(b){return b===94?(e.enter("gfmFootnoteDefinitionMarker"),e.consume(b),e.exit("gfmFootnoteDefinitionMarker"),e.enter("gfmFootnoteDefinitionLabelString"),e.enter("chunkString").contentType="string",u):n(b)}function u(b){if(i>999||b===93&&!s||b===null||b===91||Et(b))return n(b);if(b===93){e.exit("chunkString");const y=e.exit("gfmFootnoteDefinitionLabelString");return o=ma(r.sliceSerialize(y)),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(b),e.exit("gfmFootnoteDefinitionLabelMarker"),e.exit("gfmFootnoteDefinitionLabel"),g}return Et(b)||(s=!0),i++,e.consume(b),b===92?d:u}function d(b){return b===91||b===92||b===93?(e.consume(b),i++,u):u(b)}function g(b){return b===58?(e.enter("definitionMarker"),e.consume(b),e.exit("definitionMarker"),a.includes(o)||a.push(o),ct(e,m,"gfmFootnoteDefinitionWhitespace")):n(b)}function m(b){return t(b)}}function Hde(e,t,n){return e.check(Ef,t,e.attempt($de,t,n))}function Vde(e){e.exit("gfmFootnoteDefinition")}function qde(e,t,n){const r=this;return ct(e,a,"gfmFootnoteDefinitionIndent",4+1);function a(o){const i=r.events[r.events.length-1];return i&&i[1].type==="gfmFootnoteDefinitionIndent"&&i[2].sliceSerialize(i[1],!0).length===4?t(o):n(o)}}function Gde(e){let n=(e||{}).singleTilde;const r={name:"strikethrough",tokenize:o,resolveAll:a};return n==null&&(n=!0),{text:{[126]:r},insideSpan:{null:[r]},attentionMarkers:{null:[126]}};function a(i,s){let l=-1;for(;++l1?l(b):(i.consume(b),d++,m);if(d<2&&!n)return l(b);const w=i.exit("strikethroughSequenceTemporary"),v=rm(b);return w._open=!v||v===2&&!!y,w._close=!y||y===2&&!!v,s(b)}}}class Wde{constructor(){this.map=[]}add(t,n,r){Kde(this,t,n,r)}consume(t){if(this.map.sort(function(o,i){return o[0]-i[0]}),this.map.length===0)return;let n=this.map.length;const r=[];for(;n>0;)n-=1,r.push(t.slice(this.map[n][0]+this.map[n][1]),this.map[n][2]),t.length=this.map[n][0];r.push([...t]),t.length=0;let a=r.pop();for(;a;)t.push(...a),a=r.pop();this.map.length=0}}function Kde(e,t,n,r){let a=0;if(!(n===0&&r.length===0)){for(;a-1;){const z=r.events[L][1].type;if(z==="lineEnding"||z==="linePrefix")L--;else break}const D=L>-1?r.events[L][1].type:null,H=D==="tableHead"||D==="tableRow"?x:l;return H===x&&r.parser.lazy[r.now().line]?n(T):H(T)}function l(T){return e.enter("tableHead"),e.enter("tableRow"),c(T)}function c(T){return T===124||(i=!0,o+=1),u(T)}function u(T){return T===null?n(T):Oe(T)?o>1?(o=0,r.interrupt=!0,e.exit("tableRow"),e.enter("lineEnding"),e.consume(T),e.exit("lineEnding"),m):n(T):tt(T)?ct(e,u,"whitespace")(T):(o+=1,i&&(i=!1,a+=1),T===124?(e.enter("tableCellDivider"),e.consume(T),e.exit("tableCellDivider"),i=!0,u):(e.enter("data"),d(T)))}function d(T){return T===null||T===124||Et(T)?(e.exit("data"),u(T)):(e.consume(T),T===92?g:d)}function g(T){return T===92||T===124?(e.consume(T),d):d(T)}function m(T){return r.interrupt=!1,r.parser.lazy[r.now().line]?n(T):(e.enter("tableDelimiterRow"),i=!1,tt(T)?ct(e,b,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(T):b(T))}function b(T){return T===45||T===58?w(T):T===124?(i=!0,e.enter("tableCellDivider"),e.consume(T),e.exit("tableCellDivider"),y):k(T)}function y(T){return tt(T)?ct(e,w,"whitespace")(T):w(T)}function w(T){return T===58?(o+=1,i=!0,e.enter("tableDelimiterMarker"),e.consume(T),e.exit("tableDelimiterMarker"),v):T===45?(o+=1,v(T)):T===null||Oe(T)?E(T):k(T)}function v(T){return T===45?(e.enter("tableDelimiterFiller"),h(T)):k(T)}function h(T){return T===45?(e.consume(T),h):T===58?(i=!0,e.exit("tableDelimiterFiller"),e.enter("tableDelimiterMarker"),e.consume(T),e.exit("tableDelimiterMarker"),S):(e.exit("tableDelimiterFiller"),S(T))}function S(T){return tt(T)?ct(e,E,"whitespace")(T):E(T)}function E(T){return T===124?b(T):T===null||Oe(T)?!i||a!==o?k(T):(e.exit("tableDelimiterRow"),e.exit("tableHead"),t(T)):k(T)}function k(T){return n(T)}function x(T){return e.enter("tableRow"),C(T)}function C(T){return T===124?(e.enter("tableCellDivider"),e.consume(T),e.exit("tableCellDivider"),C):T===null||Oe(T)?(e.exit("tableRow"),t(T)):tt(T)?ct(e,C,"whitespace")(T):(e.enter("data"),_(T))}function _(T){return T===null||T===124||Et(T)?(e.exit("data"),C(T)):(e.consume(T),T===92?R:_)}function R(T){return T===92||T===124?(e.consume(T),_):_(T)}}function Qde(e,t){let n=-1,r=!0,a=0,o=[0,0,0,0],i=[0,0,0,0],s=!1,l=0,c,u,d;const g=new Wde;for(;++nn[2]+1){const b=n[2]+1,y=n[3]-n[2]-1;e.add(b,y,[])}}e.add(n[3]+1,0,[["exit",d,t]])}return a!==void 0&&(o.end=Object.assign({},pl(t.events,a)),e.add(a,0,[["exit",o,t]]),o=void 0),o}function VN(e,t,n,r,a){const o=[],i=pl(t.events,n);a&&(a.end=Object.assign({},i),o.push(["exit",a,t])),r.end=Object.assign({},i),o.push(["exit",r,t]),e.add(n+1,0,o)}function pl(e,t){const n=e[t],r=n[0]==="enter"?"start":"end";return n[1][r]}const Jde={name:"tasklistCheck",tokenize:tfe};function efe(){return{text:{[91]:Jde}}}function tfe(e,t,n){const r=this;return a;function a(l){return r.previous!==null||!r._gfmTasklistFirstContentOfListItem?n(l):(e.enter("taskListCheck"),e.enter("taskListCheckMarker"),e.consume(l),e.exit("taskListCheckMarker"),o)}function o(l){return Et(l)?(e.enter("taskListCheckValueUnchecked"),e.consume(l),e.exit("taskListCheckValueUnchecked"),i):l===88||l===120?(e.enter("taskListCheckValueChecked"),e.consume(l),e.exit("taskListCheckValueChecked"),i):n(l)}function i(l){return l===93?(e.enter("taskListCheckMarker"),e.consume(l),e.exit("taskListCheckMarker"),e.exit("taskListCheck"),s):n(l)}function s(l){return Oe(l)?t(l):tt(l)?e.check({tokenize:nfe},t,n)(l):n(l)}}function nfe(e,t,n){return ct(e,r,"whitespace");function r(a){return a===null?n(a):t(a)}}function rfe(e){return mj([pue(),Fde(),Gde(e),Zde(),efe()])}const afe={};function ofe(e){const t=this,n=e||afe,r=t.data(),a=r.micromarkExtensions||(r.micromarkExtensions=[]),o=r.fromMarkdownExtensions||(r.fromMarkdownExtensions=[]),i=r.toMarkdownExtensions||(r.toMarkdownExtensions=[]);a.push(rfe(n)),o.push(sue()),i.push(lue(n))}function ife(e,t){if(e==null)return{};var n={},r=Object.keys(e),a,o;for(o=0;o=0)&&(n[a]=e[a]);return n}function sfe(e,t){if(e==null)return{};var n=ife(e,t),r,a;if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function lfe(e){if(Array.isArray(e))return sk(e)}function cfe(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function ufe(){throw new TypeError(`Invalid attempt to spread non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function dfe(e){return lfe(e)||cfe(e)||hre(e)||ufe()}function qN(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),n.push.apply(n,r)}return n}function Il(e){for(var t=1;t=4)return[e[0],e[1],e[2],e[3],"".concat(e[0],".").concat(e[1]),"".concat(e[0],".").concat(e[2]),"".concat(e[0],".").concat(e[3]),"".concat(e[1],".").concat(e[0]),"".concat(e[1],".").concat(e[2]),"".concat(e[1],".").concat(e[3]),"".concat(e[2],".").concat(e[0]),"".concat(e[2],".").concat(e[1]),"".concat(e[2],".").concat(e[3]),"".concat(e[3],".").concat(e[0]),"".concat(e[3],".").concat(e[1]),"".concat(e[3],".").concat(e[2]),"".concat(e[0],".").concat(e[1],".").concat(e[2]),"".concat(e[0],".").concat(e[1],".").concat(e[3]),"".concat(e[0],".").concat(e[2],".").concat(e[1]),"".concat(e[0],".").concat(e[2],".").concat(e[3]),"".concat(e[0],".").concat(e[3],".").concat(e[1]),"".concat(e[0],".").concat(e[3],".").concat(e[2]),"".concat(e[1],".").concat(e[0],".").concat(e[2]),"".concat(e[1],".").concat(e[0],".").concat(e[3]),"".concat(e[1],".").concat(e[2],".").concat(e[0]),"".concat(e[1],".").concat(e[2],".").concat(e[3]),"".concat(e[1],".").concat(e[3],".").concat(e[0]),"".concat(e[1],".").concat(e[3],".").concat(e[2]),"".concat(e[2],".").concat(e[0],".").concat(e[1]),"".concat(e[2],".").concat(e[0],".").concat(e[3]),"".concat(e[2],".").concat(e[1],".").concat(e[0]),"".concat(e[2],".").concat(e[1],".").concat(e[3]),"".concat(e[2],".").concat(e[3],".").concat(e[0]),"".concat(e[2],".").concat(e[3],".").concat(e[1]),"".concat(e[3],".").concat(e[0],".").concat(e[1]),"".concat(e[3],".").concat(e[0],".").concat(e[2]),"".concat(e[3],".").concat(e[1],".").concat(e[0]),"".concat(e[3],".").concat(e[1],".").concat(e[2]),"".concat(e[3],".").concat(e[2],".").concat(e[0]),"".concat(e[3],".").concat(e[2],".").concat(e[1]),"".concat(e[0],".").concat(e[1],".").concat(e[2],".").concat(e[3]),"".concat(e[0],".").concat(e[1],".").concat(e[3],".").concat(e[2]),"".concat(e[0],".").concat(e[2],".").concat(e[1],".").concat(e[3]),"".concat(e[0],".").concat(e[2],".").concat(e[3],".").concat(e[1]),"".concat(e[0],".").concat(e[3],".").concat(e[1],".").concat(e[2]),"".concat(e[0],".").concat(e[3],".").concat(e[2],".").concat(e[1]),"".concat(e[1],".").concat(e[0],".").concat(e[2],".").concat(e[3]),"".concat(e[1],".").concat(e[0],".").concat(e[3],".").concat(e[2]),"".concat(e[1],".").concat(e[2],".").concat(e[0],".").concat(e[3]),"".concat(e[1],".").concat(e[2],".").concat(e[3],".").concat(e[0]),"".concat(e[1],".").concat(e[3],".").concat(e[0],".").concat(e[2]),"".concat(e[1],".").concat(e[3],".").concat(e[2],".").concat(e[0]),"".concat(e[2],".").concat(e[0],".").concat(e[1],".").concat(e[3]),"".concat(e[2],".").concat(e[0],".").concat(e[3],".").concat(e[1]),"".concat(e[2],".").concat(e[1],".").concat(e[0],".").concat(e[3]),"".concat(e[2],".").concat(e[1],".").concat(e[3],".").concat(e[0]),"".concat(e[2],".").concat(e[3],".").concat(e[0],".").concat(e[1]),"".concat(e[2],".").concat(e[3],".").concat(e[1],".").concat(e[0]),"".concat(e[3],".").concat(e[0],".").concat(e[1],".").concat(e[2]),"".concat(e[3],".").concat(e[0],".").concat(e[2],".").concat(e[1]),"".concat(e[3],".").concat(e[1],".").concat(e[0],".").concat(e[2]),"".concat(e[3],".").concat(e[1],".").concat(e[2],".").concat(e[0]),"".concat(e[3],".").concat(e[2],".").concat(e[0],".").concat(e[1]),"".concat(e[3],".").concat(e[2],".").concat(e[1],".").concat(e[0])]}var wy={};function pfe(e){if(e.length===0||e.length===1)return e;var t=e.join(".");return wy[t]||(wy[t]=ffe(e)),wy[t]}function gfe(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0,r=e.filter(function(o){return o!=="token"}),a=pfe(r);return a.reduce(function(o,i){return Il(Il({},o),n[i])},t)}function GN(e){return e.join(" ")}function mfe(e,t){var n=0;return function(r){return n+=1,r.map(function(a,o){return Ij({node:a,stylesheet:e,useInlineStyles:t,key:"code-segment-".concat(n,"-").concat(o)})})}}function Ij(e){var t=e.node,n=e.stylesheet,r=e.style,a=r===void 0?{}:r,o=e.useInlineStyles,i=e.key,s=t.properties,l=t.type,c=t.tagName,u=t.value;if(l==="text")return u;if(c){var d=mfe(n,o),g;if(!o)g=Il(Il({},s),{},{className:GN(s.className)});else{var m=Object.keys(n).reduce(function(v,h){return h.split(".").forEach(function(S){v.includes(S)||v.push(S)}),v},[]),b=s.className&&s.className.includes("token")?["token"]:[],y=s.className&&b.concat(s.className.filter(function(v){return!m.includes(v)}));g=Il(Il({},s),{},{className:GN(y)||void 0,style:gfe(s.className,Object.assign({},s.style,a),n)})}var w=d(t.children);return Ae.createElement(c,W({key:i},g),w)}}const hfe=function(e,t){var n=e.listLanguages();return n.indexOf(t)!==-1};var bfe=["language","children","style","customStyle","codeTagProps","useInlineStyles","showLineNumbers","showInlineLineNumbers","startingLineNumber","lineNumberContainerStyle","lineNumberStyle","wrapLines","wrapLongLines","lineProps","renderer","PreTag","CodeTag","code","astGenerator"];function WN(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),n.push.apply(n,r)}return n}function Ra(e){for(var t=1;t1&&arguments[1]!==void 0?arguments[1]:[],n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[],r=0;r2&&arguments[2]!==void 0?arguments[2]:[];return Zp({children:k,lineNumber:x,lineNumberStyle:s,largestLineNumber:i,showInlineLineNumbers:a,lineProps:n,className:C,showLineNumbers:r,wrapLongLines:l})}function y(k,x){if(r&&x&&a){var C=Dj(s,x,i);k.unshift(Oj(x,C))}return k}function w(k,x){var C=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[];return t||C.length>0?b(k,x,C):y(k,x)}for(var v=function(){var x=u[m],C=x.children[0].value,_=vfe(C);if(_){var R=C.split(` -`);R.forEach(function(T,L){var D=r&&d.length+o,H={type:"text",value:"".concat(T,` -`)};if(L===0){var z=u.slice(g+1,m).concat(Zp({children:[H],className:x.properties.className})),M=w(z,D);d.push(M)}else if(L===R.length-1){var U=u[m+1]&&u[m+1].children&&u[m+1].children[0],X={type:"text",value:"".concat(T)};if(U){var j=Zp({children:[X],className:x.properties.className});u.splice(m+1,0,j)}else{var O=[X],A=w(O,D,x.properties.className);d.push(A)}}else{var V=[H],P=w(V,D,x.properties.className);d.push(P)}}),g=m}m++};m4&&n.slice(0,4)===bA&&bpe.test(t)&&(t.charAt(4)==="-"?r=Spe(t):t=wpe(t),a=gpe),new a(r,t))}function Spe(e){var t=e.slice(5).replace(Vj,xpe);return bA+t.charAt(0).toUpperCase()+t.slice(1)}function wpe(e){var t=e.slice(4);return Vj.test(t)?e:(t=t.replace(ype,Epe),t.charAt(0)!=="-"&&(t="-"+t),bA+t)}function Epe(e){return"-"+e.toLowerCase()}function xpe(e){return e.charAt(1).toUpperCase()}var kpe=Cpe,QN=/[#.]/g;function Cpe(e,t){for(var n=e||"",r=t||"div",a={},o=0,i,s,l;o=48&&t<=57}var Wme=Kme;function Kme(e){var t=typeof e=="string"?e.charCodeAt(0):e;return t>=97&&t<=102||t>=65&&t<=70||t>=48&&t<=57}var Yme=Zme;function Zme(e){var t=typeof e=="string"?e.charCodeAt(0):e;return t>=97&&t<=122||t>=65&&t<=90}var Xme=Yme,Qme=Wj,Jme=ehe;function ehe(e){return Xme(e)||Qme(e)}var gp,the=59,nhe=rhe;function rhe(e){var t="&"+e+";",n;return gp=gp||document.createElement("i"),gp.innerHTML=t,n=gp.textContent,n.charCodeAt(n.length-1)===the&&e!=="semi"||n===t?!1:n}var oI=Vme,iI=qme,ahe=Wj,ohe=Wme,Kj=Jme,ihe=nhe,she=She,lhe={}.hasOwnProperty,ol=String.fromCharCode,che=Function.prototype,sI={warning:null,reference:null,text:null,warningContext:null,referenceContext:null,textContext:null,position:{},additional:null,attribute:!1,nonTerminated:!0},uhe=9,lI=10,dhe=12,fhe=32,cI=38,phe=59,ghe=60,mhe=61,hhe=35,bhe=88,yhe=120,vhe=65533,gl="named",SA="hexadecimal",wA="decimal",EA={};EA[SA]=16;EA[wA]=10;var _h={};_h[gl]=Kj;_h[wA]=ahe;_h[SA]=ohe;var Yj=1,Zj=2,Xj=3,Qj=4,Jj=5,Pk=6,ez=7,Fi={};Fi[Yj]="Named character references must be terminated by a semicolon";Fi[Zj]="Numeric character references must be terminated by a semicolon";Fi[Xj]="Named character references cannot be empty";Fi[Qj]="Numeric character references cannot be empty";Fi[Jj]="Named character references must be known";Fi[Pk]="Numeric character references cannot be disallowed";Fi[ez]="Numeric character references cannot be outside the permissible Unicode range";function She(e,t){var n={},r,a;t||(t={});for(a in sI)r=t[a],n[a]=r??sI[a];return(n.position.indent||n.position.start)&&(n.indent=n.position.indent||[],n.position=n.position.start),whe(e,n)}function whe(e,t){var n=t.additional,r=t.nonTerminated,a=t.text,o=t.reference,i=t.warning,s=t.textContext,l=t.referenceContext,c=t.warningContext,u=t.position,d=t.indent||[],g=e.length,m=0,b=-1,y=u.column||1,w=u.line||1,v="",h=[],S,E,k,x,C,_,R,T,L,D,H,z,M,U,X,j,O,A,V;for(typeof n=="string"&&(n=n.charCodeAt(0)),j=P(),T=i?N:che,m--,g++;++m65535&&(_-=65536,D+=ol(_>>>10|55296),_=56320|_&1023),_=D+ol(_))):U!==gl&&T(Qj,A)),_?(K(),j=P(),m=V-1,y+=V-M+1,h.push(_),O=P(),O.offset++,o&&o.call(l,_,{start:j,end:O},e.slice(M-1,V)),j=O):(x=e.slice(M-1,V),v+=x,y+=x.length,m=V-1)}else C===10&&(w++,b++,y=0),C===C?(v+=ol(C),y++):K();return h.join("");function P(){return{line:w,column:y,offset:m+(u.offset||0)}}function N(ae,ne){var Q=P();Q.column+=ne,Q.offset+=ne,i.call(c,Fi[ae],Q,ae)}function K(){v&&(h.push(v),a&&a.call(s,v,{start:j,end:P()}),v="")}}function Ehe(e){return e>=55296&&e<=57343||e>1114111}function xhe(e){return e>=1&&e<=8||e===11||e>=13&&e<=31||e>=127&&e<=159||e>=64976&&e<=65007||(e&65535)===65535||(e&65535)===65534}var tz={exports:{}};(function(e){var t=typeof window<"u"?window:typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope?self:{};/** - * Prism: Lightweight, robust, elegant syntax highlighting - * - * @license MIT - * @author Lea Verou - * @namespace - * @public - */var n=function(r){var a=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,o=0,i={},s={manual:r.Prism&&r.Prism.manual,disableWorkerMessageHandler:r.Prism&&r.Prism.disableWorkerMessageHandler,util:{encode:function h(S){return S instanceof l?new l(S.type,h(S.content),S.alias):Array.isArray(S)?S.map(h):S.replace(/&/g,"&").replace(/"u")return null;if("currentScript"in document&&1<2)return document.currentScript;try{throw new Error}catch(k){var h=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(k.stack)||[])[1];if(h){var S=document.getElementsByTagName("script");for(var E in S)if(S[E].src==h)return S[E]}return null}},isActive:function(h,S,E){for(var k="no-"+S;h;){var x=h.classList;if(x.contains(S))return!0;if(x.contains(k))return!1;h=h.parentElement}return!!E}},languages:{plain:i,plaintext:i,text:i,txt:i,extend:function(h,S){var E=s.util.clone(s.languages[h]);for(var k in S)E[k]=S[k];return E},insertBefore:function(h,S,E,k){k=k||s.languages;var x=k[h],C={};for(var _ in x)if(x.hasOwnProperty(_)){if(_==S)for(var R in E)E.hasOwnProperty(R)&&(C[R]=E[R]);E.hasOwnProperty(_)||(C[_]=x[_])}var T=k[h];return k[h]=C,s.languages.DFS(s.languages,function(L,D){D===T&&L!=h&&(this[L]=C)}),C},DFS:function h(S,E,k,x){x=x||{};var C=s.util.objId;for(var _ in S)if(S.hasOwnProperty(_)){E.call(S,_,S[_],k||_);var R=S[_],T=s.util.type(R);T==="Object"&&!x[C(R)]?(x[C(R)]=!0,h(R,E,null,x)):T==="Array"&&!x[C(R)]&&(x[C(R)]=!0,h(R,E,_,x))}}},plugins:{},highlightAll:function(h,S){s.highlightAllUnder(document,h,S)},highlightAllUnder:function(h,S,E){var k={callback:E,container:h,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};s.hooks.run("before-highlightall",k),k.elements=Array.prototype.slice.apply(k.container.querySelectorAll(k.selector)),s.hooks.run("before-all-elements-highlight",k);for(var x=0,C;C=k.elements[x++];)s.highlightElement(C,S===!0,k.callback)},highlightElement:function(h,S,E){var k=s.util.getLanguage(h),x=s.languages[k];s.util.setLanguage(h,k);var C=h.parentElement;C&&C.nodeName.toLowerCase()==="pre"&&s.util.setLanguage(C,k);var _=h.textContent,R={element:h,language:k,grammar:x,code:_};function T(D){R.highlightedCode=D,s.hooks.run("before-insert",R),R.element.innerHTML=R.highlightedCode,s.hooks.run("after-highlight",R),s.hooks.run("complete",R),E&&E.call(R.element)}if(s.hooks.run("before-sanity-check",R),C=R.element.parentElement,C&&C.nodeName.toLowerCase()==="pre"&&!C.hasAttribute("tabindex")&&C.setAttribute("tabindex","0"),!R.code){s.hooks.run("complete",R),E&&E.call(R.element);return}if(s.hooks.run("before-highlight",R),!R.grammar){T(s.util.encode(R.code));return}if(S&&r.Worker){var L=new Worker(s.filename);L.onmessage=function(D){T(D.data)},L.postMessage(JSON.stringify({language:R.language,code:R.code,immediateClose:!0}))}else T(s.highlight(R.code,R.grammar,R.language))},highlight:function(h,S,E){var k={code:h,grammar:S,language:E};if(s.hooks.run("before-tokenize",k),!k.grammar)throw new Error('The language "'+k.language+'" has no grammar.');return k.tokens=s.tokenize(k.code,k.grammar),s.hooks.run("after-tokenize",k),l.stringify(s.util.encode(k.tokens),k.language)},tokenize:function(h,S){var E=S.rest;if(E){for(var k in E)S[k]=E[k];delete S.rest}var x=new d;return g(x,x.head,h),u(h,x,S,x.head,0),b(x)},hooks:{all:{},add:function(h,S){var E=s.hooks.all;E[h]=E[h]||[],E[h].push(S)},run:function(h,S){var E=s.hooks.all[h];if(!(!E||!E.length))for(var k=0,x;x=E[k++];)x(S)}},Token:l};r.Prism=s;function l(h,S,E,k){this.type=h,this.content=S,this.alias=E,this.length=(k||"").length|0}l.stringify=function h(S,E){if(typeof S=="string")return S;if(Array.isArray(S)){var k="";return S.forEach(function(T){k+=h(T,E)}),k}var x={type:S.type,content:h(S.content,E),tag:"span",classes:["token",S.type],attributes:{},language:E},C=S.alias;C&&(Array.isArray(C)?Array.prototype.push.apply(x.classes,C):x.classes.push(C)),s.hooks.run("wrap",x);var _="";for(var R in x.attributes)_+=" "+R+'="'+(x.attributes[R]||"").replace(/"/g,""")+'"';return"<"+x.tag+' class="'+x.classes.join(" ")+'"'+_+">"+x.content+""};function c(h,S,E,k){h.lastIndex=S;var x=h.exec(E);if(x&&k&&x[1]){var C=x[1].length;x.index+=C,x[0]=x[0].slice(C)}return x}function u(h,S,E,k,x,C){for(var _ in E)if(!(!E.hasOwnProperty(_)||!E[_])){var R=E[_];R=Array.isArray(R)?R:[R];for(var T=0;T=C.reach);O+=j.value.length,j=j.next){var A=j.value;if(S.length>h.length)return;if(!(A instanceof l)){var V=1,P;if(z){if(P=c(X,O,h,H),!P||P.index>=h.length)break;var ne=P.index,N=P.index+P[0].length,K=O;for(K+=j.value.length;ne>=K;)j=j.next,K+=j.value.length;if(K-=j.value.length,O=K,j.value instanceof l)continue;for(var ae=j;ae!==S.tail&&(KC.reach&&(C.reach=re);var Ee=j.prev;pe&&(Ee=g(S,Ee,pe),O+=pe.length),m(S,Ee,V);var ke=new l(_,D?s.tokenize(Q,D):Q,M,Q);if(j=g(S,Ee,ke),he&&g(S,j,he),V>1){var We={cause:_+","+T,reach:re};u(h,S,E,j.prev,O,We),C&&We.reach>C.reach&&(C.reach=We.reach)}}}}}}function d(){var h={value:null,prev:null,next:null},S={value:null,prev:h,next:null};h.next=S,this.head=h,this.tail=S,this.length=0}function g(h,S,E){var k=S.next,x={value:E,prev:S,next:k};return S.next=x,k.prev=x,h.length++,x}function m(h,S,E){for(var k=S.next,x=0;x/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},e.languages.markup.tag.inside["attr-value"].inside.entity=e.languages.markup.entity,e.languages.markup.doctype.inside["internal-subset"].inside=e.languages.markup,e.hooks.add("wrap",function(t){t.type==="entity"&&(t.attributes.title=t.content.value.replace(/&/,"&"))}),Object.defineProperty(e.languages.markup.tag,"addInlined",{value:function(n,r){var a={};a["language-"+r]={pattern:/(^$)/i,lookbehind:!0,inside:e.languages[r]},a.cdata=/^$/i;var o={"included-cdata":{pattern://i,inside:a}};o["language-"+r]={pattern:/[\s\S]+/,inside:e.languages[r]};var i={};i[n]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,function(){return n}),"i"),lookbehind:!0,greedy:!0,inside:o},e.languages.insertBefore("markup","cdata",i)}}),Object.defineProperty(e.languages.markup.tag,"addAttribute",{value:function(t,n){e.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+t+")"+/\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:[n,"language-"+n],inside:e.languages[n]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),e.languages.html=e.languages.markup,e.languages.mathml=e.languages.markup,e.languages.svg=e.languages.markup,e.languages.xml=e.languages.extend("markup",{}),e.languages.ssml=e.languages.xml,e.languages.atom=e.languages.xml,e.languages.rss=e.languages.xml}var _he=kA;kA.displayName="css";kA.aliases=[];function kA(e){(function(t){var n=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;t.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+n.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+n.source+"$"),alias:"url"}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+n.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:n,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:/[(){};:,]/},t.languages.css.atrule.inside.rest=t.languages.css;var r=t.languages.markup;r&&(r.tag.addInlined("style","css"),r.tag.addAttribute("style","css"))})(e)}var Ahe=CA;CA.displayName="clike";CA.aliases=[];function CA(e){e.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:/[{}[\];(),.:]/}}var The=_A;_A.displayName="javascript";_A.aliases=["js"];function _A(e){e.languages.javascript=e.languages.extend("clike",{"class-name":[e.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}|\?\?=?|\?\.?|[~:]/}),e.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,e.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:e.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:e.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:e.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:e.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:e.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),e.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:e.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"}}),e.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),e.languages.markup&&(e.languages.markup.tag.addInlined("script","javascript"),e.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")),e.languages.js=e.languages.javascript}var Tu=typeof globalThis=="object"?globalThis:typeof self=="object"?self:typeof window=="object"?window:typeof nn=="object"?nn:{},Rhe=qhe();Tu.Prism={manual:!0,disableWorkerMessageHandler:!0};var Nhe=qpe,Ihe=she,nz=khe,Ohe=Che,Dhe=_he,Lhe=Ahe,Mhe=The;Rhe();var AA={}.hasOwnProperty;function rz(){}rz.prototype=nz;var tn=new rz,Phe=tn;tn.highlight=Fhe;tn.register=kf;tn.alias=$he;tn.registered=jhe;tn.listLanguages=zhe;kf(Ohe);kf(Dhe);kf(Lhe);kf(Mhe);tn.util.encode=Hhe;tn.Token.stringify=Uhe;function kf(e){if(typeof e!="function"||!e.displayName)throw new Error("Expected `function` for `grammar`, got `"+e+"`");tn.languages[e.displayName]===void 0&&e(tn)}function $he(e,t){var n=tn.languages,r=e,a,o,i,s;t&&(r={},r[e]=t);for(a in r)for(o=r[a],o=typeof o=="string"?[o]:o,i=o.length,s=-1;++s code[class*="language-"]':{background:"#f5f2f0",padding:".1em",borderRadius:".3em",whiteSpace:"normal"},comment:{color:"slategray"},prolog:{color:"slategray"},doctype:{color:"slategray"},cdata:{color:"slategray"},punctuation:{color:"#999"},namespace:{Opacity:".7"},property:{color:"#905"},tag:{color:"#905"},boolean:{color:"#905"},number:{color:"#905"},constant:{color:"#905"},symbol:{color:"#905"},deleted:{color:"#905"},selector:{color:"#690"},"attr-name":{color:"#690"},string:{color:"#690"},char:{color:"#690"},builtin:{color:"#690"},inserted:{color:"#690"},operator:{color:"#9a6e3a",background:"hsla(0, 0%, 100%, .5)"},entity:{color:"#9a6e3a",background:"hsla(0, 0%, 100%, .5)",cursor:"help"},url:{color:"#9a6e3a",background:"hsla(0, 0%, 100%, .5)"},".language-css .token.string":{color:"#9a6e3a",background:"hsla(0, 0%, 100%, .5)"},".style .token.string":{color:"#9a6e3a",background:"hsla(0, 0%, 100%, .5)"},atrule:{color:"#07a"},"attr-value":{color:"#07a"},keyword:{color:"#07a"},function:{color:"#DD4A68"},"class-name":{color:"#DD4A68"},regex:{color:"#e90"},important:{color:"#e90",fontWeight:"bold"},variable:{color:"#e90"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"}};var Ey,uI;function Whe(){if(uI)return Ey;uI=1,Ey=e,e.displayName="abap",e.aliases=[];function e(t){t.languages.abap={comment:/^\*.*/m,string:/(`|')(?:\\.|(?!\1)[^\\\r\n])*\1/,"string-template":{pattern:/([|}])(?:\\.|[^\\|{\r\n])*(?=[|{])/,lookbehind:!0,alias:"string"},"eol-comment":{pattern:/(^|\s)".*/m,lookbehind:!0,alias:"comment"},keyword:{pattern:/(\s|\.|^)(?:SCIENTIFIC_WITH_LEADING_ZERO|SCALE_PRESERVING_SCIENTIFIC|RMC_COMMUNICATION_FAILURE|END-ENHANCEMENT-SECTION|MULTIPLY-CORRESPONDING|SUBTRACT-CORRESPONDING|VERIFICATION-MESSAGE|DIVIDE-CORRESPONDING|ENHANCEMENT-SECTION|CURRENCY_CONVERSION|RMC_SYSTEM_FAILURE|START-OF-SELECTION|MOVE-CORRESPONDING|RMC_INVALID_STATUS|CUSTOMER-FUNCTION|END-OF-DEFINITION|ENHANCEMENT-POINT|SYSTEM-EXCEPTIONS|ADD-CORRESPONDING|SCALE_PRESERVING|SELECTION-SCREEN|CURSOR-SELECTION|END-OF-SELECTION|LOAD-OF-PROGRAM|SCROLL-BOUNDARY|SELECTION-TABLE|EXCEPTION-TABLE|IMPLEMENTATIONS|PARAMETER-TABLE|RIGHT-JUSTIFIED|UNIT_CONVERSION|AUTHORITY-CHECK|LIST-PROCESSING|SIGN_AS_POSTFIX|COL_BACKGROUND|IMPLEMENTATION|INTERFACE-POOL|TRANSFORMATION|IDENTIFICATION|ENDENHANCEMENT|LINE-SELECTION|INITIALIZATION|LEFT-JUSTIFIED|SELECT-OPTIONS|SELECTION-SETS|COMMUNICATION|CORRESPONDING|DECIMAL_SHIFT|PRINT-CONTROL|VALUE-REQUEST|CHAIN-REQUEST|FUNCTION-POOL|FIELD-SYMBOLS|FUNCTIONALITY|INVERTED-DATE|SELECTION-SET|CLASS-METHODS|OUTPUT-LENGTH|CLASS-CODING|COL_NEGATIVE|ERRORMESSAGE|FIELD-GROUPS|HELP-REQUEST|NO-EXTENSION|NO-TOPOFPAGE|REDEFINITION|DISPLAY-MODE|ENDINTERFACE|EXIT-COMMAND|FIELD-SYMBOL|NO-SCROLLING|SHORTDUMP-ID|ACCESSPOLICY|CLASS-EVENTS|COL_POSITIVE|DECLARATIONS|ENHANCEMENTS|FILTER-TABLE|SWITCHSTATES|SYNTAX-CHECK|TRANSPORTING|ASYNCHRONOUS|SYNTAX-TRACE|TOKENIZATION|USER-COMMAND|WITH-HEADING|ABAP-SOURCE|BREAK-POINT|CHAIN-INPUT|COMPRESSION|FIXED-POINT|NEW-SECTION|NON-UNICODE|OCCURRENCES|RESPONSIBLE|SYSTEM-CALL|TRACE-TABLE|ABBREVIATED|CHAR-TO-HEX|END-OF-FILE|ENDFUNCTION|ENVIRONMENT|ASSOCIATION|COL_HEADING|EDITOR-CALL|END-OF-PAGE|ENGINEERING|IMPLEMENTED|INTENSIFIED|RADIOBUTTON|SYSTEM-EXIT|TOP-OF-PAGE|TRANSACTION|APPLICATION|CONCATENATE|DESTINATION|ENHANCEMENT|IMMEDIATELY|NO-GROUPING|PRECOMPILED|REPLACEMENT|TITLE-LINES|ACTIVATION|BYTE-ORDER|CLASS-POOL|CONNECTION|CONVERSION|DEFINITION|DEPARTMENT|EXPIRATION|INHERITING|MESSAGE-ID|NO-HEADING|PERFORMING|QUEUE-ONLY|RIGHTSPACE|SCIENTIFIC|STATUSINFO|STRUCTURES|SYNCPOINTS|WITH-TITLE|ATTRIBUTES|BOUNDARIES|CLASS-DATA|COL_NORMAL|DD\/MM\/YYYY|DESCENDING|INTERFACES|LINE-COUNT|MM\/DD\/YYYY|NON-UNIQUE|PRESERVING|SELECTIONS|STATEMENTS|SUBROUTINE|TRUNCATION|TYPE-POOLS|ARITHMETIC|BACKGROUND|ENDPROVIDE|EXCEPTIONS|IDENTIFIER|INDEX-LINE|OBLIGATORY|PARAMETERS|PERCENTAGE|PUSHBUTTON|RESOLUTION|COMPONENTS|DEALLOCATE|DISCONNECT|DUPLICATES|FIRST-LINE|HEAD-LINES|NO-DISPLAY|OCCURRENCE|RESPECTING|RETURNCODE|SUBMATCHES|TRACE-FILE|ASCENDING|BYPASSING|ENDMODULE|EXCEPTION|EXCLUDING|EXPORTING|INCREMENT|MATCHCODE|PARAMETER|PARTIALLY|PREFERRED|REFERENCE|REPLACING|RETURNING|SELECTION|SEPARATED|SPECIFIED|STATEMENT|TIMESTAMP|TYPE-POOL|ACCEPTING|APPENDAGE|ASSIGNING|COL_GROUP|COMPARING|CONSTANTS|DANGEROUS|IMPORTING|INSTANCES|LEFTSPACE|LOG-POINT|QUICKINFO|READ-ONLY|SCROLLING|SQLSCRIPT|STEP-LOOP|TOP-LINES|TRANSLATE|APPENDING|AUTHORITY|CHARACTER|COMPONENT|CONDITION|DIRECTORY|DUPLICATE|MESSAGING|RECEIVING|SUBSCREEN|ACCORDING|COL_TOTAL|END-LINES|ENDMETHOD|ENDSELECT|EXPANDING|EXTENSION|INCLUDING|INFOTYPES|INTERFACE|INTERVALS|LINE-SIZE|PF-STATUS|PROCEDURE|PROTECTED|REQUESTED|RESUMABLE|RIGHTPLUS|SAP-SPOOL|SECONDARY|STRUCTURE|SUBSTRING|TABLEVIEW|NUMOFCHAR|ADJACENT|ANALYSIS|ASSIGNED|BACKWARD|CHANNELS|CHECKBOX|CONTINUE|CRITICAL|DATAINFO|DD\/MM\/YY|DURATION|ENCODING|ENDCLASS|FUNCTION|LEFTPLUS|LINEFEED|MM\/DD\/YY|OVERFLOW|RECEIVED|SKIPPING|SORTABLE|STANDARD|SUBTRACT|SUPPRESS|TABSTRIP|TITLEBAR|TRUNCATE|UNASSIGN|WHENEVER|ANALYZER|COALESCE|COMMENTS|CONDENSE|DECIMALS|DEFERRED|ENDWHILE|EXPLICIT|KEYWORDS|MESSAGES|POSITION|PRIORITY|RECEIVER|RENAMING|TIMEZONE|TRAILING|ALLOCATE|CENTERED|CIRCULAR|CONTROLS|CURRENCY|DELETING|DESCRIBE|DISTANCE|ENDCATCH|EXPONENT|EXTENDED|GENERATE|IGNORING|INCLUDES|INTERNAL|MAJOR-ID|MODIFIER|NEW-LINE|OPTIONAL|PROPERTY|ROLLBACK|STARTING|SUPPLIED|ABSTRACT|CHANGING|CONTEXTS|CREATING|CUSTOMER|DATABASE|DAYLIGHT|DEFINING|DISTINCT|DIVISION|ENABLING|ENDCHAIN|ESCAPING|HARMLESS|IMPLICIT|INACTIVE|LANGUAGE|MINOR-ID|MULTIPLY|NEW-PAGE|NO-TITLE|POS_HIGH|SEPARATE|TEXTPOOL|TRANSFER|SELECTOR|DBMAXLEN|ITERATOR|ARCHIVE|BIT-XOR|BYTE-CO|COLLECT|COMMENT|CURRENT|DEFAULT|DISPLAY|ENDFORM|EXTRACT|LEADING|LISTBOX|LOCATOR|MEMBERS|METHODS|NESTING|POS_LOW|PROCESS|PROVIDE|RAISING|RESERVE|SECONDS|SUMMARY|VISIBLE|BETWEEN|BIT-AND|BYTE-CS|CLEANUP|COMPUTE|CONTROL|CONVERT|DATASET|ENDCASE|FORWARD|HEADERS|HOTSPOT|INCLUDE|INVERSE|KEEPING|NO-ZERO|OBJECTS|OVERLAY|PADDING|PATTERN|PROGRAM|REFRESH|SECTION|SUMMING|TESTING|VERSION|WINDOWS|WITHOUT|BIT-NOT|BYTE-CA|BYTE-NA|CASTING|CONTEXT|COUNTRY|DYNAMIC|ENABLED|ENDLOOP|EXECUTE|FRIENDS|HANDLER|HEADING|INITIAL|\*-INPUT|LOGFILE|MAXIMUM|MINIMUM|NO-GAPS|NO-SIGN|PRAGMAS|PRIMARY|PRIVATE|REDUCED|REPLACE|REQUEST|RESULTS|UNICODE|WARNING|ALIASES|BYTE-CN|BYTE-NS|CALLING|COL_KEY|COLUMNS|CONNECT|ENDEXEC|ENTRIES|EXCLUDE|FILTERS|FURTHER|HELP-ID|LOGICAL|MAPPING|MESSAGE|NAMETAB|OPTIONS|PACKAGE|PERFORM|RECEIVE|STATICS|VARYING|BINDING|CHARLEN|GREATER|XSTRLEN|ACCEPT|APPEND|DETAIL|ELSEIF|ENDING|ENDTRY|FORMAT|FRAMES|GIVING|HASHED|HEADER|IMPORT|INSERT|MARGIN|MODULE|NATIVE|OBJECT|OFFSET|REMOTE|RESUME|SAVING|SIMPLE|SUBMIT|TABBED|TOKENS|UNIQUE|UNPACK|UPDATE|WINDOW|YELLOW|ACTUAL|ASPECT|CENTER|CURSOR|DELETE|DIALOG|DIVIDE|DURING|ERRORS|EVENTS|EXTEND|FILTER|HANDLE|HAVING|IGNORE|LITTLE|MEMORY|NO-GAP|OCCURS|OPTION|PERSON|PLACES|PUBLIC|REDUCE|REPORT|RESULT|SINGLE|SORTED|SWITCH|SYNTAX|TARGET|VALUES|WRITER|ASSERT|BLOCKS|BOUNDS|BUFFER|CHANGE|COLUMN|COMMIT|CONCAT|COPIES|CREATE|DDMMYY|DEFINE|ENDIAN|ESCAPE|EXPAND|KERNEL|LAYOUT|LEGACY|LEVELS|MMDDYY|NUMBER|OUTPUT|RANGES|READER|RETURN|SCREEN|SEARCH|SELECT|SHARED|SOURCE|STABLE|STATIC|SUBKEY|SUFFIX|TABLES|UNWIND|YYMMDD|ASSIGN|BACKUP|BEFORE|BINARY|BIT-OR|BLANKS|CLIENT|CODING|COMMON|DEMAND|DYNPRO|EXCEPT|EXISTS|EXPORT|FIELDS|GLOBAL|GROUPS|LENGTH|LOCALE|MEDIUM|METHOD|MODIFY|NESTED|OTHERS|REJECT|SCROLL|SUPPLY|SYMBOL|ENDFOR|STRLEN|ALIGN|BEGIN|BOUND|ENDAT|ENTRY|EVENT|FINAL|FLUSH|GRANT|INNER|SHORT|USING|WRITE|AFTER|BLACK|BLOCK|CLOCK|COLOR|COUNT|DUMMY|EMPTY|ENDDO|ENDON|GREEN|INDEX|INOUT|LEAVE|LEVEL|LINES|MODIF|ORDER|OUTER|RANGE|RESET|RETRY|RIGHT|SMART|SPLIT|STYLE|TABLE|THROW|UNDER|UNTIL|UPPER|UTF-8|WHERE|ALIAS|BLANK|CLEAR|CLOSE|EXACT|FETCH|FIRST|FOUND|GROUP|LLANG|LOCAL|OTHER|REGEX|SPOOL|TITLE|TYPES|VALID|WHILE|ALPHA|BOXED|CATCH|CHAIN|CHECK|CLASS|COVER|ENDIF|EQUIV|FIELD|FLOOR|FRAME|INPUT|LOWER|MATCH|NODES|PAGES|PRINT|RAISE|ROUND|SHIFT|SPACE|SPOTS|STAMP|STATE|TASKS|TIMES|TRMAC|ULINE|UNION|VALUE|WIDTH|EQUAL|LOG10|TRUNC|BLOB|CASE|CEIL|CLOB|COND|EXIT|FILE|GAPS|HOLD|INCL|INTO|KEEP|KEYS|LAST|LINE|LONG|LPAD|MAIL|MODE|OPEN|PINK|READ|ROWS|TEST|THEN|ZERO|AREA|BACK|BADI|BYTE|CAST|EDIT|EXEC|FAIL|FIND|FKEQ|FONT|FREE|GKEQ|HIDE|INIT|ITNO|LATE|LOOP|MAIN|MARK|MOVE|NEXT|NULL|RISK|ROLE|UNIT|WAIT|ZONE|BASE|CALL|CODE|DATA|DATE|FKGE|GKGE|HIGH|KIND|LEFT|LIST|MASK|MESH|NAME|NODE|PACK|PAGE|POOL|SEND|SIGN|SIZE|SOME|STOP|TASK|TEXT|TIME|USER|VARY|WITH|WORD|BLUE|CONV|COPY|DEEP|ELSE|FORM|FROM|HINT|ICON|JOIN|LIKE|LOAD|ONLY|PART|SCAN|SKIP|SORT|TYPE|UNIX|VIEW|WHEN|WORK|ACOS|ASIN|ATAN|COSH|EACH|FRAC|LESS|RTTI|SINH|SQRT|TANH|AVG|BIT|DIV|ISO|LET|OUT|PAD|SQL|ALL|CI_|CPI|END|LOB|LPI|MAX|MIN|NEW|OLE|RUN|SET|\?TO|YES|ABS|ADD|AND|BIG|FOR|HDB|JOB|LOW|NOT|SAP|TRY|VIA|XML|ANY|GET|IDS|KEY|MOD|OFF|PUT|RAW|RED|REF|SUM|TAB|XSD|CNT|COS|EXP|LOG|SIN|TAN|XOR|AT|CO|CP|DO|GT|ID|IF|NS|OR|BT|CA|CS|GE|NA|NB|EQ|IN|LT|NE|NO|OF|ON|PF|TO|AS|BY|CN|IS|LE|NP|UP|E|I|M|O|Z|C|X)\b/i,lookbehind:!0},number:/\b\d+\b/,operator:{pattern:/(\s)(?:\*\*?|<[=>]?|>=?|\?=|[-+\/=])(?=\s)/,lookbehind:!0},"string-operator":{pattern:/(\s)&&?(?=\s)/,lookbehind:!0,alias:"keyword"},"token-operator":[{pattern:/(\w)(?:->?|=>|[~|{}])(?=\w)/,lookbehind:!0,alias:"punctuation"},{pattern:/[|{}]/,alias:"punctuation"}],punctuation:/[,.:()]/}}return Ey}var xy,dI;function Khe(){if(dI)return xy;dI=1,xy=e,e.displayName="abnf",e.aliases=[];function e(t){(function(n){var r="(?:ALPHA|BIT|CHAR|CR|CRLF|CTL|DIGIT|DQUOTE|HEXDIG|HTAB|LF|LWSP|OCTET|SP|VCHAR|WSP)";n.languages.abnf={comment:/;.*/,string:{pattern:/(?:%[is])?"[^"\n\r]*"/,greedy:!0,inside:{punctuation:/^%[is]/}},range:{pattern:/%(?:b[01]+-[01]+|d\d+-\d+|x[A-F\d]+-[A-F\d]+)/i,alias:"number"},terminal:{pattern:/%(?:b[01]+(?:\.[01]+)*|d\d+(?:\.\d+)*|x[A-F\d]+(?:\.[A-F\d]+)*)/i,alias:"number"},repetition:{pattern:/(^|[^\w-])(?:\d*\*\d*|\d+)/,lookbehind:!0,alias:"operator"},definition:{pattern:/(^[ \t]*)(?:[a-z][\w-]*|<[^<>\r\n]*>)(?=\s*=)/m,lookbehind:!0,alias:"keyword",inside:{punctuation:/<|>/}},"core-rule":{pattern:RegExp("(?:(^|[^<\\w-])"+r+"|<"+r+">)(?![\\w-])","i"),lookbehind:!0,alias:["rule","constant"],inside:{punctuation:/<|>/}},rule:{pattern:/(^|[^<\w-])[a-z][\w-]*|<[^<>\r\n]*>/i,lookbehind:!0,inside:{punctuation:/<|>/}},operator:/=\/?|\//,punctuation:/[()\[\]]/}})(t)}return xy}var ky,fI;function Yhe(){if(fI)return ky;fI=1,ky=e,e.displayName="actionscript",e.aliases=[];function e(t){t.languages.actionscript=t.languages.extend("javascript",{keyword:/\b(?:as|break|case|catch|class|const|default|delete|do|dynamic|each|else|extends|final|finally|for|function|get|if|implements|import|in|include|instanceof|interface|internal|is|namespace|native|new|null|override|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|use|var|void|while|with)\b/,operator:/\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<>?>?|[!=]=?)=?|[~?@]/}),t.languages.actionscript["class-name"].alias="function",delete t.languages.actionscript.parameter,delete t.languages.actionscript["literal-property"],t.languages.markup&&t.languages.insertBefore("actionscript","string",{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,lookbehind:!0,inside:t.languages.markup}})}return ky}var Cy,pI;function Zhe(){if(pI)return Cy;pI=1,Cy=e,e.displayName="ada",e.aliases=[];function e(t){t.languages.ada={comment:/--.*/,string:/"(?:""|[^"\r\f\n])*"/,number:[{pattern:/\b\d(?:_?\d)*#[\dA-F](?:_?[\dA-F])*(?:\.[\dA-F](?:_?[\dA-F])*)?#(?:E[+-]?\d(?:_?\d)*)?/i},{pattern:/\b\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:E[+-]?\d(?:_?\d)*)?\b/i}],"attr-name":/\b'\w+/,keyword:/\b(?:abort|abs|abstract|accept|access|aliased|all|and|array|at|begin|body|case|constant|declare|delay|delta|digits|do|else|elsif|end|entry|exception|exit|for|function|generic|goto|if|in|interface|is|limited|loop|mod|new|not|null|of|others|out|overriding|package|pragma|private|procedure|protected|raise|range|record|rem|renames|requeue|return|reverse|select|separate|some|subtype|synchronized|tagged|task|terminate|then|type|until|use|when|while|with|xor)\b/i,boolean:/\b(?:false|true)\b/i,operator:/<[=>]?|>=?|=>?|:=|\/=?|\*\*?|[&+-]/,punctuation:/\.\.?|[,;():]/,char:/'.'/,variable:/\b[a-z](?:\w)*\b/i}}return Cy}var _y,gI;function Xhe(){if(gI)return _y;gI=1,_y=e,e.displayName="agda",e.aliases=[];function e(t){(function(n){n.languages.agda={comment:/\{-[\s\S]*?(?:-\}|$)|--.*/,string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},punctuation:/[(){}⦃⦄.;@]/,"class-name":{pattern:/((?:data|record) +)\S+/,lookbehind:!0},function:{pattern:/(^[ \t]*)(?!\s)[^:\r\n]+(?=:)/m,lookbehind:!0},operator:{pattern:/(^\s*|\s)(?:[=|:∀→λ\\?_]|->)(?=\s)/,lookbehind:!0},keyword:/\b(?:Set|abstract|constructor|data|eta-equality|field|forall|hiding|import|in|inductive|infix|infixl|infixr|instance|let|macro|module|mutual|no-eta-equality|open|overlap|pattern|postulate|primitive|private|public|quote|quoteContext|quoteGoal|quoteTerm|record|renaming|rewrite|syntax|tactic|unquote|unquoteDecl|unquoteDef|using|variable|where|with)\b/}})(t)}return _y}var Ay,mI;function Qhe(){if(mI)return Ay;mI=1,Ay=e,e.displayName="al",e.aliases=[];function e(t){t.languages.al={comment:/\/\/.*|\/\*[\s\S]*?\*\//,string:{pattern:/'(?:''|[^'\r\n])*'(?!')|"(?:""|[^"\r\n])*"(?!")/,greedy:!0},function:{pattern:/(\b(?:event|procedure|trigger)\s+|(?:^|[^.])\.\s*)[a-z_]\w*(?=\s*\()/i,lookbehind:!0},keyword:[/\b(?:array|asserterror|begin|break|case|do|downto|else|end|event|exit|for|foreach|function|if|implements|in|indataset|interface|internal|local|of|procedure|program|protected|repeat|runonclient|securityfiltering|suppressdispose|temporary|then|to|trigger|until|var|while|with|withevents)\b/i,/\b(?:action|actions|addafter|addbefore|addfirst|addlast|area|assembly|chartpart|codeunit|column|controladdin|cuegroup|customizes|dataitem|dataset|dotnet|elements|enum|enumextension|extends|field|fieldattribute|fieldelement|fieldgroup|fieldgroups|fields|filter|fixed|grid|group|key|keys|label|labels|layout|modify|moveafter|movebefore|movefirst|movelast|page|pagecustomization|pageextension|part|profile|query|repeater|report|requestpage|schema|separator|systempart|table|tableelement|tableextension|textattribute|textelement|type|usercontrol|value|xmlport)\b/i],number:/\b(?:0x[\da-f]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?)(?:F|LL?|U(?:LL?)?)?\b/i,boolean:/\b(?:false|true)\b/i,variable:/\b(?:Curr(?:FieldNo|Page|Report)|x?Rec|RequestOptionsPage)\b/,"class-name":/\b(?:automation|biginteger|bigtext|blob|boolean|byte|char|clienttype|code|completiontriggererrorlevel|connectiontype|database|dataclassification|datascope|date|dateformula|datetime|decimal|defaultlayout|dialog|dictionary|dotnetassembly|dotnettypedeclaration|duration|errorinfo|errortype|executioncontext|executionmode|fieldclass|fieldref|fieldtype|file|filterpagebuilder|guid|httpclient|httpcontent|httpheaders|httprequestmessage|httpresponsemessage|instream|integer|joker|jsonarray|jsonobject|jsontoken|jsonvalue|keyref|list|moduledependencyinfo|moduleinfo|none|notification|notificationscope|objecttype|option|outstream|pageresult|record|recordid|recordref|reportformat|securityfilter|sessionsettings|tableconnectiontype|tablefilter|testaction|testfield|testfilterfield|testpage|testpermissions|testrequestpage|text|textbuilder|textconst|textencoding|time|transactionmodel|transactiontype|variant|verbosity|version|view|views|webserviceactioncontext|webserviceactionresultcode|xmlattribute|xmlattributecollection|xmlcdata|xmlcomment|xmldeclaration|xmldocument|xmldocumenttype|xmlelement|xmlnamespacemanager|xmlnametable|xmlnode|xmlnodelist|xmlprocessinginstruction|xmlreadoptions|xmltext|xmlwriteoptions)\b/i,operator:/\.\.|:[=:]|[-+*/]=?|<>|[<>]=?|=|\b(?:and|div|mod|not|or|xor)\b/i,punctuation:/[()\[\]{}:.;,]/}}return Ay}var Ty,hI;function Jhe(){if(hI)return Ty;hI=1,Ty=e,e.displayName="antlr4",e.aliases=["g4"];function e(t){t.languages.antlr4={comment:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,string:{pattern:/'(?:\\.|[^\\'\r\n])*'/,greedy:!0},"character-class":{pattern:/\[(?:\\.|[^\\\]\r\n])*\]/,greedy:!0,alias:"regex",inside:{range:{pattern:/([^[]|(?:^|[^\\])(?:\\\\)*\\\[)-(?!\])/,lookbehind:!0,alias:"punctuation"},escape:/\\(?:u(?:[a-fA-F\d]{4}|\{[a-fA-F\d]+\})|[pP]\{[=\w-]+\}|[^\r\nupP])/,punctuation:/[\[\]]/}},action:{pattern:/\{(?:[^{}]|\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})*\})*\}/,greedy:!0,inside:{content:{pattern:/(\{)[\s\S]+(?=\})/,lookbehind:!0},punctuation:/[{}]/}},command:{pattern:/(->\s*(?!\s))(?:\s*(?:,\s*)?\b[a-z]\w*(?:\s*\([^()\r\n]*\))?)+(?=\s*;)/i,lookbehind:!0,inside:{function:/\b\w+(?=\s*(?:[,(]|$))/,punctuation:/[,()]/}},annotation:{pattern:/@\w+(?:::\w+)*/,alias:"keyword"},label:{pattern:/#[ \t]*\w+/,alias:"punctuation"},keyword:/\b(?:catch|channels|finally|fragment|grammar|import|lexer|locals|mode|options|parser|returns|throws|tokens)\b/,definition:[{pattern:/\b[a-z]\w*(?=\s*:)/,alias:["rule","class-name"]},{pattern:/\b[A-Z]\w*(?=\s*:)/,alias:["token","constant"]}],constant:/\b[A-Z][A-Z_]*\b/,operator:/\.\.|->|[|~]|[*+?]\??/,punctuation:/[;:()=]/},t.languages.g4=t.languages.antlr4}return Ty}var Ry,bI;function ebe(){if(bI)return Ry;bI=1,Ry=e,e.displayName="apacheconf",e.aliases=[];function e(t){t.languages.apacheconf={comment:/#.*/,"directive-inline":{pattern:/(^[\t ]*)\b(?:AcceptFilter|AcceptPathInfo|AccessFileName|Action|Add(?:Alt|AltByEncoding|AltByType|Charset|DefaultCharset|Description|Encoding|Handler|Icon|IconByEncoding|IconByType|InputFilter|Language|ModuleInfo|OutputFilter|OutputFilterByType|Type)|Alias|AliasMatch|Allow(?:CONNECT|EncodedSlashes|Methods|Override|OverrideList)?|Anonymous(?:_LogEmail|_MustGiveEmail|_NoUserID|_VerifyEmail)?|AsyncRequestWorkerFactor|Auth(?:BasicAuthoritative|BasicFake|BasicProvider|BasicUseDigestAlgorithm|DBDUserPWQuery|DBDUserRealmQuery|DBMGroupFile|DBMType|DBMUserFile|Digest(?:Algorithm|Domain|NonceLifetime|Provider|Qop|ShmemSize)|Form(?:Authoritative|Body|DisableNoStore|FakeBasicAuth|Location|LoginRequiredLocation|LoginSuccessLocation|LogoutLocation|Method|Mimetype|Password|Provider|SitePassphrase|Size|Username)|GroupFile|LDAP(?:AuthorizePrefix|BindAuthoritative|BindDN|BindPassword|CharsetConfig|CompareAsUser|CompareDNOnServer|DereferenceAliases|GroupAttribute|GroupAttributeIsDN|InitialBindAsUser|InitialBindPattern|MaxSubGroupDepth|RemoteUserAttribute|RemoteUserIsDN|SearchAsUser|SubGroupAttribute|SubGroupClass|Url)|Merging|Name|nCache(?:Context|Enable|ProvideFor|SOCache|Timeout)|nzFcgiCheckAuthnProvider|nzFcgiDefineProvider|Type|UserFile|zDBDLoginToReferer|zDBDQuery|zDBDRedirectQuery|zDBMType|zSendForbiddenOnFailure)|BalancerGrowth|BalancerInherit|BalancerMember|BalancerPersist|BrowserMatch|BrowserMatchNoCase|BufferedLogs|BufferSize|Cache(?:DefaultExpire|DetailHeader|DirLength|DirLevels|Disable|Enable|File|Header|IgnoreCacheControl|IgnoreHeaders|IgnoreNoLastMod|IgnoreQueryString|IgnoreURLSessionIdentifiers|KeyBaseURL|LastModifiedFactor|Lock|LockMaxAge|LockPath|MaxExpire|MaxFileSize|MinExpire|MinFileSize|NegotiatedDocs|QuickHandler|ReadSize|ReadTime|Root|Socache(?:MaxSize|MaxTime|MinTime|ReadSize|ReadTime)?|StaleOnError|StoreExpired|StoreNoStore|StorePrivate)|CGIDScriptTimeout|CGIMapExtension|CharsetDefault|CharsetOptions|CharsetSourceEnc|CheckCaseOnly|CheckSpelling|ChrootDir|ContentDigest|CookieDomain|CookieExpires|CookieName|CookieStyle|CookieTracking|CoreDumpDirectory|CustomLog|Dav|DavDepthInfinity|DavGenericLockDB|DavLockDB|DavMinTimeout|DBDExptime|DBDInitSQL|DBDKeep|DBDMax|DBDMin|DBDParams|DBDPersist|DBDPrepareSQL|DBDriver|DefaultIcon|DefaultLanguage|DefaultRuntimeDir|DefaultType|Define|Deflate(?:BufferSize|CompressionLevel|FilterNote|InflateLimitRequestBody|InflateRatio(?:Burst|Limit)|MemLevel|WindowSize)|Deny|DirectoryCheckHandler|DirectoryIndex|DirectoryIndexRedirect|DirectorySlash|DocumentRoot|DTracePrivileges|DumpIOInput|DumpIOOutput|EnableExceptionHook|EnableMMAP|EnableSendfile|Error|ErrorDocument|ErrorLog|ErrorLogFormat|Example|ExpiresActive|ExpiresByType|ExpiresDefault|ExtendedStatus|ExtFilterDefine|ExtFilterOptions|FallbackResource|FileETag|FilterChain|FilterDeclare|FilterProtocol|FilterProvider|FilterTrace|ForceLanguagePriority|ForceType|ForensicLog|GprofDir|GracefulShutdownTimeout|Group|Header|HeaderName|Heartbeat(?:Address|Listen|MaxServers|Storage)|HostnameLookups|IdentityCheck|IdentityCheckTimeout|ImapBase|ImapDefault|ImapMenu|Include|IncludeOptional|Index(?:HeadInsert|Ignore|IgnoreReset|Options|OrderDefault|StyleSheet)|InputSed|ISAPI(?:AppendLogToErrors|AppendLogToQuery|CacheFile|FakeAsync|LogNotSupported|ReadAheadBuffer)|KeepAlive|KeepAliveTimeout|KeptBodySize|LanguagePriority|LDAP(?:CacheEntries|CacheTTL|ConnectionPoolTTL|ConnectionTimeout|LibraryDebug|OpCacheEntries|OpCacheTTL|ReferralHopLimit|Referrals|Retries|RetryDelay|SharedCacheFile|SharedCacheSize|Timeout|TrustedClientCert|TrustedGlobalCert|TrustedMode|VerifyServerCert)|Limit(?:InternalRecursion|Request(?:Body|Fields|FieldSize|Line)|XMLRequestBody)|Listen|ListenBackLog|LoadFile|LoadModule|LogFormat|LogLevel|LogMessage|LuaAuthzProvider|LuaCodeCache|Lua(?:Hook(?:AccessChecker|AuthChecker|CheckUserID|Fixups|InsertFilter|Log|MapToStorage|TranslateName|TypeChecker)|Inherit|InputFilter|MapHandler|OutputFilter|PackageCPath|PackagePath|QuickHandler|Root|Scope)|Max(?:ConnectionsPerChild|KeepAliveRequests|MemFree|RangeOverlaps|RangeReversals|Ranges|RequestWorkers|SpareServers|SpareThreads|Threads)|MergeTrailers|MetaDir|MetaFiles|MetaSuffix|MimeMagicFile|MinSpareServers|MinSpareThreads|MMapFile|ModemStandard|ModMimeUsePathInfo|MultiviewsMatch|Mutex|NameVirtualHost|NoProxy|NWSSLTrustedCerts|NWSSLUpgradeable|Options|Order|OutputSed|PassEnv|PidFile|PrivilegesMode|Protocol|ProtocolEcho|Proxy(?:AddHeaders|BadHeader|Block|Domain|ErrorOverride|ExpressDBMFile|ExpressDBMType|ExpressEnable|FtpDirCharset|FtpEscapeWildcards|FtpListOnWildcard|HTML(?:BufSize|CharsetOut|DocType|Enable|Events|Extended|Fixups|Interp|Links|Meta|StripComments|URLMap)|IOBufferSize|MaxForwards|Pass(?:Inherit|InterpolateEnv|Match|Reverse|ReverseCookieDomain|ReverseCookiePath)?|PreserveHost|ReceiveBufferSize|Remote|RemoteMatch|Requests|SCGIInternalRedirect|SCGISendfile|Set|SourceAddress|Status|Timeout|Via)|ReadmeName|ReceiveBufferSize|Redirect|RedirectMatch|RedirectPermanent|RedirectTemp|ReflectorHeader|RemoteIP(?:Header|InternalProxy|InternalProxyList|ProxiesHeader|TrustedProxy|TrustedProxyList)|RemoveCharset|RemoveEncoding|RemoveHandler|RemoveInputFilter|RemoveLanguage|RemoveOutputFilter|RemoveType|RequestHeader|RequestReadTimeout|Require|Rewrite(?:Base|Cond|Engine|Map|Options|Rule)|RLimitCPU|RLimitMEM|RLimitNPROC|Satisfy|ScoreBoardFile|Script(?:Alias|AliasMatch|InterpreterSource|Log|LogBuffer|LogLength|Sock)?|SecureListen|SeeRequestTail|SendBufferSize|Server(?:Admin|Alias|Limit|Name|Path|Root|Signature|Tokens)|Session(?:Cookie(?:Name|Name2|Remove)|Crypto(?:Cipher|Driver|Passphrase|PassphraseFile)|DBD(?:CookieName|CookieName2|CookieRemove|DeleteLabel|InsertLabel|PerUser|SelectLabel|UpdateLabel)|Env|Exclude|Header|Include|MaxAge)?|SetEnv|SetEnvIf|SetEnvIfExpr|SetEnvIfNoCase|SetHandler|SetInputFilter|SetOutputFilter|SSIEndTag|SSIErrorMsg|SSIETag|SSILastModified|SSILegacyExprParser|SSIStartTag|SSITimeFormat|SSIUndefinedEcho|SSL(?:CACertificateFile|CACertificatePath|CADNRequestFile|CADNRequestPath|CARevocationCheck|CARevocationFile|CARevocationPath|CertificateChainFile|CertificateFile|CertificateKeyFile|CipherSuite|Compression|CryptoDevice|Engine|FIPS|HonorCipherOrder|InsecureRenegotiation|OCSP(?:DefaultResponder|Enable|OverrideResponder|ResponderTimeout|ResponseMaxAge|ResponseTimeSkew|UseRequestNonce)|OpenSSLConfCmd|Options|PassPhraseDialog|Protocol|Proxy(?:CACertificateFile|CACertificatePath|CARevocation(?:Check|File|Path)|CheckPeer(?:CN|Expire|Name)|CipherSuite|Engine|MachineCertificate(?:ChainFile|File|Path)|Protocol|Verify|VerifyDepth)|RandomSeed|RenegBufferSize|Require|RequireSSL|Session(?:Cache|CacheTimeout|TicketKeyFile|Tickets)|SRPUnknownUserSeed|SRPVerifierFile|Stapling(?:Cache|ErrorCacheTimeout|FakeTryLater|ForceURL|ResponderTimeout|ResponseMaxAge|ResponseTimeSkew|ReturnResponderErrors|StandardCacheTimeout)|StrictSNIVHostCheck|UserName|UseStapling|VerifyClient|VerifyDepth)|StartServers|StartThreads|Substitute|Suexec|SuexecUserGroup|ThreadLimit|ThreadsPerChild|ThreadStackSize|TimeOut|TraceEnable|TransferLog|TypesConfig|UnDefine|UndefMacro|UnsetEnv|Use|UseCanonicalName|UseCanonicalPhysicalPort|User|UserDir|VHostCGIMode|VHostCGIPrivs|VHostGroup|VHostPrivs|VHostSecure|VHostUser|Virtual(?:DocumentRoot|ScriptAlias)(?:IP)?|WatchdogInterval|XBitHack|xml2EncAlias|xml2EncDefault|xml2StartParse)\b/im,lookbehind:!0,alias:"property"},"directive-block":{pattern:/<\/?\b(?:Auth[nz]ProviderAlias|Directory|DirectoryMatch|Else|ElseIf|Files|FilesMatch|If|IfDefine|IfModule|IfVersion|Limit|LimitExcept|Location|LocationMatch|Macro|Proxy|Require(?:All|Any|None)|VirtualHost)\b.*>/i,inside:{"directive-block":{pattern:/^<\/?\w+/,inside:{punctuation:/^<\/?/},alias:"tag"},"directive-block-parameter":{pattern:/.*[^>]/,inside:{punctuation:/:/,string:{pattern:/("|').*\1/,inside:{variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/}}},alias:"attr-value"},punctuation:/>/},alias:"tag"},"directive-flags":{pattern:/\[(?:[\w=],?)+\]/,alias:"keyword"},string:{pattern:/("|').*\1/,inside:{variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/}},variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/,regex:/\^?.*\$|\^.*\$?/}}return Ry}var Ny,yI;function TA(){if(yI)return Ny;yI=1,Ny=e,e.displayName="sql",e.aliases=[];function e(t){t.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/}}return Ny}var Iy,vI;function tbe(){if(vI)return Iy;vI=1;var e=TA();Iy=t,t.displayName="apex",t.aliases=[];function t(n){n.register(e),function(r){var a=/\b(?:(?:after|before)(?=\s+[a-z])|abstract|activate|and|any|array|as|asc|autonomous|begin|bigdecimal|blob|boolean|break|bulk|by|byte|case|cast|catch|char|class|collect|commit|const|continue|currency|date|datetime|decimal|default|delete|desc|do|double|else|end|enum|exception|exit|export|extends|final|finally|float|for|from|get(?=\s*[{};])|global|goto|group|having|hint|if|implements|import|in|inner|insert|instanceof|int|integer|interface|into|join|like|limit|list|long|loop|map|merge|new|not|null|nulls|number|object|of|on|or|outer|override|package|parallel|pragma|private|protected|public|retrieve|return|rollback|select|set|short|sObject|sort|static|string|super|switch|synchronized|system|testmethod|then|this|throw|time|transaction|transient|trigger|try|undelete|update|upsert|using|virtual|void|webservice|when|where|while|(?:inherited|with|without)\s+sharing)\b/i,o=/\b(?:(?=[a-z_]\w*\s*[<\[])|(?!))[A-Z_]\w*(?:\s*\.\s*[A-Z_]\w*)*\b(?:\s*(?:\[\s*\]|<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>))*/.source.replace(//g,function(){return a.source});function i(l){return RegExp(l.replace(//g,function(){return o}),"i")}var s={keyword:a,punctuation:/[()\[\]{};,:.<>]/};r.languages.apex={comment:r.languages.clike.comment,string:r.languages.clike.string,sql:{pattern:/((?:[=,({:]|\breturn)\s*)\[[^\[\]]*\]/i,lookbehind:!0,greedy:!0,alias:"language-sql",inside:r.languages.sql},annotation:{pattern:/@\w+\b/,alias:"punctuation"},"class-name":[{pattern:i(/(\b(?:class|enum|extends|implements|instanceof|interface|new|trigger\s+\w+\s+on)\s+)/.source),lookbehind:!0,inside:s},{pattern:i(/(\(\s*)(?=\s*\)\s*[\w(])/.source),lookbehind:!0,inside:s},{pattern:i(/(?=\s*\w+\s*[;=,(){:])/.source),inside:s}],trigger:{pattern:/(\btrigger\s+)\w+\b/i,lookbehind:!0,alias:"class-name"},keyword:a,function:/\b[a-z_]\w*(?=\s*\()/i,boolean:/\b(?:false|true)\b/i,number:/(?:\B\.\d+|\b\d+(?:\.\d+|L)?)\b/i,operator:/[!=](?:==?)?|\?\.?|&&|\|\||--|\+\+|[-+*/^&|]=?|:|<{1,3}=?/,punctuation:/[()\[\]{};,.]/}}(n)}return Iy}var Oy,SI;function nbe(){if(SI)return Oy;SI=1,Oy=e,e.displayName="apl",e.aliases=[];function e(t){t.languages.apl={comment:/(?:⍝|#[! ]).*$/m,string:{pattern:/'(?:[^'\r\n]|'')*'/,greedy:!0},number:/¯?(?:\d*\.?\b\d+(?:e[+¯]?\d+)?|¯|∞)(?:j¯?(?:(?:\d+(?:\.\d+)?|\.\d+)(?:e[+¯]?\d+)?|¯|∞))?/i,statement:/:[A-Z][a-z][A-Za-z]*\b/,"system-function":{pattern:/⎕[A-Z]+/i,alias:"function"},constant:/[⍬⌾#⎕⍞]/,function:/[-+×÷⌈⌊∣|⍳⍸?*⍟○!⌹<≤=>≥≠≡≢∊⍷∪∩~∨∧⍱⍲⍴,⍪⌽⊖⍉↑↓⊂⊃⊆⊇⌷⍋⍒⊤⊥⍕⍎⊣⊢⍁⍂≈⍯↗¤→]/,"monadic-operator":{pattern:/[\\\/⌿⍀¨⍨⌶&∥]/,alias:"operator"},"dyadic-operator":{pattern:/[.⍣⍠⍤∘⌸@⌺⍥]/,alias:"operator"},assignment:{pattern:/←/,alias:"keyword"},punctuation:/[\[;\]()◇⋄]/,dfn:{pattern:/[{}⍺⍵⍶⍹∇⍫:]/,alias:"builtin"}}}return Oy}var Dy,wI;function rbe(){if(wI)return Dy;wI=1,Dy=e,e.displayName="applescript",e.aliases=[];function e(t){t.languages.applescript={comment:[/\(\*(?:\(\*(?:[^*]|\*(?!\)))*\*\)|(?!\(\*)[\s\S])*?\*\)/,/--.+/,/#.+/],string:/"(?:\\.|[^"\\\r\n])*"/,number:/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e-?\d+)?\b/i,operator:[/[&=≠≤≥*+\-\/÷^]|[<>]=?/,/\b(?:(?:begin|end|start)s? with|(?:contains?|(?:does not|doesn't) contain)|(?:is|isn't|is not) (?:contained by|in)|(?:(?:is|isn't|is not) )?(?:greater|less) than(?: or equal)?(?: to)?|(?:comes|(?:does not|doesn't) come) (?:after|before)|(?:is|isn't|is not) equal(?: to)?|(?:(?:does not|doesn't) equal|equal to|equals|is not|isn't)|(?:a )?(?:ref(?: to)?|reference to)|(?:and|as|div|mod|not|or))\b/],keyword:/\b(?:about|above|after|against|apart from|around|aside from|at|back|before|beginning|behind|below|beneath|beside|between|but|by|considering|continue|copy|does|eighth|else|end|equal|error|every|exit|false|fifth|first|for|fourth|from|front|get|given|global|if|ignoring|in|instead of|into|is|it|its|last|local|me|middle|my|ninth|of|on|onto|out of|over|prop|property|put|repeat|return|returning|second|set|seventh|since|sixth|some|tell|tenth|that|the|then|third|through|thru|timeout|times|to|transaction|true|try|until|where|while|whose|with|without)\b/,"class-name":/\b(?:POSIX file|RGB color|alias|application|boolean|centimeters|centimetres|class|constant|cubic centimeters|cubic centimetres|cubic feet|cubic inches|cubic meters|cubic metres|cubic yards|date|degrees Celsius|degrees Fahrenheit|degrees Kelvin|feet|file|gallons|grams|inches|integer|kilograms|kilometers|kilometres|list|liters|litres|meters|metres|miles|number|ounces|pounds|quarts|real|record|reference|script|square feet|square kilometers|square kilometres|square meters|square metres|square miles|square yards|text|yards)\b/,punctuation:/[{}():,¬«»《》]/}}return Dy}var Ly,EI;function abe(){if(EI)return Ly;EI=1,Ly=e,e.displayName="aql",e.aliases=[];function e(t){t.languages.aql={comment:/\/\/.*|\/\*[\s\S]*?\*\//,property:{pattern:/([{,]\s*)(?:(?!\d)\w+|(["'´`])(?:(?!\2)[^\\\r\n]|\\.)*\2)(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(["'])(?:(?!\1)[^\\\r\n]|\\.)*\1/,greedy:!0},identifier:{pattern:/([´`])(?:(?!\1)[^\\\r\n]|\\.)*\1/,greedy:!0},variable:/@@?\w+/,keyword:[{pattern:/(\bWITH\s+)COUNT(?=\s+INTO\b)/i,lookbehind:!0},/\b(?:AGGREGATE|ALL|AND|ANY|ASC|COLLECT|DESC|DISTINCT|FILTER|FOR|GRAPH|IN|INBOUND|INSERT|INTO|K_PATHS|K_SHORTEST_PATHS|LET|LIKE|LIMIT|NONE|NOT|NULL|OR|OUTBOUND|REMOVE|REPLACE|RETURN|SHORTEST_PATH|SORT|UPDATE|UPSERT|WINDOW|WITH)\b/i,{pattern:/(^|[^\w.[])(?:KEEP|PRUNE|SEARCH|TO)\b/i,lookbehind:!0},{pattern:/(^|[^\w.[])(?:CURRENT|NEW|OLD)\b/,lookbehind:!0},{pattern:/\bOPTIONS(?=\s*\{)/i}],function:/\b(?!\d)\w+(?=\s*\()/,boolean:/\b(?:false|true)\b/i,range:{pattern:/\.\./,alias:"operator"},number:[/\b0b[01]+/i,/\b0x[0-9a-f]+/i,/(?:\B\.\d+|\b(?:0|[1-9]\d*)(?:\.\d+)?)(?:e[+-]?\d+)?/i],operator:/\*{2,}|[=!]~|[!=<>]=?|&&|\|\||[-+*/%]/,punctuation:/::|[?.:,;()[\]{}]/}}return Ly}var My,xI;function Ws(){if(xI)return My;xI=1,My=e,e.displayName="c",e.aliases=[];function e(t){t.languages.c=t.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),t.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),t.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},t.languages.c.string],char:t.languages.c.char,comment:t.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:t.languages.c}}}}),t.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete t.languages.c.boolean}return My}var Py,kI;function RA(){if(kI)return Py;kI=1;var e=Ws();Py=t,t.displayName="cpp",t.aliases=[];function t(n){n.register(e),function(r){var a=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,o=/\b(?!)\w+(?:\s*\.\s*\w+)*\b/.source.replace(//g,function(){return a.source});r.languages.cpp=r.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!)\w+/.source.replace(//g,function(){return a.source})),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:a,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),r.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/(?:\s*:\s*)?|:\s*/.source.replace(//g,function(){return o})+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),r.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:r.languages.cpp}}}}),r.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),r.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:r.languages.extend("cpp",{})}}),r.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},r.languages.cpp["base-clause"])}(n)}return Py}var $y,CI;function obe(){if(CI)return $y;CI=1;var e=RA();$y=t,t.displayName="arduino",t.aliases=["ino"];function t(n){n.register(e),n.languages.arduino=n.languages.extend("cpp",{keyword:/\b(?:String|array|bool|boolean|break|byte|case|catch|continue|default|do|double|else|finally|for|function|goto|if|in|instanceof|int|integer|long|loop|new|null|return|setup|string|switch|throw|try|void|while|word)\b/,constant:/\b(?:ANALOG_MESSAGE|DEFAULT|DIGITAL_MESSAGE|EXTERNAL|FIRMATA_STRING|HIGH|INPUT|INPUT_PULLUP|INTERNAL|INTERNAL1V1|INTERNAL2V56|LED_BUILTIN|LOW|OUTPUT|REPORT_ANALOG|REPORT_DIGITAL|SET_PIN_MODE|SYSEX_START|SYSTEM_RESET)\b/,builtin:/\b(?:Audio|BSSID|Bridge|Client|Console|EEPROM|Esplora|EsploraTFT|Ethernet|EthernetClient|EthernetServer|EthernetUDP|File|FileIO|FileSystem|Firmata|GPRS|GSM|GSMBand|GSMClient|GSMModem|GSMPIN|GSMScanner|GSMServer|GSMVoiceCall|GSM_SMS|HttpClient|IPAddress|IRread|Keyboard|KeyboardController|LiquidCrystal|LiquidCrystal_I2C|Mailbox|Mouse|MouseController|PImage|Process|RSSI|RobotControl|RobotMotor|SD|SPI|SSID|Scheduler|Serial|Server|Servo|SoftwareSerial|Stepper|Stream|TFT|Task|USBHost|WiFi|WiFiClient|WiFiServer|WiFiUDP|Wire|YunClient|YunServer|abs|addParameter|analogRead|analogReadResolution|analogReference|analogWrite|analogWriteResolution|answerCall|attach|attachGPRS|attachInterrupt|attached|autoscroll|available|background|beep|begin|beginPacket|beginSD|beginSMS|beginSpeaker|beginTFT|beginTransmission|beginWrite|bit|bitClear|bitRead|bitSet|bitWrite|blink|blinkVersion|buffer|changePIN|checkPIN|checkPUK|checkReg|circle|cityNameRead|cityNameWrite|clear|clearScreen|click|close|compassRead|config|connect|connected|constrain|cos|countryNameRead|countryNameWrite|createChar|cursor|debugPrint|delay|delayMicroseconds|detach|detachInterrupt|digitalRead|digitalWrite|disconnect|display|displayLogos|drawBMP|drawCompass|encryptionType|end|endPacket|endSMS|endTransmission|endWrite|exists|exitValue|fill|find|findUntil|flush|gatewayIP|get|getAsynchronously|getBand|getButton|getCurrentCarrier|getIMEI|getKey|getModifiers|getOemKey|getPINUsed|getResult|getSignalStrength|getSocket|getVoiceCallStatus|getXChange|getYChange|hangCall|height|highByte|home|image|interrupts|isActionDone|isDirectory|isListening|isPIN|isPressed|isValid|keyPressed|keyReleased|keyboardRead|knobRead|leftToRight|line|lineFollowConfig|listen|listenOnLocalhost|loadImage|localIP|lowByte|macAddress|maintain|map|max|messageAvailable|micros|millis|min|mkdir|motorsStop|motorsWrite|mouseDragged|mouseMoved|mousePressed|mouseReleased|move|noAutoscroll|noBlink|noBuffer|noCursor|noDisplay|noFill|noInterrupts|noListenOnLocalhost|noStroke|noTone|onReceive|onRequest|open|openNextFile|overflow|parseCommand|parseFloat|parseInt|parsePacket|pauseMode|peek|pinMode|playFile|playMelody|point|pointTo|position|pow|prepare|press|print|printFirmwareVersion|printVersion|println|process|processInput|pulseIn|put|random|randomSeed|read|readAccelerometer|readBlue|readButton|readBytes|readBytesUntil|readGreen|readJoystickButton|readJoystickSwitch|readJoystickX|readJoystickY|readLightSensor|readMessage|readMicrophone|readNetworks|readRed|readSlider|readString|readStringUntil|readTemperature|ready|rect|release|releaseAll|remoteIP|remoteNumber|remotePort|remove|requestFrom|retrieveCallingNumber|rewindDirectory|rightToLeft|rmdir|robotNameRead|robotNameWrite|run|runAsynchronously|runShellCommand|runShellCommandAsynchronously|running|scanNetworks|scrollDisplayLeft|scrollDisplayRight|seek|sendAnalog|sendDigitalPortPair|sendDigitalPorts|sendString|sendSysex|serialEvent|setBand|setBitOrder|setClockDivider|setCursor|setDNS|setDataMode|setFirmwareVersion|setMode|setPINUsed|setSpeed|setTextSize|setTimeout|shiftIn|shiftOut|shutdown|sin|size|sqrt|startLoop|step|stop|stroke|subnetMask|switchPIN|tan|tempoWrite|text|tone|transfer|tuneWrite|turn|updateIR|userNameRead|userNameWrite|voiceCall|waitContinue|width|write|writeBlue|writeGreen|writeJSON|writeMessage|writeMicroseconds|writeRGB|writeRed|yield)\b/}),n.languages.ino=n.languages.arduino}return $y}var Fy,_I;function ibe(){if(_I)return Fy;_I=1,Fy=e,e.displayName="arff",e.aliases=[];function e(t){t.languages.arff={comment:/%.*/,string:{pattern:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},keyword:/@(?:attribute|data|end|relation)\b/i,number:/\b\d+(?:\.\d+)?\b/,punctuation:/[{},]/}}return Fy}var jy,AI;function sbe(){if(AI)return jy;AI=1,jy=e,e.displayName="asciidoc",e.aliases=["adoc"];function e(t){(function(n){var r={pattern:/(^[ \t]*)\[(?!\[)(?:(["'$`])(?:(?!\2)[^\\]|\\.)*\2|\[(?:[^\[\]\\]|\\.)*\]|[^\[\]\\"'$`]|\\.)*\]/m,lookbehind:!0,inside:{quoted:{pattern:/([$`])(?:(?!\1)[^\\]|\\.)*\1/,inside:{punctuation:/^[$`]|[$`]$/}},interpreted:{pattern:/'(?:[^'\\]|\\.)*'/,inside:{punctuation:/^'|'$/}},string:/"(?:[^"\\]|\\.)*"/,variable:/\w+(?==)/,punctuation:/^\[|\]$|,/,operator:/=/,"attr-value":/(?!^\s+$).+/}},a=n.languages.asciidoc={"comment-block":{pattern:/^(\/{4,})(?:\r?\n|\r)(?:[\s\S]*(?:\r?\n|\r))??\1/m,alias:"comment"},table:{pattern:/^\|={3,}(?:(?:\r?\n|\r(?!\n)).*)*?(?:\r?\n|\r)\|={3,}$/m,inside:{specifiers:{pattern:/(?:(?:(?:\d+(?:\.\d+)?|\.\d+)[+*](?:[<^>](?:\.[<^>])?|\.[<^>])?|[<^>](?:\.[<^>])?|\.[<^>])[a-z]*|[a-z]+)(?=\|)/,alias:"attr-value"},punctuation:{pattern:/(^|[^\\])[|!]=*/,lookbehind:!0}}},"passthrough-block":{pattern:/^(\+{4,})(?:\r?\n|\r)(?:[\s\S]*(?:\r?\n|\r))??\1$/m,inside:{punctuation:/^\++|\++$/}},"literal-block":{pattern:/^(-{4,}|\.{4,})(?:\r?\n|\r)(?:[\s\S]*(?:\r?\n|\r))??\1$/m,inside:{punctuation:/^(?:-+|\.+)|(?:-+|\.+)$/}},"other-block":{pattern:/^(--|\*{4,}|_{4,}|={4,})(?:\r?\n|\r)(?:[\s\S]*(?:\r?\n|\r))??\1$/m,inside:{punctuation:/^(?:-+|\*+|_+|=+)|(?:-+|\*+|_+|=+)$/}},"list-punctuation":{pattern:/(^[ \t]*)(?:-|\*{1,5}|\.{1,5}|(?:[a-z]|\d+)\.|[xvi]+\))(?= )/im,lookbehind:!0,alias:"punctuation"},"list-label":{pattern:/(^[ \t]*)[a-z\d].+(?::{2,4}|;;)(?=\s)/im,lookbehind:!0,alias:"symbol"},"indented-block":{pattern:/((\r?\n|\r)\2)([ \t]+)\S.*(?:(?:\r?\n|\r)\3.+)*(?=\2{2}|$)/,lookbehind:!0},comment:/^\/\/.*/m,title:{pattern:/^.+(?:\r?\n|\r)(?:={3,}|-{3,}|~{3,}|\^{3,}|\+{3,})$|^={1,5} .+|^\.(?![\s.]).*/m,alias:"important",inside:{punctuation:/^(?:\.|=+)|(?:=+|-+|~+|\^+|\++)$/}},"attribute-entry":{pattern:/^:[^:\r\n]+:(?: .*?(?: \+(?:\r?\n|\r).*?)*)?$/m,alias:"tag"},attributes:r,hr:{pattern:/^'{3,}$/m,alias:"punctuation"},"page-break":{pattern:/^<{3,}$/m,alias:"punctuation"},admonition:{pattern:/^(?:CAUTION|IMPORTANT|NOTE|TIP|WARNING):/m,alias:"keyword"},callout:[{pattern:/(^[ \t]*)/m,lookbehind:!0,alias:"symbol"},{pattern:/<\d+>/,alias:"symbol"}],macro:{pattern:/\b[a-z\d][a-z\d-]*::?(?:[^\s\[\]]*\[(?:[^\]\\"']|(["'])(?:(?!\1)[^\\]|\\.)*\1|\\.)*\])/,inside:{function:/^[a-z\d-]+(?=:)/,punctuation:/^::?/,attributes:{pattern:/(?:\[(?:[^\]\\"']|(["'])(?:(?!\1)[^\\]|\\.)*\1|\\.)*\])/,inside:r.inside}}},inline:{pattern:/(^|[^\\])(?:(?:\B\[(?:[^\]\\"']|(["'])(?:(?!\2)[^\\]|\\.)*\2|\\.)*\])?(?:\b_(?!\s)(?: _|[^_\\\r\n]|\\.)+(?:(?:\r?\n|\r)(?: _|[^_\\\r\n]|\\.)+)*_\b|\B``(?!\s).+?(?:(?:\r?\n|\r).+?)*''\B|\B`(?!\s)(?:[^`'\s]|\s+\S)+['`]\B|\B(['*+#])(?!\s)(?: \3|(?!\3)[^\\\r\n]|\\.)+(?:(?:\r?\n|\r)(?: \3|(?!\3)[^\\\r\n]|\\.)+)*\3\B)|(?:\[(?:[^\]\\"']|(["'])(?:(?!\4)[^\\]|\\.)*\4|\\.)*\])?(?:(__|\*\*|\+\+\+?|##|\$\$|[~^]).+?(?:(?:\r?\n|\r).+?)*\5|\{[^}\r\n]+\}|\[\[\[?.+?(?:(?:\r?\n|\r).+?)*\]?\]\]|<<.+?(?:(?:\r?\n|\r).+?)*>>|\(\(\(?.+?(?:(?:\r?\n|\r).+?)*\)?\)\)))/m,lookbehind:!0,inside:{attributes:r,url:{pattern:/^(?:\[\[\[?.+?\]?\]\]|<<.+?>>)$/,inside:{punctuation:/^(?:\[\[\[?|<<)|(?:\]\]\]?|>>)$/}},"attribute-ref":{pattern:/^\{.+\}$/,inside:{variable:{pattern:/(^\{)[a-z\d,+_-]+/,lookbehind:!0},operator:/^[=?!#%@$]|!(?=[:}])/,punctuation:/^\{|\}$|::?/}},italic:{pattern:/^(['_])[\s\S]+\1$/,inside:{punctuation:/^(?:''?|__?)|(?:''?|__?)$/}},bold:{pattern:/^\*[\s\S]+\*$/,inside:{punctuation:/^\*\*?|\*\*?$/}},punctuation:/^(?:``?|\+{1,3}|##?|\$\$|[~^]|\(\(\(?)|(?:''?|\+{1,3}|##?|\$\$|[~^`]|\)?\)\))$/}},replacement:{pattern:/\((?:C|R|TM)\)/,alias:"builtin"},entity:/&#?[\da-z]{1,8};/i,"line-continuation":{pattern:/(^| )\+$/m,lookbehind:!0,alias:"punctuation"}};function o(i){i=i.split(" ");for(var s={},l=0,c=i.length;l>=?|<<=?|&&?|\|\|?|[-+*/%&|^!=<>?]=?/,punctuation:/[(),:]/}}return Uy}var By,NI;function Ah(){if(NI)return By;NI=1,By=e,e.displayName="csharp",e.aliases=["dotnet","cs"];function e(t){(function(n){function r(V,P){return V.replace(/<<(\d+)>>/g,function(N,K){return"(?:"+P[+K]+")"})}function a(V,P,N){return RegExp(r(V,P),N||"")}function o(V,P){for(var N=0;N>/g,function(){return"(?:"+V+")"});return V.replace(/<>/g,"[^\\s\\S]")}var i={type:"bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void",typeDeclaration:"class enum interface record struct",contextual:"add alias and ascending async await by descending from(?=\\s*(?:\\w|$)) get global group into init(?=\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\s*{)",other:"abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield"};function s(V){return"\\b(?:"+V.trim().replace(/ /g,"|")+")\\b"}var l=s(i.typeDeclaration),c=RegExp(s(i.type+" "+i.typeDeclaration+" "+i.contextual+" "+i.other)),u=s(i.typeDeclaration+" "+i.contextual+" "+i.other),d=s(i.type+" "+i.typeDeclaration+" "+i.other),g=o(/<(?:[^<>;=+\-*/%&|^]|<>)*>/.source,2),m=o(/\((?:[^()]|<>)*\)/.source,2),b=/@?\b[A-Za-z_]\w*\b/.source,y=r(/<<0>>(?:\s*<<1>>)?/.source,[b,g]),w=r(/(?!<<0>>)<<1>>(?:\s*\.\s*<<1>>)*/.source,[u,y]),v=/\[\s*(?:,\s*)*\]/.source,h=r(/<<0>>(?:\s*(?:\?\s*)?<<1>>)*(?:\s*\?)?/.source,[w,v]),S=r(/[^,()<>[\];=+\-*/%&|^]|<<0>>|<<1>>|<<2>>/.source,[g,m,v]),E=r(/\(<<0>>+(?:,<<0>>+)+\)/.source,[S]),k=r(/(?:<<0>>|<<1>>)(?:\s*(?:\?\s*)?<<2>>)*(?:\s*\?)?/.source,[E,w,v]),x={keyword:c,punctuation:/[<>()?,.:[\]]/},C=/'(?:[^\r\n'\\]|\\.|\\[Uux][\da-fA-F]{1,8})'/.source,_=/"(?:\\.|[^\\"\r\n])*"/.source,R=/@"(?:""|\\[\s\S]|[^\\"])*"(?!")/.source;n.languages.csharp=n.languages.extend("clike",{string:[{pattern:a(/(^|[^$\\])<<0>>/.source,[R]),lookbehind:!0,greedy:!0},{pattern:a(/(^|[^@$\\])<<0>>/.source,[_]),lookbehind:!0,greedy:!0}],"class-name":[{pattern:a(/(\busing\s+static\s+)<<0>>(?=\s*;)/.source,[w]),lookbehind:!0,inside:x},{pattern:a(/(\busing\s+<<0>>\s*=\s*)<<1>>(?=\s*;)/.source,[b,k]),lookbehind:!0,inside:x},{pattern:a(/(\busing\s+)<<0>>(?=\s*=)/.source,[b]),lookbehind:!0},{pattern:a(/(\b<<0>>\s+)<<1>>/.source,[l,y]),lookbehind:!0,inside:x},{pattern:a(/(\bcatch\s*\(\s*)<<0>>/.source,[w]),lookbehind:!0,inside:x},{pattern:a(/(\bwhere\s+)<<0>>/.source,[b]),lookbehind:!0},{pattern:a(/(\b(?:is(?:\s+not)?|as)\s+)<<0>>/.source,[h]),lookbehind:!0,inside:x},{pattern:a(/\b<<0>>(?=\s+(?!<<1>>|with\s*\{)<<2>>(?:\s*[=,;:{)\]]|\s+(?:in|when)\b))/.source,[k,d,b]),inside:x}],keyword:c,number:/(?:\b0(?:x[\da-f_]*[\da-f]|b[01_]*[01])|(?:\B\.\d+(?:_+\d+)*|\b\d+(?:_+\d+)*(?:\.\d+(?:_+\d+)*)?)(?:e[-+]?\d+(?:_+\d+)*)?)(?:[dflmu]|lu|ul)?\b/i,operator:/>>=?|<<=?|[-=]>|([-+&|])\1|~|\?\?=?|[-+*/%&|^!=<>]=?/,punctuation:/\?\.?|::|[{}[\];(),.:]/}),n.languages.insertBefore("csharp","number",{range:{pattern:/\.\./,alias:"operator"}}),n.languages.insertBefore("csharp","punctuation",{"named-parameter":{pattern:a(/([(,]\s*)<<0>>(?=\s*:)/.source,[b]),lookbehind:!0,alias:"punctuation"}}),n.languages.insertBefore("csharp","class-name",{namespace:{pattern:a(/(\b(?:namespace|using)\s+)<<0>>(?:\s*\.\s*<<0>>)*(?=\s*[;{])/.source,[b]),lookbehind:!0,inside:{punctuation:/\./}},"type-expression":{pattern:a(/(\b(?:default|sizeof|typeof)\s*\(\s*(?!\s))(?:[^()\s]|\s(?!\s)|<<0>>)*(?=\s*\))/.source,[m]),lookbehind:!0,alias:"class-name",inside:x},"return-type":{pattern:a(/<<0>>(?=\s+(?:<<1>>\s*(?:=>|[({]|\.\s*this\s*\[)|this\s*\[))/.source,[k,w]),inside:x,alias:"class-name"},"constructor-invocation":{pattern:a(/(\bnew\s+)<<0>>(?=\s*[[({])/.source,[k]),lookbehind:!0,inside:x,alias:"class-name"},"generic-method":{pattern:a(/<<0>>\s*<<1>>(?=\s*\()/.source,[b,g]),inside:{function:a(/^<<0>>/.source,[b]),generic:{pattern:RegExp(g),alias:"class-name",inside:x}}},"type-list":{pattern:a(/\b((?:<<0>>\s+<<1>>|record\s+<<1>>\s*<<5>>|where\s+<<2>>)\s*:\s*)(?:<<3>>|<<4>>|<<1>>\s*<<5>>|<<6>>)(?:\s*,\s*(?:<<3>>|<<4>>|<<6>>))*(?=\s*(?:where|[{;]|=>|$))/.source,[l,y,b,k,c.source,m,/\bnew\s*\(\s*\)/.source]),lookbehind:!0,inside:{"record-arguments":{pattern:a(/(^(?!new\s*\()<<0>>\s*)<<1>>/.source,[y,m]),lookbehind:!0,greedy:!0,inside:n.languages.csharp},keyword:c,"class-name":{pattern:RegExp(k),greedy:!0,inside:x},punctuation:/[,()]/}},preprocessor:{pattern:/(^[\t ]*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(#)\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}});var T=_+"|"+C,L=r(/\/(?![*/])|\/\/[^\r\n]*[\r\n]|\/\*(?:[^*]|\*(?!\/))*\*\/|<<0>>/.source,[T]),D=o(r(/[^"'/()]|<<0>>|\(<>*\)/.source,[L]),2),H=/\b(?:assembly|event|field|method|module|param|property|return|type)\b/.source,z=r(/<<0>>(?:\s*\(<<1>>*\))?/.source,[w,D]);n.languages.insertBefore("csharp","class-name",{attribute:{pattern:a(/((?:^|[^\s\w>)?])\s*\[\s*)(?:<<0>>\s*:\s*)?<<1>>(?:\s*,\s*<<1>>)*(?=\s*\])/.source,[H,z]),lookbehind:!0,greedy:!0,inside:{target:{pattern:a(/^<<0>>(?=\s*:)/.source,[H]),alias:"keyword"},"attribute-arguments":{pattern:a(/\(<<0>>*\)/.source,[D]),inside:n.languages.csharp},"class-name":{pattern:RegExp(w),inside:{punctuation:/\./}},punctuation:/[:,]/}}});var M=/:[^}\r\n]+/.source,U=o(r(/[^"'/()]|<<0>>|\(<>*\)/.source,[L]),2),X=r(/\{(?!\{)(?:(?![}:])<<0>>)*<<1>>?\}/.source,[U,M]),j=o(r(/[^"'/()]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|<<0>>|\(<>*\)/.source,[T]),2),O=r(/\{(?!\{)(?:(?![}:])<<0>>)*<<1>>?\}/.source,[j,M]);function A(V,P){return{interpolation:{pattern:a(/((?:^|[^{])(?:\{\{)*)<<0>>/.source,[V]),lookbehind:!0,inside:{"format-string":{pattern:a(/(^\{(?:(?![}:])<<0>>)*)<<1>>(?=\}$)/.source,[P,M]),lookbehind:!0,inside:{punctuation:/^:/}},punctuation:/^\{|\}$/,expression:{pattern:/[\s\S]+/,alias:"language-csharp",inside:n.languages.csharp}}},string:/[\s\S]+/}}n.languages.insertBefore("csharp","string",{"interpolation-string":[{pattern:a(/(^|[^\\])(?:\$@|@\$)"(?:""|\\[\s\S]|\{\{|<<0>>|[^\\{"])*"/.source,[X]),lookbehind:!0,greedy:!0,inside:A(X,U)},{pattern:a(/(^|[^@\\])\$"(?:\\.|\{\{|<<0>>|[^\\"{])*"/.source,[O]),lookbehind:!0,greedy:!0,inside:A(O,j)}],char:{pattern:RegExp(C),greedy:!0}}),n.languages.dotnet=n.languages.cs=n.languages.csharp})(t)}return By}var Hy,II;function ube(){if(II)return Hy;II=1;var e=Ah();Hy=t,t.displayName="aspnet",t.aliases=[];function t(n){n.register(e),n.languages.aspnet=n.languages.extend("markup",{"page-directive":{pattern:/<%\s*@.*%>/,alias:"tag",inside:{"page-directive":{pattern:/<%\s*@\s*(?:Assembly|Control|Implements|Import|Master(?:Type)?|OutputCache|Page|PreviousPageType|Reference|Register)?|%>/i,alias:"tag"},rest:n.languages.markup.tag.inside}},directive:{pattern:/<%.*%>/,alias:"tag",inside:{directive:{pattern:/<%\s*?[$=%#:]{0,2}|%>/,alias:"tag"},rest:n.languages.csharp}}}),n.languages.aspnet.tag.pattern=/<(?!%)\/?[^\s>\/]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/,n.languages.insertBefore("inside","punctuation",{directive:n.languages.aspnet.directive},n.languages.aspnet.tag.inside["attr-value"]),n.languages.insertBefore("aspnet","comment",{"asp-comment":{pattern:/<%--[\s\S]*?--%>/,alias:["asp","comment"]}}),n.languages.insertBefore("aspnet",n.languages.javascript?"script":"tag",{"asp-script":{pattern:/(]*>)[\s\S]*?(?=<\/script>)/i,lookbehind:!0,alias:["asp","script"],inside:n.languages.csharp||{}}})}return Hy}var Vy,OI;function dbe(){if(OI)return Vy;OI=1,Vy=e,e.displayName="autohotkey",e.aliases=[];function e(t){t.languages.autohotkey={comment:[{pattern:/(^|\s);.*/,lookbehind:!0},{pattern:/(^[\t ]*)\/\*(?:[\r\n](?![ \t]*\*\/)|[^\r\n])*(?:[\r\n][ \t]*\*\/)?/m,lookbehind:!0,greedy:!0}],tag:{pattern:/^([ \t]*)[^\s,`":]+(?=:[ \t]*$)/m,lookbehind:!0},string:/"(?:[^"\n\r]|"")*"/,variable:/%\w+%/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/\?|\/\/?=?|:=|\|[=|]?|&[=&]?|\+[=+]?|-[=-]?|\*[=*]?|<(?:<=?|>|=)?|>>?=?|[.^!=~]=?|\b(?:AND|NOT|OR)\b/,boolean:/\b(?:false|true)\b/,selector:/\b(?:AutoTrim|BlockInput|Break|Click|ClipWait|Continue|Control|ControlClick|ControlFocus|ControlGet|ControlGetFocus|ControlGetPos|ControlGetText|ControlMove|ControlSend|ControlSendRaw|ControlSetText|CoordMode|Critical|DetectHiddenText|DetectHiddenWindows|Drive|DriveGet|DriveSpaceFree|EnvAdd|EnvDiv|EnvGet|EnvMult|EnvSet|EnvSub|EnvUpdate|Exit|ExitApp|FileAppend|FileCopy|FileCopyDir|FileCreateDir|FileCreateShortcut|FileDelete|FileEncoding|FileGetAttrib|FileGetShortcut|FileGetSize|FileGetTime|FileGetVersion|FileInstall|FileMove|FileMoveDir|FileRead|FileReadLine|FileRecycle|FileRecycleEmpty|FileRemoveDir|FileSelectFile|FileSelectFolder|FileSetAttrib|FileSetTime|FormatTime|GetKeyState|Gosub|Goto|GroupActivate|GroupAdd|GroupClose|GroupDeactivate|Gui|GuiControl|GuiControlGet|Hotkey|ImageSearch|IniDelete|IniRead|IniWrite|Input|InputBox|KeyWait|ListHotkeys|ListLines|ListVars|Loop|Menu|MouseClick|MouseClickDrag|MouseGetPos|MouseMove|MsgBox|OnExit|OutputDebug|Pause|PixelGetColor|PixelSearch|PostMessage|Process|Progress|Random|RegDelete|RegRead|RegWrite|Reload|Repeat|Return|Run|RunAs|RunWait|Send|SendEvent|SendInput|SendMessage|SendMode|SendPlay|SendRaw|SetBatchLines|SetCapslockState|SetControlDelay|SetDefaultMouseSpeed|SetEnv|SetFormat|SetKeyDelay|SetMouseDelay|SetNumlockState|SetRegView|SetScrollLockState|SetStoreCapslockMode|SetTimer|SetTitleMatchMode|SetWinDelay|SetWorkingDir|Shutdown|Sleep|Sort|SoundBeep|SoundGet|SoundGetWaveVolume|SoundPlay|SoundSet|SoundSetWaveVolume|SplashImage|SplashTextOff|SplashTextOn|SplitPath|StatusBarGetText|StatusBarWait|StringCaseSense|StringGetPos|StringLeft|StringLen|StringLower|StringMid|StringReplace|StringRight|StringSplit|StringTrimLeft|StringTrimRight|StringUpper|Suspend|SysGet|Thread|ToolTip|Transform|TrayTip|URLDownloadToFile|WinActivate|WinActivateBottom|WinClose|WinGet|WinGetActiveStats|WinGetActiveTitle|WinGetClass|WinGetPos|WinGetText|WinGetTitle|WinHide|WinKill|WinMaximize|WinMenuSelectItem|WinMinimize|WinMinimizeAll|WinMinimizeAllUndo|WinMove|WinRestore|WinSet|WinSetTitle|WinShow|WinWait|WinWaitActive|WinWaitClose|WinWaitNotActive)\b/i,constant:/\b(?:a_ahkpath|a_ahkversion|a_appdata|a_appdatacommon|a_autotrim|a_batchlines|a_caretx|a_carety|a_computername|a_controldelay|a_cursor|a_dd|a_ddd|a_dddd|a_defaultmousespeed|a_desktop|a_desktopcommon|a_detecthiddentext|a_detecthiddenwindows|a_endchar|a_eventinfo|a_exitreason|a_fileencoding|a_formatfloat|a_formatinteger|a_gui|a_guicontrol|a_guicontrolevent|a_guievent|a_guiheight|a_guiwidth|a_guix|a_guiy|a_hour|a_iconfile|a_iconhidden|a_iconnumber|a_icontip|a_index|a_ipaddress1|a_ipaddress2|a_ipaddress3|a_ipaddress4|a_is64bitos|a_isadmin|a_iscompiled|a_iscritical|a_ispaused|a_issuspended|a_isunicode|a_keydelay|a_language|a_lasterror|a_linefile|a_linenumber|a_loopfield|a_loopfileattrib|a_loopfiledir|a_loopfileext|a_loopfilefullpath|a_loopfilelongpath|a_loopfilename|a_loopfileshortname|a_loopfileshortpath|a_loopfilesize|a_loopfilesizekb|a_loopfilesizemb|a_loopfiletimeaccessed|a_loopfiletimecreated|a_loopfiletimemodified|a_loopreadline|a_loopregkey|a_loopregname|a_loopregsubkey|a_loopregtimemodified|a_loopregtype|a_mday|a_min|a_mm|a_mmm|a_mmmm|a_mon|a_mousedelay|a_msec|a_mydocuments|a_now|a_nowutc|a_numbatchlines|a_ostype|a_osversion|a_priorhotkey|a_priorkey|a_programfiles|a_programs|a_programscommon|a_ptrsize|a_regview|a_screendpi|a_screenheight|a_screenwidth|a_scriptdir|a_scriptfullpath|a_scripthwnd|a_scriptname|a_sec|a_space|a_startmenu|a_startmenucommon|a_startup|a_startupcommon|a_stringcasesense|a_tab|a_temp|a_thisfunc|a_thishotkey|a_thislabel|a_thismenu|a_thismenuitem|a_thismenuitempos|a_tickcount|a_timeidle|a_timeidlephysical|a_timesincepriorhotkey|a_timesincethishotkey|a_titlematchmode|a_titlematchmodespeed|a_username|a_wday|a_windelay|a_windir|a_workingdir|a_yday|a_year|a_yweek|a_yyyy|clipboard|clipboardall|comspec|errorlevel|programfiles)\b/i,builtin:/\b(?:abs|acos|asc|asin|atan|ceil|chr|class|comobjactive|comobjarray|comobjconnect|comobjcreate|comobjerror|comobjflags|comobjget|comobjquery|comobjtype|comobjvalue|cos|dllcall|exp|fileexist|Fileopen|floor|format|il_add|il_create|il_destroy|instr|isfunc|islabel|IsObject|ln|log|ltrim|lv_add|lv_delete|lv_deletecol|lv_getcount|lv_getnext|lv_gettext|lv_insert|lv_insertcol|lv_modify|lv_modifycol|lv_setimagelist|mod|numget|numput|onmessage|regexmatch|regexreplace|registercallback|round|rtrim|sb_seticon|sb_setparts|sb_settext|sin|sqrt|strlen|strreplace|strsplit|substr|tan|tv_add|tv_delete|tv_get|tv_getchild|tv_getcount|tv_getnext|tv_getparent|tv_getprev|tv_getselection|tv_gettext|tv_modify|varsetcapacity|winactive|winexist|__Call|__Get|__New|__Set)\b/i,symbol:/\b(?:alt|altdown|altup|appskey|backspace|browser_back|browser_favorites|browser_forward|browser_home|browser_refresh|browser_search|browser_stop|bs|capslock|ctrl|ctrlbreak|ctrldown|ctrlup|del|delete|down|end|enter|esc|escape|f1|f10|f11|f12|f13|f14|f15|f16|f17|f18|f19|f2|f20|f21|f22|f23|f24|f3|f4|f5|f6|f7|f8|f9|home|ins|insert|joy1|joy10|joy11|joy12|joy13|joy14|joy15|joy16|joy17|joy18|joy19|joy2|joy20|joy21|joy22|joy23|joy24|joy25|joy26|joy27|joy28|joy29|joy3|joy30|joy31|joy32|joy4|joy5|joy6|joy7|joy8|joy9|joyaxes|joybuttons|joyinfo|joyname|joypov|joyr|joyu|joyv|joyx|joyy|joyz|lalt|launch_app1|launch_app2|launch_mail|launch_media|lbutton|lcontrol|lctrl|left|lshift|lwin|lwindown|lwinup|mbutton|media_next|media_play_pause|media_prev|media_stop|numlock|numpad0|numpad1|numpad2|numpad3|numpad4|numpad5|numpad6|numpad7|numpad8|numpad9|numpadadd|numpadclear|numpaddel|numpaddiv|numpaddot|numpaddown|numpadend|numpadenter|numpadhome|numpadins|numpadleft|numpadmult|numpadpgdn|numpadpgup|numpadright|numpadsub|numpadup|pgdn|pgup|printscreen|ralt|rbutton|rcontrol|rctrl|right|rshift|rwin|rwindown|rwinup|scrolllock|shift|shiftdown|shiftup|space|tab|up|volume_down|volume_mute|volume_up|wheeldown|wheelleft|wheelright|wheelup|xbutton1|xbutton2)\b/i,important:/#\b(?:AllowSameLineComments|ClipboardTimeout|CommentFlag|DerefChar|ErrorStdOut|EscapeChar|HotkeyInterval|HotkeyModifierTimeout|Hotstring|If|IfTimeout|IfWinActive|IfWinExist|IfWinNotActive|IfWinNotExist|Include|IncludeAgain|InputLevel|InstallKeybdHook|InstallMouseHook|KeyHistory|MaxHotkeysPerInterval|MaxMem|MaxThreads|MaxThreadsBuffer|MaxThreadsPerHotkey|MenuMaskKey|NoEnv|NoTrayIcon|Persistent|SingleInstance|UseHook|Warn|WinActivateForce)\b/i,keyword:/\b(?:Abort|AboveNormal|Add|ahk_class|ahk_exe|ahk_group|ahk_id|ahk_pid|All|Alnum|Alpha|AltSubmit|AltTab|AltTabAndMenu|AltTabMenu|AltTabMenuDismiss|AlwaysOnTop|AutoSize|Background|BackgroundTrans|BelowNormal|between|BitAnd|BitNot|BitOr|BitShiftLeft|BitShiftRight|BitXOr|Bold|Border|Button|ByRef|Catch|Checkbox|Checked|CheckedGray|Choose|ChooseString|Close|Color|ComboBox|Contains|ControlList|Count|Date|DateTime|Days|DDL|Default|DeleteAll|Delimiter|Deref|Destroy|Digit|Disable|Disabled|DropDownList|Edit|Eject|Else|Enable|Enabled|Error|Exist|Expand|ExStyle|FileSystem|Finally|First|Flash|Float|FloatFast|Focus|Font|for|global|Grid|Group|GroupBox|GuiClose|GuiContextMenu|GuiDropFiles|GuiEscape|GuiSize|Hdr|Hidden|Hide|High|HKCC|HKCR|HKCU|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_LOCAL_MACHINE|HKEY_USERS|HKLM|HKU|Hours|HScroll|Icon|IconSmall|ID|IDLast|If|IfEqual|IfExist|IfGreater|IfGreaterOrEqual|IfInString|IfLess|IfLessOrEqual|IfMsgBox|IfNotEqual|IfNotExist|IfNotInString|IfWinActive|IfWinExist|IfWinNotActive|IfWinNotExist|Ignore|ImageList|in|Integer|IntegerFast|Interrupt|is|italic|Join|Label|LastFound|LastFoundExist|Limit|Lines|List|ListBox|ListView|local|Lock|Logoff|Low|Lower|Lowercase|MainWindow|Margin|Maximize|MaximizeBox|MaxSize|Minimize|MinimizeBox|MinMax|MinSize|Minutes|MonthCal|Mouse|Move|Multi|NA|No|NoActivate|NoDefault|NoHide|NoIcon|NoMainWindow|norm|Normal|NoSort|NoSortHdr|NoStandard|Not|NoTab|NoTimers|Number|Off|Ok|On|OwnDialogs|Owner|Parse|Password|Picture|Pixel|Pos|Pow|Priority|ProcessName|Radio|Range|Read|ReadOnly|Realtime|Redraw|Region|REG_BINARY|REG_DWORD|REG_EXPAND_SZ|REG_MULTI_SZ|REG_SZ|Relative|Rename|Report|Resize|Restore|Retry|RGB|Screen|Seconds|Section|Serial|SetLabel|ShiftAltTab|Show|Single|Slider|SortDesc|Standard|static|Status|StatusBar|StatusCD|strike|Style|Submit|SysMenu|Tab2|TabStop|Text|Theme|Throw|Tile|ToggleCheck|ToggleEnable|ToolWindow|Top|Topmost|TransColor|Transparent|Tray|TreeView|Try|TryAgain|Type|UnCheck|underline|Unicode|Unlock|Until|UpDown|Upper|Uppercase|UseErrorLevel|Vis|VisFirst|Visible|VScroll|Wait|WaitClose|WantCtrlA|WantF2|WantReturn|While|Wrap|Xdigit|xm|xp|xs|Yes|ym|yp|ys)\b/i,function:/[^(); \t,\n+*\-=?>:\\\/<&%\[\]]+(?=\()/,punctuation:/[{}[\]():,]/}}return Vy}var qy,DI;function fbe(){if(DI)return qy;DI=1,qy=e,e.displayName="autoit",e.aliases=[];function e(t){t.languages.autoit={comment:[/;.*/,{pattern:/(^[\t ]*)#(?:comments-start|cs)[\s\S]*?^[ \t]*#(?:ce|comments-end)/m,lookbehind:!0}],url:{pattern:/(^[\t ]*#include\s+)(?:<[^\r\n>]+>|"[^\r\n"]+")/m,lookbehind:!0},string:{pattern:/(["'])(?:\1\1|(?!\1)[^\r\n])*\1/,greedy:!0,inside:{variable:/([%$@])\w+\1/}},directive:{pattern:/(^[\t ]*)#[\w-]+/m,lookbehind:!0,alias:"keyword"},function:/\b\w+(?=\()/,variable:/[$@]\w+/,keyword:/\b(?:Case|Const|Continue(?:Case|Loop)|Default|Dim|Do|Else(?:If)?|End(?:Func|If|Select|Switch|With)|Enum|Exit(?:Loop)?|For|Func|Global|If|In|Local|Next|Null|ReDim|Select|Static|Step|Switch|Then|To|Until|Volatile|WEnd|While|With)\b/i,number:/\b(?:0x[\da-f]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)\b/i,boolean:/\b(?:False|True)\b/i,operator:/<[=>]?|[-+*\/=&>]=?|[?^]|\b(?:And|Not|Or)\b/i,punctuation:/[\[\]().,:]/}}return qy}var Gy,LI;function pbe(){if(LI)return Gy;LI=1,Gy=e,e.displayName="avisynth",e.aliases=["avs"];function e(t){(function(n){function r(u,d){return u.replace(/<<(\d+)>>/g,function(g,m){return d[+m]})}function a(u,d,g){return RegExp(r(u,d),g||"")}var o=/bool|clip|float|int|string|val/.source,i=[/is(?:bool|clip|float|int|string)|defined|(?:(?:internal)?function|var)?exists?/.source,/apply|assert|default|eval|import|nop|select|undefined/.source,/opt_(?:allowfloataudio|avipadscanlines|dwchannelmask|enable_(?:b64a|planartopackedrgb|v210|y3_10_10|y3_10_16)|usewaveextensible|vdubplanarhack)|set(?:cachemode|maxcpu|memorymax|planarlegacyalignment|workingdir)/.source,/hex(?:value)?|value/.source,/abs|ceil|continued(?:denominator|numerator)?|exp|floor|fmod|frac|log(?:10)?|max|min|muldiv|pi|pow|rand|round|sign|spline|sqrt/.source,/a?sinh?|a?cosh?|a?tan[2h]?/.source,/(?:bit(?:and|not|x?or|[lr]?shift[aslu]?|sh[lr]|sa[lr]|[lr]rotatel?|ro[rl]|te?st|set(?:count)?|cl(?:ea)?r|ch(?:an)?ge?))/.source,/average(?:[bgr]|chroma[uv]|luma)|(?:[rgb]|chroma[uv]|luma|rgb|[yuv](?=difference(?:fromprevious|tonext)))difference(?:fromprevious|tonext)?|[yuvrgb]plane(?:median|min|max|minmaxdifference)/.source,/getprocessinfo|logmsg|script(?:dir(?:utf8)?|file(?:utf8)?|name(?:utf8)?)|setlogparams/.source,/chr|(?:fill|find|left|mid|replace|rev|right)str|format|[lu]case|ord|str(?:cmpi?|fromutf8|len|toutf8)|time|trim(?:all|left|right)/.source,/isversionorgreater|version(?:number|string)/.source,/buildpixeltype|colorspacenametopixeltype/.source,/addautoloaddir|on(?:cpu|cuda)|prefetch|setfiltermtmode/.source].join("|"),s=[/has(?:audio|video)/.source,/height|width/.source,/frame(?:count|rate)|framerate(?:denominator|numerator)/.source,/getparity|is(?:field|frame)based/.source,/bitspercomponent|componentsize|hasalpha|is(?:planar(?:rgba?)?|interleaved|rgb(?:24|32|48|64)?|y(?:8|u(?:va?|y2))?|yv(?:12|16|24|411)|420|422|444|packedrgb)|numcomponents|pixeltype/.source,/audio(?:bits|channels|duration|length(?:[fs]|hi|lo)?|rate)|isaudio(?:float|int)/.source].join("|"),l=[/avi(?:file)?source|directshowsource|image(?:reader|source|sourceanim)|opendmlsource|segmented(?:avisource|directshowsource)|wavsource/.source,/coloryuv|convertbacktoyuy2|convertto(?:RGB(?:24|32|48|64)|(?:planar)?RGBA?|Y8?|YV(?:12|16|24|411)|YUVA?(?:411|420|422|444)|YUY2)|fixluminance|gr[ae]yscale|invert|levels|limiter|mergea?rgb|merge(?:chroma|luma)|rgbadjust|show(?:alpha|blue|green|red)|swapuv|tweak|[uv]toy8?|ytouv/.source,/(?:colorkey|reset)mask|layer|mask(?:hs)?|merge|overlay|subtract/.source,/addborders|(?:bicubic|bilinear|blackman|gauss|lanczos4|lanczos|point|sinc|spline(?:16|36|64))resize|crop(?:bottom)?|flip(?:horizontal|vertical)|(?:horizontal|vertical)?reduceby2|letterbox|skewrows|turn(?:180|left|right)/.source,/blur|fixbrokenchromaupsampling|generalconvolution|(?:spatial|temporal)soften|sharpen/.source,/trim|(?:un)?alignedsplice|(?:assume|assumescaled|change|convert)FPS|(?:delete|duplicate)frame|dissolve|fade(?:in|io|out)[02]?|freezeframe|interleave|loop|reverse|select(?:even|odd|(?:range)?every)/.source,/assume[bt]ff|assume(?:field|frame)based|bob|complementparity|doubleweave|peculiarblend|pulldown|separate(?:columns|fields|rows)|swapfields|weave(?:columns|rows)?/.source,/amplify(?:db)?|assumesamplerate|audiodub(?:ex)?|audiotrim|convertaudioto(?:(?:8|16|24|32)bit|float)|converttomono|delayaudio|ensurevbrmp3sync|get(?:left|right)?channel|kill(?:audio|video)|mergechannels|mixaudio|monotostereo|normalize|resampleaudio|ssrc|supereq|timestretch/.source,/animate|applyrange|conditional(?:filter|reader|select)|frameevaluate|scriptclip|tcp(?:server|source)|writefile(?:end|if|start)?/.source,/imagewriter/.source,/blackness|blankclip|colorbars(?:hd)?|compare|dumpfiltergraph|echo|histogram|info|messageclip|preroll|setgraphanalysis|show(?:framenumber|smpte|time)|showfiveversions|stack(?:horizontal|vertical)|subtitle|tone|version/.source].join("|"),c=[i,s,l].join("|");n.languages.avisynth={comment:[{pattern:/(^|[^\\])\[\*(?:[^\[*]|\[(?!\*)|\*(?!\])|\[\*(?:[^\[*]|\[(?!\*)|\*(?!\]))*\*\])*\*\]/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\$])#.*/,lookbehind:!0,greedy:!0}],argument:{pattern:a(/\b(?:<<0>>)\s+("?)\w+\1/.source,[o],"i"),inside:{keyword:/^\w+/}},"argument-label":{pattern:/([,(][\s\\]*)\w+\s*=(?!=)/,lookbehind:!0,inside:{"argument-name":{pattern:/^\w+/,alias:"punctuation"},punctuation:/=$/}},string:[{pattern:/"""[\s\S]*?"""/,greedy:!0},{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0,inside:{constant:{pattern:/\b(?:DEFAULT_MT_MODE|(?:MAINSCRIPT|PROGRAM|SCRIPT)DIR|(?:MACHINE|USER)_(?:CLASSIC|PLUS)_PLUGINS)\b/}}}],variable:/\b(?:last)\b/i,boolean:/\b(?:false|no|true|yes)\b/i,keyword:/\b(?:catch|else|for|function|global|if|return|try|while|__END__)\b/i,constant:/\bMT_(?:MULTI_INSTANCE|NICE_FILTER|SERIALIZED|SPECIAL_MT)\b/,"builtin-function":{pattern:a(/\b(?:<<0>>)\b/.source,[c],"i"),alias:"function"},"type-cast":{pattern:a(/\b(?:<<0>>)(?=\s*\()/.source,[o],"i"),alias:"keyword"},function:{pattern:/\b[a-z_]\w*(?=\s*\()|(\.)[a-z_]\w*\b/i,lookbehind:!0},"line-continuation":{pattern:/(^[ \t]*)\\|\\(?=[ \t]*$)/m,lookbehind:!0,alias:"punctuation"},number:/\B\$(?:[\da-f]{6}|[\da-f]{8})\b|(?:(?:\b|\B-)\d+(?:\.\d*)?\b|\B\.\d+\b)/i,operator:/\+\+?|[!=<>]=?|&&|\|\||[?:*/%-]/,punctuation:/[{}\[\]();,.]/},n.languages.avs=n.languages.avisynth})(t)}return Gy}var Wy,MI;function gbe(){if(MI)return Wy;MI=1,Wy=e,e.displayName="avroIdl",e.aliases=[];function e(t){t.languages["avro-idl"]={comment:{pattern:/\/\/.*|\/\*[\s\S]*?\*\//,greedy:!0},string:{pattern:/(^|[^\\])"(?:[^\r\n"\\]|\\.)*"/,lookbehind:!0,greedy:!0},annotation:{pattern:/@(?:[$\w.-]|`[^\r\n`]+`)+/,greedy:!0,alias:"function"},"function-identifier":{pattern:/`[^\r\n`]+`(?=\s*\()/,greedy:!0,alias:"function"},identifier:{pattern:/`[^\r\n`]+`/,greedy:!0},"class-name":{pattern:/(\b(?:enum|error|protocol|record|throws)\b\s+)[$\w]+/,lookbehind:!0,greedy:!0},keyword:/\b(?:array|boolean|bytes|date|decimal|double|enum|error|false|fixed|float|idl|import|int|local_timestamp_ms|long|map|null|oneway|protocol|record|schema|string|throws|time_ms|timestamp_ms|true|union|uuid|void)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:[{pattern:/(^|[^\w.])-?(?:(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|0x(?:[a-f0-9]+(?:\.[a-f0-9]*)?|\.[a-f0-9]+)(?:p[+-]?\d+)?)[dfl]?(?![\w.])/i,lookbehind:!0},/-?\b(?:Infinity|NaN)\b/],operator:/=/,punctuation:/[()\[\]{}<>.:,;-]/},t.languages.avdl=t.languages["avro-idl"]}return Wy}var Ky,PI;function az(){if(PI)return Ky;PI=1,Ky=e,e.displayName="bash",e.aliases=["shell"];function e(t){(function(n){var r="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",a={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},o={bash:a,environment:{pattern:RegExp("\\$"+r),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+r),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};n.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+r),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:o},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:a}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:o},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:o.entity}}],environment:{pattern:RegExp("\\$?"+r),alias:"constant"},variable:o.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},a.inside=n.languages.bash;for(var i=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],s=o.variable[1].inside,l=0;l?^\w +\-.])*"/,greedy:!0},number:/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:E[+-]?\d+)?/i,keyword:/\b(?:AS|BEEP|BLOAD|BSAVE|CALL(?: ABSOLUTE)?|CASE|CHAIN|CHDIR|CLEAR|CLOSE|CLS|COM|COMMON|CONST|DATA|DECLARE|DEF(?: FN| SEG|DBL|INT|LNG|SNG|STR)|DIM|DO|DOUBLE|ELSE|ELSEIF|END|ENVIRON|ERASE|ERROR|EXIT|FIELD|FILES|FOR|FUNCTION|GET|GOSUB|GOTO|IF|INPUT|INTEGER|IOCTL|KEY|KILL|LINE INPUT|LOCATE|LOCK|LONG|LOOP|LSET|MKDIR|NAME|NEXT|OFF|ON(?: COM| ERROR| KEY| TIMER)?|OPEN|OPTION BASE|OUT|POKE|PUT|READ|REDIM|REM|RESTORE|RESUME|RETURN|RMDIR|RSET|RUN|SELECT CASE|SHARED|SHELL|SINGLE|SLEEP|STATIC|STEP|STOP|STRING|SUB|SWAP|SYSTEM|THEN|TIMER|TO|TROFF|TRON|TYPE|UNLOCK|UNTIL|USING|VIEW PRINT|WAIT|WEND|WHILE|WRITE)(?:\$|\b)/i,function:/\b(?:ABS|ACCESS|ACOS|ANGLE|AREA|ARITHMETIC|ARRAY|ASIN|ASK|AT|ATN|BASE|BEGIN|BREAK|CAUSE|CEIL|CHR|CLIP|COLLATE|COLOR|CON|COS|COSH|COT|CSC|DATE|DATUM|DEBUG|DECIMAL|DEF|DEG|DEGREES|DELETE|DET|DEVICE|DISPLAY|DOT|ELAPSED|EPS|ERASABLE|EXLINE|EXP|EXTERNAL|EXTYPE|FILETYPE|FIXED|FP|GO|GRAPH|HANDLER|IDN|IMAGE|IN|INT|INTERNAL|IP|IS|KEYED|LBOUND|LCASE|LEFT|LEN|LENGTH|LET|LINE|LINES|LOG|LOG10|LOG2|LTRIM|MARGIN|MAT|MAX|MAXNUM|MID|MIN|MISSING|MOD|NATIVE|NUL|NUMERIC|OF|OPTION|ORD|ORGANIZATION|OUTIN|OUTPUT|PI|POINT|POINTER|POINTS|POS|PRINT|PROGRAM|PROMPT|RAD|RADIANS|RANDOMIZE|RECORD|RECSIZE|RECTYPE|RELATIVE|REMAINDER|REPEAT|REST|RETRY|REWRITE|RIGHT|RND|ROUND|RTRIM|SAME|SEC|SELECT|SEQUENTIAL|SET|SETTER|SGN|SIN|SINH|SIZE|SKIP|SQR|STANDARD|STATUS|STR|STREAM|STYLE|TAB|TAN|TANH|TEMPLATE|TEXT|THERE|TIME|TIMEOUT|TRACE|TRANSFORM|TRUNCATE|UBOUND|UCASE|USE|VAL|VARIABLE|VIEWPORT|WHEN|WINDOW|WITH|ZER|ZONEWIDTH)(?:\$|\b)/i,operator:/<[=>]?|>=?|[+\-*\/^=&]|\b(?:AND|EQV|IMP|NOT|OR|XOR)\b/i,punctuation:/[,;:()]/}}return Yy}var Zy,FI;function mbe(){if(FI)return Zy;FI=1,Zy=e,e.displayName="batch",e.aliases=[];function e(t){(function(n){var r=/%%?[~:\w]+%?|!\S+!/,a={pattern:/\/[a-z?]+(?=[ :]|$):?|-[a-z]\b|--[a-z-]+\b/im,alias:"attr-name",inside:{punctuation:/:/}},o=/"(?:[\\"]"|[^"])*"(?!")/,i=/(?:\b|-)\d+\b/;n.languages.batch={comment:[/^::.*/m,{pattern:/((?:^|[&(])[ \t]*)rem\b(?:[^^&)\r\n]|\^(?:\r\n|[\s\S]))*/im,lookbehind:!0}],label:{pattern:/^:.*/m,alias:"property"},command:[{pattern:/((?:^|[&(])[ \t]*)for(?: \/[a-z?](?:[ :](?:"[^"]*"|[^\s"/]\S*))?)* \S+ in \([^)]+\) do/im,lookbehind:!0,inside:{keyword:/\b(?:do|in)\b|^for\b/i,string:o,parameter:a,variable:r,number:i,punctuation:/[()',]/}},{pattern:/((?:^|[&(])[ \t]*)if(?: \/[a-z?](?:[ :](?:"[^"]*"|[^\s"/]\S*))?)* (?:not )?(?:cmdextversion \d+|defined \w+|errorlevel \d+|exist \S+|(?:"[^"]*"|(?!")(?:(?!==)\S)+)?(?:==| (?:equ|geq|gtr|leq|lss|neq) )(?:"[^"]*"|[^\s"]\S*))/im,lookbehind:!0,inside:{keyword:/\b(?:cmdextversion|defined|errorlevel|exist|not)\b|^if\b/i,string:o,parameter:a,variable:r,number:i,operator:/\^|==|\b(?:equ|geq|gtr|leq|lss|neq)\b/i}},{pattern:/((?:^|[&()])[ \t]*)else\b/im,lookbehind:!0,inside:{keyword:/^else\b/i}},{pattern:/((?:^|[&(])[ \t]*)set(?: \/[a-z](?:[ :](?:"[^"]*"|[^\s"/]\S*))?)* (?:[^^&)\r\n]|\^(?:\r\n|[\s\S]))*/im,lookbehind:!0,inside:{keyword:/^set\b/i,string:o,parameter:a,variable:[r,/\w+(?=(?:[*\/%+\-&^|]|<<|>>)?=)/],number:i,operator:/[*\/%+\-&^|]=?|<<=?|>>=?|[!~_=]/,punctuation:/[()',]/}},{pattern:/((?:^|[&(])[ \t]*@?)\w+\b(?:"(?:[\\"]"|[^"])*"(?!")|[^"^&)\r\n]|\^(?:\r\n|[\s\S]))*/m,lookbehind:!0,inside:{keyword:/^\w+\b/,string:o,parameter:a,label:{pattern:/(^\s*):\S+/m,lookbehind:!0,alias:"property"},variable:r,number:i,operator:/\^/}}],operator:/[&@]/,punctuation:/[()']/}})(t)}return Zy}var Xy,jI;function hbe(){if(jI)return Xy;jI=1,Xy=e,e.displayName="bbcode",e.aliases=["shortcode"];function e(t){t.languages.bbcode={tag:{pattern:/\[\/?[^\s=\]]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'"\]=]+))?(?:\s+[^\s=\]]+\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'"\]=]+))*\s*\]/,inside:{tag:{pattern:/^\[\/?[^\s=\]]+/,inside:{punctuation:/^\[\/?/}},"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'"\]=]+)/,inside:{punctuation:[/^=/,{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\]/,"attr-name":/[^\s=\]]+/}}},t.languages.shortcode=t.languages.bbcode}return Xy}var Qy,zI;function bbe(){if(zI)return Qy;zI=1,Qy=e,e.displayName="bicep",e.aliases=[];function e(t){t.languages.bicep={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],property:[{pattern:/([\r\n][ \t]*)[a-z_]\w*(?=[ \t]*:)/i,lookbehind:!0},{pattern:/([\r\n][ \t]*)'(?:\\.|\$(?!\{)|[^'\\\r\n$])*'(?=[ \t]*:)/,lookbehind:!0,greedy:!0}],string:[{pattern:/'''[^'][\s\S]*?'''/,greedy:!0},{pattern:/(^|[^\\'])'(?:\\.|\$(?!\{)|[^'\\\r\n$])*'/,lookbehind:!0,greedy:!0}],"interpolated-string":{pattern:/(^|[^\\'])'(?:\\.|\$(?:(?!\{)|\{[^{}\r\n]*\})|[^'\\\r\n$])*'/,lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/\$\{[^{}\r\n]*\}/,inside:{expression:{pattern:/(^\$\{)[\s\S]+(?=\}$)/,lookbehind:!0},punctuation:/^\$\{|\}$/}},string:/[\s\S]+/}},datatype:{pattern:/(\b(?:output|param)\b[ \t]+\w+[ \t]+)\w+\b/,lookbehind:!0,alias:"class-name"},boolean:/\b(?:false|true)\b/,keyword:/\b(?:existing|for|if|in|module|null|output|param|resource|targetScope|var)\b/,decorator:/@\w+\b/,function:/\b[a-z_]\w*(?=[ \t]*\()/i,number:/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:E[+-]?\d+)?/i,operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/,punctuation:/[{}[\];(),.:]/},t.languages.bicep["interpolated-string"].inside.interpolation.inside.expression.inside=t.languages.bicep}return Qy}var Jy,UI;function ybe(){if(UI)return Jy;UI=1,Jy=e,e.displayName="birb",e.aliases=[];function e(t){t.languages.birb=t.languages.extend("clike",{string:{pattern:/r?("|')(?:\\.|(?!\1)[^\\])*\1/,greedy:!0},"class-name":[/\b[A-Z](?:[\d_]*[a-zA-Z]\w*)?\b/,/\b(?:[A-Z]\w*|(?!(?:var|void)\b)[a-z]\w*)(?=\s+\w+\s*[;,=()])/],keyword:/\b(?:assert|break|case|class|const|default|else|enum|final|follows|for|grab|if|nest|new|next|noSeeb|return|static|switch|throw|var|void|while)\b/,operator:/\+\+|--|&&|\|\||<<=?|>>=?|~(?:\/=?)?|[+\-*\/%&^|=!<>]=?|\?|:/,variable:/\b[a-z_]\w*\b/}),t.languages.insertBefore("birb","function",{metadata:{pattern:/<\w+>/,greedy:!0,alias:"symbol"}})}return Jy}var ev,BI;function vbe(){if(BI)return ev;BI=1;var e=Ws();ev=t,t.displayName="bison",t.aliases=[];function t(n){n.register(e),n.languages.bison=n.languages.extend("c",{}),n.languages.insertBefore("bison","comment",{bison:{pattern:/^(?:[^%]|%(?!%))*%%[\s\S]*?%%/,inside:{c:{pattern:/%\{[\s\S]*?%\}|\{(?:\{[^}]*\}|[^{}])*\}/,inside:{delimiter:{pattern:/^%?\{|%?\}$/,alias:"punctuation"},"bison-variable":{pattern:/[$@](?:<[^\s>]+>)?[\w$]+/,alias:"variable",inside:{punctuation:/<|>/}},rest:n.languages.c}},comment:n.languages.c.comment,string:n.languages.c.string,property:/\S+(?=:)/,keyword:/%\w+/,number:{pattern:/(^|[^@])\b(?:0x[\da-f]+|\d+)/i,lookbehind:!0},punctuation:/%[%?]|[|:;\[\]<>]/}}})}return ev}var tv,HI;function Sbe(){if(HI)return tv;HI=1,tv=e,e.displayName="bnf",e.aliases=["rbnf"];function e(t){t.languages.bnf={string:{pattern:/"[^\r\n"]*"|'[^\r\n']*'/},definition:{pattern:/<[^<>\r\n\t]+>(?=\s*::=)/,alias:["rule","keyword"],inside:{punctuation:/^<|>$/}},rule:{pattern:/<[^<>\r\n\t]+>/,inside:{punctuation:/^<|>$/}},operator:/::=|[|()[\]{}*+?]|\.{3}/},t.languages.rbnf=t.languages.bnf}return tv}var nv,VI;function wbe(){if(VI)return nv;VI=1,nv=e,e.displayName="brainfuck",e.aliases=[];function e(t){t.languages.brainfuck={pointer:{pattern:/<|>/,alias:"keyword"},increment:{pattern:/\+/,alias:"inserted"},decrement:{pattern:/-/,alias:"deleted"},branching:{pattern:/\[|\]/,alias:"important"},operator:/[.,]/,comment:/\S+/}}return nv}var rv,qI;function Ebe(){if(qI)return rv;qI=1,rv=e,e.displayName="brightscript",e.aliases=[];function e(t){t.languages.brightscript={comment:/(?:\brem|').*/i,"directive-statement":{pattern:/(^[\t ]*)#(?:const|else(?:[\t ]+if)?|end[\t ]+if|error|if).*/im,lookbehind:!0,alias:"property",inside:{"error-message":{pattern:/(^#error).+/,lookbehind:!0},directive:{pattern:/^#(?:const|else(?:[\t ]+if)?|end[\t ]+if|error|if)/,alias:"keyword"},expression:{pattern:/[\s\S]+/,inside:null}}},property:{pattern:/([\r\n{,][\t ]*)(?:(?!\d)\w+|"(?:[^"\r\n]|"")*"(?!"))(?=[ \t]*:)/,lookbehind:!0,greedy:!0},string:{pattern:/"(?:[^"\r\n]|"")*"(?!")/,greedy:!0},"class-name":{pattern:/(\bAs[\t ]+)\w+/i,lookbehind:!0},keyword:/\b(?:As|Dim|Each|Else|Elseif|End|Exit|For|Function|Goto|If|In|Print|Return|Step|Stop|Sub|Then|To|While)\b/i,boolean:/\b(?:false|true)\b/i,function:/\b(?!\d)\w+(?=[\t ]*\()/,number:/(?:\b\d+(?:\.\d+)?(?:[ed][+-]\d+)?|&h[a-f\d]+)\b[%&!#]?/i,operator:/--|\+\+|>>=?|<<=?|<>|[-+*/\\<>]=?|[:^=?]|\b(?:and|mod|not|or)\b/i,punctuation:/[.,;()[\]{}]/,constant:/\b(?:LINE_NUM)\b/i},t.languages.brightscript["directive-statement"].inside.expression.inside=t.languages.brightscript}return rv}var av,GI;function xbe(){if(GI)return av;GI=1,av=e,e.displayName="bro",e.aliases=[];function e(t){t.languages.bro={comment:{pattern:/(^|[^\\$])#.*/,lookbehind:!0,inside:{italic:/\b(?:FIXME|TODO|XXX)\b/}},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},boolean:/\b[TF]\b/,function:{pattern:/(\b(?:event|function|hook)[ \t]+)\w+(?:::\w+)?/,lookbehind:!0},builtin:/(?:@(?:load(?:-(?:plugin|sigs))?|unload|prefixes|ifn?def|else|(?:end)?if|DIR|FILENAME))|(?:&?(?:add_func|create_expire|default|delete_func|encrypt|error_handler|expire_func|group|log|mergeable|optional|persistent|priority|raw_output|read_expire|redef|rotate_interval|rotate_size|synchronized|type_column|write_expire))/,constant:{pattern:/(\bconst[ \t]+)\w+/i,lookbehind:!0},keyword:/\b(?:add|addr|alarm|any|bool|break|const|continue|count|delete|double|else|enum|event|export|file|for|function|global|hook|if|in|int|interval|local|module|next|of|opaque|pattern|port|print|record|return|schedule|set|string|subnet|table|time|timeout|using|vector|when)\b/,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&|\|\|?|\?|\*|\/|~|\^|%/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,punctuation:/[{}[\];(),.:]/}}return av}var ov,WI;function kbe(){if(WI)return ov;WI=1,ov=e,e.displayName="bsl",e.aliases=[];function e(t){t.languages.bsl={comment:/\/\/.*/,string:[{pattern:/"(?:[^"]|"")*"(?!")/,greedy:!0},{pattern:/'(?:[^'\r\n\\]|\\.)*'/}],keyword:[{pattern:/(^|[^\w\u0400-\u0484\u0487-\u052f\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f])(?:пока|для|новый|прервать|попытка|исключение|вызватьисключение|иначе|конецпопытки|неопределено|функция|перем|возврат|конецфункции|если|иначеесли|процедура|конецпроцедуры|тогда|знач|экспорт|конецесли|из|каждого|истина|ложь|по|цикл|конеццикла|выполнить)(?![\w\u0400-\u0484\u0487-\u052f\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f])/i,lookbehind:!0},{pattern:/\b(?:break|do|each|else|elseif|enddo|endfunction|endif|endprocedure|endtry|except|execute|export|false|for|function|if|in|new|null|procedure|raise|return|then|to|true|try|undefined|val|var|while)\b/i}],number:{pattern:/(^(?=\d)|[^\w\u0400-\u0484\u0487-\u052f\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f])(?:\d+(?:\.\d*)?|\.\d+)(?:E[+-]?\d+)?/i,lookbehind:!0},operator:[/[<>+\-*/]=?|[%=]/,{pattern:/(^|[^\w\u0400-\u0484\u0487-\u052f\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f])(?:и|или|не)(?![\w\u0400-\u0484\u0487-\u052f\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f])/i,lookbehind:!0},{pattern:/\b(?:and|not|or)\b/i}],punctuation:/\(\.|\.\)|[()\[\]:;,.]/,directive:[{pattern:/^([ \t]*)&.*/m,lookbehind:!0,greedy:!0,alias:"important"},{pattern:/^([ \t]*)#.*/gm,lookbehind:!0,greedy:!0,alias:"important"}]},t.languages.oscript=t.languages.bsl}return ov}var iv,KI;function Cbe(){if(KI)return iv;KI=1,iv=e,e.displayName="cfscript",e.aliases=[];function e(t){t.languages.cfscript=t.languages.extend("clike",{comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,inside:{annotation:{pattern:/(?:^|[^.])@[\w\.]+/,alias:"punctuation"}}},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],keyword:/\b(?:abstract|break|catch|component|continue|default|do|else|extends|final|finally|for|function|if|in|include|package|private|property|public|remote|required|rethrow|return|static|switch|throw|try|var|while|xml)\b(?!\s*=)/,operator:[/\+\+|--|&&|\|\||::|=>|[!=]==|<=?|>=?|[-+*/%&|^!=<>]=?|\?(?:\.|:)?|[?:]/,/\b(?:and|contains|eq|equal|eqv|gt|gte|imp|is|lt|lte|mod|not|or|xor)\b/],scope:{pattern:/\b(?:application|arguments|cgi|client|cookie|local|session|super|this|variables)\b/,alias:"global"},type:{pattern:/\b(?:any|array|binary|boolean|date|guid|numeric|query|string|struct|uuid|void|xml)\b/,alias:"builtin"}}),t.languages.insertBefore("cfscript","keyword",{"function-variable":{pattern:/[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"}}),delete t.languages.cfscript["class-name"],t.languages.cfc=t.languages.cfscript}return iv}var sv,YI;function _be(){if(YI)return sv;YI=1;var e=RA();sv=t,t.displayName="chaiscript",t.aliases=[];function t(n){n.register(e),n.languages.chaiscript=n.languages.extend("clike",{string:{pattern:/(^|[^\\])'(?:[^'\\]|\\[\s\S])*'/,lookbehind:!0,greedy:!0},"class-name":[{pattern:/(\bclass\s+)\w+/,lookbehind:!0},{pattern:/(\b(?:attr|def)\s+)\w+(?=\s*::)/,lookbehind:!0}],keyword:/\b(?:attr|auto|break|case|catch|class|continue|def|default|else|finally|for|fun|global|if|return|switch|this|try|var|while)\b/,number:[n.languages.cpp.number,/\b(?:Infinity|NaN)\b/],operator:/>>=?|<<=?|\|\||&&|:[:=]?|--|\+\+|[=!<>+\-*/%|&^]=?|[?~]|`[^`\r\n]{1,4}`/}),n.languages.insertBefore("chaiscript","operator",{"parameter-type":{pattern:/([,(]\s*)\w+(?=\s+\w)/,lookbehind:!0,alias:"class-name"}}),n.languages.insertBefore("chaiscript","string",{"string-interpolation":{pattern:/(^|[^\\])"(?:[^"$\\]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})*\})*"/,lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})*\}/,lookbehind:!0,inside:{"interpolation-expression":{pattern:/(^\$\{)[\s\S]+(?=\}$)/,lookbehind:!0,inside:n.languages.chaiscript},"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"}}},string:/[\s\S]+/}}})}return sv}var lv,ZI;function Abe(){if(ZI)return lv;ZI=1,lv=e,e.displayName="cil",e.aliases=[];function e(t){t.languages.cil={comment:/\/\/.*/,string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},directive:{pattern:/(^|\W)\.[a-z]+(?=\s)/,lookbehind:!0,alias:"class-name"},variable:/\[[\w\.]+\]/,keyword:/\b(?:abstract|ansi|assembly|auto|autochar|beforefieldinit|bool|bstr|byvalstr|catch|char|cil|class|currency|date|decimal|default|enum|error|explicit|extends|extern|famandassem|family|famorassem|final(?:ly)?|float32|float64|hidebysig|u?int(?:8|16|32|64)?|iant|idispatch|implements|import|initonly|instance|interface|iunknown|literal|lpstr|lpstruct|lptstr|lpwstr|managed|method|native(?:Type)?|nested|newslot|object(?:ref)?|pinvokeimpl|private|privatescope|public|reqsecobj|rtspecialname|runtime|sealed|sequential|serializable|specialname|static|string|struct|syschar|tbstr|unicode|unmanagedexp|unsigned|value(?:type)?|variant|virtual|void)\b/,function:/\b(?:(?:constrained|no|readonly|tail|unaligned|volatile)\.)?(?:conv\.(?:[iu][1248]?|ovf\.[iu][1248]?(?:\.un)?|r\.un|r4|r8)|ldc\.(?:i4(?:\.\d+|\.[mM]1|\.s)?|i8|r4|r8)|ldelem(?:\.[iu][1248]?|\.r[48]|\.ref|a)?|ldind\.(?:[iu][1248]?|r[48]|ref)|stelem\.?(?:i[1248]?|r[48]|ref)?|stind\.(?:i[1248]?|r[48]|ref)?|end(?:fault|filter|finally)|ldarg(?:\.[0-3s]|a(?:\.s)?)?|ldloc(?:\.\d+|\.s)?|sub(?:\.ovf(?:\.un)?)?|mul(?:\.ovf(?:\.un)?)?|add(?:\.ovf(?:\.un)?)?|stloc(?:\.[0-3s])?|refany(?:type|val)|blt(?:\.un)?(?:\.s)?|ble(?:\.un)?(?:\.s)?|bgt(?:\.un)?(?:\.s)?|bge(?:\.un)?(?:\.s)?|unbox(?:\.any)?|init(?:blk|obj)|call(?:i|virt)?|brfalse(?:\.s)?|bne\.un(?:\.s)?|ldloca(?:\.s)?|brzero(?:\.s)?|brtrue(?:\.s)?|brnull(?:\.s)?|brinst(?:\.s)?|starg(?:\.s)?|leave(?:\.s)?|shr(?:\.un)?|rem(?:\.un)?|div(?:\.un)?|clt(?:\.un)?|alignment|castclass|ldvirtftn|beq(?:\.s)?|ckfinite|ldsflda|ldtoken|localloc|mkrefany|rethrow|cgt\.un|arglist|switch|stsfld|sizeof|newobj|newarr|ldsfld|ldnull|ldflda|isinst|throw|stobj|stfld|ldstr|ldobj|ldlen|ldftn|ldfld|cpobj|cpblk|break|br\.s|xor|shl|ret|pop|not|nop|neg|jmp|dup|cgt|ceq|box|and|or|br)\b/,boolean:/\b(?:false|true)\b/,number:/\b-?(?:0x[0-9a-f]+|\d+)(?:\.[0-9a-f]+)?\b/i,punctuation:/[{}[\];(),:=]|IL_[0-9A-Za-z]+/}}return lv}var cv,XI;function Tbe(){if(XI)return cv;XI=1,cv=e,e.displayName="clojure",e.aliases=[];function e(t){t.languages.clojure={comment:{pattern:/;.*/,greedy:!0},string:{pattern:/"(?:[^"\\]|\\.)*"/,greedy:!0},char:/\\\w+/,symbol:{pattern:/(^|[\s()\[\]{},])::?[\w*+!?'<>=/.-]+/,lookbehind:!0},keyword:{pattern:/(\()(?:-|->|->>|\.|\.\.|\*|\/|\+|<|<=|=|==|>|>=|accessor|agent|agent-errors|aget|alength|all-ns|alter|and|append-child|apply|array-map|aset|aset-boolean|aset-byte|aset-char|aset-double|aset-float|aset-int|aset-long|aset-short|assert|assoc|await|await-for|bean|binding|bit-and|bit-not|bit-or|bit-shift-left|bit-shift-right|bit-xor|boolean|branch\?|butlast|byte|cast|char|children|class|clear-agent-errors|comment|commute|comp|comparator|complement|concat|cond|conj|cons|constantly|construct-proxy|contains\?|count|create-ns|create-struct|cycle|dec|declare|def|def-|definline|definterface|defmacro|defmethod|defmulti|defn|defn-|defonce|defproject|defprotocol|defrecord|defstruct|deftype|deref|difference|disj|dissoc|distinct|do|doall|doc|dorun|doseq|dosync|dotimes|doto|double|down|drop|drop-while|edit|end\?|ensure|eval|every\?|false\?|ffirst|file-seq|filter|find|find-doc|find-ns|find-var|first|float|flush|fn|fnseq|for|frest|gensym|get|get-proxy-class|hash-map|hash-set|identical\?|identity|if|if-let|if-not|import|in-ns|inc|index|insert-child|insert-left|insert-right|inspect-table|inspect-tree|instance\?|int|interleave|intersection|into|into-array|iterate|join|key|keys|keyword|keyword\?|last|lazy-cat|lazy-cons|left|lefts|let|line-seq|list|list\*|load|load-file|locking|long|loop|macroexpand|macroexpand-1|make-array|make-node|map|map-invert|map\?|mapcat|max|max-key|memfn|merge|merge-with|meta|min|min-key|monitor-enter|name|namespace|neg\?|new|newline|next|nil\?|node|not|not-any\?|not-every\?|not=|ns|ns-imports|ns-interns|ns-map|ns-name|ns-publics|ns-refers|ns-resolve|ns-unmap|nth|nthrest|or|parse|partial|path|peek|pop|pos\?|pr|pr-str|print|print-str|println|println-str|prn|prn-str|project|proxy|proxy-mappings|quot|quote|rand|rand-int|range|re-find|re-groups|re-matcher|re-matches|re-pattern|re-seq|read|read-line|recur|reduce|ref|ref-set|refer|rem|remove|remove-method|remove-ns|rename|rename-keys|repeat|replace|replicate|resolve|rest|resultset-seq|reverse|rfirst|right|rights|root|rrest|rseq|second|select|select-keys|send|send-off|seq|seq-zip|seq\?|set|set!|short|slurp|some|sort|sort-by|sorted-map|sorted-map-by|sorted-set|special-symbol\?|split-at|split-with|str|string\?|struct|struct-map|subs|subvec|symbol|symbol\?|sync|take|take-nth|take-while|test|throw|time|to-array|to-array-2d|tree-seq|true\?|try|union|up|update-proxy|val|vals|var|var-get|var-set|var\?|vector|vector-zip|vector\?|when|when-first|when-let|when-not|with-local-vars|with-meta|with-open|with-out-str|xml-seq|xml-zip|zero\?|zipmap|zipper)(?=[\s)]|$)/,lookbehind:!0},boolean:/\b(?:false|nil|true)\b/,number:{pattern:/(^|[^\w$@])(?:\d+(?:[/.]\d+)?(?:e[+-]?\d+)?|0x[a-f0-9]+|[1-9]\d?r[a-z0-9]+)[lmn]?(?![\w$@])/i,lookbehind:!0},function:{pattern:/((?:^|[^'])\()[\w*+!?'<>=/.-]+(?=[\s)]|$)/,lookbehind:!0},operator:/[#@^`~]/,punctuation:/[{}\[\](),]/}}return cv}var uv,QI;function Rbe(){if(QI)return uv;QI=1,uv=e,e.displayName="cmake",e.aliases=[];function e(t){t.languages.cmake={comment:/#.*/,string:{pattern:/"(?:[^\\"]|\\.)*"/,greedy:!0,inside:{interpolation:{pattern:/\$\{(?:[^{}$]|\$\{[^{}$]*\})*\}/,inside:{punctuation:/\$\{|\}/,variable:/\w+/}}}},variable:/\b(?:CMAKE_\w+|\w+_(?:(?:BINARY|SOURCE)_DIR|DESCRIPTION|HOMEPAGE_URL|ROOT|VERSION(?:_MAJOR|_MINOR|_PATCH|_TWEAK)?)|(?:ANDROID|APPLE|BORLAND|BUILD_SHARED_LIBS|CACHE|CPACK_(?:ABSOLUTE_DESTINATION_FILES|COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY|ERROR_ON_ABSOLUTE_INSTALL_DESTINATION|INCLUDE_TOPLEVEL_DIRECTORY|INSTALL_DEFAULT_DIRECTORY_PERMISSIONS|INSTALL_SCRIPT|PACKAGING_INSTALL_PREFIX|SET_DESTDIR|WARN_ON_ABSOLUTE_INSTALL_DESTINATION)|CTEST_(?:BINARY_DIRECTORY|BUILD_COMMAND|BUILD_NAME|BZR_COMMAND|BZR_UPDATE_OPTIONS|CHANGE_ID|CHECKOUT_COMMAND|CONFIGURATION_TYPE|CONFIGURE_COMMAND|COVERAGE_COMMAND|COVERAGE_EXTRA_FLAGS|CURL_OPTIONS|CUSTOM_(?:COVERAGE_EXCLUDE|ERROR_EXCEPTION|ERROR_MATCH|ERROR_POST_CONTEXT|ERROR_PRE_CONTEXT|MAXIMUM_FAILED_TEST_OUTPUT_SIZE|MAXIMUM_NUMBER_OF_(?:ERRORS|WARNINGS)|MAXIMUM_PASSED_TEST_OUTPUT_SIZE|MEMCHECK_IGNORE|POST_MEMCHECK|POST_TEST|PRE_MEMCHECK|PRE_TEST|TESTS_IGNORE|WARNING_EXCEPTION|WARNING_MATCH)|CVS_CHECKOUT|CVS_COMMAND|CVS_UPDATE_OPTIONS|DROP_LOCATION|DROP_METHOD|DROP_SITE|DROP_SITE_CDASH|DROP_SITE_PASSWORD|DROP_SITE_USER|EXTRA_COVERAGE_GLOB|GIT_COMMAND|GIT_INIT_SUBMODULES|GIT_UPDATE_CUSTOM|GIT_UPDATE_OPTIONS|HG_COMMAND|HG_UPDATE_OPTIONS|LABELS_FOR_SUBPROJECTS|MEMORYCHECK_(?:COMMAND|COMMAND_OPTIONS|SANITIZER_OPTIONS|SUPPRESSIONS_FILE|TYPE)|NIGHTLY_START_TIME|P4_CLIENT|P4_COMMAND|P4_OPTIONS|P4_UPDATE_OPTIONS|RUN_CURRENT_SCRIPT|SCP_COMMAND|SITE|SOURCE_DIRECTORY|SUBMIT_URL|SVN_COMMAND|SVN_OPTIONS|SVN_UPDATE_OPTIONS|TEST_LOAD|TEST_TIMEOUT|TRIGGER_SITE|UPDATE_COMMAND|UPDATE_OPTIONS|UPDATE_VERSION_ONLY|USE_LAUNCHERS)|CYGWIN|ENV|EXECUTABLE_OUTPUT_PATH|GHS-MULTI|IOS|LIBRARY_OUTPUT_PATH|MINGW|MSVC(?:10|11|12|14|60|70|71|80|90|_IDE|_TOOLSET_VERSION|_VERSION)?|MSYS|PROJECT_(?:BINARY_DIR|DESCRIPTION|HOMEPAGE_URL|NAME|SOURCE_DIR|VERSION|VERSION_(?:MAJOR|MINOR|PATCH|TWEAK))|UNIX|WIN32|WINCE|WINDOWS_PHONE|WINDOWS_STORE|XCODE|XCODE_VERSION))\b/,property:/\b(?:cxx_\w+|(?:ARCHIVE_OUTPUT_(?:DIRECTORY|NAME)|COMPILE_DEFINITIONS|COMPILE_PDB_NAME|COMPILE_PDB_OUTPUT_DIRECTORY|EXCLUDE_FROM_DEFAULT_BUILD|IMPORTED_(?:IMPLIB|LIBNAME|LINK_DEPENDENT_LIBRARIES|LINK_INTERFACE_LANGUAGES|LINK_INTERFACE_LIBRARIES|LINK_INTERFACE_MULTIPLICITY|LOCATION|NO_SONAME|OBJECTS|SONAME)|INTERPROCEDURAL_OPTIMIZATION|LIBRARY_OUTPUT_DIRECTORY|LIBRARY_OUTPUT_NAME|LINK_FLAGS|LINK_INTERFACE_LIBRARIES|LINK_INTERFACE_MULTIPLICITY|LOCATION|MAP_IMPORTED_CONFIG|OSX_ARCHITECTURES|OUTPUT_NAME|PDB_NAME|PDB_OUTPUT_DIRECTORY|RUNTIME_OUTPUT_DIRECTORY|RUNTIME_OUTPUT_NAME|STATIC_LIBRARY_FLAGS|VS_CSHARP|VS_DOTNET_REFERENCEPROP|VS_DOTNET_REFERENCE|VS_GLOBAL_SECTION_POST|VS_GLOBAL_SECTION_PRE|VS_GLOBAL|XCODE_ATTRIBUTE)_\w+|\w+_(?:CLANG_TIDY|COMPILER_LAUNCHER|CPPCHECK|CPPLINT|INCLUDE_WHAT_YOU_USE|OUTPUT_NAME|POSTFIX|VISIBILITY_PRESET)|ABSTRACT|ADDITIONAL_MAKE_CLEAN_FILES|ADVANCED|ALIASED_TARGET|ALLOW_DUPLICATE_CUSTOM_TARGETS|ANDROID_(?:ANT_ADDITIONAL_OPTIONS|API|API_MIN|ARCH|ASSETS_DIRECTORIES|GUI|JAR_DEPENDENCIES|NATIVE_LIB_DEPENDENCIES|NATIVE_LIB_DIRECTORIES|PROCESS_MAX|PROGUARD|PROGUARD_CONFIG_PATH|SECURE_PROPS_PATH|SKIP_ANT_STEP|STL_TYPE)|ARCHIVE_OUTPUT_DIRECTORY|ATTACHED_FILES|ATTACHED_FILES_ON_FAIL|AUTOGEN_(?:BUILD_DIR|ORIGIN_DEPENDS|PARALLEL|SOURCE_GROUP|TARGETS_FOLDER|TARGET_DEPENDS)|AUTOMOC|AUTOMOC_(?:COMPILER_PREDEFINES|DEPEND_FILTERS|EXECUTABLE|MACRO_NAMES|MOC_OPTIONS|SOURCE_GROUP|TARGETS_FOLDER)|AUTORCC|AUTORCC_EXECUTABLE|AUTORCC_OPTIONS|AUTORCC_SOURCE_GROUP|AUTOUIC|AUTOUIC_EXECUTABLE|AUTOUIC_OPTIONS|AUTOUIC_SEARCH_PATHS|BINARY_DIR|BUILDSYSTEM_TARGETS|BUILD_RPATH|BUILD_RPATH_USE_ORIGIN|BUILD_WITH_INSTALL_NAME_DIR|BUILD_WITH_INSTALL_RPATH|BUNDLE|BUNDLE_EXTENSION|CACHE_VARIABLES|CLEAN_NO_CUSTOM|COMMON_LANGUAGE_RUNTIME|COMPATIBLE_INTERFACE_(?:BOOL|NUMBER_MAX|NUMBER_MIN|STRING)|COMPILE_(?:DEFINITIONS|FEATURES|FLAGS|OPTIONS|PDB_NAME|PDB_OUTPUT_DIRECTORY)|COST|CPACK_DESKTOP_SHORTCUTS|CPACK_NEVER_OVERWRITE|CPACK_PERMANENT|CPACK_STARTUP_SHORTCUTS|CPACK_START_MENU_SHORTCUTS|CPACK_WIX_ACL|CROSSCOMPILING_EMULATOR|CUDA_EXTENSIONS|CUDA_PTX_COMPILATION|CUDA_RESOLVE_DEVICE_SYMBOLS|CUDA_SEPARABLE_COMPILATION|CUDA_STANDARD|CUDA_STANDARD_REQUIRED|CXX_EXTENSIONS|CXX_STANDARD|CXX_STANDARD_REQUIRED|C_EXTENSIONS|C_STANDARD|C_STANDARD_REQUIRED|DEBUG_CONFIGURATIONS|DEFINE_SYMBOL|DEFINITIONS|DEPENDS|DEPLOYMENT_ADDITIONAL_FILES|DEPLOYMENT_REMOTE_DIRECTORY|DISABLED|DISABLED_FEATURES|ECLIPSE_EXTRA_CPROJECT_CONTENTS|ECLIPSE_EXTRA_NATURES|ENABLED_FEATURES|ENABLED_LANGUAGES|ENABLE_EXPORTS|ENVIRONMENT|EXCLUDE_FROM_ALL|EXCLUDE_FROM_DEFAULT_BUILD|EXPORT_NAME|EXPORT_PROPERTIES|EXTERNAL_OBJECT|EchoString|FAIL_REGULAR_EXPRESSION|FIND_LIBRARY_USE_LIB32_PATHS|FIND_LIBRARY_USE_LIB64_PATHS|FIND_LIBRARY_USE_LIBX32_PATHS|FIND_LIBRARY_USE_OPENBSD_VERSIONING|FIXTURES_CLEANUP|FIXTURES_REQUIRED|FIXTURES_SETUP|FOLDER|FRAMEWORK|Fortran_FORMAT|Fortran_MODULE_DIRECTORY|GENERATED|GENERATOR_FILE_NAME|GENERATOR_IS_MULTI_CONFIG|GHS_INTEGRITY_APP|GHS_NO_SOURCE_GROUP_FILE|GLOBAL_DEPENDS_DEBUG_MODE|GLOBAL_DEPENDS_NO_CYCLES|GNUtoMS|HAS_CXX|HEADER_FILE_ONLY|HELPSTRING|IMPLICIT_DEPENDS_INCLUDE_TRANSFORM|IMPORTED|IMPORTED_(?:COMMON_LANGUAGE_RUNTIME|CONFIGURATIONS|GLOBAL|IMPLIB|LIBNAME|LINK_DEPENDENT_LIBRARIES|LINK_INTERFACE_(?:LANGUAGES|LIBRARIES|MULTIPLICITY)|LOCATION|NO_SONAME|OBJECTS|SONAME)|IMPORT_PREFIX|IMPORT_SUFFIX|INCLUDE_DIRECTORIES|INCLUDE_REGULAR_EXPRESSION|INSTALL_NAME_DIR|INSTALL_RPATH|INSTALL_RPATH_USE_LINK_PATH|INTERFACE_(?:AUTOUIC_OPTIONS|COMPILE_DEFINITIONS|COMPILE_FEATURES|COMPILE_OPTIONS|INCLUDE_DIRECTORIES|LINK_DEPENDS|LINK_DIRECTORIES|LINK_LIBRARIES|LINK_OPTIONS|POSITION_INDEPENDENT_CODE|SOURCES|SYSTEM_INCLUDE_DIRECTORIES)|INTERPROCEDURAL_OPTIMIZATION|IN_TRY_COMPILE|IOS_INSTALL_COMBINED|JOB_POOLS|JOB_POOL_COMPILE|JOB_POOL_LINK|KEEP_EXTENSION|LABELS|LANGUAGE|LIBRARY_OUTPUT_DIRECTORY|LINKER_LANGUAGE|LINK_(?:DEPENDS|DEPENDS_NO_SHARED|DIRECTORIES|FLAGS|INTERFACE_LIBRARIES|INTERFACE_MULTIPLICITY|LIBRARIES|OPTIONS|SEARCH_END_STATIC|SEARCH_START_STATIC|WHAT_YOU_USE)|LISTFILE_STACK|LOCATION|MACOSX_BUNDLE|MACOSX_BUNDLE_INFO_PLIST|MACOSX_FRAMEWORK_INFO_PLIST|MACOSX_PACKAGE_LOCATION|MACOSX_RPATH|MACROS|MANUALLY_ADDED_DEPENDENCIES|MEASUREMENT|MODIFIED|NAME|NO_SONAME|NO_SYSTEM_FROM_IMPORTED|OBJECT_DEPENDS|OBJECT_OUTPUTS|OSX_ARCHITECTURES|OUTPUT_NAME|PACKAGES_FOUND|PACKAGES_NOT_FOUND|PARENT_DIRECTORY|PASS_REGULAR_EXPRESSION|PDB_NAME|PDB_OUTPUT_DIRECTORY|POSITION_INDEPENDENT_CODE|POST_INSTALL_SCRIPT|PREDEFINED_TARGETS_FOLDER|PREFIX|PRE_INSTALL_SCRIPT|PRIVATE_HEADER|PROCESSORS|PROCESSOR_AFFINITY|PROJECT_LABEL|PUBLIC_HEADER|REPORT_UNDEFINED_PROPERTIES|REQUIRED_FILES|RESOURCE|RESOURCE_LOCK|RULE_LAUNCH_COMPILE|RULE_LAUNCH_CUSTOM|RULE_LAUNCH_LINK|RULE_MESSAGES|RUNTIME_OUTPUT_DIRECTORY|RUN_SERIAL|SKIP_AUTOGEN|SKIP_AUTOMOC|SKIP_AUTORCC|SKIP_AUTOUIC|SKIP_BUILD_RPATH|SKIP_RETURN_CODE|SOURCES|SOURCE_DIR|SOVERSION|STATIC_LIBRARY_FLAGS|STATIC_LIBRARY_OPTIONS|STRINGS|SUBDIRECTORIES|SUFFIX|SYMBOLIC|TARGET_ARCHIVES_MAY_BE_SHARED_LIBS|TARGET_MESSAGES|TARGET_SUPPORTS_SHARED_LIBS|TESTS|TEST_INCLUDE_FILE|TEST_INCLUDE_FILES|TIMEOUT|TIMEOUT_AFTER_MATCH|TYPE|USE_FOLDERS|VALUE|VARIABLES|VERSION|VISIBILITY_INLINES_HIDDEN|VS_(?:CONFIGURATION_TYPE|COPY_TO_OUT_DIR|DEBUGGER_(?:COMMAND|COMMAND_ARGUMENTS|ENVIRONMENT|WORKING_DIRECTORY)|DEPLOYMENT_CONTENT|DEPLOYMENT_LOCATION|DOTNET_REFERENCES|DOTNET_REFERENCES_COPY_LOCAL|GLOBAL_KEYWORD|GLOBAL_PROJECT_TYPES|GLOBAL_ROOTNAMESPACE|INCLUDE_IN_VSIX|IOT_STARTUP_TASK|KEYWORD|RESOURCE_GENERATOR|SCC_AUXPATH|SCC_LOCALPATH|SCC_PROJECTNAME|SCC_PROVIDER|SDK_REFERENCES|SHADER_(?:DISABLE_OPTIMIZATIONS|ENABLE_DEBUG|ENTRYPOINT|FLAGS|MODEL|OBJECT_FILE_NAME|OUTPUT_HEADER_FILE|TYPE|VARIABLE_NAME)|STARTUP_PROJECT|TOOL_OVERRIDE|USER_PROPS|WINRT_COMPONENT|WINRT_EXTENSIONS|WINRT_REFERENCES|XAML_TYPE)|WILL_FAIL|WIN32_EXECUTABLE|WINDOWS_EXPORT_ALL_SYMBOLS|WORKING_DIRECTORY|WRAP_EXCLUDE|XCODE_(?:EMIT_EFFECTIVE_PLATFORM_NAME|EXPLICIT_FILE_TYPE|FILE_ATTRIBUTES|LAST_KNOWN_FILE_TYPE|PRODUCT_TYPE|SCHEME_(?:ADDRESS_SANITIZER|ADDRESS_SANITIZER_USE_AFTER_RETURN|ARGUMENTS|DISABLE_MAIN_THREAD_CHECKER|DYNAMIC_LIBRARY_LOADS|DYNAMIC_LINKER_API_USAGE|ENVIRONMENT|EXECUTABLE|GUARD_MALLOC|MAIN_THREAD_CHECKER_STOP|MALLOC_GUARD_EDGES|MALLOC_SCRIBBLE|MALLOC_STACK|THREAD_SANITIZER(?:_STOP)?|UNDEFINED_BEHAVIOUR_SANITIZER(?:_STOP)?|ZOMBIE_OBJECTS))|XCTEST)\b/,keyword:/\b(?:add_compile_definitions|add_compile_options|add_custom_command|add_custom_target|add_definitions|add_dependencies|add_executable|add_library|add_link_options|add_subdirectory|add_test|aux_source_directory|break|build_command|build_name|cmake_host_system_information|cmake_minimum_required|cmake_parse_arguments|cmake_policy|configure_file|continue|create_test_sourcelist|ctest_build|ctest_configure|ctest_coverage|ctest_empty_binary_directory|ctest_memcheck|ctest_read_custom_files|ctest_run_script|ctest_sleep|ctest_start|ctest_submit|ctest_test|ctest_update|ctest_upload|define_property|else|elseif|enable_language|enable_testing|endforeach|endfunction|endif|endmacro|endwhile|exec_program|execute_process|export|export_library_dependencies|file|find_file|find_library|find_package|find_path|find_program|fltk_wrap_ui|foreach|function|get_cmake_property|get_directory_property|get_filename_component|get_property|get_source_file_property|get_target_property|get_test_property|if|include|include_directories|include_external_msproject|include_guard|include_regular_expression|install|install_files|install_programs|install_targets|link_directories|link_libraries|list|load_cache|load_command|macro|make_directory|mark_as_advanced|math|message|option|output_required_files|project|qt_wrap_cpp|qt_wrap_ui|remove|remove_definitions|return|separate_arguments|set|set_directory_properties|set_property|set_source_files_properties|set_target_properties|set_tests_properties|site_name|source_group|string|subdir_depends|subdirs|target_compile_definitions|target_compile_features|target_compile_options|target_include_directories|target_link_directories|target_link_libraries|target_link_options|target_sources|try_compile|try_run|unset|use_mangled_mesa|utility_source|variable_requires|variable_watch|while|write_file)(?=\s*\()\b/,boolean:/\b(?:FALSE|OFF|ON|TRUE)\b/,namespace:/\b(?:INTERFACE|PRIVATE|PROPERTIES|PUBLIC|SHARED|STATIC|TARGET_OBJECTS)\b/,operator:/\b(?:AND|DEFINED|EQUAL|GREATER|LESS|MATCHES|NOT|OR|STREQUAL|STRGREATER|STRLESS|VERSION_EQUAL|VERSION_GREATER|VERSION_LESS)\b/,inserted:{pattern:/\b\w+::\w+\b/,alias:"class-name"},number:/\b\d+(?:\.\d+)*\b/,function:/\b[a-z_]\w*(?=\s*\()\b/i,punctuation:/[()>}]|\$[<{]/}}return uv}var dv,JI;function Nbe(){if(JI)return dv;JI=1,dv=e,e.displayName="cobol",e.aliases=[];function e(t){t.languages.cobol={comment:{pattern:/\*>.*|(^[ \t]*)\*.*/m,lookbehind:!0,greedy:!0},string:{pattern:/[xzgn]?(?:"(?:[^\r\n"]|"")*"(?!")|'(?:[^\r\n']|'')*'(?!'))/i,greedy:!0},level:{pattern:/(^[ \t]*)\d+\b/m,lookbehind:!0,greedy:!0,alias:"number"},"class-name":{pattern:/(\bpic(?:ture)?\s+)(?:(?:[-\w$/,:*+<>]|\.(?!\s|$))(?:\(\d+\))?)+/i,lookbehind:!0,inside:{number:{pattern:/(\()\d+/,lookbehind:!0},punctuation:/[()]/}},keyword:{pattern:/(^|[^\w-])(?:ABORT|ACCEPT|ACCESS|ADD|ADDRESS|ADVANCING|AFTER|ALIGNED|ALL|ALPHABET|ALPHABETIC|ALPHABETIC-LOWER|ALPHABETIC-UPPER|ALPHANUMERIC|ALPHANUMERIC-EDITED|ALSO|ALTER|ALTERNATE|ANY|ARE|AREA|AREAS|AS|ASCENDING|ASCII|ASSIGN|ASSOCIATED-DATA|ASSOCIATED-DATA-LENGTH|AT|ATTRIBUTE|AUTHOR|AUTO|AUTO-SKIP|BACKGROUND-COLOR|BACKGROUND-COLOUR|BASIS|BEEP|BEFORE|BEGINNING|BELL|BINARY|BIT|BLANK|BLINK|BLOCK|BOTTOM|BOUNDS|BY|BYFUNCTION|BYTITLE|CALL|CANCEL|CAPABLE|CCSVERSION|CD|CF|CH|CHAINING|CHANGED|CHANNEL|CHARACTER|CHARACTERS|CLASS|CLASS-ID|CLOCK-UNITS|CLOSE|CLOSE-DISPOSITION|COBOL|CODE|CODE-SET|COL|COLLATING|COLUMN|COM-REG|COMMA|COMMITMENT|COMMON|COMMUNICATION|COMP|COMP-1|COMP-2|COMP-3|COMP-4|COMP-5|COMPUTATIONAL|COMPUTATIONAL-1|COMPUTATIONAL-2|COMPUTATIONAL-3|COMPUTATIONAL-4|COMPUTATIONAL-5|COMPUTE|CONFIGURATION|CONTAINS|CONTENT|CONTINUE|CONTROL|CONTROL-POINT|CONTROLS|CONVENTION|CONVERTING|COPY|CORR|CORRESPONDING|COUNT|CRUNCH|CURRENCY|CURSOR|DATA|DATA-BASE|DATE|DATE-COMPILED|DATE-WRITTEN|DAY|DAY-OF-WEEK|DBCS|DE|DEBUG-CONTENTS|DEBUG-ITEM|DEBUG-LINE|DEBUG-NAME|DEBUG-SUB-1|DEBUG-SUB-2|DEBUG-SUB-3|DEBUGGING|DECIMAL-POINT|DECLARATIVES|DEFAULT|DEFAULT-DISPLAY|DEFINITION|DELETE|DELIMITED|DELIMITER|DEPENDING|DESCENDING|DESTINATION|DETAIL|DFHRESP|DFHVALUE|DISABLE|DISK|DISPLAY|DISPLAY-1|DIVIDE|DIVISION|DONTCARE|DOUBLE|DOWN|DUPLICATES|DYNAMIC|EBCDIC|EGCS|EGI|ELSE|EMI|EMPTY-CHECK|ENABLE|END|END-ACCEPT|END-ADD|END-CALL|END-COMPUTE|END-DELETE|END-DIVIDE|END-EVALUATE|END-IF|END-MULTIPLY|END-OF-PAGE|END-PERFORM|END-READ|END-RECEIVE|END-RETURN|END-REWRITE|END-SEARCH|END-START|END-STRING|END-SUBTRACT|END-UNSTRING|END-WRITE|ENDING|ENTER|ENTRY|ENTRY-PROCEDURE|ENVIRONMENT|EOL|EOP|EOS|ERASE|ERROR|ESCAPE|ESI|EVALUATE|EVENT|EVERY|EXCEPTION|EXCLUSIVE|EXHIBIT|EXIT|EXPORT|EXTEND|EXTENDED|EXTERNAL|FD|FILE|FILE-CONTROL|FILLER|FINAL|FIRST|FOOTING|FOR|FOREGROUND-COLOR|FOREGROUND-COLOUR|FROM|FULL|FUNCTION|FUNCTION-POINTER|FUNCTIONNAME|GENERATE|GIVING|GLOBAL|GO|GOBACK|GRID|GROUP|HEADING|HIGH-VALUE|HIGH-VALUES|HIGHLIGHT|I-O|I-O-CONTROL|ID|IDENTIFICATION|IF|IMPLICIT|IMPORT|IN|INDEX|INDEXED|INDICATE|INITIAL|INITIALIZE|INITIATE|INPUT|INPUT-OUTPUT|INSPECT|INSTALLATION|INTEGER|INTO|INVALID|INVOKE|IS|JUST|JUSTIFIED|KANJI|KEPT|KEY|KEYBOARD|LABEL|LANGUAGE|LAST|LB|LD|LEADING|LEFT|LEFTLINE|LENGTH|LENGTH-CHECK|LIBACCESS|LIBPARAMETER|LIBRARY|LIMIT|LIMITS|LINAGE|LINAGE-COUNTER|LINE|LINE-COUNTER|LINES|LINKAGE|LIST|LOCAL|LOCAL-STORAGE|LOCK|LONG-DATE|LONG-TIME|LOW-VALUE|LOW-VALUES|LOWER|LOWLIGHT|MEMORY|MERGE|MESSAGE|MMDDYYYY|MODE|MODULES|MORE-LABELS|MOVE|MULTIPLE|MULTIPLY|NAMED|NATIONAL|NATIONAL-EDITED|NATIVE|NEGATIVE|NETWORK|NEXT|NO|NO-ECHO|NULL|NULLS|NUMBER|NUMERIC|NUMERIC-DATE|NUMERIC-EDITED|NUMERIC-TIME|OBJECT-COMPUTER|OCCURS|ODT|OF|OFF|OMITTED|ON|OPEN|OPTIONAL|ORDER|ORDERLY|ORGANIZATION|OTHER|OUTPUT|OVERFLOW|OVERLINE|OWN|PACKED-DECIMAL|PADDING|PAGE|PAGE-COUNTER|PASSWORD|PERFORM|PF|PH|PIC|PICTURE|PLUS|POINTER|PORT|POSITION|POSITIVE|PRINTER|PRINTING|PRIVATE|PROCEDURE|PROCEDURE-POINTER|PROCEDURES|PROCEED|PROCESS|PROGRAM|PROGRAM-ID|PROGRAM-LIBRARY|PROMPT|PURGE|QUEUE|QUOTE|QUOTES|RANDOM|RD|READ|READER|REAL|RECEIVE|RECEIVED|RECORD|RECORDING|RECORDS|RECURSIVE|REDEFINES|REEL|REF|REFERENCE|REFERENCES|RELATIVE|RELEASE|REMAINDER|REMARKS|REMOTE|REMOVAL|REMOVE|RENAMES|REPLACE|REPLACING|REPORT|REPORTING|REPORTS|REQUIRED|RERUN|RESERVE|RESET|RETURN|RETURN-CODE|RETURNING|REVERSE-VIDEO|REVERSED|REWIND|REWRITE|RF|RH|RIGHT|ROUNDED|RUN|SAME|SAVE|SCREEN|SD|SEARCH|SECTION|SECURE|SECURITY|SEGMENT|SEGMENT-LIMIT|SELECT|SEND|SENTENCE|SEPARATE|SEQUENCE|SEQUENTIAL|SET|SHARED|SHAREDBYALL|SHAREDBYRUNUNIT|SHARING|SHIFT-IN|SHIFT-OUT|SHORT-DATE|SIGN|SIZE|SORT|SORT-CONTROL|SORT-CORE-SIZE|SORT-FILE-SIZE|SORT-MERGE|SORT-MESSAGE|SORT-MODE-SIZE|SORT-RETURN|SOURCE|SOURCE-COMPUTER|SPACE|SPACES|SPECIAL-NAMES|STANDARD|STANDARD-1|STANDARD-2|START|STATUS|STOP|STRING|SUB-QUEUE-1|SUB-QUEUE-2|SUB-QUEUE-3|SUBTRACT|SUM|SUPPRESS|SYMBOL|SYMBOLIC|SYNC|SYNCHRONIZED|TABLE|TALLY|TALLYING|TAPE|TASK|TERMINAL|TERMINATE|TEST|TEXT|THEN|THREAD|THREAD-LOCAL|THROUGH|THRU|TIME|TIMER|TIMES|TITLE|TO|TODAYS-DATE|TODAYS-NAME|TOP|TRAILING|TRUNCATED|TYPE|TYPEDEF|UNDERLINE|UNIT|UNSTRING|UNTIL|UP|UPON|USAGE|USE|USING|VALUE|VALUES|VARYING|VIRTUAL|WAIT|WHEN|WHEN-COMPILED|WITH|WORDS|WORKING-STORAGE|WRITE|YEAR|YYYYDDD|YYYYMMDD|ZERO-FILL|ZEROES|ZEROS)(?![\w-])/i,lookbehind:!0},boolean:{pattern:/(^|[^\w-])(?:false|true)(?![\w-])/i,lookbehind:!0},number:{pattern:/(^|[^\w-])(?:[+-]?(?:(?:\d+(?:[.,]\d+)?|[.,]\d+)(?:e[+-]?\d+)?|zero))(?![\w-])/i,lookbehind:!0},operator:[/<>|[<>]=?|[=+*/&]/,{pattern:/(^|[^\w-])(?:-|and|equal|greater|less|not|or|than)(?![\w-])/i,lookbehind:!0}],punctuation:/[.:,()]/}}return dv}var fv,eO;function Ibe(){if(eO)return fv;eO=1,fv=e,e.displayName="coffeescript",e.aliases=["coffee"];function e(t){(function(n){var r=/#(?!\{).+/,a={pattern:/#\{[^}]+\}/,alias:"variable"};n.languages.coffeescript=n.languages.extend("javascript",{comment:r,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:a}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),n.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:r,interpolation:a}}}),n.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:n.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:a}}]}),n.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete n.languages.coffeescript["template-string"],n.languages.coffee=n.languages.coffeescript})(t)}return fv}var pv,tO;function Obe(){if(tO)return pv;tO=1,pv=e,e.displayName="concurnas",e.aliases=["conc"];function e(t){t.languages.concurnas={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?(?:\*\/|$)|\/\/.*)/,lookbehind:!0,greedy:!0},langext:{pattern:/\b\w+\s*\|\|[\s\S]+?\|\|/,greedy:!0,inside:{"class-name":/^\w+/,string:{pattern:/(^\s*\|\|)[\s\S]+(?=\|\|$)/,lookbehind:!0},punctuation:/\|\|/}},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/,lookbehind:!0},keyword:/\b(?:abstract|actor|also|annotation|assert|async|await|bool|boolean|break|byte|case|catch|changed|char|class|closed|constant|continue|def|default|del|double|elif|else|enum|every|extends|false|finally|float|for|from|global|gpudef|gpukernel|if|import|in|init|inject|int|lambda|local|long|loop|match|new|nodefault|null|of|onchange|open|out|override|package|parfor|parforsync|post|pre|private|protected|provide|provider|public|return|shared|short|single|size_t|sizeof|super|sync|this|throw|trait|trans|transient|true|try|typedef|unchecked|using|val|var|void|while|with)\b/,boolean:/\b(?:false|true)\b/,number:/\b0b[01][01_]*L?\b|\b0x(?:[\da-f_]*\.)?[\da-f_p+-]+\b|(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfls]?/i,punctuation:/[{}[\];(),.:]/,operator:/<==|>==|=>|->|<-|<>|&==|&<>|\?:?|\.\?|\+\+|--|[-+*/=<>]=?|[!^~]|\b(?:and|as|band|bor|bxor|comp|is|isnot|mod|or)\b=?/,annotation:{pattern:/@(?:\w+:)?(?:\w+|\[[^\]]+\])?/,alias:"builtin"}},t.languages.insertBefore("concurnas","langext",{"regex-literal":{pattern:/\br("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:t.languages.concurnas},regex:/[\s\S]+/}},"string-literal":{pattern:/(?:\B|\bs)("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:t.languages.concurnas},string:/[\s\S]+/}}}),t.languages.conc=t.languages.concurnas}return pv}var gv,nO;function Dbe(){if(nO)return gv;nO=1,gv=e,e.displayName="coq",e.aliases=[];function e(t){(function(n){for(var r=/\(\*(?:[^(*]|\((?!\*)|\*(?!\))|)*\*\)/.source,a=0;a<2;a++)r=r.replace(//g,function(){return r});r=r.replace(//g,"[]"),n.languages.coq={comment:RegExp(r),string:{pattern:/"(?:[^"]|"")*"(?!")/,greedy:!0},attribute:[{pattern:RegExp(/#\[(?:[^\[\]("]|"(?:[^"]|"")*"(?!")|\((?!\*)|)*\]/.source.replace(//g,function(){return r})),greedy:!0,alias:"attr-name",inside:{comment:RegExp(r),string:{pattern:/"(?:[^"]|"")*"(?!")/,greedy:!0},operator:/=/,punctuation:/^#\[|\]$|[,()]/}},{pattern:/\b(?:Cumulative|Global|Local|Monomorphic|NonCumulative|Polymorphic|Private|Program)\b/,alias:"attr-name"}],keyword:/\b(?:Abort|About|Add|Admit|Admitted|All|Arguments|As|Assumptions|Axiom|Axioms|Back|BackTo|Backtrace|BinOp|BinOpSpec|BinRel|Bind|Blacklist|Canonical|Case|Cd|Check|Class|Classes|Close|CoFixpoint|CoInductive|Coercion|Coercions|Collection|Combined|Compute|Conjecture|Conjectures|Constant|Constants|Constraint|Constructors|Context|Corollary|Create|CstOp|Custom|Cut|Debug|Declare|Defined|Definition|Delimit|Dependencies|Dependent|Derive|Diffs|Drop|Elimination|End|Entry|Equality|Eval|Example|Existential|Existentials|Existing|Export|Extern|Extraction|Fact|Fail|Field|File|Firstorder|Fixpoint|Flags|Focus|From|Funclass|Function|Functional|GC|Generalizable|Goal|Grab|Grammar|Graph|Guarded|Haskell|Heap|Hide|Hint|HintDb|Hints|Hypotheses|Hypothesis|IF|Identity|Immediate|Implicit|Implicits|Import|Include|Induction|Inductive|Infix|Info|Initial|InjTyp|Inline|Inspect|Instance|Instances|Intro|Intros|Inversion|Inversion_clear|JSON|Language|Left|Lemma|Let|Lia|Libraries|Library|Load|LoadPath|Locate|Ltac|Ltac2|ML|Match|Method|Minimality|Module|Modules|Morphism|Next|NoInline|Notation|Number|OCaml|Obligation|Obligations|Opaque|Open|Optimize|Parameter|Parameters|Parametric|Path|Paths|Prenex|Preterm|Primitive|Print|Profile|Projections|Proof|Prop|PropBinOp|PropOp|PropUOp|Property|Proposition|Pwd|Qed|Quit|Rec|Record|Recursive|Redirect|Reduction|Register|Relation|Remark|Remove|Require|Reserved|Reset|Resolve|Restart|Rewrite|Right|Ring|Rings|SProp|Saturate|Save|Scheme|Scope|Scopes|Search|SearchHead|SearchPattern|SearchRewrite|Section|Separate|Set|Setoid|Show|Signatures|Solve|Solver|Sort|Sortclass|Sorted|Spec|Step|Strategies|Strategy|String|Structure|SubClass|Subgraph|SuchThat|Tactic|Term|TestCompile|Theorem|Time|Timeout|To|Transparent|Type|Typeclasses|Types|Typing|UnOp|UnOpSpec|Undelimit|Undo|Unfocus|Unfocused|Unfold|Universe|Universes|Unshelve|Variable|Variables|Variant|Verbose|View|Visibility|Zify|_|apply|as|at|by|cofix|else|end|exists|exists2|fix|for|forall|fun|if|in|let|match|measure|move|removed|return|struct|then|using|wf|where|with)\b/,number:/\b(?:0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]+)?(?:p[+-]?\d[\d_]*)?|\d[\d_]*(?:\.[\d_]+)?(?:e[+-]?\d[\d_]*)?)\b/i,punct:{pattern:/@\{|\{\||\[=|:>/,alias:"punctuation"},operator:/\/\\|\\\/|\.{2,3}|:{1,2}=|\*\*|[-=]>|<(?:->?|[+:=>]|<:)|>(?:=|->)|\|[-|]?|[-!%&*+/<=>?@^~']/,punctuation:/\.\(|`\(|@\{|`\{|\{\||\[=|:>|[:.,;(){}\[\]]/}})(t)}return gv}var mv,rO;function Th(){if(rO)return mv;rO=1,mv=e,e.displayName="ruby",e.aliases=["rb"];function e(t){(function(n){n.languages.ruby=n.languages.extend("clike",{comment:{pattern:/#.*|^=begin\s[\s\S]*?^=end/m,greedy:!0},"class-name":{pattern:/(\b(?:class|module)\s+|\bcatch\s+\()[\w.\\]+|\b[A-Z_]\w*(?=\s*\.\s*new\b)/,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:BEGIN|END|alias|and|begin|break|case|class|def|define_method|defined|do|each|else|elsif|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|private|protected|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\b/,operator:/\.{2,3}|&\.|===||[!=]?~|(?:&&|\|\||<<|>>|\*\*|[+\-*/%<>!^&|=])=?|[?:]/,punctuation:/[(){}[\].,;]/}),n.languages.insertBefore("ruby","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}});var r={pattern:/((?:^|[^\\])(?:\\{2})*)#\{(?:[^{}]|\{[^{}]*\})*\}/,lookbehind:!0,inside:{content:{pattern:/^(#\{)[\s\S]+(?=\}$)/,lookbehind:!0,inside:n.languages.ruby},delimiter:{pattern:/^#\{|\}$/,alias:"punctuation"}}};delete n.languages.ruby.function;var a="(?:"+[/([^a-zA-Z0-9\s{(\[<=])(?:(?!\1)[^\\]|\\[\s\S])*\1/.source,/\((?:[^()\\]|\\[\s\S]|\((?:[^()\\]|\\[\s\S])*\))*\)/.source,/\{(?:[^{}\\]|\\[\s\S]|\{(?:[^{}\\]|\\[\s\S])*\})*\}/.source,/\[(?:[^\[\]\\]|\\[\s\S]|\[(?:[^\[\]\\]|\\[\s\S])*\])*\]/.source,/<(?:[^<>\\]|\\[\s\S]|<(?:[^<>\\]|\\[\s\S])*>)*>/.source].join("|")+")",o=/(?:"(?:\\.|[^"\\\r\n])*"|(?:\b[a-zA-Z_]\w*|[^\s\0-\x7F]+)[?!]?|\$.)/.source;n.languages.insertBefore("ruby","keyword",{"regex-literal":[{pattern:RegExp(/%r/.source+a+/[egimnosux]{0,6}/.source),greedy:!0,inside:{interpolation:r,regex:/[\s\S]+/}},{pattern:/(^|[^/])\/(?!\/)(?:\[[^\r\n\]]+\]|\\.|[^[/\\\r\n])+\/[egimnosux]{0,6}(?=\s*(?:$|[\r\n,.;})#]))/,lookbehind:!0,greedy:!0,inside:{interpolation:r,regex:/[\s\S]+/}}],variable:/[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,symbol:[{pattern:RegExp(/(^|[^:]):/.source+o),lookbehind:!0,greedy:!0},{pattern:RegExp(/([\r\n{(,][ \t]*)/.source+o+/(?=:(?!:))/.source),lookbehind:!0,greedy:!0}],"method-definition":{pattern:/(\bdef\s+)\w+(?:\s*\.\s*\w+)?/,lookbehind:!0,inside:{function:/\b\w+$/,keyword:/^self\b/,"class-name":/^\w+/,punctuation:/\./}}}),n.languages.insertBefore("ruby","string",{"string-literal":[{pattern:RegExp(/%[qQiIwWs]?/.source+a),greedy:!0,inside:{interpolation:r,string:/[\s\S]+/}},{pattern:/("|')(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|(?!\1)[^\\#\r\n])*\1/,greedy:!0,inside:{interpolation:r,string:/[\s\S]+/}},{pattern:/<<[-~]?([a-z_]\w*)[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?[a-z_]\w*|\b[a-z_]\w*$/i,inside:{symbol:/\b\w+/,punctuation:/^<<[-~]?/}},interpolation:r,string:/[\s\S]+/}},{pattern:/<<[-~]?'([a-z_]\w*)'[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?'[a-z_]\w*'|\b[a-z_]\w*$/i,inside:{symbol:/\b\w+/,punctuation:/^<<[-~]?'|'$/}},string:/[\s\S]+/}}],"command-literal":[{pattern:RegExp(/%x/.source+a),greedy:!0,inside:{interpolation:r,command:{pattern:/[\s\S]+/,alias:"string"}}},{pattern:/`(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|[^\\`#\r\n])*`/,greedy:!0,inside:{interpolation:r,command:{pattern:/[\s\S]+/,alias:"string"}}}]}),delete n.languages.ruby.string,n.languages.insertBefore("ruby","number",{builtin:/\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Fixnum|Float|Hash|IO|Integer|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|Stat|String|Struct|Symbol|TMS|Thread|ThreadGroup|Time|TrueClass)\b/,constant:/\b[A-Z][A-Z0-9_]*(?:[?!]|\b)/}),n.languages.rb=n.languages.ruby})(t)}return mv}var hv,aO;function Lbe(){if(aO)return hv;aO=1;var e=Th();hv=t,t.displayName="crystal",t.aliases=[];function t(n){n.register(e),function(r){r.languages.crystal=r.languages.extend("ruby",{keyword:[/\b(?:__DIR__|__END_LINE__|__FILE__|__LINE__|abstract|alias|annotation|as|asm|begin|break|case|class|def|do|else|elsif|end|ensure|enum|extend|for|fun|if|ifdef|include|instance_sizeof|lib|macro|module|next|of|out|pointerof|private|protected|ptr|require|rescue|return|select|self|sizeof|struct|super|then|type|typeof|undef|uninitialized|union|unless|until|when|while|with|yield)\b/,{pattern:/(\.\s*)(?:is_a|responds_to)\?/,lookbehind:!0}],number:/\b(?:0b[01_]*[01]|0o[0-7_]*[0-7]|0x[\da-fA-F_]*[\da-fA-F]|(?:\d(?:[\d_]*\d)?)(?:\.[\d_]*\d)?(?:[eE][+-]?[\d_]*\d)?)(?:_(?:[uif](?:8|16|32|64))?)?\b/,operator:[/->/,r.languages.ruby.operator],punctuation:/[(){}[\].,;\\]/}),r.languages.insertBefore("crystal","string-literal",{attribute:{pattern:/@\[.*?\]/,inside:{delimiter:{pattern:/^@\[|\]$/,alias:"punctuation"},attribute:{pattern:/^(\s*)\w+/,lookbehind:!0,alias:"class-name"},args:{pattern:/\S(?:[\s\S]*\S)?/,inside:r.languages.crystal}}},expansion:{pattern:/\{(?:\{.*?\}|%.*?%)\}/,inside:{content:{pattern:/^(\{.)[\s\S]+(?=.\}$)/,lookbehind:!0,inside:r.languages.crystal},delimiter:{pattern:/^\{[\{%]|[\}%]\}$/,alias:"operator"}}},char:{pattern:/'(?:[^\\\r\n]{1,2}|\\(?:.|u(?:[A-Fa-f0-9]{1,4}|\{[A-Fa-f0-9]{1,6}\})))'/,greedy:!0}})}(n)}return hv}var bv,oO;function Mbe(){if(oO)return bv;oO=1;var e=Ah();bv=t,t.displayName="cshtml",t.aliases=["razor"];function t(n){n.register(e),function(r){var a=/\/(?![/*])|\/\/.*[\r\n]|\/\*[^*]*(?:\*(?!\/)[^*]*)*\*\//.source,o=/@(?!")|"(?:[^\r\n\\"]|\\.)*"|@"(?:[^\\"]|""|\\[\s\S])*"(?!")/.source+"|"+/'(?:(?:[^\r\n'\\]|\\.|\\[Uux][\da-fA-F]{1,8})'|(?=[^\\](?!')))/.source;function i(w,v){for(var h=0;h/g,function(){return"(?:"+w+")"});return w.replace(//g,"[^\\s\\S]").replace(//g,"(?:"+o+")").replace(//g,"(?:"+a+")")}var s=i(/\((?:[^()'"@/]|||)*\)/.source,2),l=i(/\[(?:[^\[\]'"@/]|||)*\]/.source,2),c=i(/\{(?:[^{}'"@/]|||)*\}/.source,2),u=i(/<(?:[^<>'"@/]|||)*>/.source,2),d=/(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?/.source,g=/(?!\d)[^\s>\/=$<%]+/.source+d+/\s*\/?>/.source,m=/\B@?/.source+"(?:"+/<([a-zA-Z][\w:]*)/.source+d+/\s*>/.source+"(?:"+(/[^<]/.source+"|"+/<\/?(?!\1\b)/.source+g+"|"+i(/<\1/.source+d+/\s*>/.source+"(?:"+(/[^<]/.source+"|"+/<\/?(?!\1\b)/.source+g+"|")+")*"+/<\/\1\s*>/.source,2))+")*"+/<\/\1\s*>/.source+"|"+/|\+|~|\|\|/,punctuation:/[(),]/}},n.languages.css.atrule.inside["selector-function-argument"].inside=a,n.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var o={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},i={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};n.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:o,number:i,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:o,number:i})})(t)}return vv}var Sv,lO;function Fbe(){if(lO)return Sv;lO=1,Sv=e,e.displayName="csv",e.aliases=[];function e(t){t.languages.csv={value:/[^\r\n,"]+|"(?:[^"]|"")*"(?!")/,punctuation:/,/}}return Sv}var wv,cO;function jbe(){if(cO)return wv;cO=1,wv=e,e.displayName="cypher",e.aliases=[];function e(t){t.languages.cypher={comment:/\/\/.*/,string:{pattern:/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/,greedy:!0},"class-name":{pattern:/(:\s*)(?:\w+|`(?:[^`\\\r\n])*`)(?=\s*[{):])/,lookbehind:!0,greedy:!0},relationship:{pattern:/(-\[\s*(?:\w+\s*|`(?:[^`\\\r\n])*`\s*)?:\s*|\|\s*:\s*)(?:\w+|`(?:[^`\\\r\n])*`)/,lookbehind:!0,greedy:!0,alias:"property"},identifier:{pattern:/`(?:[^`\\\r\n])*`/,greedy:!0},variable:/\$\w+/,keyword:/\b(?:ADD|ALL|AND|AS|ASC|ASCENDING|ASSERT|BY|CALL|CASE|COMMIT|CONSTRAINT|CONTAINS|CREATE|CSV|DELETE|DESC|DESCENDING|DETACH|DISTINCT|DO|DROP|ELSE|END|ENDS|EXISTS|FOR|FOREACH|IN|INDEX|IS|JOIN|KEY|LIMIT|LOAD|MANDATORY|MATCH|MERGE|NODE|NOT|OF|ON|OPTIONAL|OR|ORDER(?=\s+BY)|PERIODIC|REMOVE|REQUIRE|RETURN|SCALAR|SCAN|SET|SKIP|START|STARTS|THEN|UNION|UNIQUE|UNWIND|USING|WHEN|WHERE|WITH|XOR|YIELD)\b/i,function:/\b\w+\b(?=\s*\()/,boolean:/\b(?:false|null|true)\b/i,number:/\b(?:0x[\da-fA-F]+|\d+(?:\.\d+)?(?:[eE][+-]?\d+)?)\b/,operator:/:|<--?|--?>?|<>|=~?|[<>]=?|[+*/%^|]|\.\.\.?/,punctuation:/[()[\]{},;.]/}}return wv}var Ev,uO;function zbe(){if(uO)return Ev;uO=1,Ev=e,e.displayName="d",e.aliases=[];function e(t){t.languages.d=t.languages.extend("clike",{comment:[{pattern:/^\s*#!.+/,greedy:!0},{pattern:RegExp(/(^|[^\\])/.source+"(?:"+[/\/\+(?:\/\+(?:[^+]|\+(?!\/))*\+\/|(?!\/\+)[\s\S])*?\+\//.source,/\/\/.*/.source,/\/\*[\s\S]*?\*\//.source].join("|")+")"),lookbehind:!0,greedy:!0}],string:[{pattern:RegExp([/\b[rx]"(?:\\[\s\S]|[^\\"])*"[cwd]?/.source,/\bq"(?:\[[\s\S]*?\]|\([\s\S]*?\)|<[\s\S]*?>|\{[\s\S]*?\})"/.source,/\bq"((?!\d)\w+)$[\s\S]*?^\1"/.source,/\bq"(.)[\s\S]*?\2"/.source,/(["`])(?:\\[\s\S]|(?!\3)[^\\])*\3[cwd]?/.source].join("|"),"m"),greedy:!0},{pattern:/\bq\{(?:\{[^{}]*\}|[^{}])*\}/,greedy:!0,alias:"token-string"}],keyword:/\$|\b(?:__(?:(?:DATE|EOF|FILE|FUNCTION|LINE|MODULE|PRETTY_FUNCTION|TIMESTAMP|TIME|VENDOR|VERSION)__|gshared|parameters|traits|vector)|abstract|alias|align|asm|assert|auto|body|bool|break|byte|case|cast|catch|cdouble|cent|cfloat|char|class|const|continue|creal|dchar|debug|default|delegate|delete|deprecated|do|double|dstring|else|enum|export|extern|false|final|finally|float|for|foreach|foreach_reverse|function|goto|idouble|if|ifloat|immutable|import|inout|int|interface|invariant|ireal|lazy|long|macro|mixin|module|new|nothrow|null|out|override|package|pragma|private|protected|ptrdiff_t|public|pure|real|ref|return|scope|shared|short|size_t|static|string|struct|super|switch|synchronized|template|this|throw|true|try|typedef|typeid|typeof|ubyte|ucent|uint|ulong|union|unittest|ushort|version|void|volatile|wchar|while|with|wstring)\b/,number:[/\b0x\.?[a-f\d_]+(?:(?!\.\.)\.[a-f\d_]*)?(?:p[+-]?[a-f\d_]+)?[ulfi]{0,4}/i,{pattern:/((?:\.\.)?)(?:\b0b\.?|\b|\.)\d[\d_]*(?:(?!\.\.)\.[\d_]*)?(?:e[+-]?\d[\d_]*)?[ulfi]{0,4}/i,lookbehind:!0}],operator:/\|[|=]?|&[&=]?|\+[+=]?|-[-=]?|\.?\.\.|=[>=]?|!(?:i[ns]\b|<>?=?|>=?|=)?|\bi[ns]\b|(?:<[<>]?|>>?>?|\^\^|[*\/%^~])=?/}),t.languages.insertBefore("d","string",{char:/'(?:\\(?:\W|\w+)|[^\\])'/}),t.languages.insertBefore("d","keyword",{property:/\B@\w*/}),t.languages.insertBefore("d","function",{register:{pattern:/\b(?:[ABCD][LHX]|E?(?:BP|DI|SI|SP)|[BS]PL|[ECSDGF]S|CR[0234]|[DS]IL|DR[012367]|E[ABCD]X|X?MM[0-7]|R(?:1[0-5]|[89])[BWD]?|R[ABCD]X|R[BS]P|R[DS]I|TR[3-7]|XMM(?:1[0-5]|[89])|YMM(?:1[0-5]|\d))\b|\bST(?:\([0-7]\)|\b)/,alias:"variable"}})}return Ev}var xv,dO;function Ube(){if(dO)return xv;dO=1,xv=e,e.displayName="dart",e.aliases=[];function e(t){(function(n){var r=[/\b(?:async|sync|yield)\*/,/\b(?:abstract|assert|async|await|break|case|catch|class|const|continue|covariant|default|deferred|do|dynamic|else|enum|export|extends|extension|external|factory|final|finally|for|get|hide|if|implements|import|in|interface|library|mixin|new|null|on|operator|part|rethrow|return|set|show|static|super|switch|sync|this|throw|try|typedef|var|void|while|with|yield)\b/],a=/(^|[^\w.])(?:[a-z]\w*\s*\.\s*)*(?:[A-Z]\w*\s*\.\s*)*/.source,o={pattern:RegExp(a+/[A-Z](?:[\d_A-Z]*[a-z]\w*)?\b/.source),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,inside:{punctuation:/\./}}}};n.languages.dart=n.languages.extend("clike",{"class-name":[o,{pattern:RegExp(a+/[A-Z]\w*(?=\s+\w+\s*[;,=()])/.source),lookbehind:!0,inside:o.inside}],keyword:r,operator:/\bis!|\b(?:as|is)\b|\+\+|--|&&|\|\||<<=?|>>=?|~(?:\/=?)?|[+\-*\/%&^|=!<>]=?|\?/}),n.languages.insertBefore("dart","string",{"string-literal":{pattern:/r?(?:("""|''')[\s\S]*?\1|(["'])(?:\\.|(?!\2)[^\\\r\n])*\2(?!\2))/,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:\w+|\{(?:[^{}]|\{[^{}]*\})*\})/,lookbehind:!0,inside:{punctuation:/^\$\{?|\}$/,expression:{pattern:/[\s\S]+/,inside:n.languages.dart}}},string:/[\s\S]+/}},string:void 0}),n.languages.insertBefore("dart","class-name",{metadata:{pattern:/@\w+/,alias:"function"}}),n.languages.insertBefore("dart","class-name",{generics:{pattern:/<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<[\w\s,.&?]*>)*>)*>)*>/,inside:{"class-name":o,keyword:r,punctuation:/[<>(),.:]/,operator:/[?&|]/}}})})(t)}return xv}var kv,fO;function Bbe(){if(fO)return kv;fO=1,kv=e,e.displayName="dataweave",e.aliases=[];function e(t){(function(n){n.languages.dataweave={url:/\b[A-Za-z]+:\/\/[\w/:.?=&-]+|\burn:[\w:.?=&-]+/,property:{pattern:/(?:\b\w+#)?(?:"(?:\\.|[^\\"\r\n])*"|\b\w+)(?=\s*[:@])/,greedy:!0},string:{pattern:/(["'`])(?:\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0},"mime-type":/\b(?:application|audio|image|multipart|text|video)\/[\w+-]+/,date:{pattern:/\|[\w:+-]+\|/,greedy:!0},comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],regex:{pattern:/\/(?:[^\\\/\r\n]|\\[^\r\n])+\//,greedy:!0},keyword:/\b(?:and|as|at|case|do|else|fun|if|input|is|match|not|ns|null|or|output|type|unless|update|using|var)\b/,function:/\b[A-Z_]\w*(?=\s*\()/i,number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\];(),.:@]/,operator:/<<|>>|->|[<>~=]=?|!=|--?-?|\+\+?|!|\?/,boolean:/\b(?:false|true)\b/}})(t)}return kv}var Cv,pO;function Hbe(){if(pO)return Cv;pO=1,Cv=e,e.displayName="dax",e.aliases=[];function e(t){t.languages.dax={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/).*)/,lookbehind:!0},"data-field":{pattern:/'(?:[^']|'')*'(?!')(?:\[[ \w\xA0-\uFFFF]+\])?|\w+\[[ \w\xA0-\uFFFF]+\]/,alias:"symbol"},measure:{pattern:/\[[ \w\xA0-\uFFFF]+\]/,alias:"constant"},string:{pattern:/"(?:[^"]|"")*"(?!")/,greedy:!0},function:/\b(?:ABS|ACOS|ACOSH|ACOT|ACOTH|ADDCOLUMNS|ADDMISSINGITEMS|ALL|ALLCROSSFILTERED|ALLEXCEPT|ALLNOBLANKROW|ALLSELECTED|AND|APPROXIMATEDISTINCTCOUNT|ASIN|ASINH|ATAN|ATANH|AVERAGE|AVERAGEA|AVERAGEX|BETA\.DIST|BETA\.INV|BLANK|CALCULATE|CALCULATETABLE|CALENDAR|CALENDARAUTO|CEILING|CHISQ\.DIST|CHISQ\.DIST\.RT|CHISQ\.INV|CHISQ\.INV\.RT|CLOSINGBALANCEMONTH|CLOSINGBALANCEQUARTER|CLOSINGBALANCEYEAR|COALESCE|COMBIN|COMBINA|COMBINEVALUES|CONCATENATE|CONCATENATEX|CONFIDENCE\.NORM|CONFIDENCE\.T|CONTAINS|CONTAINSROW|CONTAINSSTRING|CONTAINSSTRINGEXACT|CONVERT|COS|COSH|COT|COTH|COUNT|COUNTA|COUNTAX|COUNTBLANK|COUNTROWS|COUNTX|CROSSFILTER|CROSSJOIN|CURRENCY|CURRENTGROUP|CUSTOMDATA|DATATABLE|DATE|DATEADD|DATEDIFF|DATESBETWEEN|DATESINPERIOD|DATESMTD|DATESQTD|DATESYTD|DATEVALUE|DAY|DEGREES|DETAILROWS|DISTINCT|DISTINCTCOUNT|DISTINCTCOUNTNOBLANK|DIVIDE|EARLIER|EARLIEST|EDATE|ENDOFMONTH|ENDOFQUARTER|ENDOFYEAR|EOMONTH|ERROR|EVEN|EXACT|EXCEPT|EXP|EXPON\.DIST|FACT|FALSE|FILTER|FILTERS|FIND|FIRSTDATE|FIRSTNONBLANK|FIRSTNONBLANKVALUE|FIXED|FLOOR|FORMAT|GCD|GENERATE|GENERATEALL|GENERATESERIES|GEOMEAN|GEOMEANX|GROUPBY|HASONEFILTER|HASONEVALUE|HOUR|IF|IF\.EAGER|IFERROR|IGNORE|INT|INTERSECT|ISBLANK|ISCROSSFILTERED|ISEMPTY|ISERROR|ISEVEN|ISFILTERED|ISINSCOPE|ISLOGICAL|ISNONTEXT|ISNUMBER|ISO\.CEILING|ISODD|ISONORAFTER|ISSELECTEDMEASURE|ISSUBTOTAL|ISTEXT|KEEPFILTERS|KEYWORDMATCH|LASTDATE|LASTNONBLANK|LASTNONBLANKVALUE|LCM|LEFT|LEN|LN|LOG|LOG10|LOOKUPVALUE|LOWER|MAX|MAXA|MAXX|MEDIAN|MEDIANX|MID|MIN|MINA|MINUTE|MINX|MOD|MONTH|MROUND|NATURALINNERJOIN|NATURALLEFTOUTERJOIN|NEXTDAY|NEXTMONTH|NEXTQUARTER|NEXTYEAR|NONVISUAL|NORM\.DIST|NORM\.INV|NORM\.S\.DIST|NORM\.S\.INV|NOT|NOW|ODD|OPENINGBALANCEMONTH|OPENINGBALANCEQUARTER|OPENINGBALANCEYEAR|OR|PARALLELPERIOD|PATH|PATHCONTAINS|PATHITEM|PATHITEMREVERSE|PATHLENGTH|PERCENTILE\.EXC|PERCENTILE\.INC|PERCENTILEX\.EXC|PERCENTILEX\.INC|PERMUT|PI|POISSON\.DIST|POWER|PREVIOUSDAY|PREVIOUSMONTH|PREVIOUSQUARTER|PREVIOUSYEAR|PRODUCT|PRODUCTX|QUARTER|QUOTIENT|RADIANS|RAND|RANDBETWEEN|RANK\.EQ|RANKX|RELATED|RELATEDTABLE|REMOVEFILTERS|REPLACE|REPT|RIGHT|ROLLUP|ROLLUPADDISSUBTOTAL|ROLLUPGROUP|ROLLUPISSUBTOTAL|ROUND|ROUNDDOWN|ROUNDUP|ROW|SAMEPERIODLASTYEAR|SAMPLE|SEARCH|SECOND|SELECTCOLUMNS|SELECTEDMEASURE|SELECTEDMEASUREFORMATSTRING|SELECTEDMEASURENAME|SELECTEDVALUE|SIGN|SIN|SINH|SQRT|SQRTPI|STARTOFMONTH|STARTOFQUARTER|STARTOFYEAR|STDEV\.P|STDEV\.S|STDEVX\.P|STDEVX\.S|SUBSTITUTE|SUBSTITUTEWITHINDEX|SUM|SUMMARIZE|SUMMARIZECOLUMNS|SUMX|SWITCH|T\.DIST|T\.DIST\.2T|T\.DIST\.RT|T\.INV|T\.INV\.2T|TAN|TANH|TIME|TIMEVALUE|TODAY|TOPN|TOPNPERLEVEL|TOPNSKIP|TOTALMTD|TOTALQTD|TOTALYTD|TREATAS|TRIM|TRUE|TRUNC|UNICHAR|UNICODE|UNION|UPPER|USERELATIONSHIP|USERNAME|USEROBJECTID|USERPRINCIPALNAME|UTCNOW|UTCTODAY|VALUE|VALUES|VAR\.P|VAR\.S|VARX\.P|VARX\.S|WEEKDAY|WEEKNUM|XIRR|XNPV|YEAR|YEARFRAC)(?=\s*\()/i,keyword:/\b(?:DEFINE|EVALUATE|MEASURE|ORDER\s+BY|RETURN|VAR|START\s+AT|ASC|DESC)\b/i,boolean:{pattern:/\b(?:FALSE|NULL|TRUE)\b/i,alias:"constant"},number:/\b\d+(?:\.\d*)?|\B\.\d+\b/,operator:/:=|[-+*\/=^]|&&?|\|\||<(?:=>?|<|>)?|>[>=]?|\b(?:IN|NOT)\b/i,punctuation:/[;\[\](){}`,.]/}}return Cv}var _v,gO;function Vbe(){if(gO)return _v;gO=1,_v=e,e.displayName="dhall",e.aliases=[];function e(t){t.languages.dhall={comment:/--.*|\{-(?:[^-{]|-(?!\})|\{(?!-)|\{-(?:[^-{]|-(?!\})|\{(?!-))*-\})*-\}/,string:{pattern:/"(?:[^"\\]|\\.)*"|''(?:[^']|'(?!')|'''|''\$\{)*''(?!'|\$)/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^{}]*\}/,inside:{expression:{pattern:/(^\$\{)[\s\S]+(?=\}$)/,lookbehind:!0,alias:"language-dhall",inside:null},punctuation:/\$\{|\}/}}}},label:{pattern:/`[^`]*`/,greedy:!0},url:{pattern:/\bhttps?:\/\/[\w.:%!$&'*+;=@~-]+(?:\/[\w.:%!$&'*+;=@~-]*)*(?:\?[/?\w.:%!$&'*+;=@~-]*)?/,greedy:!0},env:{pattern:/\benv:(?:(?!\d)\w+|"(?:[^"\\=]|\\.)*")/,greedy:!0,inside:{function:/^env/,operator:/^:/,variable:/[\s\S]+/}},hash:{pattern:/\bsha256:[\da-fA-F]{64}\b/,inside:{function:/sha256/,operator:/:/,number:/[\da-fA-F]{64}/}},keyword:/\b(?:as|assert|else|forall|if|in|let|merge|missing|then|toMap|using|with)\b|\u2200/,builtin:/\b(?:None|Some)\b/,boolean:/\b(?:False|True)\b/,number:/\bNaN\b|-?\bInfinity\b|[+-]?\b(?:0x[\da-fA-F]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)\b/,operator:/\/\\|\/\/\\\\|&&|\|\||===|[!=]=|\/\/|->|\+\+|::|[+*#@=:?<>|\\\u2227\u2a53\u2261\u2afd\u03bb\u2192]/,punctuation:/\.\.|[{}\[\](),./]/,"class-name":/\b[A-Z]\w*\b/},t.languages.dhall.string.inside.interpolation.inside.expression.inside=t.languages.dhall}return _v}var Av,mO;function qbe(){if(mO)return Av;mO=1,Av=e,e.displayName="diff",e.aliases=[];function e(t){(function(n){n.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var r={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(r).forEach(function(a){var o=r[a],i=[];/^\w+$/.test(a)||i.push(/\w+/.exec(a)[0]),a==="diff"&&i.push("bold"),n.languages.diff[a]={pattern:RegExp("^(?:["+o+`].*(?:\r -?| -|(?![\\s\\S])))+`,"m"),alias:i,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(a)[0]}}}}),Object.defineProperty(n.languages.diff,"PREFIXES",{value:r})})(t)}return Av}var Tv,hO;function mr(){if(hO)return Tv;hO=1,Tv=e,e.displayName="markupTemplating",e.aliases=[];function e(t){(function(n){function r(a,o){return"___"+a.toUpperCase()+o+"___"}Object.defineProperties(n.languages["markup-templating"]={},{buildPlaceholders:{value:function(a,o,i,s){if(a.language===o){var l=a.tokenStack=[];a.code=a.code.replace(i,function(c){if(typeof s=="function"&&!s(c))return c;for(var u=l.length,d;a.code.indexOf(d=r(o,u))!==-1;)++u;return l[u]=c,d}),a.grammar=n.languages.markup}}},tokenizePlaceholders:{value:function(a,o){if(a.language!==o||!a.tokenStack)return;a.grammar=n.languages[o];var i=0,s=Object.keys(a.tokenStack);function l(c){for(var u=0;u=s.length);u++){var d=c[u];if(typeof d=="string"||d.content&&typeof d.content=="string"){var g=s[i],m=a.tokenStack[g],b=typeof d=="string"?d:d.content,y=r(o,g),w=b.indexOf(y);if(w>-1){++i;var v=b.substring(0,w),h=new n.Token(o,n.tokenize(m,a.grammar),"language-"+o,m),S=b.substring(w+y.length),E=[];v&&E.push.apply(E,l([v])),E.push(h),S&&E.push.apply(E,l([S])),typeof d=="string"?c.splice.apply(c,[u,1].concat(E)):d.content=E}}else d.content&&l(d.content)}return c}l(a.tokens)}}})})(t)}return Tv}var Rv,bO;function Gbe(){if(bO)return Rv;bO=1;var e=mr();Rv=t,t.displayName="django",t.aliases=["jinja2"];function t(n){n.register(e),function(r){r.languages.django={comment:/^\{#[\s\S]*?#\}$/,tag:{pattern:/(^\{%[+-]?\s*)\w+/,lookbehind:!0,alias:"keyword"},delimiter:{pattern:/^\{[{%][+-]?|[+-]?[}%]\}$/,alias:"punctuation"},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},filter:{pattern:/(\|)\w+/,lookbehind:!0,alias:"function"},test:{pattern:/(\bis\s+(?:not\s+)?)(?!not\b)\w+/,lookbehind:!0,alias:"function"},function:/\b[a-z_]\w+(?=\s*\()/i,keyword:/\b(?:and|as|by|else|for|if|import|in|is|loop|not|or|recursive|with|without)\b/,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,number:/\b\d+(?:\.\d+)?\b/,boolean:/[Ff]alse|[Nn]one|[Tt]rue/,variable:/\b\w+\b/,punctuation:/[{}[\](),.:;]/};var a=/\{\{[\s\S]*?\}\}|\{%[\s\S]*?%\}|\{#[\s\S]*?#\}/g,o=r.languages["markup-templating"];r.hooks.add("before-tokenize",function(i){o.buildPlaceholders(i,"django",a)}),r.hooks.add("after-tokenize",function(i){o.tokenizePlaceholders(i,"django")}),r.languages.jinja2=r.languages.django,r.hooks.add("before-tokenize",function(i){o.buildPlaceholders(i,"jinja2",a)}),r.hooks.add("after-tokenize",function(i){o.tokenizePlaceholders(i,"jinja2")})}(n)}return Rv}var Nv,yO;function Wbe(){if(yO)return Nv;yO=1,Nv=e,e.displayName="dnsZoneFile",e.aliases=[];function e(t){t.languages["dns-zone-file"]={comment:/;.*/,string:{pattern:/"(?:\\.|[^"\\\r\n])*"/,greedy:!0},variable:[{pattern:/(^\$ORIGIN[ \t]+)\S+/m,lookbehind:!0},{pattern:/(^|\s)@(?=\s|$)/,lookbehind:!0}],keyword:/^\$(?:INCLUDE|ORIGIN|TTL)(?=\s|$)/m,class:{pattern:/(^|\s)(?:CH|CS|HS|IN)(?=\s|$)/,lookbehind:!0,alias:"keyword"},type:{pattern:/(^|\s)(?:A|A6|AAAA|AFSDB|APL|ATMA|CAA|CDNSKEY|CDS|CERT|CNAME|DHCID|DLV|DNAME|DNSKEY|DS|EID|GID|GPOS|HINFO|HIP|IPSECKEY|ISDN|KEY|KX|LOC|MAILA|MAILB|MB|MD|MF|MG|MINFO|MR|MX|NAPTR|NB|NBSTAT|NIMLOC|NINFO|NS|NSAP|NSAP-PTR|NSEC|NSEC3|NSEC3PARAM|NULL|NXT|OPENPGPKEY|PTR|PX|RKEY|RP|RRSIG|RT|SIG|SINK|SMIMEA|SOA|SPF|SRV|SSHFP|TA|TKEY|TLSA|TSIG|TXT|UID|UINFO|UNSPEC|URI|WKS|X25)(?=\s|$)/,lookbehind:!0,alias:"keyword"},punctuation:/[()]/},t.languages["dns-zone"]=t.languages["dns-zone-file"]}return Nv}var Iv,vO;function Kbe(){if(vO)return Iv;vO=1,Iv=e,e.displayName="docker",e.aliases=["dockerfile"];function e(t){(function(n){var r=/\\[\r\n](?:\s|\\[\r\n]|#.*(?!.))*(?![\s#]|\\[\r\n])/.source,a=/(?:[ \t]+(?![ \t])(?:)?|)/.source.replace(//g,function(){return r}),o=/"(?:[^"\\\r\n]|\\(?:\r\n|[\s\S]))*"|'(?:[^'\\\r\n]|\\(?:\r\n|[\s\S]))*'/.source,i=/--[\w-]+=(?:|(?!["'])(?:[^\s\\]|\\.)+)/.source.replace(//g,function(){return o}),s={pattern:RegExp(o),greedy:!0},l={pattern:/(^[ \t]*)#.*/m,lookbehind:!0,greedy:!0};function c(u,d){return u=u.replace(//g,function(){return i}).replace(//g,function(){return a}),RegExp(u,d)}n.languages.docker={instruction:{pattern:/(^[ \t]*)(?:ADD|ARG|CMD|COPY|ENTRYPOINT|ENV|EXPOSE|FROM|HEALTHCHECK|LABEL|MAINTAINER|ONBUILD|RUN|SHELL|STOPSIGNAL|USER|VOLUME|WORKDIR)(?=\s)(?:\\.|[^\r\n\\])*(?:\\$(?:\s|#.*$)*(?![\s#])(?:\\.|[^\r\n\\])*)*/im,lookbehind:!0,greedy:!0,inside:{options:{pattern:c(/(^(?:ONBUILD)?\w+)(?:)*/.source,"i"),lookbehind:!0,greedy:!0,inside:{property:{pattern:/(^|\s)--[\w-]+/,lookbehind:!0},string:[s,{pattern:/(=)(?!["'])(?:[^\s\\]|\\.)+/,lookbehind:!0}],operator:/\\$/m,punctuation:/=/}},keyword:[{pattern:c(/(^(?:ONBUILD)?HEALTHCHECK(?:)*)(?:CMD|NONE)\b/.source,"i"),lookbehind:!0,greedy:!0},{pattern:c(/(^(?:ONBUILD)?FROM(?:)*(?!--)[^ \t\\]+)AS/.source,"i"),lookbehind:!0,greedy:!0},{pattern:c(/(^ONBUILD)\w+/.source,"i"),lookbehind:!0,greedy:!0},{pattern:/^\w+/,greedy:!0}],comment:l,string:s,variable:/\$(?:\w+|\{[^{}"'\\]*\})/,operator:/\\$/m}},comment:l},n.languages.dockerfile=n.languages.docker})(t)}return Iv}var Ov,SO;function Ybe(){if(SO)return Ov;SO=1,Ov=e,e.displayName="dot",e.aliases=["gv"];function e(t){(function(n){var r="(?:"+[/[a-zA-Z_\x80-\uFFFF][\w\x80-\uFFFF]*/.source,/-?(?:\.\d+|\d+(?:\.\d*)?)/.source,/"[^"\\]*(?:\\[\s\S][^"\\]*)*"/.source,/<(?:[^<>]|(?!)*>/.source].join("|")+")",a={markup:{pattern:/(^<)[\s\S]+(?=>$)/,lookbehind:!0,alias:["language-markup","language-html","language-xml"],inside:n.languages.markup}};function o(i,s){return RegExp(i.replace(//g,function(){return r}),s)}n.languages.dot={comment:{pattern:/\/\/.*|\/\*[\s\S]*?\*\/|^#.*/m,greedy:!0},"graph-name":{pattern:o(/(\b(?:digraph|graph|subgraph)[ \t\r\n]+)/.source,"i"),lookbehind:!0,greedy:!0,alias:"class-name",inside:a},"attr-value":{pattern:o(/(=[ \t\r\n]*)/.source),lookbehind:!0,greedy:!0,inside:a},"attr-name":{pattern:o(/([\[;, \t\r\n])(?=[ \t\r\n]*=)/.source),lookbehind:!0,greedy:!0,inside:a},keyword:/\b(?:digraph|edge|graph|node|strict|subgraph)\b/i,"compass-point":{pattern:/(:[ \t\r\n]*)(?:[ewc_]|[ns][ew]?)(?![\w\x80-\uFFFF])/,lookbehind:!0,alias:"builtin"},node:{pattern:o(/(^|[^-.\w\x80-\uFFFF\\])/.source),lookbehind:!0,greedy:!0,inside:a},operator:/[=:]|-[->]/,punctuation:/[\[\]{};,]/},n.languages.gv=n.languages.dot})(t)}return Ov}var Dv,wO;function Zbe(){if(wO)return Dv;wO=1,Dv=e,e.displayName="ebnf",e.aliases=[];function e(t){t.languages.ebnf={comment:/\(\*[\s\S]*?\*\)/,string:{pattern:/"[^"\r\n]*"|'[^'\r\n]*'/,greedy:!0},special:{pattern:/\?[^?\r\n]*\?/,greedy:!0,alias:"class-name"},definition:{pattern:/^([\t ]*)[a-z]\w*(?:[ \t]+[a-z]\w*)*(?=\s*=)/im,lookbehind:!0,alias:["rule","keyword"]},rule:/\b[a-z]\w*(?:[ \t]+[a-z]\w*)*\b/i,punctuation:/\([:/]|[:/]\)|[.,;()[\]{}]/,operator:/[-=|*/!]/}}return Dv}var Lv,EO;function Xbe(){if(EO)return Lv;EO=1,Lv=e,e.displayName="editorconfig",e.aliases=[];function e(t){t.languages.editorconfig={comment:/[;#].*/,section:{pattern:/(^[ \t]*)\[.+\]/m,lookbehind:!0,alias:"selector",inside:{regex:/\\\\[\[\]{},!?.*]/,operator:/[!?]|\.\.|\*{1,2}/,punctuation:/[\[\]{},]/}},key:{pattern:/(^[ \t]*)[^\s=]+(?=[ \t]*=)/m,lookbehind:!0,alias:"attr-name"},value:{pattern:/=.*/,alias:"attr-value",inside:{punctuation:/^=/}}}}return Lv}var Mv,xO;function Qbe(){if(xO)return Mv;xO=1,Mv=e,e.displayName="eiffel",e.aliases=[];function e(t){t.languages.eiffel={comment:/--.*/,string:[{pattern:/"([^[]*)\[[\s\S]*?\]\1"/,greedy:!0},{pattern:/"([^{]*)\{[\s\S]*?\}\1"/,greedy:!0},{pattern:/"(?:%(?:(?!\n)\s)*\n\s*%|%\S|[^%"\r\n])*"/,greedy:!0}],char:/'(?:%.|[^%'\r\n])+'/,keyword:/\b(?:across|agent|alias|all|and|as|assign|attached|attribute|check|class|convert|create|Current|debug|deferred|detachable|do|else|elseif|end|ensure|expanded|export|external|feature|from|frozen|if|implies|inherit|inspect|invariant|like|local|loop|not|note|obsolete|old|once|or|Precursor|redefine|rename|require|rescue|Result|retry|select|separate|some|then|undefine|until|variant|Void|when|xor)\b/i,boolean:/\b(?:False|True)\b/i,"class-name":/\b[A-Z][\dA-Z_]*\b/,number:[/\b0[xcb][\da-f](?:_*[\da-f])*\b/i,/(?:\b\d(?:_*\d)*)?\.(?:(?:\d(?:_*\d)*)?e[+-]?)?\d(?:_*\d)*\b|\b\d(?:_*\d)*\b\.?/i],punctuation:/:=|<<|>>|\(\||\|\)|->|\.(?=\w)|[{}[\];(),:?]/,operator:/\\\\|\|\.\.\||\.\.|\/[~\/=]?|[><]=?|[-+*^=~]/}}return Mv}var Pv,kO;function Jbe(){if(kO)return Pv;kO=1;var e=mr();Pv=t,t.displayName="ejs",t.aliases=["eta"];function t(n){n.register(e),function(r){r.languages.ejs={delimiter:{pattern:/^<%[-_=]?|[-_]?%>$/,alias:"punctuation"},comment:/^#[\s\S]*/,"language-javascript":{pattern:/[\s\S]+/,inside:r.languages.javascript}},r.hooks.add("before-tokenize",function(a){var o=/<%(?!%)[\s\S]+?%>/g;r.languages["markup-templating"].buildPlaceholders(a,"ejs",o)}),r.hooks.add("after-tokenize",function(a){r.languages["markup-templating"].tokenizePlaceholders(a,"ejs")}),r.languages.eta=r.languages.ejs}(n)}return Pv}var $v,CO;function eye(){if(CO)return $v;CO=1,$v=e,e.displayName="elixir",e.aliases=[];function e(t){t.languages.elixir={doc:{pattern:/@(?:doc|moduledoc)\s+(?:("""|''')[\s\S]*?\1|("|')(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2)/,inside:{attribute:/^@\w+/,string:/['"][\s\S]+/}},comment:{pattern:/#.*/,greedy:!0},regex:{pattern:/~[rR](?:("""|''')(?:\\[\s\S]|(?!\1)[^\\])+\1|([\/|"'])(?:\\.|(?!\2)[^\\\r\n])+\2|\((?:\\.|[^\\)\r\n])+\)|\[(?:\\.|[^\\\]\r\n])+\]|\{(?:\\.|[^\\}\r\n])+\}|<(?:\\.|[^\\>\r\n])+>)[uismxfr]*/,greedy:!0},string:[{pattern:/~[cCsSwW](?:("""|''')(?:\\[\s\S]|(?!\1)[^\\])+\1|([\/|"'])(?:\\.|(?!\2)[^\\\r\n])+\2|\((?:\\.|[^\\)\r\n])+\)|\[(?:\\.|[^\\\]\r\n])+\]|\{(?:\\.|#\{[^}]+\}|#(?!\{)|[^#\\}\r\n])+\}|<(?:\\.|[^\\>\r\n])+>)[csa]?/,greedy:!0,inside:{}},{pattern:/("""|''')[\s\S]*?\1/,greedy:!0,inside:{}},{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{}}],atom:{pattern:/(^|[^:]):\w+/,lookbehind:!0,alias:"symbol"},module:{pattern:/\b[A-Z]\w*\b/,alias:"class-name"},"attr-name":/\b\w+\??:(?!:)/,argument:{pattern:/(^|[^&])&\d+/,lookbehind:!0,alias:"variable"},attribute:{pattern:/@\w+/,alias:"variable"},function:/\b[_a-zA-Z]\w*[?!]?(?:(?=\s*(?:\.\s*)?\()|(?=\/\d))/,number:/\b(?:0[box][a-f\d_]+|\d[\d_]*)(?:\.[\d_]+)?(?:e[+-]?[\d_]+)?\b/i,keyword:/\b(?:after|alias|and|case|catch|cond|def(?:callback|delegate|exception|impl|macro|module|n|np|p|protocol|struct)?|do|else|end|fn|for|if|import|not|or|quote|raise|require|rescue|try|unless|unquote|use|when)\b/,boolean:/\b(?:false|nil|true)\b/,operator:[/\bin\b|&&?|\|[|>]?|\\\\|::|\.\.\.?|\+\+?|-[->]?|<[-=>]|>=|!==?|\B!|=(?:==?|[>~])?|[*\/^]/,{pattern:/([^<])<(?!<)/,lookbehind:!0},{pattern:/([^>])>(?!>)/,lookbehind:!0}],punctuation:/<<|>>|[.,%\[\]{}()]/},t.languages.elixir.string.forEach(function(n){n.inside={interpolation:{pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"punctuation"},rest:t.languages.elixir}}}})}return $v}var Fv,_O;function tye(){if(_O)return Fv;_O=1,Fv=e,e.displayName="elm",e.aliases=[];function e(t){t.languages.elm={comment:/--.*|\{-[\s\S]*?-\}/,char:{pattern:/'(?:[^\\'\r\n]|\\(?:[abfnrtv\\']|\d+|x[0-9a-fA-F]+|u\{[0-9a-fA-F]+\}))'/,greedy:!0},string:[{pattern:/"""[\s\S]*?"""/,greedy:!0},{pattern:/"(?:[^\\"\r\n]|\\.)*"/,greedy:!0}],"import-statement":{pattern:/(^[\t ]*)import\s+[A-Z]\w*(?:\.[A-Z]\w*)*(?:\s+as\s+(?:[A-Z]\w*)(?:\.[A-Z]\w*)*)?(?:\s+exposing\s+)?/m,lookbehind:!0,inside:{keyword:/\b(?:as|exposing|import)\b/}},keyword:/\b(?:alias|as|case|else|exposing|if|in|infixl|infixr|let|module|of|then|type)\b/,builtin:/\b(?:abs|acos|always|asin|atan|atan2|ceiling|clamp|compare|cos|curry|degrees|e|flip|floor|fromPolar|identity|isInfinite|isNaN|logBase|max|min|negate|never|not|pi|radians|rem|round|sin|sqrt|tan|toFloat|toPolar|toString|truncate|turns|uncurry|xor)\b/,number:/\b(?:\d+(?:\.\d+)?(?:e[+-]?\d+)?|0x[0-9a-f]+)\b/i,operator:/\s\.\s|[+\-/*=.$<>:&|^?%#@~!]{2,}|[+\-/*=$<>:&|^?%#@~!]/,hvariable:/\b(?:[A-Z]\w*\.)*[a-z]\w*\b/,constant:/\b(?:[A-Z]\w*\.)*[A-Z]\w*\b/,punctuation:/[{}[\]|(),.:]/}}return Fv}var jv,AO;function nye(){if(AO)return jv;AO=1;var e=Th(),t=mr();jv=n,n.displayName="erb",n.aliases=[];function n(r){r.register(e),r.register(t),function(a){a.languages.erb={delimiter:{pattern:/^(\s*)<%=?|%>(?=\s*$)/,lookbehind:!0,alias:"punctuation"},ruby:{pattern:/\s*\S[\s\S]*/,alias:"language-ruby",inside:a.languages.ruby}},a.hooks.add("before-tokenize",function(o){var i=/<%=?(?:[^\r\n]|[\r\n](?!=begin)|[\r\n]=begin\s(?:[^\r\n]|[\r\n](?!=end))*[\r\n]=end)+?%>/g;a.languages["markup-templating"].buildPlaceholders(o,"erb",i)}),a.hooks.add("after-tokenize",function(o){a.languages["markup-templating"].tokenizePlaceholders(o,"erb")})}(r)}return jv}var zv,TO;function rye(){if(TO)return zv;TO=1,zv=e,e.displayName="erlang",e.aliases=[];function e(t){t.languages.erlang={comment:/%.+/,string:{pattern:/"(?:\\.|[^\\"\r\n])*"/,greedy:!0},"quoted-function":{pattern:/'(?:\\.|[^\\'\r\n])+'(?=\()/,alias:"function"},"quoted-atom":{pattern:/'(?:\\.|[^\\'\r\n])+'/,alias:"atom"},boolean:/\b(?:false|true)\b/,keyword:/\b(?:after|case|catch|end|fun|if|of|receive|try|when)\b/,number:[/\$\\?./,/\b\d+#[a-z0-9]+/i,/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i],function:/\b[a-z][\w@]*(?=\()/,variable:{pattern:/(^|[^@])(?:\b|\?)[A-Z_][\w@]*/,lookbehind:!0},operator:[/[=\/<>:]=|=[:\/]=|\+\+?|--?|[=*\/!]|\b(?:and|andalso|band|bnot|bor|bsl|bsr|bxor|div|not|or|orelse|rem|xor)\b/,{pattern:/(^|[^<])<(?!<)/,lookbehind:!0},{pattern:/(^|[^>])>(?!>)/,lookbehind:!0}],atom:/\b[a-z][\w@]*/,punctuation:/[()[\]{}:;,.#|]|<<|>>/}}return zv}var Uv,RO;function iz(){if(RO)return Uv;RO=1,Uv=e,e.displayName="lua",e.aliases=[];function e(t){t.languages.lua={comment:/^#!.+|--(?:\[(=*)\[[\s\S]*?\]\1\]|.*)/m,string:{pattern:/(["'])(?:(?!\1)[^\\\r\n]|\\z(?:\r\n|\s)|\\(?:\r\n|[^z]))*\1|\[(=*)\[[\s\S]*?\]\2\]/,greedy:!0},number:/\b0x[a-f\d]+(?:\.[a-f\d]*)?(?:p[+-]?\d+)?\b|\b\d+(?:\.\B|(?:\.\d*)?(?:e[+-]?\d+)?\b)|\B\.\d+(?:e[+-]?\d+)?\b/i,keyword:/\b(?:and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/,function:/(?!\d)\w+(?=\s*(?:[({]))/,operator:[/[-+*%^&|#]|\/\/?|<[<=]?|>[>=]?|[=~]=?/,{pattern:/(^|[^.])\.\.(?!\.)/,lookbehind:!0}],punctuation:/[\[\](){},;]|\.+|:+/}}return Uv}var Bv,NO;function aye(){if(NO)return Bv;NO=1;var e=iz(),t=mr();Bv=n,n.displayName="etlua",n.aliases=[];function n(r){r.register(e),r.register(t),function(a){a.languages.etlua={delimiter:{pattern:/^<%[-=]?|-?%>$/,alias:"punctuation"},"language-lua":{pattern:/[\s\S]+/,inside:a.languages.lua}},a.hooks.add("before-tokenize",function(o){var i=/<%[\s\S]+?%>/g;a.languages["markup-templating"].buildPlaceholders(o,"etlua",i)}),a.hooks.add("after-tokenize",function(o){a.languages["markup-templating"].tokenizePlaceholders(o,"etlua")})}(r)}return Bv}var Hv,IO;function oye(){if(IO)return Hv;IO=1,Hv=e,e.displayName="excelFormula",e.aliases=[];function e(t){t.languages["excel-formula"]={comment:{pattern:/(\bN\(\s*)"(?:[^"]|"")*"(?=\s*\))/i,lookbehind:!0,greedy:!0},string:{pattern:/"(?:[^"]|"")*"(?!")/,greedy:!0},reference:{pattern:/(?:'[^']*'|(?:[^\s()[\]{}<>*?"';,$&]*\[[^^\s()[\]{}<>*?"']+\])?\w+)!/,greedy:!0,alias:"string",inside:{operator:/!$/,punctuation:/'/,sheet:{pattern:/[^[\]]+$/,alias:"function"},file:{pattern:/\[[^[\]]+\]$/,inside:{punctuation:/[[\]]/}},path:/[\s\S]+/}},"function-name":{pattern:/\b[A-Z]\w*(?=\()/i,alias:"keyword"},range:{pattern:/\$?\b(?:[A-Z]+\$?\d+:\$?[A-Z]+\$?\d+|[A-Z]+:\$?[A-Z]+|\d+:\$?\d+)\b/i,alias:"property",inside:{operator:/:/,cell:/\$?[A-Z]+\$?\d+/i,column:/\$?[A-Z]+/i,row:/\$?\d+/}},cell:{pattern:/\b[A-Z]+\d+\b|\$[A-Za-z]+\$?\d+\b|\b[A-Za-z]+\$\d+\b/,alias:"property"},number:/(?:\b\d+(?:\.\d+)?|\B\.\d+)(?:e[+-]?\d+)?\b/i,boolean:/\b(?:FALSE|TRUE)\b/i,operator:/[-+*/^%=&,]|<[=>]?|>=?/,punctuation:/[[\]();{}|]/},t.languages.xlsx=t.languages.xls=t.languages["excel-formula"]}return Hv}var Vv,OO;function iye(){if(OO)return Vv;OO=1,Vv=e,e.displayName="factor",e.aliases=[];function e(t){(function(n){var r={function:/\b(?:BUGS?|FIX(?:MES?)?|NOTES?|TODOS?|XX+|HACKS?|WARN(?:ING)?|\?{2,}|!{2,})\b/},a={number:/\\[^\s']|%\w/},o={comment:[{pattern:/(^|\s)(?:! .*|!$)/,lookbehind:!0,inside:r},{pattern:/(^|\s)\/\*\s[\s\S]*?\*\/(?=\s|$)/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|\s)!\[(={0,6})\[\s[\s\S]*?\]\2\](?=\s|$)/,lookbehind:!0,greedy:!0,inside:r}],number:[{pattern:/(^|\s)[+-]?\d+(?=\s|$)/,lookbehind:!0},{pattern:/(^|\s)[+-]?0(?:b[01]+|o[0-7]+|d\d+|x[\dA-F]+)(?=\s|$)/i,lookbehind:!0},{pattern:/(^|\s)[+-]?\d+\/\d+\.?(?=\s|$)/,lookbehind:!0},{pattern:/(^|\s)\+?\d+\+\d+\/\d+(?=\s|$)/,lookbehind:!0},{pattern:/(^|\s)-\d+-\d+\/\d+(?=\s|$)/,lookbehind:!0},{pattern:/(^|\s)[+-]?(?:\d*\.\d+|\d+\.\d*|\d+)(?:e[+-]?\d+)?(?=\s|$)/i,lookbehind:!0},{pattern:/(^|\s)NAN:\s+[\da-fA-F]+(?=\s|$)/,lookbehind:!0},{pattern:/(^|\s)[+-]?0(?:b1\.[01]*|o1\.[0-7]*|d1\.\d*|x1\.[\dA-F]*)p\d+(?=\s|$)/i,lookbehind:!0}],regexp:{pattern:/(^|\s)R\/\s(?:\\\S|[^\\/])*\/(?:[idmsr]*|[idmsr]+-[idmsr]+)(?=\s|$)/,lookbehind:!0,alias:"number",inside:{variable:/\\\S/,keyword:/[+?*\[\]^$(){}.|]/,operator:{pattern:/(\/)[idmsr]+(?:-[idmsr]+)?/,lookbehind:!0}}},boolean:{pattern:/(^|\s)[tf](?=\s|$)/,lookbehind:!0},"custom-string":{pattern:/(^|\s)[A-Z0-9\-]+"\s(?:\\\S|[^"\\])*"/,lookbehind:!0,greedy:!0,alias:"string",inside:{number:/\\\S|%\w|\//}},"multiline-string":[{pattern:/(^|\s)STRING:\s+\S+(?:\n|\r\n).*(?:\n|\r\n)\s*;(?=\s|$)/,lookbehind:!0,greedy:!0,alias:"string",inside:{number:a.number,"semicolon-or-setlocal":{pattern:/([\r\n][ \t]*);(?=\s|$)/,lookbehind:!0,alias:"function"}}},{pattern:/(^|\s)HEREDOC:\s+\S+(?:\n|\r\n).*(?:\n|\r\n)\s*\S+(?=\s|$)/,lookbehind:!0,greedy:!0,alias:"string",inside:a},{pattern:/(^|\s)\[(={0,6})\[\s[\s\S]*?\]\2\](?=\s|$)/,lookbehind:!0,greedy:!0,alias:"string",inside:a}],"special-using":{pattern:/(^|\s)USING:(?:\s\S+)*(?=\s+;(?:\s|$))/,lookbehind:!0,alias:"function",inside:{string:{pattern:/(\s)[^:\s]+/,lookbehind:!0}}},"stack-effect-delimiter":[{pattern:/(^|\s)(?:call|eval|execute)?\((?=\s)/,lookbehind:!0,alias:"operator"},{pattern:/(\s)--(?=\s)/,lookbehind:!0,alias:"operator"},{pattern:/(\s)\)(?=\s|$)/,lookbehind:!0,alias:"operator"}],combinators:{pattern:null,lookbehind:!0,alias:"keyword"},"kernel-builtin":{pattern:null,lookbehind:!0,alias:"variable"},"sequences-builtin":{pattern:null,lookbehind:!0,alias:"variable"},"math-builtin":{pattern:null,lookbehind:!0,alias:"variable"},"constructor-word":{pattern:/(^|\s)<(?!=+>|-+>)\S+>(?=\s|$)/,lookbehind:!0,alias:"keyword"},"other-builtin-syntax":{pattern:null,lookbehind:!0,alias:"operator"},"conventionally-named-word":{pattern:/(^|\s)(?!")(?:(?:change|new|set|with)-\S+|\$\S+|>[^>\s]+|[^:>\s]+>|[^>\s]+>[^>\s]+|\+[^+\s]+\+|[^?\s]+\?|\?[^?\s]+|[^>\s]+>>|>>[^>\s]+|[^<\s]+<<|\([^()\s]+\)|[^!\s]+!|[^*\s]\S*\*|[^.\s]\S*\.)(?=\s|$)/,lookbehind:!0,alias:"keyword"},"colon-syntax":{pattern:/(^|\s)(?:[A-Z0-9\-]+#?)?:{1,2}\s+(?:;\S+|(?!;)\S+)(?=\s|$)/,lookbehind:!0,greedy:!0,alias:"function"},"semicolon-or-setlocal":{pattern:/(\s)(?:;|:>)(?=\s|$)/,lookbehind:!0,alias:"function"},"curly-brace-literal-delimiter":[{pattern:/(^|\s)[a-z]*\{(?=\s)/i,lookbehind:!0,alias:"operator"},{pattern:/(\s)\}(?=\s|$)/,lookbehind:!0,alias:"operator"}],"quotation-delimiter":[{pattern:/(^|\s)\[(?=\s)/,lookbehind:!0,alias:"operator"},{pattern:/(\s)\](?=\s|$)/,lookbehind:!0,alias:"operator"}],"normal-word":{pattern:/(^|\s)[^"\s]\S*(?=\s|$)/,lookbehind:!0},string:{pattern:/"(?:\\\S|[^"\\])*"/,greedy:!0,inside:a}},i=function(u){return(u+"").replace(/([.?*+\^$\[\]\\(){}|\-])/g,"\\$1")},s=function(u){return new RegExp("(^|\\s)(?:"+u.map(i).join("|")+")(?=\\s|$)")},l={"kernel-builtin":["or","2nipd","4drop","tuck","wrapper","nip","wrapper?","callstack>array","die","dupd","callstack","callstack?","3dup","hashcode","pick","4nip","build",">boolean","nipd","clone","5nip","eq?","?","=","swapd","2over","clear","2dup","get-retainstack","not","tuple?","dup","3nipd","call","-rotd","object","drop","assert=","assert?","-rot","execute","boa","get-callstack","curried?","3drop","pickd","overd","over","roll","3nip","swap","and","2nip","rotd","throw","(clone)","hashcode*","spin","reach","4dup","equal?","get-datastack","assert","2drop","","boolean?","identity-hashcode","identity-tuple?","null","composed?","new","5drop","rot","-roll","xor","identity-tuple","boolean"],"other-builtin-syntax":["=======","recursive","flushable",">>","<<<<<<","M\\","B","PRIVATE>","\\","======","final","inline","delimiter","deprecated",">>>>>","<<<<<<<","parse-complex","malformed-complex","read-only",">>>>>>>","call-next-method","<<","foldable","$","$[","${"],"sequences-builtin":["member-eq?","mismatch","append","assert-sequence=","longer","repetition","clone-like","3sequence","assert-sequence?","last-index-from","reversed","index-from","cut*","pad-tail","join-as","remove-eq!","concat-as","but-last","snip","nths","nth","sequence","longest","slice?","","remove-nth","tail-slice","empty?","tail*","member?","virtual-sequence?","set-length","drop-prefix","iota","unclip","bounds-error?","unclip-last-slice","non-negative-integer-expected","non-negative-integer-expected?","midpoint@","longer?","?set-nth","?first","rest-slice","prepend-as","prepend","fourth","sift","subseq-start","new-sequence","?last","like","first4","1sequence","reverse","slice","virtual@","repetition?","set-last","index","4sequence","max-length","set-second","immutable-sequence","first2","first3","supremum","unclip-slice","suffix!","insert-nth","tail","3append","short","suffix","concat","flip","immutable?","reverse!","2sequence","sum","delete-all","indices","snip-slice","","check-slice","sequence?","head","append-as","halves","sequence=","collapse-slice","?second","slice-error?","product","bounds-check?","bounds-check","immutable","virtual-exemplar","harvest","remove","pad-head","last","set-fourth","cartesian-product","remove-eq","shorten","shorter","reversed?","shorter?","shortest","head-slice","pop*","tail-slice*","but-last-slice","iota?","append!","cut-slice","new-resizable","head-slice*","sequence-hashcode","pop","set-nth","?nth","second","join","immutable-sequence?","","3append-as","virtual-sequence","subseq?","remove-nth!","length","last-index","lengthen","assert-sequence","copy","move","third","first","tail?","set-first","prefix","bounds-error","","exchange","surround","cut","min-length","set-third","push-all","head?","subseq-start-from","delete-slice","rest","sum-lengths","head*","infimum","remove!","glue","slice-error","subseq","push","replace-slice","subseq-as","unclip-last"],"math-builtin":["number=","next-power-of-2","?1+","fp-special?","imaginary-part","float>bits","number?","fp-infinity?","bignum?","fp-snan?","denominator","gcd","*","+","fp-bitwise=","-","u>=","/",">=","bitand","power-of-2?","log2-expects-positive","neg?","<","log2",">","integer?","number","bits>double","2/","zero?","bits>float","float?","shift","ratio?","rect>","even?","ratio","fp-sign","bitnot",">fixnum","complex?","/i","integer>fixnum","/f","sgn",">bignum","next-float","u<","u>","mod","recip","rational",">float","2^","integer","fixnum?","neg","fixnum","sq","bignum",">rect","bit?","fp-qnan?","simple-gcd","complex","","real",">fraction","double>bits","bitor","rem","fp-nan-payload","real-part","log2-expects-positive?","prev-float","align","unordered?","float","fp-nan?","abs","bitxor","integer>fixnum-strict","u<=","odd?","<=","/mod",">integer","real?","rational?","numerator"]};Object.keys(l).forEach(function(u){o[u].pattern=s(l[u])});var c=["2bi","while","2tri","bi*","4dip","both?","same?","tri@","curry","prepose","3bi","?if","tri*","2keep","3keep","curried","2keepd","when","2bi*","2tri*","4keep","bi@","keepdd","do","unless*","tri-curry","if*","loop","bi-curry*","when*","2bi@","2tri@","with","2with","either?","bi","until","3dip","3curry","tri-curry*","tri-curry@","bi-curry","keepd","compose","2dip","if","3tri","unless","tuple","keep","2curry","tri","most","while*","dip","composed","bi-curry@","find-last-from","trim-head-slice","map-as","each-from","none?","trim-tail","partition","if-empty","accumulate*","reject!","find-from","accumulate-as","collector-for-as","reject","map","map-sum","accumulate!","2each-from","follow","supremum-by","map!","unless-empty","collector","padding","reduce-index","replicate-as","infimum-by","trim-tail-slice","count","find-index","filter","accumulate*!","reject-as","map-integers","map-find","reduce","selector","interleave","2map","filter-as","binary-reduce","map-index-as","find","produce","filter!","replicate","cartesian-map","cartesian-each","find-index-from","map-find-last","3map-as","3map","find-last","selector-as","2map-as","2map-reduce","accumulate","each","each-index","accumulate*-as","when-empty","all?","collector-as","push-either","new-like","collector-for","2selector","push-if","2all?","map-reduce","3each","any?","trim-slice","2reduce","change-nth","produce-as","2each","trim","trim-head","cartesian-find","map-index","if-zero","each-integer","unless-zero","(find-integer)","when-zero","find-last-integer","(all-integers?)","times","(each-integer)","find-integer","all-integers?","unless-negative","if-positive","when-positive","when-negative","unless-positive","if-negative","case","2cleave","cond>quot","case>quot","3cleave","wrong-values","to-fixed-point","alist>quot","cond","cleave","call-effect","recursive-hashcode","spread","deep-spread>quot","2||","0||","n||","0&&","2&&","3||","1||","1&&","n&&","3&&","smart-unless*","keep-inputs","reduce-outputs","smart-when*","cleave>array","smart-with","smart-apply","smart-if","inputs/outputs","output>sequence-n","map-outputs","map-reduce-outputs","dropping","output>array","smart-map-reduce","smart-2map-reduce","output>array-n","nullary","inputsequence"];o.combinators.pattern=s(c),n.languages.factor=o})(t)}return Vv}var qv,DO;function sye(){if(DO)return qv;DO=1,qv=e,e.displayName="$false",e.aliases=[];function e(t){(function(n){n.languages.false={comment:{pattern:/\{[^}]*\}/},string:{pattern:/"[^"]*"/,greedy:!0},"character-code":{pattern:/'(?:[^\r]|\r\n?)/,alias:"number"},"assembler-code":{pattern:/\d+`/,alias:"important"},number:/\d+/,operator:/[-!#$%&'*+,./:;=>?@\\^_`|~ßø]/,punctuation:/\[|\]/,variable:/[a-z]/,"non-standard":{pattern:/[()!=]=?|[-+*/%]|\b(?:in|is)\b/}),delete t.languages["firestore-security-rules"]["class-name"],t.languages.insertBefore("firestore-security-rules","keyword",{path:{pattern:/(^|[\s(),])(?:\/(?:[\w\xA0-\uFFFF]+|\{[\w\xA0-\uFFFF]+(?:=\*\*)?\}|\$\([\w\xA0-\uFFFF.]+\)))+/,lookbehind:!0,greedy:!0,inside:{variable:{pattern:/\{[\w\xA0-\uFFFF]+(?:=\*\*)?\}|\$\([\w\xA0-\uFFFF.]+\)/,inside:{operator:/=/,keyword:/\*\*/,punctuation:/[.$(){}]/}},punctuation:/\//}},method:{pattern:/(\ballow\s+)[a-z]+(?:\s*,\s*[a-z]+)*(?=\s*[:;])/,lookbehind:!0,alias:"builtin",inside:{punctuation:/,/}}})}return Gv}var Wv,MO;function cye(){if(MO)return Wv;MO=1,Wv=e,e.displayName="flow",e.aliases=[];function e(t){(function(n){n.languages.flow=n.languages.extend("javascript",{}),n.languages.insertBefore("flow","keyword",{type:[{pattern:/\b(?:[Bb]oolean|Function|[Nn]umber|[Ss]tring|any|mixed|null|void)\b/,alias:"tag"}]}),n.languages.flow["function-variable"].pattern=/(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=\s*(?:function\b|(?:\([^()]*\)(?:\s*:\s*\w+)?|(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/i,delete n.languages.flow.parameter,n.languages.insertBefore("flow","operator",{"flow-punctuation":{pattern:/\{\||\|\}/,alias:"punctuation"}}),Array.isArray(n.languages.flow.keyword)||(n.languages.flow.keyword=[n.languages.flow.keyword]),n.languages.flow.keyword.unshift({pattern:/(^|[^$]\b)(?:Class|declare|opaque|type)\b(?!\$)/,lookbehind:!0},{pattern:/(^|[^$]\B)\$(?:Diff|Enum|Exact|Keys|ObjMap|PropertyType|Record|Shape|Subtype|Supertype|await)\b(?!\$)/,lookbehind:!0})})(t)}return Wv}var Kv,PO;function uye(){if(PO)return Kv;PO=1,Kv=e,e.displayName="fortran",e.aliases=[];function e(t){t.languages.fortran={"quoted-number":{pattern:/[BOZ](['"])[A-F0-9]+\1/i,alias:"number"},string:{pattern:/(?:\b\w+_)?(['"])(?:\1\1|&(?:\r\n?|\n)(?:[ \t]*!.*(?:\r\n?|\n)|(?![ \t]*!))|(?!\1).)*(?:\1|&)/,inside:{comment:{pattern:/(&(?:\r\n?|\n)\s*)!.*/,lookbehind:!0}}},comment:{pattern:/!.*/,greedy:!0},boolean:/\.(?:FALSE|TRUE)\.(?:_\w+)?/i,number:/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[ED][+-]?\d+)?(?:_\w+)?/i,keyword:[/\b(?:CHARACTER|COMPLEX|DOUBLE ?PRECISION|INTEGER|LOGICAL|REAL)\b/i,/\b(?:END ?)?(?:BLOCK ?DATA|DO|FILE|FORALL|FUNCTION|IF|INTERFACE|MODULE(?! PROCEDURE)|PROGRAM|SELECT|SUBROUTINE|TYPE|WHERE)\b/i,/\b(?:ALLOCATABLE|ALLOCATE|BACKSPACE|CALL|CASE|CLOSE|COMMON|CONTAINS|CONTINUE|CYCLE|DATA|DEALLOCATE|DIMENSION|DO|END|EQUIVALENCE|EXIT|EXTERNAL|FORMAT|GO ?TO|IMPLICIT(?: NONE)?|INQUIRE|INTENT|INTRINSIC|MODULE PROCEDURE|NAMELIST|NULLIFY|OPEN|OPTIONAL|PARAMETER|POINTER|PRINT|PRIVATE|PUBLIC|READ|RETURN|REWIND|SAVE|SELECT|STOP|TARGET|WHILE|WRITE)\b/i,/\b(?:ASSIGNMENT|DEFAULT|ELEMENTAL|ELSE|ELSEIF|ELSEWHERE|ENTRY|IN|INCLUDE|INOUT|KIND|NULL|ONLY|OPERATOR|OUT|PURE|RECURSIVE|RESULT|SEQUENCE|STAT|THEN|USE)\b/i],operator:[/\*\*|\/\/|=>|[=\/]=|[<>]=?|::|[+\-*=%]|\.[A-Z]+\./i,{pattern:/(^|(?!\().)\/(?!\))/,lookbehind:!0}],punctuation:/\(\/|\/\)|[(),;:&]/}}return Kv}var Yv,$O;function dye(){if($O)return Yv;$O=1,Yv=e,e.displayName="fsharp",e.aliases=[];function e(t){t.languages.fsharp=t.languages.extend("clike",{comment:[{pattern:/(^|[^\\])\(\*(?!\))[\s\S]*?\*\)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(?:"""[\s\S]*?"""|@"(?:""|[^"])*"|"(?:\\[\s\S]|[^\\"])*")B?/,greedy:!0},"class-name":{pattern:/(\b(?:exception|inherit|interface|new|of|type)\s+|\w\s*:\s*|\s:\??>\s*)[.\w]+\b(?:\s*(?:->|\*)\s*[.\w]+\b)*(?!\s*[:.])/,lookbehind:!0,inside:{operator:/->|\*/,punctuation:/\./}},keyword:/\b(?:let|return|use|yield)(?:!\B|\b)|\b(?:abstract|and|as|asr|assert|atomic|base|begin|break|checked|class|component|const|constraint|constructor|continue|default|delegate|do|done|downcast|downto|eager|elif|else|end|event|exception|extern|external|false|finally|fixed|for|fun|function|functor|global|if|in|include|inherit|inline|interface|internal|land|lazy|lor|lsl|lsr|lxor|match|member|method|mixin|mod|module|mutable|namespace|new|not|null|object|of|open|or|override|parallel|private|process|protected|public|pure|rec|sealed|select|sig|static|struct|tailcall|then|to|trait|true|try|type|upcast|val|virtual|void|volatile|when|while|with)\b/,number:[/\b0x[\da-fA-F]+(?:LF|lf|un)?\b/,/\b0b[01]+(?:uy|y)?\b/,/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[fm]|e[+-]?\d+)?\b/i,/\b\d+(?:[IlLsy]|UL|u[lsy]?)?\b/],operator:/([<>~&^])\1\1|([*.:<>&])\2|<-|->|[!=:]=|?|\??(?:<=|>=|<>|[-+*/%=<>])\??|[!?^&]|~[+~-]|:>|:\?>?/}),t.languages.insertBefore("fsharp","keyword",{preprocessor:{pattern:/(^[\t ]*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(^#)\b(?:else|endif|if|light|line|nowarn)\b/,lookbehind:!0,alias:"keyword"}}}}),t.languages.insertBefore("fsharp","punctuation",{"computation-expression":{pattern:/\b[_a-z]\w*(?=\s*\{)/i,alias:"keyword"}}),t.languages.insertBefore("fsharp","string",{annotation:{pattern:/\[<.+?>\]/,greedy:!0,inside:{punctuation:/^\[<|>\]$/,"class-name":{pattern:/^\w+$|(^|;\s*)[A-Z]\w*(?=\()/,lookbehind:!0},"annotation-content":{pattern:/[\s\S]+/,inside:t.languages.fsharp}}},char:{pattern:/'(?:[^\\']|\\(?:.|\d{3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}|U[a-fA-F\d]{8}))'B?/,greedy:!0}})}return Yv}var Zv,FO;function fye(){if(FO)return Zv;FO=1;var e=mr();Zv=t,t.displayName="ftl",t.aliases=[];function t(n){n.register(e),function(r){for(var a=/[^<()"']|\((?:)*\)|<(?!#--)|<#--(?:[^-]|-(?!->))*-->|"(?:[^\\"]|\\.)*"|'(?:[^\\']|\\.)*'/.source,o=0;o<2;o++)a=a.replace(//g,function(){return a});a=a.replace(//g,/[^\s\S]/.source);var i={comment:/<#--[\s\S]*?-->/,string:[{pattern:/\br("|')(?:(?!\1)[^\\]|\\.)*\1/,greedy:!0},{pattern:RegExp(/("|')(?:(?!\1|\$\{)[^\\]|\\.|\$\{(?:(?!\})(?:))*\})*\1/.source.replace(//g,function(){return a})),greedy:!0,inside:{interpolation:{pattern:RegExp(/((?:^|[^\\])(?:\\\\)*)\$\{(?:(?!\})(?:))*\}/.source.replace(//g,function(){return a})),lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:null}}}}],keyword:/\b(?:as)\b/,boolean:/\b(?:false|true)\b/,"builtin-function":{pattern:/((?:^|[^?])\?\s*)\w+/,lookbehind:!0,alias:"function"},function:/\b\w+(?=\s*\()/,number:/\b\d+(?:\.\d+)?\b/,operator:/\.\.[<*!]?|->|--|\+\+|&&|\|\||\?{1,2}|[-+*/%!=<>]=?|\b(?:gt|gte|lt|lte)\b/,punctuation:/[,;.:()[\]{}]/};i.string[1].inside.interpolation.inside.rest=i,r.languages.ftl={"ftl-comment":{pattern:/^<#--[\s\S]*/,alias:"comment"},"ftl-directive":{pattern:/^<[\s\S]+>$/,inside:{directive:{pattern:/(^<\/?)[#@][a-z]\w*/i,lookbehind:!0,alias:"keyword"},punctuation:/^<\/?|\/?>$/,content:{pattern:/\s*\S[\s\S]*/,alias:"ftl",inside:i}}},"ftl-interpolation":{pattern:/^\$\{[\s\S]*\}$/,inside:{punctuation:/^\$\{|\}$/,content:{pattern:/\s*\S[\s\S]*/,alias:"ftl",inside:i}}}},r.hooks.add("before-tokenize",function(s){var l=RegExp(/<#--[\s\S]*?-->|<\/?[#@][a-zA-Z](?:)*?>|\$\{(?:)*?\}/.source.replace(//g,function(){return a}),"gi");r.languages["markup-templating"].buildPlaceholders(s,"ftl",l)}),r.hooks.add("after-tokenize",function(s){r.languages["markup-templating"].tokenizePlaceholders(s,"ftl")})}(n)}return Zv}var Xv,jO;function pye(){if(jO)return Xv;jO=1,Xv=e,e.displayName="gap",e.aliases=[];function e(t){t.languages.gap={shell:{pattern:/^gap>[\s\S]*?(?=^gap>|$(?![\s\S]))/m,greedy:!0,inside:{gap:{pattern:/^(gap>).+(?:(?:\r(?:\n|(?!\n))|\n)>.*)*/,lookbehind:!0,inside:null},punctuation:/^gap>/}},comment:{pattern:/#.*/,greedy:!0},string:{pattern:/(^|[^\\'"])(?:'(?:[^\r\n\\']|\\.){1,10}'|"(?:[^\r\n\\"]|\\.)*"(?!")|"""[\s\S]*?""")/,lookbehind:!0,greedy:!0,inside:{continuation:{pattern:/([\r\n])>/,lookbehind:!0,alias:"punctuation"}}},keyword:/\b(?:Assert|Info|IsBound|QUIT|TryNextMethod|Unbind|and|atomic|break|continue|do|elif|else|end|fi|for|function|if|in|local|mod|not|od|or|quit|readonly|readwrite|rec|repeat|return|then|until|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:{pattern:/(^|[^\w.]|\.\.)(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?(?:_[a-z]?)?(?=$|[^\w.]|\.\.)/,lookbehind:!0},continuation:{pattern:/([\r\n])>/,lookbehind:!0,alias:"punctuation"},operator:/->|[-+*/^~=!]|<>|[<>]=?|:=|\.\./,punctuation:/[()[\]{},;.:]/},t.languages.gap.shell.inside.gap.inside=t.languages.gap}return Xv}var Qv,zO;function gye(){if(zO)return Qv;zO=1,Qv=e,e.displayName="gcode",e.aliases=[];function e(t){t.languages.gcode={comment:/;.*|\B\(.*?\)\B/,string:{pattern:/"(?:""|[^"])*"/,greedy:!0},keyword:/\b[GM]\d+(?:\.\d+)?\b/,property:/\b[A-Z]/,checksum:{pattern:/(\*)\d+/,lookbehind:!0,alias:"number"},punctuation:/[:*]/}}return Qv}var Jv,UO;function mye(){if(UO)return Jv;UO=1,Jv=e,e.displayName="gdscript",e.aliases=[];function e(t){t.languages.gdscript={comment:/#.*/,string:{pattern:/@?(?:("|')(?:(?!\1)[^\n\\]|\\[\s\S])*\1(?!"|')|"""(?:[^\\]|\\[\s\S])*?""")/,greedy:!0},"class-name":{pattern:/(^(?:class|class_name|extends)[ \t]+|^export\([ \t]*|\bas[ \t]+|(?:\b(?:const|var)[ \t]|[,(])[ \t]*\w+[ \t]*:[ \t]*|->[ \t]*)[a-zA-Z_]\w*/m,lookbehind:!0},keyword:/\b(?:and|as|assert|break|breakpoint|class|class_name|const|continue|elif|else|enum|export|extends|for|func|if|in|is|master|mastersync|match|not|null|onready|or|pass|preload|puppet|puppetsync|remote|remotesync|return|self|setget|signal|static|tool|var|while|yield)\b/,function:/\b[a-z_]\w*(?=[ \t]*\()/i,variable:/\$\w+/,number:[/\b0b[01_]+\b|\b0x[\da-fA-F_]+\b|(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.[\d_]+)(?:e[+-]?[\d_]+)?\b/,/\b(?:INF|NAN|PI|TAU)\b/],constant:/\b[A-Z][A-Z_\d]*\b/,boolean:/\b(?:false|true)\b/,operator:/->|:=|&&|\|\||<<|>>|[-+*/%&|!<>=]=?|[~^]/,punctuation:/[.:,;()[\]{}]/}}return Jv}var eS,BO;function hye(){if(BO)return eS;BO=1,eS=e,e.displayName="gedcom",e.aliases=[];function e(t){t.languages.gedcom={"line-value":{pattern:/(^[\t ]*\d+ +(?:@\w[\w!"$%&'()*+,\-./:;<=>?[\\\]^`{|}~\x80-\xfe #]*@ +)?\w+ ).+/m,lookbehind:!0,inside:{pointer:{pattern:/^@\w[\w!"$%&'()*+,\-./:;<=>?[\\\]^`{|}~\x80-\xfe #]*@$/,alias:"variable"}}},tag:{pattern:/(^[\t ]*\d+ +(?:@\w[\w!"$%&'()*+,\-./:;<=>?[\\\]^`{|}~\x80-\xfe #]*@ +)?)\w+/m,lookbehind:!0,alias:"string"},level:{pattern:/(^[\t ]*)\d+/m,lookbehind:!0,alias:"number"},pointer:{pattern:/@\w[\w!"$%&'()*+,\-./:;<=>?[\\\]^`{|}~\x80-\xfe #]*@/,alias:"variable"}}}return eS}var tS,HO;function bye(){if(HO)return tS;HO=1,tS=e,e.displayName="gherkin",e.aliases=[];function e(t){(function(n){var r=/(?:\r?\n|\r)[ \t]*\|.+\|(?:(?!\|).)*/.source;n.languages.gherkin={pystring:{pattern:/("""|''')[\s\S]+?\1/,alias:"string"},comment:{pattern:/(^[ \t]*)#.*/m,lookbehind:!0},tag:{pattern:/(^[ \t]*)@\S*/m,lookbehind:!0},feature:{pattern:/((?:^|\r?\n|\r)[ \t]*)(?:Ability|Ahoy matey!|Arwedd|Aspekt|Besigheid Behoefte|Business Need|Caracteristica|Característica|Egenskab|Egenskap|Eiginleiki|Feature|Fīča|Fitur|Fonctionnalité|Fonksyonalite|Funcionalidade|Funcionalitat|Functionalitate|Funcţionalitate|Funcționalitate|Functionaliteit|Fungsi|Funkcia|Funkcija|Funkcionalitāte|Funkcionalnost|Funkcja|Funksie|Funktionalität|Funktionalitéit|Funzionalità|Hwaet|Hwæt|Jellemző|Karakteristik|Lastnost|Mak|Mogucnost|laH|Mogućnost|Moznosti|Možnosti|OH HAI|Omadus|Ominaisuus|Osobina|Özellik|Potrzeba biznesowa|perbogh|poQbogh malja'|Požadavek|Požiadavka|Pretty much|Qap|Qu'meH 'ut|Savybė|Tính năng|Trajto|Vermoë|Vlastnosť|Właściwość|Značilnost|Δυνατότητα|Λειτουργία|Могућност|Мөмкинлек|Особина|Свойство|Үзенчәлеклелек|Функционал|Функционалност|Функция|Функціонал|תכונה|خاصية|خصوصیت|صلاحیت|کاروبار کی ضرورت|وِیژگی|रूप लेख|ਖਾਸੀਅਤ|ਨਕਸ਼ ਨੁਹਾਰ|ਮੁਹਾਂਦਰਾ|గుణము|ಹೆಚ್ಚಳ|ความต้องการทางธุรกิจ|ความสามารถ|โครงหลัก|기능|フィーチャ|功能|機能):(?:[^:\r\n]+(?:\r?\n|\r|$))*/,lookbehind:!0,inside:{important:{pattern:/(:)[^\r\n]+/,lookbehind:!0},keyword:/[^:\r\n]+:/}},scenario:{pattern:/(^[ \t]*)(?:Abstract Scenario|Abstrakt Scenario|Achtergrond|Aer|Ær|Agtergrond|All y'all|Antecedentes|Antecedents|Atburðarás|Atburðarásir|Awww, look mate|B4|Background|Baggrund|Bakgrund|Bakgrunn|Bakgrunnur|Beispiele|Beispiller|Bối cảnh|Cefndir|Cenario|Cenário|Cenario de Fundo|Cenário de Fundo|Cenarios|Cenários|Contesto|Context|Contexte|Contexto|Conto|Contoh|Contone|Dæmi|Dasar|Dead men tell no tales|Delineacao do Cenario|Delineação do Cenário|Dis is what went down|Dữ liệu|Dyagram Senaryo|Dyagram senaryo|Egzanp|Ejemplos|Eksempler|Ekzemploj|Enghreifftiau|Esbozo do escenario|Escenari|Escenario|Esempi|Esquema de l'escenari|Esquema del escenario|Esquema do Cenario|Esquema do Cenário|EXAMPLZ|Examples|Exempel|Exemple|Exemples|Exemplos|First off|Fono|Forgatókönyv|Forgatókönyv vázlat|Fundo|Geçmiş|Grundlage|Hannergrond|ghantoH|Háttér|Heave to|Istorik|Juhtumid|Keadaan|Khung kịch bản|Khung tình huống|Kịch bản|Koncept|Konsep skenario|Kontèks|Kontekst|Kontekstas|Konteksts|Kontext|Konturo de la scenaro|Latar Belakang|lut chovnatlh|lut|lutmey|Lýsing Atburðarásar|Lýsing Dæma|MISHUN SRSLY|MISHUN|Menggariskan Senario|mo'|Náčrt Scenára|Náčrt Scénáře|Náčrt Scenáru|Oris scenarija|Örnekler|Osnova|Osnova Scenára|Osnova scénáře|Osnutek|Ozadje|Paraugs|Pavyzdžiai|Példák|Piemēri|Plan du scénario|Plan du Scénario|Plan Senaryo|Plan senaryo|Plang vum Szenario|Pozadí|Pozadie|Pozadina|Príklady|Příklady|Primer|Primeri|Primjeri|Przykłady|Raamstsenaarium|Reckon it's like|Rerefons|Scenár|Scénář|Scenarie|Scenarij|Scenarijai|Scenarijaus šablonas|Scenariji|Scenārijs|Scenārijs pēc parauga|Scenarijus|Scenario|Scénario|Scenario Amlinellol|Scenario Outline|Scenario Template|Scenariomal|Scenariomall|Scenarios|Scenariu|Scenariusz|Scenaro|Schema dello scenario|Se ðe|Se the|Se þe|Senario|Senaryo Deskripsyon|Senaryo deskripsyon|Senaryo|Senaryo taslağı|Shiver me timbers|Situācija|Situai|Situasie Uiteensetting|Situasie|Skenario konsep|Skenario|Skica|Structura scenariu|Structură scenariu|Struktura scenarija|Stsenaarium|Swa hwaer swa|Swa|Swa hwær swa|Szablon scenariusza|Szenario|Szenariogrundriss|Tapaukset|Tapaus|Tapausaihio|Taust|Tausta|Template Keadaan|Template Senario|Template Situai|The thing of it is|Tình huống|Variantai|Voorbeelde|Voorbeelden|Wharrimean is|Yo-ho-ho|You'll wanna|Założenia|Παραδείγματα|Περιγραφή Σεναρίου|Σενάρια|Σενάριο|Υπόβαθρο|Кереш|Контекст|Концепт|Мисаллар|Мисоллар|Основа|Передумова|Позадина|Предистория|Предыстория|Приклади|Пример|Примери|Примеры|Рамка на сценарий|Скица|Структура сценарија|Структура сценария|Структура сценарію|Сценарий|Сценарий структураси|Сценарийның төзелеше|Сценарији|Сценарио|Сценарій|Тарих|Үрнәкләр|דוגמאות|רקע|תבנית תרחיש|תרחיש|الخلفية|الگوی سناریو|امثلة|پس منظر|زمینه|سناریو|سيناريو|سيناريو مخطط|مثالیں|منظر نامے کا خاکہ|منظرنامہ|نمونه ها|उदाहरण|परिदृश्य|परिदृश्य रूपरेखा|पृष्ठभूमि|ਉਦਾਹਰਨਾਂ|ਪਟਕਥਾ|ਪਟਕਥਾ ਢਾਂਚਾ|ਪਟਕਥਾ ਰੂਪ ਰੇਖਾ|ਪਿਛੋਕੜ|ఉదాహరణలు|కథనం|నేపథ్యం|సన్నివేశం|ಉದಾಹರಣೆಗಳು|ಕಥಾಸಾರಾಂಶ|ವಿವರಣೆ|ಹಿನ್ನೆಲೆ|โครงสร้างของเหตุการณ์|ชุดของตัวอย่าง|ชุดของเหตุการณ์|แนวคิด|สรุปเหตุการณ์|เหตุการณ์|배경|시나리오|시나리오 개요|예|サンプル|シナリオ|シナリオアウトライン|シナリオテンプレ|シナリオテンプレート|テンプレ|例|例子|剧本|剧本大纲|劇本|劇本大綱|场景|场景大纲|場景|場景大綱|背景):[^:\r\n]*/m,lookbehind:!0,inside:{important:{pattern:/(:)[^\r\n]*/,lookbehind:!0},keyword:/[^:\r\n]+:/}},"table-body":{pattern:RegExp("("+r+")(?:"+r+")+"),lookbehind:!0,inside:{outline:{pattern:/<[^>]+>/,alias:"variable"},td:{pattern:/\s*[^\s|][^|]*/,alias:"string"},punctuation:/\|/}},"table-head":{pattern:RegExp(r),inside:{th:{pattern:/\s*[^\s|][^|]*/,alias:"variable"},punctuation:/\|/}},atrule:{pattern:/(^[ \t]+)(?:'a|'ach|'ej|7|a|A také|A taktiež|A tiež|A zároveň|Aber|Ac|Adott|Akkor|Ak|Aleshores|Ale|Ali|Allora|Alors|Als|Ama|Amennyiben|Amikor|Ampak|an|AN|Ananging|And y'all|And|Angenommen|Anrhegedig a|An|Apabila|Atès|Atesa|Atunci|Avast!|Aye|A|awer|Bagi|Banjur|Bet|Biết|Blimey!|Buh|But at the end of the day I reckon|But y'all|But|BUT|Cal|Când|Cand|Cando|Ce|Cuando|Če|Ða ðe|Ða|Dadas|Dada|Dados|Dado|DaH ghu' bejlu'|dann|Dann|Dano|Dan|Dar|Dat fiind|Data|Date fiind|Date|Dati fiind|Dati|Daţi fiind|Dați fiind|DEN|Dato|De|Den youse gotta|Dengan|Diberi|Diyelim ki|Donada|Donat|Donitaĵo|Do|Dun|Duota|Ðurh|Eeldades|Ef|Eğer ki|Entao|Então|Entón|E|En|Entonces|Epi|És|Etant donnée|Etant donné|Et|Étant données|Étant donnée|Étant donné|Etant données|Etant donnés|Étant donnés|Fakat|Gangway!|Gdy|Gegeben seien|Gegeben sei|Gegeven|Gegewe|ghu' noblu'|Gitt|Given y'all|Given|Givet|Givun|Ha|Cho|I CAN HAZ|In|Ir|It's just unbelievable|I|Ja|Jeśli|Jeżeli|Kad|Kada|Kadar|Kai|Kaj|Když|Keď|Kemudian|Ketika|Khi|Kiedy|Ko|Kuid|Kui|Kun|Lan|latlh|Le sa a|Let go and haul|Le|Lè sa a|Lè|Logo|Lorsqu'<|Lorsque|mä|Maar|Mais|Mając|Ma|Majd|Maka|Manawa|Mas|Men|Menawa|Mutta|Nalika|Nalikaning|Nanging|Når|När|Nato|Nhưng|Niin|Njuk|O zaman|Och|Og|Oletetaan|Ond|Onda|Oraz|Pak|Pero|Però|Podano|Pokiaľ|Pokud|Potem|Potom|Privzeto|Pryd|Quan|Quand|Quando|qaSDI'|Så|Sed|Se|Siis|Sipoze ke|Sipoze Ke|Sipoze|Si|Şi|Și|Soit|Stel|Tada|Tad|Takrat|Tak|Tapi|Ter|Tetapi|Tha the|Tha|Then y'all|Then|Thì|Thurh|Toda|Too right|Un|Und|ugeholl|Và|vaj|Vendar|Ve|wann|Wanneer|WEN|Wenn|When y'all|When|Wtedy|Wun|Y'know|Yeah nah|Yna|Youse know like when|Youse know when youse got|Y|Za predpokladu|Za předpokladu|Zadan|Zadani|Zadano|Zadate|Zadato|Zakładając|Zaradi|Zatati|Þa þe|Þa|Þá|Þegar|Þurh|Αλλά|Δεδομένου|Και|Όταν|Τότε|А також|Агар|Але|Али|Аммо|А|Әгәр|Әйтик|Әмма|Бирок|Ва|Вә|Дадено|Дано|Допустим|Если|Задате|Задати|Задато|И|І|К тому же|Када|Кад|Когато|Когда|Коли|Ләкин|Лекин|Нәтиҗәдә|Нехай|Но|Онда|Припустимо, що|Припустимо|Пусть|Также|Та|Тогда|Тоді|То|Унда|Һәм|Якщо|אבל|אזי|אז|בהינתן|וגם|כאשר|آنگاه|اذاً|اگر|اما|اور|با فرض|بالفرض|بفرض|پھر|تب|ثم|جب|عندما|فرض کیا|لكن|لیکن|متى|هنگامی|و|अगर|और|कदा|किन्तु|चूंकि|जब|तथा|तदा|तब|परन्तु|पर|यदि|ਅਤੇ|ਜਦੋਂ|ਜਿਵੇਂ ਕਿ|ਜੇਕਰ|ਤਦ|ਪਰ|అప్పుడు|ఈ పరిస్థితిలో|కాని|చెప్పబడినది|మరియు|ಆದರೆ|ನಂತರ|ನೀಡಿದ|ಮತ್ತು|ಸ್ಥಿತಿಯನ್ನು|กำหนดให้|ดังนั้น|แต่|เมื่อ|และ|그러면<|그리고<|단<|만약<|만일<|먼저<|조건<|하지만<|かつ<|しかし<|ただし<|ならば<|もし<|並且<|但し<|但是<|假如<|假定<|假設<|假设<|前提<|同时<|同時<|并且<|当<|當<|而且<|那么<|那麼<)(?=[ \t])/m,lookbehind:!0},string:{pattern:/"(?:\\.|[^"\\\r\n])*"|'(?:\\.|[^'\\\r\n])*'/,inside:{outline:{pattern:/<[^>]+>/,alias:"variable"}}},outline:{pattern:/<[^>]+>/,alias:"variable"}}})(t)}return tS}var nS,VO;function yye(){if(VO)return nS;VO=1,nS=e,e.displayName="git",e.aliases=[];function e(t){t.languages.git={comment:/^#.*/m,deleted:/^[-–].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m}}return nS}var rS,qO;function vye(){if(qO)return rS;qO=1;var e=Ws();rS=t,t.displayName="glsl",t.aliases=[];function t(n){n.register(e),n.languages.glsl=n.languages.extend("c",{keyword:/\b(?:active|asm|atomic_uint|attribute|[ibdu]?vec[234]|bool|break|buffer|case|cast|centroid|class|coherent|common|const|continue|d?mat[234](?:x[234])?|default|discard|do|double|else|enum|extern|external|false|filter|fixed|flat|float|for|fvec[234]|goto|half|highp|hvec[234]|[iu]?sampler2DMS(?:Array)?|[iu]?sampler2DRect|[iu]?samplerBuffer|[iu]?samplerCube|[iu]?samplerCubeArray|[iu]?sampler[123]D|[iu]?sampler[12]DArray|[iu]?image2DMS(?:Array)?|[iu]?image2DRect|[iu]?imageBuffer|[iu]?imageCube|[iu]?imageCubeArray|[iu]?image[123]D|[iu]?image[12]DArray|if|in|inline|inout|input|int|interface|invariant|layout|long|lowp|mediump|namespace|noinline|noperspective|out|output|partition|patch|precise|precision|public|readonly|resource|restrict|return|sample|sampler[12]DArrayShadow|sampler[12]DShadow|sampler2DRectShadow|sampler3DRect|samplerCubeArrayShadow|samplerCubeShadow|shared|short|sizeof|smooth|static|struct|subroutine|superp|switch|template|this|true|typedef|uint|uniform|union|unsigned|using|varying|void|volatile|while|writeonly)\b/})}return rS}var aS,GO;function Sye(){if(GO)return aS;GO=1,aS=e,e.displayName="gml",e.aliases=[];function e(t){t.languages.gamemakerlanguage=t.languages.gml=t.languages.extend("clike",{keyword:/\b(?:break|case|continue|default|do|else|enum|exit|for|globalvar|if|repeat|return|switch|until|var|while)\b/,number:/(?:\b0x[\da-f]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ulf]{0,4}/i,operator:/--|\+\+|[-+%/=]=?|!=|\*\*?=?|<[<=>]?|>[=>]?|&&?|\^\^?|\|\|?|~|\b(?:and|at|not|or|with|xor)\b/,constant:/\b(?:GM_build_date|GM_version|action_(?:continue|restart|reverse|stop)|all|gamespeed_(?:fps|microseconds)|global|local|noone|other|pi|pointer_(?:invalid|null)|self|timezone_(?:local|utc)|undefined|ev_(?:create|destroy|step|alarm|keyboard|mouse|collision|other|draw|draw_(?:begin|end|post|pre)|keypress|keyrelease|trigger|(?:left|middle|no|right)_button|(?:left|middle|right)_press|(?:left|middle|right)_release|mouse_(?:enter|leave|wheel_down|wheel_up)|global_(?:left|middle|right)_button|global_(?:left|middle|right)_press|global_(?:left|middle|right)_release|joystick(?:1|2)_(?:button1|button2|button3|button4|button5|button6|button7|button8|down|left|right|up)|outside|boundary|game_start|game_end|room_start|room_end|no_more_lives|animation_end|end_of_path|no_more_health|user\d|gui|gui_begin|gui_end|step_(?:begin|end|normal))|vk_(?:alt|anykey|backspace|control|delete|down|end|enter|escape|home|insert|left|nokey|pagedown|pageup|pause|printscreen|return|right|shift|space|tab|up|f\d|numpad\d|add|decimal|divide|lalt|lcontrol|lshift|multiply|ralt|rcontrol|rshift|subtract)|achievement_(?:filter_(?:all_players|favorites_only|friends_only)|friends_info|info|leaderboard_info|our_info|pic_loaded|show_(?:achievement|bank|friend_picker|leaderboard|profile|purchase_prompt|ui)|type_challenge|type_score_challenge)|asset_(?:font|object|path|room|script|shader|sound|sprite|tiles|timeline|unknown)|audio_(?:3d|falloff_(?:exponent_distance|exponent_distance_clamped|inverse_distance|inverse_distance_clamped|linear_distance|linear_distance_clamped|none)|mono|new_system|old_system|stereo)|bm_(?:add|complex|dest_alpha|dest_color|dest_colour|inv_dest_alpha|inv_dest_color|inv_dest_colour|inv_src_alpha|inv_src_color|inv_src_colour|max|normal|one|src_alpha|src_alpha_sat|src_color|src_colour|subtract|zero)|browser_(?:chrome|firefox|ie|ie_mobile|not_a_browser|opera|safari|safari_mobile|tizen|unknown|windows_store)|buffer_(?:bool|f16|f32|f64|fast|fixed|generalerror|grow|invalidtype|network|outofbounds|outofspace|s16|s32|s8|seek_end|seek_relative|seek_start|string|text|u16|u32|u64|u8|vbuffer|wrap)|c_(?:aqua|black|blue|dkgray|fuchsia|gray|green|lime|ltgray|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)|cmpfunc_(?:always|equal|greater|greaterequal|less|lessequal|never|notequal)|cr_(?:appstart|arrow|beam|cross|default|drag|handpoint|hourglass|none|size_all|size_nesw|size_ns|size_nwse|size_we|uparrow)|cull_(?:clockwise|counterclockwise|noculling)|device_(?:emulator|tablet)|device_ios_(?:ipad|ipad_retina|iphone|iphone5|iphone6|iphone6plus|iphone_retina|unknown)|display_(?:landscape|landscape_flipped|portrait|portrait_flipped)|dll_(?:cdecl|cdel|stdcall)|ds_type_(?:grid|list|map|priority|queue|stack)|ef_(?:cloud|ellipse|explosion|firework|flare|rain|ring|smoke|smokeup|snow|spark|star)|fa_(?:archive|bottom|center|directory|hidden|left|middle|readonly|right|sysfile|top|volumeid)|fb_login_(?:default|fallback_to_webview|forcing_safari|forcing_webview|no_fallback_to_webview|use_system_account)|iap_(?:available|canceled|ev_consume|ev_product|ev_purchase|ev_restore|ev_storeload|failed|purchased|refunded|status_available|status_loading|status_processing|status_restoring|status_unavailable|status_uninitialised|storeload_failed|storeload_ok|unavailable)|leaderboard_type_(?:number|time_mins_secs)|lighttype_(?:dir|point)|matrix_(?:projection|view|world)|mb_(?:any|left|middle|none|right)|network_(?:config_(?:connect_timeout|disable_reliable_udp|enable_reliable_udp|use_non_blocking_socket)|socket_(?:bluetooth|tcp|udp)|type_(?:connect|data|disconnect|non_blocking_connect))|of_challenge_(?:lose|tie|win)|os_(?:android|ios|linux|macosx|ps3|ps4|psvita|unknown|uwp|win32|win8native|windows|winphone|xboxone)|phy_debug_render_(?:aabb|collision_pairs|coms|core_shapes|joints|obb|shapes)|phy_joint_(?:anchor_1_x|anchor_1_y|anchor_2_x|anchor_2_y|angle|angle_limits|damping_ratio|frequency|length_1|length_2|lower_angle_limit|max_force|max_length|max_motor_force|max_motor_torque|max_torque|motor_force|motor_speed|motor_torque|reaction_force_x|reaction_force_y|reaction_torque|speed|translation|upper_angle_limit)|phy_particle_data_flag_(?:category|color|colour|position|typeflags|velocity)|phy_particle_flag_(?:colormixing|colourmixing|elastic|powder|spring|tensile|viscous|wall|water|zombie)|phy_particle_group_flag_(?:rigid|solid)|pr_(?:linelist|linestrip|pointlist|trianglefan|trianglelist|trianglestrip)|ps_(?:distr|shape)_(?:diamond|ellipse|gaussian|invgaussian|line|linear|rectangle)|pt_shape_(?:circle|cloud|disk|explosion|flare|line|pixel|ring|smoke|snow|spark|sphere|square|star)|ty_(?:real|string)|gp_(?:face\d|axislh|axislv|axisrh|axisrv|padd|padl|padr|padu|select|shoulderl|shoulderlb|shoulderr|shoulderrb|start|stickl|stickr)|lb_disp_(?:none|numeric|time_ms|time_sec)|lb_sort_(?:ascending|descending|none)|ov_(?:achievements|community|friends|gamegroup|players|settings)|ugc_(?:filetype_(?:community|microtrans)|list_(?:Favorited|Followed|Published|Subscribed|UsedOrPlayed|VotedDown|VotedOn|VotedUp|WillVoteLater)|match_(?:AllGuides|Artwork|Collections|ControllerBindings|IntegratedGuides|Items|Items_Mtx|Items_ReadyToUse|Screenshots|UsableInGame|Videos|WebGuides)|query_(?:AcceptedForGameRankedByAcceptanceDate|CreatedByFriendsRankedByPublicationDate|FavoritedByFriendsRankedByPublicationDate|NotYetRated)|query_RankedBy(?:NumTimesReported|PublicationDate|TextSearch|TotalVotesAsc|Trend|Vote|VotesUp)|result_success|sortorder_CreationOrder(?:Asc|Desc)|sortorder_(?:ForModeration|LastUpdatedDesc|SubscriptionDateDesc|TitleAsc|VoteScoreDesc)|visibility_(?:friends_only|private|public))|vertex_usage_(?:binormal|blendindices|blendweight|color|colour|depth|fog|normal|position|psize|sample|tangent|texcoord|textcoord)|vertex_type_(?:float\d|color|colour|ubyte4)|input_type|layerelementtype_(?:background|instance|oldtilemap|particlesystem|sprite|tile|tilemap|undefined)|se_(?:chorus|compressor|echo|equalizer|flanger|gargle|none|reverb)|text_type|tile_(?:flip|index_mask|mirror|rotate)|(?:obj|rm|scr|spr)\w+)\b/,variable:/\b(?:alarm|application_surface|async_load|background_(?:alpha|blend|color|colour|foreground|height|hspeed|htiled|index|showcolor|showcolour|visible|vspeed|vtiled|width|x|xscale|y|yscale)|bbox_(?:bottom|left|right|top)|browser_(?:height|width)|caption_(?:health|lives|score)|current_(?:day|hour|minute|month|second|time|weekday|year)|cursor_sprite|debug_mode|delta_time|direction|display_aa|error_(?:last|occurred)|event_(?:action|number|object|type)|fps|fps_real|friction|game_(?:display|project|save)_(?:id|name)|gamemaker_(?:pro|registered|version)|gravity|gravity_direction|(?:h|v)speed|health|iap_data|id|image_(?:alpha|angle|blend|depth|index|number|speed|xscale|yscale)|instance_(?:count|id)|keyboard_(?:key|lastchar|lastkey|string)|layer|lives|mask_index|mouse_(?:button|lastbutton|x|y)|object_index|os_(?:browser|device|type|version)|path_(?:endaction|index|orientation|position|positionprevious|scale|speed)|persistent|phy_(?:rotation|(?:col_normal|collision|com|linear_velocity|position|speed)_(?:x|y)|angular_(?:damping|velocity)|position_(?:x|y)previous|speed|linear_damping|bullet|fixed_rotation|active|mass|inertia|dynamic|kinematic|sleeping|collision_points)|pointer_(?:invalid|null)|room|room_(?:caption|first|height|last|persistent|speed|width)|score|secure_mode|show_(?:health|lives|score)|solid|speed|sprite_(?:height|index|width|xoffset|yoffset)|temp_directory|timeline_(?:index|loop|position|running|speed)|transition_(?:color|kind|steps)|undefined|view_(?:angle|current|enabled|(?:h|v)(?:border|speed)|(?:h|w|x|y)port|(?:h|w|x|y)view|object|surface_id|visible)|visible|webgl_enabled|working_directory|(?:x|y)(?:previous|start)|x|y|argument(?:_relitive|_count|\d)|argument|global|local|other|self)\b/})}return aS}var oS,WO;function wye(){if(WO)return oS;WO=1,oS=e,e.displayName="gn",e.aliases=["gni"];function e(t){t.languages.gn={comment:{pattern:/#.*/,greedy:!0},"string-literal":{pattern:/(^|[^\\"])"(?:[^\r\n"\\]|\\.)*"/,lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:\{[\s\S]*?\}|[a-zA-Z_]\w*|0x[a-fA-F0-9]{2})/,lookbehind:!0,inside:{number:/^\$0x[\s\S]{2}$/,variable:/^\$\w+$/,"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},expression:{pattern:/[\s\S]+/,inside:null}}},string:/[\s\S]+/}},keyword:/\b(?:else|if)\b/,boolean:/\b(?:false|true)\b/,"builtin-function":{pattern:/\b(?:assert|defined|foreach|import|pool|print|template|tool|toolchain)(?=\s*\()/i,alias:"keyword"},function:/\b[a-z_]\w*(?=\s*\()/i,constant:/\b(?:current_cpu|current_os|current_toolchain|default_toolchain|host_cpu|host_os|root_build_dir|root_gen_dir|root_out_dir|target_cpu|target_gen_dir|target_os|target_out_dir)\b/,number:/-?\b\d+\b/,operator:/[-+!=<>]=?|&&|\|\|/,punctuation:/[(){}[\],.]/},t.languages.gn["string-literal"].inside.interpolation.inside.expression.inside=t.languages.gn,t.languages.gni=t.languages.gn}return oS}var iS,KO;function Eye(){if(KO)return iS;KO=1,iS=e,e.displayName="goModule",e.aliases=[];function e(t){t.languages["go-mod"]=t.languages["go-module"]={comment:{pattern:/\/\/.*/,greedy:!0},version:{pattern:/(^|[\s()[\],])v\d+\.\d+\.\d+(?:[+-][-+.\w]*)?(?![^\s()[\],])/,lookbehind:!0,alias:"number"},"go-version":{pattern:/((?:^|\s)go\s+)\d+(?:\.\d+){1,2}/,lookbehind:!0,alias:"number"},keyword:{pattern:/^([ \t]*)(?:exclude|go|module|replace|require|retract)\b/m,lookbehind:!0},operator:/=>/,punctuation:/[()[\],]/}}return iS}var sS,YO;function xye(){if(YO)return sS;YO=1,sS=e,e.displayName="go",e.aliases=[];function e(t){t.languages.go=t.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),t.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete t.languages.go["class-name"]}return sS}var lS,ZO;function kye(){if(ZO)return lS;ZO=1,lS=e,e.displayName="graphql",e.aliases=[];function e(t){t.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:t.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},t.hooks.add("after-tokenize",function(r){if(r.language!=="graphql")return;var a=r.tokens.filter(function(v){return typeof v!="string"&&v.type!=="comment"&&v.type!=="scalar"}),o=0;function i(v){return a[o+v]}function s(v,h){h=h||0;for(var S=0;S0)){var b=l(/^\{$/,/^\}$/);if(b===-1)continue;for(var y=o;y=0&&c(w,"variable-input")}}}}})}return lS}var cS,XO;function Cye(){if(XO)return cS;XO=1,cS=e,e.displayName="groovy",e.aliases=[];function e(t){t.languages.groovy=t.languages.extend("clike",{string:[{pattern:/("""|''')(?:[^\\]|\\[\s\S])*?\1|\$\/(?:[^/$]|\$(?:[/$]|(?![/$]))|\/(?!\$))*\/\$/,greedy:!0},{pattern:/(["'/])(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0}],keyword:/\b(?:abstract|as|assert|boolean|break|byte|case|catch|char|class|const|continue|def|default|do|double|else|enum|extends|final|finally|float|for|goto|if|implements|import|in|instanceof|int|interface|long|native|new|package|private|protected|public|return|short|static|strictfp|super|switch|synchronized|this|throw|throws|trait|transient|try|void|volatile|while)\b/,number:/\b(?:0b[01_]+|0x[\da-f_]+(?:\.[\da-f_p\-]+)?|[\d_]+(?:\.[\d_]+)?(?:e[+-]?\d+)?)[glidf]?\b/i,operator:{pattern:/(^|[^.])(?:~|==?~?|\?[.:]?|\*(?:[.=]|\*=?)?|\.[@&]|\.\.<|\.\.(?!\.)|-[-=>]?|\+[+=]?|!=?|<(?:<=?|=>?)?|>(?:>>?=?|=)?|&[&=]?|\|[|=]?|\/=?|\^=?|%=?)/,lookbehind:!0},punctuation:/\.+|[{}[\];(),:$]/}),t.languages.insertBefore("groovy","string",{shebang:{pattern:/#!.+/,alias:"comment"}}),t.languages.insertBefore("groovy","punctuation",{"spock-block":/\b(?:and|cleanup|expect|given|setup|then|when|where):/}),t.languages.insertBefore("groovy","function",{annotation:{pattern:/(^|[^.])@\w+/,lookbehind:!0,alias:"punctuation"}}),t.hooks.add("wrap",function(n){if(n.language==="groovy"&&n.type==="string"){var r=n.content.value[0];if(r!="'"){var a=/([^\\])(?:\$(?:\{.*?\}|[\w.]+))/;r==="$"&&(a=/([^\$])(?:\$(?:\{.*?\}|[\w.]+))/),n.content.value=n.content.value.replace(/</g,"<").replace(/&/g,"&"),n.content=t.highlight(n.content.value,{expression:{pattern:a,lookbehind:!0,inside:t.languages.groovy}}),n.classes.push(r==="/"?"regex":"gstring")}}})}return cS}var uS,QO;function _ye(){if(QO)return uS;QO=1;var e=Th();uS=t,t.displayName="haml",t.aliases=[];function t(n){n.register(e),function(r){r.languages.haml={"multiline-comment":{pattern:/((?:^|\r?\n|\r)([\t ]*))(?:\/|-#).*(?:(?:\r?\n|\r)\2[\t ].+)*/,lookbehind:!0,alias:"comment"},"multiline-code":[{pattern:/((?:^|\r?\n|\r)([\t ]*)(?:[~-]|[&!]?=)).*,[\t ]*(?:(?:\r?\n|\r)\2[\t ].*,[\t ]*)*(?:(?:\r?\n|\r)\2[\t ].+)/,lookbehind:!0,inside:r.languages.ruby},{pattern:/((?:^|\r?\n|\r)([\t ]*)(?:[~-]|[&!]?=)).*\|[\t ]*(?:(?:\r?\n|\r)\2[\t ].*\|[\t ]*)*/,lookbehind:!0,inside:r.languages.ruby}],filter:{pattern:/((?:^|\r?\n|\r)([\t ]*)):[\w-]+(?:(?:\r?\n|\r)(?:\2[\t ].+|\s*?(?=\r?\n|\r)))+/,lookbehind:!0,inside:{"filter-name":{pattern:/^:[\w-]+/,alias:"symbol"}}},markup:{pattern:/((?:^|\r?\n|\r)[\t ]*)<.+/,lookbehind:!0,inside:r.languages.markup},doctype:{pattern:/((?:^|\r?\n|\r)[\t ]*)!!!(?: .+)?/,lookbehind:!0},tag:{pattern:/((?:^|\r?\n|\r)[\t ]*)[%.#][\w\-#.]*[\w\-](?:\([^)]+\)|\{(?:\{[^}]+\}|[^{}])+\}|\[[^\]]+\])*[\/<>]*/,lookbehind:!0,inside:{attributes:[{pattern:/(^|[^#])\{(?:\{[^}]+\}|[^{}])+\}/,lookbehind:!0,inside:r.languages.ruby},{pattern:/\([^)]+\)/,inside:{"attr-value":{pattern:/(=\s*)(?:"(?:\\.|[^\\"\r\n])*"|[^)\s]+)/,lookbehind:!0},"attr-name":/[\w:-]+(?=\s*!?=|\s*[,)])/,punctuation:/[=(),]/}},{pattern:/\[[^\]]+\]/,inside:r.languages.ruby}],punctuation:/[<>]/}},code:{pattern:/((?:^|\r?\n|\r)[\t ]*(?:[~-]|[&!]?=)).+/,lookbehind:!0,inside:r.languages.ruby},interpolation:{pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"punctuation"},ruby:{pattern:/[\s\S]+/,inside:r.languages.ruby}}},punctuation:{pattern:/((?:^|\r?\n|\r)[\t ]*)[~=\-&!]+/,lookbehind:!0}};for(var a="((?:^|\\r?\\n|\\r)([\\t ]*)):{{filter_name}}(?:(?:\\r?\\n|\\r)(?:\\2[\\t ].+|\\s*?(?=\\r?\\n|\\r)))+",o=["css",{filter:"coffee",language:"coffeescript"},"erb","javascript","less","markdown","ruby","scss","textile"],i={},s=0,l=o.length;s@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},r.hooks.add("before-tokenize",function(a){var o=/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g;r.languages["markup-templating"].buildPlaceholders(a,"handlebars",o)}),r.hooks.add("after-tokenize",function(a){r.languages["markup-templating"].tokenizePlaceholders(a,"handlebars")}),r.languages.hbs=r.languages.handlebars}(n)}return dS}var fS,eD;function NA(){if(eD)return fS;eD=1,fS=e,e.displayName="haskell",e.aliases=["hs"];function e(t){t.languages.haskell={comment:{pattern:/(^|[^-!#$%*+=?&@|~.:<>^\\\/])(?:--(?:(?=.)[^-!#$%*+=?&@|~.:<>^\\\/].*|$)|\{-[\s\S]*?-\})/m,lookbehind:!0},char:{pattern:/'(?:[^\\']|\\(?:[abfnrtv\\"'&]|\^[A-Z@[\]^_]|ACK|BEL|BS|CAN|CR|DC1|DC2|DC3|DC4|DEL|DLE|EM|ENQ|EOT|ESC|ETB|ETX|FF|FS|GS|HT|LF|NAK|NUL|RS|SI|SO|SOH|SP|STX|SUB|SYN|US|VT|\d+|o[0-7]+|x[0-9a-fA-F]+))'/,alias:"string"},string:{pattern:/"(?:[^\\"]|\\(?:\S|\s+\\))*"/,greedy:!0},keyword:/\b(?:case|class|data|deriving|do|else|if|in|infixl|infixr|instance|let|module|newtype|of|primitive|then|type|where)\b/,"import-statement":{pattern:/(^[\t ]*)import\s+(?:qualified\s+)?(?:[A-Z][\w']*)(?:\.[A-Z][\w']*)*(?:\s+as\s+(?:[A-Z][\w']*)(?:\.[A-Z][\w']*)*)?(?:\s+hiding\b)?/m,lookbehind:!0,inside:{keyword:/\b(?:as|hiding|import|qualified)\b/,punctuation:/\./}},builtin:/\b(?:abs|acos|acosh|all|and|any|appendFile|approxRational|asTypeOf|asin|asinh|atan|atan2|atanh|basicIORun|break|catch|ceiling|chr|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|denominator|digitToInt|div|divMod|drop|dropWhile|either|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldl|foldl1|foldr|foldr1|fromDouble|fromEnum|fromInt|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|group|head|id|inRange|index|init|intToDigit|interact|ioError|isAlpha|isAlphaNum|isAscii|isControl|isDenormalized|isDigit|isHexDigit|isIEEE|isInfinite|isLower|isNaN|isNegativeZero|isOctDigit|isPrint|isSpace|isUpper|iterate|last|lcm|length|lex|lexDigits|lexLitChar|lines|log|logBase|lookup|map|mapM|mapM_|max|maxBound|maximum|maybe|min|minBound|minimum|mod|negate|not|notElem|null|numerator|odd|or|ord|otherwise|pack|pi|pred|primExitWith|print|product|properFraction|putChar|putStr|putStrLn|quot|quotRem|range|rangeSize|read|readDec|readFile|readFloat|readHex|readIO|readInt|readList|readLitChar|readLn|readOct|readParen|readSigned|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequence_|show|showChar|showInt|showList|showLitChar|showParen|showSigned|showString|shows|showsPrec|significand|signum|sin|sinh|snd|sort|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|threadToIOResult|toEnum|toInt|toInteger|toLower|toRational|toUpper|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)\b/,number:/\b(?:\d+(?:\.\d+)?(?:e[+-]?\d+)?|0o[0-7]+|0x[0-9a-f]+)\b/i,operator:[{pattern:/`(?:[A-Z][\w']*\.)*[_a-z][\w']*`/,greedy:!0},{pattern:/(\s)\.(?=\s)/,lookbehind:!0},/[-!#$%*+=?&@|~:<>^\\\/][-!#$%*+=?&@|~.:<>^\\\/]*|\.[-!#$%*+=?&@|~.:<>^\\\/]+/],hvariable:{pattern:/\b(?:[A-Z][\w']*\.)*[_a-z][\w']*/,inside:{punctuation:/\./}},constant:{pattern:/\b(?:[A-Z][\w']*\.)*[A-Z][\w']*/,inside:{punctuation:/\./}},punctuation:/[{}[\];(),.:]/},t.languages.hs=t.languages.haskell}return fS}var pS,tD;function Tye(){if(tD)return pS;tD=1,pS=e,e.displayName="haxe",e.aliases=[];function e(t){t.languages.haxe=t.languages.extend("clike",{string:{pattern:/"(?:[^"\\]|\\[\s\S])*"/,greedy:!0},"class-name":[{pattern:/(\b(?:abstract|class|enum|extends|implements|interface|new|typedef)\s+)[A-Z_]\w*/,lookbehind:!0},/\b[A-Z]\w*/],keyword:/\bthis\b|\b(?:abstract|as|break|case|cast|catch|class|continue|default|do|dynamic|else|enum|extends|extern|final|for|from|function|if|implements|import|in|inline|interface|macro|new|null|operator|overload|override|package|private|public|return|static|super|switch|throw|to|try|typedef|untyped|using|var|while)(?!\.)\b/,function:{pattern:/\b[a-z_]\w*(?=\s*(?:<[^<>]*>\s*)?\()/i,greedy:!0},operator:/\.{3}|\+\+|--|&&|\|\||->|=>|(?:<{1,3}|[-+*/%!=&|^])=?|[?:~]/}),t.languages.insertBefore("haxe","string",{"string-interpolation":{pattern:/'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{interpolation:{pattern:/(^|[^\\])\$(?:\w+|\{[^{}]+\})/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{?|\}$/,alias:"punctuation"},expression:{pattern:/[\s\S]+/,inside:t.languages.haxe}}},string:/[\s\S]+/}}}),t.languages.insertBefore("haxe","class-name",{regex:{pattern:/~\/(?:[^\/\\\r\n]|\\.)+\/[a-z]*/,greedy:!0,inside:{"regex-flags":/\b[a-z]+$/,"regex-source":{pattern:/^(~\/)[\s\S]+(?=\/$)/,lookbehind:!0,alias:"language-regex",inside:t.languages.regex},"regex-delimiter":/^~\/|\/$/}}}),t.languages.insertBefore("haxe","keyword",{preprocessor:{pattern:/#(?:else|elseif|end|if)\b.*/,alias:"property"},metadata:{pattern:/@:?[\w.]+/,alias:"symbol"},reification:{pattern:/\$(?:\w+|(?=\{))/,alias:"important"}})}return pS}var gS,nD;function Rye(){if(nD)return gS;nD=1,gS=e,e.displayName="hcl",e.aliases=[];function e(t){t.languages.hcl={comment:/(?:\/\/|#).*|\/\*[\s\S]*?(?:\*\/|$)/,heredoc:{pattern:/<<-?(\w+\b)[\s\S]*?^[ \t]*\1/m,greedy:!0,alias:"string"},keyword:[{pattern:/(?:data|resource)\s+(?:"(?:\\[\s\S]|[^\\"])*")(?=\s+"[\w-]+"\s+\{)/i,inside:{type:{pattern:/(resource|data|\s+)(?:"(?:\\[\s\S]|[^\\"])*")/i,lookbehind:!0,alias:"variable"}}},{pattern:/(?:backend|module|output|provider|provisioner|variable)\s+(?:[\w-]+|"(?:\\[\s\S]|[^\\"])*")\s+(?=\{)/i,inside:{type:{pattern:/(backend|module|output|provider|provisioner|variable)\s+(?:[\w-]+|"(?:\\[\s\S]|[^\\"])*")\s+/i,lookbehind:!0,alias:"variable"}}},/[\w-]+(?=\s+\{)/],property:[/[-\w\.]+(?=\s*=(?!=))/,/"(?:\\[\s\S]|[^\\"])+"(?=\s*[:=])/],string:{pattern:/"(?:[^\\$"]|\\[\s\S]|\$(?:(?=")|\$+(?!\$)|[^"${])|\$\{(?:[^{}"]|"(?:[^\\"]|\\[\s\S])*")*\})*"/,greedy:!0,inside:{interpolation:{pattern:/(^|[^$])\$\{(?:[^{}"]|"(?:[^\\"]|\\[\s\S])*")*\}/,lookbehind:!0,inside:{type:{pattern:/(\b(?:count|data|local|module|path|self|terraform|var)\b\.)[\w\*]+/i,lookbehind:!0,alias:"variable"},keyword:/\b(?:count|data|local|module|path|self|terraform|var)\b/i,function:/\w+(?=\()/,string:{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0},number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?(?:e[+-]?\d+)?/i,punctuation:/[!\$#%&'()*+,.\/;<=>@\[\\\]^`{|}~?:]/}}}},number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?(?:e[+-]?\d+)?/i,boolean:/\b(?:false|true)\b/i,punctuation:/[=\[\]{}]/}}return gS}var mS,rD;function Nye(){if(rD)return mS;rD=1;var e=Ws();mS=t,t.displayName="hlsl",t.aliases=[];function t(n){n.register(e),n.languages.hlsl=n.languages.extend("c",{"class-name":[n.languages.c["class-name"],/\b(?:AppendStructuredBuffer|BlendState|Buffer|ByteAddressBuffer|CompileShader|ComputeShader|ConsumeStructuredBuffer|DepthStencilState|DepthStencilView|DomainShader|GeometryShader|Hullshader|InputPatch|LineStream|OutputPatch|PixelShader|PointStream|RWBuffer|RWByteAddressBuffer|RWStructuredBuffer|RWTexture(?:1D|1DArray|2D|2DArray|3D)|RasterizerState|RenderTargetView|SamplerComparisonState|SamplerState|StructuredBuffer|Texture(?:1D|1DArray|2D|2DArray|2DMS|2DMSArray|3D|Cube|CubeArray)|TriangleStream|VertexShader)\b/],keyword:[/\b(?:asm|asm_fragment|auto|break|case|catch|cbuffer|centroid|char|class|column_major|compile|compile_fragment|const|const_cast|continue|default|delete|discard|do|dynamic_cast|else|enum|explicit|export|extern|for|friend|fxgroup|goto|groupshared|if|in|inline|inout|interface|line|lineadj|linear|long|matrix|mutable|namespace|new|nointerpolation|noperspective|operator|out|packoffset|pass|pixelfragment|point|precise|private|protected|public|register|reinterpret_cast|return|row_major|sample|sampler|shared|short|signed|sizeof|snorm|stateblock|stateblock_state|static|static_cast|string|struct|switch|tbuffer|technique|technique10|technique11|template|texture|this|throw|triangle|triangleadj|try|typedef|typename|uniform|union|unorm|unsigned|using|vector|vertexfragment|virtual|void|volatile|while)\b/,/\b(?:bool|double|dword|float|half|int|min(?:10float|12int|16(?:float|int|uint))|uint)(?:[1-4](?:x[1-4])?)?\b/],number:/(?:(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[eE][+-]?\d+)?|\b0x[\da-fA-F]+)[fFhHlLuU]?\b/,boolean:/\b(?:false|true)\b/})}return mS}var hS,aD;function Iye(){if(aD)return hS;aD=1,hS=e,e.displayName="hoon",e.aliases=[];function e(t){t.languages.hoon={comment:{pattern:/::.*/,greedy:!0},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},constant:/%(?:\.[ny]|[\w-]+)/,"class-name":/@(?:[a-z0-9-]*[a-z0-9])?|\*/i,function:/(?:\+[-+] {2})?(?:[a-z](?:[a-z0-9-]*[a-z0-9])?)/,keyword:/\.[\^\+\*=\?]|![><:\.=\?!]|=[>|:,\.\-\^<+;/~\*\?]|\?[>|:\.\-\^<\+&~=@!]|\|[\$_%:\.\-\^~\*=@\?]|\+[|\$\+\*]|:[_\-\^\+~\*]|%[_:\.\-\^\+~\*=]|\^[|:\.\-\+&~\*=\?]|\$[|_%:<>\-\^&~@=\?]|;[:<\+;\/~\*=]|~[>|\$_%<\+\/&=\?!]|--|==/}}return hS}var bS,oD;function Oye(){if(oD)return bS;oD=1,bS=e,e.displayName="hpkp",e.aliases=[];function e(t){t.languages.hpkp={directive:{pattern:/\b(?:includeSubDomains|max-age|pin-sha256|preload|report-to|report-uri|strict)(?=[\s;=]|$)/i,alias:"property"},operator:/=/,punctuation:/;/}}return bS}var yS,iD;function Dye(){if(iD)return yS;iD=1,yS=e,e.displayName="hsts",e.aliases=[];function e(t){t.languages.hsts={directive:{pattern:/\b(?:includeSubDomains|max-age|preload)(?=[\s;=]|$)/i,alias:"property"},operator:/=/,punctuation:/;/}}return yS}var vS,sD;function Lye(){if(sD)return vS;sD=1,vS=e,e.displayName="http",e.aliases=[];function e(t){(function(n){function r(d){return RegExp("(^(?:"+d+"):[ ]*(?![ ]))[^]+","i")}n.languages.http={"request-line":{pattern:/^(?:CONNECT|DELETE|GET|HEAD|OPTIONS|PATCH|POST|PRI|PUT|SEARCH|TRACE)\s(?:https?:\/\/|\/)\S*\sHTTP\/[\d.]+/m,inside:{method:{pattern:/^[A-Z]+\b/,alias:"property"},"request-target":{pattern:/^(\s)(?:https?:\/\/|\/)\S*(?=\s)/,lookbehind:!0,alias:"url",inside:n.languages.uri},"http-version":{pattern:/^(\s)HTTP\/[\d.]+/,lookbehind:!0,alias:"property"}}},"response-status":{pattern:/^HTTP\/[\d.]+ \d+ .+/m,inside:{"http-version":{pattern:/^HTTP\/[\d.]+/,alias:"property"},"status-code":{pattern:/^(\s)\d+(?=\s)/,lookbehind:!0,alias:"number"},"reason-phrase":{pattern:/^(\s).+/,lookbehind:!0,alias:"string"}}},header:{pattern:/^[\w-]+:.+(?:(?:\r\n?|\n)[ \t].+)*/m,inside:{"header-value":[{pattern:r(/Content-Security-Policy/.source),lookbehind:!0,alias:["csp","languages-csp"],inside:n.languages.csp},{pattern:r(/Public-Key-Pins(?:-Report-Only)?/.source),lookbehind:!0,alias:["hpkp","languages-hpkp"],inside:n.languages.hpkp},{pattern:r(/Strict-Transport-Security/.source),lookbehind:!0,alias:["hsts","languages-hsts"],inside:n.languages.hsts},{pattern:r(/[^:]+/.source),lookbehind:!0}],"header-name":{pattern:/^[^:]+/,alias:"keyword"},punctuation:/^:/}}};var a=n.languages,o={"application/javascript":a.javascript,"application/json":a.json||a.javascript,"application/xml":a.xml,"text/xml":a.xml,"text/html":a.html,"text/css":a.css,"text/plain":a.plain},i={"application/json":!0,"application/xml":!0};function s(d){var g=d.replace(/^[a-z]+\//,""),m="\\w+/(?:[\\w.-]+\\+)+"+g+"(?![+\\w.-])";return"(?:"+d+"|"+m+")"}var l;for(var c in o)if(o[c]){l=l||{};var u=i[c]?s(c):c;l[c.replace(/\//g,"-")]={pattern:RegExp("("+/content-type:\s*/.source+u+/(?:(?:\r\n?|\n)[\w-].*)*(?:\r(?:\n|(?!\n))|\n)/.source+")"+/[^ \t\w-][\s\S]*/.source,"i"),lookbehind:!0,inside:o[c]}}l&&n.languages.insertBefore("http","header",l)})(t)}return vS}var SS,lD;function Mye(){if(lD)return SS;lD=1,SS=e,e.displayName="ichigojam",e.aliases=[];function e(t){t.languages.ichigojam={comment:/(?:\B'|REM)(?:[^\n\r]*)/i,string:{pattern:/"(?:""|[!#$%&'()*,\/:;<=>?^\w +\-.])*"/,greedy:!0},number:/\B#[0-9A-F]+|\B`[01]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:E[+-]?\d+)?/i,keyword:/\b(?:BEEP|BPS|CASE|CLEAR|CLK|CLO|CLP|CLS|CLT|CLV|CONT|COPY|ELSE|END|FILE|FILES|FOR|GOSUB|GOTO|GSB|IF|INPUT|KBD|LED|LET|LIST|LOAD|LOCATE|LRUN|NEW|NEXT|OUT|PLAY|POKE|PRINT|PWM|REM|RENUM|RESET|RETURN|RIGHT|RTN|RUN|SAVE|SCROLL|SLEEP|SRND|STEP|STOP|SUB|TEMPO|THEN|TO|UART|VIDEO|WAIT)(?:\$|\b)/i,function:/\b(?:ABS|ANA|ASC|BIN|BTN|DEC|END|FREE|HELP|HEX|I2CR|I2CW|IN|INKEY|LEN|LINE|PEEK|RND|SCR|SOUND|STR|TICK|USR|VER|VPEEK|ZER)(?:\$|\b)/i,label:/(?:\B@\S+)/,operator:/<[=>]?|>=?|\|\||&&|[+\-*\/=|&^~!]|\b(?:AND|NOT|OR)\b/i,punctuation:/[\[,;:()\]]/}}return SS}var wS,cD;function Pye(){if(cD)return wS;cD=1,wS=e,e.displayName="icon",e.aliases=[];function e(t){t.languages.icon={comment:/#.*/,string:{pattern:/(["'])(?:(?!\1)[^\\\r\n_]|\\.|_(?!\1)(?:\r\n|[\s\S]))*\1/,greedy:!0},number:/\b(?:\d+r[a-z\d]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)\b|\.\d+\b/i,"builtin-keyword":{pattern:/&(?:allocated|ascii|clock|collections|cset|current|date|dateline|digits|dump|e|error(?:number|text|value)?|errout|fail|features|file|host|input|lcase|letters|level|line|main|null|output|phi|pi|pos|progname|random|regions|source|storage|subject|time|trace|ucase|version)\b/,alias:"variable"},directive:{pattern:/\$\w+/,alias:"builtin"},keyword:/\b(?:break|by|case|create|default|do|else|end|every|fail|global|if|initial|invocable|link|local|next|not|of|procedure|record|repeat|return|static|suspend|then|to|until|while)\b/,function:/\b(?!\d)\w+(?=\s*[({]|\s*!\s*\[)/,operator:/[+-]:(?!=)|(?:[\/?@^%&]|\+\+?|--?|==?=?|~==?=?|\*\*?|\|\|\|?|<(?:->?|>?=?)(?::=)?|:(?:=:?)?|[!.\\|~]/,punctuation:/[\[\](){},;]/}}return wS}var ES,uD;function $ye(){if(uD)return ES;uD=1,ES=e,e.displayName="icuMessageFormat",e.aliases=[];function e(t){(function(n){function r(c,u){return u<=0?/[]/.source:c.replace(//g,function(){return r(c,u-1)})}var a=/'[{}:=,](?:[^']|'')*'(?!')/,o={pattern:/''/,greedy:!0,alias:"operator"},i={pattern:a,greedy:!0,inside:{escape:o}},s=r(/\{(?:[^{}']|'(?![{},'])|''||)*\}/.source.replace(//g,function(){return a.source}),8),l={pattern:RegExp(s),inside:{message:{pattern:/^(\{)[\s\S]+(?=\}$)/,lookbehind:!0,inside:null},"message-delimiter":{pattern:/./,alias:"punctuation"}}};n.languages["icu-message-format"]={argument:{pattern:RegExp(s),greedy:!0,inside:{content:{pattern:/^(\{)[\s\S]+(?=\}$)/,lookbehind:!0,inside:{"argument-name":{pattern:/^(\s*)[^{}:=,\s]+/,lookbehind:!0},"choice-style":{pattern:/^(\s*,\s*choice\s*,\s*)\S(?:[\s\S]*\S)?/,lookbehind:!0,inside:{punctuation:/\|/,range:{pattern:/^(\s*)[+-]?(?:\d+(?:\.\d*)?|\u221e)\s*[<#\u2264]/,lookbehind:!0,inside:{operator:/[<#\u2264]/,number:/\S+/}},rest:null}},"plural-style":{pattern:/^(\s*,\s*(?:plural|selectordinal)\s*,\s*)\S(?:[\s\S]*\S)?/,lookbehind:!0,inside:{offset:/^offset:\s*\d+/,"nested-message":l,selector:{pattern:/=\d+|[^{}:=,\s]+/,inside:{keyword:/^(?:few|many|one|other|two|zero)$/}}}},"select-style":{pattern:/^(\s*,\s*select\s*,\s*)\S(?:[\s\S]*\S)?/,lookbehind:!0,inside:{"nested-message":l,selector:{pattern:/[^{}:=,\s]+/,inside:{keyword:/^other$/}}}},keyword:/\b(?:choice|plural|select|selectordinal)\b/,"arg-type":{pattern:/\b(?:date|duration|number|ordinal|spellout|time)\b/,alias:"keyword"},"arg-skeleton":{pattern:/(,\s*)::[^{}:=,\s]+/,lookbehind:!0},"arg-style":{pattern:/(,\s*)(?:currency|full|integer|long|medium|percent|short)(?=\s*$)/,lookbehind:!0},"arg-style-text":{pattern:RegExp(/(^\s*,\s*(?=\S))/.source+r(/(?:[^{}']|'[^']*'|\{(?:)?\})+/.source,8)+"$"),lookbehind:!0,alias:"string"},punctuation:/,/}},"argument-delimiter":{pattern:/./,alias:"operator"}}},escape:o,string:i},l.inside.message.inside=n.languages["icu-message-format"],n.languages["icu-message-format"].argument.inside.content.inside["choice-style"].inside.rest=n.languages["icu-message-format"]})(t)}return ES}var xS,dD;function Fye(){if(dD)return xS;dD=1;var e=NA();xS=t,t.displayName="idris",t.aliases=["idr"];function t(n){n.register(e),n.languages.idris=n.languages.extend("haskell",{comment:{pattern:/(?:(?:--|\|\|\|).*$|\{-[\s\S]*?-\})/m},keyword:/\b(?:Type|case|class|codata|constructor|corecord|data|do|dsl|else|export|if|implementation|implicit|import|impossible|in|infix|infixl|infixr|instance|interface|let|module|mutual|namespace|of|parameters|partial|postulate|private|proof|public|quoteGoal|record|rewrite|syntax|then|total|using|where|with)\b/,builtin:void 0}),n.languages.insertBefore("idris","keyword",{"import-statement":{pattern:/(^\s*import\s+)(?:[A-Z][\w']*)(?:\.[A-Z][\w']*)*/m,lookbehind:!0,inside:{punctuation:/\./}}}),n.languages.idr=n.languages.idris}return xS}var kS,fD;function jye(){if(fD)return kS;fD=1,kS=e,e.displayName="iecst",e.aliases=[];function e(t){t.languages.iecst={comment:[{pattern:/(^|[^\\])(?:\/\*[\s\S]*?(?:\*\/|$)|\(\*[\s\S]*?(?:\*\)|$)|\{[\s\S]*?(?:\}|$))/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},keyword:[/\b(?:END_)?(?:PROGRAM|CONFIGURATION|INTERFACE|FUNCTION_BLOCK|FUNCTION|ACTION|TRANSITION|TYPE|STRUCT|(?:INITIAL_)?STEP|NAMESPACE|LIBRARY|CHANNEL|FOLDER|RESOURCE|VAR_(?:ACCESS|CONFIG|EXTERNAL|GLOBAL|INPUT|IN_OUT|OUTPUT|TEMP)|VAR|METHOD|PROPERTY)\b/i,/\b(?:AT|BY|(?:END_)?(?:CASE|FOR|IF|REPEAT|WHILE)|CONSTANT|CONTINUE|DO|ELSE|ELSIF|EXIT|EXTENDS|FROM|GET|GOTO|IMPLEMENTS|JMP|NON_RETAIN|OF|PRIVATE|PROTECTED|PUBLIC|RETAIN|RETURN|SET|TASK|THEN|TO|UNTIL|USING|WITH|__CATCH|__ENDTRY|__FINALLY|__TRY)\b/],"class-name":/\b(?:ANY|ARRAY|BOOL|BYTE|U?(?:D|L|S)?INT|(?:D|L)?WORD|DATE(?:_AND_TIME)?|DT|L?REAL|POINTER|STRING|TIME(?:_OF_DAY)?|TOD)\b/,address:{pattern:/%[IQM][XBWDL][\d.]*|%[IQ][\d.]*/,alias:"symbol"},number:/\b(?:16#[\da-f]+|2#[01_]+|0x[\da-f]+)\b|\b(?:D|DT|T|TOD)#[\d_shmd:]*|\b[A-Z]*#[\d.,_]*|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/,operator:/S?R?:?=>?|&&?|\*\*?|<[=>]?|>=?|[-:^/+#]|\b(?:AND|EQ|EXPT|GE|GT|LE|LT|MOD|NE|NOT|OR|XOR)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,punctuation:/[()[\].,;]/}}return kS}var CS,pD;function zye(){if(pD)return CS;pD=1,CS=e,e.displayName="ignore",e.aliases=["gitignore","hgignore","npmignore"];function e(t){(function(n){n.languages.ignore={comment:/^#.*/m,entry:{pattern:/\S(?:.*(?:(?:\\ )|\S))?/,alias:"string",inside:{operator:/^!|\*\*?|\?/,regex:{pattern:/(^|[^\\])\[[^\[\]]*\]/,lookbehind:!0},punctuation:/\//}}},n.languages.gitignore=n.languages.ignore,n.languages.hgignore=n.languages.ignore,n.languages.npmignore=n.languages.ignore})(t)}return CS}var _S,gD;function Uye(){if(gD)return _S;gD=1,_S=e,e.displayName="inform7",e.aliases=[];function e(t){t.languages.inform7={string:{pattern:/"[^"]*"/,inside:{substitution:{pattern:/\[[^\[\]]+\]/,inside:{delimiter:{pattern:/\[|\]/,alias:"punctuation"}}}}},comment:{pattern:/\[[^\[\]]+\]/,greedy:!0},title:{pattern:/^[ \t]*(?:book|chapter|part(?! of)|section|table|volume)\b.+/im,alias:"important"},number:{pattern:/(^|[^-])(?:\b\d+(?:\.\d+)?(?:\^\d+)?(?:(?!\d)\w+)?|\b(?:eight|eleven|five|four|nine|one|seven|six|ten|three|twelve|two))\b(?!-)/i,lookbehind:!0},verb:{pattern:/(^|[^-])\b(?:answering|applying to|are|asking|attacking|be(?:ing)?|burning|buying|called|carries|carry(?! out)|carrying|climbing|closing|conceal(?:ing|s)?|consulting|contain(?:ing|s)?|cutting|drinking|dropping|eating|enclos(?:es?|ing)|entering|examining|exiting|getting|giving|going|ha(?:s|ve|ving)|hold(?:ing|s)?|impl(?:ies|y)|incorporat(?:es?|ing)|inserting|is|jumping|kissing|listening|locking|looking|mean(?:ing|s)?|opening|provid(?:es?|ing)|pulling|pushing|putting|relat(?:es?|ing)|removing|searching|see(?:ing|s)?|setting|showing|singing|sleeping|smelling|squeezing|support(?:ing|s)?|swearing|switching|taking|tasting|telling|thinking|throwing|touching|turning|tying|unlock(?:ing|s)?|var(?:ies|y|ying)|waiting|waking|waving|wear(?:ing|s)?)\b(?!-)/i,lookbehind:!0,alias:"operator"},keyword:{pattern:/(^|[^-])\b(?:after|before|carry out|check|continue the action|definition(?= *:)|do nothing|else|end (?:if|the story|unless)|every turn|if|include|instead(?: of)?|let|move|no|now|otherwise|repeat|report|resume the story|rule for|running through|say(?:ing)?|stop the action|test|try(?:ing)?|understand|unless|use|when|while|yes)\b(?!-)/i,lookbehind:!0},property:{pattern:/(^|[^-])\b(?:adjacent(?! to)|carried|closed|concealed|contained|dark|described|edible|empty|enclosed|enterable|even|female|fixed in place|full|handled|held|improper-named|incorporated|inedible|invisible|lighted|lit|lock(?:able|ed)|male|marked for listing|mentioned|negative|neuter|non-(?:empty|full|recurring)|odd|opaque|open(?:able)?|plural-named|portable|positive|privately-named|proper-named|provided|publically-named|pushable between rooms|recurring|related|rubbing|scenery|seen|singular-named|supported|swinging|switch(?:able|ed(?: off| on)?)|touch(?:able|ed)|transparent|unconcealed|undescribed|unlit|unlocked|unmarked for listing|unmentioned|unopenable|untouchable|unvisited|variable|visible|visited|wearable|worn)\b(?!-)/i,lookbehind:!0,alias:"symbol"},position:{pattern:/(^|[^-])\b(?:above|adjacent to|back side of|below|between|down|east|everywhere|front side|here|in|inside(?: from)?|north(?:east|west)?|nowhere|on(?: top of)?|other side|outside(?: from)?|parts? of|regionally in|south(?:east|west)?|through|up|west|within)\b(?!-)/i,lookbehind:!0,alias:"keyword"},type:{pattern:/(^|[^-])\b(?:actions?|activit(?:ies|y)|actors?|animals?|backdrops?|containers?|devices?|directions?|doors?|holders?|kinds?|lists?|m[ae]n|nobody|nothing|nouns?|numbers?|objects?|people|persons?|player(?:'s holdall)?|regions?|relations?|rooms?|rule(?:book)?s?|scenes?|someone|something|supporters?|tables?|texts?|things?|time|vehicles?|wom[ae]n)\b(?!-)/i,lookbehind:!0,alias:"variable"},punctuation:/[.,:;(){}]/},t.languages.inform7.string.inside.substitution.inside.rest=t.languages.inform7,t.languages.inform7.string.inside.substitution.inside.rest.text={pattern:/\S(?:\s*\S)*/,alias:"comment"}}return _S}var AS,mD;function Bye(){if(mD)return AS;mD=1,AS=e,e.displayName="ini",e.aliases=[];function e(t){t.languages.ini={comment:{pattern:/(^[ \f\t\v]*)[#;][^\n\r]*/m,lookbehind:!0},section:{pattern:/(^[ \f\t\v]*)\[[^\n\r\]]*\]?/m,lookbehind:!0,inside:{"section-name":{pattern:/(^\[[ \f\t\v]*)[^ \f\t\v\]]+(?:[ \f\t\v]+[^ \f\t\v\]]+)*/,lookbehind:!0,alias:"selector"},punctuation:/\[|\]/}},key:{pattern:/(^[ \f\t\v]*)[^ \f\n\r\t\v=]+(?:[ \f\t\v]+[^ \f\n\r\t\v=]+)*(?=[ \f\t\v]*=)/m,lookbehind:!0,alias:"attr-name"},value:{pattern:/(=[ \f\t\v]*)[^ \f\n\r\t\v]+(?:[ \f\t\v]+[^ \f\n\r\t\v]+)*/,lookbehind:!0,alias:"attr-value",inside:{"inner-value":{pattern:/^("|').+(?=\1$)/,lookbehind:!0}}},punctuation:/=/}}return AS}var TS,hD;function Hye(){if(hD)return TS;hD=1,TS=e,e.displayName="io",e.aliases=[];function e(t){t.languages.io={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?(?:\*\/|$)|\/\/.*|#.*)/,lookbehind:!0,greedy:!0},"triple-quoted-string":{pattern:/"""(?:\\[\s\S]|(?!""")[^\\])*"""/,greedy:!0,alias:"string"},string:{pattern:/"(?:\\.|[^\\\r\n"])*"/,greedy:!0},keyword:/\b(?:activate|activeCoroCount|asString|block|break|call|catch|clone|collectGarbage|compileString|continue|do|doFile|doMessage|doString|else|elseif|exit|for|foreach|forward|getEnvironmentVariable|getSlot|hasSlot|if|ifFalse|ifNil|ifNilEval|ifTrue|isActive|isNil|isResumable|list|message|method|parent|pass|pause|perform|performWithArgList|print|println|proto|raise|raiseResumable|removeSlot|resend|resume|schedulerSleepSeconds|self|sender|setSchedulerSleepSeconds|setSlot|shallowCopy|slotNames|super|system|then|thisBlock|thisContext|try|type|uniqueId|updateSlot|wait|while|write|yield)\b/,builtin:/\b(?:Array|AudioDevice|AudioMixer|BigNum|Block|Box|Buffer|CFunction|CGI|Color|Curses|DBM|DNSResolver|DOConnection|DOProxy|DOServer|Date|Directory|Duration|DynLib|Error|Exception|FFT|File|Fnmatch|Font|Future|GL|GLE|GLScissor|GLU|GLUCylinder|GLUQuadric|GLUSphere|GLUT|Host|Image|Importer|LinkList|List|Lobby|Locals|MD5|MP3Decoder|MP3Encoder|Map|Message|Movie|Notification|Number|Object|OpenGL|Point|Protos|Random|Regex|SGML|SGMLElement|SGMLParser|SQLite|Sequence|Server|ShowMessage|SleepyCat|SleepyCatCursor|Socket|SocketManager|Sound|Soup|Store|String|Tree|UDPSender|UPDReceiver|URL|User|Warning|WeakLink)\b/,boolean:/\b(?:false|nil|true)\b/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e-?\d+)?/i,operator:/[=!*/%+\-^&|]=|>>?=?|<+*\-%$|,#][.:]?|[?^]\.?|[;\[]:?|[~}"i][.:]|[ACeEIjLor]\.|(?:[_\/\\qsux]|_?\d):)/,alias:"keyword"},number:/\b_?(?:(?!\d:)\d+(?:\.\d+)?(?:(?:ad|ar|[ejpx])_?\d+(?:\.\d+)?)*(?:b_?[\da-z]+(?:\.[\da-z]+)?)?|_\b(?!\.))/,adverb:{pattern:/[~}]|[\/\\]\.?|[bfM]\.|t[.:]/,alias:"builtin"},operator:/[=a][.:]|_\./,conjunction:{pattern:/&(?:\.:?|:)?|[.:@][.:]?|[!D][.:]|[;dHT]\.|`:?|[\^LS]:|"/,alias:"variable"},punctuation:/[()]/}}return RS}var NS,yD;function IA(){if(yD)return NS;yD=1,NS=e,e.displayName="java",e.aliases=[];function e(t){(function(n){var r=/\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\b/,a=/(^|[^\w.])(?:[a-z]\w*\s*\.\s*)*(?:[A-Z]\w*\s*\.\s*)*/.source,o={pattern:RegExp(a+/[A-Z](?:[\d_A-Z]*[a-z]\w*)?\b/.source),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,inside:{punctuation:/\./}},punctuation:/\./}};n.languages.java=n.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"/,lookbehind:!0,greedy:!0},"class-name":[o,{pattern:RegExp(a+/[A-Z]\w*(?=\s+\w+\s*[;,=()])/.source),lookbehind:!0,inside:o.inside}],keyword:r,function:[n.languages.clike.function,{pattern:/(::\s*)[a-z_]\w*/,lookbehind:!0}],number:/\b0b[01][01_]*L?\b|\b0x(?:\.[\da-f_p+-]+|[\da-f_]+(?:\.[\da-f_p+-]+)?)\b|(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfl]?/i,operator:{pattern:/(^|[^.])(?:<<=?|>>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0}}),n.languages.insertBefore("java","string",{"triple-quoted-string":{pattern:/"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/,greedy:!0,alias:"string"},char:{pattern:/'(?:\\.|[^'\\\r\n]){1,6}'/,greedy:!0}}),n.languages.insertBefore("java","class-name",{annotation:{pattern:/(^|[^.])@\w+(?:\s*\.\s*\w+)*/,lookbehind:!0,alias:"punctuation"},generics:{pattern:/<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&))*>)*>)*>)*>/,inside:{"class-name":o,keyword:r,punctuation:/[<>(),.:]/,operator:/[?&|]/}},namespace:{pattern:RegExp(/(\b(?:exports|import(?:\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\s+)(?!)[a-z]\w*(?:\.[a-z]\w*)*\.?/.source.replace(//g,function(){return r.source})),lookbehind:!0,inside:{punctuation:/\./}}})})(t)}return NS}var IS,vD;function Rh(){if(vD)return IS;vD=1,IS=e,e.displayName="javadoclike",e.aliases=[];function e(t){(function(n){var r=n.languages.javadoclike={parameter:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*@(?:arg|arguments|param)\s+)\w+/m,lookbehind:!0},keyword:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*|\{)@[a-z][a-zA-Z-]+\b/m,lookbehind:!0},punctuation:/[{}]/};function a(i,s){var l="doc-comment",c=n.languages[i];if(c){var u=c[l];if(!u){var d={};d[l]={pattern:/(^|[^\\])\/\*\*[^/][\s\S]*?(?:\*\/|$)/,lookbehind:!0,alias:"comment"},c=n.languages.insertBefore(i,"comment",d),u=c[l]}if(u instanceof RegExp&&(u=c[l]={pattern:u}),Array.isArray(u))for(var g=0,m=u.length;g)?|/.source.replace(//g,function(){return i});a.languages.javadoc=a.languages.extend("javadoclike",{}),a.languages.insertBefore("javadoc","keyword",{reference:{pattern:RegExp(/(@(?:exception|link|linkplain|see|throws|value)\s+(?:\*\s*)?)/.source+"(?:"+s+")"),lookbehind:!0,inside:{function:{pattern:/(#\s*)\w+(?=\s*\()/,lookbehind:!0},field:{pattern:/(#\s*)\w+/,lookbehind:!0},namespace:{pattern:/\b(?:[a-z]\w*\s*\.\s*)+/,inside:{punctuation:/\./}},"class-name":/\b[A-Z]\w*/,keyword:a.languages.java.keyword,punctuation:/[#()[\],.]/}},"class-name":{pattern:/(@param\s+)<[A-Z]\w*>/,lookbehind:!0,inside:{punctuation:/[.<>]/}},"code-section":[{pattern:/(\{@code\s+(?!\s))(?:[^\s{}]|\s+(?![\s}])|\{(?:[^{}]|\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})*\})*\})+(?=\s*\})/,lookbehind:!0,inside:{code:{pattern:o,lookbehind:!0,inside:a.languages.java,alias:"language-java"}}},{pattern:/(<(code|pre|tt)>(?!)\s*)\S(?:\S|\s+\S)*?(?=\s*<\/\2>)/,lookbehind:!0,inside:{line:{pattern:o,lookbehind:!0,inside:{tag:a.languages.markup.tag,entity:a.languages.markup.entity,code:{pattern:/.+/,inside:a.languages.java,alias:"language-java"}}}}}],tag:a.languages.markup.tag,entity:a.languages.markup.entity}),a.languages.javadoclike.addSupport("java",a.languages.javadoc)}(r)}return OS}var DS,wD;function Gye(){if(wD)return DS;wD=1,DS=e,e.displayName="javastacktrace",e.aliases=[];function e(t){t.languages.javastacktrace={summary:{pattern:/^([\t ]*)(?:(?:Caused by:|Suppressed:|Exception in thread "[^"]*")[\t ]+)?[\w$.]+(?::.*)?$/m,lookbehind:!0,inside:{keyword:{pattern:/^([\t ]*)(?:(?:Caused by|Suppressed)(?=:)|Exception in thread)/m,lookbehind:!0},string:{pattern:/^(\s*)"[^"]*"/,lookbehind:!0},exceptions:{pattern:/^(:?\s*)[\w$.]+(?=:|$)/,lookbehind:!0,inside:{"class-name":/[\w$]+$/,namespace:/\b[a-z]\w*\b/,punctuation:/\./}},message:{pattern:/(:\s*)\S.*/,lookbehind:!0,alias:"string"},punctuation:/:/}},"stack-frame":{pattern:/^([\t ]*)at (?:[\w$./]|@[\w$.+-]*\/)+(?:)?\([^()]*\)/m,lookbehind:!0,inside:{keyword:{pattern:/^(\s*)at(?= )/,lookbehind:!0},source:[{pattern:/(\()\w+\.\w+:\d+(?=\))/,lookbehind:!0,inside:{file:/^\w+\.\w+/,punctuation:/:/,"line-number":{pattern:/\b\d+\b/,alias:"number"}}},{pattern:/(\()[^()]*(?=\))/,lookbehind:!0,inside:{keyword:/^(?:Native Method|Unknown Source)$/}}],"class-name":/[\w$]+(?=\.(?:|[\w$]+)\()/,function:/(?:|[\w$]+)(?=\()/,"class-loader":{pattern:/(\s)[a-z]\w*(?:\.[a-z]\w*)*(?=\/[\w@$.]*\/)/,lookbehind:!0,alias:"namespace",inside:{punctuation:/\./}},module:{pattern:/([\s/])[a-z]\w*(?:\.[a-z]\w*)*(?:@[\w$.+-]*)?(?=\/)/,lookbehind:!0,inside:{version:{pattern:/(@)[\s\S]+/,lookbehind:!0,alias:"number"},punctuation:/[@.]/}},namespace:{pattern:/(?:\b[a-z]\w*\.)+/,inside:{punctuation:/\./}},punctuation:/[()/.]/}},more:{pattern:/^([\t ]*)\.{3} \d+ [a-z]+(?: [a-z]+)*/m,lookbehind:!0,inside:{punctuation:/\.{3}/,number:/\d+/,keyword:/\b[a-z]+(?: [a-z]+)*\b/}}}}return DS}var LS,ED;function Wye(){if(ED)return LS;ED=1,LS=e,e.displayName="jexl",e.aliases=[];function e(t){t.languages.jexl={string:/(["'])(?:\\[\s\S]|(?!\1)[^\\])*\1/,transform:{pattern:/(\|\s*)[a-zA-Zа-яА-Я_\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF$][\wа-яА-Я\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF$]*/,alias:"function",lookbehind:!0},function:/[a-zA-Zа-яА-Я_\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF$][\wа-яА-Я\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF$]*\s*(?=\()/,number:/\b\d+(?:\.\d+)?\b|\B\.\d+\b/,operator:/[<>!]=?|-|\+|&&|==|\|\|?|\/\/?|[?:*^%]/,boolean:/\b(?:false|true)\b/,keyword:/\bin\b/,punctuation:/[{}[\](),.]/}}return LS}var MS,xD;function Kye(){if(xD)return MS;xD=1,MS=e,e.displayName="jolie",e.aliases=[];function e(t){t.languages.jolie=t.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\[\s\S]|[^"\\])*"/,lookbehind:!0,greedy:!0},"class-name":{pattern:/((?:\b(?:as|courier|embed|in|inputPort|outputPort|service)\b|@)[ \t]*)\w+/,lookbehind:!0},keyword:/\b(?:as|cH|comp|concurrent|constants|courier|cset|csets|default|define|else|embed|embedded|execution|exit|extender|for|foreach|forward|from|global|if|import|in|include|init|inputPort|install|instanceof|interface|is_defined|linkIn|linkOut|main|new|nullProcess|outputPort|over|private|provide|public|scope|sequential|service|single|spawn|synchronized|this|throw|throws|type|undef|until|while|with)\b/,function:/\b[a-z_]\w*(?=[ \t]*[@(])/i,number:/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?l?/i,operator:/-[-=>]?|\+[+=]?|<[<=]?|[>=*!]=?|&&|\|\||[?\/%^@|]/,punctuation:/[()[\]{},;.:]/,builtin:/\b(?:Byte|any|bool|char|double|enum|float|int|length|long|ranges|regex|string|undefined|void)\b/}),t.languages.insertBefore("jolie","keyword",{aggregates:{pattern:/(\bAggregates\s*:\s*)(?:\w+(?:\s+with\s+\w+)?\s*,\s*)*\w+(?:\s+with\s+\w+)?/,lookbehind:!0,inside:{keyword:/\bwith\b/,"class-name":/\w+/,punctuation:/,/}},redirects:{pattern:/(\bRedirects\s*:\s*)(?:\w+\s*=>\s*\w+\s*,\s*)*(?:\w+\s*=>\s*\w+)/,lookbehind:!0,inside:{punctuation:/,/,"class-name":/\w+/,operator:/=>/}},property:{pattern:/\b(?:Aggregates|[Ii]nterfaces|Java|Javascript|Jolie|[Ll]ocation|OneWay|[Pp]rotocol|Redirects|RequestResponse)\b(?=[ \t]*:)/}})}return MS}var PS,kD;function Yye(){if(kD)return PS;kD=1,PS=e,e.displayName="jq",e.aliases=[];function e(t){(function(n){var r=/\\\((?:[^()]|\([^()]*\))*\)/.source,a=RegExp(/(^|[^\\])"(?:[^"\r\n\\]|\\[^\r\n(]|__)*"/.source.replace(/__/g,function(){return r})),o={interpolation:{pattern:RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+r),lookbehind:!0,inside:{content:{pattern:/^(\\\()[\s\S]+(?=\)$)/,lookbehind:!0,inside:null},punctuation:/^\\\(|\)$/}}},i=n.languages.jq={comment:/#.*/,property:{pattern:RegExp(a.source+/(?=\s*:(?!:))/.source),lookbehind:!0,greedy:!0,inside:o},string:{pattern:a,lookbehind:!0,greedy:!0,inside:o},function:{pattern:/(\bdef\s+)[a-z_]\w+/i,lookbehind:!0},variable:/\B\$\w+/,"property-literal":{pattern:/\b[a-z_]\w*(?=\s*:(?!:))/i,alias:"property"},keyword:/\b(?:as|break|catch|def|elif|else|end|foreach|if|import|include|label|module|modulemeta|null|reduce|then|try|while)\b/,boolean:/\b(?:false|true)\b/,number:/(?:\b\d+\.|\B\.)?\b\d+(?:[eE][+-]?\d+)?\b/,operator:[{pattern:/\|=?/,alias:"pipe"},/\.\.|[!=<>]?=|\?\/\/|\/\/=?|[-+*/%]=?|[<>?]|\b(?:and|not|or)\b/],"c-style-function":{pattern:/\b[a-z_]\w*(?=\s*\()/i,alias:"function"},punctuation:/::|[()\[\]{},:;]|\.(?=\s*[\[\w$])/,dot:{pattern:/\./,alias:"important"}};o.interpolation.inside.content.inside=i})(t)}return PS}var $S,CD;function Zye(){if(CD)return $S;CD=1,$S=e,e.displayName="jsExtras",e.aliases=[];function e(t){(function(n){n.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+n.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),n.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+n.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),n.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]});function r(c,u){return RegExp(c.replace(//g,function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source}),u)}n.languages.insertBefore("javascript","keyword",{imports:{pattern:r(/(\bimport\b\s*)(?:(?:\s*,\s*(?:\*\s*as\s+|\{[^{}]*\}))?|\*\s*as\s+|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:n.languages.javascript},exports:{pattern:r(/(\bexport\b\s*)(?:\*(?:\s*as\s+)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:n.languages.javascript}}),n.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),n.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),n.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:r(/(\.\s*)#?/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var a=["function","function-variable","method","method-variable","property-access"],o=0;o=C.length)return;var L=R[T];if(typeof L=="string"||typeof L.content=="string"){var D=C[S],H=typeof L=="string"?L:L.content,z=H.indexOf(D);if(z!==-1){++S;var M=H.substring(0,z),U=d(E[D]),X=H.substring(z+D.length),j=[];if(M&&j.push(M),j.push(U),X){var O=[X];_(O),j.push.apply(j,O)}typeof L=="string"?(R.splice.apply(R,[T,1].concat(j)),T+=j.length-1):L.content=j}}else{var A=L.content;Array.isArray(A)?_(A):_([A])}}}return _(x),new n.Token(v,x,"language-"+v,y)}var m={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};n.hooks.add("after-tokenize",function(y){if(!(y.language in m))return;function w(v){for(var h=0,S=v.length;h]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),n.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete n.languages.typescript.parameter,delete n.languages.typescript["literal-property"];var r=n.languages.extend("typescript",{});delete r["class-name"],n.languages.typescript["class-name"].inside=r,n.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:r}}}}),n.languages.ts=n.languages.typescript})(t)}return jS}var zS,TD;function Qye(){if(TD)return zS;TD=1;var e=Rh(),t=OA();zS=n,n.displayName="jsdoc",n.aliases=[];function n(r){r.register(e),r.register(t),function(a){var o=a.languages.javascript,i=/\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/.source,s="(@(?:arg|argument|param|property)\\s+(?:"+i+"\\s+)?)";a.languages.jsdoc=a.languages.extend("javadoclike",{parameter:{pattern:RegExp(s+/(?:(?!\s)[$\w\xA0-\uFFFF.])+(?=\s|$)/.source),lookbehind:!0,inside:{punctuation:/\./}}}),a.languages.insertBefore("jsdoc","keyword",{"optional-parameter":{pattern:RegExp(s+/\[(?:(?!\s)[$\w\xA0-\uFFFF.])+(?:=[^[\]]+)?\](?=\s|$)/.source),lookbehind:!0,inside:{parameter:{pattern:/(^\[)[$\w\xA0-\uFFFF\.]+/,lookbehind:!0,inside:{punctuation:/\./}},code:{pattern:/(=)[\s\S]*(?=\]$)/,lookbehind:!0,inside:o,alias:"language-javascript"},punctuation:/[=[\]]/}},"class-name":[{pattern:RegExp(/(@(?:augments|class|extends|interface|memberof!?|template|this|typedef)\s+(?:\s+)?)[A-Z]\w*(?:\.[A-Z]\w*)*/.source.replace(//g,function(){return i})),lookbehind:!0,inside:{punctuation:/\./}},{pattern:RegExp("(@[a-z]+\\s+)"+i),lookbehind:!0,inside:{string:o.string,number:o.number,boolean:o.boolean,keyword:a.languages.typescript.keyword,operator:/=>|\.\.\.|[&|?:*]/,punctuation:/[.,;=<>{}()[\]]/}}],example:{pattern:/(@example\s+(?!\s))(?:[^@\s]|\s+(?!\s))+?(?=\s*(?:\*\s*)?(?:@\w|\*\/))/,lookbehind:!0,inside:{code:{pattern:/^([\t ]*(?:\*\s*)?)\S.*$/m,lookbehind:!0,inside:o,alias:"language-javascript"}}}}),a.languages.javadoclike.addSupport("javascript",a.languages.jsdoc)}(r)}return zS}var US,RD;function DA(){if(RD)return US;RD=1,US=e,e.displayName="json",e.aliases=["webmanifest"];function e(t){t.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"}},t.languages.webmanifest=t.languages.json}return US}var BS,ND;function Jye(){if(ND)return BS;ND=1;var e=DA();BS=t,t.displayName="json5",t.aliases=[];function t(n){n.register(e),function(r){var a=/("|')(?:\\(?:\r\n?|\n|.)|(?!\1)[^\\\r\n])*\1/;r.languages.json5=r.languages.extend("json",{property:[{pattern:RegExp(a.source+"(?=\\s*:)"),greedy:!0},{pattern:/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/,alias:"unquoted"}],string:{pattern:a,greedy:!0},number:/[+-]?\b(?:NaN|Infinity|0x[a-fA-F\d]+)\b|[+-]?(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[eE][+-]?\d+\b)?/})}(n)}return BS}var HS,ID;function eve(){if(ID)return HS;ID=1;var e=DA();HS=t,t.displayName="jsonp",t.aliases=[];function t(n){n.register(e),n.languages.jsonp=n.languages.extend("json",{punctuation:/[{}[\]();,.]/}),n.languages.insertBefore("jsonp","punctuation",{function:/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*\()/})}return HS}var VS,OD;function tve(){if(OD)return VS;OD=1,VS=e,e.displayName="jsstacktrace",e.aliases=[];function e(t){t.languages.jsstacktrace={"error-message":{pattern:/^\S.*/m,alias:"string"},"stack-frame":{pattern:/(^[ \t]+)at[ \t].*/m,lookbehind:!0,inside:{"not-my-code":{pattern:/^at[ \t]+(?!\s)(?:node\.js||.*(?:node_modules|\(\)|\(|$|\(internal\/|\(node\.js)).*/m,alias:"comment"},filename:{pattern:/(\bat\s+(?!\s)|\()(?:[a-zA-Z]:)?[^():]+(?=:)/,lookbehind:!0,alias:"url"},function:{pattern:/(\bat\s+(?:new\s+)?)(?!\s)[_$a-zA-Z\xA0-\uFFFF<][.$\w\xA0-\uFFFF<>]*/,lookbehind:!0,inside:{punctuation:/\./}},punctuation:/[()]/,keyword:/\b(?:at|new)\b/,alias:{pattern:/\[(?:as\s+)?(?!\s)[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*\]/,alias:"variable"},"line-number":{pattern:/:\d+(?::\d+)?\b/,alias:"number",inside:{punctuation:/:/}}}}}}return VS}var qS,DD;function sz(){if(DD)return qS;DD=1,qS=e,e.displayName="jsx",e.aliases=[];function e(t){(function(n){var r=n.util.clone(n.languages.javascript),a=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,o=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,i=/(?:\{*\.{3}(?:[^{}]|)*\})/.source;function s(u,d){return u=u.replace(//g,function(){return a}).replace(//g,function(){return o}).replace(//g,function(){return i}),RegExp(u,d)}i=s(i).source,n.languages.jsx=n.languages.extend("markup",r),n.languages.jsx.tag.pattern=s(/<\/?(?:[\w.:-]+(?:+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|))?|))**\/?)?>/.source),n.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,n.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,n.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,n.languages.jsx.tag.inside.comment=r.comment,n.languages.insertBefore("inside","attr-name",{spread:{pattern:s(//.source),inside:n.languages.jsx}},n.languages.jsx.tag),n.languages.insertBefore("inside","special-attr",{script:{pattern:s(/=/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:n.languages.jsx}}},n.languages.jsx.tag);var l=function(u){return u?typeof u=="string"?u:typeof u.content=="string"?u.content:u.content.map(l).join(""):""},c=function(u){for(var d=[],g=0;g0&&d[d.length-1].tagName===l(m.content[0].content[1])&&d.pop():m.content[m.content.length-1].content==="/>"||d.push({tagName:l(m.content[0].content[1]),openedBraces:0}):d.length>0&&m.type==="punctuation"&&m.content==="{"?d[d.length-1].openedBraces++:d.length>0&&d[d.length-1].openedBraces>0&&m.type==="punctuation"&&m.content==="}"?d[d.length-1].openedBraces--:b=!0),(b||typeof m=="string")&&d.length>0&&d[d.length-1].openedBraces===0){var y=l(m);g0&&(typeof u[g-1]=="string"||u[g-1].type==="plain-text")&&(y=l(u[g-1])+y,u.splice(g-1,1),g--),u[g]=new n.Token("plain-text",y,null,y)}m.content&&typeof m.content!="string"&&c(m.content)}};n.hooks.add("after-tokenize",function(u){u.language!=="jsx"&&u.language!=="tsx"||c(u.tokens)})})(t)}return qS}var GS,LD;function nve(){if(LD)return GS;LD=1,GS=e,e.displayName="julia",e.aliases=[];function e(t){t.languages.julia={comment:{pattern:/(^|[^\\])(?:#=(?:[^#=]|=(?!#)|#(?!=)|#=(?:[^#=]|=(?!#)|#(?!=))*=#)*=#|#.*)/,lookbehind:!0},regex:{pattern:/r"(?:\\.|[^"\\\r\n])*"[imsx]{0,4}/,greedy:!0},string:{pattern:/"""[\s\S]+?"""|(?:\b\w+)?"(?:\\.|[^"\\\r\n])*"|`(?:[^\\`\r\n]|\\.)*`/,greedy:!0},char:{pattern:/(^|[^\w'])'(?:\\[^\r\n][^'\r\n]*|[^\\\r\n])'/,lookbehind:!0,greedy:!0},keyword:/\b(?:abstract|baremodule|begin|bitstype|break|catch|ccall|const|continue|do|else|elseif|end|export|finally|for|function|global|if|immutable|import|importall|in|let|local|macro|module|print|println|quote|return|struct|try|type|typealias|using|while)\b/,boolean:/\b(?:false|true)\b/,number:/(?:\b(?=\d)|\B(?=\.))(?:0[box])?(?:[\da-f]+(?:_[\da-f]+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[efp][+-]?\d+(?:_\d+)*)?j?/i,operator:/&&|\|\||[-+*^%÷⊻&$\\]=?|\/[\/=]?|!=?=?|\|[=>]?|<(?:<=?|[=:|])?|>(?:=|>>?=?)?|==?=?|[~≠≤≥'√∛]/,punctuation:/::?|[{}[\]();,.?]/,constant:/\b(?:(?:Inf|NaN)(?:16|32|64)?|im|pi)\b|[πℯ]/}}return GS}var WS,MD;function rve(){if(MD)return WS;MD=1,WS=e,e.displayName="keepalived",e.aliases=[];function e(t){t.languages.keepalived={comment:{pattern:/[#!].*/,greedy:!0},string:{pattern:/(^|[^\\])(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/,lookbehind:!0,greedy:!0},ip:{pattern:RegExp(/\b(?:(?:(?:[\da-f]{1,4}:){7}[\da-f]{1,4}|(?:[\da-f]{1,4}:){6}:[\da-f]{1,4}|(?:[\da-f]{1,4}:){5}:(?:[\da-f]{1,4}:)?[\da-f]{1,4}|(?:[\da-f]{1,4}:){4}:(?:[\da-f]{1,4}:){0,2}[\da-f]{1,4}|(?:[\da-f]{1,4}:){3}:(?:[\da-f]{1,4}:){0,3}[\da-f]{1,4}|(?:[\da-f]{1,4}:){2}:(?:[\da-f]{1,4}:){0,4}[\da-f]{1,4}|(?:[\da-f]{1,4}:){6}|(?:[\da-f]{1,4}:){0,5}:|::(?:[\da-f]{1,4}:){0,5}|[\da-f]{1,4}::(?:[\da-f]{1,4}:){0,5}[\da-f]{1,4}|::(?:[\da-f]{1,4}:){0,6}[\da-f]{1,4}|(?:[\da-f]{1,4}:){1,7}:)(?:\/\d{1,3})?|(?:\/\d{1,2})?)\b/.source.replace(//g,function(){return/(?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d))/.source}),"i"),alias:"number"},path:{pattern:/(\s)\/(?:[^\/\s]+\/)*[^\/\s]*|\b[a-zA-Z]:\\(?:[^\\\s]+\\)*[^\\\s]*/,lookbehind:!0,alias:"string"},variable:/\$\{?\w+\}?/,email:{pattern:/[\w-]+@[\w-]+(?:\.[\w-]{2,3}){1,2}/,alias:"string"},"conditional-configuration":{pattern:/@\^?[\w-]+/,alias:"variable"},operator:/=/,property:/\b(?:BFD_CHECK|DNS_CHECK|FILE_CHECK|HTTP_GET|MISC_CHECK|NAME|PING_CHECK|SCRIPTS|SMTP_CHECK|SSL|SSL_GET|TCP_CHECK|UDP_CHECK|accept|advert_int|alpha|auth_pass|auth_type|authentication|bfd_cpu_affinity|bfd_instance|bfd_no_swap|bfd_priority|bfd_process_name|bfd_rlimit_rttime|bfd_rt_priority|bind_if|bind_port|bindto|ca|certificate|check_unicast_src|checker|checker_cpu_affinity|checker_log_all_failures|checker_no_swap|checker_priority|checker_rlimit_rttime|checker_rt_priority|child_wait_time|connect_ip|connect_port|connect_timeout|dbus_service_name|debug|default_interface|delay|delay_before_retry|delay_loop|digest|dont_track_primary|dynamic|dynamic_interfaces|enable_(?:dbus|script_security|sni|snmp_checker|snmp_rfc|snmp_rfcv2|snmp_rfcv3|snmp_vrrp|traps)|end|fall|fast_recovery|file|flag-[123]|fork_delay|full_command|fwmark|garp_group|garp_interval|garp_lower_prio_delay|garp_lower_prio_repeat|garp_master_delay|garp_master_refresh|garp_master_refresh_repeat|garp_master_repeat|global_defs|global_tracking|gna_interval|group|ha_suspend|hashed|helo_name|higher_prio_send_advert|hoplimit|http_protocol|hysteresis|idle_tx|include|inhibit_on_failure|init_fail|init_file|instance|interface|interfaces|interval|ip_family|ipvs_process_name|keepalived.conf|kernel_rx_buf_size|key|linkbeat_interfaces|linkbeat_use_polling|log_all_failures|log_unknown_vrids|lower_prio_no_advert|lthreshold|lvs_flush|lvs_flush_onstop|lvs_method|lvs_netlink_cmd_rcv_bufs|lvs_netlink_cmd_rcv_bufs_force|lvs_netlink_monitor_rcv_bufs|lvs_netlink_monitor_rcv_bufs_force|lvs_notify_fifo|lvs_notify_fifo_script|lvs_sched|lvs_sync_daemon|max_auto_priority|max_hops|mcast_src_ip|mh-fallback|mh-port|min_auto_priority_delay|min_rx|min_tx|misc_dynamic|misc_path|misc_timeout|multiplier|name|namespace_with_ipsets|native_ipv6|neighbor_ip|net_namespace|net_namespace_ipvs|nftables|nftables_counters|nftables_ifindex|nftables_priority|no_accept|no_checker_emails|no_email_faults|nopreempt|notification_email|notification_email_from|notify|notify_backup|notify_deleted|notify_down|notify_fault|notify_fifo|notify_fifo_script|notify_master|notify_master_rx_lower_pri|notify_priority_changes|notify_stop|notify_up|old_unicast_checksum|omega|ops|param_match|passive|password|path|persistence_engine|persistence_granularity|persistence_timeout|preempt|preempt_delay|priority|process|process_monitor_rcv_bufs|process_monitor_rcv_bufs_force|process_name|process_names|promote_secondaries|protocol|proxy_arp|proxy_arp_pvlan|quorum|quorum_down|quorum_max|quorum_up|random_seed|real_server|regex|regex_max_offset|regex_min_offset|regex_no_match|regex_options|regex_stack|reload_repeat|reload_time_file|require_reply|retry|rise|router_id|rs_init_notifies|script|script_user|sh-fallback|sh-port|shutdown_script|shutdown_script_timeout|skip_check_adv_addr|smtp_alert|smtp_alert_checker|smtp_alert_vrrp|smtp_connect_timeout|smtp_helo_name|smtp_server|snmp_socket|sorry_server|sorry_server_inhibit|sorry_server_lvs_method|source_ip|start|startup_script|startup_script_timeout|state|static_ipaddress|static_routes|static_rules|status_code|step|strict_mode|sync_group_tracking_weight|terminate_delay|timeout|track_bfd|track_file|track_group|track_interface|track_process|track_script|track_src_ip|ttl|type|umask|unicast_peer|unicast_src_ip|unicast_ttl|url|use_ipvlan|use_pid_dir|use_vmac|user|uthreshold|val[123]|version|virtual_ipaddress|virtual_ipaddress_excluded|virtual_router_id|virtual_routes|virtual_rules|virtual_server|virtual_server_group|virtualhost|vmac_xmit_base|vrrp|vrrp_(?:check_unicast_src|cpu_affinity|garp_interval|garp_lower_prio_delay|garp_lower_prio_repeat|garp_master_delay|garp_master_refresh|garp_master_refresh_repeat|garp_master_repeat|gna_interval|higher_prio_send_advert|instance|ipsets|iptables|lower_prio_no_advert|mcast_group4|mcast_group6|min_garp|netlink_cmd_rcv_bufs|netlink_cmd_rcv_bufs_force|netlink_monitor_rcv_bufs|netlink_monitor_rcv_bufs_force|no_swap|notify_fifo|notify_fifo_script|notify_priority_changes|priority|process_name|rlimit_rttime|rt_priority|rx_bufs_multiplier|rx_bufs_policy|script|skip_check_adv_addr|startup_delay|strict|sync_group|track_process|version)|warmup|weight)\b/,constant:/\b(?:A|AAAA|AH|BACKUP|CNAME|DR|MASTER|MX|NAT|NS|PASS|SCTP|SOA|TCP|TUN|TXT|UDP|dh|fo|lblc|lblcr|lc|mh|nq|ovf|rr|sed|sh|wlc|wrr)\b/,number:{pattern:/(^|[^\w.-])-?\d+(?:\.\d+)?/,lookbehind:!0},boolean:/\b(?:false|no|off|on|true|yes)\b/,punctuation:/[\{\}]/}}return WS}var KS,PD;function ave(){if(PD)return KS;PD=1,KS=e,e.displayName="keyman",e.aliases=[];function e(t){t.languages.keyman={comment:{pattern:/\bc .*/i,greedy:!0},string:{pattern:/"[^"\r\n]*"|'[^'\r\n]*'/,greedy:!0},"virtual-key":{pattern:/\[\s*(?:(?:ALT|CAPS|CTRL|LALT|LCTRL|NCAPS|RALT|RCTRL|SHIFT)\s+)*(?:[TKU]_[\w?]+|[A-E]\d\d?|"[^"\r\n]*"|'[^'\r\n]*')\s*\]/i,greedy:!0,alias:"function"},"header-keyword":{pattern:/&\w+/,alias:"bold"},"header-statement":{pattern:/\b(?:bitmap|bitmaps|caps always off|caps on only|copyright|hotkey|language|layout|message|name|shift frees caps|version)\b/i,alias:"bold"},"rule-keyword":{pattern:/\b(?:any|baselayout|beep|call|context|deadkey|dk|if|index|layer|notany|nul|outs|platform|reset|return|save|set|store|use)\b/i,alias:"keyword"},"structural-keyword":{pattern:/\b(?:ansi|begin|group|match|nomatch|unicode|using keys)\b/i,alias:"keyword"},"compile-target":{pattern:/\$(?:keyman|keymanonly|keymanweb|kmfl|weaver):/i,alias:"property"},number:/\b(?:U\+[\dA-F]+|d\d+|x[\da-f]+|\d+)\b/i,operator:/[+>\\$]|\.\./,punctuation:/[()=,]/}}return KS}var YS,$D;function ove(){if($D)return YS;$D=1,YS=e,e.displayName="kotlin",e.aliases=["kt","kts"];function e(t){(function(n){n.languages.kotlin=n.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[{pattern:/(?:`[^\r\n`]+`|\b\w+)(?=\s*\()/,greedy:!0},{pattern:/(\.)(?:`[^\r\n`]+`|\w+)(?=\s*\{)/,lookbehind:!0,greedy:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete n.languages.kotlin["class-name"];var r={"interpolation-punctuation":{pattern:/^\$\{?|\}$/,alias:"punctuation"},expression:{pattern:/[\s\S]+/,inside:n.languages.kotlin}};n.languages.insertBefore("kotlin","string",{"string-literal":[{pattern:/"""(?:[^$]|\$(?:(?!\{)|\{[^{}]*\}))*?"""/,alias:"multiline",inside:{interpolation:{pattern:/\$(?:[a-z_]\w*|\{[^{}]*\})/i,inside:r},string:/[\s\S]+/}},{pattern:/"(?:[^"\\\r\n$]|\\.|\$(?:(?!\{)|\{[^{}]*\}))*"/,alias:"singleline",inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:[a-z_]\w*|\{[^{}]*\})/i,lookbehind:!0,inside:r},string:/[\s\S]+/}}],char:{pattern:/'(?:[^'\\\r\n]|\\(?:.|u[a-fA-F0-9]{0,4}))'/,greedy:!0}}),delete n.languages.kotlin.string,n.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),n.languages.insertBefore("kotlin","function",{label:{pattern:/\b\w+@|@\w+\b/,alias:"symbol"}}),n.languages.kt=n.languages.kotlin,n.languages.kts=n.languages.kotlin})(t)}return YS}var ZS,FD;function ive(){if(FD)return ZS;FD=1,ZS=e,e.displayName="kumir",e.aliases=["kum"];function e(t){(function(n){var r=/\s\x00-\x1f\x22-\x2f\x3a-\x3f\x5b-\x5e\x60\x7b-\x7e/.source;function a(o,i){return RegExp(o.replace(//g,r),i)}n.languages.kumir={comment:{pattern:/\|.*/},prolog:{pattern:/#.*/,greedy:!0},string:{pattern:/"[^\n\r"]*"|'[^\n\r']*'/,greedy:!0},boolean:{pattern:a(/(^|[])(?:да|нет)(?=[]|$)/.source),lookbehind:!0},"operator-word":{pattern:a(/(^|[])(?:и|или|не)(?=[]|$)/.source),lookbehind:!0,alias:"keyword"},"system-variable":{pattern:a(/(^|[])знач(?=[]|$)/.source),lookbehind:!0,alias:"keyword"},type:[{pattern:a(/(^|[])(?:вещ|лит|лог|сим|цел)(?:\x20*таб)?(?=[]|$)/.source),lookbehind:!0,alias:"builtin"},{pattern:a(/(^|[])(?:компл|сканкод|файл|цвет)(?=[]|$)/.source),lookbehind:!0,alias:"important"}],keyword:{pattern:a(/(^|[])(?:алг|арг(?:\x20*рез)?|ввод|ВКЛЮЧИТЬ|вс[её]|выбор|вывод|выход|дано|для|до|дс|если|иначе|исп|использовать|кон(?:(?:\x20+|_)исп)?|кц(?:(?:\x20+|_)при)?|надо|нач|нс|нц|от|пауза|пока|при|раза?|рез|стоп|таб|то|утв|шаг)(?=[]|$)/.source),lookbehind:!0},name:{pattern:a(/(^|[])[^\d][^]*(?:\x20+[^]+)*(?=[]|$)/.source),lookbehind:!0},number:{pattern:a(/(^|[])(?:\B\$[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)(?=[]|$)/.source,"i"),lookbehind:!0},punctuation:/:=|[(),:;\[\]]/,"operator-char":{pattern:/\*\*?|<[=>]?|>=?|[-+/=]/,alias:"operator"}},n.languages.kum=n.languages.kumir})(t)}return ZS}var XS,jD;function sve(){if(jD)return XS;jD=1,XS=e,e.displayName="kusto",e.aliases=[];function e(t){t.languages.kusto={comment:{pattern:/\/\/.*/,greedy:!0},string:{pattern:/```[\s\S]*?```|[hH]?(?:"(?:[^\r\n\\"]|\\.)*"|'(?:[^\r\n\\']|\\.)*'|@(?:"[^\r\n"]*"|'[^\r\n']*'))/,greedy:!0},verb:{pattern:/(\|\s*)[a-z][\w-]*/i,lookbehind:!0,alias:"keyword"},command:{pattern:/\.[a-z][a-z\d-]*\b/,alias:"keyword"},"class-name":/\b(?:bool|datetime|decimal|dynamic|guid|int|long|real|string|timespan)\b/,keyword:/\b(?:access|alias|and|anti|as|asc|auto|between|by|(?:contains|(?:ends|starts)with|has(?:perfix|suffix)?)(?:_cs)?|database|declare|desc|external|from|fullouter|has_all|in|ingestion|inline|inner|innerunique|into|(?:left|right)(?:anti(?:semi)?|inner|outer|semi)?|let|like|local|not|of|on|or|pattern|print|query_parameters|range|restrict|schema|set|step|table|tables|to|view|where|with|matches\s+regex|nulls\s+(?:first|last))(?![\w-])/,boolean:/\b(?:false|null|true)\b/,function:/\b[a-z_]\w*(?=\s*\()/,datetime:[{pattern:/\b(?:(?:Fri|Friday|Mon|Monday|Sat|Saturday|Sun|Sunday|Thu|Thursday|Tue|Tuesday|Wed|Wednesday)\s*,\s*)?\d{1,2}(?:\s+|-)(?:Apr|Aug|Dec|Feb|Jan|Jul|Jun|Mar|May|Nov|Oct|Sep)(?:\s+|-)\d{2}\s+\d{2}:\d{2}(?::\d{2})?(?:\s*(?:\b(?:[A-Z]|(?:[ECMT][DS]|GM|U)T)|[+-]\d{4}))?\b/,alias:"number"},{pattern:/[+-]?\b(?:\d{4}-\d{2}-\d{2}(?:[ T]\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?)?|\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?)Z?/,alias:"number"}],number:/\b(?:0x[0-9A-Fa-f]+|\d+(?:\.\d+)?(?:[Ee][+-]?\d+)?)(?:(?:min|sec|[mnµ]s|[dhms]|microsecond|tick)\b)?|[+-]?\binf\b/,operator:/=>|[!=]~|[!=<>]=?|[-+*/%|]|\.\./,punctuation:/[()\[\]{},;.:]/}}return XS}var QS,zD;function lve(){if(zD)return QS;zD=1,QS=e,e.displayName="latex",e.aliases=["tex","context"];function e(t){(function(n){var r=/\\(?:[^a-z()[\]]|[a-z*]+)/i,a={"equation-command":{pattern:r,alias:"regex"}};n.languages.latex={comment:/%.*/,cdata:{pattern:/(\\begin\{((?:lstlisting|verbatim)\*?)\})[\s\S]*?(?=\\end\{\2\})/,lookbehind:!0},equation:[{pattern:/\$\$(?:\\[\s\S]|[^\\$])+\$\$|\$(?:\\[\s\S]|[^\\$])+\$|\\\([\s\S]*?\\\)|\\\[[\s\S]*?\\\]/,inside:a,alias:"string"},{pattern:/(\\begin\{((?:align|eqnarray|equation|gather|math|multline)\*?)\})[\s\S]*?(?=\\end\{\2\})/,lookbehind:!0,inside:a,alias:"string"}],keyword:{pattern:/(\\(?:begin|cite|documentclass|end|label|ref|usepackage)(?:\[[^\]]+\])?\{)[^}]+(?=\})/,lookbehind:!0},url:{pattern:/(\\url\{)[^}]+(?=\})/,lookbehind:!0},headline:{pattern:/(\\(?:chapter|frametitle|paragraph|part|section|subparagraph|subsection|subsubparagraph|subsubsection|subsubsubparagraph)\*?(?:\[[^\]]+\])?\{)[^}]+(?=\})/,lookbehind:!0,alias:"class-name"},function:{pattern:r,alias:"selector"},punctuation:/[[\]{}&]/},n.languages.tex=n.languages.latex,n.languages.context=n.languages.latex})(t)}return QS}var JS,UD;function Nh(){if(UD)return JS;UD=1;var e=mr();JS=t,t.displayName="php",t.aliases=[];function t(n){n.register(e),function(r){var a=/\/\*[\s\S]*?\*\/|\/\/.*|#(?!\[).*/,o=[{pattern:/\b(?:false|true)\b/i,alias:"boolean"},{pattern:/(::\s*)\b[a-z_]\w*\b(?!\s*\()/i,greedy:!0,lookbehind:!0},{pattern:/(\b(?:case|const)\s+)\b[a-z_]\w*(?=\s*[;=])/i,greedy:!0,lookbehind:!0},/\b(?:null)\b/i,/\b[A-Z_][A-Z0-9_]*\b(?!\s*\()/],i=/\b0b[01]+(?:_[01]+)*\b|\b0o[0-7]+(?:_[0-7]+)*\b|\b0x[\da-f]+(?:_[\da-f]+)*\b|(?:\b\d+(?:_\d+)*\.?(?:\d+(?:_\d+)*)?|\B\.\d+)(?:e[+-]?\d+)?/i,s=/|\?\?=?|\.{3}|\??->|[!=]=?=?|::|\*\*=?|--|\+\+|&&|\|\||<<|>>|[?~]|[/^|%*&<>.+-]=?/,l=/[{}\[\](),:;]/;r.languages.php={delimiter:{pattern:/\?>$|^<\?(?:php(?=\s)|=)?/i,alias:"important"},comment:a,variable:/\$+(?:\w+\b|(?=\{))/,package:{pattern:/(namespace\s+|use\s+(?:function\s+)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,lookbehind:!0,inside:{punctuation:/\\/}},"class-name-definition":{pattern:/(\b(?:class|enum|interface|trait)\s+)\b[a-z_]\w*(?!\\)\b/i,lookbehind:!0,alias:"class-name"},"function-definition":{pattern:/(\bfunction\s+)[a-z_]\w*(?=\s*\()/i,lookbehind:!0,alias:"function"},keyword:[{pattern:/(\(\s*)\b(?:array|bool|boolean|float|int|integer|object|string)\b(?=\s*\))/i,alias:"type-casting",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|object|self|static|string)\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|object|self|static|string|void)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/\b(?:array(?!\s*\()|bool|float|int|iterable|mixed|object|string|void)\b/i,alias:"type-declaration",greedy:!0},{pattern:/(\|\s*)(?:false|null)\b|\b(?:false|null)(?=\s*\|)/i,alias:"type-declaration",greedy:!0,lookbehind:!0},{pattern:/\b(?:parent|self|static)(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(\byield\s+)from\b/i,lookbehind:!0},/\bclass\b/i,{pattern:/((?:^|[^\s>:]|(?:^|[^-])>|(?:^|[^:]):)\s*)\b(?:abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|match|namespace|new|or|parent|print|private|protected|public|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield|__halt_compiler)\b/i,lookbehind:!0}],"argument-name":{pattern:/([(,]\s+)\b[a-z_]\w*(?=\s*:(?!:))/i,lookbehind:!0},"class-name":[{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self|\s+static))\s+|\bcatch\s*\()\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/(\|\s*)\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/\b[a-z_]\w*(?!\\)\b(?=\s*\|)/i,greedy:!0},{pattern:/(\|\s*)(?:\\?\b[a-z_]\w*)+\b/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(?:\\?\b[a-z_]\w*)+\b(?=\s*\|)/i,alias:"class-name-fully-qualified",greedy:!0,inside:{punctuation:/\\/}},{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self\b|\s+static\b))\s+|\bcatch\s*\()(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*\$)/i,alias:"type-declaration",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-declaration"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*::)/i,alias:["class-name-fully-qualified","static-context"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/([(,?]\s*)[a-z_]\w*(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-hint"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b[a-z_]\w*(?!\\)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:["class-name-fully-qualified","return-type"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:o,function:{pattern:/(^|[^\\\w])\\?[a-z_](?:[\w\\]*\w)?(?=\s*\()/i,lookbehind:!0,inside:{punctuation:/\\/}},property:{pattern:/(->\s*)\w+/,lookbehind:!0},number:i,operator:s,punctuation:l};var c={pattern:/\{\$(?:\{(?:\{[^{}]+\}|[^{}]+)\}|[^{}])+\}|(^|[^\\{])\$+(?:\w+(?:\[[^\r\n\[\]]+\]|->\w+)?)/,lookbehind:!0,inside:r.languages.php},u=[{pattern:/<<<'([^']+)'[\r\n](?:.*[\r\n])*?\1;/,alias:"nowdoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<'?|[';]$/}}}},{pattern:/<<<(?:"([^"]+)"[\r\n](?:.*[\r\n])*?\1;|([a-z_]\w*)[\r\n](?:.*[\r\n])*?\2;)/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<"?|[";]$/}},interpolation:c}},{pattern:/`(?:\\[\s\S]|[^\\`])*`/,alias:"backtick-quoted-string",greedy:!0},{pattern:/'(?:\\[\s\S]|[^\\'])*'/,alias:"single-quoted-string",greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,alias:"double-quoted-string",greedy:!0,inside:{interpolation:c}}];r.languages.insertBefore("php","variable",{string:u,attribute:{pattern:/#\[(?:[^"'\/#]|\/(?![*/])|\/\/.*$|#(?!\[).*$|\/\*(?:[^*]|\*(?!\/))*\*\/|"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*')+\](?=\s*[a-z$#])/im,greedy:!0,inside:{"attribute-content":{pattern:/^(#\[)[\s\S]+(?=\]$)/,lookbehind:!0,inside:{comment:a,string:u,"attribute-class-name":[{pattern:/([^:]|^)\b[a-z_]\w*(?!\\)\b/i,alias:"class-name",greedy:!0,lookbehind:!0},{pattern:/([^:]|^)(?:\\?\b[a-z_]\w*)+/i,alias:["class-name","class-name-fully-qualified"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:o,number:i,operator:s,punctuation:l}},delimiter:{pattern:/^#\[|\]$/,alias:"punctuation"}}}}),r.hooks.add("before-tokenize",function(d){if(/<\?/.test(d.code)){var g=/<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#(?!\[))(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|#\[|\/\*(?:[^*]|\*(?!\/))*(?:\*\/|$))*?(?:\?>|$)/g;r.languages["markup-templating"].buildPlaceholders(d,"php",g)}}),r.hooks.add("after-tokenize",function(d){r.languages["markup-templating"].tokenizePlaceholders(d,"php")})}(n)}return JS}var ew,BD;function cve(){if(BD)return ew;BD=1;var e=mr(),t=Nh();ew=n,n.displayName="latte",n.aliases=[];function n(r){r.register(e),r.register(t),function(a){a.languages.latte={comment:/^\{\*[\s\S]*/,"latte-tag":{pattern:/(^\{(?:\/(?=[a-z]))?)(?:[=_]|[a-z]\w*\b(?!\())/i,lookbehind:!0,alias:"important"},delimiter:{pattern:/^\{\/?|\}$/,alias:"punctuation"},php:{pattern:/\S(?:[\s\S]*\S)?/,alias:"language-php",inside:a.languages.php}};var o=a.languages.extend("markup",{});a.languages.insertBefore("inside","attr-value",{"n-attr":{pattern:/n:[\w-]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+))?/,inside:{"attr-name":{pattern:/^[^\s=]+/,alias:"important"},"attr-value":{pattern:/=[\s\S]+/,inside:{punctuation:[/^=/,{pattern:/^(\s*)["']|["']$/,lookbehind:!0}],php:{pattern:/\S(?:[\s\S]*\S)?/,inside:a.languages.php}}}}}},o.tag),a.hooks.add("before-tokenize",function(i){if(i.language==="latte"){var s=/\{\*[\s\S]*?\*\}|\{[^'"\s{}*](?:[^"'/{}]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|\/\*(?:[^*]|\*(?!\/))*\*\/)*\}/g;a.languages["markup-templating"].buildPlaceholders(i,"latte",s),i.grammar=o}}),a.hooks.add("after-tokenize",function(i){a.languages["markup-templating"].tokenizePlaceholders(i,"latte")})}(r)}return ew}var tw,HD;function uve(){if(HD)return tw;HD=1,tw=e,e.displayName="less",e.aliases=[];function e(t){t.languages.less=t.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),t.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}})}return tw}var nw,VD;function LA(){if(VD)return nw;VD=1,nw=e,e.displayName="scheme",e.aliases=[];function e(t){(function(n){n.languages.scheme={comment:/;.*|#;\s*(?:\((?:[^()]|\([^()]*\))*\)|\[(?:[^\[\]]|\[[^\[\]]*\])*\])|#\|(?:[^#|]|#(?!\|)|\|(?!#)|#\|(?:[^#|]|#(?!\|)|\|(?!#))*\|#)*\|#/,string:{pattern:/"(?:[^"\\]|\\.)*"/,greedy:!0},symbol:{pattern:/'[^()\[\]#'\s]+/,greedy:!0},char:{pattern:/#\\(?:[ux][a-fA-F\d]+\b|[-a-zA-Z]+\b|[\uD800-\uDBFF][\uDC00-\uDFFF]|\S)/,greedy:!0},"lambda-parameter":[{pattern:/((?:^|[^'`#])[(\[]lambda\s+)(?:[^|()\[\]'\s]+|\|(?:[^\\|]|\\.)*\|)/,lookbehind:!0},{pattern:/((?:^|[^'`#])[(\[]lambda\s+[(\[])[^()\[\]']+/,lookbehind:!0}],keyword:{pattern:/((?:^|[^'`#])[(\[])(?:begin|case(?:-lambda)?|cond(?:-expand)?|define(?:-library|-macro|-record-type|-syntax|-values)?|defmacro|delay(?:-force)?|do|else|except|export|guard|if|import|include(?:-ci|-library-declarations)?|lambda|let(?:rec)?(?:-syntax|-values|\*)?|let\*-values|only|parameterize|prefix|(?:quasi-?)?quote|rename|set!|syntax-(?:case|rules)|unless|unquote(?:-splicing)?|when)(?=[()\[\]\s]|$)/,lookbehind:!0},builtin:{pattern:/((?:^|[^'`#])[(\[])(?:abs|and|append|apply|assoc|ass[qv]|binary-port\?|boolean=?\?|bytevector(?:-append|-copy|-copy!|-length|-u8-ref|-u8-set!|\?)?|caar|cadr|call-with-(?:current-continuation|port|values)|call\/cc|car|cdar|cddr|cdr|ceiling|char(?:->integer|-ready\?|\?|<\?|<=\?|=\?|>\?|>=\?)|close-(?:input-port|output-port|port)|complex\?|cons|current-(?:error|input|output)-port|denominator|dynamic-wind|eof-object\??|eq\?|equal\?|eqv\?|error|error-object(?:-irritants|-message|\?)|eval|even\?|exact(?:-integer-sqrt|-integer\?|\?)?|expt|features|file-error\?|floor(?:-quotient|-remainder|\/)?|flush-output-port|for-each|gcd|get-output-(?:bytevector|string)|inexact\??|input-port(?:-open\?|\?)|integer(?:->char|\?)|lcm|length|list(?:->string|->vector|-copy|-ref|-set!|-tail|\?)?|make-(?:bytevector|list|parameter|string|vector)|map|max|member|memq|memv|min|modulo|negative\?|newline|not|null\?|number(?:->string|\?)|numerator|odd\?|open-(?:input|output)-(?:bytevector|string)|or|output-port(?:-open\?|\?)|pair\?|peek-char|peek-u8|port\?|positive\?|procedure\?|quotient|raise|raise-continuable|rational\?|rationalize|read-(?:bytevector|bytevector!|char|error\?|line|string|u8)|real\?|remainder|reverse|round|set-c[ad]r!|square|string(?:->list|->number|->symbol|->utf8|->vector|-append|-copy|-copy!|-fill!|-for-each|-length|-map|-ref|-set!|\?|<\?|<=\?|=\?|>\?|>=\?)?|substring|symbol(?:->string|\?|=\?)|syntax-error|textual-port\?|truncate(?:-quotient|-remainder|\/)?|u8-ready\?|utf8->string|values|vector(?:->list|->string|-append|-copy|-copy!|-fill!|-for-each|-length|-map|-ref|-set!|\?)?|with-exception-handler|write-(?:bytevector|char|string|u8)|zero\?)(?=[()\[\]\s]|$)/,lookbehind:!0},operator:{pattern:/((?:^|[^'`#])[(\[])(?:[-+*%/]|[<>]=?|=>?)(?=[()\[\]\s]|$)/,lookbehind:!0},number:{pattern:RegExp(r({"":/\d+(?:\/\d+)|(?:\d+(?:\.\d*)?|\.\d+)(?:[esfdl][+-]?\d+)?/.source,"":/[+-]?|[+-](?:inf|nan)\.0/.source,"":/[+-](?:|(?:inf|nan)\.0)?i/.source,"":/(?:@|)?|/.source,"":/(?:#d(?:#[ei])?|#[ei](?:#d)?)?/.source,"":/[0-9a-f]+(?:\/[0-9a-f]+)?/.source,"":/[+-]?|[+-](?:inf|nan)\.0/.source,"":/[+-](?:|(?:inf|nan)\.0)?i/.source,"":/(?:@|)?|/.source,"":/#[box](?:#[ei])?|(?:#[ei])?#[box]/.source,"":/(^|[()\[\]\s])(?:|)(?=[()\[\]\s]|$)/.source}),"i"),lookbehind:!0},boolean:{pattern:/(^|[()\[\]\s])#(?:[ft]|false|true)(?=[()\[\]\s]|$)/,lookbehind:!0},function:{pattern:/((?:^|[^'`#])[(\[])(?:[^|()\[\]'\s]+|\|(?:[^\\|]|\\.)*\|)(?=[()\[\]\s]|$)/,lookbehind:!0},identifier:{pattern:/(^|[()\[\]\s])\|(?:[^\\|]|\\.)*\|(?=[()\[\]\s]|$)/,lookbehind:!0,greedy:!0},punctuation:/[()\[\]']/};function r(a){for(var o in a)a[o]=a[o].replace(/<[\w\s]+>/g,function(i){return"(?:"+a[i].trim()+")"});return a[o]}})(t)}return nw}var rw,qD;function dve(){if(qD)return rw;qD=1;var e=LA();rw=t,t.displayName="lilypond",t.aliases=[];function t(n){n.register(e),function(r){for(var a=/\((?:[^();"#\\]|\\[\s\S]|;.*(?!.)|"(?:[^"\\]|\\.)*"|#(?:\{(?:(?!#\})[\s\S])*#\}|[^{])|)*\)/.source,o=5,i=0;i/g,function(){return a});a=a.replace(//g,/[^\s\S]/.source);var s=r.languages.lilypond={comment:/%(?:(?!\{).*|\{[\s\S]*?%\})/,"embedded-scheme":{pattern:RegExp(/(^|[=\s])#(?:"(?:[^"\\]|\\.)*"|[^\s()"]*(?:[^\s()]|))/.source.replace(//g,function(){return a}),"m"),lookbehind:!0,greedy:!0,inside:{scheme:{pattern:/^(#)[\s\S]+$/,lookbehind:!0,alias:"language-scheme",inside:{"embedded-lilypond":{pattern:/#\{[\s\S]*?#\}/,greedy:!0,inside:{punctuation:/^#\{|#\}$/,lilypond:{pattern:/[\s\S]+/,alias:"language-lilypond",inside:null}}},rest:r.languages.scheme}},punctuation:/#/}},string:{pattern:/"(?:[^"\\]|\\.)*"/,greedy:!0},"class-name":{pattern:/(\\new\s+)[\w-]+/,lookbehind:!0},keyword:{pattern:/\\[a-z][-\w]*/i,inside:{punctuation:/^\\/}},operator:/[=|]|<<|>>/,punctuation:{pattern:/(^|[a-z\d])(?:'+|,+|[_^]?-[_^]?(?:[-+^!>._]|(?=\d))|[_^]\.?|[.!])|[{}()[\]<>^~]|\\[()[\]<>\\!]|--|__/,lookbehind:!0},number:/\b\d+(?:\/\d+)?\b/};s["embedded-scheme"].inside.scheme.inside["embedded-lilypond"].inside.lilypond.inside=s,r.languages.ly=s}(n)}return rw}var aw,GD;function fve(){if(GD)return aw;GD=1;var e=mr();aw=t,t.displayName="liquid",t.aliases=[];function t(n){n.register(e),n.languages.liquid={comment:{pattern:/(^\{%\s*comment\s*%\})[\s\S]+(?=\{%\s*endcomment\s*%\}$)/,lookbehind:!0},delimiter:{pattern:/^\{(?:\{\{|[%\{])-?|-?(?:\}\}|[%\}])\}$/,alias:"punctuation"},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},keyword:/\b(?:as|assign|break|(?:end)?(?:capture|case|comment|for|form|if|paginate|raw|style|tablerow|unless)|continue|cycle|decrement|echo|else|elsif|in|include|increment|limit|liquid|offset|range|render|reversed|section|when|with)\b/,object:/\b(?:address|all_country_option_tags|article|block|blog|cart|checkout|collection|color|country|country_option_tags|currency|current_page|current_tags|customer|customer_address|date|discount_allocation|discount_application|external_video|filter|filter_value|font|forloop|fulfillment|generic_file|gift_card|group|handle|image|line_item|link|linklist|localization|location|measurement|media|metafield|model|model_source|order|page|page_description|page_image|page_title|part|policy|product|product_option|recommendations|request|robots|routes|rule|script|search|selling_plan|selling_plan_allocation|selling_plan_group|shipping_method|shop|shop_locale|sitemap|store_availability|tax_line|template|theme|transaction|unit_price_measurement|user_agent|variant|video|video_source)\b/,function:[{pattern:/(\|\s*)\w+/,lookbehind:!0,alias:"filter"},{pattern:/(\.\s*)(?:first|last|size)/,lookbehind:!0}],boolean:/\b(?:false|nil|true)\b/,range:{pattern:/\.\./,alias:"operator"},number:/\b\d+(?:\.\d+)?\b/,operator:/[!=]=|<>|[<>]=?|[|?:=-]|\b(?:and|contains(?=\s)|or)\b/,punctuation:/[.,\[\]()]/,empty:{pattern:/\bempty\b/,alias:"keyword"}},n.hooks.add("before-tokenize",function(r){var a=/\{%\s*comment\s*%\}[\s\S]*?\{%\s*endcomment\s*%\}|\{(?:%[\s\S]*?%|\{\{[\s\S]*?\}\}|\{[\s\S]*?\})\}/g,o=!1;n.languages["markup-templating"].buildPlaceholders(r,"liquid",a,function(i){var s=/^\{%-?\s*(\w+)/.exec(i);if(s){var l=s[1];if(l==="raw"&&!o)return o=!0,!0;if(l==="endraw")return o=!1,!0}return!o})}),n.hooks.add("after-tokenize",function(r){n.languages["markup-templating"].tokenizePlaceholders(r,"liquid")})}return aw}var ow,WD;function pve(){if(WD)return ow;WD=1,ow=e,e.displayName="lisp",e.aliases=[];function e(t){(function(n){function r(y){return RegExp(/(\()/.source+"(?:"+y+")"+/(?=[\s\)])/.source)}function a(y){return RegExp(/([\s([])/.source+"(?:"+y+")"+/(?=[\s)])/.source)}var o=/(?!\d)[-+*/~!@$%^=<>{}\w]+/.source,i="&"+o,s="(\\()",l="(?=\\))",c="(?=\\s)",u=/(?:[^()]|\((?:[^()]|\((?:[^()]|\((?:[^()]|\((?:[^()]|\([^()]*\))*\))*\))*\))*\))*/.source,d={heading:{pattern:/;;;.*/,alias:["comment","title"]},comment:/;.*/,string:{pattern:/"(?:[^"\\]|\\.)*"/,greedy:!0,inside:{argument:/[-A-Z]+(?=[.,\s])/,symbol:RegExp("`"+o+"'")}},"quoted-symbol":{pattern:RegExp("#?'"+o),alias:["variable","symbol"]},"lisp-property":{pattern:RegExp(":"+o),alias:"property"},splice:{pattern:RegExp(",@?"+o),alias:["symbol","variable"]},keyword:[{pattern:RegExp(s+"(?:and|(?:cl-)?letf|cl-loop|cond|cons|error|if|(?:lexical-)?let\\*?|message|not|null|or|provide|require|setq|unless|use-package|when|while)"+c),lookbehind:!0},{pattern:RegExp(s+"(?:append|by|collect|concat|do|finally|for|in|return)"+c),lookbehind:!0}],declare:{pattern:r(/declare/.source),lookbehind:!0,alias:"keyword"},interactive:{pattern:r(/interactive/.source),lookbehind:!0,alias:"keyword"},boolean:{pattern:a(/nil|t/.source),lookbehind:!0},number:{pattern:a(/[-+]?\d+(?:\.\d*)?/.source),lookbehind:!0},defvar:{pattern:RegExp(s+"def(?:const|custom|group|var)\\s+"+o),lookbehind:!0,inside:{keyword:/^def[a-z]+/,variable:RegExp(o)}},defun:{pattern:RegExp(s+/(?:cl-)?(?:defmacro|defun\*?)\s+/.source+o+/\s+\(/.source+u+/\)/.source),lookbehind:!0,greedy:!0,inside:{keyword:/^(?:cl-)?def\S+/,arguments:null,function:{pattern:RegExp("(^\\s)"+o),lookbehind:!0},punctuation:/[()]/}},lambda:{pattern:RegExp(s+"lambda\\s+\\(\\s*(?:&?"+o+"(?:\\s+&?"+o+")*\\s*)?\\)"),lookbehind:!0,greedy:!0,inside:{keyword:/^lambda/,arguments:null,punctuation:/[()]/}},car:{pattern:RegExp(s+o),lookbehind:!0},punctuation:[/(?:['`,]?\(|[)\[\]])/,{pattern:/(\s)\.(?=\s)/,lookbehind:!0}]},g={"lisp-marker":RegExp(i),varform:{pattern:RegExp(/\(/.source+o+/\s+(?=\S)/.source+u+/\)/.source),inside:d},argument:{pattern:RegExp(/(^|[\s(])/.source+o),lookbehind:!0,alias:"variable"},rest:d},m="\\S+(?:\\s+\\S+)*",b={pattern:RegExp(s+u+l),lookbehind:!0,inside:{"rest-vars":{pattern:RegExp("&(?:body|rest)\\s+"+m),inside:g},"other-marker-vars":{pattern:RegExp("&(?:aux|optional)\\s+"+m),inside:g},keys:{pattern:RegExp("&key\\s+"+m+"(?:\\s+&allow-other-keys)?"),inside:g},argument:{pattern:RegExp(o),alias:"variable"},punctuation:/[()]/}};d.lambda.inside.arguments=b,d.defun.inside.arguments=n.util.clone(b),d.defun.inside.arguments.inside.sublist=b,n.languages.lisp=d,n.languages.elisp=d,n.languages.emacs=d,n.languages["emacs-lisp"]=d})(t)}return ow}var iw,KD;function gve(){if(KD)return iw;KD=1,iw=e,e.displayName="livescript",e.aliases=[];function e(t){t.languages.livescript={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\])#.*/,lookbehind:!0}],"interpolated-string":{pattern:/(^|[^"])("""|")(?:\\[\s\S]|(?!\2)[^\\])*\2(?!")/,lookbehind:!0,greedy:!0,inside:{variable:{pattern:/(^|[^\\])#[a-z_](?:-?[a-z]|[\d_])*/m,lookbehind:!0},interpolation:{pattern:/(^|[^\\])#\{[^}]+\}/m,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^#\{|\}$/,alias:"variable"}}},string:/[\s\S]+/}},string:[{pattern:/('''|')(?:\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0},{pattern:/<\[[\s\S]*?\]>/,greedy:!0},/\\[^\s,;\])}]+/],regex:[{pattern:/\/\/(?:\[[^\r\n\]]*\]|\\.|(?!\/\/)[^\\\[])+\/\/[gimyu]{0,5}/,greedy:!0,inside:{comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0}}},{pattern:/\/(?:\[[^\r\n\]]*\]|\\.|[^/\\\r\n\[])+\/[gimyu]{0,5}/,greedy:!0}],keyword:{pattern:/(^|(?!-).)\b(?:break|case|catch|class|const|continue|default|do|else|extends|fallthrough|finally|for(?: ever)?|function|if|implements|it|let|loop|new|null|otherwise|own|return|super|switch|that|then|this|throw|try|unless|until|var|void|when|while|yield)(?!-)\b/m,lookbehind:!0},"keyword-operator":{pattern:/(^|[^-])\b(?:(?:delete|require|typeof)!|(?:and|by|delete|export|from|import(?: all)?|in|instanceof|is(?: not|nt)?|not|of|or|til|to|typeof|with|xor)(?!-)\b)/m,lookbehind:!0,alias:"operator"},boolean:{pattern:/(^|[^-])\b(?:false|no|off|on|true|yes)(?!-)\b/m,lookbehind:!0},argument:{pattern:/(^|(?!\.&\.)[^&])&(?!&)\d*/m,lookbehind:!0,alias:"variable"},number:/\b(?:\d+~[\da-z]+|\d[\d_]*(?:\.\d[\d_]*)?(?:[a-z]\w*)?)/i,identifier:/[a-z_](?:-?[a-z]|[\d_])*/i,operator:[{pattern:/( )\.(?= )/,lookbehind:!0},/\.(?:[=~]|\.\.?)|\.(?:[&|^]|<<|>>>?)\.|:(?:=|:=?)|&&|\|[|>]|<(?:<[>=?]?|-(?:->?|>)?|\+\+?|@@?|%%?|\*\*?|!(?:~?=|--?>|~?~>)?|~(?:~?>|=)?|==?|\^\^?|[\/?]/],punctuation:/[(){}\[\]|.,:;`]/},t.languages.livescript["interpolated-string"].inside.interpolation.inside.rest=t.languages.livescript}return iw}var sw,YD;function mve(){if(YD)return sw;YD=1,sw=e,e.displayName="llvm",e.aliases=[];function e(t){(function(n){n.languages.llvm={comment:/;.*/,string:{pattern:/"[^"]*"/,greedy:!0},boolean:/\b(?:false|true)\b/,variable:/[%@!#](?:(?!\d)(?:[-$.\w]|\\[a-f\d]{2})+|\d+)/i,label:/(?!\d)(?:[-$.\w]|\\[a-f\d]{2})+:/i,type:{pattern:/\b(?:double|float|fp128|half|i[1-9]\d*|label|metadata|ppc_fp128|token|void|x86_fp80|x86_mmx)\b/,alias:"class-name"},keyword:/\b[a-z_][a-z_0-9]*\b/,number:/[+-]?\b\d+(?:\.\d+)?(?:[eE][+-]?\d+)?\b|\b0x[\dA-Fa-f]+\b|\b0xK[\dA-Fa-f]{20}\b|\b0x[ML][\dA-Fa-f]{32}\b|\b0xH[\dA-Fa-f]{4}\b/,punctuation:/[{}[\];(),.!*=<>]/}})(t)}return sw}var lw,ZD;function hve(){if(ZD)return lw;ZD=1,lw=e,e.displayName="log",e.aliases=[];function e(t){t.languages.log={string:{pattern:/"(?:[^"\\\r\n]|\\.)*"|'(?![st] | \w)(?:[^'\\\r\n]|\\.)*'/,greedy:!0},exception:{pattern:/(^|[^\w.])[a-z][\w.]*(?:Error|Exception):.*(?:(?:\r\n?|\n)[ \t]*(?:at[ \t].+|\.{3}.*|Caused by:.*))+(?:(?:\r\n?|\n)[ \t]*\.\.\. .*)?/,lookbehind:!0,greedy:!0,alias:["javastacktrace","language-javastacktrace"],inside:t.languages.javastacktrace||{keyword:/\bat\b/,function:/[a-z_][\w$]*(?=\()/,punctuation:/[.:()]/}},level:[{pattern:/\b(?:ALERT|CRIT|CRITICAL|EMERG|EMERGENCY|ERR|ERROR|FAILURE|FATAL|SEVERE)\b/,alias:["error","important"]},{pattern:/\b(?:WARN|WARNING|WRN)\b/,alias:["warning","important"]},{pattern:/\b(?:DISPLAY|INF|INFO|NOTICE|STATUS)\b/,alias:["info","keyword"]},{pattern:/\b(?:DBG|DEBUG|FINE)\b/,alias:["debug","keyword"]},{pattern:/\b(?:FINER|FINEST|TRACE|TRC|VERBOSE|VRB)\b/,alias:["trace","comment"]}],property:{pattern:/((?:^|[\]|])[ \t]*)[a-z_](?:[\w-]|\b\/\b)*(?:[. ]\(?\w(?:[\w-]|\b\/\b)*\)?)*:(?=\s)/im,lookbehind:!0},separator:{pattern:/(^|[^-+])-{3,}|={3,}|\*{3,}|- - /m,lookbehind:!0,alias:"comment"},url:/\b(?:file|ftp|https?):\/\/[^\s|,;'"]*[^\s|,;'">.]/,email:{pattern:/(^|\s)[-\w+.]+@[a-z][a-z0-9-]*(?:\.[a-z][a-z0-9-]*)+(?=\s)/,lookbehind:!0,alias:"url"},"ip-address":{pattern:/\b(?:\d{1,3}(?:\.\d{1,3}){3})\b/,alias:"constant"},"mac-address":{pattern:/\b[a-f0-9]{2}(?::[a-f0-9]{2}){5}\b/i,alias:"constant"},domain:{pattern:/(^|\s)[a-z][a-z0-9-]*(?:\.[a-z][a-z0-9-]*)*\.[a-z][a-z0-9-]+(?=\s)/,lookbehind:!0,alias:"constant"},uuid:{pattern:/\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b/i,alias:"constant"},hash:{pattern:/\b(?:[a-f0-9]{32}){1,2}\b/i,alias:"constant"},"file-path":{pattern:/\b[a-z]:[\\/][^\s|,;:(){}\[\]"']+|(^|[\s:\[\](>|])\.{0,2}\/\w[^\s|,;:(){}\[\]"']*/i,lookbehind:!0,greedy:!0,alias:"string"},date:{pattern:RegExp(/\b\d{4}[-/]\d{2}[-/]\d{2}(?:T(?=\d{1,2}:)|(?=\s\d{1,2}:))/.source+"|"+/\b\d{1,4}[-/ ](?:\d{1,2}|Apr|Aug|Dec|Feb|Jan|Jul|Jun|Mar|May|Nov|Oct|Sep)[-/ ]\d{2,4}T?\b/.source+"|"+/\b(?:(?:Fri|Mon|Sat|Sun|Thu|Tue|Wed)(?:\s{1,2}(?:Apr|Aug|Dec|Feb|Jan|Jul|Jun|Mar|May|Nov|Oct|Sep))?|Apr|Aug|Dec|Feb|Jan|Jul|Jun|Mar|May|Nov|Oct|Sep)\s{1,2}\d{1,2}\b/.source,"i"),alias:"number"},time:{pattern:/\b\d{1,2}:\d{1,2}:\d{1,2}(?:[.,:]\d+)?(?:\s?[+-]\d{2}:?\d{2}|Z)?\b/,alias:"number"},boolean:/\b(?:false|null|true)\b/i,number:{pattern:/(^|[^.\w])(?:0x[a-f0-9]+|0o[0-7]+|0b[01]+|v?\d[\da-f]*(?:\.\d+)*(?:e[+-]?\d+)?[a-z]{0,3}\b)\b(?!\.\w)/i,lookbehind:!0},operator:/[;:?<=>~/@!$%&+\-|^(){}*#]/,punctuation:/[\[\].,]/}}return lw}var cw,XD;function bve(){if(XD)return cw;XD=1,cw=e,e.displayName="lolcode",e.aliases=[];function e(t){t.languages.lolcode={comment:[/\bOBTW\s[\s\S]*?\sTLDR\b/,/\bBTW.+/],string:{pattern:/"(?::.|[^":])*"/,inside:{variable:/:\{[^}]+\}/,symbol:[/:\([a-f\d]+\)/i,/:\[[^\]]+\]/,/:[)>o":]/]},greedy:!0},number:/(?:\B-)?(?:\b\d+(?:\.\d*)?|\B\.\d+)/,symbol:{pattern:/(^|\s)(?:A )?(?:BUKKIT|NOOB|NUMBAR|NUMBR|TROOF|YARN)(?=\s|,|$)/,lookbehind:!0,inside:{keyword:/A(?=\s)/}},label:{pattern:/((?:^|\s)(?:IM IN YR|IM OUTTA YR) )[a-zA-Z]\w*/,lookbehind:!0,alias:"string"},function:{pattern:/((?:^|\s)(?:HOW IZ I|I IZ|IZ) )[a-zA-Z]\w*/,lookbehind:!0},keyword:[{pattern:/(^|\s)(?:AN|FOUND YR|GIMMEH|GTFO|HAI|HAS A|HOW IZ I|I HAS A|I IZ|IF U SAY SO|IM IN YR|IM OUTTA YR|IS NOW(?: A)?|ITZ(?: A)?|IZ|KTHX|KTHXBYE|LIEK(?: A)?|MAEK|MEBBE|MKAY|NERFIN|NO WAI|O HAI IM|O RLY\?|OIC|OMG|OMGWTF|R|SMOOSH|SRS|TIL|UPPIN|VISIBLE|WILE|WTF\?|YA RLY|YR)(?=\s|,|$)/,lookbehind:!0},/'Z(?=\s|,|$)/],boolean:{pattern:/(^|\s)(?:FAIL|WIN)(?=\s|,|$)/,lookbehind:!0},variable:{pattern:/(^|\s)IT(?=\s|,|$)/,lookbehind:!0},operator:{pattern:/(^|\s)(?:NOT|BOTH SAEM|DIFFRINT|(?:ALL|ANY|BIGGR|BOTH|DIFF|EITHER|MOD|PRODUKT|QUOSHUNT|SMALLR|SUM|WON) OF)(?=\s|,|$)/,lookbehind:!0},punctuation:/\.{3}|…|,|!/}}return cw}var uw,QD;function yve(){if(QD)return uw;QD=1,uw=e,e.displayName="magma",e.aliases=[];function e(t){t.languages.magma={output:{pattern:/^(>.*(?:\r(?:\n|(?!\n))|\n))(?!>)(?:.+|(?:\r(?:\n|(?!\n))|\n)(?!>).*)(?:(?:\r(?:\n|(?!\n))|\n)(?!>).*)*/m,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?\*\//,greedy:!0},string:{pattern:/(^|[^\\"])"(?:[^\r\n\\"]|\\.)*"/,lookbehind:!0,greedy:!0},keyword:/\b(?:_|adj|and|assert|assert2|assert3|assigned|break|by|case|cat|catch|clear|cmpeq|cmpne|continue|declare|default|delete|diff|div|do|elif|else|end|eq|error|eval|exists|exit|for|forall|forward|fprintf|freeze|function|ge|gt|if|iload|import|in|intrinsic|is|join|le|load|local|lt|meet|mod|ne|not|notadj|notin|notsubset|or|print|printf|procedure|quit|random|read|readi|repeat|require|requirege|requirerange|restore|return|save|sdiff|select|subset|then|time|to|try|until|vprint|vprintf|vtime|when|where|while|xor)\b/,boolean:/\b(?:false|true)\b/,generator:{pattern:/\b[a-z_]\w*(?=\s*<)/i,alias:"class-name"},function:/\b[a-z_]\w*(?=\s*\()/i,number:{pattern:/(^|[^\w.]|\.\.)(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?(?:_[a-z]?)?(?=$|[^\w.]|\.\.)/,lookbehind:!0},operator:/->|[-+*/^~!|#=]|:=|\.\./,punctuation:/[()[\]{}<>,;.:]/}}return uw}var dw,JD;function vve(){if(JD)return dw;JD=1,dw=e,e.displayName="makefile",e.aliases=[];function e(t){t.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:"builtin"},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:"symbol",inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/}}return dw}var fw,eL;function Sve(){if(eL)return fw;eL=1,fw=e,e.displayName="markdown",e.aliases=["md"];function e(t){(function(n){var r=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function a(g){return g=g.replace(//g,function(){return r}),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+g+")")}var o=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,i=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,function(){return o}),s=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;n.languages.markdown=n.languages.extend("markup",{}),n.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:n.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+i+s+"(?:"+i+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+i+s+")(?:"+i+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(o),inside:n.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+i+")"+s+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+i+"$"),inside:{"table-header":{pattern:RegExp(o),alias:"important",inside:n.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:a(/\b__(?:(?!_)|_(?:(?!_))+_)+__\b|\*\*(?:(?!\*)|\*(?:(?!\*))+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:a(/\b_(?:(?!_)|__(?:(?!_))+__)+_\b|\*(?:(?!\*)|\*\*(?:(?!\*))+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:a(/(~~?)(?:(?!~))+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:a(/!?\[(?:(?!\]))+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\]))+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach(function(g){["url","bold","italic","strike","code-snippet"].forEach(function(m){g!==m&&(n.languages.markdown[g].inside.content.inside[m]=n.languages.markdown[m])})}),n.hooks.add("after-tokenize",function(g){if(g.language!=="markdown"&&g.language!=="md")return;function m(b){if(!(!b||typeof b=="string"))for(var y=0,w=b.length;y",quot:'"'},u=String.fromCodePoint||String.fromCharCode;function d(g){var m=g.replace(l,"");return m=m.replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,function(b,y){if(y=y.toLowerCase(),y[0]==="#"){var w;return y[1]==="x"?w=parseInt(y.slice(2),16):w=Number(y.slice(1)),u(w)}else{var v=c[y];return v||b}}),m}n.languages.md=n.languages.markdown})(t)}return fw}var pw,tL;function wve(){if(tL)return pw;tL=1,pw=e,e.displayName="matlab",e.aliases=[];function e(t){t.languages.matlab={comment:[/%\{[\s\S]*?\}%/,/%.+/],string:{pattern:/\B'(?:''|[^'\r\n])*'/,greedy:!0},number:/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[eE][+-]?\d+)?(?:[ij])?|\b[ij]\b/,keyword:/\b(?:NaN|break|case|catch|continue|else|elseif|end|for|function|if|inf|otherwise|parfor|pause|pi|return|switch|try|while)\b/,function:/\b(?!\d)\w+(?=\s*\()/,operator:/\.?[*^\/\\']|[+\-:@]|[<>=~]=?|&&?|\|\|?/,punctuation:/\.{3}|[.,;\[\](){}!]/}}return pw}var gw,nL;function Eve(){if(nL)return gw;nL=1,gw=e,e.displayName="maxscript",e.aliases=[];function e(t){(function(n){var r=/\b(?:about|and|animate|as|at|attributes|by|case|catch|collect|continue|coordsys|do|else|exit|fn|for|from|function|global|if|in|local|macroscript|mapped|max|not|of|off|on|or|parameters|persistent|plugin|rcmenu|return|rollout|set|struct|then|throw|to|tool|try|undo|utility|when|where|while|with)\b/i;n.languages.maxscript={comment:{pattern:/\/\*[\s\S]*?(?:\*\/|$)|--.*/,greedy:!0},string:{pattern:/(^|[^"\\@])(?:"(?:[^"\\]|\\[\s\S])*"|@"[^"]*")/,lookbehind:!0,greedy:!0},path:{pattern:/\$(?:[\w/\\.*?]|'[^']*')*/,greedy:!0,alias:"string"},"function-call":{pattern:RegExp("((?:"+(/^/.source+"|"+/[;=<>+\-*/^({\[]/.source+"|"+/\b(?:and|by|case|catch|collect|do|else|if|in|not|or|return|then|to|try|where|while|with)\b/.source)+")[ ]*)(?!"+r.source+")"+/[a-z_]\w*\b/.source+"(?=[ ]*(?:"+("(?!"+r.source+")"+/[a-z_]/.source+"|"+/\d|-\.?\d/.source+"|"+/[({'"$@#?]/.source)+"))","im"),lookbehind:!0,greedy:!0,alias:"function"},"function-definition":{pattern:/(\b(?:fn|function)\s+)\w+\b/i,lookbehind:!0,alias:"function"},argument:{pattern:/\b[a-z_]\w*(?=:)/i,alias:"attr-name"},keyword:r,boolean:/\b(?:false|true)\b/,time:{pattern:/(^|[^\w.])(?:(?:(?:\d+(?:\.\d*)?|\.\d+)(?:[eEdD][+-]\d+|[LP])?[msft])+|\d+:\d+(?:\.\d*)?)(?![\w.:])/,lookbehind:!0,alias:"number"},number:[{pattern:/(^|[^\w.])(?:(?:\d+(?:\.\d*)?|\.\d+)(?:[eEdD][+-]\d+|[LP])?|0x[a-fA-F0-9]+)(?![\w.:])/,lookbehind:!0},/\b(?:e|pi)\b/],constant:/\b(?:dontcollect|ok|silentValue|undefined|unsupplied)\b/,color:{pattern:/\b(?:black|blue|brown|gray|green|orange|red|white|yellow)\b/i,alias:"constant"},operator:/[-+*/<>=!]=?|[&^?]|#(?!\()/,punctuation:/[()\[\]{}.:,;]|#(?=\()|\\$/m}})(t)}return gw}var mw,rL;function xve(){if(rL)return mw;rL=1,mw=e,e.displayName="mel",e.aliases=[];function e(t){t.languages.mel={comment:/\/\/.*/,code:{pattern:/`(?:\\.|[^\\`\r\n])*`/,greedy:!0,alias:"italic",inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"}}},string:{pattern:/"(?:\\.|[^\\"\r\n])*"/,greedy:!0},variable:/\$\w+/,number:/\b0x[\da-fA-F]+\b|\b\d+(?:\.\d*)?|\B\.\d+/,flag:{pattern:/-[^\d\W]\w*/,alias:"operator"},keyword:/\b(?:break|case|continue|default|do|else|float|for|global|if|in|int|matrix|proc|return|string|switch|vector|while)\b/,function:/\b\w+(?=\()|\b(?:CBG|HfAddAttractorToAS|HfAssignAS|HfBuildEqualMap|HfBuildFurFiles|HfBuildFurImages|HfCancelAFR|HfConnectASToHF|HfCreateAttractor|HfDeleteAS|HfEditAS|HfPerformCreateAS|HfRemoveAttractorFromAS|HfSelectAttached|HfSelectAttractors|HfUnAssignAS|Mayatomr|about|abs|addAttr|addAttributeEditorNodeHelp|addDynamic|addNewShelfTab|addPP|addPanelCategory|addPrefixToName|advanceToNextDrivenKey|affectedNet|affects|aimConstraint|air|alias|aliasAttr|align|alignCtx|alignCurve|alignSurface|allViewFit|ambientLight|angle|angleBetween|animCone|animCurveEditor|animDisplay|animView|annotate|appendStringArray|applicationName|applyAttrPreset|applyTake|arcLenDimContext|arcLengthDimension|arclen|arrayMapper|art3dPaintCtx|artAttrCtx|artAttrPaintVertexCtx|artAttrSkinPaintCtx|artAttrTool|artBuildPaintMenu|artFluidAttrCtx|artPuttyCtx|artSelectCtx|artSetPaintCtx|artUserPaintCtx|assignCommand|assignInputDevice|assignViewportFactories|attachCurve|attachDeviceAttr|attachSurface|attrColorSliderGrp|attrCompatibility|attrControlGrp|attrEnumOptionMenu|attrEnumOptionMenuGrp|attrFieldGrp|attrFieldSliderGrp|attrNavigationControlGrp|attrPresetEditWin|attributeExists|attributeInfo|attributeMenu|attributeQuery|autoKeyframe|autoPlace|bakeClip|bakeFluidShading|bakePartialHistory|bakeResults|bakeSimulation|basename|basenameEx|batchRender|bessel|bevel|bevelPlus|binMembership|bindSkin|blend2|blendShape|blendShapeEditor|blendShapePanel|blendTwoAttr|blindDataType|boneLattice|boundary|boxDollyCtx|boxZoomCtx|bufferCurve|buildBookmarkMenu|buildKeyframeMenu|button|buttonManip|cacheFile|cacheFileCombine|cacheFileMerge|cacheFileTrack|camera|cameraView|canCreateManip|canvas|capitalizeString|catch|catchQuiet|ceil|changeSubdivComponentDisplayLevel|changeSubdivRegion|channelBox|character|characterMap|characterOutlineEditor|characterize|chdir|checkBox|checkBoxGrp|checkDefaultRenderGlobals|choice|circle|circularFillet|clamp|clear|clearCache|clip|clipEditor|clipEditorCurrentTimeCtx|clipSchedule|clipSchedulerOutliner|clipTrimBefore|closeCurve|closeSurface|cluster|cmdFileOutput|cmdScrollFieldExecuter|cmdScrollFieldReporter|cmdShell|coarsenSubdivSelectionList|collision|color|colorAtPoint|colorEditor|colorIndex|colorIndexSliderGrp|colorSliderButtonGrp|colorSliderGrp|columnLayout|commandEcho|commandLine|commandPort|compactHairSystem|componentEditor|compositingInterop|computePolysetVolume|condition|cone|confirmDialog|connectAttr|connectControl|connectDynamic|connectJoint|connectionInfo|constrain|constrainValue|constructionHistory|container|containsMultibyte|contextInfo|control|convertFromOldLayers|convertIffToPsd|convertLightmap|convertSolidTx|convertTessellation|convertUnit|copyArray|copyFlexor|copyKey|copySkinWeights|cos|cpButton|cpCache|cpClothSet|cpCollision|cpConstraint|cpConvClothToMesh|cpForces|cpGetSolverAttr|cpPanel|cpProperty|cpRigidCollisionFilter|cpSeam|cpSetEdit|cpSetSolverAttr|cpSolver|cpSolverTypes|cpTool|cpUpdateClothUVs|createDisplayLayer|createDrawCtx|createEditor|createLayeredPsdFile|createMotionField|createNewShelf|createNode|createRenderLayer|createSubdivRegion|cross|crossProduct|ctxAbort|ctxCompletion|ctxEditMode|ctxTraverse|currentCtx|currentTime|currentTimeCtx|currentUnit|curve|curveAddPtCtx|curveCVCtx|curveEPCtx|curveEditorCtx|curveIntersect|curveMoveEPCtx|curveOnSurface|curveSketchCtx|cutKey|cycleCheck|cylinder|dagPose|date|defaultLightListCheckBox|defaultNavigation|defineDataServer|defineVirtualDevice|deformer|deg_to_rad|delete|deleteAttr|deleteShadingGroupsAndMaterials|deleteShelfTab|deleteUI|deleteUnusedBrushes|delrandstr|detachCurve|detachDeviceAttr|detachSurface|deviceEditor|devicePanel|dgInfo|dgdirty|dgeval|dgtimer|dimWhen|directKeyCtx|directionalLight|dirmap|dirname|disable|disconnectAttr|disconnectJoint|diskCache|displacementToPoly|displayAffected|displayColor|displayCull|displayLevelOfDetail|displayPref|displayRGBColor|displaySmoothness|displayStats|displayString|displaySurface|distanceDimContext|distanceDimension|doBlur|dolly|dollyCtx|dopeSheetEditor|dot|dotProduct|doubleProfileBirailSurface|drag|dragAttrContext|draggerContext|dropoffLocator|duplicate|duplicateCurve|duplicateSurface|dynCache|dynControl|dynExport|dynExpression|dynGlobals|dynPaintEditor|dynParticleCtx|dynPref|dynRelEdPanel|dynRelEditor|dynamicLoad|editAttrLimits|editDisplayLayerGlobals|editDisplayLayerMembers|editRenderLayerAdjustment|editRenderLayerGlobals|editRenderLayerMembers|editor|editorTemplate|effector|emit|emitter|enableDevice|encodeString|endString|endsWith|env|equivalent|equivalentTol|erf|error|eval|evalDeferred|evalEcho|event|exactWorldBoundingBox|exclusiveLightCheckBox|exec|executeForEachObject|exists|exp|expression|expressionEditorListen|extendCurve|extendSurface|extrude|fcheck|fclose|feof|fflush|fgetline|fgetword|file|fileBrowserDialog|fileDialog|fileExtension|fileInfo|filetest|filletCurve|filter|filterCurve|filterExpand|filterStudioImport|findAllIntersections|findAnimCurves|findKeyframe|findMenuItem|findRelatedSkinCluster|finder|firstParentOf|fitBspline|flexor|floatEq|floatField|floatFieldGrp|floatScrollBar|floatSlider|floatSlider2|floatSliderButtonGrp|floatSliderGrp|floor|flow|fluidCacheInfo|fluidEmitter|fluidVoxelInfo|flushUndo|fmod|fontDialog|fopen|formLayout|format|fprint|frameLayout|fread|freeFormFillet|frewind|fromNativePath|fwrite|gamma|gauss|geometryConstraint|getApplicationVersionAsFloat|getAttr|getClassification|getDefaultBrush|getFileList|getFluidAttr|getInputDeviceRange|getMayaPanelTypes|getModifiers|getPanel|getParticleAttr|getPluginResource|getenv|getpid|glRender|glRenderEditor|globalStitch|gmatch|goal|gotoBindPose|grabColor|gradientControl|gradientControlNoAttr|graphDollyCtx|graphSelectContext|graphTrackCtx|gravity|grid|gridLayout|group|groupObjectsByName|hardenPointCurve|hardware|hardwareRenderPanel|headsUpDisplay|headsUpMessage|help|helpLine|hermite|hide|hilite|hitTest|hotBox|hotkey|hotkeyCheck|hsv_to_rgb|hudButton|hudSlider|hudSliderButton|hwReflectionMap|hwRender|hwRenderLoad|hyperGraph|hyperPanel|hyperShade|hypot|iconTextButton|iconTextCheckBox|iconTextRadioButton|iconTextRadioCollection|iconTextScrollList|iconTextStaticLabel|ikHandle|ikHandleCtx|ikHandleDisplayScale|ikSolver|ikSplineHandleCtx|ikSystem|ikSystemInfo|ikfkDisplayMethod|illustratorCurves|image|imfPlugins|inheritTransform|insertJoint|insertJointCtx|insertKeyCtx|insertKnotCurve|insertKnotSurface|instance|instanceable|instancer|intField|intFieldGrp|intScrollBar|intSlider|intSliderGrp|interToUI|internalVar|intersect|iprEngine|isAnimCurve|isConnected|isDirty|isParentOf|isSameObject|isTrue|isValidObjectName|isValidString|isValidUiName|isolateSelect|itemFilter|itemFilterAttr|itemFilterRender|itemFilterType|joint|jointCluster|jointCtx|jointDisplayScale|jointLattice|keyTangent|keyframe|keyframeOutliner|keyframeRegionCurrentTimeCtx|keyframeRegionDirectKeyCtx|keyframeRegionDollyCtx|keyframeRegionInsertKeyCtx|keyframeRegionMoveKeyCtx|keyframeRegionScaleKeyCtx|keyframeRegionSelectKeyCtx|keyframeRegionSetKeyCtx|keyframeRegionTrackCtx|keyframeStats|lassoContext|lattice|latticeDeformKeyCtx|launch|launchImageEditor|layerButton|layeredShaderPort|layeredTexturePort|layout|layoutDialog|lightList|lightListEditor|lightListPanel|lightlink|lineIntersection|linearPrecision|linstep|listAnimatable|listAttr|listCameras|listConnections|listDeviceAttachments|listHistory|listInputDeviceAxes|listInputDeviceButtons|listInputDevices|listMenuAnnotation|listNodeTypes|listPanelCategories|listRelatives|listSets|listTransforms|listUnselected|listerEditor|loadFluid|loadNewShelf|loadPlugin|loadPluginLanguageResources|loadPrefObjects|localizedPanelLabel|lockNode|loft|log|longNameOf|lookThru|ls|lsThroughFilter|lsType|lsUI|mag|makeIdentity|makeLive|makePaintable|makeRoll|makeSingleSurface|makeTubeOn|makebot|manipMoveContext|manipMoveLimitsCtx|manipOptions|manipRotateContext|manipRotateLimitsCtx|manipScaleContext|manipScaleLimitsCtx|marker|match|max|memory|menu|menuBarLayout|menuEditor|menuItem|menuItemToShelf|menuSet|menuSetPref|messageLine|min|minimizeApp|mirrorJoint|modelCurrentTimeCtx|modelEditor|modelPanel|mouse|movIn|movOut|move|moveIKtoFK|moveKeyCtx|moveVertexAlongDirection|multiProfileBirailSurface|mute|nParticle|nameCommand|nameField|namespace|namespaceInfo|newPanelItems|newton|nodeCast|nodeIconButton|nodeOutliner|nodePreset|nodeType|noise|nonLinear|normalConstraint|normalize|nurbsBoolean|nurbsCopyUVSet|nurbsCube|nurbsEditUV|nurbsPlane|nurbsSelect|nurbsSquare|nurbsToPoly|nurbsToPolygonsPref|nurbsToSubdiv|nurbsToSubdivPref|nurbsUVSet|nurbsViewDirectionVector|objExists|objectCenter|objectLayer|objectType|objectTypeUI|obsoleteProc|oceanNurbsPreviewPlane|offsetCurve|offsetCurveOnSurface|offsetSurface|openGLExtension|openMayaPref|optionMenu|optionMenuGrp|optionVar|orbit|orbitCtx|orientConstraint|outlinerEditor|outlinerPanel|overrideModifier|paintEffectsDisplay|pairBlend|palettePort|paneLayout|panel|panelConfiguration|panelHistory|paramDimContext|paramDimension|paramLocator|parent|parentConstraint|particle|particleExists|particleInstancer|particleRenderInfo|partition|pasteKey|pathAnimation|pause|pclose|percent|performanceOptions|pfxstrokes|pickWalk|picture|pixelMove|planarSrf|plane|play|playbackOptions|playblast|plugAttr|plugNode|pluginInfo|pluginResourceUtil|pointConstraint|pointCurveConstraint|pointLight|pointMatrixMult|pointOnCurve|pointOnSurface|pointPosition|poleVectorConstraint|polyAppend|polyAppendFacetCtx|polyAppendVertex|polyAutoProjection|polyAverageNormal|polyAverageVertex|polyBevel|polyBlendColor|polyBlindData|polyBoolOp|polyBridgeEdge|polyCacheMonitor|polyCheck|polyChipOff|polyClipboard|polyCloseBorder|polyCollapseEdge|polyCollapseFacet|polyColorBlindData|polyColorDel|polyColorPerVertex|polyColorSet|polyCompare|polyCone|polyCopyUV|polyCrease|polyCreaseCtx|polyCreateFacet|polyCreateFacetCtx|polyCube|polyCut|polyCutCtx|polyCylinder|polyCylindricalProjection|polyDelEdge|polyDelFacet|polyDelVertex|polyDuplicateAndConnect|polyDuplicateEdge|polyEditUV|polyEditUVShell|polyEvaluate|polyExtrudeEdge|polyExtrudeFacet|polyExtrudeVertex|polyFlipEdge|polyFlipUV|polyForceUV|polyGeoSampler|polyHelix|polyInfo|polyInstallAction|polyLayoutUV|polyListComponentConversion|polyMapCut|polyMapDel|polyMapSew|polyMapSewMove|polyMergeEdge|polyMergeEdgeCtx|polyMergeFacet|polyMergeFacetCtx|polyMergeUV|polyMergeVertex|polyMirrorFace|polyMoveEdge|polyMoveFacet|polyMoveFacetUV|polyMoveUV|polyMoveVertex|polyNormal|polyNormalPerVertex|polyNormalizeUV|polyOptUvs|polyOptions|polyOutput|polyPipe|polyPlanarProjection|polyPlane|polyPlatonicSolid|polyPoke|polyPrimitive|polyPrism|polyProjection|polyPyramid|polyQuad|polyQueryBlindData|polyReduce|polySelect|polySelectConstraint|polySelectConstraintMonitor|polySelectCtx|polySelectEditCtx|polySeparate|polySetToFaceNormal|polySewEdge|polyShortestPathCtx|polySmooth|polySoftEdge|polySphere|polySphericalProjection|polySplit|polySplitCtx|polySplitEdge|polySplitRing|polySplitVertex|polyStraightenUVBorder|polySubdivideEdge|polySubdivideFacet|polyToSubdiv|polyTorus|polyTransfer|polyTriangulate|polyUVSet|polyUnite|polyWedgeFace|popen|popupMenu|pose|pow|preloadRefEd|print|progressBar|progressWindow|projFileViewer|projectCurve|projectTangent|projectionContext|projectionManip|promptDialog|propModCtx|propMove|psdChannelOutliner|psdEditTextureFile|psdExport|psdTextureFile|putenv|pwd|python|querySubdiv|quit|rad_to_deg|radial|radioButton|radioButtonGrp|radioCollection|radioMenuItemCollection|rampColorPort|rand|randomizeFollicles|randstate|rangeControl|readTake|rebuildCurve|rebuildSurface|recordAttr|recordDevice|redo|reference|referenceEdit|referenceQuery|refineSubdivSelectionList|refresh|refreshAE|registerPluginResource|rehash|reloadImage|removeJoint|removeMultiInstance|removePanelCategory|rename|renameAttr|renameSelectionList|renameUI|render|renderGlobalsNode|renderInfo|renderLayerButton|renderLayerParent|renderLayerPostProcess|renderLayerUnparent|renderManip|renderPartition|renderQualityNode|renderSettings|renderThumbnailUpdate|renderWindowEditor|renderWindowSelectContext|renderer|reorder|reorderDeformers|requires|reroot|resampleFluid|resetAE|resetPfxToPolyCamera|resetTool|resolutionNode|retarget|reverseCurve|reverseSurface|revolve|rgb_to_hsv|rigidBody|rigidSolver|roll|rollCtx|rootOf|rot|rotate|rotationInterpolation|roundConstantRadius|rowColumnLayout|rowLayout|runTimeCommand|runup|sampleImage|saveAllShelves|saveAttrPreset|saveFluid|saveImage|saveInitialState|saveMenu|savePrefObjects|savePrefs|saveShelf|saveToolSettings|scale|scaleBrushBrightness|scaleComponents|scaleConstraint|scaleKey|scaleKeyCtx|sceneEditor|sceneUIReplacement|scmh|scriptCtx|scriptEditorInfo|scriptJob|scriptNode|scriptTable|scriptToShelf|scriptedPanel|scriptedPanelType|scrollField|scrollLayout|sculpt|searchPathArray|seed|selLoadSettings|select|selectContext|selectCurveCV|selectKey|selectKeyCtx|selectKeyframeRegionCtx|selectMode|selectPref|selectPriority|selectType|selectedNodes|selectionConnection|separator|setAttr|setAttrEnumResource|setAttrMapping|setAttrNiceNameResource|setConstraintRestPosition|setDefaultShadingGroup|setDrivenKeyframe|setDynamic|setEditCtx|setEditor|setFluidAttr|setFocus|setInfinity|setInputDeviceMapping|setKeyCtx|setKeyPath|setKeyframe|setKeyframeBlendshapeTargetWts|setMenuMode|setNodeNiceNameResource|setNodeTypeFlag|setParent|setParticleAttr|setPfxToPolyCamera|setPluginResource|setProject|setStampDensity|setStartupMessage|setState|setToolTo|setUITemplate|setXformManip|sets|shadingConnection|shadingGeometryRelCtx|shadingLightRelCtx|shadingNetworkCompare|shadingNode|shapeCompare|shelfButton|shelfLayout|shelfTabLayout|shellField|shortNameOf|showHelp|showHidden|showManipCtx|showSelectionInTitle|showShadingGroupAttrEditor|showWindow|sign|simplify|sin|singleProfileBirailSurface|size|sizeBytes|skinCluster|skinPercent|smoothCurve|smoothTangentSurface|smoothstep|snap2to2|snapKey|snapMode|snapTogetherCtx|snapshot|soft|softMod|softModCtx|sort|sound|soundControl|source|spaceLocator|sphere|sphrand|spotLight|spotLightPreviewPort|spreadSheetEditor|spring|sqrt|squareSurface|srtContext|stackTrace|startString|startsWith|stitchAndExplodeShell|stitchSurface|stitchSurfacePoints|strcmp|stringArrayCatenate|stringArrayContains|stringArrayCount|stringArrayInsertAtIndex|stringArrayIntersector|stringArrayRemove|stringArrayRemoveAtIndex|stringArrayRemoveDuplicates|stringArrayRemoveExact|stringArrayToString|stringToStringArray|strip|stripPrefixFromName|stroke|subdAutoProjection|subdCleanTopology|subdCollapse|subdDuplicateAndConnect|subdEditUV|subdListComponentConversion|subdMapCut|subdMapSewMove|subdMatchTopology|subdMirror|subdToBlind|subdToPoly|subdTransferUVsToCache|subdiv|subdivCrease|subdivDisplaySmoothness|substitute|substituteAllString|substituteGeometry|substring|surface|surfaceSampler|surfaceShaderList|swatchDisplayPort|switchTable|symbolButton|symbolCheckBox|sysFile|system|tabLayout|tan|tangentConstraint|texLatticeDeformContext|texManipContext|texMoveContext|texMoveUVShellContext|texRotateContext|texScaleContext|texSelectContext|texSelectShortestPathCtx|texSmudgeUVContext|texWinToolCtx|text|textCurves|textField|textFieldButtonGrp|textFieldGrp|textManip|textScrollList|textToShelf|textureDisplacePlane|textureHairColor|texturePlacementContext|textureWindow|threadCount|threePointArcCtx|timeControl|timePort|timerX|toNativePath|toggle|toggleAxis|toggleWindowVisibility|tokenize|tokenizeList|tolerance|tolower|toolButton|toolCollection|toolDropped|toolHasOptions|toolPropertyWindow|torus|toupper|trace|track|trackCtx|transferAttributes|transformCompare|transformLimits|translator|trim|trunc|truncateFluidCache|truncateHairCache|tumble|tumbleCtx|turbulence|twoPointArcCtx|uiRes|uiTemplate|unassignInputDevice|undo|undoInfo|ungroup|uniform|unit|unloadPlugin|untangleUV|untitledFileName|untrim|upAxis|updateAE|userCtx|uvLink|uvSnapshot|validateShelfName|vectorize|view2dToolCtx|viewCamera|viewClipPlane|viewFit|viewHeadOn|viewLookAt|viewManip|viewPlace|viewSet|visor|volumeAxis|vortex|waitCursor|warning|webBrowser|webBrowserPrefs|whatIs|window|windowPref|wire|wireContext|workspace|wrinkle|wrinkleContext|writeTake|xbmLangPathList|xform)\b/,operator:[/\+[+=]?|-[-=]?|&&|\|\||[<>]=|[*\/!=]=?|[%^]/,{pattern:/(^|[^<])<(?!<)/,lookbehind:!0},{pattern:/(^|[^>])>(?!>)/,lookbehind:!0}],punctuation:/<<|>>|[.,:;?\[\](){}]/},t.languages.mel.code.inside.rest=t.languages.mel}return mw}var hw,aL;function kve(){if(aL)return hw;aL=1,hw=e,e.displayName="mermaid",e.aliases=[];function e(t){t.languages.mermaid={comment:{pattern:/%%.*/,greedy:!0},style:{pattern:/^([ \t]*(?:classDef|linkStyle|style)[ \t]+[\w$-]+[ \t]+)\w.*[^\s;]/m,lookbehind:!0,inside:{property:/\b\w[\w-]*(?=[ \t]*:)/,operator:/:/,punctuation:/,/}},"inter-arrow-label":{pattern:/([^<>ox.=-])(?:-[-.]|==)(?![<>ox.=-])[ \t]*(?:"[^"\r\n]*"|[^\s".=-](?:[^\r\n.=-]*[^\s.=-])?)[ \t]*(?:\.+->?|--+[->]|==+[=>])(?![<>ox.=-])/,lookbehind:!0,greedy:!0,inside:{arrow:{pattern:/(?:\.+->?|--+[->]|==+[=>])$/,alias:"operator"},label:{pattern:/^([\s\S]{2}[ \t]*)\S(?:[\s\S]*\S)?/,lookbehind:!0,alias:"property"},"arrow-head":{pattern:/^\S+/,alias:["arrow","operator"]}}},arrow:[{pattern:/(^|[^{}|o.-])[|}][|o](?:--|\.\.)[|o][|{](?![{}|o.-])/,lookbehind:!0,alias:"operator"},{pattern:/(^|[^<>ox.=-])(?:[ox]?|(?:==+|--+|-\.*-)[>ox]|===+|---+|-\.+-)(?![<>ox.=-])/,lookbehind:!0,alias:"operator"},{pattern:/(^|[^<>()x-])(?:--?(?:>>|[x>)])(?![<>()x])|(?:<<|[x<(])--?(?!-))/,lookbehind:!0,alias:"operator"},{pattern:/(^|[^<>|*o.-])(?:[*o]--|--[*o]|<\|?(?:--|\.\.)|(?:--|\.\.)\|?>|--|\.\.)(?![<>|*o.-])/,lookbehind:!0,alias:"operator"}],label:{pattern:/(^|[^|<])\|(?:[^\r\n"|]|"[^"\r\n]*")+\|/,lookbehind:!0,greedy:!0,alias:"property"},text:{pattern:/(?:[(\[{]+|\b>)(?:[^\r\n"()\[\]{}]|"[^"\r\n]*")+(?:[)\]}]+|>)/,alias:"string"},string:{pattern:/"[^"\r\n]*"/,greedy:!0},annotation:{pattern:/<<(?:abstract|choice|enumeration|fork|interface|join|service)>>|\[\[(?:choice|fork|join)\]\]/i,alias:"important"},keyword:[{pattern:/(^[ \t]*)(?:action|callback|class|classDef|classDiagram|click|direction|erDiagram|flowchart|gantt|gitGraph|graph|journey|link|linkStyle|pie|requirementDiagram|sequenceDiagram|stateDiagram|stateDiagram-v2|style|subgraph)(?![\w$-])/m,lookbehind:!0,greedy:!0},{pattern:/(^[ \t]*)(?:activate|alt|and|as|autonumber|deactivate|else|end(?:[ \t]+note)?|loop|opt|par|participant|rect|state|note[ \t]+(?:over|(?:left|right)[ \t]+of))(?![\w$-])/im,lookbehind:!0,greedy:!0}],entity:/#[a-z0-9]+;/,operator:{pattern:/(\w[ \t]*)&(?=[ \t]*\w)|:::|:/,lookbehind:!0},punctuation:/[(){};]/}}return hw}var bw,oL;function Cve(){if(oL)return bw;oL=1,bw=e,e.displayName="mizar",e.aliases=[];function e(t){t.languages.mizar={comment:/::.+/,keyword:/@proof\b|\b(?:according|aggregate|all|and|antonym|are|as|associativity|assume|asymmetry|attr|be|begin|being|by|canceled|case|cases|clusters?|coherence|commutativity|compatibility|connectedness|consider|consistency|constructors|contradiction|correctness|def|deffunc|define|definitions?|defpred|do|does|end|environ|equals|ex|exactly|existence|for|from|func|given|hence|hereby|holds|idempotence|identity|iff?|implies|involutiveness|irreflexivity|is|it|let|means|mode|non|not|notations?|now|of|or|otherwise|over|per|pred|prefix|projectivity|proof|provided|qua|reconsider|redefine|reduce|reducibility|reflexivity|registrations?|requirements|reserve|sch|schemes?|section|selector|set|sethood|st|struct|such|suppose|symmetry|synonym|take|that|the|then|theorems?|thesis|thus|to|transitivity|uniqueness|vocabular(?:ies|y)|when|where|with|wrt)\b/,parameter:{pattern:/\$(?:10|\d)/,alias:"variable"},variable:/\b\w+(?=:)/,number:/(?:\b|-)\d+\b/,operator:/\.\.\.|->|&|\.?=/,punctuation:/\(#|#\)|[,:;\[\](){}]/}}return bw}var yw,iL;function _ve(){if(iL)return yw;iL=1,yw=e,e.displayName="mongodb",e.aliases=[];function e(t){(function(n){var r=["$eq","$gt","$gte","$in","$lt","$lte","$ne","$nin","$and","$not","$nor","$or","$exists","$type","$expr","$jsonSchema","$mod","$regex","$text","$where","$geoIntersects","$geoWithin","$near","$nearSphere","$all","$elemMatch","$size","$bitsAllClear","$bitsAllSet","$bitsAnyClear","$bitsAnySet","$comment","$elemMatch","$meta","$slice","$currentDate","$inc","$min","$max","$mul","$rename","$set","$setOnInsert","$unset","$addToSet","$pop","$pull","$push","$pullAll","$each","$position","$slice","$sort","$bit","$addFields","$bucket","$bucketAuto","$collStats","$count","$currentOp","$facet","$geoNear","$graphLookup","$group","$indexStats","$limit","$listLocalSessions","$listSessions","$lookup","$match","$merge","$out","$planCacheStats","$project","$redact","$replaceRoot","$replaceWith","$sample","$set","$skip","$sort","$sortByCount","$unionWith","$unset","$unwind","$setWindowFields","$abs","$accumulator","$acos","$acosh","$add","$addToSet","$allElementsTrue","$and","$anyElementTrue","$arrayElemAt","$arrayToObject","$asin","$asinh","$atan","$atan2","$atanh","$avg","$binarySize","$bsonSize","$ceil","$cmp","$concat","$concatArrays","$cond","$convert","$cos","$dateFromParts","$dateToParts","$dateFromString","$dateToString","$dayOfMonth","$dayOfWeek","$dayOfYear","$degreesToRadians","$divide","$eq","$exp","$filter","$first","$floor","$function","$gt","$gte","$hour","$ifNull","$in","$indexOfArray","$indexOfBytes","$indexOfCP","$isArray","$isNumber","$isoDayOfWeek","$isoWeek","$isoWeekYear","$last","$last","$let","$literal","$ln","$log","$log10","$lt","$lte","$ltrim","$map","$max","$mergeObjects","$meta","$min","$millisecond","$minute","$mod","$month","$multiply","$ne","$not","$objectToArray","$or","$pow","$push","$radiansToDegrees","$range","$reduce","$regexFind","$regexFindAll","$regexMatch","$replaceOne","$replaceAll","$reverseArray","$round","$rtrim","$second","$setDifference","$setEquals","$setIntersection","$setIsSubset","$setUnion","$size","$sin","$slice","$split","$sqrt","$stdDevPop","$stdDevSamp","$strcasecmp","$strLenBytes","$strLenCP","$substr","$substrBytes","$substrCP","$subtract","$sum","$switch","$tan","$toBool","$toDate","$toDecimal","$toDouble","$toInt","$toLong","$toObjectId","$toString","$toLower","$toUpper","$trim","$trunc","$type","$week","$year","$zip","$count","$dateAdd","$dateDiff","$dateSubtract","$dateTrunc","$getField","$rand","$sampleRate","$setField","$unsetField","$comment","$explain","$hint","$max","$maxTimeMS","$min","$orderby","$query","$returnKey","$showDiskLoc","$natural"],a=["ObjectId","Code","BinData","DBRef","Timestamp","NumberLong","NumberDecimal","MaxKey","MinKey","RegExp","ISODate","UUID"];r=r.map(function(i){return i.replace("$","\\$")});var o="(?:"+r.join("|")+")\\b";n.languages.mongodb=n.languages.extend("javascript",{}),n.languages.insertBefore("mongodb","string",{property:{pattern:/(?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)(?=\s*:)/,greedy:!0,inside:{keyword:RegExp(`^(['"])?`+o+"(?:\\1)?$")}}}),n.languages.mongodb.string.inside={url:{pattern:/https?:\/\/[-\w@:%.+~#=]{1,256}\.[a-z0-9()]{1,6}\b[-\w()@:%+.~#?&/=]*/i,greedy:!0},entity:{pattern:/\b(?:(?:[01]?\d\d?|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d\d?|2[0-4]\d|25[0-5])\b/,greedy:!0}},n.languages.insertBefore("mongodb","constant",{builtin:{pattern:RegExp("\\b(?:"+a.join("|")+")\\b"),alias:"keyword"}})})(t)}return yw}var vw,sL;function Ave(){if(sL)return vw;sL=1,vw=e,e.displayName="monkey",e.aliases=[];function e(t){t.languages.monkey={comment:{pattern:/^#Rem\s[\s\S]*?^#End|'.+/im,greedy:!0},string:{pattern:/"[^"\r\n]*"/,greedy:!0},preprocessor:{pattern:/(^[ \t]*)#.+/m,lookbehind:!0,greedy:!0,alias:"property"},function:/\b\w+(?=\()/,"type-char":{pattern:/\b[?%#$]/,alias:"class-name"},number:{pattern:/((?:\.\.)?)(?:(?:\b|\B-\.?|\B\.)\d+(?:(?!\.\.)\.\d*)?|\$[\da-f]+)/i,lookbehind:!0},keyword:/\b(?:Abstract|Array|Bool|Case|Catch|Class|Const|Continue|Default|Eachin|Else|ElseIf|End|EndIf|Exit|Extends|Extern|False|Field|Final|Float|For|Forever|Function|Global|If|Implements|Import|Inline|Int|Interface|Local|Method|Module|New|Next|Null|Object|Private|Property|Public|Repeat|Return|Select|Self|Step|Strict|String|Super|Then|Throw|To|True|Try|Until|Void|Wend|While)\b/i,operator:/\.\.|<[=>]?|>=?|:?=|(?:[+\-*\/&~|]|\b(?:Mod|Shl|Shr)\b)=?|\b(?:And|Not|Or)\b/i,punctuation:/[.,:;()\[\]]/}}return vw}var Sw,lL;function Tve(){if(lL)return Sw;lL=1,Sw=e,e.displayName="moonscript",e.aliases=["moon"];function e(t){t.languages.moonscript={comment:/--.*/,string:[{pattern:/'[^']*'|\[(=*)\[[\s\S]*?\]\1\]/,greedy:!0},{pattern:/"[^"]*"/,greedy:!0,inside:{interpolation:{pattern:/#\{[^{}]*\}/,inside:{moonscript:{pattern:/(^#\{)[\s\S]+(?=\})/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/#\{|\}/,alias:"punctuation"}}}}}],"class-name":[{pattern:/(\b(?:class|extends)[ \t]+)\w+/,lookbehind:!0},/\b[A-Z]\w*/],keyword:/\b(?:class|continue|do|else|elseif|export|extends|for|from|if|import|in|local|nil|return|self|super|switch|then|unless|using|when|while|with)\b/,variable:/@@?\w*/,property:{pattern:/\b(?!\d)\w+(?=:)|(:)(?!\d)\w+/,lookbehind:!0},function:{pattern:/\b(?:_G|_VERSION|assert|collectgarbage|coroutine\.(?:create|resume|running|status|wrap|yield)|debug\.(?:debug|getfenv|gethook|getinfo|getlocal|getmetatable|getregistry|getupvalue|setfenv|sethook|setlocal|setmetatable|setupvalue|traceback)|dofile|error|getfenv|getmetatable|io\.(?:close|flush|input|lines|open|output|popen|read|stderr|stdin|stdout|tmpfile|type|write)|ipairs|load|loadfile|loadstring|math\.(?:abs|acos|asin|atan|atan2|ceil|cos|cosh|deg|exp|floor|fmod|frexp|ldexp|log|log10|max|min|modf|pi|pow|rad|random|randomseed|sin|sinh|sqrt|tan|tanh)|module|next|os\.(?:clock|date|difftime|execute|exit|getenv|remove|rename|setlocale|time|tmpname)|package\.(?:cpath|loaded|loadlib|path|preload|seeall)|pairs|pcall|print|rawequal|rawget|rawset|require|select|setfenv|setmetatable|string\.(?:byte|char|dump|find|format|gmatch|gsub|len|lower|match|rep|reverse|sub|upper)|table\.(?:concat|insert|maxn|remove|sort)|tonumber|tostring|type|unpack|xpcall)\b/,inside:{punctuation:/\./}},boolean:/\b(?:false|true)\b/,number:/(?:\B\.\d+|\b\d+\.\d+|\b\d+(?=[eE]))(?:[eE][-+]?\d+)?\b|\b(?:0x[a-fA-F\d]+|\d+)(?:U?LL)?\b/,operator:/\.{3}|[-=]>|~=|(?:[-+*/%<>!=]|\.\.)=?|[:#^]|\b(?:and|or)\b=?|\b(?:not)\b/,punctuation:/[.,()[\]{}\\]/},t.languages.moonscript.string[1].inside.interpolation.inside.moonscript.inside=t.languages.moonscript,t.languages.moon=t.languages.moonscript}return Sw}var ww,cL;function Rve(){if(cL)return ww;cL=1,ww=e,e.displayName="n1ql",e.aliases=[];function e(t){t.languages.n1ql={comment:{pattern:/\/\*[\s\S]*?(?:$|\*\/)|--.*/,greedy:!0},string:{pattern:/(["'])(?:\\[\s\S]|(?!\1)[^\\]|\1\1)*\1/,greedy:!0},identifier:{pattern:/`(?:\\[\s\S]|[^\\`]|``)*`/,greedy:!0},parameter:/\$[\w.]+/,keyword:/\b(?:ADVISE|ALL|ALTER|ANALYZE|AS|ASC|AT|BEGIN|BINARY|BOOLEAN|BREAK|BUCKET|BUILD|BY|CALL|CAST|CLUSTER|COLLATE|COLLECTION|COMMIT|COMMITTED|CONNECT|CONTINUE|CORRELATE|CORRELATED|COVER|CREATE|CURRENT|DATABASE|DATASET|DATASTORE|DECLARE|DECREMENT|DELETE|DERIVED|DESC|DESCRIBE|DISTINCT|DO|DROP|EACH|ELEMENT|EXCEPT|EXCLUDE|EXECUTE|EXPLAIN|FETCH|FILTER|FLATTEN|FLUSH|FOLLOWING|FOR|FORCE|FROM|FTS|FUNCTION|GOLANG|GRANT|GROUP|GROUPS|GSI|HASH|HAVING|IF|IGNORE|ILIKE|INCLUDE|INCREMENT|INDEX|INFER|INLINE|INNER|INSERT|INTERSECT|INTO|IS|ISOLATION|JAVASCRIPT|JOIN|KEY|KEYS|KEYSPACE|KNOWN|LANGUAGE|LAST|LEFT|LET|LETTING|LEVEL|LIMIT|LSM|MAP|MAPPING|MATCHED|MATERIALIZED|MERGE|MINUS|MISSING|NAMESPACE|NEST|NL|NO|NTH_VALUE|NULL|NULLS|NUMBER|OBJECT|OFFSET|ON|OPTION|OPTIONS|ORDER|OTHERS|OUTER|OVER|PARSE|PARTITION|PASSWORD|PATH|POOL|PRECEDING|PREPARE|PRIMARY|PRIVATE|PRIVILEGE|PROBE|PROCEDURE|PUBLIC|RANGE|RAW|REALM|REDUCE|RENAME|RESPECT|RETURN|RETURNING|REVOKE|RIGHT|ROLE|ROLLBACK|ROW|ROWS|SATISFIES|SAVEPOINT|SCHEMA|SCOPE|SELECT|SELF|SEMI|SET|SHOW|SOME|START|STATISTICS|STRING|SYSTEM|TIES|TO|TRAN|TRANSACTION|TRIGGER|TRUNCATE|UNBOUNDED|UNDER|UNION|UNIQUE|UNKNOWN|UNNEST|UNSET|UPDATE|UPSERT|USE|USER|USING|VALIDATE|VALUE|VALUES|VIA|VIEW|WHERE|WHILE|WINDOW|WITH|WORK|XOR)\b/i,function:/\b[a-z_]\w*(?=\s*\()/i,boolean:/\b(?:FALSE|TRUE)\b/i,number:/(?:\b\d+\.|\B\.)\d+e[+\-]?\d+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/%]|!=|==?|\|\||<[>=]?|>=?|\b(?:AND|ANY|ARRAY|BETWEEN|CASE|ELSE|END|EVERY|EXISTS|FIRST|IN|LIKE|NOT|OR|THEN|VALUED|WHEN|WITHIN)\b/i,punctuation:/[;[\](),.{}:]/}}return ww}var Ew,uL;function Nve(){if(uL)return Ew;uL=1,Ew=e,e.displayName="n4js",e.aliases=["n4jsd"];function e(t){t.languages.n4js=t.languages.extend("javascript",{keyword:/\b(?:Array|any|boolean|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|module|new|null|number|package|private|protected|public|return|set|static|string|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/}),t.languages.insertBefore("n4js","constant",{annotation:{pattern:/@+\w+/,alias:"operator"}}),t.languages.n4jsd=t.languages.n4js}return Ew}var xw,dL;function Ive(){if(dL)return xw;dL=1,xw=e,e.displayName="nand2tetrisHdl",e.aliases=[];function e(t){t.languages["nand2tetris-hdl"]={comment:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,keyword:/\b(?:BUILTIN|CHIP|CLOCKED|IN|OUT|PARTS)\b/,boolean:/\b(?:false|true)\b/,function:/\b[A-Za-z][A-Za-z0-9]*(?=\()/,number:/\b\d+\b/,operator:/=|\.\./,punctuation:/[{}[\];(),:]/}}return xw}var kw,fL;function Ove(){if(fL)return kw;fL=1,kw=e,e.displayName="naniscript",e.aliases=[];function e(t){(function(n){var r=/\{[^\r\n\[\]{}]*\}/,a={"quoted-string":{pattern:/"(?:[^"\\]|\\.)*"/,alias:"operator"},"command-param-id":{pattern:/(\s)\w+:/,lookbehind:!0,alias:"property"},"command-param-value":[{pattern:r,alias:"selector"},{pattern:/([\t ])\S+/,lookbehind:!0,greedy:!0,alias:"operator"},{pattern:/\S(?:.*\S)?/,alias:"operator"}]};n.languages.naniscript={comment:{pattern:/^([\t ]*);.*/m,lookbehind:!0},define:{pattern:/^>.+/m,alias:"tag",inside:{value:{pattern:/(^>\w+[\t ]+)(?!\s)[^{}\r\n]+/,lookbehind:!0,alias:"operator"},key:{pattern:/(^>)\w+/,lookbehind:!0}}},label:{pattern:/^([\t ]*)#[\t ]*\w+[\t ]*$/m,lookbehind:!0,alias:"regex"},command:{pattern:/^([\t ]*)@\w+(?=[\t ]|$).*/m,lookbehind:!0,alias:"function",inside:{"command-name":/^@\w+/,expression:{pattern:r,greedy:!0,alias:"selector"},"command-params":{pattern:/\s*\S[\s\S]*/,inside:a}}},"generic-text":{pattern:/(^[ \t]*)[^#@>;\s].*/m,lookbehind:!0,alias:"punctuation",inside:{"escaped-char":/\\[{}\[\]"]/,expression:{pattern:r,greedy:!0,alias:"selector"},"inline-command":{pattern:/\[[\t ]*\w[^\r\n\[\]]*\]/,greedy:!0,alias:"function",inside:{"command-params":{pattern:/(^\[[\t ]*\w+\b)[\s\S]+(?=\]$)/,lookbehind:!0,inside:a},"command-param-name":{pattern:/^(\[[\t ]*)\w+/,lookbehind:!0,alias:"name"},"start-stop-char":/[\[\]]/}}}}},n.languages.nani=n.languages.naniscript,n.hooks.add("after-tokenize",function(s){var l=s.tokens;l.forEach(function(c){if(typeof c!="string"&&c.type==="generic-text"){var u=i(c);o(u)||(c.type="bad-line",c.content=u)}})});function o(s){for(var l="[]{}",c=[],u=0;u=&|$!]/}}return Cw}var _w,gL;function Lve(){if(gL)return _w;gL=1,_w=e,e.displayName="neon",e.aliases=[];function e(t){t.languages.neon={comment:{pattern:/#.*/,greedy:!0},datetime:{pattern:/(^|[[{(=:,\s])\d\d\d\d-\d\d?-\d\d?(?:(?:[Tt]| +)\d\d?:\d\d:\d\d(?:\.\d*)? *(?:Z|[-+]\d\d?(?::?\d\d)?)?)?(?=$|[\]}),\s])/,lookbehind:!0,alias:"number"},key:{pattern:/(^|[[{(,\s])[^,:=[\]{}()'"\s]+(?=\s*:(?:$|[\]}),\s])|\s*=)/,lookbehind:!0,alias:"atrule"},number:{pattern:/(^|[[{(=:,\s])[+-]?(?:0x[\da-fA-F]+|0o[0-7]+|0b[01]+|(?:\d+(?:\.\d*)?|\.?\d+)(?:[eE][+-]?\d+)?)(?=$|[\]}),:=\s])/,lookbehind:!0},boolean:{pattern:/(^|[[{(=:,\s])(?:false|no|true|yes)(?=$|[\]}),:=\s])/i,lookbehind:!0},null:{pattern:/(^|[[{(=:,\s])(?:null)(?=$|[\]}),:=\s])/i,lookbehind:!0,alias:"keyword"},string:{pattern:/(^|[[{(=:,\s])(?:('''|""")\r?\n(?:(?:[^\r\n]|\r?\n(?![\t ]*\2))*\r?\n)?[\t ]*\2|'[^'\r\n]*'|"(?:\\.|[^\\"\r\n])*")/,lookbehind:!0,greedy:!0},literal:{pattern:/(^|[[{(=:,\s])(?:[^#"',:=[\]{}()\s`-]|[:-][^"',=[\]{}()\s])(?:[^,:=\]})(\s]|:(?![\s,\]})]|$)|[ \t]+[^#,:=\]})(\s])*/,lookbehind:!0,alias:"string"},punctuation:/[,:=[\]{}()-]/}}return _w}var Aw,mL;function Mve(){if(mL)return Aw;mL=1,Aw=e,e.displayName="nevod",e.aliases=[];function e(t){t.languages.nevod={comment:/\/\/.*|(?:\/\*[\s\S]*?(?:\*\/|$))/,string:{pattern:/(?:"(?:""|[^"])*"(?!")|'(?:''|[^'])*'(?!'))!?\*?/,greedy:!0,inside:{"string-attrs":/!$|!\*$|\*$/}},namespace:{pattern:/(@namespace\s+)[a-zA-Z0-9\-.]+(?=\s*\{)/,lookbehind:!0},pattern:{pattern:/(@pattern\s+)?#?[a-zA-Z0-9\-.]+(?:\s*\(\s*(?:~\s*)?[a-zA-Z0-9\-.]+\s*(?:,\s*(?:~\s*)?[a-zA-Z0-9\-.]*)*\))?(?=\s*=)/,lookbehind:!0,inside:{"pattern-name":{pattern:/^#?[a-zA-Z0-9\-.]+/,alias:"class-name"},fields:{pattern:/\(.*\)/,inside:{"field-name":{pattern:/[a-zA-Z0-9\-.]+/,alias:"variable"},punctuation:/[,()]/,operator:{pattern:/~/,alias:"field-hidden-mark"}}}}},search:{pattern:/(@search\s+|#)[a-zA-Z0-9\-.]+(?:\.\*)?(?=\s*;)/,alias:"function",lookbehind:!0},keyword:/@(?:having|inside|namespace|outside|pattern|require|search|where)\b/,"standard-pattern":{pattern:/\b(?:Alpha|AlphaNum|Any|Blank|End|LineBreak|Num|NumAlpha|Punct|Space|Start|Symbol|Word|WordBreak)\b(?:\([a-zA-Z0-9\-.,\s+]*\))?/,inside:{"standard-pattern-name":{pattern:/^[a-zA-Z0-9\-.]+/,alias:"builtin"},quantifier:{pattern:/\b\d+(?:\s*\+|\s*-\s*\d+)?(?!\w)/,alias:"number"},"standard-pattern-attr":{pattern:/[a-zA-Z0-9\-.]+/,alias:"builtin"},punctuation:/[,()]/}},quantifier:{pattern:/\b\d+(?:\s*\+|\s*-\s*\d+)?(?!\w)/,alias:"number"},operator:[{pattern:/=/,alias:"pattern-def"},{pattern:/&/,alias:"conjunction"},{pattern:/~/,alias:"exception"},{pattern:/\?/,alias:"optionality"},{pattern:/[[\]]/,alias:"repetition"},{pattern:/[{}]/,alias:"variation"},{pattern:/[+_]/,alias:"sequence"},{pattern:/\.{2,3}/,alias:"span"}],"field-capture":[{pattern:/([a-zA-Z0-9\-.]+\s*\()\s*[a-zA-Z0-9\-.]+\s*:\s*[a-zA-Z0-9\-.]+(?:\s*,\s*[a-zA-Z0-9\-.]+\s*:\s*[a-zA-Z0-9\-.]+)*(?=\s*\))/,lookbehind:!0,inside:{"field-name":{pattern:/[a-zA-Z0-9\-.]+/,alias:"variable"},colon:/:/}},{pattern:/[a-zA-Z0-9\-.]+\s*:/,inside:{"field-name":{pattern:/[a-zA-Z0-9\-.]+/,alias:"variable"},colon:/:/}}],punctuation:/[:;,()]/,name:/[a-zA-Z0-9\-.]+/}}return Aw}var Tw,hL;function Pve(){if(hL)return Tw;hL=1,Tw=e,e.displayName="nginx",e.aliases=[];function e(t){(function(n){var r=/\$(?:\w[a-z\d]*(?:_[^\x00-\x1F\s"'\\()$]*)?|\{[^}\s"'\\]+\})/i;n.languages.nginx={comment:{pattern:/(^|[\s{};])#.*/,lookbehind:!0,greedy:!0},directive:{pattern:/(^|\s)\w(?:[^;{}"'\\\s]|\\.|"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|\s+(?:#.*(?!.)|(?![#\s])))*?(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:{string:{pattern:/((?:^|[^\\])(?:\\\\)*)(?:"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')/,lookbehind:!0,greedy:!0,inside:{escape:{pattern:/\\["'\\nrt]/,alias:"entity"},variable:r}},comment:{pattern:/(\s)#.*/,lookbehind:!0,greedy:!0},keyword:{pattern:/^\S+/,greedy:!0},boolean:{pattern:/(\s)(?:off|on)(?!\S)/,lookbehind:!0},number:{pattern:/(\s)\d+[a-z]*(?!\S)/i,lookbehind:!0},variable:r}},punctuation:/[{};]/}})(t)}return Tw}var Rw,bL;function $ve(){if(bL)return Rw;bL=1,Rw=e,e.displayName="nim",e.aliases=[];function e(t){t.languages.nim={comment:{pattern:/#.*/,greedy:!0},string:{pattern:/(?:\b(?!\d)(?:\w|\\x[89a-fA-F][0-9a-fA-F])+)?(?:"""[\s\S]*?"""(?!")|"(?:\\[\s\S]|""|[^"\\])*")/,greedy:!0},char:{pattern:/'(?:\\(?:\d+|x[\da-fA-F]{0,2}|.)|[^'])'/,greedy:!0},function:{pattern:/(?:(?!\d)(?:\w|\\x[89a-fA-F][0-9a-fA-F])+|`[^`\r\n]+`)\*?(?:\[[^\]]+\])?(?=\s*\()/,greedy:!0,inside:{operator:/\*$/}},identifier:{pattern:/`[^`\r\n]+`/,greedy:!0,inside:{punctuation:/`/}},number:/\b(?:0[xXoObB][\da-fA-F_]+|\d[\d_]*(?:(?!\.\.)\.[\d_]*)?(?:[eE][+-]?\d[\d_]*)?)(?:'?[iuf]\d*)?/,keyword:/\b(?:addr|as|asm|atomic|bind|block|break|case|cast|concept|const|continue|converter|defer|discard|distinct|do|elif|else|end|enum|except|export|finally|for|from|func|generic|if|import|include|interface|iterator|let|macro|method|mixin|nil|object|out|proc|ptr|raise|ref|return|static|template|try|tuple|type|using|var|when|while|with|without|yield)\b/,operator:{pattern:/(^|[({\[](?=\.\.)|(?![({\[]\.).)(?:(?:[=+\-*\/<>@$~&%|!?^:\\]|\.\.|\.(?![)}\]]))+|\b(?:and|div|in|is|isnot|mod|not|notin|of|or|shl|shr|xor)\b)/m,lookbehind:!0},punctuation:/[({\[]\.|\.[)}\]]|[`(){}\[\],:]/}}return Rw}var Nw,yL;function Fve(){if(yL)return Nw;yL=1,Nw=e,e.displayName="nix",e.aliases=[];function e(t){t.languages.nix={comment:{pattern:/\/\*[\s\S]*?\*\/|#.*/,greedy:!0},string:{pattern:/"(?:[^"\\]|\\[\s\S])*"|''(?:(?!'')[\s\S]|''(?:'|\\|\$\{))*''/,greedy:!0,inside:{interpolation:{pattern:/(^|(?:^|(?!'').)[^\\])\$\{(?:[^{}]|\{[^}]*\})*\}/,lookbehind:!0,inside:null}}},url:[/\b(?:[a-z]{3,7}:\/\/)[\w\-+%~\/.:#=?&]+/,{pattern:/([^\/])(?:[\w\-+%~.:#=?&]*(?!\/\/)[\w\-+%~\/.:#=?&])?(?!\/\/)\/[\w\-+%~\/.:#=?&]*/,lookbehind:!0}],antiquotation:{pattern:/\$(?=\{)/,alias:"important"},number:/\b\d+\b/,keyword:/\b(?:assert|builtins|else|if|in|inherit|let|null|or|then|with)\b/,function:/\b(?:abort|add|all|any|attrNames|attrValues|baseNameOf|compareVersions|concatLists|currentSystem|deepSeq|derivation|dirOf|div|elem(?:At)?|fetch(?:Tarball|url)|filter(?:Source)?|fromJSON|genList|getAttr|getEnv|hasAttr|hashString|head|import|intersectAttrs|is(?:Attrs|Bool|Function|Int|List|Null|String)|length|lessThan|listToAttrs|map|mul|parseDrvName|pathExists|read(?:Dir|File)|removeAttrs|replaceStrings|seq|sort|stringLength|sub(?:string)?|tail|throw|to(?:File|JSON|Path|String|XML)|trace|typeOf)\b|\bfoldl'\B/,boolean:/\b(?:false|true)\b/,operator:/[=!<>]=?|\+\+?|\|\||&&|\/\/|->?|[?@]/,punctuation:/[{}()[\].,:;]/},t.languages.nix.string.inside.interpolation.inside=t.languages.nix}return Nw}var Iw,vL;function jve(){if(vL)return Iw;vL=1,Iw=e,e.displayName="nsis",e.aliases=[];function e(t){t.languages.nsis={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|[#;].*)/,lookbehind:!0,greedy:!0},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},keyword:{pattern:/(^[\t ]*)(?:Abort|Add(?:BrandingImage|Size)|AdvSplash|Allow(?:RootDirInstall|SkipFiles)|AutoCloseWindow|BG(?:Font|Gradient|Image)|Banner|BrandingText|BringToFront|CRCCheck|Call(?:InstDLL)?|Caption|ChangeUI|CheckBitmap|ClearErrors|CompletedText|ComponentText|CopyFiles|Create(?:Directory|Font|ShortCut)|Delete(?:INISec|INIStr|RegKey|RegValue)?|Detail(?:Print|sButtonText)|Dialer|Dir(?:Text|Var|Verify)|EnableWindow|Enum(?:RegKey|RegValue)|Exch|Exec(?:Shell(?:Wait)?|Wait)?|ExpandEnvStrings|File(?:BufSize|Close|ErrorText|Open|Read|ReadByte|ReadUTF16LE|ReadWord|Seek|Write|WriteByte|WriteUTF16LE|WriteWord)?|Find(?:Close|First|Next|Window)|FlushINI|Get(?:CurInstType|CurrentAddress|DLLVersion(?:Local)?|DlgItem|ErrorLevel|FileTime(?:Local)?|FullPathName|Function(?:Address|End)?|InstDirError|LabelAddress|TempFileName)|Goto|HideWindow|Icon|If(?:Abort|Errors|FileExists|RebootFlag|Silent)|InitPluginsDir|InstProgressFlags|Inst(?:Type(?:GetText|SetText)?)|Install(?:ButtonText|Colors|Dir(?:RegKey)?)|Int(?:64|Ptr)?CmpU?|Int(?:64)?Fmt|Int(?:Ptr)?Op|IsWindow|Lang(?:DLL|String)|License(?:BkColor|Data|ForceSelection|LangString|Text)|LoadLanguageFile|LockWindow|Log(?:Set|Text)|Manifest(?:DPIAware|SupportedOS)|Math|MessageBox|MiscButtonText|NSISdl|Name|Nop|OutFile|PE(?:DllCharacteristics|SubsysVer)|Page(?:Callbacks)?|Pop|Push|Quit|RMDir|Read(?:EnvStr|INIStr|RegDWORD|RegStr)|Reboot|RegDLL|Rename|RequestExecutionLevel|ReserveFile|Return|SearchPath|Section(?:End|GetFlags|GetInstTypes|GetSize|GetText|Group|In|SetFlags|SetInstTypes|SetSize|SetText)?|SendMessage|Set(?:AutoClose|BrandingImage|Compress|Compressor(?:DictSize)?|CtlColors|CurInstType|DatablockOptimize|DateSave|Details(?:Print|View)|ErrorLevel|Errors|FileAttributes|Font|OutPath|Overwrite|PluginUnload|RebootFlag|RegView|ShellVarContext|Silent)|Show(?:InstDetails|UninstDetails|Window)|Silent(?:Install|UnInstall)|Sleep|SpaceTexts|Splash|StartMenu|Str(?:CmpS?|Cpy|Len)|SubCaption|System|UnRegDLL|Unicode|UninstPage|Uninstall(?:ButtonText|Caption|Icon|SubCaption|Text)|UserInfo|VI(?:AddVersionKey|FileVersion|ProductVersion)|VPatch|Var|WindowIcon|Write(?:INIStr|Reg(?:Bin|DWORD|ExpandStr|MultiStr|None|Str)|Uninstaller)|XPStyle|ns(?:Dialogs|Exec))\b/m,lookbehind:!0},property:/\b(?:ARCHIVE|FILE_(?:ATTRIBUTE_ARCHIVE|ATTRIBUTE_NORMAL|ATTRIBUTE_OFFLINE|ATTRIBUTE_READONLY|ATTRIBUTE_SYSTEM|ATTRIBUTE_TEMPORARY)|HK(?:(?:CR|CU|LM)(?:32|64)?|DD|PD|U)|HKEY_(?:CLASSES_ROOT|CURRENT_CONFIG|CURRENT_USER|DYN_DATA|LOCAL_MACHINE|PERFORMANCE_DATA|USERS)|ID(?:ABORT|CANCEL|IGNORE|NO|OK|RETRY|YES)|MB_(?:ABORTRETRYIGNORE|DEFBUTTON1|DEFBUTTON2|DEFBUTTON3|DEFBUTTON4|ICONEXCLAMATION|ICONINFORMATION|ICONQUESTION|ICONSTOP|OK|OKCANCEL|RETRYCANCEL|RIGHT|RTLREADING|SETFOREGROUND|TOPMOST|USERICON|YESNO)|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SYSTEM|TEMPORARY|admin|all|auto|both|colored|false|force|hide|highest|lastused|leave|listonly|none|normal|notset|off|on|open|print|show|silent|silentlog|smooth|textonly|true|user)\b/,constant:/\$\{[!\w\.:\^-]+\}|\$\([!\w\.:\^-]+\)/,variable:/\$\w[\w\.]*/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--?|\+\+?|<=?|>=?|==?=?|&&?|\|\|?|[?*\/~^%]/,punctuation:/[{}[\];(),.:]/,important:{pattern:/(^[\t ]*)!(?:addincludedir|addplugindir|appendfile|cd|define|delfile|echo|else|endif|error|execute|finalize|getdllversion|gettlbversion|if|ifdef|ifmacrodef|ifmacrondef|ifndef|include|insertmacro|macro|macroend|makensis|packhdr|pragma|searchparse|searchreplace|system|tempfile|undef|verbose|warning)\b/im,lookbehind:!0}}}return Iw}var Ow,SL;function zve(){if(SL)return Ow;SL=1;var e=Ws();Ow=t,t.displayName="objectivec",t.aliases=["objc"];function t(n){n.register(e),n.languages.objectivec=n.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete n.languages.objectivec["class-name"],n.languages.objc=n.languages.objectivec}return Ow}var Dw,wL;function Uve(){if(wL)return Dw;wL=1,Dw=e,e.displayName="ocaml",e.aliases=[];function e(t){t.languages.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:"property"},label:{pattern:/\B~\w+/,alias:"property"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"symbol"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:"punctuation"},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/}}return Dw}var Lw,EL;function Bve(){if(EL)return Lw;EL=1;var e=Ws();Lw=t,t.displayName="opencl",t.aliases=[];function t(n){n.register(e),function(r){r.languages.opencl=r.languages.extend("c",{keyword:/\b(?:(?:__)?(?:constant|global|kernel|local|private|read_only|read_write|write_only)|__attribute__|auto|(?:bool|u?(?:char|int|long|short)|half|quad)(?:2|3|4|8|16)?|break|case|complex|const|continue|(?:double|float)(?:16(?:x(?:1|2|4|8|16))?|1x(?:1|2|4|8|16)|2(?:x(?:1|2|4|8|16))?|3|4(?:x(?:1|2|4|8|16))?|8(?:x(?:1|2|4|8|16))?)?|default|do|else|enum|extern|for|goto|if|imaginary|inline|packed|pipe|register|restrict|return|signed|sizeof|static|struct|switch|typedef|uniform|union|unsigned|void|volatile|while)\b/,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[fuhl]{0,4}/i,boolean:/\b(?:false|true)\b/,"constant-opencl-kernel":{pattern:/\b(?:CHAR_(?:BIT|MAX|MIN)|CLK_(?:ADDRESS_(?:CLAMP(?:_TO_EDGE)?|NONE|REPEAT)|FILTER_(?:LINEAR|NEAREST)|(?:GLOBAL|LOCAL)_MEM_FENCE|NORMALIZED_COORDS_(?:FALSE|TRUE))|CL_(?:BGRA|(?:HALF_)?FLOAT|INTENSITY|LUMINANCE|A?R?G?B?[Ax]?|(?:(?:UN)?SIGNED|[US]NORM)_(?:INT(?:8|16|32))|UNORM_(?:INT_101010|SHORT_(?:555|565)))|(?:DBL|FLT|HALF)_(?:DIG|EPSILON|(?:MAX|MIN)(?:(?:_10)?_EXP)?|MANT_DIG)|FLT_RADIX|HUGE_VALF?|(?:INT|LONG|SCHAR|SHRT)_(?:MAX|MIN)|INFINITY|MAXFLOAT|M_(?:[12]_PI|2_SQRTPI|E|LN(?:2|10)|LOG(?:2|10)E?|PI(?:_[24])?|SQRT(?:1_2|2))(?:_F|_H)?|NAN|(?:UCHAR|UINT|ULONG|USHRT)_MAX)\b/,alias:"constant"}}),r.languages.insertBefore("opencl","class-name",{"builtin-type":{pattern:/\b(?:_cl_(?:command_queue|context|device_id|event|kernel|mem|platform_id|program|sampler)|cl_(?:image_format|mem_fence_flags)|clk_event_t|event_t|image(?:1d_(?:array_|buffer_)?t|2d_(?:array_(?:depth_|msaa_depth_|msaa_)?|depth_|msaa_depth_|msaa_)?t|3d_t)|intptr_t|ndrange_t|ptrdiff_t|queue_t|reserve_id_t|sampler_t|size_t|uintptr_t)\b/,alias:"keyword"}});var a={"type-opencl-host":{pattern:/\b(?:cl_(?:GLenum|GLint|GLuin|addressing_mode|bitfield|bool|buffer_create_type|build_status|channel_(?:order|type)|(?:u?(?:char|int|long|short)|double|float)(?:2|3|4|8|16)?|command_(?:queue(?:_info|_properties)?|type)|context(?:_info|_properties)?|device_(?:exec_capabilities|fp_config|id|info|local_mem_type|mem_cache_type|type)|(?:event|sampler)(?:_info)?|filter_mode|half|image_info|kernel(?:_info|_work_group_info)?|map_flags|mem(?:_flags|_info|_object_type)?|platform_(?:id|info)|profiling_info|program(?:_build_info|_info)?))\b/,alias:"keyword"},"boolean-opencl-host":{pattern:/\bCL_(?:FALSE|TRUE)\b/,alias:"boolean"},"constant-opencl-host":{pattern:/\bCL_(?:A|ABGR|ADDRESS_(?:CLAMP(?:_TO_EDGE)?|MIRRORED_REPEAT|NONE|REPEAT)|ARGB|BGRA|BLOCKING|BUFFER_CREATE_TYPE_REGION|BUILD_(?:ERROR|IN_PROGRESS|NONE|PROGRAM_FAILURE|SUCCESS)|COMMAND_(?:ACQUIRE_GL_OBJECTS|BARRIER|COPY_(?:BUFFER(?:_RECT|_TO_IMAGE)?|IMAGE(?:_TO_BUFFER)?)|FILL_(?:BUFFER|IMAGE)|MAP(?:_BUFFER|_IMAGE)|MARKER|MIGRATE(?:_SVM)?_MEM_OBJECTS|NATIVE_KERNEL|NDRANGE_KERNEL|READ_(?:BUFFER(?:_RECT)?|IMAGE)|RELEASE_GL_OBJECTS|SVM_(?:FREE|MAP|MEMCPY|MEMFILL|UNMAP)|TASK|UNMAP_MEM_OBJECT|USER|WRITE_(?:BUFFER(?:_RECT)?|IMAGE))|COMPILER_NOT_AVAILABLE|COMPILE_PROGRAM_FAILURE|COMPLETE|CONTEXT_(?:DEVICES|INTEROP_USER_SYNC|NUM_DEVICES|PLATFORM|PROPERTIES|REFERENCE_COUNT)|DEPTH(?:_STENCIL)?|DEVICE_(?:ADDRESS_BITS|AFFINITY_DOMAIN_(?:L[1-4]_CACHE|NEXT_PARTITIONABLE|NUMA)|AVAILABLE|BUILT_IN_KERNELS|COMPILER_AVAILABLE|DOUBLE_FP_CONFIG|ENDIAN_LITTLE|ERROR_CORRECTION_SUPPORT|EXECUTION_CAPABILITIES|EXTENSIONS|GLOBAL_(?:MEM_(?:CACHELINE_SIZE|CACHE_SIZE|CACHE_TYPE|SIZE)|VARIABLE_PREFERRED_TOTAL_SIZE)|HOST_UNIFIED_MEMORY|IL_VERSION|IMAGE(?:2D_MAX_(?:HEIGHT|WIDTH)|3D_MAX_(?:DEPTH|HEIGHT|WIDTH)|_BASE_ADDRESS_ALIGNMENT|_MAX_ARRAY_SIZE|_MAX_BUFFER_SIZE|_PITCH_ALIGNMENT|_SUPPORT)|LINKER_AVAILABLE|LOCAL_MEM_SIZE|LOCAL_MEM_TYPE|MAX_(?:CLOCK_FREQUENCY|COMPUTE_UNITS|CONSTANT_ARGS|CONSTANT_BUFFER_SIZE|GLOBAL_VARIABLE_SIZE|MEM_ALLOC_SIZE|NUM_SUB_GROUPS|ON_DEVICE_(?:EVENTS|QUEUES)|PARAMETER_SIZE|PIPE_ARGS|READ_IMAGE_ARGS|READ_WRITE_IMAGE_ARGS|SAMPLERS|WORK_GROUP_SIZE|WORK_ITEM_DIMENSIONS|WORK_ITEM_SIZES|WRITE_IMAGE_ARGS)|MEM_BASE_ADDR_ALIGN|MIN_DATA_TYPE_ALIGN_SIZE|NAME|NATIVE_VECTOR_WIDTH_(?:CHAR|DOUBLE|FLOAT|HALF|INT|LONG|SHORT)|NOT_(?:AVAILABLE|FOUND)|OPENCL_C_VERSION|PARENT_DEVICE|PARTITION_(?:AFFINITY_DOMAIN|BY_AFFINITY_DOMAIN|BY_COUNTS|BY_COUNTS_LIST_END|EQUALLY|FAILED|MAX_SUB_DEVICES|PROPERTIES|TYPE)|PIPE_MAX_(?:ACTIVE_RESERVATIONS|PACKET_SIZE)|PLATFORM|PREFERRED_(?:GLOBAL_ATOMIC_ALIGNMENT|INTEROP_USER_SYNC|LOCAL_ATOMIC_ALIGNMENT|PLATFORM_ATOMIC_ALIGNMENT|VECTOR_WIDTH_(?:CHAR|DOUBLE|FLOAT|HALF|INT|LONG|SHORT))|PRINTF_BUFFER_SIZE|PROFILE|PROFILING_TIMER_RESOLUTION|QUEUE_(?:ON_(?:DEVICE_(?:MAX_SIZE|PREFERRED_SIZE|PROPERTIES)|HOST_PROPERTIES)|PROPERTIES)|REFERENCE_COUNT|SINGLE_FP_CONFIG|SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS|SVM_(?:ATOMICS|CAPABILITIES|COARSE_GRAIN_BUFFER|FINE_GRAIN_BUFFER|FINE_GRAIN_SYSTEM)|TYPE(?:_ACCELERATOR|_ALL|_CPU|_CUSTOM|_DEFAULT|_GPU)?|VENDOR(?:_ID)?|VERSION)|DRIVER_VERSION|EVENT_(?:COMMAND_(?:EXECUTION_STATUS|QUEUE|TYPE)|CONTEXT|REFERENCE_COUNT)|EXEC_(?:KERNEL|NATIVE_KERNEL|STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST)|FILTER_(?:LINEAR|NEAREST)|FLOAT|FP_(?:CORRECTLY_ROUNDED_DIVIDE_SQRT|DENORM|FMA|INF_NAN|ROUND_TO_INF|ROUND_TO_NEAREST|ROUND_TO_ZERO|SOFT_FLOAT)|GLOBAL|HALF_FLOAT|IMAGE_(?:ARRAY_SIZE|BUFFER|DEPTH|ELEMENT_SIZE|FORMAT|FORMAT_MISMATCH|FORMAT_NOT_SUPPORTED|HEIGHT|NUM_MIP_LEVELS|NUM_SAMPLES|ROW_PITCH|SLICE_PITCH|WIDTH)|INTENSITY|INVALID_(?:ARG_INDEX|ARG_SIZE|ARG_VALUE|BINARY|BUFFER_SIZE|BUILD_OPTIONS|COMMAND_QUEUE|COMPILER_OPTIONS|CONTEXT|DEVICE|DEVICE_PARTITION_COUNT|DEVICE_QUEUE|DEVICE_TYPE|EVENT|EVENT_WAIT_LIST|GLOBAL_OFFSET|GLOBAL_WORK_SIZE|GL_OBJECT|HOST_PTR|IMAGE_DESCRIPTOR|IMAGE_FORMAT_DESCRIPTOR|IMAGE_SIZE|KERNEL|KERNEL_ARGS|KERNEL_DEFINITION|KERNEL_NAME|LINKER_OPTIONS|MEM_OBJECT|MIP_LEVEL|OPERATION|PIPE_SIZE|PLATFORM|PROGRAM|PROGRAM_EXECUTABLE|PROPERTY|QUEUE_PROPERTIES|SAMPLER|VALUE|WORK_DIMENSION|WORK_GROUP_SIZE|WORK_ITEM_SIZE)|KERNEL_(?:ARG_(?:ACCESS_(?:NONE|QUALIFIER|READ_ONLY|READ_WRITE|WRITE_ONLY)|ADDRESS_(?:CONSTANT|GLOBAL|LOCAL|PRIVATE|QUALIFIER)|INFO_NOT_AVAILABLE|NAME|TYPE_(?:CONST|NAME|NONE|PIPE|QUALIFIER|RESTRICT|VOLATILE))|ATTRIBUTES|COMPILE_NUM_SUB_GROUPS|COMPILE_WORK_GROUP_SIZE|CONTEXT|EXEC_INFO_SVM_FINE_GRAIN_SYSTEM|EXEC_INFO_SVM_PTRS|FUNCTION_NAME|GLOBAL_WORK_SIZE|LOCAL_MEM_SIZE|LOCAL_SIZE_FOR_SUB_GROUP_COUNT|MAX_NUM_SUB_GROUPS|MAX_SUB_GROUP_SIZE_FOR_NDRANGE|NUM_ARGS|PREFERRED_WORK_GROUP_SIZE_MULTIPLE|PRIVATE_MEM_SIZE|PROGRAM|REFERENCE_COUNT|SUB_GROUP_COUNT_FOR_NDRANGE|WORK_GROUP_SIZE)|LINKER_NOT_AVAILABLE|LINK_PROGRAM_FAILURE|LOCAL|LUMINANCE|MAP_(?:FAILURE|READ|WRITE|WRITE_INVALIDATE_REGION)|MEM_(?:ALLOC_HOST_PTR|ASSOCIATED_MEMOBJECT|CONTEXT|COPY_HOST_PTR|COPY_OVERLAP|FLAGS|HOST_NO_ACCESS|HOST_PTR|HOST_READ_ONLY|HOST_WRITE_ONLY|KERNEL_READ_AND_WRITE|MAP_COUNT|OBJECT_(?:ALLOCATION_FAILURE|BUFFER|IMAGE1D|IMAGE1D_ARRAY|IMAGE1D_BUFFER|IMAGE2D|IMAGE2D_ARRAY|IMAGE3D|PIPE)|OFFSET|READ_ONLY|READ_WRITE|REFERENCE_COUNT|SIZE|SVM_ATOMICS|SVM_FINE_GRAIN_BUFFER|TYPE|USES_SVM_POINTER|USE_HOST_PTR|WRITE_ONLY)|MIGRATE_MEM_OBJECT_(?:CONTENT_UNDEFINED|HOST)|MISALIGNED_SUB_BUFFER_OFFSET|NONE|NON_BLOCKING|OUT_OF_(?:HOST_MEMORY|RESOURCES)|PIPE_(?:MAX_PACKETS|PACKET_SIZE)|PLATFORM_(?:EXTENSIONS|HOST_TIMER_RESOLUTION|NAME|PROFILE|VENDOR|VERSION)|PROFILING_(?:COMMAND_(?:COMPLETE|END|QUEUED|START|SUBMIT)|INFO_NOT_AVAILABLE)|PROGRAM_(?:BINARIES|BINARY_SIZES|BINARY_TYPE(?:_COMPILED_OBJECT|_EXECUTABLE|_LIBRARY|_NONE)?|BUILD_(?:GLOBAL_VARIABLE_TOTAL_SIZE|LOG|OPTIONS|STATUS)|CONTEXT|DEVICES|IL|KERNEL_NAMES|NUM_DEVICES|NUM_KERNELS|REFERENCE_COUNT|SOURCE)|QUEUED|QUEUE_(?:CONTEXT|DEVICE|DEVICE_DEFAULT|ON_DEVICE|ON_DEVICE_DEFAULT|OUT_OF_ORDER_EXEC_MODE_ENABLE|PROFILING_ENABLE|PROPERTIES|REFERENCE_COUNT|SIZE)|R|RA|READ_(?:ONLY|WRITE)_CACHE|RG|RGB|RGBA|RGBx|RGx|RUNNING|Rx|SAMPLER_(?:ADDRESSING_MODE|CONTEXT|FILTER_MODE|LOD_MAX|LOD_MIN|MIP_FILTER_MODE|NORMALIZED_COORDS|REFERENCE_COUNT)|(?:UN)?SIGNED_INT(?:8|16|32)|SNORM_INT(?:8|16)|SUBMITTED|SUCCESS|UNORM_INT(?:8|16|24|_101010|_101010_2)|UNORM_SHORT_(?:555|565)|VERSION_(?:1_0|1_1|1_2|2_0|2_1)|sBGRA|sRGB|sRGBA|sRGBx)\b/,alias:"constant"},"function-opencl-host":{pattern:/\bcl(?:BuildProgram|CloneKernel|CompileProgram|Create(?:Buffer|CommandQueue(?:WithProperties)?|Context|ContextFromType|Image|Image2D|Image3D|Kernel|KernelsInProgram|Pipe|ProgramWith(?:Binary|BuiltInKernels|IL|Source)|Sampler|SamplerWithProperties|SubBuffer|SubDevices|UserEvent)|Enqueue(?:(?:Barrier|Marker)(?:WithWaitList)?|Copy(?:Buffer(?:Rect|ToImage)?|Image(?:ToBuffer)?)|(?:Fill|Map)(?:Buffer|Image)|MigrateMemObjects|NDRangeKernel|NativeKernel|(?:Read|Write)(?:Buffer(?:Rect)?|Image)|SVM(?:Free|Map|MemFill|Memcpy|MigrateMem|Unmap)|Task|UnmapMemObject|WaitForEvents)|Finish|Flush|Get(?:CommandQueueInfo|ContextInfo|Device(?:AndHostTimer|IDs|Info)|Event(?:Profiling)?Info|ExtensionFunctionAddress(?:ForPlatform)?|HostTimer|ImageInfo|Kernel(?:ArgInfo|Info|SubGroupInfo|WorkGroupInfo)|MemObjectInfo|PipeInfo|Platform(?:IDs|Info)|Program(?:Build)?Info|SamplerInfo|SupportedImageFormats)|LinkProgram|(?:Release|Retain)(?:CommandQueue|Context|Device|Event|Kernel|MemObject|Program|Sampler)|SVM(?:Alloc|Free)|Set(?:CommandQueueProperty|DefaultDeviceCommandQueue|EventCallback|Kernel|Kernel(?:Arg(?:SVMPointer)?|ExecInfo)|MemObjectDestructorCallback|UserEventStatus)|Unload(?:Platform)?Compiler|WaitForEvents)\b/,alias:"function"}};r.languages.insertBefore("c","keyword",a),r.languages.cpp&&(a["type-opencl-host-cpp"]={pattern:/\b(?:Buffer|BufferGL|BufferRenderGL|CommandQueue|Context|Device|DeviceCommandQueue|EnqueueArgs|Event|Image|Image1D|Image1DArray|Image1DBuffer|Image2D|Image2DArray|Image2DGL|Image3D|Image3DGL|ImageFormat|ImageGL|Kernel|KernelFunctor|LocalSpaceArg|Memory|NDRange|Pipe|Platform|Program|SVMAllocator|SVMTraitAtomic|SVMTraitCoarse|SVMTraitFine|SVMTraitReadOnly|SVMTraitReadWrite|SVMTraitWriteOnly|Sampler|UserEvent)\b/,alias:"keyword"},r.languages.insertBefore("cpp","keyword",a))}(n)}return Lw}var Mw,xL;function Hve(){if(xL)return Mw;xL=1,Mw=e,e.displayName="openqasm",e.aliases=["qasm"];function e(t){t.languages.openqasm={comment:/\/\*[\s\S]*?\*\/|\/\/.*/,string:{pattern:/"[^"\r\n\t]*"|'[^'\r\n\t]*'/,greedy:!0},keyword:/\b(?:CX|OPENQASM|U|barrier|boxas|boxto|break|const|continue|ctrl|def|defcal|defcalgrammar|delay|else|end|for|gate|gphase|if|in|include|inv|kernel|lengthof|let|measure|pow|reset|return|rotary|stretchinf|while)\b|#pragma\b/,"class-name":/\b(?:angle|bit|bool|creg|fixed|float|int|length|qreg|qubit|stretch|uint)\b/,function:/\b(?:cos|exp|ln|popcount|rotl|rotr|sin|sqrt|tan)\b(?=\s*\()/,constant:/\b(?:euler|pi|tau)\b|π|𝜏|ℇ/,number:{pattern:/(^|[^.\w$])(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?(?:dt|ns|us|µs|ms|s)?/i,lookbehind:!0},operator:/->|>>=?|<<=?|&&|\|\||\+\+|--|[!=<>&|~^+\-*/%]=?|@/,punctuation:/[(){}\[\];,:.]/},t.languages.qasm=t.languages.openqasm}return Mw}var Pw,kL;function Vve(){if(kL)return Pw;kL=1,Pw=e,e.displayName="oz",e.aliases=[];function e(t){t.languages.oz={comment:{pattern:/\/\*[\s\S]*?\*\/|%.*/,greedy:!0},string:{pattern:/"(?:[^"\\]|\\[\s\S])*"/,greedy:!0},atom:{pattern:/'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,alias:"builtin"},keyword:/\$|\[\]|\b(?:_|at|attr|case|catch|choice|class|cond|declare|define|dis|else(?:case|if)?|end|export|fail|false|feat|finally|from|fun|functor|if|import|in|local|lock|meth|nil|not|of|or|prepare|proc|prop|raise|require|self|skip|then|thread|true|try|unit)\b/,function:[/\b[a-z][A-Za-z\d]*(?=\()/,{pattern:/(\{)[A-Z][A-Za-z\d]*\b/,lookbehind:!0}],number:/\b(?:0[bx][\da-f]+|\d+(?:\.\d*)?(?:e~?\d+)?)\b|&(?:[^\\]|\\(?:\d{3}|.))/i,variable:/`(?:[^`\\]|\\.)+`/,"attr-name":/\b\w+(?=[ \t]*:(?![:=]))/,operator:/:(?:=|::?)|<[-:=]?|=(?:=|=?:?|\\=:?|!!?|[|#+\-*\/,~^@]|\b(?:andthen|div|mod|orelse)\b/,punctuation:/[\[\](){}.:;?]/}}return Pw}var $w,CL;function qve(){if(CL)return $w;CL=1,$w=e,e.displayName="parigp",e.aliases=[];function e(t){t.languages.parigp={comment:/\/\*[\s\S]*?\*\/|\\\\.*/,string:{pattern:/"(?:[^"\\\r\n]|\\.)*"/,greedy:!0},keyword:function(){var n=["breakpoint","break","dbg_down","dbg_err","dbg_up","dbg_x","forcomposite","fordiv","forell","forpart","forprime","forstep","forsubgroup","forvec","for","iferr","if","local","my","next","return","until","while"];return n=n.map(function(r){return r.split("").join(" *")}).join("|"),RegExp("\\b(?:"+n+")\\b")}(),function:/\b\w(?:[\w ]*\w)?(?= *\()/,number:{pattern:/((?:\. *\. *)?)(?:\b\d(?: *\d)*(?: *(?!\. *\.)\.(?: *\d)*)?|\. *\d(?: *\d)*)(?: *e *(?:[+-] *)?\d(?: *\d)*)?/i,lookbehind:!0},operator:/\. *\.|[*\/!](?: *=)?|%(?: *=|(?: *#)?(?: *')*)?|\+(?: *[+=])?|-(?: *[-=>])?|<(?: *>|(?: *<)?(?: *=)?)?|>(?: *>)?(?: *=)?|=(?: *=){0,2}|\\(?: *\/)?(?: *=)?|&(?: *&)?|\| *\||['#~^]/,punctuation:/[\[\]{}().,:;|]/}}return $w}var Fw,_L;function Gve(){if(_L)return Fw;_L=1,Fw=e,e.displayName="parser",e.aliases=[];function e(t){(function(n){var r=n.languages.parser=n.languages.extend("markup",{keyword:{pattern:/(^|[^^])(?:\^(?:case|eval|for|if|switch|throw)\b|@(?:BASE|CLASS|GET(?:_DEFAULT)?|OPTIONS|SET_DEFAULT|USE)\b)/,lookbehind:!0},variable:{pattern:/(^|[^^])\B\$(?:\w+|(?=[.{]))(?:(?:\.|::?)\w+)*(?:\.|::?)?/,lookbehind:!0,inside:{punctuation:/\.|:+/}},function:{pattern:/(^|[^^])\B[@^]\w+(?:(?:\.|::?)\w+)*(?:\.|::?)?/,lookbehind:!0,inside:{keyword:{pattern:/(^@)(?:GET_|SET_)/,lookbehind:!0},punctuation:/\.|:+/}},escape:{pattern:/\^(?:[$^;@()\[\]{}"':]|#[a-f\d]*)/i,alias:"builtin"},punctuation:/[\[\](){};]/});r=n.languages.insertBefore("parser","keyword",{"parser-comment":{pattern:/(\s)#.*/,lookbehind:!0,alias:"comment"},expression:{pattern:/(^|[^^])\((?:[^()]|\((?:[^()]|\((?:[^()])*\))*\))*\)/,greedy:!0,lookbehind:!0,inside:{string:{pattern:/(^|[^^])(["'])(?:(?!\2)[^^]|\^[\s\S])*\2/,lookbehind:!0},keyword:r.keyword,variable:r.variable,function:r.function,boolean:/\b(?:false|true)\b/,number:/\b(?:0x[a-f\d]+|\d+(?:\.\d*)?(?:e[+-]?\d+)?)\b/i,escape:r.escape,operator:/[~+*\/\\%]|!(?:\|\|?|=)?|&&?|\|\|?|==|<[<=]?|>[>=]?|-[fd]?|\b(?:def|eq|ge|gt|in|is|le|lt|ne)\b/,punctuation:r.punctuation}}}),n.languages.insertBefore("inside","punctuation",{expression:r.expression,keyword:r.keyword,variable:r.variable,function:r.function,escape:r.escape,"parser-punctuation":{pattern:r.punctuation,alias:"punctuation"}},r.tag.inside["attr-value"])})(t)}return Fw}var jw,AL;function Wve(){if(AL)return jw;AL=1,jw=e,e.displayName="pascal",e.aliases=["objectpascal"];function e(t){t.languages.pascal={directive:{pattern:/\{\$[\s\S]*?\}/,greedy:!0,alias:["marco","property"]},comment:{pattern:/\(\*[\s\S]*?\*\)|\{[\s\S]*?\}|\/\/.*/,greedy:!0},string:{pattern:/(?:'(?:''|[^'\r\n])*'(?!')|#[&$%]?[a-f\d]+)+|\^[a-z]/i,greedy:!0},asm:{pattern:/(\basm\b)[\s\S]+?(?=\bend\s*[;[])/i,lookbehind:!0,greedy:!0,inside:null},keyword:[{pattern:/(^|[^&])\b(?:absolute|array|asm|begin|case|const|constructor|destructor|do|downto|else|end|file|for|function|goto|if|implementation|inherited|inline|interface|label|nil|object|of|operator|packed|procedure|program|record|reintroduce|repeat|self|set|string|then|to|type|unit|until|uses|var|while|with)\b/i,lookbehind:!0},{pattern:/(^|[^&])\b(?:dispose|exit|false|new|true)\b/i,lookbehind:!0},{pattern:/(^|[^&])\b(?:class|dispinterface|except|exports|finalization|finally|initialization|inline|library|on|out|packed|property|raise|resourcestring|threadvar|try)\b/i,lookbehind:!0},{pattern:/(^|[^&])\b(?:absolute|abstract|alias|assembler|bitpacked|break|cdecl|continue|cppdecl|cvar|default|deprecated|dynamic|enumerator|experimental|export|external|far|far16|forward|generic|helper|implements|index|interrupt|iochecks|local|message|name|near|nodefault|noreturn|nostackframe|oldfpccall|otherwise|overload|override|pascal|platform|private|protected|public|published|read|register|reintroduce|result|safecall|saveregisters|softfloat|specialize|static|stdcall|stored|strict|unaligned|unimplemented|varargs|virtual|write)\b/i,lookbehind:!0}],number:[/(?:[&%]\d+|\$[a-f\d]+)/i,/\b\d+(?:\.\d+)?(?:e[+-]?\d+)?/i],operator:[/\.\.|\*\*|:=|<[<=>]?|>[>=]?|[+\-*\/]=?|[@^=]/,{pattern:/(^|[^&])\b(?:and|as|div|exclude|in|include|is|mod|not|or|shl|shr|xor)\b/,lookbehind:!0}],punctuation:/\(\.|\.\)|[()\[\]:;,.]/},t.languages.pascal.asm.inside=t.languages.extend("pascal",{asm:void 0,keyword:void 0,operator:void 0}),t.languages.objectpascal=t.languages.pascal}return jw}var zw,TL;function Kve(){if(TL)return zw;TL=1,zw=e,e.displayName="pascaligo",e.aliases=[];function e(t){(function(n){var r=/\((?:[^()]|\((?:[^()]|\([^()]*\))*\))*\)/.source,a=/(?:\b\w+(?:)?|)/.source.replace(//g,function(){return r}),o=n.languages.pascaligo={comment:/\(\*[\s\S]+?\*\)|\/\/.*/,string:{pattern:/(["'`])(?:\\[\s\S]|(?!\1)[^\\])*\1|\^[a-z]/i,greedy:!0},"class-name":[{pattern:RegExp(/(\btype\s+\w+\s+is\s+)/.source.replace(//g,function(){return a}),"i"),lookbehind:!0,inside:null},{pattern:RegExp(/(?=\s+is\b)/.source.replace(//g,function(){return a}),"i"),inside:null},{pattern:RegExp(/(:\s*)/.source.replace(//g,function(){return a})),lookbehind:!0,inside:null}],keyword:{pattern:/(^|[^&])\b(?:begin|block|case|const|else|end|fail|for|from|function|if|is|nil|of|remove|return|skip|then|type|var|while|with)\b/i,lookbehind:!0},boolean:{pattern:/(^|[^&])\b(?:False|True)\b/i,lookbehind:!0},builtin:{pattern:/(^|[^&])\b(?:bool|int|list|map|nat|record|string|unit)\b/i,lookbehind:!0},function:/\b\w+(?=\s*\()/,number:[/%[01]+|&[0-7]+|\$[a-f\d]+/i,/\b\d+(?:\.\d+)?(?:e[+-]?\d+)?(?:mtz|n)?/i],operator:/->|=\/=|\.\.|\*\*|:=|<[<=>]?|>[>=]?|[+\-*\/]=?|[@^=|]|\b(?:and|mod|or)\b/,punctuation:/\(\.|\.\)|[()\[\]:;,.{}]/},i=["comment","keyword","builtin","operator","punctuation"].reduce(function(s,l){return s[l]=o[l],s},{});o["class-name"].forEach(function(s){s.inside=i})})(t)}return zw}var Uw,RL;function Yve(){if(RL)return Uw;RL=1,Uw=e,e.displayName="pcaxis",e.aliases=["px"];function e(t){t.languages.pcaxis={string:/"[^"]*"/,keyword:{pattern:/((?:^|;)\s*)[-A-Z\d]+(?:\s*\[[-\w]+\])?(?:\s*\("[^"]*"(?:,\s*"[^"]*")*\))?(?=\s*=)/,lookbehind:!0,greedy:!0,inside:{keyword:/^[-A-Z\d]+/,language:{pattern:/^(\s*)\[[-\w]+\]/,lookbehind:!0,inside:{punctuation:/^\[|\]$/,property:/[-\w]+/}},"sub-key":{pattern:/^(\s*)\S[\s\S]*/,lookbehind:!0,inside:{parameter:{pattern:/"[^"]*"/,alias:"property"},punctuation:/^\(|\)$|,/}}}},operator:/=/,tlist:{pattern:/TLIST\s*\(\s*\w+(?:(?:\s*,\s*"[^"]*")+|\s*,\s*"[^"]*"-"[^"]*")?\s*\)/,greedy:!0,inside:{function:/^TLIST/,property:{pattern:/^(\s*\(\s*)\w+/,lookbehind:!0},string:/"[^"]*"/,punctuation:/[(),]/,operator:/-/}},punctuation:/[;,]/,number:{pattern:/(^|\s)\d+(?:\.\d+)?(?!\S)/,lookbehind:!0},boolean:/NO|YES/},t.languages.px=t.languages.pcaxis}return Uw}var Bw,NL;function Zve(){if(NL)return Bw;NL=1,Bw=e,e.displayName="peoplecode",e.aliases=["pcode"];function e(t){t.languages.peoplecode={comment:RegExp([/\/\*[\s\S]*?\*\//.source,/\bREM[^;]*;/.source,/<\*(?:[^<*]|\*(?!>)|<(?!\*)|<\*(?:(?!\*>)[\s\S])*\*>)*\*>/.source,/\/\+[\s\S]*?\+\//.source].join("|")),string:{pattern:/'(?:''|[^'\r\n])*'(?!')|"(?:""|[^"\r\n])*"(?!")/,greedy:!0},variable:/%\w+/,"function-definition":{pattern:/((?:^|[^\w-])(?:function|method)\s+)\w+/i,lookbehind:!0,alias:"function"},"class-name":{pattern:/((?:^|[^-\w])(?:as|catch|class|component|create|extends|global|implements|instance|local|of|property|returns)\s+)\w+(?::\w+)*/i,lookbehind:!0,inside:{punctuation:/:/}},keyword:/\b(?:abstract|alias|as|catch|class|component|constant|create|declare|else|end-(?:class|evaluate|for|function|get|if|method|set|try|while)|evaluate|extends|for|function|get|global|if|implements|import|instance|library|local|method|null|of|out|peopleCode|private|program|property|protected|readonly|ref|repeat|returns?|set|step|then|throw|to|try|until|value|when(?:-other)?|while)\b/i,"operator-keyword":{pattern:/\b(?:and|not|or)\b/i,alias:"operator"},function:/[_a-z]\w*(?=\s*\()/i,boolean:/\b(?:false|true)\b/i,number:/\b\d+(?:\.\d+)?\b/,operator:/<>|[<>]=?|!=|\*\*|[-+*/|=@]/,punctuation:/[:.;,()[\]]/},t.languages.pcode=t.languages.peoplecode}return Bw}var Hw,IL;function Xve(){if(IL)return Hw;IL=1,Hw=e,e.displayName="perl",e.aliases=[];function e(t){(function(n){var r=/(?:\((?:[^()\\]|\\[\s\S])*\)|\{(?:[^{}\\]|\\[\s\S])*\}|\[(?:[^[\]\\]|\\[\s\S])*\]|<(?:[^<>\\]|\\[\s\S])*>)/.source;n.languages.perl={comment:[{pattern:/(^\s*)=\w[\s\S]*?=cut.*/m,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\$])#.*/,lookbehind:!0,greedy:!0}],string:[{pattern:RegExp(/\b(?:q|qq|qw|qx)(?![a-zA-Z0-9])\s*/.source+"(?:"+[/([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1/.source,/([a-zA-Z0-9])(?:(?!\2)[^\\]|\\[\s\S])*\2/.source,r].join("|")+")"),greedy:!0},{pattern:/("|`)(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0},{pattern:/'(?:[^'\\\r\n]|\\.)*'/,greedy:!0}],regex:[{pattern:RegExp(/\b(?:m|qr)(?![a-zA-Z0-9])\s*/.source+"(?:"+[/([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1/.source,/([a-zA-Z0-9])(?:(?!\2)[^\\]|\\[\s\S])*\2/.source,r].join("|")+")"+/[msixpodualngc]*/.source),greedy:!0},{pattern:RegExp(/(^|[^-])\b(?:s|tr|y)(?![a-zA-Z0-9])\s*/.source+"(?:"+[/([^a-zA-Z0-9\s{(\[<])(?:(?!\2)[^\\]|\\[\s\S])*\2(?:(?!\2)[^\\]|\\[\s\S])*\2/.source,/([a-zA-Z0-9])(?:(?!\3)[^\\]|\\[\s\S])*\3(?:(?!\3)[^\\]|\\[\s\S])*\3/.source,r+/\s*/.source+r].join("|")+")"+/[msixpodualngcer]*/.source),lookbehind:!0,greedy:!0},{pattern:/\/(?:[^\/\\\r\n]|\\.)*\/[msixpodualngc]*(?=\s*(?:$|[\r\n,.;})&|\-+*~<>!?^]|(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|x|xor)\b))/,greedy:!0}],variable:[/[&*$@%]\{\^[A-Z]+\}/,/[&*$@%]\^[A-Z_]/,/[&*$@%]#?(?=\{)/,/[&*$@%]#?(?:(?:::)*'?(?!\d)[\w$]+(?![\w$]))+(?:::)*/,/[&*$@%]\d+/,/(?!%=)[$@%][!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~]/],filehandle:{pattern:/<(?![<=])\S*?>|\b_\b/,alias:"symbol"},"v-string":{pattern:/v\d+(?:\.\d+)*|\d+(?:\.\d+){2,}/,alias:"string"},function:{pattern:/(\bsub[ \t]+)\w+/,lookbehind:!0},keyword:/\b(?:any|break|continue|default|delete|die|do|else|elsif|eval|for|foreach|given|goto|if|last|local|my|next|our|package|print|redo|require|return|say|state|sub|switch|undef|unless|until|use|when|while)\b/,number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)\b/,operator:/-[rwxoRWXOezsfdlpSbctugkTBMAC]\b|\+[+=]?|-[-=>]?|\*\*?=?|\/\/?=?|=[=~>]?|~[~=]?|\|\|?=?|&&?=?|<(?:=>?|<=?)?|>>?=?|![~=]?|[%^]=?|\.(?:=|\.\.?)?|[\\?]|\bx(?:=|\b)|\b(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|xor)\b/,punctuation:/[{}[\];(),:]/}})(t)}return Hw}var Vw,OL;function Qve(){if(OL)return Vw;OL=1;var e=Nh();Vw=t,t.displayName="phpExtras",t.aliases=[];function t(n){n.register(e),n.languages.insertBefore("php","variable",{this:{pattern:/\$this\b/,alias:"keyword"},global:/\$(?:GLOBALS|HTTP_RAW_POST_DATA|_(?:COOKIE|ENV|FILES|GET|POST|REQUEST|SERVER|SESSION)|argc|argv|http_response_header|php_errormsg)\b/,scope:{pattern:/\b[\w\\]+::/,inside:{keyword:/\b(?:parent|self|static)\b/,punctuation:/::|\\/}}})}return Vw}var qw,DL;function Jve(){if(DL)return qw;DL=1;var e=Nh(),t=Rh();qw=n,n.displayName="phpdoc",n.aliases=[];function n(r){r.register(e),r.register(t),function(a){var o=/(?:\b[a-zA-Z]\w*|[|\\[\]])+/.source;a.languages.phpdoc=a.languages.extend("javadoclike",{parameter:{pattern:RegExp("(@(?:global|param|property(?:-read|-write)?|var)\\s+(?:"+o+"\\s+)?)\\$\\w+"),lookbehind:!0}}),a.languages.insertBefore("phpdoc","keyword",{"class-name":[{pattern:RegExp("(@(?:global|package|param|property(?:-read|-write)?|return|subpackage|throws|var)\\s+)"+o),lookbehind:!0,inside:{keyword:/\b(?:array|bool|boolean|callback|double|false|float|int|integer|mixed|null|object|resource|self|string|true|void)\b/,punctuation:/[|\\[\]()]/}}]}),a.languages.javadoclike.addSupport("php",a.languages.phpdoc)}(r)}return qw}var Gw,LL;function eSe(){if(LL)return Gw;LL=1;var e=TA();Gw=t,t.displayName="plsql",t.aliases=[];function t(n){n.register(e),n.languages.plsql=n.languages.extend("sql",{comment:{pattern:/\/\*[\s\S]*?\*\/|--.*/,greedy:!0},keyword:/\b(?:A|ACCESSIBLE|ADD|AGENT|AGGREGATE|ALL|ALTER|AND|ANY|ARRAY|AS|ASC|AT|ATTRIBUTE|AUTHID|AVG|BEGIN|BETWEEN|BFILE_BASE|BINARY|BLOB_BASE|BLOCK|BODY|BOTH|BOUND|BULK|BY|BYTE|C|CALL|CALLING|CASCADE|CASE|CHAR|CHARACTER|CHARSET|CHARSETFORM|CHARSETID|CHAR_BASE|CHECK|CLOB_BASE|CLONE|CLOSE|CLUSTER|CLUSTERS|COLAUTH|COLLECT|COLUMNS|COMMENT|COMMIT|COMMITTED|COMPILED|COMPRESS|CONNECT|CONSTANT|CONSTRUCTOR|CONTEXT|CONTINUE|CONVERT|COUNT|CRASH|CREATE|CREDENTIAL|CURRENT|CURSOR|CUSTOMDATUM|DANGLING|DATA|DATE|DATE_BASE|DAY|DECLARE|DEFAULT|DEFINE|DELETE|DESC|DETERMINISTIC|DIRECTORY|DISTINCT|DOUBLE|DROP|DURATION|ELEMENT|ELSE|ELSIF|EMPTY|END|ESCAPE|EXCEPT|EXCEPTION|EXCEPTIONS|EXCLUSIVE|EXECUTE|EXISTS|EXIT|EXTERNAL|FETCH|FINAL|FIRST|FIXED|FLOAT|FOR|FORALL|FORCE|FROM|FUNCTION|GENERAL|GOTO|GRANT|GROUP|HASH|HAVING|HEAP|HIDDEN|HOUR|IDENTIFIED|IF|IMMEDIATE|IMMUTABLE|IN|INCLUDING|INDEX|INDEXES|INDICATOR|INDICES|INFINITE|INSERT|INSTANTIABLE|INT|INTERFACE|INTERSECT|INTERVAL|INTO|INVALIDATE|IS|ISOLATION|JAVA|LANGUAGE|LARGE|LEADING|LENGTH|LEVEL|LIBRARY|LIKE|LIKE2|LIKE4|LIKEC|LIMIT|LIMITED|LOCAL|LOCK|LONG|LOOP|MAP|MAX|MAXLEN|MEMBER|MERGE|MIN|MINUS|MINUTE|MOD|MODE|MODIFY|MONTH|MULTISET|MUTABLE|NAME|NAN|NATIONAL|NATIVE|NCHAR|NEW|NOCOMPRESS|NOCOPY|NOT|NOWAIT|NULL|NUMBER_BASE|OBJECT|OCICOLL|OCIDATE|OCIDATETIME|OCIDURATION|OCIINTERVAL|OCILOBLOCATOR|OCINUMBER|OCIRAW|OCIREF|OCIREFCURSOR|OCIROWID|OCISTRING|OCITYPE|OF|OLD|ON|ONLY|OPAQUE|OPEN|OPERATOR|OPTION|OR|ORACLE|ORADATA|ORDER|ORGANIZATION|ORLANY|ORLVARY|OTHERS|OUT|OVERLAPS|OVERRIDING|PACKAGE|PARALLEL_ENABLE|PARAMETER|PARAMETERS|PARENT|PARTITION|PASCAL|PERSISTABLE|PIPE|PIPELINED|PLUGGABLE|POLYMORPHIC|PRAGMA|PRECISION|PRIOR|PRIVATE|PROCEDURE|PUBLIC|RAISE|RANGE|RAW|READ|RECORD|REF|REFERENCE|RELIES_ON|REM|REMAINDER|RENAME|RESOURCE|RESULT|RESULT_CACHE|RETURN|RETURNING|REVERSE|REVOKE|ROLLBACK|ROW|SAMPLE|SAVE|SAVEPOINT|SB1|SB2|SB4|SECOND|SEGMENT|SELECT|SELF|SEPARATE|SEQUENCE|SERIALIZABLE|SET|SHARE|SHORT|SIZE|SIZE_T|SOME|SPARSE|SQL|SQLCODE|SQLDATA|SQLNAME|SQLSTATE|STANDARD|START|STATIC|STDDEV|STORED|STRING|STRUCT|STYLE|SUBMULTISET|SUBPARTITION|SUBSTITUTABLE|SUBTYPE|SUM|SYNONYM|TABAUTH|TABLE|TDO|THE|THEN|TIME|TIMESTAMP|TIMEZONE_ABBR|TIMEZONE_HOUR|TIMEZONE_MINUTE|TIMEZONE_REGION|TO|TRAILING|TRANSACTION|TRANSACTIONAL|TRUSTED|TYPE|UB1|UB2|UB4|UNDER|UNION|UNIQUE|UNPLUG|UNSIGNED|UNTRUSTED|UPDATE|USE|USING|VALIST|VALUE|VALUES|VARIABLE|VARIANCE|VARRAY|VARYING|VIEW|VIEWS|VOID|WHEN|WHERE|WHILE|WITH|WORK|WRAPPED|WRITE|YEAR|ZONE)\b/i,operator:/:=?|=>|[<>^~!]=|\.\.|\|\||\*\*|[-+*/%<>=@]/}),n.languages.insertBefore("plsql","operator",{label:{pattern:/<<\s*\w+\s*>>/,alias:"symbol"}})}return Gw}var Ww,ML;function tSe(){if(ML)return Ww;ML=1,Ww=e,e.displayName="powerquery",e.aliases=[];function e(t){t.languages.powerquery={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},"quoted-identifier":{pattern:/#"(?:[^"\r\n]|"")*"(?!")/,greedy:!0},string:{pattern:/(?:#!)?"(?:[^"\r\n]|"")*"(?!")/,greedy:!0},constant:[/\bDay\.(?:Friday|Monday|Saturday|Sunday|Thursday|Tuesday|Wednesday)\b/,/\bTraceLevel\.(?:Critical|Error|Information|Verbose|Warning)\b/,/\bOccurrence\.(?:All|First|Last)\b/,/\bOrder\.(?:Ascending|Descending)\b/,/\bRoundingMode\.(?:AwayFromZero|Down|ToEven|TowardZero|Up)\b/,/\bMissingField\.(?:Error|Ignore|UseNull)\b/,/\bQuoteStyle\.(?:Csv|None)\b/,/\bJoinKind\.(?:FullOuter|Inner|LeftAnti|LeftOuter|RightAnti|RightOuter)\b/,/\bGroupKind\.(?:Global|Local)\b/,/\bExtraValues\.(?:Error|Ignore|List)\b/,/\bJoinAlgorithm\.(?:Dynamic|LeftHash|LeftIndex|PairwiseHash|RightHash|RightIndex|SortMerge)\b/,/\bJoinSide\.(?:Left|Right)\b/,/\bPrecision\.(?:Decimal|Double)\b/,/\bRelativePosition\.From(?:End|Start)\b/,/\bTextEncoding\.(?:Ascii|BigEndianUnicode|Unicode|Utf16|Utf8|Windows)\b/,/\b(?:Any|Binary|Date|DateTime|DateTimeZone|Duration|Function|Int16|Int32|Int64|Int8|List|Logical|None|Number|Record|Table|Text|Time)\.Type\b/,/\bnull\b/],boolean:/\b(?:false|true)\b/,keyword:/\b(?:and|as|each|else|error|if|in|is|let|meta|not|nullable|optional|or|otherwise|section|shared|then|try|type)\b|#(?:binary|date|datetime|datetimezone|duration|infinity|nan|sections|shared|table|time)\b/,function:{pattern:/(^|[^#\w.])[a-z_][\w.]*(?=\s*\()/i,lookbehind:!0},"data-type":{pattern:/\b(?:any|anynonnull|binary|date|datetime|datetimezone|duration|function|list|logical|none|number|record|table|text|time)\b/,alias:"class-name"},number:{pattern:/\b0x[\da-f]+\b|(?:[+-]?(?:\b\d+\.)?\b\d+|[+-]\.\d+|(^|[^.])\B\.\d+)(?:e[+-]?\d+)?\b/i,lookbehind:!0},operator:/[-+*\/&?@^]|<(?:=>?|>)?|>=?|=>?|\.\.\.?/,punctuation:/[,;\[\](){}]/},t.languages.pq=t.languages.powerquery,t.languages.mscript=t.languages.powerquery}return Ww}var Kw,PL;function nSe(){if(PL)return Kw;PL=1,Kw=e,e.displayName="powershell",e.aliases=[];function e(t){(function(n){var r=n.languages.powershell={comment:[{pattern:/(^|[^`])<#[\s\S]*?#>/,lookbehind:!0},{pattern:/(^|[^`])#.*/,lookbehind:!0}],string:[{pattern:/"(?:`[\s\S]|[^`"])*"/,greedy:!0,inside:null},{pattern:/'(?:[^']|'')*'/,greedy:!0}],namespace:/\[[a-z](?:\[(?:\[[^\]]*\]|[^\[\]])*\]|[^\[\]])*\]/i,boolean:/\$(?:false|true)\b/i,variable:/\$\w+\b/,function:[/\b(?:Add|Approve|Assert|Backup|Block|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|ForEach|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Sort|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Tee|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Where|Write)-[a-z]+\b/i,/\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\b/i],keyword:/\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\b/i,operator:{pattern:/(^|\W)(?:!|-(?:b?(?:and|x?or)|as|(?:Not)?(?:Contains|In|Like|Match)|eq|ge|gt|is(?:Not)?|Join|le|lt|ne|not|Replace|sh[lr])\b|-[-=]?|\+[+=]?|[*\/%]=?)/i,lookbehind:!0},punctuation:/[|{}[\];(),.]/};r.string[0].inside={function:{pattern:/(^|[^`])\$\((?:\$\([^\r\n()]*\)|(?!\$\()[^\r\n)])*\)/,lookbehind:!0,inside:r},boolean:r.boolean,variable:r.variable}})(t)}return Kw}var Yw,$L;function rSe(){if($L)return Yw;$L=1,Yw=e,e.displayName="processing",e.aliases=[];function e(t){t.languages.processing=t.languages.extend("clike",{keyword:/\b(?:break|case|catch|class|continue|default|else|extends|final|for|if|implements|import|new|null|private|public|return|static|super|switch|this|try|void|while)\b/,function:/\b\w+(?=\s*\()/,operator:/<[<=]?|>[>=]?|&&?|\|\|?|[%?]|[!=+\-*\/]=?/}),t.languages.insertBefore("processing","number",{constant:/\b(?!XML\b)[A-Z][A-Z\d_]+\b/,type:{pattern:/\b(?:boolean|byte|char|color|double|float|int|[A-Z]\w*)\b/,alias:"class-name"}})}return Yw}var Zw,FL;function aSe(){if(FL)return Zw;FL=1,Zw=e,e.displayName="prolog",e.aliases=[];function e(t){t.languages.prolog={comment:{pattern:/\/\*[\s\S]*?\*\/|%.*/,greedy:!0},string:{pattern:/(["'])(?:\1\1|\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1(?!\1)/,greedy:!0},builtin:/\b(?:fx|fy|xf[xy]?|yfx?)\b/,function:/\b[a-z]\w*(?:(?=\()|\/\d+)/,number:/\b\d+(?:\.\d*)?/,operator:/[:\\=><\-?*@\/;+^|!$.]+|\b(?:is|mod|not|xor)\b/,punctuation:/[(){}\[\],]/}}return Zw}var Xw,jL;function oSe(){if(jL)return Xw;jL=1,Xw=e,e.displayName="promql",e.aliases=[];function e(t){(function(n){var r=["sum","min","max","avg","group","stddev","stdvar","count","count_values","bottomk","topk","quantile"],a=["on","ignoring","group_right","group_left","by","without"],o=["offset"],i=r.concat(a,o);n.languages.promql={comment:{pattern:/(^[ \t]*)#.*/m,lookbehind:!0},"vector-match":{pattern:new RegExp("((?:"+a.join("|")+")\\s*)\\([^)]*\\)"),lookbehind:!0,inside:{"label-key":{pattern:/\b[^,]+\b/,alias:"attr-name"},punctuation:/[(),]/}},"context-labels":{pattern:/\{[^{}]*\}/,inside:{"label-key":{pattern:/\b[a-z_]\w*(?=\s*(?:=|![=~]))/,alias:"attr-name"},"label-value":{pattern:/(["'`])(?:\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0,alias:"attr-value"},punctuation:/\{|\}|=~?|![=~]|,/}},"context-range":[{pattern:/\[[\w\s:]+\]/,inside:{punctuation:/\[|\]|:/,"range-duration":{pattern:/\b(?:\d+(?:[smhdwy]|ms))+\b/i,alias:"number"}}},{pattern:/(\boffset\s+)\w+/,lookbehind:!0,inside:{"range-duration":{pattern:/\b(?:\d+(?:[smhdwy]|ms))+\b/i,alias:"number"}}}],keyword:new RegExp("\\b(?:"+i.join("|")+")\\b","i"),function:/\b[a-z_]\w*(?=\s*\()/i,number:/[-+]?(?:(?:\b\d+(?:\.\d+)?|\B\.\d+)(?:e[-+]?\d+)?\b|\b(?:0x[0-9a-f]+|nan|inf)\b)/i,operator:/[\^*/%+-]|==|!=|<=|<|>=|>|\b(?:and|or|unless)\b/i,punctuation:/[{};()`,.[\]]/}})(t)}return Xw}var Qw,zL;function iSe(){if(zL)return Qw;zL=1,Qw=e,e.displayName="properties",e.aliases=[];function e(t){t.languages.properties={comment:/^[ \t]*[#!].*$/m,"attr-value":{pattern:/(^[ \t]*(?:\\(?:\r\n|[\s\S])|[^\\\s:=])+(?: *[=:] *(?! )| ))(?:\\(?:\r\n|[\s\S])|[^\\\r\n])+/m,lookbehind:!0},"attr-name":/^[ \t]*(?:\\(?:\r\n|[\s\S])|[^\\\s:=])+(?= *[=:]| )/m,punctuation:/[=:]/}}return Qw}var Jw,UL;function sSe(){if(UL)return Jw;UL=1,Jw=e,e.displayName="protobuf",e.aliases=[];function e(t){(function(n){var r=/\b(?:bool|bytes|double|s?fixed(?:32|64)|float|[su]?int(?:32|64)|string)\b/;n.languages.protobuf=n.languages.extend("clike",{"class-name":[{pattern:/(\b(?:enum|extend|message|service)\s+)[A-Za-z_]\w*(?=\s*\{)/,lookbehind:!0},{pattern:/(\b(?:rpc\s+\w+|returns)\s*\(\s*(?:stream\s+)?)\.?[A-Za-z_]\w*(?:\.[A-Za-z_]\w*)*(?=\s*\))/,lookbehind:!0}],keyword:/\b(?:enum|extend|extensions|import|message|oneof|option|optional|package|public|repeated|required|reserved|returns|rpc(?=\s+\w)|service|stream|syntax|to)\b(?!\s*=\s*\d)/,function:/\b[a-z_]\w*(?=\s*\()/i}),n.languages.insertBefore("protobuf","operator",{map:{pattern:/\bmap<\s*[\w.]+\s*,\s*[\w.]+\s*>(?=\s+[a-z_]\w*\s*[=;])/i,alias:"class-name",inside:{punctuation:/[<>.,]/,builtin:r}},builtin:r,"positional-class-name":{pattern:/(?:\b|\B\.)[a-z_]\w*(?:\.[a-z_]\w*)*(?=\s+[a-z_]\w*\s*[=;])/i,alias:"class-name",inside:{punctuation:/\./}},annotation:{pattern:/(\[\s*)[a-z_]\w*(?=\s*=)/i,lookbehind:!0}})})(t)}return Jw}var e0,BL;function lSe(){if(BL)return e0;BL=1,e0=e,e.displayName="psl",e.aliases=[];function e(t){t.languages.psl={comment:{pattern:/#.*/,greedy:!0},string:{pattern:/"(?:\\.|[^\\"])*"/,greedy:!0,inside:{symbol:/\\[ntrbA-Z"\\]/}},"heredoc-string":{pattern:/<<<([a-zA-Z_]\w*)[\r\n](?:.*[\r\n])*?\1\b/,alias:"string",greedy:!0},keyword:/\b(?:__multi|__single|case|default|do|else|elsif|exit|export|for|foreach|function|if|last|line|local|next|requires|return|switch|until|while|word)\b/,constant:/\b(?:ALARM|CHART_ADD_GRAPH|CHART_DELETE_GRAPH|CHART_DESTROY|CHART_LOAD|CHART_PRINT|EOF|OFFLINE|OK|PSL_PROF_LOG|R_CHECK_HORIZ|R_CHECK_VERT|R_CLICKER|R_COLUMN|R_FRAME|R_ICON|R_LABEL|R_LABEL_CENTER|R_LIST_MULTIPLE|R_LIST_MULTIPLE_ND|R_LIST_SINGLE|R_LIST_SINGLE_ND|R_MENU|R_POPUP|R_POPUP_SCROLLED|R_RADIO_HORIZ|R_RADIO_VERT|R_ROW|R_SCALE_HORIZ|R_SCALE_VERT|R_SEP_HORIZ|R_SEP_VERT|R_SPINNER|R_TEXT_FIELD|R_TEXT_FIELD_LABEL|R_TOGGLE|TRIM_LEADING|TRIM_LEADING_AND_TRAILING|TRIM_REDUNDANT|TRIM_TRAILING|VOID|WARN)\b/,boolean:/\b(?:FALSE|False|NO|No|TRUE|True|YES|Yes|false|no|true|yes)\b/,variable:/\b(?:PslDebug|errno|exit_status)\b/,builtin:{pattern:/\b(?:PslExecute|PslFunctionCall|PslFunctionExists|PslSetOptions|_snmp_debug|acos|add_diary|annotate|annotate_get|ascii_to_ebcdic|asctime|asin|atan|atexit|batch_set|blackout|cat|ceil|chan_exists|change_state|close|code_cvt|cond_signal|cond_wait|console_type|convert_base|convert_date|convert_locale_date|cos|cosh|create|date|dcget_text|destroy|destroy_lock|dget_text|difference|dump_hist|ebcdic_to_ascii|encrypt|event_archive|event_catalog_get|event_check|event_query|event_range_manage|event_range_query|event_report|event_schedule|event_trigger|event_trigger2|execute|exists|exp|fabs|file|floor|fmod|fopen|fseek|ftell|full_discovery|get|get_chan_info|get_ranges|get_text|get_vars|getenv|gethostinfo|getpid|getpname|grep|history|history_get_retention|in_transition|index|int|internal|intersection|is_var|isnumber|join|kill|length|lines|lock|lock_info|log|log10|loge|matchline|msg_check|msg_get_format|msg_get_severity|msg_printf|msg_sprintf|ntharg|nthargf|nthline|nthlinef|num_bytes|num_consoles|pconfig|popen|poplines|pow|print|printf|proc_exists|process|random|read|readln|refresh_parameters|remote_check|remote_close|remote_event_query|remote_event_trigger|remote_file_send|remote_open|remove|replace|rindex|sec_check_priv|sec_store_get|sec_store_set|set|set_alarm_ranges|set_locale|share|sin|sinh|sleep|snmp_agent_config|snmp_agent_start|snmp_agent_stop|snmp_close|snmp_config|snmp_get|snmp_get_next|snmp_h_get|snmp_h_get_next|snmp_h_set|snmp_open|snmp_set|snmp_trap_ignore|snmp_trap_listen|snmp_trap_raise_std_trap|snmp_trap_receive|snmp_trap_register_im|snmp_trap_send|snmp_walk|sopen|sort|splitline|sprintf|sqrt|srandom|str_repeat|strcasecmp|subset|substr|system|tail|tan|tanh|text_domain|time|tmpnam|tolower|toupper|trace_psl_process|trim|union|unique|unlock|unset|va_arg|va_start|write)\b/,alias:"builtin-function"},"foreach-variable":{pattern:/(\bforeach\s+(?:(?:\w+\b|"(?:\\.|[^\\"])*")\s+){0,2})[_a-zA-Z]\w*(?=\s*\()/,lookbehind:!0,greedy:!0},function:/\b[_a-z]\w*\b(?=\s*\()/i,number:/\b(?:0x[0-9a-f]+|\d+(?:\.\d+)?)\b/i,operator:/--|\+\+|&&=?|\|\|=?|<<=?|>>=?|[=!]~|[-+*/%&|^!=<>]=?|\.|[:?]/,punctuation:/[(){}\[\];,]/}}return e0}var t0,HL;function cSe(){if(HL)return t0;HL=1,t0=e,e.displayName="pug",e.aliases=[];function e(t){(function(n){n.languages.pug={comment:{pattern:/(^([\t ]*))\/\/.*(?:(?:\r?\n|\r)\2[\t ].+)*/m,lookbehind:!0},"multiline-script":{pattern:/(^([\t ]*)script\b.*\.[\t ]*)(?:(?:\r?\n|\r(?!\n))(?:\2[\t ].+|\s*?(?=\r?\n|\r)))+/m,lookbehind:!0,inside:n.languages.javascript},filter:{pattern:/(^([\t ]*)):.+(?:(?:\r?\n|\r(?!\n))(?:\2[\t ].+|\s*?(?=\r?\n|\r)))+/m,lookbehind:!0,inside:{"filter-name":{pattern:/^:[\w-]+/,alias:"variable"},text:/\S[\s\S]*/}},"multiline-plain-text":{pattern:/(^([\t ]*)[\w\-#.]+\.[\t ]*)(?:(?:\r?\n|\r(?!\n))(?:\2[\t ].+|\s*?(?=\r?\n|\r)))+/m,lookbehind:!0},markup:{pattern:/(^[\t ]*)<.+/m,lookbehind:!0,inside:n.languages.markup},doctype:{pattern:/((?:^|\n)[\t ]*)doctype(?: .+)?/,lookbehind:!0},"flow-control":{pattern:/(^[\t ]*)(?:case|default|each|else|if|unless|when|while)\b(?: .+)?/m,lookbehind:!0,inside:{each:{pattern:/^each .+? in\b/,inside:{keyword:/\b(?:each|in)\b/,punctuation:/,/}},branch:{pattern:/^(?:case|default|else|if|unless|when|while)\b/,alias:"keyword"},rest:n.languages.javascript}},keyword:{pattern:/(^[\t ]*)(?:append|block|extends|include|prepend)\b.+/m,lookbehind:!0},mixin:[{pattern:/(^[\t ]*)mixin .+/m,lookbehind:!0,inside:{keyword:/^mixin/,function:/\w+(?=\s*\(|\s*$)/,punctuation:/[(),.]/}},{pattern:/(^[\t ]*)\+.+/m,lookbehind:!0,inside:{name:{pattern:/^\+\w+/,alias:"function"},rest:n.languages.javascript}}],script:{pattern:/(^[\t ]*script(?:(?:&[^(]+)?\([^)]+\))*[\t ]).+/m,lookbehind:!0,inside:n.languages.javascript},"plain-text":{pattern:/(^[\t ]*(?!-)[\w\-#.]*[\w\-](?:(?:&[^(]+)?\([^)]+\))*\/?[\t ]).+/m,lookbehind:!0},tag:{pattern:/(^[\t ]*)(?!-)[\w\-#.]*[\w\-](?:(?:&[^(]+)?\([^)]+\))*\/?:?/m,lookbehind:!0,inside:{attributes:[{pattern:/&[^(]+\([^)]+\)/,inside:n.languages.javascript},{pattern:/\([^)]+\)/,inside:{"attr-value":{pattern:/(=\s*(?!\s))(?:\{[^}]*\}|[^,)\r\n]+)/,lookbehind:!0,inside:n.languages.javascript},"attr-name":/[\w-]+(?=\s*!?=|\s*[,)])/,punctuation:/[!=(),]+/}}],punctuation:/:/,"attr-id":/#[\w\-]+/,"attr-class":/\.[\w\-]+/}},code:[{pattern:/(^[\t ]*(?:-|!?=)).+/m,lookbehind:!0,inside:n.languages.javascript}],punctuation:/[.\-!=|]+/};for(var r=/(^([\t ]*)):(?:(?:\r?\n|\r(?!\n))(?:\2[\t ].+|\s*?(?=\r?\n|\r)))+/.source,a=[{filter:"atpl",language:"twig"},{filter:"coffee",language:"coffeescript"},"ejs","handlebars","less","livescript","markdown",{filter:"sass",language:"scss"},"stylus"],o={},i=0,s=a.length;i",function(){return l.filter}),"m"),lookbehind:!0,inside:{"filter-name":{pattern:/^:[\w-]+/,alias:"variable"},text:{pattern:/\S[\s\S]*/,alias:[l.language,"language-"+l.language],inside:n.languages[l.language]}}})}n.languages.insertBefore("pug","filter",o)})(t)}return t0}var n0,VL;function uSe(){if(VL)return n0;VL=1,n0=e,e.displayName="puppet",e.aliases=[];function e(t){(function(n){n.languages.puppet={heredoc:[{pattern:/(@\("([^"\r\n\/):]+)"(?:\/[nrts$uL]*)?\).*(?:\r?\n|\r))(?:.*(?:\r?\n|\r(?!\n)))*?[ \t]*(?:\|[ \t]*)?(?:-[ \t]*)?\2/,lookbehind:!0,alias:"string",inside:{punctuation:/(?=\S).*\S(?= *$)/}},{pattern:/(@\(([^"\r\n\/):]+)(?:\/[nrts$uL]*)?\).*(?:\r?\n|\r))(?:.*(?:\r?\n|\r(?!\n)))*?[ \t]*(?:\|[ \t]*)?(?:-[ \t]*)?\2/,lookbehind:!0,greedy:!0,alias:"string",inside:{punctuation:/(?=\S).*\S(?= *$)/}},{pattern:/@\("?(?:[^"\r\n\/):]+)"?(?:\/[nrts$uL]*)?\)/,alias:"string",inside:{punctuation:{pattern:/(\().+?(?=\))/,lookbehind:!0}}}],"multiline-comment":{pattern:/(^|[^\\])\/\*[\s\S]*?\*\//,lookbehind:!0,greedy:!0,alias:"comment"},regex:{pattern:/((?:\bnode\s+|[~=\(\[\{,]\s*|[=+]>\s*|^\s*))\/(?:[^\/\\]|\\[\s\S])+\/(?:[imx]+\b|\B)/,lookbehind:!0,greedy:!0,inside:{"extended-regex":{pattern:/^\/(?:[^\/\\]|\\[\s\S])+\/[im]*x[im]*$/,inside:{comment:/#.*/}}}},comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},string:{pattern:/(["'])(?:\$\{(?:[^'"}]|(["'])(?:(?!\2)[^\\]|\\[\s\S])*\2)+\}|\$(?!\{)|(?!\1)[^\\$]|\\[\s\S])*\1/,greedy:!0,inside:{"double-quoted":{pattern:/^"[\s\S]*"$/,inside:{}}}},variable:{pattern:/\$(?:::)?\w+(?:::\w+)*/,inside:{punctuation:/::/}},"attr-name":/(?:\b\w+|\*)(?=\s*=>)/,function:[{pattern:/(\.)(?!\d)\w+/,lookbehind:!0},/\b(?:contain|debug|err|fail|include|info|notice|realize|require|tag|warning)\b|\b(?!\d)\w+(?=\()/],number:/\b(?:0x[a-f\d]+|\d+(?:\.\d+)?(?:e-?\d+)?)\b/i,boolean:/\b(?:false|true)\b/,keyword:/\b(?:application|attr|case|class|consumes|default|define|else|elsif|function|if|import|inherits|node|private|produces|type|undef|unless)\b/,datatype:{pattern:/\b(?:Any|Array|Boolean|Callable|Catalogentry|Class|Collection|Data|Default|Enum|Float|Hash|Integer|NotUndef|Numeric|Optional|Pattern|Regexp|Resource|Runtime|Scalar|String|Struct|Tuple|Type|Undef|Variant)\b/,alias:"symbol"},operator:/=[=~>]?|![=~]?|<(?:<\|?|[=~|-])?|>[>=]?|->?|~>|\|>?>?|[*\/%+?]|\b(?:and|in|or)\b/,punctuation:/[\[\]{}().,;]|:+/};var r=[{pattern:/(^|[^\\])\$\{(?:[^'"{}]|\{[^}]*\}|(["'])(?:(?!\2)[^\\]|\\[\s\S])*\2)+\}/,lookbehind:!0,inside:{"short-variable":{pattern:/(^\$\{)(?!\w+\()(?:::)?\w+(?:::\w+)*/,lookbehind:!0,alias:"variable",inside:{punctuation:/::/}},delimiter:{pattern:/^\$/,alias:"variable"},rest:n.languages.puppet}},{pattern:/(^|[^\\])\$(?:::)?\w+(?:::\w+)*/,lookbehind:!0,alias:"variable",inside:{punctuation:/::/}}];n.languages.puppet.heredoc[0].inside.interpolation=r,n.languages.puppet.string.inside["double-quoted"].inside.interpolation=r})(t)}return n0}var r0,qL;function dSe(){if(qL)return r0;qL=1,r0=e,e.displayName="pure",e.aliases=[];function e(t){(function(n){n.languages.pure={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0},/#!.+/],"inline-lang":{pattern:/%<[\s\S]+?%>/,greedy:!0,inside:{lang:{pattern:/(^%< *)-\*-.+?-\*-/,lookbehind:!0,alias:"comment"},delimiter:{pattern:/^%<.*|%>$/,alias:"punctuation"}}},string:{pattern:/"(?:\\.|[^"\\\r\n])*"/,greedy:!0},number:{pattern:/((?:\.\.)?)(?:\b(?:inf|nan)\b|\b0x[\da-f]+|(?:\b(?:0b)?\d+(?:\.\d+)?|\B\.\d+)(?:e[+-]?\d+)?L?)/i,lookbehind:!0},keyword:/\b(?:NULL|ans|break|bt|case|catch|cd|clear|const|def|del|dump|else|end|exit|extern|false|force|help|if|infix[lr]?|interface|let|ls|mem|namespace|nonfix|of|otherwise|outfix|override|postfix|prefix|private|public|pwd|quit|run|save|show|stats|then|throw|trace|true|type|underride|using|when|with)\b/,function:/\b(?:abs|add_(?:addr|constdef|(?:fundef|interface|macdef|typedef)(?:_at)?|vardef)|all|any|applp?|arity|bigintp?|blob(?:_crc|_size|p)?|boolp?|byte_c?string(?:_pointer)?|byte_(?:matrix|pointer)|calloc|cat|catmap|ceil|char[ps]?|check_ptrtag|chr|clear_sentry|clearsym|closurep?|cmatrixp?|cols?|colcat(?:map)?|colmap|colrev|colvector(?:p|seq)?|complex(?:_float_(?:matrix|pointer)|_matrix(?:_view)?|_pointer|p)?|conj|cookedp?|cst|cstring(?:_(?:dup|list|vector))?|curry3?|cyclen?|del_(?:constdef|fundef|interface|macdef|typedef|vardef)|delete|diag(?:mat)?|dim|dmatrixp?|do|double(?:_matrix(?:_view)?|_pointer|p)?|dowith3?|drop|dropwhile|eval(?:cmd)?|exactp|filter|fix|fixity|flip|float(?:_matrix|_pointer)|floor|fold[lr]1?|frac|free|funp?|functionp?|gcd|get(?:_(?:byte|constdef|double|float|fundef|int(?:64)?|interface(?:_typedef)?|long|macdef|pointer|ptrtag|sentry|short|string|typedef|vardef))?|globsym|hash|head|id|im|imatrixp?|index|inexactp|infp|init|insert|int(?:_matrix(?:_view)?|_pointer|p)?|int64_(?:matrix|pointer)|integerp?|iteraten?|iterwhile|join|keys?|lambdap?|last(?:err(?:pos)?)?|lcd|list[2p]?|listmap|make_ptrtag|malloc|map|matcat|matrixp?|max|member|min|nanp|nargs|nmatrixp?|null|numberp?|ord|pack(?:ed)?|pointer(?:_cast|_tag|_type|p)?|pow|pred|ptrtag|put(?:_(?:byte|double|float|int(?:64)?|long|pointer|short|string))?|rationalp?|re|realp?|realloc|recordp?|redim|reduce(?:_with)?|refp?|repeatn?|reverse|rlistp?|round|rows?|rowcat(?:map)?|rowmap|rowrev|rowvector(?:p|seq)?|same|scan[lr]1?|sentry|sgn|short_(?:matrix|pointer)|slice|smatrixp?|sort|split|str|strcat|stream|stride|string(?:_(?:dup|list|vector)|p)?|subdiag(?:mat)?|submat|subseq2?|substr|succ|supdiag(?:mat)?|symbolp?|tail|take|takewhile|thunkp?|transpose|trunc|tuplep?|typep|ubyte|uint(?:64)?|ulong|uncurry3?|unref|unzip3?|update|ushort|vals?|varp?|vector(?:p|seq)?|void|zip3?|zipwith3?)\b/,special:{pattern:/\b__[a-z]+__\b/i,alias:"builtin"},operator:/(?:[!"#$%&'*+,\-.\/:<=>?@\\^`|~\u00a1-\u00bf\u00d7-\u00f7\u20d0-\u2bff]|\b_+\b)+|\b(?:and|div|mod|not|or)\b/,punctuation:/[(){}\[\];,|]/};var r=["c",{lang:"c++",alias:"cpp"},"fortran"],a=/%< *-\*- *\d* *-\*-[\s\S]+?%>/.source;r.forEach(function(o){var i=o;if(typeof o!="string"&&(i=o.alias,o=o.lang),n.languages[i]){var s={};s["inline-lang-"+i]={pattern:RegExp(a.replace("",o.replace(/([.+*?\/\\(){}\[\]])/g,"\\$1")),"i"),inside:n.util.clone(n.languages.pure["inline-lang"].inside)},s["inline-lang-"+i].inside.rest=n.util.clone(n.languages[i]),n.languages.insertBefore("pure","inline-lang",s)}}),n.languages.c&&(n.languages.pure["inline-lang"].inside.rest=n.util.clone(n.languages.c))})(t)}return r0}var a0,GL;function fSe(){if(GL)return a0;GL=1,a0=e,e.displayName="purebasic",e.aliases=[];function e(t){t.languages.purebasic=t.languages.extend("clike",{comment:/;.*/,keyword:/\b(?:align|and|as|break|calldebugger|case|compilercase|compilerdefault|compilerelse|compilerelseif|compilerendif|compilerendselect|compilererror|compilerif|compilerselect|continue|data|datasection|debug|debuglevel|declare|declarec|declarecdll|declaredll|declaremodule|default|define|dim|disableasm|disabledebugger|disableexplicit|else|elseif|enableasm|enabledebugger|enableexplicit|end|enddatasection|enddeclaremodule|endenumeration|endif|endimport|endinterface|endmacro|endmodule|endprocedure|endselect|endstructure|endstructureunion|endwith|enumeration|extends|fakereturn|for|foreach|forever|global|gosub|goto|if|import|importc|includebinary|includefile|includepath|interface|macro|module|newlist|newmap|next|not|or|procedure|procedurec|procedurecdll|proceduredll|procedurereturn|protected|prototype|prototypec|read|redim|repeat|restore|return|runtime|select|shared|static|step|structure|structureunion|swap|threaded|to|until|wend|while|with|xincludefile|xor)\b/i,function:/\b\w+(?:\.\w+)?\s*(?=\()/,number:/(?:\$[\da-f]+|\b-?(?:\d+(?:\.\d+)?|\.\d+)(?:e[+-]?\d+)?)\b/i,operator:/(?:@\*?|\?|\*)\w+|-[>-]?|\+\+?|!=?|<>?=?|==?|&&?|\|?\||[~^%?*/@]/}),t.languages.insertBefore("purebasic","keyword",{tag:/#\w+\$?/,asm:{pattern:/(^[\t ]*)!.*/m,lookbehind:!0,alias:"tag",inside:{comment:/;.*/,string:{pattern:/(["'`])(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},"label-reference-anonymous":{pattern:/(!\s*j[a-z]+\s+)@[fb]/i,lookbehind:!0,alias:"fasm-label"},"label-reference-addressed":{pattern:/(!\s*j[a-z]+\s+)[A-Z._?$@][\w.?$@~#]*/i,lookbehind:!0,alias:"fasm-label"},keyword:[/\b(?:extern|global)\b[^;\r\n]*/i,/\b(?:CPU|DEFAULT|FLOAT)\b.*/],function:{pattern:/^([\t ]*!\s*)[\da-z]+(?=\s|$)/im,lookbehind:!0},"function-inline":{pattern:/(:\s*)[\da-z]+(?=\s)/i,lookbehind:!0,alias:"function"},label:{pattern:/^([\t ]*!\s*)[A-Za-z._?$@][\w.?$@~#]*(?=:)/m,lookbehind:!0,alias:"fasm-label"},register:/\b(?:st\d|[xyz]mm\d\d?|[cdt]r\d|r\d\d?[bwd]?|[er]?[abcd]x|[abcd][hl]|[er]?(?:bp|di|si|sp)|[cdefgs]s|mm\d+)\b/i,number:/(?:\b|-|(?=\$))(?:0[hx](?:[\da-f]*\.)?[\da-f]+(?:p[+-]?\d+)?|\d[\da-f]+[hx]|\$\d[\da-f]*|0[oq][0-7]+|[0-7]+[oq]|0[by][01]+|[01]+[by]|0[dt]\d+|(?:\d+(?:\.\d+)?|\.\d+)(?:\.?e[+-]?\d+)?[dt]?)\b/i,operator:/[\[\]*+\-/%<>=&|$!,.:]/}}}),delete t.languages.purebasic["class-name"],delete t.languages.purebasic.boolean,t.languages.pbfasm=t.languages.purebasic}return a0}var o0,WL;function pSe(){if(WL)return o0;WL=1;var e=NA();o0=t,t.displayName="purescript",t.aliases=["purs"];function t(n){n.register(e),n.languages.purescript=n.languages.extend("haskell",{keyword:/\b(?:ado|case|class|data|derive|do|else|forall|if|in|infixl|infixr|instance|let|module|newtype|of|primitive|then|type|where)\b|∀/,"import-statement":{pattern:/(^[\t ]*)import\s+[A-Z][\w']*(?:\.[A-Z][\w']*)*(?:\s+as\s+[A-Z][\w']*(?:\.[A-Z][\w']*)*)?(?:\s+hiding\b)?/m,lookbehind:!0,inside:{keyword:/\b(?:as|hiding|import)\b/,punctuation:/\./}},builtin:/\b(?:absurd|add|ap|append|apply|between|bind|bottom|clamp|compare|comparing|compose|conj|const|degree|discard|disj|div|eq|flap|flip|gcd|identity|ifM|join|lcm|liftA1|liftM1|map|max|mempty|min|mod|mul|negate|not|notEq|one|otherwise|recip|show|sub|top|unit|unless|unlessM|void|when|whenM|zero)\b/,operator:[n.languages.haskell.operator[0],n.languages.haskell.operator[2],/[\xa2-\xa6\xa8\xa9\xac\xae-\xb1\xb4\xb8\xd7\xf7\u02c2-\u02c5\u02d2-\u02df\u02e5-\u02eb\u02ed\u02ef-\u02ff\u0375\u0384\u0385\u03f6\u0482\u058d-\u058f\u0606-\u0608\u060b\u060e\u060f\u06de\u06e9\u06fd\u06fe\u07f6\u07fe\u07ff\u09f2\u09f3\u09fa\u09fb\u0af1\u0b70\u0bf3-\u0bfa\u0c7f\u0d4f\u0d79\u0e3f\u0f01-\u0f03\u0f13\u0f15-\u0f17\u0f1a-\u0f1f\u0f34\u0f36\u0f38\u0fbe-\u0fc5\u0fc7-\u0fcc\u0fce\u0fcf\u0fd5-\u0fd8\u109e\u109f\u1390-\u1399\u166d\u17db\u1940\u19de-\u19ff\u1b61-\u1b6a\u1b74-\u1b7c\u1fbd\u1fbf-\u1fc1\u1fcd-\u1fcf\u1fdd-\u1fdf\u1fed-\u1fef\u1ffd\u1ffe\u2044\u2052\u207a-\u207c\u208a-\u208c\u20a0-\u20bf\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211e-\u2123\u2125\u2127\u2129\u212e\u213a\u213b\u2140-\u2144\u214a-\u214d\u214f\u218a\u218b\u2190-\u2307\u230c-\u2328\u232b-\u2426\u2440-\u244a\u249c-\u24e9\u2500-\u2767\u2794-\u27c4\u27c7-\u27e5\u27f0-\u2982\u2999-\u29d7\u29dc-\u29fb\u29fe-\u2b73\u2b76-\u2b95\u2b97-\u2bff\u2ce5-\u2cea\u2e50\u2e51\u2e80-\u2e99\u2e9b-\u2ef3\u2f00-\u2fd5\u2ff0-\u2ffb\u3004\u3012\u3013\u3020\u3036\u3037\u303e\u303f\u309b\u309c\u3190\u3191\u3196-\u319f\u31c0-\u31e3\u3200-\u321e\u322a-\u3247\u3250\u3260-\u327f\u328a-\u32b0\u32c0-\u33ff\u4dc0-\u4dff\ua490-\ua4c6\ua700-\ua716\ua720\ua721\ua789\ua78a\ua828-\ua82b\ua836-\ua839\uaa77-\uaa79\uab5b\uab6a\uab6b\ufb29\ufbb2-\ufbc1\ufdfc\ufdfd\ufe62\ufe64-\ufe66\ufe69\uff04\uff0b\uff1c-\uff1e\uff3e\uff40\uff5c\uff5e\uffe0-\uffe6\uffe8-\uffee\ufffc\ufffd]/]}),n.languages.purs=n.languages.purescript}return o0}var i0,KL;function gSe(){if(KL)return i0;KL=1,i0=e,e.displayName="python",e.aliases=["py"];function e(t){t.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:/[{}[\];(),.:]/},t.languages.python["string-interpolation"].inside.interpolation.inside.rest=t.languages.python,t.languages.py=t.languages.python}return i0}var s0,YL;function mSe(){if(YL)return s0;YL=1,s0=e,e.displayName="q",e.aliases=[];function e(t){t.languages.q={string:/"(?:\\.|[^"\\\r\n])*"/,comment:[{pattern:/([\t )\]}])\/.*/,lookbehind:!0,greedy:!0},{pattern:/(^|\r?\n|\r)\/[\t ]*(?:(?:\r?\n|\r)(?:.*(?:\r?\n|\r(?!\n)))*?(?:\\(?=[\t ]*(?:\r?\n|\r))|$)|\S.*)/,lookbehind:!0,greedy:!0},{pattern:/^\\[\t ]*(?:\r?\n|\r)[\s\S]+/m,greedy:!0},{pattern:/^#!.+/m,greedy:!0}],symbol:/`(?::\S+|[\w.]*)/,datetime:{pattern:/0N[mdzuvt]|0W[dtz]|\d{4}\.\d\d(?:m|\.\d\d(?:T(?:\d\d(?::\d\d(?::\d\d(?:[.:]\d\d\d)?)?)?)?)?[dz]?)|\d\d:\d\d(?::\d\d(?:[.:]\d\d\d)?)?[uvt]?/,alias:"number"},number:/\b(?![01]:)(?:0N[hje]?|0W[hj]?|0[wn]|0x[\da-fA-F]+|\d+(?:\.\d*)?(?:e[+-]?\d+)?[hjfeb]?)/,keyword:/\\\w+\b|\b(?:abs|acos|aj0?|all|and|any|asc|asin|asof|atan|attr|avgs?|binr?|by|ceiling|cols|cor|cos|count|cov|cross|csv|cut|delete|deltas|desc|dev|differ|distinct|div|do|dsave|ej|enlist|eval|except|exec|exit|exp|fby|fills|first|fkeys|flip|floor|from|get|getenv|group|gtime|hclose|hcount|hdel|hopen|hsym|iasc|identity|idesc|if|ij|in|insert|inter|inv|keys?|last|like|list|ljf?|load|log|lower|lsq|ltime|ltrim|mavg|maxs?|mcount|md5|mdev|med|meta|mins?|mmax|mmin|mmu|mod|msum|neg|next|not|null|or|over|parse|peach|pj|plist|prds?|prev|prior|rand|rank|ratios|raze|read0|read1|reciprocal|reval|reverse|rload|rotate|rsave|rtrim|save|scan|scov|sdev|select|set|setenv|show|signum|sin|sqrt|ssr?|string|sublist|sums?|sv|svar|system|tables|tan|til|trim|txf|type|uj|ungroup|union|update|upper|upsert|value|var|views?|vs|wavg|where|while|within|wj1?|wsum|ww|xasc|xbar|xcols?|xdesc|xexp|xgroup|xkey|xlog|xprev|xrank)\b/,adverb:{pattern:/['\/\\]:?|\beach\b/,alias:"function"},verb:{pattern:/(?:\B\.\B|\b[01]:|<[=>]?|>=?|[:+\-*%,!?~=|$&#@^]):?|\b_\b:?/,alias:"operator"},punctuation:/[(){}\[\];.]/}}return s0}var l0,ZL;function hSe(){if(ZL)return l0;ZL=1,l0=e,e.displayName="qml",e.aliases=[];function e(t){(function(n){for(var r=/"(?:\\.|[^\\"\r\n])*"|'(?:\\.|[^\\'\r\n])*'/.source,a=/\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))*\*\//.source,o=/(?:[^\\()[\]{}"'/]||\/(?![*/])||\(*\)|\[*\]|\{*\}|\\[\s\S])/.source.replace(//g,function(){return r}).replace(//g,function(){return a}),i=0;i<2;i++)o=o.replace(//g,function(){return o});o=o.replace(//g,"[^\\s\\S]"),n.languages.qml={comment:{pattern:/\/\/.*|\/\*[\s\S]*?\*\//,greedy:!0},"javascript-function":{pattern:RegExp(/((?:^|;)[ \t]*)function\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*\(*\)\s*\{*\}/.source.replace(//g,function(){return o}),"m"),lookbehind:!0,greedy:!0,alias:"language-javascript",inside:n.languages.javascript},"class-name":{pattern:/((?:^|[:;])[ \t]*)(?!\d)\w+(?=[ \t]*\{|[ \t]+on\b)/m,lookbehind:!0},property:[{pattern:/((?:^|[;{])[ \t]*)(?!\d)\w+(?:\.\w+)*(?=[ \t]*:)/m,lookbehind:!0},{pattern:/((?:^|[;{])[ \t]*)property[ \t]+(?!\d)\w+(?:\.\w+)*[ \t]+(?!\d)\w+(?:\.\w+)*(?=[ \t]*:)/m,lookbehind:!0,inside:{keyword:/^property/,property:/\w+(?:\.\w+)*/}}],"javascript-expression":{pattern:RegExp(/(:[ \t]*)(?![\s;}[])(?:(?!$|[;}]))+/.source.replace(//g,function(){return o}),"m"),lookbehind:!0,greedy:!0,alias:"language-javascript",inside:n.languages.javascript},string:{pattern:/"(?:\\.|[^\\"\r\n])*"/,greedy:!0},keyword:/\b(?:as|import|on)\b/,punctuation:/[{}[\]:;,]/}})(t)}return l0}var c0,XL;function bSe(){if(XL)return c0;XL=1,c0=e,e.displayName="qore",e.aliases=[];function e(t){t.languages.qore=t.languages.extend("clike",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:\/\/|#).*)/,lookbehind:!0},string:{pattern:/("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0},keyword:/\b(?:abstract|any|assert|binary|bool|boolean|break|byte|case|catch|char|class|code|const|continue|data|default|do|double|else|enum|extends|final|finally|float|for|goto|hash|if|implements|import|inherits|instanceof|int|interface|long|my|native|new|nothing|null|object|our|own|private|reference|rethrow|return|short|soft(?:bool|date|float|int|list|number|string)|static|strictfp|string|sub|super|switch|synchronized|this|throw|throws|transient|try|void|volatile|while)\b/,boolean:/\b(?:false|true)\b/i,function:/\$?\b(?!\d)\w+(?=\()/,number:/\b(?:0b[01]+|0x(?:[\da-f]*\.)?[\da-fp\-]+|(?:\d+(?:\.\d+)?|\.\d+)(?:e\d+)?[df]|(?:\d+(?:\.\d+)?|\.\d+))\b/i,operator:{pattern:/(^|[^.])(?:\+[+=]?|-[-=]?|[!=](?:==?|~)?|>>?=?|<(?:=>?|<=?)?|&[&=]?|\|[|=]?|[*\/%^]=?|[~?])/,lookbehind:!0},variable:/\$(?!\d)\w+\b/})}return c0}var u0,QL;function ySe(){if(QL)return u0;QL=1,u0=e,e.displayName="qsharp",e.aliases=["qs"];function e(t){(function(n){function r(b,y){return b.replace(/<<(\d+)>>/g,function(w,v){return"(?:"+y[+v]+")"})}function a(b,y,w){return RegExp(r(b,y),w||"")}function o(b,y){for(var w=0;w>/g,function(){return"(?:"+b+")"});return b.replace(/<>/g,"[^\\s\\S]")}var i={type:"Adj BigInt Bool Ctl Double false Int One Pauli PauliI PauliX PauliY PauliZ Qubit Range Result String true Unit Zero",other:"Adjoint adjoint apply as auto body borrow borrowing Controlled controlled distribute elif else fail fixup for function if in internal intrinsic invert is let mutable namespace new newtype open operation repeat return self set until use using while within"};function s(b){return"\\b(?:"+b.trim().replace(/ /g,"|")+")\\b"}var l=RegExp(s(i.type+" "+i.other)),c=/\b[A-Za-z_]\w*\b/.source,u=r(/<<0>>(?:\s*\.\s*<<0>>)*/.source,[c]),d={keyword:l,punctuation:/[<>()?,.:[\]]/},g=/"(?:\\.|[^\\"])*"/.source;n.languages.qsharp=n.languages.extend("clike",{comment:/\/\/.*/,string:[{pattern:a(/(^|[^$\\])<<0>>/.source,[g]),lookbehind:!0,greedy:!0}],"class-name":[{pattern:a(/(\b(?:as|open)\s+)<<0>>(?=\s*(?:;|as\b))/.source,[u]),lookbehind:!0,inside:d},{pattern:a(/(\bnamespace\s+)<<0>>(?=\s*\{)/.source,[u]),lookbehind:!0,inside:d}],keyword:l,number:/(?:\b0(?:x[\da-f]+|b[01]+|o[0-7]+)|(?:\B\.\d+|\b\d+(?:\.\d*)?)(?:e[-+]?\d+)?)l?\b/i,operator:/\band=|\bor=|\band\b|\bnot\b|\bor\b|<[-=]|[-=]>|>>>=?|<<<=?|\^\^\^=?|\|\|\|=?|&&&=?|w\/=?|~~~|[*\/+\-^=!%]=?/,punctuation:/::|[{}[\];(),.:]/}),n.languages.insertBefore("qsharp","number",{range:{pattern:/\.\./,alias:"operator"}});var m=o(r(/\{(?:[^"{}]|<<0>>|<>)*\}/.source,[g]),2);n.languages.insertBefore("qsharp","string",{"interpolation-string":{pattern:a(/\$"(?:\\.|<<0>>|[^\\"{])*"/.source,[m]),greedy:!0,inside:{interpolation:{pattern:a(/((?:^|[^\\])(?:\\\\)*)<<0>>/.source,[m]),lookbehind:!0,inside:{punctuation:/^\{|\}$/,expression:{pattern:/[\s\S]+/,alias:"language-qsharp",inside:n.languages.qsharp}}},string:/[\s\S]+/}}})})(t),t.languages.qs=t.languages.qsharp}return u0}var d0,JL;function vSe(){if(JL)return d0;JL=1,d0=e,e.displayName="r",e.aliases=[];function e(t){t.languages.r={comment:/#.*/,string:{pattern:/(['"])(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},"percent-operator":{pattern:/%[^%\s]*%/,alias:"operator"},boolean:/\b(?:FALSE|TRUE)\b/,ellipsis:/\.\.(?:\.|\d+)/,number:[/\b(?:Inf|NaN)\b/,/(?:\b0x[\dA-Fa-f]+(?:\.\d*)?|\b\d+(?:\.\d*)?|\B\.\d+)(?:[EePp][+-]?\d+)?[iL]?/],keyword:/\b(?:NA|NA_character_|NA_complex_|NA_integer_|NA_real_|NULL|break|else|for|function|if|in|next|repeat|while)\b/,operator:/->?>?|<(?:=|=!]=?|::?|&&?|\|\|?|[+*\/^$@~]/,punctuation:/[(){}\[\],;]/}}return d0}var f0,eM;function SSe(){if(eM)return f0;eM=1;var e=LA();f0=t,t.displayName="racket",t.aliases=["rkt"];function t(n){n.register(e),n.languages.racket=n.languages.extend("scheme",{"lambda-parameter":{pattern:/([(\[]lambda\s+[(\[])[^()\[\]'\s]+/,lookbehind:!0}}),n.languages.insertBefore("racket","string",{lang:{pattern:/^#lang.+/m,greedy:!0,alias:"keyword"}}),n.languages.rkt=n.languages.racket}return f0}var p0,tM;function wSe(){if(tM)return p0;tM=1,p0=e,e.displayName="reason",e.aliases=[];function e(t){t.languages.reason=t.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),t.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete t.languages.reason.function}return p0}var g0,nM;function ESe(){if(nM)return g0;nM=1,g0=e,e.displayName="regex",e.aliases=[];function e(t){(function(n){var r={pattern:/\\[\\(){}[\]^$+*?|.]/,alias:"escape"},a=/\\(?:x[\da-fA-F]{2}|u[\da-fA-F]{4}|u\{[\da-fA-F]+\}|0[0-7]{0,2}|[123][0-7]{2}|c[a-zA-Z]|.)/,o={pattern:/\.|\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},i={pattern:/\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},s="(?:[^\\\\-]|"+a.source+")",l=RegExp(s+"-"+s),c={pattern:/(<|')[^<>']+(?=[>']$)/,lookbehind:!0,alias:"variable"};n.languages.regex={"char-class":{pattern:/((?:^|[^\\])(?:\\\\)*)\[(?:[^\\\]]|\\[\s\S])*\]/,lookbehind:!0,inside:{"char-class-negation":{pattern:/(^\[)\^/,lookbehind:!0,alias:"operator"},"char-class-punctuation":{pattern:/^\[|\]$/,alias:"punctuation"},range:{pattern:l,inside:{escape:a,"range-punctuation":{pattern:/-/,alias:"operator"}}},"special-escape":r,"char-set":i,escape:a}},"special-escape":r,"char-set":o,backreference:[{pattern:/\\(?![123][0-7]{2})[1-9]/,alias:"keyword"},{pattern:/\\k<[^<>']+>/,alias:"keyword",inside:{"group-name":c}}],anchor:{pattern:/[$^]|\\[ABbGZz]/,alias:"function"},escape:a,group:[{pattern:/\((?:\?(?:<[^<>']+>|'[^<>']+'|[>:]|:=]=?|!=|\b_\b/,punctuation:/[,;.\[\]{}()]/}}return m0}var h0,aM;function kSe(){if(aM)return h0;aM=1,h0=e,e.displayName="renpy",e.aliases=["rpy"];function e(t){t.languages.renpy={comment:{pattern:/(^|[^\\])#.+/,lookbehind:!0},string:{pattern:/("""|''')[\s\S]+?\1|("|')(?:\\.|(?!\2)[^\\])*\2|(?:^#?(?:(?:[0-9a-fA-F]){3}|[0-9a-fA-F]{6})$)/m,greedy:!0},function:/\b[a-z_]\w*(?=\()/i,property:/\b(?:Update|UpdateVersion|action|activate_sound|adv_nvl_transition|after_load_transition|align|alpha|alt|anchor|antialias|area|auto|background|bar_invert|bar_resizing|bar_vertical|black_color|bold|bottom_bar|bottom_gutter|bottom_margin|bottom_padding|box_reverse|box_wrap|can_update|caret|child|color|crop|default_afm_enable|default_afm_time|default_fullscreen|default_text_cps|developer|directory_name|drag_handle|drag_joined|drag_name|drag_raise|draggable|dragged|drop_shadow|drop_shadow_color|droppable|dropped|easein|easeout|edgescroll|end_game_transition|end_splash_transition|enter_replay_transition|enter_sound|enter_transition|enter_yesno_transition|executable_name|exit_replay_transition|exit_sound|exit_transition|exit_yesno_transition|fadein|fadeout|first_indent|first_spacing|fit_first|focus|focus_mask|font|foreground|game_main_transition|get_installed_packages|google_play_key|google_play_salt|ground|has_music|has_sound|has_voice|height|help|hinting|hover|hover_background|hover_color|hover_sound|hovered|hyperlink_functions|idle|idle_color|image_style|include_update|insensitive|insensitive_background|insensitive_color|inside|intra_transition|italic|justify|kerning|keyboard_focus|language|layer_clipping|layers|layout|left_bar|left_gutter|left_margin|left_padding|length|line_leading|line_overlap_split|line_spacing|linear|main_game_transition|main_menu_music|maximum|min_width|minimum|minwidth|modal|mouse|mousewheel|name|narrator_menu|newline_indent|nvl_adv_transition|offset|order_reverse|outlines|overlay_functions|pos|position|prefix|radius|range|rest_indent|right_bar|right_gutter|right_margin|right_padding|rotate|rotate_pad|ruby_style|sample_sound|save_directory|say_attribute_transition|screen_height|screen_width|scrollbars|selected_hover|selected_hover_color|selected_idle|selected_idle_color|selected_insensitive|show_side_image|show_two_window|side_spacing|side_xpos|side_ypos|size|size_group|slow_cps|slow_cps_multiplier|spacing|strikethrough|subpixel|text_align|text_style|text_xpos|text_y_fudge|text_ypos|thumb|thumb_offset|thumb_shadow|thumbnail_height|thumbnail_width|time|top_bar|top_gutter|top_margin|top_padding|translations|underline|unscrollable|update|value|version|version_name|version_tuple|vertical|width|window_hide_transition|window_icon|window_left_padding|window_show_transition|window_title|windows_icon|xadjustment|xalign|xanchor|xanchoraround|xaround|xcenter|xfill|xinitial|xmargin|xmaximum|xminimum|xoffset|xofsset|xpadding|xpos|xsize|xzoom|yadjustment|yalign|yanchor|yanchoraround|yaround|ycenter|yfill|yinitial|ymargin|ymaximum|yminimum|yoffset|ypadding|ypos|ysize|ysizexysize|yzoom|zoom|zorder)\b/,tag:/\b(?:bar|block|button|buttoscreenn|drag|draggroup|fixed|frame|grid|[hv]box|hotbar|hotspot|image|imagebutton|imagemap|input|key|label|menu|mm_menu_frame|mousearea|nvl|parallel|screen|self|side|tag|text|textbutton|timer|vbar|viewport|window)\b|\$/,keyword:/\b(?:None|add|adjustment|alignaround|allow|angle|animation|around|as|assert|behind|box_layout|break|build|cache|call|center|changed|child_size|choice|circles|class|clear|clicked|clipping|clockwise|config|contains|continue|corner1|corner2|counterclockwise|def|default|define|del|delay|disabled|disabled_text|dissolve|elif|else|event|except|exclude|exec|expression|fade|finally|for|from|function|global|gm_root|has|hide|id|if|import|in|init|is|jump|knot|lambda|left|less_rounded|mm_root|movie|music|null|on|onlayer|pass|pause|persistent|play|print|python|queue|raise|random|renpy|repeat|return|right|rounded_window|scene|scope|set|show|slow|slow_abortable|slow_done|sound|stop|store|style|style_group|substitute|suffix|theme|transform|transform_anchor|transpose|try|ui|unhovered|updater|use|voice|while|widget|widget_hover|widget_selected|widget_text|yield)\b/,boolean:/\b(?:[Ff]alse|[Tt]rue)\b/,number:/(?:\b(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*(?:\.\d*)?)|\B\.\d+)(?:e[+-]?\d+)?j?/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:and|at|not|or|with)\b/,punctuation:/[{}[\];(),.:]/},t.languages.rpy=t.languages.renpy}return h0}var b0,oM;function CSe(){if(oM)return b0;oM=1,b0=e,e.displayName="rest",e.aliases=[];function e(t){t.languages.rest={table:[{pattern:/(^[\t ]*)(?:\+[=-]+)+\+(?:\r?\n|\r)(?:\1[+|].+[+|](?:\r?\n|\r))+\1(?:\+[=-]+)+\+/m,lookbehind:!0,inside:{punctuation:/\||(?:\+[=-]+)+\+/}},{pattern:/(^[\t ]*)=+ [ =]*=(?:(?:\r?\n|\r)\1.+)+(?:\r?\n|\r)\1=+ [ =]*=(?=(?:\r?\n|\r){2}|\s*$)/m,lookbehind:!0,inside:{punctuation:/[=-]+/}}],"substitution-def":{pattern:/(^[\t ]*\.\. )\|(?:[^|\s](?:[^|]*[^|\s])?)\| [^:]+::/m,lookbehind:!0,inside:{substitution:{pattern:/^\|(?:[^|\s]|[^|\s][^|]*[^|\s])\|/,alias:"attr-value",inside:{punctuation:/^\||\|$/}},directive:{pattern:/( )(?! )[^:]+::/,lookbehind:!0,alias:"function",inside:{punctuation:/::$/}}}},"link-target":[{pattern:/(^[\t ]*\.\. )\[[^\]]+\]/m,lookbehind:!0,alias:"string",inside:{punctuation:/^\[|\]$/}},{pattern:/(^[\t ]*\.\. )_(?:`[^`]+`|(?:[^:\\]|\\.)+):/m,lookbehind:!0,alias:"string",inside:{punctuation:/^_|:$/}}],directive:{pattern:/(^[\t ]*\.\. )[^:]+::/m,lookbehind:!0,alias:"function",inside:{punctuation:/::$/}},comment:{pattern:/(^[\t ]*\.\.)(?:(?: .+)?(?:(?:\r?\n|\r).+)+| .+)(?=(?:\r?\n|\r){2}|$)/m,lookbehind:!0},title:[{pattern:/^(([!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~])\2+)(?:\r?\n|\r).+(?:\r?\n|\r)\1$/m,inside:{punctuation:/^[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]+|[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]+$/,important:/.+/}},{pattern:/(^|(?:\r?\n|\r){2}).+(?:\r?\n|\r)([!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~])\2+(?=\r?\n|\r|$)/,lookbehind:!0,inside:{punctuation:/[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]+$/,important:/.+/}}],hr:{pattern:/((?:\r?\n|\r){2})([!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~])\2{3,}(?=(?:\r?\n|\r){2})/,lookbehind:!0,alias:"punctuation"},field:{pattern:/(^[\t ]*):[^:\r\n]+:(?= )/m,lookbehind:!0,alias:"attr-name"},"command-line-option":{pattern:/(^[\t ]*)(?:[+-][a-z\d]|(?:--|\/)[a-z\d-]+)(?:[ =](?:[a-z][\w-]*|<[^<>]+>))?(?:, (?:[+-][a-z\d]|(?:--|\/)[a-z\d-]+)(?:[ =](?:[a-z][\w-]*|<[^<>]+>))?)*(?=(?:\r?\n|\r)? {2,}\S)/im,lookbehind:!0,alias:"symbol"},"literal-block":{pattern:/::(?:\r?\n|\r){2}([ \t]+)(?![ \t]).+(?:(?:\r?\n|\r)\1.+)*/,inside:{"literal-block-punctuation":{pattern:/^::/,alias:"punctuation"}}},"quoted-literal-block":{pattern:/::(?:\r?\n|\r){2}([!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]).*(?:(?:\r?\n|\r)\1.*)*/,inside:{"literal-block-punctuation":{pattern:/^(?:::|([!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~])\1*)/m,alias:"punctuation"}}},"list-bullet":{pattern:/(^[\t ]*)(?:[*+\-•‣⁃]|\(?(?:\d+|[a-z]|[ivxdclm]+)\)|(?:\d+|[a-z]|[ivxdclm]+)\.)(?= )/im,lookbehind:!0,alias:"punctuation"},"doctest-block":{pattern:/(^[\t ]*)>>> .+(?:(?:\r?\n|\r).+)*/m,lookbehind:!0,inside:{punctuation:/^>>>/}},inline:[{pattern:/(^|[\s\-:\/'"<(\[{])(?::[^:]+:`.*?`|`.*?`:[^:]+:|(\*\*?|``?|\|)(?!\s)(?:(?!\2).)*\S\2(?=[\s\-.,:;!?\\\/'")\]}]|$))/m,lookbehind:!0,inside:{bold:{pattern:/(^\*\*).+(?=\*\*$)/,lookbehind:!0},italic:{pattern:/(^\*).+(?=\*$)/,lookbehind:!0},"inline-literal":{pattern:/(^``).+(?=``$)/,lookbehind:!0,alias:"symbol"},role:{pattern:/^:[^:]+:|:[^:]+:$/,alias:"function",inside:{punctuation:/^:|:$/}},"interpreted-text":{pattern:/(^`).+(?=`$)/,lookbehind:!0,alias:"attr-value"},substitution:{pattern:/(^\|).+(?=\|$)/,lookbehind:!0,alias:"attr-value"},punctuation:/\*\*?|``?|\|/}}],link:[{pattern:/\[[^\[\]]+\]_(?=[\s\-.,:;!?\\\/'")\]}]|$)/,alias:"string",inside:{punctuation:/^\[|\]_$/}},{pattern:/(?:\b[a-z\d]+(?:[_.:+][a-z\d]+)*_?_|`[^`]+`_?_|_`[^`]+`)(?=[\s\-.,:;!?\\\/'")\]}]|$)/i,alias:"string",inside:{punctuation:/^_?`|`$|`?_?_$/}}],punctuation:{pattern:/(^[\t ]*)(?:\|(?= |$)|(?:---?|—|\.\.|__)(?= )|\.\.$)/m,lookbehind:!0}}}return b0}var y0,iM;function _Se(){if(iM)return y0;iM=1,y0=e,e.displayName="rip",e.aliases=[];function e(t){t.languages.rip={comment:{pattern:/#.*/,greedy:!0},char:{pattern:/\B`[^\s`'",.:;#\/\\()<>\[\]{}]\b/,greedy:!0},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},regex:{pattern:/(^|[^/])\/(?!\/)(?:\[[^\n\r\]]*\]|\\.|[^/\\\r\n\[])+\/(?=\s*(?:$|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},keyword:/(?:=>|->)|\b(?:case|catch|class|else|exit|finally|if|raise|return|switch|try)\b/,builtin:/@|\bSystem\b/,boolean:/\b(?:false|true)\b/,date:/\b\d{4}-\d{2}-\d{2}\b/,time:/\b\d{2}:\d{2}:\d{2}\b/,datetime:/\b\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\b/,symbol:/:[^\d\s`'",.:;#\/\\()<>\[\]{}][^\s`'",.:;#\/\\()<>\[\]{}]*/,number:/[+-]?\b(?:\d+\.\d+|\d+)\b/,punctuation:/(?:\.{2,3})|[`,.:;=\/\\()<>\[\]{}]/,reference:/[^\d\s`'",.:;#\/\\()<>\[\]{}][^\s`'",.:;#\/\\()<>\[\]{}]*/}}return y0}var v0,sM;function ASe(){if(sM)return v0;sM=1,v0=e,e.displayName="roboconf",e.aliases=[];function e(t){t.languages.roboconf={comment:/#.*/,keyword:{pattern:/(^|\s)(?:(?:external|import)\b|(?:facet|instance of)(?=[ \t]+[\w-]+[ \t]*\{))/,lookbehind:!0},component:{pattern:/[\w-]+(?=[ \t]*\{)/,alias:"variable"},property:/[\w.-]+(?=[ \t]*:)/,value:{pattern:/(=[ \t]*(?![ \t]))[^,;]+/,lookbehind:!0,alias:"attr-value"},optional:{pattern:/\(optional\)/,alias:"builtin"},wildcard:{pattern:/(\.)\*/,lookbehind:!0,alias:"operator"},punctuation:/[{},.;:=]/}}return v0}var S0,lM;function TSe(){if(lM)return S0;lM=1,S0=e,e.displayName="robotframework",e.aliases=[];function e(t){(function(n){var r={pattern:/(^[ \t]*| {2}|\t)#.*/m,lookbehind:!0,greedy:!0},a={pattern:/((?:^|[^\\])(?:\\{2})*)[$@&%]\{(?:[^{}\r\n]|\{[^{}\r\n]*\})*\}/,lookbehind:!0,inside:{punctuation:/^[$@&%]\{|\}$/}};function o(c,u){var d={};d["section-header"]={pattern:/^ ?\*{3}.+?\*{3}/,alias:"keyword"};for(var g in u)d[g]=u[g];return d.tag={pattern:/([\r\n](?: {2}|\t)[ \t]*)\[[-\w]+\]/,lookbehind:!0,inside:{punctuation:/\[|\]/}},d.variable=a,d.comment=r,{pattern:RegExp(/^ ?\*{3}[ \t]*[ \t]*\*{3}(?:.|[\r\n](?!\*{3}))*/.source.replace(//g,function(){return c}),"im"),alias:"section",inside:d}}var i={pattern:/(\[Documentation\](?: {2}|\t)[ \t]*)(?![ \t]|#)(?:.|(?:\r\n?|\n)[ \t]*\.{3})+/,lookbehind:!0,alias:"string"},s={pattern:/([\r\n] ?)(?!#)(?:\S(?:[ \t]\S)*)+/,lookbehind:!0,alias:"function",inside:{variable:a}},l={pattern:/([\r\n](?: {2}|\t)[ \t]*)(?!\[|\.{3}|#)(?:\S(?:[ \t]\S)*)+/,lookbehind:!0,inside:{variable:a}};n.languages.robotframework={settings:o("Settings",{documentation:{pattern:/([\r\n] ?Documentation(?: {2}|\t)[ \t]*)(?![ \t]|#)(?:.|(?:\r\n?|\n)[ \t]*\.{3})+/,lookbehind:!0,alias:"string"},property:{pattern:/([\r\n] ?)(?!\.{3}|#)(?:\S(?:[ \t]\S)*)+/,lookbehind:!0}}),variables:o("Variables"),"test-cases":o("Test Cases",{"test-name":s,documentation:i,property:l}),keywords:o("Keywords",{"keyword-name":s,documentation:i,property:l}),tasks:o("Tasks",{"task-name":s,documentation:i,property:l}),comment:r},n.languages.robot=n.languages.robotframework})(t)}return S0}var w0,cM;function RSe(){if(cM)return w0;cM=1,w0=e,e.displayName="rust",e.aliases=[];function e(t){(function(n){for(var r=/\/\*(?:[^*/]|\*(?!\/)|\/(?!\*)|)*\*\//.source,a=0;a<2;a++)r=r.replace(//g,function(){return r});r=r.replace(//g,function(){return/[^\s\S]/.source}),n.languages.rust={comment:[{pattern:RegExp(/(^|[^\\])/.source+r),lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/b?"(?:\\[\s\S]|[^\\"])*"|b?r(#*)"(?:[^"]|"(?!\1))*"\1/,greedy:!0},char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u\{(?:[\da-fA-F]_*){1,6}\}|.)|[^\\\r\n\t'])'/,greedy:!0},attribute:{pattern:/#!?\[(?:[^\[\]"]|"(?:\\[\s\S]|[^\\"])*")*\]/,greedy:!0,alias:"attr-name",inside:{string:null}},"closure-params":{pattern:/([=(,:]\s*|\bmove\s*)\|[^|]*\||\|[^|]*\|(?=\s*(?:\{|->))/,lookbehind:!0,greedy:!0,inside:{"closure-punctuation":{pattern:/^\||\|$/,alias:"punctuation"},rest:null}},"lifetime-annotation":{pattern:/'\w+/,alias:"symbol"},"fragment-specifier":{pattern:/(\$\w+:)[a-z]+/,lookbehind:!0,alias:"punctuation"},variable:/\$\w+/,"function-definition":{pattern:/(\bfn\s+)\w+/,lookbehind:!0,alias:"function"},"type-definition":{pattern:/(\b(?:enum|struct|trait|type|union)\s+)\w+/,lookbehind:!0,alias:"class-name"},"module-declaration":[{pattern:/(\b(?:crate|mod)\s+)[a-z][a-z_\d]*/,lookbehind:!0,alias:"namespace"},{pattern:/(\b(?:crate|self|super)\s*)::\s*[a-z][a-z_\d]*\b(?:\s*::(?:\s*[a-z][a-z_\d]*\s*::)*)?/,lookbehind:!0,alias:"namespace",inside:{punctuation:/::/}}],keyword:[/\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,/\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\b/],function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())/,macro:{pattern:/\b\w+!/,alias:"property"},constant:/\b[A-Z_][A-Z_\d]+\b/,"class-name":/\b[A-Z]\w*\b/,namespace:{pattern:/(?:\b[a-z][a-z_\d]*\s*::\s*)*\b[a-z][a-z_\d]*\s*::(?!\s*<)/,inside:{punctuation:/::/}},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\b/,boolean:/\b(?:false|true)\b/,punctuation:/->|\.\.=|\.{1,3}|::|[{}[\];(),:]/,operator:/[-+*\/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<>?=?|[@?]/},n.languages.rust["closure-params"].inside.rest=n.languages.rust,n.languages.rust.attribute.inside.string=n.languages.rust.string})(t)}return w0}var E0,uM;function NSe(){if(uM)return E0;uM=1,E0=e,e.displayName="sas",e.aliases=[];function e(t){(function(n){var r=/(?:"(?:""|[^"])*"(?!")|'(?:''|[^'])*'(?!'))/.source,a=/\b(?:\d[\da-f]*x|\d+(?:\.\d+)?(?:e[+-]?\d+)?)\b/i,o={pattern:RegExp(r+"[bx]"),alias:"number"},i={pattern:/&[a-z_]\w*/i},s={pattern:/((?:^|\s|=|\())%(?:ABORT|BY|CMS|COPY|DISPLAY|DO|ELSE|END|EVAL|GLOBAL|GO|GOTO|IF|INC|INCLUDE|INDEX|INPUT|KTRIM|LENGTH|LET|LIST|LOCAL|PUT|QKTRIM|QSCAN|QSUBSTR|QSYSFUNC|QUPCASE|RETURN|RUN|SCAN|SUBSTR|SUPERQ|SYMDEL|SYMEXIST|SYMGLOBL|SYMLOCAL|SYSCALL|SYSEVALF|SYSEXEC|SYSFUNC|SYSGET|SYSRPUT|THEN|TO|TSO|UNQUOTE|UNTIL|UPCASE|WHILE|WINDOW)\b/i,lookbehind:!0,alias:"keyword"},l={pattern:/(^|\s)(?:proc\s+\w+|data(?!=)|quit|run)\b/i,alias:"keyword",lookbehind:!0},c=[/\/\*[\s\S]*?\*\//,{pattern:/(^[ \t]*|;\s*)\*[^;]*;/m,lookbehind:!0}],u={pattern:RegExp(r),greedy:!0},d=/[$%@.(){}\[\];,\\]/,g={pattern:/%?\b\w+(?=\()/,alias:"keyword"},m={function:g,"arg-value":{pattern:/(=\s*)[A-Z\.]+/i,lookbehind:!0},operator:/=/,"macro-variable":i,arg:{pattern:/[A-Z]+/i,alias:"keyword"},number:a,"numeric-constant":o,punctuation:d,string:u},b={pattern:/\b(?:format|put)\b=?[\w'$.]+/i,inside:{keyword:/^(?:format|put)(?==)/i,equals:/=/,format:{pattern:/(?:\w|\$\d)+\.\d?/,alias:"number"}}},y={pattern:/\b(?:format|put)\s+[\w']+(?:\s+[$.\w]+)+(?=;)/i,inside:{keyword:/^(?:format|put)/i,format:{pattern:/[\w$]+\.\d?/,alias:"number"}}},w={pattern:/((?:^|\s)=?)(?:catname|checkpoint execute_always|dm|endsas|filename|footnote|%include|libname|%list|lock|missing|options|page|resetline|%run|sasfile|skip|sysecho|title\d?)\b/i,lookbehind:!0,alias:"keyword"},v={pattern:/(^|\s)(?:submit(?:\s+(?:load|norun|parseonly))?|endsubmit)\b/i,lookbehind:!0,alias:"keyword"},h=/aStore|accessControl|aggregation|audio|autotune|bayesianNetClassifier|bioMedImage|boolRule|builtins|cardinality|cdm|clustering|conditionalRandomFields|configuration|copula|countreg|dataDiscovery|dataPreprocess|dataSciencePilot|dataStep|decisionTree|deduplication|deepLearn|deepNeural|deepRnn|ds2|ecm|entityRes|espCluster|explainModel|factmac|fastKnn|fcmpact|fedSql|freqTab|gVarCluster|gam|gleam|graphSemiSupLearn|hiddenMarkovModel|hyperGroup|ica|image|iml|kernalPca|langModel|ldaTopic|loadStreams|mbc|mixed|mlTools|modelPublishing|network|neuralNet|nmf|nonParametricBayes|nonlinear|optNetwork|optimization|panel|pca|percentile|phreg|pls|qkb|qlim|quantreg|recommend|regression|reinforcementLearn|robustPca|ruleMining|sampling|sandwich|sccasl|search(?:Analytics)?|sentimentAnalysis|sequence|session(?:Prop)?|severity|simSystem|simple|smartData|sparkEmbeddedProcess|sparseML|spatialreg|spc|stabilityMonitoring|svDataDescription|svm|table|text(?:Filters|Frequency|Mining|Parse|Rule(?:Develop|Score)|Topic|Util)|timeData|transpose|tsInfo|tsReconcile|uniTimeSeries|varReduce/.source,S={pattern:RegExp(/(^|\s)(?:action\s+)?(?:)\.[a-z]+\b[^;]+/.source.replace(//g,function(){return h}),"i"),lookbehind:!0,inside:{keyword:RegExp(/(?:)\.[a-z]+\b/.source.replace(//g,function(){return h}),"i"),action:{pattern:/(?:action)/i,alias:"keyword"},comment:c,function:g,"arg-value":m["arg-value"],operator:m.operator,argument:m.arg,number:a,"numeric-constant":o,punctuation:d,string:u}},E={pattern:/((?:^|\s)=?)(?:after|analysis|and|array|barchart|barwidth|begingraph|by|call|cas|cbarline|cfill|class(?:lev)?|close|column|computed?|contains|continue|data(?==)|define|delete|describe|document|do\s+over|do|dol|drop|dul|else|end(?:comp|source)?|entryTitle|eval(?:uate)?|exec(?:ute)?|exit|file(?:name)?|fill(?:attrs)?|flist|fnc|function(?:list)?|global|goto|group(?:by)?|headline|headskip|histogram|if|infile|keep|keylabel|keyword|label|layout|leave|legendlabel|length|libname|loadactionset|merge|midpoints|_?null_|name|noobs|nowd|ods|options|or|otherwise|out(?:put)?|over(?:lay)?|plot|print|put|raise|ranexp|rannor|rbreak|retain|return|select|session|sessref|set|source|statgraph|sum|summarize|table|temp|terminate|then\s+do|then|title\d?|to|var|when|where|xaxisopts|y2axisopts|yaxisopts)\b/i,lookbehind:!0};n.languages.sas={datalines:{pattern:/^([ \t]*)(?:cards|(?:data)?lines);[\s\S]+?^[ \t]*;/im,lookbehind:!0,alias:"string",inside:{keyword:{pattern:/^(?:cards|(?:data)?lines)/i},punctuation:/;/}},"proc-sql":{pattern:/(^proc\s+(?:fed)?sql(?:\s+[\w|=]+)?;)[\s\S]+?(?=^(?:proc\s+\w+|data|quit|run);|(?![\s\S]))/im,lookbehind:!0,inside:{sql:{pattern:RegExp(/^[ \t]*(?:select|alter\s+table|(?:create|describe|drop)\s+(?:index|table(?:\s+constraints)?|view)|create\s+unique\s+index|insert\s+into|update)(?:|[^;"'])+;/.source.replace(//g,function(){return r}),"im"),alias:"language-sql",inside:n.languages.sql},"global-statements":w,"sql-statements":{pattern:/(^|\s)(?:disconnect\s+from|begin|commit|exec(?:ute)?|reset|rollback|validate)\b/i,lookbehind:!0,alias:"keyword"},number:a,"numeric-constant":o,punctuation:d,string:u}},"proc-groovy":{pattern:/(^proc\s+groovy(?:\s+[\w|=]+)?;)[\s\S]+?(?=^(?:proc\s+\w+|data|quit|run);|(?![\s\S]))/im,lookbehind:!0,inside:{comment:c,groovy:{pattern:RegExp(/(^[ \t]*submit(?:\s+(?:load|norun|parseonly))?)(?:|[^"'])+?(?=endsubmit;)/.source.replace(//g,function(){return r}),"im"),lookbehind:!0,alias:"language-groovy",inside:n.languages.groovy},keyword:E,"submit-statement":v,"global-statements":w,number:a,"numeric-constant":o,punctuation:d,string:u}},"proc-lua":{pattern:/(^proc\s+lua(?:\s+[\w|=]+)?;)[\s\S]+?(?=^(?:proc\s+\w+|data|quit|run);|(?![\s\S]))/im,lookbehind:!0,inside:{comment:c,lua:{pattern:RegExp(/(^[ \t]*submit(?:\s+(?:load|norun|parseonly))?)(?:|[^"'])+?(?=endsubmit;)/.source.replace(//g,function(){return r}),"im"),lookbehind:!0,alias:"language-lua",inside:n.languages.lua},keyword:E,"submit-statement":v,"global-statements":w,number:a,"numeric-constant":o,punctuation:d,string:u}},"proc-cas":{pattern:/(^proc\s+cas(?:\s+[\w|=]+)?;)[\s\S]+?(?=^(?:proc\s+\w+|quit|data);|(?![\s\S]))/im,lookbehind:!0,inside:{comment:c,"statement-var":{pattern:/((?:^|\s)=?)saveresult\s[^;]+/im,lookbehind:!0,inside:{statement:{pattern:/^saveresult\s+\S+/i,inside:{keyword:/^(?:saveresult)/i}},rest:m}},"cas-actions":S,statement:{pattern:/((?:^|\s)=?)(?:default|(?:un)?set|on|output|upload)[^;]+/im,lookbehind:!0,inside:m},step:l,keyword:E,function:g,format:b,altformat:y,"global-statements":w,number:a,"numeric-constant":o,punctuation:d,string:u}},"proc-args":{pattern:RegExp(/(^proc\s+\w+\s+)(?!\s)(?:[^;"']|)+;/.source.replace(//g,function(){return r}),"im"),lookbehind:!0,inside:m},"macro-keyword":s,"macro-variable":i,"macro-string-functions":{pattern:/((?:^|\s|=))%(?:BQUOTE|NRBQUOTE|NRQUOTE|NRSTR|QUOTE|STR)\(.*?(?:[^%]\))/i,lookbehind:!0,inside:{function:{pattern:/%(?:BQUOTE|NRBQUOTE|NRQUOTE|NRSTR|QUOTE|STR)/i,alias:"keyword"},"macro-keyword":s,"macro-variable":i,"escaped-char":{pattern:/%['"()<>=¬^~;,#]/},punctuation:d}},"macro-declaration":{pattern:/^%macro[^;]+(?=;)/im,inside:{keyword:/%macro/i}},"macro-end":{pattern:/^%mend[^;]+(?=;)/im,inside:{keyword:/%mend/i}},macro:{pattern:/%_\w+(?=\()/,alias:"keyword"},input:{pattern:/\binput\s[-\w\s/*.$&]+;/i,inside:{input:{alias:"keyword",pattern:/^input/i},comment:c,number:a,"numeric-constant":o}},"options-args":{pattern:/(^options)[-'"|/\\<>*+=:()\w\s]*(?=;)/im,lookbehind:!0,inside:m},"cas-actions":S,comment:c,function:g,format:b,altformat:y,"numeric-constant":o,datetime:{pattern:RegExp(r+"(?:dt?|t)"),alias:"number"},string:u,step:l,keyword:E,"operator-keyword":{pattern:/\b(?:eq|ge|gt|in|le|lt|ne|not)\b/i,alias:"operator"},number:a,operator:/\*\*?|\|\|?|!!?|¦¦?|<[>=]?|>[<=]?|[-+\/=&]|[~¬^]=?/,punctuation:d}})(t)}return E0}var x0,dM;function ISe(){if(dM)return x0;dM=1,x0=e,e.displayName="sass",e.aliases=[];function e(t){(function(n){n.languages.sass=n.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),n.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete n.languages.sass.atrule;var r=/\$[-\w]+|#\{\$[-\w]+\}/,a=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];n.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:r,operator:a}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:r,operator:a,important:n.languages.sass.important}}}),delete n.languages.sass.property,delete n.languages.sass.important,n.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})})(t)}return x0}var k0,fM;function OSe(){if(fM)return k0;fM=1;var e=IA();k0=t,t.displayName="scala",t.aliases=[];function t(n){n.register(e),n.languages.scala=n.languages.extend("java",{"triple-quoted-string":{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string"},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},keyword:/<-|=>|\b(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|null|object|override|package|private|protected|return|sealed|self|super|this|throw|trait|try|type|val|var|while|with|yield)\b/,number:/\b0x(?:[\da-f]*\.)?[\da-f]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e\d+)?[dfl]?/i,builtin:/\b(?:Any|AnyRef|AnyVal|Boolean|Byte|Char|Double|Float|Int|Long|Nothing|Short|String|Unit)\b/,symbol:/'[^\d\s\\]\w*/}),n.languages.insertBefore("scala","triple-quoted-string",{"string-interpolation":{pattern:/\b[a-z]\w*(?:"""(?:[^$]|\$(?:[^{]|\{(?:[^{}]|\{[^{}]*\})*\}))*?"""|"(?:[^$"\r\n]|\$(?:[^{]|\{(?:[^{}]|\{[^{}]*\})*\}))*")/i,greedy:!0,inside:{id:{pattern:/^\w+/,greedy:!0,alias:"function"},escape:{pattern:/\\\$"|\$[$"]/,greedy:!0,alias:"symbol"},interpolation:{pattern:/\$(?:\w+|\{(?:[^{}]|\{[^{}]*\})*\})/,greedy:!0,inside:{punctuation:/^\$\{?|\}$/,expression:{pattern:/[\s\S]+/,inside:n.languages.scala}}},string:/[\s\S]+/}}}),delete n.languages.scala["class-name"],delete n.languages.scala.function}return k0}var C0,pM;function DSe(){if(pM)return C0;pM=1,C0=e,e.displayName="scss",e.aliases=[];function e(t){t.languages.scss=t.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),t.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),t.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),t.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),t.languages.scss.atrule.inside.rest=t.languages.scss}return C0}var _0,gM;function LSe(){if(gM)return _0;gM=1;var e=az();_0=t,t.displayName="shellSession",t.aliases=[];function t(n){n.register(e),function(r){var a=[/"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/.source,/'[^']*'/.source,/\$'(?:[^'\\]|\\[\s\S])*'/.source,/<<-?\s*(["']?)(\w+)\1\s[\s\S]*?[\r\n]\2/.source].join("|");r.languages["shell-session"]={command:{pattern:RegExp(/^/.source+"(?:"+(/[^\s@:$#%*!/\\]+@[^\r\n@:$#%*!/\\]+(?::[^\0-\x1F$#%*?"<>:;|]+)?/.source+"|"+/[/~.][^\0-\x1F$#%*?"<>@:;|]*/.source)+")?"+/[$#%](?=\s)/.source+/(?:[^\\\r\n \t'"<$]|[ \t](?:(?!#)|#.*$)|\\(?:[^\r]|\r\n?)|\$(?!')|<(?!<)|<>)+/.source.replace(/<>/g,function(){return a}),"m"),greedy:!0,inside:{info:{pattern:/^[^#$%]+/,alias:"punctuation",inside:{user:/^[^\s@:$#%*!/\\]+@[^\r\n@:$#%*!/\\]+/,punctuation:/:/,path:/[\s\S]+/}},bash:{pattern:/(^[$#%]\s*)\S[\s\S]*/,lookbehind:!0,alias:"language-bash",inside:r.languages.bash},"shell-symbol":{pattern:/^[$#%]/,alias:"important"}}},output:/.(?:.*(?:[\r\n]|.$))*/},r.languages["sh-session"]=r.languages.shellsession=r.languages["shell-session"]}(n)}return _0}var A0,mM;function MSe(){if(mM)return A0;mM=1,A0=e,e.displayName="smali",e.aliases=[];function e(t){t.languages.smali={comment:/#.*/,string:{pattern:/"(?:[^\r\n\\"]|\\.)*"|'(?:[^\r\n\\']|\\(?:.|u[\da-fA-F]{4}))'/,greedy:!0},"class-name":{pattern:/(^|[^L])L(?:(?:\w+|`[^`\r\n]*`)\/)*(?:[\w$]+|`[^`\r\n]*`)(?=\s*;)/,lookbehind:!0,inside:{"class-name":{pattern:/(^L|\/)(?:[\w$]+|`[^`\r\n]*`)$/,lookbehind:!0},namespace:{pattern:/^(L)(?:(?:\w+|`[^`\r\n]*`)\/)+/,lookbehind:!0,inside:{punctuation:/\//}},builtin:/^L/}},builtin:[{pattern:/([();\[])[BCDFIJSVZ]+/,lookbehind:!0},{pattern:/([\w$>]:)[BCDFIJSVZ]/,lookbehind:!0}],keyword:[{pattern:/(\.end\s+)[\w-]+/,lookbehind:!0},{pattern:/(^|[^\w.-])\.(?!\d)[\w-]+/,lookbehind:!0},{pattern:/(^|[^\w.-])(?:abstract|annotation|bridge|constructor|enum|final|interface|private|protected|public|runtime|static|synthetic|system|transient)(?![\w.-])/,lookbehind:!0}],function:{pattern:/(^|[^\w.-])(?:\w+|<[\w$-]+>)(?=\()/,lookbehind:!0},field:{pattern:/[\w$]+(?=:)/,alias:"variable"},register:{pattern:/(^|[^\w.-])[vp]\d(?![\w.-])/,lookbehind:!0,alias:"variable"},boolean:{pattern:/(^|[^\w.-])(?:false|true)(?![\w.-])/,lookbehind:!0},number:{pattern:/(^|[^/\w.-])-?(?:NAN|INFINITY|0x(?:[\dA-F]+(?:\.[\dA-F]*)?|\.[\dA-F]+)(?:p[+-]?[\dA-F]+)?|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?)[dflst]?(?![\w.-])/i,lookbehind:!0},label:{pattern:/(:)\w+/,lookbehind:!0,alias:"property"},operator:/->|\.\.|[\[=]/,punctuation:/[{}(),;:]/}}return A0}var T0,hM;function PSe(){if(hM)return T0;hM=1,T0=e,e.displayName="smalltalk",e.aliases=[];function e(t){t.languages.smalltalk={comment:{pattern:/"(?:""|[^"])*"/,greedy:!0},char:{pattern:/\$./,greedy:!0},string:{pattern:/'(?:''|[^'])*'/,greedy:!0},symbol:/#[\da-z]+|#(?:-|([+\/\\*~<>=@%|&?!])\1?)|#(?=\()/i,"block-arguments":{pattern:/(\[\s*):[^\[|]*\|/,lookbehind:!0,inside:{variable:/:[\da-z]+/i,punctuation:/\|/}},"temporary-variables":{pattern:/\|[^|]+\|/,inside:{variable:/[\da-z]+/i,punctuation:/\|/}},keyword:/\b(?:new|nil|self|super)\b/,boolean:/\b(?:false|true)\b/,number:[/\d+r-?[\dA-Z]+(?:\.[\dA-Z]+)?(?:e-?\d+)?/,/\b\d+(?:\.\d+)?(?:e-?\d+)?/],operator:/[<=]=?|:=|~[~=]|\/\/?|\\\\|>[>=]?|[!^+\-*&|,@]/,punctuation:/[.;:?\[\](){}]/}}return T0}var R0,bM;function $Se(){if(bM)return R0;bM=1;var e=mr();R0=t,t.displayName="smarty",t.aliases=[];function t(n){n.register(e),function(r){r.languages.smarty={comment:{pattern:/^\{\*[\s\S]*?\*\}/,greedy:!0},"embedded-php":{pattern:/^\{php\}[\s\S]*?\{\/php\}/,greedy:!0,inside:{smarty:{pattern:/^\{php\}|\{\/php\}$/,inside:null},php:{pattern:/[\s\S]+/,alias:"language-php",inside:r.languages.php}}},string:[{pattern:/"(?:\\.|[^"\\\r\n])*"/,greedy:!0,inside:{interpolation:{pattern:/\{[^{}]*\}|`[^`]*`/,inside:{"interpolation-punctuation":{pattern:/^[{`]|[`}]$/,alias:"punctuation"},expression:{pattern:/[\s\S]+/,inside:null}}},variable:/\$\w+/}},{pattern:/'(?:\\.|[^'\\\r\n])*'/,greedy:!0}],keyword:{pattern:/(^\{\/?)[a-z_]\w*\b(?!\()/i,lookbehind:!0,greedy:!0},delimiter:{pattern:/^\{\/?|\}$/,greedy:!0,alias:"punctuation"},number:/\b0x[\dA-Fa-f]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][-+]?\d+)?/,variable:[/\$(?!\d)\w+/,/#(?!\d)\w+#/,{pattern:/(\.|->|\w\s*=)(?!\d)\w+\b(?!\()/,lookbehind:!0},{pattern:/(\[)(?!\d)\w+(?=\])/,lookbehind:!0}],function:{pattern:/(\|\s*)@?[a-z_]\w*|\b[a-z_]\w*(?=\()/i,lookbehind:!0},"attr-name":/\b[a-z_]\w*(?=\s*=)/i,boolean:/\b(?:false|no|off|on|true|yes)\b/,punctuation:/[\[\](){}.,:`]|->/,operator:[/[+\-*\/%]|==?=?|[!<>]=?|&&|\|\|?/,/\bis\s+(?:not\s+)?(?:div|even|odd)(?:\s+by)?\b/,/\b(?:and|eq|gt?e|gt|lt?e|lt|mod|neq?|not|or)\b/]},r.languages.smarty["embedded-php"].inside.smarty.inside=r.languages.smarty,r.languages.smarty.string[0].inside.interpolation.inside.expression.inside=r.languages.smarty;var a=/"(?:\\.|[^"\\\r\n])*"|'(?:\\.|[^'\\\r\n])*'/,o=RegExp(/\{\*[\s\S]*?\*\}/.source+"|"+/\{php\}[\s\S]*?\{\/php\}/.source+"|"+/\{(?:[^{}"']||\{(?:[^{}"']||\{(?:[^{}"']|)*\})*\})*\}/.source.replace(//g,function(){return a.source}),"g");r.hooks.add("before-tokenize",function(i){var s="{literal}",l="{/literal}",c=!1;r.languages["markup-templating"].buildPlaceholders(i,"smarty",o,function(u){return u===l&&(c=!1),c?!1:(u===s&&(c=!0),!0)})}),r.hooks.add("after-tokenize",function(i){r.languages["markup-templating"].tokenizePlaceholders(i,"smarty")})}(n)}return R0}var N0,yM;function FSe(){if(yM)return N0;yM=1,N0=e,e.displayName="sml",e.aliases=["smlnj"];function e(t){(function(n){var r=/\b(?:abstype|and|andalso|as|case|datatype|do|else|end|eqtype|exception|fn|fun|functor|handle|if|in|include|infix|infixr|let|local|nonfix|of|op|open|orelse|raise|rec|sharing|sig|signature|struct|structure|then|type|val|where|while|with|withtype)\b/i;n.languages.sml={comment:/\(\*(?:[^*(]|\*(?!\))|\((?!\*)|\(\*(?:[^*(]|\*(?!\))|\((?!\*))*\*\))*\*\)/,string:{pattern:/#?"(?:[^"\\]|\\.)*"/,greedy:!0},"class-name":[{pattern:RegExp(/((?:^|[^:]):\s*)(?:\s*(?:(?:\*|->)\s*|,\s*(?:(?=)|(?!)\s+)))*/.source.replace(//g,function(){return/\s*(?:[*,]|->)/.source}).replace(//g,function(){return/(?:'[\w']*||\((?:[^()]|\([^()]*\))*\)|\{(?:[^{}]|\{[^{}]*\})*\})(?:\s+)*/.source}).replace(//g,function(){return/(?!)[a-z\d_][\w'.]*/.source}).replace(//g,function(){return r.source}),"i"),lookbehind:!0,greedy:!0,inside:null},{pattern:/((?:^|[^\w'])(?:datatype|exception|functor|signature|structure|type)\s+)[a-z_][\w'.]*/i,lookbehind:!0}],function:{pattern:/((?:^|[^\w'])fun\s+)[a-z_][\w'.]*/i,lookbehind:!0},keyword:r,variable:{pattern:/(^|[^\w'])'[\w']*/,lookbehind:!0},number:/~?\b(?:\d+(?:\.\d+)?(?:e~?\d+)?|0x[\da-f]+)\b/i,word:{pattern:/\b0w(?:\d+|x[\da-f]+)\b/i,alias:"constant"},boolean:/\b(?:false|true)\b/i,operator:/\.\.\.|:[>=:]|=>?|->|[<>]=?|[!+\-*/^#|@~]/,punctuation:/[(){}\[\].:,;]/},n.languages.sml["class-name"][0].inside=n.languages.sml,n.languages.smlnj=n.languages.sml})(t)}return N0}var I0,vM;function jSe(){if(vM)return I0;vM=1,I0=e,e.displayName="solidity",e.aliases=["sol"];function e(t){t.languages.solidity=t.languages.extend("clike",{"class-name":{pattern:/(\b(?:contract|enum|interface|library|new|struct|using)\s+)(?!\d)[\w$]+/,lookbehind:!0},keyword:/\b(?:_|anonymous|as|assembly|assert|break|calldata|case|constant|constructor|continue|contract|default|delete|do|else|emit|enum|event|external|for|from|function|if|import|indexed|inherited|interface|internal|is|let|library|mapping|memory|modifier|new|payable|pragma|private|public|pure|require|returns?|revert|selfdestruct|solidity|storage|struct|suicide|switch|this|throw|using|var|view|while)\b/,operator:/=>|->|:=|=:|\*\*|\+\+|--|\|\||&&|<<=?|>>=?|[-+*/%^&|<>!=]=?|[~?]/}),t.languages.insertBefore("solidity","keyword",{builtin:/\b(?:address|bool|byte|u?int(?:8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?|string|bytes(?:[1-9]|[12]\d|3[0-2])?)\b/}),t.languages.insertBefore("solidity","number",{version:{pattern:/([<>]=?|\^)\d+\.\d+\.\d+\b/,lookbehind:!0,alias:"number"}}),t.languages.sol=t.languages.solidity}return I0}var O0,SM;function zSe(){if(SM)return O0;SM=1,O0=e,e.displayName="solutionFile",e.aliases=[];function e(t){(function(n){var r={pattern:/\{[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}\}/i,alias:"constant",inside:{punctuation:/[{}]/}};n.languages["solution-file"]={comment:{pattern:/#.*/,greedy:!0},string:{pattern:/"[^"\r\n]*"|'[^'\r\n]*'/,greedy:!0,inside:{guid:r}},object:{pattern:/^([ \t]*)(?:([A-Z]\w*)\b(?=.*(?:\r\n?|\n)(?:\1[ \t].*(?:\r\n?|\n))*\1End\2(?=[ \t]*$))|End[A-Z]\w*(?=[ \t]*$))/m,lookbehind:!0,greedy:!0,alias:"keyword"},property:{pattern:/^([ \t]*)(?!\s)[^\r\n"#=()]*[^\s"#=()](?=\s*=)/m,lookbehind:!0,inside:{guid:r}},guid:r,number:/\b\d+(?:\.\d+)*\b/,boolean:/\b(?:FALSE|TRUE)\b/,operator:/=/,punctuation:/[(),]/},n.languages.sln=n.languages["solution-file"]})(t)}return O0}var D0,wM;function USe(){if(wM)return D0;wM=1;var e=mr();D0=t,t.displayName="soy",t.aliases=[];function t(n){n.register(e),function(r){var a=/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,o=/\b\d+(?:\.\d+)?(?:[eE][+-]?\d+)?\b|\b0x[\dA-F]+\b/;r.languages.soy={comment:[/\/\*[\s\S]*?\*\//,{pattern:/(\s)\/\/.*/,lookbehind:!0,greedy:!0}],"command-arg":{pattern:/(\{+\/?\s*(?:alias|call|delcall|delpackage|deltemplate|namespace|template)\s+)\.?[\w.]+/,lookbehind:!0,alias:"string",inside:{punctuation:/\./}},parameter:{pattern:/(\{+\/?\s*@?param\??\s+)\.?[\w.]+/,lookbehind:!0,alias:"variable"},keyword:[{pattern:/(\{+\/?[^\S\r\n]*)(?:\\[nrt]|alias|call|case|css|default|delcall|delpackage|deltemplate|else(?:if)?|fallbackmsg|for(?:each)?|if(?:empty)?|lb|let|literal|msg|namespace|nil|@?param\??|rb|sp|switch|template|xid)/,lookbehind:!0},/\b(?:any|as|attributes|bool|css|float|html|in|int|js|list|map|null|number|string|uri)\b/],delimiter:{pattern:/^\{+\/?|\/?\}+$/,alias:"punctuation"},property:/\w+(?==)/,variable:{pattern:/\$[^\W\d]\w*(?:\??(?:\.\w+|\[[^\]]+\]))*/,inside:{string:{pattern:a,greedy:!0},number:o,punctuation:/[\[\].?]/}},string:{pattern:a,greedy:!0},function:[/\w+(?=\()/,{pattern:/(\|[^\S\r\n]*)\w+/,lookbehind:!0}],boolean:/\b(?:false|true)\b/,number:o,operator:/\?:?|<=?|>=?|==?|!=|[+*/%-]|\b(?:and|not|or)\b/,punctuation:/[{}()\[\]|.,:]/},r.hooks.add("before-tokenize",function(i){var s=/\{\{.+?\}\}|\{.+?\}|\s\/\/.*|\/\*[\s\S]*?\*\//g,l="{literal}",c="{/literal}",u=!1;r.languages["markup-templating"].buildPlaceholders(i,"soy",s,function(d){return d===c&&(u=!1),u?!1:(d===l&&(u=!0),!0)})}),r.hooks.add("after-tokenize",function(i){r.languages["markup-templating"].tokenizePlaceholders(i,"soy")})}(n)}return D0}var L0,EM;function lz(){if(EM)return L0;EM=1,L0=e,e.displayName="turtle",e.aliases=[];function e(t){t.languages.turtle={comment:{pattern:/#.*/,greedy:!0},"multiline-string":{pattern:/"""(?:(?:""?)?(?:[^"\\]|\\.))*"""|'''(?:(?:''?)?(?:[^'\\]|\\.))*'''/,greedy:!0,alias:"string",inside:{comment:/#.*/}},string:{pattern:/"(?:[^\\"\r\n]|\\.)*"|'(?:[^\\'\r\n]|\\.)*'/,greedy:!0},url:{pattern:/<(?:[^\x00-\x20<>"{}|^`\\]|\\(?:u[\da-fA-F]{4}|U[\da-fA-F]{8}))*>/,greedy:!0,inside:{punctuation:/[<>]/}},function:{pattern:/(?:(?![-.\d\xB7])[-.\w\xB7\xC0-\uFFFD]+)?:(?:(?![-.])(?:[-.:\w\xC0-\uFFFD]|%[\da-f]{2}|\\.)+)?/i,inside:{"local-name":{pattern:/([^:]*:)[\s\S]+/,lookbehind:!0},prefix:{pattern:/[\s\S]+/,inside:{punctuation:/:/}}}},number:/[+-]?\b\d+(?:\.\d*)?(?:e[+-]?\d+)?/i,punctuation:/[{}.,;()[\]]|\^\^/,boolean:/\b(?:false|true)\b/,keyword:[/(?:\ba|@prefix|@base)\b|=/,/\b(?:base|graph|prefix)\b/i],tag:{pattern:/@[a-z]+(?:-[a-z\d]+)*/i,inside:{punctuation:/@/}}},t.languages.trig=t.languages.turtle}return L0}var M0,xM;function BSe(){if(xM)return M0;xM=1;var e=lz();M0=t,t.displayName="sparql",t.aliases=["rq"];function t(n){n.register(e),n.languages.sparql=n.languages.extend("turtle",{boolean:/\b(?:false|true)\b/i,variable:{pattern:/[?$]\w+/,greedy:!0}}),n.languages.insertBefore("sparql","punctuation",{keyword:[/\b(?:A|ADD|ALL|AS|ASC|ASK|BNODE|BY|CLEAR|CONSTRUCT|COPY|CREATE|DATA|DEFAULT|DELETE|DESC|DESCRIBE|DISTINCT|DROP|EXISTS|FILTER|FROM|GROUP|HAVING|INSERT|INTO|LIMIT|LOAD|MINUS|MOVE|NAMED|NOT|NOW|OFFSET|OPTIONAL|ORDER|RAND|REDUCED|SELECT|SEPARATOR|SERVICE|SILENT|STRUUID|UNION|USING|UUID|VALUES|WHERE)\b/i,/\b(?:ABS|AVG|BIND|BOUND|CEIL|COALESCE|CONCAT|CONTAINS|COUNT|DATATYPE|DAY|ENCODE_FOR_URI|FLOOR|GROUP_CONCAT|HOURS|IF|IRI|isBLANK|isIRI|isLITERAL|isNUMERIC|isURI|LANG|LANGMATCHES|LCASE|MAX|MD5|MIN|MINUTES|MONTH|REGEX|REPLACE|ROUND|sameTerm|SAMPLE|SECONDS|SHA1|SHA256|SHA384|SHA512|STR|STRAFTER|STRBEFORE|STRDT|STRENDS|STRLANG|STRLEN|STRSTARTS|SUBSTR|SUM|TIMEZONE|TZ|UCASE|URI|YEAR)\b(?=\s*\()/i,/\b(?:BASE|GRAPH|PREFIX)\b/i]}),n.languages.rq=n.languages.sparql}return M0}var P0,kM;function HSe(){if(kM)return P0;kM=1,P0=e,e.displayName="splunkSpl",e.aliases=[];function e(t){t.languages["splunk-spl"]={comment:/`comment\("(?:\\.|[^\\"])*"\)`/,string:{pattern:/"(?:\\.|[^\\"])*"/,greedy:!0},keyword:/\b(?:abstract|accum|addcoltotals|addinfo|addtotals|analyzefields|anomalies|anomalousvalue|anomalydetection|append|appendcols|appendcsv|appendlookup|appendpipe|arules|associate|audit|autoregress|bin|bucket|bucketdir|chart|cluster|cofilter|collect|concurrency|contingency|convert|correlate|datamodel|dbinspect|dedup|delete|delta|diff|erex|eval|eventcount|eventstats|extract|fieldformat|fields|fieldsummary|filldown|fillnull|findtypes|folderize|foreach|format|from|gauge|gentimes|geom|geomfilter|geostats|head|highlight|history|iconify|input|inputcsv|inputlookup|iplocation|join|kmeans|kv|kvform|loadjob|localize|localop|lookup|makecontinuous|makemv|makeresults|map|mcollect|metadata|metasearch|meventcollect|mstats|multikv|multisearch|mvcombine|mvexpand|nomv|outlier|outputcsv|outputlookup|outputtext|overlap|pivot|predict|rangemap|rare|regex|relevancy|reltime|rename|replace|rest|return|reverse|rex|rtorder|run|savedsearch|script|scrub|search|searchtxn|selfjoin|sendemail|set|setfields|sichart|sirare|sistats|sitimechart|sitop|sort|spath|stats|strcat|streamstats|table|tags|tail|timechart|timewrap|top|transaction|transpose|trendline|tscollect|tstats|typeahead|typelearner|typer|union|uniq|untable|where|x11|xmlkv|xmlunescape|xpath|xyseries)\b/i,"operator-word":{pattern:/\b(?:and|as|by|not|or|xor)\b/i,alias:"operator"},function:/\b\w+(?=\s*\()/,property:/\b\w+(?=\s*=(?!=))/,date:{pattern:/\b\d{1,2}\/\d{1,2}\/\d{1,4}(?:(?::\d{1,2}){3})?\b/,alias:"number"},number:/\b\d+(?:\.\d+)?\b/,boolean:/\b(?:f|false|t|true)\b/i,operator:/[<>=]=?|[-+*/%|]/,punctuation:/[()[\],]/}}return P0}var $0,CM;function VSe(){if(CM)return $0;CM=1,$0=e,e.displayName="sqf",e.aliases=[];function e(t){t.languages.sqf=t.languages.extend("clike",{string:{pattern:/"(?:(?:"")?[^"])*"(?!")|'(?:[^'])*'/,greedy:!0},keyword:/\b(?:breakOut|breakTo|call|case|catch|default|do|echo|else|execFSM|execVM|exitWith|for|forEach|forEachMember|forEachMemberAgent|forEachMemberTeam|from|goto|if|nil|preprocessFile|preprocessFileLineNumbers|private|scopeName|spawn|step|switch|then|throw|to|try|while|with)\b/i,boolean:/\b(?:false|true)\b/i,function:/\b(?:abs|accTime|acos|action|actionIDs|actionKeys|actionKeysImages|actionKeysNames|actionKeysNamesArray|actionName|actionParams|activateAddons|activatedAddons|activateKey|add3DENConnection|add3DENEventHandler|add3DENLayer|addAction|addBackpack|addBackpackCargo|addBackpackCargoGlobal|addBackpackGlobal|addCamShake|addCuratorAddons|addCuratorCameraArea|addCuratorEditableObjects|addCuratorEditingArea|addCuratorPoints|addEditorObject|addEventHandler|addForce|addForceGeneratorRTD|addGoggles|addGroupIcon|addHandgunItem|addHeadgear|addItem|addItemCargo|addItemCargoGlobal|addItemPool|addItemToBackpack|addItemToUniform|addItemToVest|addLiveStats|addMagazine|addMagazineAmmoCargo|addMagazineCargo|addMagazineCargoGlobal|addMagazineGlobal|addMagazinePool|addMagazines|addMagazineTurret|addMenu|addMenuItem|addMissionEventHandler|addMPEventHandler|addMusicEventHandler|addOwnedMine|addPlayerScores|addPrimaryWeaponItem|addPublicVariableEventHandler|addRating|addResources|addScore|addScoreSide|addSecondaryWeaponItem|addSwitchableUnit|addTeamMember|addToRemainsCollector|addTorque|addUniform|addVehicle|addVest|addWaypoint|addWeapon|addWeaponCargo|addWeaponCargoGlobal|addWeaponGlobal|addWeaponItem|addWeaponPool|addWeaponTurret|admin|agent|agents|AGLToASL|aimedAtTarget|aimPos|airDensityCurveRTD|airDensityRTD|airplaneThrottle|airportSide|AISFinishHeal|alive|all3DENEntities|allAirports|allControls|allCurators|allCutLayers|allDead|allDeadMen|allDisplays|allGroups|allMapMarkers|allMines|allMissionObjects|allow3DMode|allowCrewInImmobile|allowCuratorLogicIgnoreAreas|allowDamage|allowDammage|allowFileOperations|allowFleeing|allowGetIn|allowSprint|allPlayers|allSimpleObjects|allSites|allTurrets|allUnits|allUnitsUAV|allVariables|ammo|ammoOnPylon|animate|animateBay|animateDoor|animatePylon|animateSource|animationNames|animationPhase|animationSourcePhase|animationState|append|apply|armoryPoints|arrayIntersect|asin|ASLToAGL|ASLToATL|assert|assignAsCargo|assignAsCargoIndex|assignAsCommander|assignAsDriver|assignAsGunner|assignAsTurret|assignCurator|assignedCargo|assignedCommander|assignedDriver|assignedGunner|assignedItems|assignedTarget|assignedTeam|assignedVehicle|assignedVehicleRole|assignItem|assignTeam|assignToAirport|atan|atan2|atg|ATLToASL|attachedObject|attachedObjects|attachedTo|attachObject|attachTo|attackEnabled|backpack|backpackCargo|backpackContainer|backpackItems|backpackMagazines|backpackSpaceFor|behaviour|benchmark|binocular|blufor|boundingBox|boundingBoxReal|boundingCenter|briefingName|buildingExit|buildingPos|buldozer_EnableRoadDiag|buldozer_IsEnabledRoadDiag|buldozer_LoadNewRoads|buldozer_reloadOperMap|buttonAction|buttonSetAction|cadetMode|callExtension|camCommand|camCommit|camCommitPrepared|camCommitted|camConstuctionSetParams|camCreate|camDestroy|cameraEffect|cameraEffectEnableHUD|cameraInterest|cameraOn|cameraView|campaignConfigFile|camPreload|camPreloaded|camPrepareBank|camPrepareDir|camPrepareDive|camPrepareFocus|camPrepareFov|camPrepareFovRange|camPreparePos|camPrepareRelPos|camPrepareTarget|camSetBank|camSetDir|camSetDive|camSetFocus|camSetFov|camSetFovRange|camSetPos|camSetRelPos|camSetTarget|camTarget|camUseNVG|canAdd|canAddItemToBackpack|canAddItemToUniform|canAddItemToVest|cancelSimpleTaskDestination|canFire|canMove|canSlingLoad|canStand|canSuspend|canTriggerDynamicSimulation|canUnloadInCombat|canVehicleCargo|captive|captiveNum|cbChecked|cbSetChecked|ceil|channelEnabled|cheatsEnabled|checkAIFeature|checkVisibility|civilian|className|clear3DENAttribute|clear3DENInventory|clearAllItemsFromBackpack|clearBackpackCargo|clearBackpackCargoGlobal|clearForcesRTD|clearGroupIcons|clearItemCargo|clearItemCargoGlobal|clearItemPool|clearMagazineCargo|clearMagazineCargoGlobal|clearMagazinePool|clearOverlay|clearRadio|clearVehicleInit|clearWeaponCargo|clearWeaponCargoGlobal|clearWeaponPool|clientOwner|closeDialog|closeDisplay|closeOverlay|collapseObjectTree|collect3DENHistory|collectiveRTD|combatMode|commandArtilleryFire|commandChat|commander|commandFire|commandFollow|commandFSM|commandGetOut|commandingMenu|commandMove|commandRadio|commandStop|commandSuppressiveFire|commandTarget|commandWatch|comment|commitOverlay|compile|compileFinal|completedFSM|composeText|configClasses|configFile|configHierarchy|configName|configNull|configProperties|configSourceAddonList|configSourceMod|configSourceModList|confirmSensorTarget|connectTerminalToUAV|controlNull|controlsGroupCtrl|copyFromClipboard|copyToClipboard|copyWaypoints|cos|count|countEnemy|countFriendly|countSide|countType|countUnknown|create3DENComposition|create3DENEntity|createAgent|createCenter|createDialog|createDiaryLink|createDiaryRecord|createDiarySubject|createDisplay|createGearDialog|createGroup|createGuardedPoint|createLocation|createMarker|createMarkerLocal|createMenu|createMine|createMissionDisplay|createMPCampaignDisplay|createSimpleObject|createSimpleTask|createSite|createSoundSource|createTask|createTeam|createTrigger|createUnit|createVehicle|createVehicleCrew|createVehicleLocal|crew|ctAddHeader|ctAddRow|ctClear|ctCurSel|ctData|ctFindHeaderRows|ctFindRowHeader|ctHeaderControls|ctHeaderCount|ctRemoveHeaders|ctRemoveRows|ctrlActivate|ctrlAddEventHandler|ctrlAngle|ctrlAutoScrollDelay|ctrlAutoScrollRewind|ctrlAutoScrollSpeed|ctrlChecked|ctrlClassName|ctrlCommit|ctrlCommitted|ctrlCreate|ctrlDelete|ctrlEnable|ctrlEnabled|ctrlFade|ctrlHTMLLoaded|ctrlIDC|ctrlIDD|ctrlMapAnimAdd|ctrlMapAnimClear|ctrlMapAnimCommit|ctrlMapAnimDone|ctrlMapCursor|ctrlMapMouseOver|ctrlMapScale|ctrlMapScreenToWorld|ctrlMapWorldToScreen|ctrlModel|ctrlModelDirAndUp|ctrlModelScale|ctrlParent|ctrlParentControlsGroup|ctrlPosition|ctrlRemoveAllEventHandlers|ctrlRemoveEventHandler|ctrlScale|ctrlSetActiveColor|ctrlSetAngle|ctrlSetAutoScrollDelay|ctrlSetAutoScrollRewind|ctrlSetAutoScrollSpeed|ctrlSetBackgroundColor|ctrlSetChecked|ctrlSetDisabledColor|ctrlSetEventHandler|ctrlSetFade|ctrlSetFocus|ctrlSetFont|ctrlSetFontH1|ctrlSetFontH1B|ctrlSetFontH2|ctrlSetFontH2B|ctrlSetFontH3|ctrlSetFontH3B|ctrlSetFontH4|ctrlSetFontH4B|ctrlSetFontH5|ctrlSetFontH5B|ctrlSetFontH6|ctrlSetFontH6B|ctrlSetFontHeight|ctrlSetFontHeightH1|ctrlSetFontHeightH2|ctrlSetFontHeightH3|ctrlSetFontHeightH4|ctrlSetFontHeightH5|ctrlSetFontHeightH6|ctrlSetFontHeightSecondary|ctrlSetFontP|ctrlSetFontPB|ctrlSetFontSecondary|ctrlSetForegroundColor|ctrlSetModel|ctrlSetModelDirAndUp|ctrlSetModelScale|ctrlSetPixelPrecision|ctrlSetPosition|ctrlSetScale|ctrlSetStructuredText|ctrlSetText|ctrlSetTextColor|ctrlSetTextColorSecondary|ctrlSetTextSecondary|ctrlSetTooltip|ctrlSetTooltipColorBox|ctrlSetTooltipColorShade|ctrlSetTooltipColorText|ctrlShow|ctrlShown|ctrlText|ctrlTextHeight|ctrlTextSecondary|ctrlTextWidth|ctrlType|ctrlVisible|ctRowControls|ctRowCount|ctSetCurSel|ctSetData|ctSetHeaderTemplate|ctSetRowTemplate|ctSetValue|ctValue|curatorAddons|curatorCamera|curatorCameraArea|curatorCameraAreaCeiling|curatorCoef|curatorEditableObjects|curatorEditingArea|curatorEditingAreaType|curatorMouseOver|curatorPoints|curatorRegisteredObjects|curatorSelected|curatorWaypointCost|current3DENOperation|currentChannel|currentCommand|currentMagazine|currentMagazineDetail|currentMagazineDetailTurret|currentMagazineTurret|currentMuzzle|currentNamespace|currentTask|currentTasks|currentThrowable|currentVisionMode|currentWaypoint|currentWeapon|currentWeaponMode|currentWeaponTurret|currentZeroing|cursorObject|cursorTarget|customChat|customRadio|cutFadeOut|cutObj|cutRsc|cutText|damage|date|dateToNumber|daytime|deActivateKey|debriefingText|debugFSM|debugLog|deg|delete3DENEntities|deleteAt|deleteCenter|deleteCollection|deleteEditorObject|deleteGroup|deleteGroupWhenEmpty|deleteIdentity|deleteLocation|deleteMarker|deleteMarkerLocal|deleteRange|deleteResources|deleteSite|deleteStatus|deleteTeam|deleteVehicle|deleteVehicleCrew|deleteWaypoint|detach|detectedMines|diag_activeMissionFSMs|diag_activeScripts|diag_activeSQFScripts|diag_activeSQSScripts|diag_captureFrame|diag_captureFrameToFile|diag_captureSlowFrame|diag_codePerformance|diag_drawMode|diag_dynamicSimulationEnd|diag_enable|diag_enabled|diag_fps|diag_fpsMin|diag_frameNo|diag_lightNewLoad|diag_list|diag_log|diag_logSlowFrame|diag_mergeConfigFile|diag_recordTurretLimits|diag_setLightNew|diag_tickTime|diag_toggle|dialog|diarySubjectExists|didJIP|didJIPOwner|difficulty|difficultyEnabled|difficultyEnabledRTD|difficultyOption|direction|directSay|disableAI|disableCollisionWith|disableConversation|disableDebriefingStats|disableMapIndicators|disableNVGEquipment|disableRemoteSensors|disableSerialization|disableTIEquipment|disableUAVConnectability|disableUserInput|displayAddEventHandler|displayCtrl|displayNull|displayParent|displayRemoveAllEventHandlers|displayRemoveEventHandler|displaySetEventHandler|dissolveTeam|distance|distance2D|distanceSqr|distributionRegion|do3DENAction|doArtilleryFire|doFire|doFollow|doFSM|doGetOut|doMove|doorPhase|doStop|doSuppressiveFire|doTarget|doWatch|drawArrow|drawEllipse|drawIcon|drawIcon3D|drawLine|drawLine3D|drawLink|drawLocation|drawPolygon|drawRectangle|drawTriangle|driver|drop|dynamicSimulationDistance|dynamicSimulationDistanceCoef|dynamicSimulationEnabled|dynamicSimulationSystemEnabled|east|edit3DENMissionAttributes|editObject|editorSetEventHandler|effectiveCommander|emptyPositions|enableAI|enableAIFeature|enableAimPrecision|enableAttack|enableAudioFeature|enableAutoStartUpRTD|enableAutoTrimRTD|enableCamShake|enableCaustics|enableChannel|enableCollisionWith|enableCopilot|enableDebriefingStats|enableDiagLegend|enableDynamicSimulation|enableDynamicSimulationSystem|enableEndDialog|enableEngineArtillery|enableEnvironment|enableFatigue|enableGunLights|enableInfoPanelComponent|enableIRLasers|enableMimics|enablePersonTurret|enableRadio|enableReload|enableRopeAttach|enableSatNormalOnDetail|enableSaving|enableSentences|enableSimulation|enableSimulationGlobal|enableStamina|enableStressDamage|enableTeamSwitch|enableTraffic|enableUAVConnectability|enableUAVWaypoints|enableVehicleCargo|enableVehicleSensor|enableWeaponDisassembly|endl|endLoadingScreen|endMission|engineOn|enginesIsOnRTD|enginesPowerRTD|enginesRpmRTD|enginesTorqueRTD|entities|environmentEnabled|estimatedEndServerTime|estimatedTimeLeft|evalObjectArgument|everyBackpack|everyContainer|exec|execEditorScript|exp|expectedDestination|exportJIPMessages|eyeDirection|eyePos|face|faction|fadeMusic|fadeRadio|fadeSound|fadeSpeech|failMission|fillWeaponsFromPool|find|findCover|findDisplay|findEditorObject|findEmptyPosition|findEmptyPositionReady|findIf|findNearestEnemy|finishMissionInit|finite|fire|fireAtTarget|firstBackpack|flag|flagAnimationPhase|flagOwner|flagSide|flagTexture|fleeing|floor|flyInHeight|flyInHeightASL|fog|fogForecast|fogParams|forceAddUniform|forceAtPositionRTD|forcedMap|forceEnd|forceFlagTexture|forceFollowRoad|forceGeneratorRTD|forceMap|forceRespawn|forceSpeed|forceWalk|forceWeaponFire|forceWeatherChange|forgetTarget|format|formation|formationDirection|formationLeader|formationMembers|formationPosition|formationTask|formatText|formLeader|freeLook|fromEditor|fuel|fullCrew|gearIDCAmmoCount|gearSlotAmmoCount|gearSlotData|get3DENActionState|get3DENAttribute|get3DENCamera|get3DENConnections|get3DENEntity|get3DENEntityID|get3DENGrid|get3DENIconsVisible|get3DENLayerEntities|get3DENLinesVisible|get3DENMissionAttribute|get3DENMouseOver|get3DENSelected|getAimingCoef|getAllEnvSoundControllers|getAllHitPointsDamage|getAllOwnedMines|getAllSoundControllers|getAmmoCargo|getAnimAimPrecision|getAnimSpeedCoef|getArray|getArtilleryAmmo|getArtilleryComputerSettings|getArtilleryETA|getAssignedCuratorLogic|getAssignedCuratorUnit|getBackpackCargo|getBleedingRemaining|getBurningValue|getCameraViewDirection|getCargoIndex|getCenterOfMass|getClientState|getClientStateNumber|getCompatiblePylonMagazines|getConnectedUAV|getContainerMaxLoad|getCursorObjectParams|getCustomAimCoef|getDammage|getDescription|getDir|getDirVisual|getDLCAssetsUsage|getDLCAssetsUsageByName|getDLCs|getDLCUsageTime|getEditorCamera|getEditorMode|getEditorObjectScope|getElevationOffset|getEngineTargetRpmRTD|getEnvSoundController|getFatigue|getFieldManualStartPage|getForcedFlagTexture|getFriend|getFSMVariable|getFuelCargo|getGroupIcon|getGroupIconParams|getGroupIcons|getHideFrom|getHit|getHitIndex|getHitPointDamage|getItemCargo|getMagazineCargo|getMarkerColor|getMarkerPos|getMarkerSize|getMarkerType|getMass|getMissionConfig|getMissionConfigValue|getMissionDLCs|getMissionLayerEntities|getMissionLayers|getModelInfo|getMousePosition|getMusicPlayedTime|getNumber|getObjectArgument|getObjectChildren|getObjectDLC|getObjectMaterials|getObjectProxy|getObjectTextures|getObjectType|getObjectViewDistance|getOxygenRemaining|getPersonUsedDLCs|getPilotCameraDirection|getPilotCameraPosition|getPilotCameraRotation|getPilotCameraTarget|getPlateNumber|getPlayerChannel|getPlayerScores|getPlayerUID|getPlayerUIDOld|getPos|getPosASL|getPosASLVisual|getPosASLW|getPosATL|getPosATLVisual|getPosVisual|getPosWorld|getPylonMagazines|getRelDir|getRelPos|getRemoteSensorsDisabled|getRepairCargo|getResolution|getRotorBrakeRTD|getShadowDistance|getShotParents|getSlingLoad|getSoundController|getSoundControllerResult|getSpeed|getStamina|getStatValue|getSuppression|getTerrainGrid|getTerrainHeightASL|getText|getTotalDLCUsageTime|getTrimOffsetRTD|getUnitLoadout|getUnitTrait|getUserMFDText|getUserMFDValue|getVariable|getVehicleCargo|getWeaponCargo|getWeaponSway|getWingsOrientationRTD|getWingsPositionRTD|getWPPos|glanceAt|globalChat|globalRadio|goggles|group|groupChat|groupFromNetId|groupIconSelectable|groupIconsVisible|groupId|groupOwner|groupRadio|groupSelectedUnits|groupSelectUnit|grpNull|gunner|gusts|halt|handgunItems|handgunMagazine|handgunWeapon|handsHit|hasInterface|hasPilotCamera|hasWeapon|hcAllGroups|hcGroupParams|hcLeader|hcRemoveAllGroups|hcRemoveGroup|hcSelected|hcSelectGroup|hcSetGroup|hcShowBar|hcShownBar|headgear|hideBody|hideObject|hideObjectGlobal|hideSelection|hint|hintC|hintCadet|hintSilent|hmd|hostMission|htmlLoad|HUDMovementLevels|humidity|image|importAllGroups|importance|in|inArea|inAreaArray|incapacitatedState|independent|inflame|inflamed|infoPanel|infoPanelComponentEnabled|infoPanelComponents|infoPanels|inGameUISetEventHandler|inheritsFrom|initAmbientLife|inPolygon|inputAction|inRangeOfArtillery|insertEditorObject|intersect|is3DEN|is3DENMultiplayer|isAbleToBreathe|isAgent|isAimPrecisionEnabled|isArray|isAutoHoverOn|isAutonomous|isAutoStartUpEnabledRTD|isAutotest|isAutoTrimOnRTD|isBleeding|isBurning|isClass|isCollisionLightOn|isCopilotEnabled|isDamageAllowed|isDedicated|isDLCAvailable|isEngineOn|isEqualTo|isEqualType|isEqualTypeAll|isEqualTypeAny|isEqualTypeArray|isEqualTypeParams|isFilePatchingEnabled|isFlashlightOn|isFlatEmpty|isForcedWalk|isFormationLeader|isGroupDeletedWhenEmpty|isHidden|isInRemainsCollector|isInstructorFigureEnabled|isIRLaserOn|isKeyActive|isKindOf|isLaserOn|isLightOn|isLocalized|isManualFire|isMarkedForCollection|isMultiplayer|isMultiplayerSolo|isNil|isNull|isNumber|isObjectHidden|isObjectRTD|isOnRoad|isPipEnabled|isPlayer|isRealTime|isRemoteExecuted|isRemoteExecutedJIP|isServer|isShowing3DIcons|isSimpleObject|isSprintAllowed|isStaminaEnabled|isSteamMission|isStreamFriendlyUIEnabled|isStressDamageEnabled|isText|isTouchingGround|isTurnedOut|isTutHintsEnabled|isUAVConnectable|isUAVConnected|isUIContext|isUniformAllowed|isVehicleCargo|isVehicleRadarOn|isVehicleSensorEnabled|isWalking|isWeaponDeployed|isWeaponRested|itemCargo|items|itemsWithMagazines|join|joinAs|joinAsSilent|joinSilent|joinString|kbAddDatabase|kbAddDatabaseTargets|kbAddTopic|kbHasTopic|kbReact|kbRemoveTopic|kbTell|kbWasSaid|keyImage|keyName|knowsAbout|land|landAt|landResult|language|laserTarget|lbAdd|lbClear|lbColor|lbColorRight|lbCurSel|lbData|lbDelete|lbIsSelected|lbPicture|lbPictureRight|lbSelection|lbSetColor|lbSetColorRight|lbSetCurSel|lbSetData|lbSetPicture|lbSetPictureColor|lbSetPictureColorDisabled|lbSetPictureColorSelected|lbSetPictureRight|lbSetPictureRightColor|lbSetPictureRightColorDisabled|lbSetPictureRightColorSelected|lbSetSelectColor|lbSetSelectColorRight|lbSetSelected|lbSetText|lbSetTextRight|lbSetTooltip|lbSetValue|lbSize|lbSort|lbSortByValue|lbText|lbTextRight|lbValue|leader|leaderboardDeInit|leaderboardGetRows|leaderboardInit|leaderboardRequestRowsFriends|leaderboardRequestRowsGlobal|leaderboardRequestRowsGlobalAroundUser|leaderboardsRequestUploadScore|leaderboardsRequestUploadScoreKeepBest|leaderboardState|leaveVehicle|libraryCredits|libraryDisclaimers|lifeState|lightAttachObject|lightDetachObject|lightIsOn|lightnings|limitSpeed|linearConversion|lineBreak|lineIntersects|lineIntersectsObjs|lineIntersectsSurfaces|lineIntersectsWith|linkItem|list|listObjects|listRemoteTargets|listVehicleSensors|ln|lnbAddArray|lnbAddColumn|lnbAddRow|lnbClear|lnbColor|lnbColorRight|lnbCurSelRow|lnbData|lnbDeleteColumn|lnbDeleteRow|lnbGetColumnsPosition|lnbPicture|lnbPictureRight|lnbSetColor|lnbSetColorRight|lnbSetColumnsPos|lnbSetCurSelRow|lnbSetData|lnbSetPicture|lnbSetPictureColor|lnbSetPictureColorRight|lnbSetPictureColorSelected|lnbSetPictureColorSelectedRight|lnbSetPictureRight|lnbSetText|lnbSetTextRight|lnbSetValue|lnbSize|lnbSort|lnbSortByValue|lnbText|lnbTextRight|lnbValue|load|loadAbs|loadBackpack|loadFile|loadGame|loadIdentity|loadMagazine|loadOverlay|loadStatus|loadUniform|loadVest|local|localize|locationNull|locationPosition|lock|lockCameraTo|lockCargo|lockDriver|locked|lockedCargo|lockedDriver|lockedTurret|lockIdentity|lockTurret|lockWP|log|logEntities|logNetwork|logNetworkTerminate|lookAt|lookAtPos|magazineCargo|magazines|magazinesAllTurrets|magazinesAmmo|magazinesAmmoCargo|magazinesAmmoFull|magazinesDetail|magazinesDetailBackpack|magazinesDetailUniform|magazinesDetailVest|magazinesTurret|magazineTurretAmmo|mapAnimAdd|mapAnimClear|mapAnimCommit|mapAnimDone|mapCenterOnCamera|mapGridPosition|markAsFinishedOnSteam|markerAlpha|markerBrush|markerColor|markerDir|markerPos|markerShape|markerSize|markerText|markerType|max|members|menuAction|menuAdd|menuChecked|menuClear|menuCollapse|menuData|menuDelete|menuEnable|menuEnabled|menuExpand|menuHover|menuPicture|menuSetAction|menuSetCheck|menuSetData|menuSetPicture|menuSetValue|menuShortcut|menuShortcutText|menuSize|menuSort|menuText|menuURL|menuValue|min|mineActive|mineDetectedBy|missionConfigFile|missionDifficulty|missionName|missionNamespace|missionStart|missionVersion|modelToWorld|modelToWorldVisual|modelToWorldVisualWorld|modelToWorldWorld|modParams|moonIntensity|moonPhase|morale|move|move3DENCamera|moveInAny|moveInCargo|moveInCommander|moveInDriver|moveInGunner|moveInTurret|moveObjectToEnd|moveOut|moveTime|moveTo|moveToCompleted|moveToFailed|musicVolume|name|nameSound|nearEntities|nearestBuilding|nearestLocation|nearestLocations|nearestLocationWithDubbing|nearestObject|nearestObjects|nearestTerrainObjects|nearObjects|nearObjectsReady|nearRoads|nearSupplies|nearTargets|needReload|netId|netObjNull|newOverlay|nextMenuItemIndex|nextWeatherChange|nMenuItems|numberOfEnginesRTD|numberToDate|objectCurators|objectFromNetId|objectParent|objNull|objStatus|onBriefingGear|onBriefingGroup|onBriefingNotes|onBriefingPlan|onBriefingTeamSwitch|onCommandModeChanged|onDoubleClick|onEachFrame|onGroupIconClick|onGroupIconOverEnter|onGroupIconOverLeave|onHCGroupSelectionChanged|onMapSingleClick|onPlayerConnected|onPlayerDisconnected|onPreloadFinished|onPreloadStarted|onShowNewObject|onTeamSwitch|openCuratorInterface|openDLCPage|openDSInterface|openMap|openSteamApp|openYoutubeVideo|opfor|orderGetIn|overcast|overcastForecast|owner|param|params|parseNumber|parseSimpleArray|parseText|parsingNamespace|particlesQuality|pi|pickWeaponPool|pitch|pixelGrid|pixelGridBase|pixelGridNoUIScale|pixelH|pixelW|playableSlotsNumber|playableUnits|playAction|playActionNow|player|playerRespawnTime|playerSide|playersNumber|playGesture|playMission|playMove|playMoveNow|playMusic|playScriptedMission|playSound|playSound3D|position|positionCameraToWorld|posScreenToWorld|posWorldToScreen|ppEffectAdjust|ppEffectCommit|ppEffectCommitted|ppEffectCreate|ppEffectDestroy|ppEffectEnable|ppEffectEnabled|ppEffectForceInNVG|precision|preloadCamera|preloadObject|preloadSound|preloadTitleObj|preloadTitleRsc|primaryWeapon|primaryWeaponItems|primaryWeaponMagazine|priority|processDiaryLink|processInitCommands|productVersion|profileName|profileNamespace|profileNameSteam|progressLoadingScreen|progressPosition|progressSetPosition|publicVariable|publicVariableClient|publicVariableServer|pushBack|pushBackUnique|putWeaponPool|queryItemsPool|queryMagazinePool|queryWeaponPool|rad|radioChannelAdd|radioChannelCreate|radioChannelRemove|radioChannelSetCallSign|radioChannelSetLabel|radioVolume|rain|rainbow|random|rank|rankId|rating|rectangular|registeredTasks|registerTask|reload|reloadEnabled|remoteControl|remoteExec|remoteExecCall|remoteExecutedOwner|remove3DENConnection|remove3DENEventHandler|remove3DENLayer|removeAction|removeAll3DENEventHandlers|removeAllActions|removeAllAssignedItems|removeAllContainers|removeAllCuratorAddons|removeAllCuratorCameraAreas|removeAllCuratorEditingAreas|removeAllEventHandlers|removeAllHandgunItems|removeAllItems|removeAllItemsWithMagazines|removeAllMissionEventHandlers|removeAllMPEventHandlers|removeAllMusicEventHandlers|removeAllOwnedMines|removeAllPrimaryWeaponItems|removeAllWeapons|removeBackpack|removeBackpackGlobal|removeCuratorAddons|removeCuratorCameraArea|removeCuratorEditableObjects|removeCuratorEditingArea|removeDrawIcon|removeDrawLinks|removeEventHandler|removeFromRemainsCollector|removeGoggles|removeGroupIcon|removeHandgunItem|removeHeadgear|removeItem|removeItemFromBackpack|removeItemFromUniform|removeItemFromVest|removeItems|removeMagazine|removeMagazineGlobal|removeMagazines|removeMagazinesTurret|removeMagazineTurret|removeMenuItem|removeMissionEventHandler|removeMPEventHandler|removeMusicEventHandler|removeOwnedMine|removePrimaryWeaponItem|removeSecondaryWeaponItem|removeSimpleTask|removeSwitchableUnit|removeTeamMember|removeUniform|removeVest|removeWeapon|removeWeaponAttachmentCargo|removeWeaponCargo|removeWeaponGlobal|removeWeaponTurret|reportRemoteTarget|requiredVersion|resetCamShake|resetSubgroupDirection|resistance|resize|resources|respawnVehicle|restartEditorCamera|reveal|revealMine|reverse|reversedMouseY|roadAt|roadsConnectedTo|roleDescription|ropeAttachedObjects|ropeAttachedTo|ropeAttachEnabled|ropeAttachTo|ropeCreate|ropeCut|ropeDestroy|ropeDetach|ropeEndPosition|ropeLength|ropes|ropeUnwind|ropeUnwound|rotorsForcesRTD|rotorsRpmRTD|round|runInitScript|safeZoneH|safeZoneW|safeZoneWAbs|safeZoneX|safeZoneXAbs|safeZoneY|save3DENInventory|saveGame|saveIdentity|saveJoysticks|saveOverlay|saveProfileNamespace|saveStatus|saveVar|savingEnabled|say|say2D|say3D|score|scoreSide|screenshot|screenToWorld|scriptDone|scriptName|scriptNull|scudState|secondaryWeapon|secondaryWeaponItems|secondaryWeaponMagazine|select|selectBestPlaces|selectDiarySubject|selectedEditorObjects|selectEditorObject|selectionNames|selectionPosition|selectLeader|selectMax|selectMin|selectNoPlayer|selectPlayer|selectRandom|selectRandomWeighted|selectWeapon|selectWeaponTurret|sendAUMessage|sendSimpleCommand|sendTask|sendTaskResult|sendUDPMessage|serverCommand|serverCommandAvailable|serverCommandExecutable|serverName|serverTime|set|set3DENAttribute|set3DENAttributes|set3DENGrid|set3DENIconsVisible|set3DENLayer|set3DENLinesVisible|set3DENLogicType|set3DENMissionAttribute|set3DENMissionAttributes|set3DENModelsVisible|set3DENObjectType|set3DENSelected|setAccTime|setActualCollectiveRTD|setAirplaneThrottle|setAirportSide|setAmmo|setAmmoCargo|setAmmoOnPylon|setAnimSpeedCoef|setAperture|setApertureNew|setArmoryPoints|setAttributes|setAutonomous|setBehaviour|setBleedingRemaining|setBrakesRTD|setCameraInterest|setCamShakeDefParams|setCamShakeParams|setCamUseTI|setCaptive|setCenterOfMass|setCollisionLight|setCombatMode|setCompassOscillation|setConvoySeparation|setCuratorCameraAreaCeiling|setCuratorCoef|setCuratorEditingAreaType|setCuratorWaypointCost|setCurrentChannel|setCurrentTask|setCurrentWaypoint|setCustomAimCoef|setCustomWeightRTD|setDamage|setDammage|setDate|setDebriefingText|setDefaultCamera|setDestination|setDetailMapBlendPars|setDir|setDirection|setDrawIcon|setDriveOnPath|setDropInterval|setDynamicSimulationDistance|setDynamicSimulationDistanceCoef|setEditorMode|setEditorObjectScope|setEffectCondition|setEngineRpmRTD|setFace|setFaceAnimation|setFatigue|setFeatureType|setFlagAnimationPhase|setFlagOwner|setFlagSide|setFlagTexture|setFog|setForceGeneratorRTD|setFormation|setFormationTask|setFormDir|setFriend|setFromEditor|setFSMVariable|setFuel|setFuelCargo|setGroupIcon|setGroupIconParams|setGroupIconsSelectable|setGroupIconsVisible|setGroupId|setGroupIdGlobal|setGroupOwner|setGusts|setHideBehind|setHit|setHitIndex|setHitPointDamage|setHorizonParallaxCoef|setHUDMovementLevels|setIdentity|setImportance|setInfoPanel|setLeader|setLightAmbient|setLightAttenuation|setLightBrightness|setLightColor|setLightDayLight|setLightFlareMaxDistance|setLightFlareSize|setLightIntensity|setLightnings|setLightUseFlare|setLocalWindParams|setMagazineTurretAmmo|setMarkerAlpha|setMarkerAlphaLocal|setMarkerBrush|setMarkerBrushLocal|setMarkerColor|setMarkerColorLocal|setMarkerDir|setMarkerDirLocal|setMarkerPos|setMarkerPosLocal|setMarkerShape|setMarkerShapeLocal|setMarkerSize|setMarkerSizeLocal|setMarkerText|setMarkerTextLocal|setMarkerType|setMarkerTypeLocal|setMass|setMimic|setMousePosition|setMusicEffect|setMusicEventHandler|setName|setNameSound|setObjectArguments|setObjectMaterial|setObjectMaterialGlobal|setObjectProxy|setObjectTexture|setObjectTextureGlobal|setObjectViewDistance|setOvercast|setOwner|setOxygenRemaining|setParticleCircle|setParticleClass|setParticleFire|setParticleParams|setParticleRandom|setPilotCameraDirection|setPilotCameraRotation|setPilotCameraTarget|setPilotLight|setPiPEffect|setPitch|setPlateNumber|setPlayable|setPlayerRespawnTime|setPos|setPosASL|setPosASL2|setPosASLW|setPosATL|setPosition|setPosWorld|setPylonLoadOut|setPylonsPriority|setRadioMsg|setRain|setRainbow|setRandomLip|setRank|setRectangular|setRepairCargo|setRotorBrakeRTD|setShadowDistance|setShotParents|setSide|setSimpleTaskAlwaysVisible|setSimpleTaskCustomData|setSimpleTaskDescription|setSimpleTaskDestination|setSimpleTaskTarget|setSimpleTaskType|setSimulWeatherLayers|setSize|setSkill|setSlingLoad|setSoundEffect|setSpeaker|setSpeech|setSpeedMode|setStamina|setStaminaScheme|setStatValue|setSuppression|setSystemOfUnits|setTargetAge|setTaskMarkerOffset|setTaskResult|setTaskState|setTerrainGrid|setText|setTimeMultiplier|setTitleEffect|setToneMapping|setToneMappingParams|setTrafficDensity|setTrafficDistance|setTrafficGap|setTrafficSpeed|setTriggerActivation|setTriggerArea|setTriggerStatements|setTriggerText|setTriggerTimeout|setTriggerType|setType|setUnconscious|setUnitAbility|setUnitLoadout|setUnitPos|setUnitPosWeak|setUnitRank|setUnitRecoilCoefficient|setUnitTrait|setUnloadInCombat|setUserActionText|setUserMFDText|setUserMFDValue|setVariable|setVectorDir|setVectorDirAndUp|setVectorUp|setVehicleAmmo|setVehicleAmmoDef|setVehicleArmor|setVehicleCargo|setVehicleId|setVehicleInit|setVehicleLock|setVehiclePosition|setVehicleRadar|setVehicleReceiveRemoteTargets|setVehicleReportOwnPosition|setVehicleReportRemoteTargets|setVehicleTIPars|setVehicleVarName|setVelocity|setVelocityModelSpace|setVelocityTransformation|setViewDistance|setVisibleIfTreeCollapsed|setWantedRpmRTD|setWaves|setWaypointBehaviour|setWaypointCombatMode|setWaypointCompletionRadius|setWaypointDescription|setWaypointForceBehaviour|setWaypointFormation|setWaypointHousePosition|setWaypointLoiterRadius|setWaypointLoiterType|setWaypointName|setWaypointPosition|setWaypointScript|setWaypointSpeed|setWaypointStatements|setWaypointTimeout|setWaypointType|setWaypointVisible|setWeaponReloadingTime|setWind|setWindDir|setWindForce|setWindStr|setWingForceScaleRTD|setWPPos|show3DIcons|showChat|showCinemaBorder|showCommandingMenu|showCompass|showCuratorCompass|showGPS|showHUD|showLegend|showMap|shownArtilleryComputer|shownChat|shownCompass|shownCuratorCompass|showNewEditorObject|shownGPS|shownHUD|shownMap|shownPad|shownRadio|shownScoretable|shownUAVFeed|shownWarrant|shownWatch|showPad|showRadio|showScoretable|showSubtitles|showUAVFeed|showWarrant|showWatch|showWaypoint|showWaypoints|side|sideAmbientLife|sideChat|sideEmpty|sideEnemy|sideFriendly|sideLogic|sideRadio|sideUnknown|simpleTasks|simulationEnabled|simulCloudDensity|simulCloudOcclusion|simulInClouds|simulWeatherSync|sin|size|sizeOf|skill|skillFinal|skipTime|sleep|sliderPosition|sliderRange|sliderSetPosition|sliderSetRange|sliderSetSpeed|sliderSpeed|slingLoadAssistantShown|soldierMagazines|someAmmo|sort|soundVolume|speaker|speed|speedMode|splitString|sqrt|squadParams|stance|startLoadingScreen|stop|stopEngineRTD|stopped|str|sunOrMoon|supportInfo|suppressFor|surfaceIsWater|surfaceNormal|surfaceType|swimInDepth|switchableUnits|switchAction|switchCamera|switchGesture|switchLight|switchMove|synchronizedObjects|synchronizedTriggers|synchronizedWaypoints|synchronizeObjectsAdd|synchronizeObjectsRemove|synchronizeTrigger|synchronizeWaypoint|systemChat|systemOfUnits|tan|targetKnowledge|targets|targetsAggregate|targetsQuery|taskAlwaysVisible|taskChildren|taskCompleted|taskCustomData|taskDescription|taskDestination|taskHint|taskMarkerOffset|taskNull|taskParent|taskResult|taskState|taskType|teamMember|teamMemberNull|teamName|teams|teamSwitch|teamSwitchEnabled|teamType|terminate|terrainIntersect|terrainIntersectASL|terrainIntersectAtASL|text|textLog|textLogFormat|tg|time|timeMultiplier|titleCut|titleFadeOut|titleObj|titleRsc|titleText|toArray|toFixed|toLower|toString|toUpper|triggerActivated|triggerActivation|triggerArea|triggerAttachedVehicle|triggerAttachObject|triggerAttachVehicle|triggerDynamicSimulation|triggerStatements|triggerText|triggerTimeout|triggerTimeoutCurrent|triggerType|turretLocal|turretOwner|turretUnit|tvAdd|tvClear|tvCollapse|tvCollapseAll|tvCount|tvCurSel|tvData|tvDelete|tvExpand|tvExpandAll|tvPicture|tvPictureRight|tvSetColor|tvSetCurSel|tvSetData|tvSetPicture|tvSetPictureColor|tvSetPictureColorDisabled|tvSetPictureColorSelected|tvSetPictureRight|tvSetPictureRightColor|tvSetPictureRightColorDisabled|tvSetPictureRightColorSelected|tvSetSelectColor|tvSetText|tvSetTooltip|tvSetValue|tvSort|tvSortByValue|tvText|tvTooltip|tvValue|type|typeName|typeOf|UAVControl|uiNamespace|uiSleep|unassignCurator|unassignItem|unassignTeam|unassignVehicle|underwater|uniform|uniformContainer|uniformItems|uniformMagazines|unitAddons|unitAimPosition|unitAimPositionVisual|unitBackpack|unitIsUAV|unitPos|unitReady|unitRecoilCoefficient|units|unitsBelowHeight|unlinkItem|unlockAchievement|unregisterTask|updateDrawIcon|updateMenuItem|updateObjectTree|useAIOperMapObstructionTest|useAISteeringComponent|useAudioTimeForMoves|userInputDisabled|vectorAdd|vectorCos|vectorCrossProduct|vectorDiff|vectorDir|vectorDirVisual|vectorDistance|vectorDistanceSqr|vectorDotProduct|vectorFromTo|vectorMagnitude|vectorMagnitudeSqr|vectorModelToWorld|vectorModelToWorldVisual|vectorMultiply|vectorNormalized|vectorUp|vectorUpVisual|vectorWorldToModel|vectorWorldToModelVisual|vehicle|vehicleCargoEnabled|vehicleChat|vehicleRadio|vehicleReceiveRemoteTargets|vehicleReportOwnPosition|vehicleReportRemoteTargets|vehicles|vehicleVarName|velocity|velocityModelSpace|verifySignature|vest|vestContainer|vestItems|vestMagazines|viewDistance|visibleCompass|visibleGPS|visibleMap|visiblePosition|visiblePositionASL|visibleScoretable|visibleWatch|waitUntil|waves|waypointAttachedObject|waypointAttachedVehicle|waypointAttachObject|waypointAttachVehicle|waypointBehaviour|waypointCombatMode|waypointCompletionRadius|waypointDescription|waypointForceBehaviour|waypointFormation|waypointHousePosition|waypointLoiterRadius|waypointLoiterType|waypointName|waypointPosition|waypoints|waypointScript|waypointsEnabledUAV|waypointShow|waypointSpeed|waypointStatements|waypointTimeout|waypointTimeoutCurrent|waypointType|waypointVisible|weaponAccessories|weaponAccessoriesCargo|weaponCargo|weaponDirection|weaponInertia|weaponLowered|weapons|weaponsItems|weaponsItemsCargo|weaponState|weaponsTurret|weightRTD|west|WFSideText|wind|windDir|windRTD|windStr|wingsForcesRTD|worldName|worldSize|worldToModel|worldToModelVisual|worldToScreen)\b/i,number:/(?:\$|\b0x)[\da-f]+\b|(?:\B\.\d+|\b\d+(?:\.\d+)?)(?:e[+-]?\d+)?\b/i,operator:/##|>>|&&|\|\||[!=<>]=?|[-+*/%#^]|\b(?:and|mod|not|or)\b/i,"magic-variable":{pattern:/\b(?:this|thisList|thisTrigger|_exception|_fnc_scriptName|_fnc_scriptNameParent|_forEachIndex|_this|_thisEventHandler|_thisFSM|_thisScript|_x)\b/i,alias:"keyword"},constant:/\bDIK(?:_[a-z\d]+)+\b/i}),t.languages.insertBefore("sqf","string",{macro:{pattern:/(^[ \t]*)#[a-z](?:[^\r\n\\]|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{directive:{pattern:/#[a-z]+\b/i,alias:"keyword"},comment:t.languages.sqf.comment}}}),delete t.languages.sqf["class-name"]}return $0}var F0,_M;function qSe(){if(_M)return F0;_M=1,F0=e,e.displayName="squirrel",e.aliases=[];function e(t){t.languages.squirrel=t.languages.extend("clike",{comment:[t.languages.clike.comment[0],{pattern:/(^|[^\\:])(?:\/\/|#).*/,lookbehind:!0,greedy:!0}],string:{pattern:/(^|[^\\"'@])(?:@"(?:[^"]|"")*"(?!")|"(?:[^\\\r\n"]|\\.)*")/,lookbehind:!0,greedy:!0},"class-name":{pattern:/(\b(?:class|enum|extends|instanceof)\s+)\w+(?:\.\w+)*/,lookbehind:!0,inside:{punctuation:/\./}},keyword:/\b(?:__FILE__|__LINE__|base|break|case|catch|class|clone|const|constructor|continue|default|delete|else|enum|extends|for|foreach|function|if|in|instanceof|local|null|resume|return|static|switch|this|throw|try|typeof|while|yield)\b/,number:/\b(?:0x[0-9a-fA-F]+|\d+(?:\.(?:\d+|[eE][+-]?\d+))?)\b/,operator:/\+\+|--|<=>|<[-<]|>>>?|&&?|\|\|?|[-+*/%!=<>]=?|[~^]|::?/,punctuation:/[(){}\[\],;.]/}),t.languages.insertBefore("squirrel","string",{char:{pattern:/(^|[^\\"'])'(?:[^\\']|\\(?:[xuU][0-9a-fA-F]{0,8}|[\s\S]))'/,lookbehind:!0,greedy:!0}}),t.languages.insertBefore("squirrel","operator",{"attribute-punctuation":{pattern:/<\/|\/>/,alias:"important"},lambda:{pattern:/@(?=\()/,alias:"operator"}})}return F0}var j0,AM;function GSe(){if(AM)return j0;AM=1,j0=e,e.displayName="stan",e.aliases=[];function e(t){(function(n){var r=/\b(?:algebra_solver|algebra_solver_newton|integrate_1d|integrate_ode|integrate_ode_bdf|integrate_ode_rk45|map_rect|ode_(?:adams|bdf|ckrk|rk45)(?:_tol)?|ode_adjoint_tol_ctl|reduce_sum|reduce_sum_static)\b/;n.languages.stan={comment:/\/\/.*|\/\*[\s\S]*?\*\/|#(?!include).*/,string:{pattern:/"[\x20\x21\x23-\x5B\x5D-\x7E]*"/,greedy:!0},directive:{pattern:/^([ \t]*)#include\b.*/m,lookbehind:!0,alias:"property"},"function-arg":{pattern:RegExp("("+r.source+/\s*\(\s*/.source+")"+/[a-zA-Z]\w*/.source),lookbehind:!0,alias:"function"},constraint:{pattern:/(\b(?:int|matrix|real|row_vector|vector)\s*)<[^<>]*>/,lookbehind:!0,inside:{expression:{pattern:/(=\s*)\S(?:\S|\s+(?!\s))*?(?=\s*(?:>$|,\s*\w+\s*=))/,lookbehind:!0,inside:null},property:/\b[a-z]\w*(?=\s*=)/i,operator:/=/,punctuation:/^<|>$|,/}},keyword:[{pattern:/\bdata(?=\s*\{)|\b(?:functions|generated|model|parameters|quantities|transformed)\b/,alias:"program-block"},/\b(?:array|break|cholesky_factor_corr|cholesky_factor_cov|complex|continue|corr_matrix|cov_matrix|data|else|for|if|in|increment_log_prob|int|matrix|ordered|positive_ordered|print|real|reject|return|row_vector|simplex|target|unit_vector|vector|void|while)\b/,r],function:/\b[a-z]\w*(?=\s*\()/i,number:/(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:E[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,boolean:/\b(?:false|true)\b/,operator:/<-|\.[*/]=?|\|\|?|&&|[!=<>+\-*/]=?|['^%~?:]/,punctuation:/[()\[\]{},;]/},n.languages.stan.constraint.inside.expression.inside=n.languages.stan})(t)}return j0}var z0,TM;function WSe(){if(TM)return z0;TM=1,z0=e,e.displayName="stylus",e.aliases=[];function e(t){(function(n){var r={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},a={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},o={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:r,number:a,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:a,punctuation:/[{}()\[\];:,]/};o.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:o}},o.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:o}},n.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:o}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:o}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:o}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:o.interpolation}},rest:o}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:o.interpolation,comment:o.comment,punctuation:/[{},]/}},func:o.func,string:o.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:o.interpolation,punctuation:/[{}()\[\];:.]/}})(t)}return z0}var U0,RM;function KSe(){if(RM)return U0;RM=1,U0=e,e.displayName="swift",e.aliases=[];function e(t){t.languages.swift={comment:{pattern:/(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/,lookbehind:!0,greedy:!0},"string-literal":[{pattern:RegExp(/(^|[^"#])/.source+"(?:"+/"(?:\\(?:\((?:[^()]|\([^()]*\))*\)|\r\n|[^(])|[^\\\r\n"])*"/.source+"|"+/"""(?:\\(?:\((?:[^()]|\([^()]*\))*\)|[^(])|[^\\"]|"(?!""))*"""/.source+")"+/(?!["#])/.source),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\\($/,alias:"punctuation"},punctuation:/\\(?=[\r\n])/,string:/[\s\S]+/}},{pattern:RegExp(/(^|[^"#])(#+)/.source+"(?:"+/"(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|\r\n|[^#])|[^\\\r\n])*?"/.source+"|"+/"""(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|[^#])|[^\\])*?"""/.source+")\\2"),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\#+\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\#+\($/,alias:"punctuation"},string:/[\s\S]+/}}],directive:{pattern:RegExp(/#/.source+"(?:"+(/(?:elseif|if)\b/.source+"(?:[ ]*"+/(?:![ \t]*)?(?:\b\w+\b(?:[ \t]*\((?:[^()]|\([^()]*\))*\))?|\((?:[^()]|\([^()]*\))*\))(?:[ \t]*(?:&&|\|\|))?/.source+")+")+"|"+/(?:else|endif)\b/.source+")"),alias:"property",inside:{"directive-name":/^#\w+/,boolean:/\b(?:false|true)\b/,number:/\b\d+(?:\.\d+)*\b/,operator:/!|&&|\|\||[<>]=?/,punctuation:/[(),]/}},literal:{pattern:/#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\b/,alias:"constant"},"other-directive":{pattern:/#\w+\b/,alias:"property"},attribute:{pattern:/@\w+/,alias:"atrule"},"function-definition":{pattern:/(\bfunc\s+)\w+/,lookbehind:!0,alias:"function"},label:{pattern:/\b(break|continue)\s+\w+|\b[a-zA-Z_]\w*(?=\s*:\s*(?:for|repeat|while)\b)/,lookbehind:!0,alias:"important"},keyword:/\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|isolated|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\b/,boolean:/\b(?:false|true)\b/,nil:{pattern:/\bnil\b/,alias:"constant"},"short-argument":/\$\d+\b/,omit:{pattern:/\b_\b/,alias:"keyword"},number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,"class-name":/\b[A-Z](?:[A-Z_\d]*[a-z]\w*)?\b/,function:/\b[a-z_]\w*(?=\s*\()/i,constant:/\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,operator:/[-+*/%=!<>&|^~?]+|\.[.\-+*/%=!<>&|^~?]+/,punctuation:/[{}[\]();,.:\\]/},t.languages.swift["string-literal"].forEach(function(n){n.inside.interpolation.inside=t.languages.swift})}return U0}var B0,NM;function YSe(){if(NM)return B0;NM=1,B0=e,e.displayName="systemd",e.aliases=[];function e(t){(function(n){var r={pattern:/^[;#].*/m,greedy:!0},a=/"(?:[^\r\n"\\]|\\(?:[^\r]|\r\n?))*"(?!\S)/.source;n.languages.systemd={comment:r,section:{pattern:/^\[[^\n\r\[\]]*\](?=[ \t]*$)/m,greedy:!0,inside:{punctuation:/^\[|\]$/,"section-name":{pattern:/[\s\S]+/,alias:"selector"}}},key:{pattern:/^[^\s=]+(?=[ \t]*=)/m,greedy:!0,alias:"attr-name"},value:{pattern:RegExp(/(=[ \t]*(?!\s))/.source+"(?:"+a+`|(?=[^"\r -]))(?:`+(/[^\s\\]/.source+'|[ ]+(?:(?![ "])|'+a+")|"+/\\[\r\n]+(?:[#;].*[\r\n]+)*(?![#;])/.source)+")*"),lookbehind:!0,greedy:!0,alias:"attr-value",inside:{comment:r,quoted:{pattern:RegExp(/(^|\s)/.source+a),lookbehind:!0,greedy:!0},punctuation:/\\$/m,boolean:{pattern:/^(?:false|no|off|on|true|yes)$/,greedy:!0}}},punctuation:/=/}})(t)}return B0}var H0,IM;function MA(){if(IM)return H0;IM=1,H0=e,e.displayName="t4Templating",e.aliases=[];function e(t){(function(n){function r(o,i,s){return{pattern:RegExp("<#"+o+"[\\s\\S]*?#>"),alias:"block",inside:{delimiter:{pattern:RegExp("^<#"+o+"|#>$"),alias:"important"},content:{pattern:/[\s\S]+/,inside:i,alias:s}}}}function a(o){var i=n.languages[o],s="language-"+o;return{block:{pattern:/<#[\s\S]+?#>/,inside:{directive:r("@",{"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/,inside:{punctuation:/^=|^["']|["']$/}},keyword:/\b\w+(?=\s)/,"attr-name":/\b\w+/}),expression:r("=",i,s),"class-feature":r("\\+",i,s),standard:r("",i,s)}}}}n.languages["t4-templating"]=Object.defineProperty({},"createT4",{value:a})})(t)}return H0}var V0,OM;function ZSe(){if(OM)return V0;OM=1;var e=MA(),t=Ah();V0=n,n.displayName="t4Cs",n.aliases=[];function n(r){r.register(e),r.register(t),r.languages.t4=r.languages["t4-cs"]=r.languages["t4-templating"].createT4("csharp")}return V0}var q0,DM;function cz(){if(DM)return q0;DM=1;var e=oz();q0=t,t.displayName="vbnet",t.aliases=[];function t(n){n.register(e),n.languages.vbnet=n.languages.extend("basic",{comment:[{pattern:/(?:!|REM\b).+/i,inside:{keyword:/^REM/i}},{pattern:/(^|[^\\:])'.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(^|[^"])"(?:""|[^"])*"(?!")/,lookbehind:!0,greedy:!0},keyword:/(?:\b(?:ADDHANDLER|ADDRESSOF|ALIAS|AND|ANDALSO|AS|BEEP|BLOAD|BOOLEAN|BSAVE|BYREF|BYTE|BYVAL|CALL(?: ABSOLUTE)?|CASE|CATCH|CBOOL|CBYTE|CCHAR|CDATE|CDBL|CDEC|CHAIN|CHAR|CHDIR|CINT|CLASS|CLEAR|CLNG|CLOSE|CLS|COBJ|COM|COMMON|CONST|CONTINUE|CSBYTE|CSHORT|CSNG|CSTR|CTYPE|CUINT|CULNG|CUSHORT|DATA|DATE|DECIMAL|DECLARE|DEF(?: FN| SEG|DBL|INT|LNG|SNG|STR)|DEFAULT|DELEGATE|DIM|DIRECTCAST|DO|DOUBLE|ELSE|ELSEIF|END|ENUM|ENVIRON|ERASE|ERROR|EVENT|EXIT|FALSE|FIELD|FILES|FINALLY|FOR(?: EACH)?|FRIEND|FUNCTION|GET|GETTYPE|GETXMLNAMESPACE|GLOBAL|GOSUB|GOTO|HANDLES|IF|IMPLEMENTS|IMPORTS|IN|INHERITS|INPUT|INTEGER|INTERFACE|IOCTL|IS|ISNOT|KEY|KILL|LET|LIB|LIKE|LINE INPUT|LOCATE|LOCK|LONG|LOOP|LSET|ME|MKDIR|MOD|MODULE|MUSTINHERIT|MUSTOVERRIDE|MYBASE|MYCLASS|NAME|NAMESPACE|NARROWING|NEW|NEXT|NOT|NOTHING|NOTINHERITABLE|NOTOVERRIDABLE|OBJECT|OF|OFF|ON(?: COM| ERROR| KEY| TIMER)?|OPEN|OPERATOR|OPTION(?: BASE)?|OPTIONAL|OR|ORELSE|OUT|OVERLOADS|OVERRIDABLE|OVERRIDES|PARAMARRAY|PARTIAL|POKE|PRIVATE|PROPERTY|PROTECTED|PUBLIC|PUT|RAISEEVENT|READ|READONLY|REDIM|REM|REMOVEHANDLER|RESTORE|RESUME|RETURN|RMDIR|RSET|RUN|SBYTE|SELECT(?: CASE)?|SET|SHADOWS|SHARED|SHELL|SHORT|SINGLE|SLEEP|STATIC|STEP|STOP|STRING|STRUCTURE|SUB|SWAP|SYNCLOCK|SYSTEM|THEN|THROW|TIMER|TO|TROFF|TRON|TRUE|TRY|TRYCAST|TYPE|TYPEOF|UINTEGER|ULONG|UNLOCK|UNTIL|USHORT|USING|VIEW PRINT|WAIT|WEND|WHEN|WHILE|WIDENING|WITH|WITHEVENTS|WRITE|WRITEONLY|XOR)|\B(?:#CONST|#ELSE|#ELSEIF|#END|#IF))(?:\$|\b)/i,punctuation:/[,;:(){}]/})}return q0}var G0,LM;function XSe(){if(LM)return G0;LM=1;var e=MA(),t=cz();G0=n,n.displayName="t4Vb",n.aliases=[];function n(r){r.register(e),r.register(t),r.languages["t4-vb"]=r.languages["t4-templating"].createT4("vbnet")}return G0}var W0,MM;function uz(){if(MM)return W0;MM=1,W0=e,e.displayName="yaml",e.aliases=["yml"];function e(t){(function(n){var r=/[*&][^\s[\]{},]+/,a=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,o="(?:"+a.source+"(?:[ ]+"+r.source+")?|"+r.source+"(?:[ ]+"+a.source+")?)",i=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*/.source.replace(//g,function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source}),s=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function l(c,u){u=(u||"").replace(/m/g,"")+"m";var d=/([:\-,[{]\s*(?:\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<>/g,function(){return o}).replace(/<>/g,function(){return c});return RegExp(d,u)}n.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<>/g,function(){return o})),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\s*:\s)/.source.replace(/<>/g,function(){return o}).replace(/<>/g,function(){return"(?:"+i+"|"+s+")"})),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:l(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:l(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:l(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:l(s),lookbehind:!0,greedy:!0},number:{pattern:l(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:a,important:r,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},n.languages.yml=n.languages.yaml})(t)}return W0}var K0,PM;function QSe(){if(PM)return K0;PM=1;var e=uz();K0=t,t.displayName="tap",t.aliases=[];function t(n){n.register(e),n.languages.tap={fail:/not ok[^#{\n\r]*/,pass:/ok[^#{\n\r]*/,pragma:/pragma [+-][a-z]+/,bailout:/bail out!.*/i,version:/TAP version \d+/i,plan:/\b\d+\.\.\d+(?: +#.*)?/,subtest:{pattern:/# Subtest(?:: .*)?/,greedy:!0},punctuation:/[{}]/,directive:/#.*/,yamlish:{pattern:/(^[ \t]*)---[\s\S]*?[\r\n][ \t]*\.\.\.$/m,lookbehind:!0,inside:n.languages.yaml,alias:"language-yaml"}}}return K0}var Y0,$M;function JSe(){if($M)return Y0;$M=1,Y0=e,e.displayName="tcl",e.aliases=[];function e(t){t.languages.tcl={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},string:{pattern:/"(?:[^"\\\r\n]|\\(?:\r\n|[\s\S]))*"/,greedy:!0},variable:[{pattern:/(\$)(?:::)?(?:[a-zA-Z0-9]+::)*\w+/,lookbehind:!0},{pattern:/(\$)\{[^}]+\}/,lookbehind:!0},{pattern:/(^[\t ]*set[ \t]+)(?:::)?(?:[a-zA-Z0-9]+::)*\w+/m,lookbehind:!0}],function:{pattern:/(^[\t ]*proc[ \t]+)\S+/m,lookbehind:!0},builtin:[{pattern:/(^[\t ]*)(?:break|class|continue|error|eval|exit|for|foreach|if|proc|return|switch|while)\b/m,lookbehind:!0},/\b(?:else|elseif)\b/],scope:{pattern:/(^[\t ]*)(?:global|upvar|variable)\b/m,lookbehind:!0,alias:"constant"},keyword:{pattern:/(^[\t ]*|\[)(?:Safe_Base|Tcl|after|append|apply|array|auto_(?:execok|import|load|mkindex|qualify|reset)|automkindex_old|bgerror|binary|catch|cd|chan|clock|close|concat|dde|dict|encoding|eof|exec|expr|fblocked|fconfigure|fcopy|file(?:event|name)?|flush|gets|glob|history|http|incr|info|interp|join|lappend|lassign|lindex|linsert|list|llength|load|lrange|lrepeat|lreplace|lreverse|lsearch|lset|lsort|math(?:func|op)|memory|msgcat|namespace|open|package|parray|pid|pkg_mkIndex|platform|puts|pwd|re_syntax|read|refchan|regexp|registry|regsub|rename|scan|seek|set|socket|source|split|string|subst|tcl(?:_endOfWord|_findLibrary|startOf(?:Next|Previous)Word|test|vars|wordBreak(?:After|Before))|tell|time|tm|trace|unknown|unload|unset|update|uplevel|vwait)\b/m,lookbehind:!0},operator:/!=?|\*\*?|==|&&?|\|\|?|<[=<]?|>[=>]?|[-+~\/%?^]|\b(?:eq|in|ne|ni)\b/,punctuation:/[{}()\[\]]/}}return Y0}var Z0,FM;function ewe(){if(FM)return Z0;FM=1,Z0=e,e.displayName="textile",e.aliases=[];function e(t){(function(n){var r=/\([^|()\n]+\)|\[[^\]\n]+\]|\{[^}\n]+\}/.source,a=/\)|\((?![^|()\n]+\))/.source;function o(g,m){return RegExp(g.replace(//g,function(){return"(?:"+r+")"}).replace(//g,function(){return"(?:"+a+")"}),m||"")}var i={css:{pattern:/\{[^{}]+\}/,inside:{rest:n.languages.css}},"class-id":{pattern:/(\()[^()]+(?=\))/,lookbehind:!0,alias:"attr-value"},lang:{pattern:/(\[)[^\[\]]+(?=\])/,lookbehind:!0,alias:"attr-value"},punctuation:/[\\\/]\d+|\S/},s=n.languages.textile=n.languages.extend("markup",{phrase:{pattern:/(^|\r|\n)\S[\s\S]*?(?=$|\r?\n\r?\n|\r\r)/,lookbehind:!0,inside:{"block-tag":{pattern:o(/^[a-z]\w*(?:||[<>=])*\./.source),inside:{modifier:{pattern:o(/(^[a-z]\w*)(?:||[<>=])+(?=\.)/.source),lookbehind:!0,inside:i},tag:/^[a-z]\w*/,punctuation:/\.$/}},list:{pattern:o(/^[*#]+*\s+\S.*/.source,"m"),inside:{modifier:{pattern:o(/(^[*#]+)+/.source),lookbehind:!0,inside:i},punctuation:/^[*#]+/}},table:{pattern:o(/^(?:(?:||[<>=^~])+\.\s*)?(?:\|(?:(?:||[<>=^~_]|[\\/]\d+)+\.|(?!(?:||[<>=^~_]|[\\/]\d+)+\.))[^|]*)+\|/.source,"m"),inside:{modifier:{pattern:o(/(^|\|(?:\r?\n|\r)?)(?:||[<>=^~_]|[\\/]\d+)+(?=\.)/.source),lookbehind:!0,inside:i},punctuation:/\||^\./}},inline:{pattern:o(/(^|[^a-zA-Z\d])(\*\*|__|\?\?|[*_%@+\-^~])*.+?\2(?![a-zA-Z\d])/.source),lookbehind:!0,inside:{bold:{pattern:o(/(^(\*\*?)*).+?(?=\2)/.source),lookbehind:!0},italic:{pattern:o(/(^(__?)*).+?(?=\2)/.source),lookbehind:!0},cite:{pattern:o(/(^\?\?*).+?(?=\?\?)/.source),lookbehind:!0,alias:"string"},code:{pattern:o(/(^@*).+?(?=@)/.source),lookbehind:!0,alias:"keyword"},inserted:{pattern:o(/(^\+*).+?(?=\+)/.source),lookbehind:!0},deleted:{pattern:o(/(^-*).+?(?=-)/.source),lookbehind:!0},span:{pattern:o(/(^%*).+?(?=%)/.source),lookbehind:!0},modifier:{pattern:o(/(^\*\*|__|\?\?|[*_%@+\-^~])+/.source),lookbehind:!0,inside:i},punctuation:/[*_%?@+\-^~]+/}},"link-ref":{pattern:/^\[[^\]]+\]\S+$/m,inside:{string:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0},url:{pattern:/(^\])\S+$/,lookbehind:!0},punctuation:/[\[\]]/}},link:{pattern:o(/"*[^"]+":.+?(?=[^\w/]?(?:\s|$))/.source),inside:{text:{pattern:o(/(^"*)[^"]+(?=")/.source),lookbehind:!0},modifier:{pattern:o(/(^")+/.source),lookbehind:!0,inside:i},url:{pattern:/(:).+/,lookbehind:!0},punctuation:/[":]/}},image:{pattern:o(/!(?:||[<>=])*(?![<>=])[^!\s()]+(?:\([^)]+\))?!(?::.+?(?=[^\w/]?(?:\s|$)))?/.source),inside:{source:{pattern:o(/(^!(?:||[<>=])*)(?![<>=])[^!\s()]+(?:\([^)]+\))?(?=!)/.source),lookbehind:!0,alias:"url"},modifier:{pattern:o(/(^!)(?:||[<>=])+/.source),lookbehind:!0,inside:i},url:{pattern:/(:).+/,lookbehind:!0},punctuation:/[!:]/}},footnote:{pattern:/\b\[\d+\]/,alias:"comment",inside:{punctuation:/\[|\]/}},acronym:{pattern:/\b[A-Z\d]+\([^)]+\)/,inside:{comment:{pattern:/(\()[^()]+(?=\))/,lookbehind:!0},punctuation:/[()]/}},mark:{pattern:/\b\((?:C|R|TM)\)/,alias:"comment",inside:{punctuation:/[()]/}}}}}),l=s.phrase.inside,c={inline:l.inline,link:l.link,image:l.image,footnote:l.footnote,acronym:l.acronym,mark:l.mark};s.tag.pattern=/<\/?(?!\d)[a-z0-9]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i;var u=l.inline.inside;u.bold.inside=c,u.italic.inside=c,u.inserted.inside=c,u.deleted.inside=c,u.span.inside=c;var d=l.table.inside;d.inline=c.inline,d.link=c.link,d.image=c.image,d.footnote=c.footnote,d.acronym=c.acronym,d.mark=c.mark})(t)}return Z0}var X0,jM;function twe(){if(jM)return X0;jM=1,X0=e,e.displayName="toml",e.aliases=[];function e(t){(function(n){var r=/(?:[\w-]+|'[^'\n\r]*'|"(?:\\.|[^\\"\r\n])*")/.source;function a(o){return o.replace(/__/g,function(){return r})}n.languages.toml={comment:{pattern:/#.*/,greedy:!0},table:{pattern:RegExp(a(/(^[\t ]*\[\s*(?:\[\s*)?)__(?:\s*\.\s*__)*(?=\s*\])/.source),"m"),lookbehind:!0,greedy:!0,alias:"class-name"},key:{pattern:RegExp(a(/(^[\t ]*|[{,]\s*)__(?:\s*\.\s*__)*(?=\s*=)/.source),"m"),lookbehind:!0,greedy:!0,alias:"property"},string:{pattern:/"""(?:\\[\s\S]|[^\\])*?"""|'''[\s\S]*?'''|'[^'\n\r]*'|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},date:[{pattern:/\b\d{4}-\d{2}-\d{2}(?:[T\s]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})?)?\b/i,alias:"number"},{pattern:/\b\d{2}:\d{2}:\d{2}(?:\.\d+)?\b/,alias:"number"}],number:/(?:\b0(?:x[\da-zA-Z]+(?:_[\da-zA-Z]+)*|o[0-7]+(?:_[0-7]+)*|b[10]+(?:_[10]+)*))\b|[-+]?\b\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?\b|[-+]?\b(?:inf|nan)\b/,boolean:/\b(?:false|true)\b/,punctuation:/[.,=[\]{}]/}})(t)}return X0}var Q0,zM;function nwe(){if(zM)return Q0;zM=1,Q0=e,e.displayName="tremor",e.aliases=[];function e(t){(function(n){n.languages.tremor={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},"interpolated-string":null,extractor:{pattern:/\b[a-z_]\w*\|(?:[^\r\n\\|]|\\(?:\r\n|[\s\S]))*\|/i,greedy:!0,inside:{regex:{pattern:/(^re)\|[\s\S]+/,lookbehind:!0},function:/^\w+/,value:/\|[\s\S]+/}},identifier:{pattern:/`[^`]*`/,greedy:!0},function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())\b/,keyword:/\b(?:args|as|by|case|config|connect|connector|const|copy|create|default|define|deploy|drop|each|emit|end|erase|event|flow|fn|for|from|group|having|insert|into|intrinsic|let|links|match|merge|mod|move|of|operator|patch|pipeline|recur|script|select|set|sliding|state|stream|to|tumbling|update|use|when|where|window|with)\b/,boolean:/\b(?:false|null|true)\b/i,number:/\b(?:0b[01_]*|0x[0-9a-fA-F_]*|\d[\d_]*(?:\.\d[\d_]*)?(?:[Ee][+-]?[\d_]+)?)\b/,"pattern-punctuation":{pattern:/%(?=[({[])/,alias:"punctuation"},operator:/[-+*\/%~!^]=?|=[=>]?|&[&=]?|\|[|=]?|<>?>?=?|(?:absent|and|not|or|present|xor)\b/,punctuation:/::|[;\[\]()\{\},.:]/};var r=/#\{(?:[^"{}]|\{[^{}]*\}|"(?:[^"\\\r\n]|\\(?:\r\n|[\s\S]))*")*\}/.source;n.languages.tremor["interpolated-string"]={pattern:RegExp(/(^|[^\\])/.source+'(?:"""(?:'+/[^"\\#]|\\[\s\S]|"(?!"")|#(?!\{)/.source+"|"+r+')*"""|"(?:'+/[^"\\\r\n#]|\\(?:\r\n|[\s\S])|#(?!\{)/.source+"|"+r+')*")'),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:RegExp(r),inside:{punctuation:/^#\{|\}$/,expression:{pattern:/[\s\S]+/,inside:n.languages.tremor}}},string:/[\s\S]+/}},n.languages.troy=n.languages.tremor,n.languages.trickle=n.languages.tremor})(t)}return Q0}var J0,UM;function rwe(){if(UM)return J0;UM=1;var e=sz(),t=OA();J0=n,n.displayName="tsx",n.aliases=[];function n(r){r.register(e),r.register(t),function(a){var o=a.util.clone(a.languages.typescript);a.languages.tsx=a.languages.extend("jsx",o),delete a.languages.tsx.parameter,delete a.languages.tsx["literal-property"];var i=a.languages.tsx.tag;i.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+i.pattern.source+")",i.pattern.flags),i.lookbehind=!0}(r)}return J0}var eE,BM;function awe(){if(BM)return eE;BM=1;var e=mr();eE=t,t.displayName="tt2",t.aliases=[];function t(n){n.register(e),function(r){r.languages.tt2=r.languages.extend("clike",{comment:/#.*|\[%#[\s\S]*?%\]/,keyword:/\b(?:BLOCK|CALL|CASE|CATCH|CLEAR|DEBUG|DEFAULT|ELSE|ELSIF|END|FILTER|FINAL|FOREACH|GET|IF|IN|INCLUDE|INSERT|LAST|MACRO|META|NEXT|PERL|PROCESS|RAWPERL|RETURN|SET|STOP|SWITCH|TAGS|THROW|TRY|UNLESS|USE|WHILE|WRAPPER)\b/,punctuation:/[[\]{},()]/}),r.languages.insertBefore("tt2","number",{operator:/=[>=]?|!=?|<=?|>=?|&&|\|\|?|\b(?:and|not|or)\b/,variable:{pattern:/\b[a-z]\w*(?:\s*\.\s*(?:\d+|\$?[a-z]\w*))*\b/i}}),r.languages.insertBefore("tt2","keyword",{delimiter:{pattern:/^(?:\[%|%%)-?|-?%\]$/,alias:"punctuation"}}),r.languages.insertBefore("tt2","string",{"single-quoted-string":{pattern:/'[^\\']*(?:\\[\s\S][^\\']*)*'/,greedy:!0,alias:"string"},"double-quoted-string":{pattern:/"[^\\"]*(?:\\[\s\S][^\\"]*)*"/,greedy:!0,alias:"string",inside:{variable:{pattern:/\$(?:[a-z]\w*(?:\.(?:\d+|\$?[a-z]\w*))*)/i}}}}),delete r.languages.tt2.string,r.hooks.add("before-tokenize",function(a){var o=/\[%[\s\S]+?%\]/g;r.languages["markup-templating"].buildPlaceholders(a,"tt2",o)}),r.hooks.add("after-tokenize",function(a){r.languages["markup-templating"].tokenizePlaceholders(a,"tt2")})}(n)}return eE}var tE,HM;function owe(){if(HM)return tE;HM=1;var e=mr();tE=t,t.displayName="twig",t.aliases=[];function t(n){n.register(e),n.languages.twig={comment:/^\{#[\s\S]*?#\}$/,"tag-name":{pattern:/(^\{%-?\s*)\w+/,lookbehind:!0,alias:"keyword"},delimiter:{pattern:/^\{[{%]-?|-?[%}]\}$/,alias:"punctuation"},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,inside:{punctuation:/^['"]|['"]$/}},keyword:/\b(?:even|if|odd)\b/,boolean:/\b(?:false|null|true)\b/,number:/\b0x[\dA-Fa-f]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][-+]?\d+)?/,operator:[{pattern:/(\s)(?:and|b-and|b-or|b-xor|ends with|in|is|matches|not|or|same as|starts with)(?=\s)/,lookbehind:!0},/[=<>]=?|!=|\*\*?|\/\/?|\?:?|[-+~%|]/],punctuation:/[()\[\]{}:.,]/},n.hooks.add("before-tokenize",function(r){if(r.language==="twig"){var a=/\{(?:#[\s\S]*?#|%[\s\S]*?%|\{[\s\S]*?\})\}/g;n.languages["markup-templating"].buildPlaceholders(r,"twig",a)}}),n.hooks.add("after-tokenize",function(r){n.languages["markup-templating"].tokenizePlaceholders(r,"twig")})}return tE}var nE,VM;function iwe(){if(VM)return nE;VM=1,nE=e,e.displayName="typoscript",e.aliases=["tsconfig"];function e(t){(function(n){var r=/\b(?:ACT|ACTIFSUB|CARRAY|CASE|CLEARGIF|COA|COA_INT|CONSTANTS|CONTENT|CUR|EDITPANEL|EFFECT|EXT|FILE|FLUIDTEMPLATE|FORM|FRAME|FRAMESET|GIFBUILDER|GMENU|GMENU_FOLDOUT|GMENU_LAYERS|GP|HMENU|HRULER|HTML|IENV|IFSUB|IMAGE|IMGMENU|IMGMENUITEM|IMGTEXT|IMG_RESOURCE|INCLUDE_TYPOSCRIPT|JSMENU|JSMENUITEM|LLL|LOAD_REGISTER|NO|PAGE|RECORDS|RESTORE_REGISTER|TEMPLATE|TEXT|TMENU|TMENUITEM|TMENU_LAYERS|USER|USER_INT|_GIFBUILDER|global|globalString|globalVar)\b/;n.languages.typoscript={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:= \t]|(?:^|[^= \t])[ \t]+)\/\/.*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^"'])#.*/,lookbehind:!0,greedy:!0}],function:[{pattern://,inside:{string:{pattern:/"[^"\r\n]*"|'[^'\r\n]*'/,inside:{keyword:r}},keyword:{pattern:/INCLUDE_TYPOSCRIPT/}}},{pattern:/@import\s*(?:"[^"\r\n]*"|'[^'\r\n]*')/,inside:{string:/"[^"\r\n]*"|'[^'\r\n]*'/}}],string:{pattern:/^([^=]*=[< ]?)(?:(?!\]\n).)*/,lookbehind:!0,inside:{function:/\{\$.*\}/,keyword:r,number:/^\d+$/,punctuation:/[,|:]/}},keyword:r,number:{pattern:/\b\d+\s*[.{=]/,inside:{operator:/[.{=]/}},tag:{pattern:/\.?[-\w\\]+\.?/,inside:{punctuation:/\./}},punctuation:/[{}[\];(),.:|]/,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/},n.languages.tsconfig=n.languages.typoscript})(t)}return nE}var rE,qM;function swe(){if(qM)return rE;qM=1,rE=e,e.displayName="unrealscript",e.aliases=["uc","uscript"];function e(t){t.languages.unrealscript={comment:/\/\/.*|\/\*[\s\S]*?\*\//,string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},category:{pattern:/(\b(?:(?:autoexpand|hide|show)categories|var)\s*\()[^()]+(?=\))/,lookbehind:!0,greedy:!0,alias:"property"},metadata:{pattern:/(\w\s*)<\s*\w+\s*=[^<>|=\r\n]+(?:\|\s*\w+\s*=[^<>|=\r\n]+)*>/,lookbehind:!0,greedy:!0,inside:{property:/\b\w+(?=\s*=)/,operator:/=/,punctuation:/[<>|]/}},macro:{pattern:/`\w+/,alias:"property"},"class-name":{pattern:/(\b(?:class|enum|extends|interface|state(?:\(\))?|struct|within)\s+)\w+/,lookbehind:!0},keyword:/\b(?:abstract|actor|array|auto|autoexpandcategories|bool|break|byte|case|class|classgroup|client|coerce|collapsecategories|config|const|continue|default|defaultproperties|delegate|dependson|deprecated|do|dontcollapsecategories|editconst|editinlinenew|else|enum|event|exec|export|extends|final|float|for|forcescriptorder|foreach|function|goto|guid|hidecategories|hidedropdown|if|ignores|implements|inherits|input|int|interface|iterator|latent|local|material|name|native|nativereplication|noexport|nontransient|noteditinlinenew|notplaceable|operator|optional|out|pawn|perobjectconfig|perobjectlocalized|placeable|postoperator|preoperator|private|protected|reliable|replication|return|server|showcategories|simulated|singular|state|static|string|struct|structdefault|structdefaultproperties|switch|texture|transient|travel|unreliable|until|var|vector|while|within)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,boolean:/\b(?:false|true)\b/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/>>|<<|--|\+\+|\*\*|[-+*/~!=<>$@]=?|&&?|\|\|?|\^\^?|[?:%]|\b(?:ClockwiseFrom|Cross|Dot)\b/,punctuation:/[()[\]{};,.]/},t.languages.uc=t.languages.uscript=t.languages.unrealscript}return rE}var aE,GM;function lwe(){if(GM)return aE;GM=1,aE=e,e.displayName="uorazor",e.aliases=[];function e(t){t.languages.uorazor={"comment-hash":{pattern:/#.*/,alias:"comment",greedy:!0},"comment-slash":{pattern:/\/\/.*/,alias:"comment",greedy:!0},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,inside:{punctuation:/^['"]|['"]$/},greedy:!0},"source-layers":{pattern:/\b(?:arms|backpack|blue|bracelet|cancel|clear|cloak|criminal|earrings|enemy|facialhair|friend|friendly|gloves|gray|grey|ground|hair|head|innerlegs|innertorso|innocent|lefthand|middletorso|murderer|neck|nonfriendly|onehandedsecondary|outerlegs|outertorso|pants|red|righthand|ring|self|shirt|shoes|talisman|waist)\b/i,alias:"function"},"source-commands":{pattern:/\b(?:alliance|attack|cast|clearall|clearignore|clearjournal|clearlist|clearsysmsg|createlist|createtimer|dclick|dclicktype|dclickvar|dress|dressconfig|drop|droprelloc|emote|getlabel|guild|gumpclose|gumpresponse|hotkey|ignore|lasttarget|lift|lifttype|menu|menuresponse|msg|org|organize|organizer|overhead|pause|poplist|potion|promptresponse|pushlist|removelist|removetimer|rename|restock|say|scav|scavenger|script|setability|setlasttarget|setskill|settimer|setvar|sysmsg|target|targetloc|targetrelloc|targettype|undress|unignore|unsetvar|useobject|useonce|useskill|usetype|virtue|wait|waitforgump|waitformenu|waitforprompt|waitforstat|waitforsysmsg|waitfortarget|walk|wfsysmsg|wft|whisper|yell)\b/,alias:"function"},"tag-name":{pattern:/(^\{%-?\s*)\w+/,lookbehind:!0,alias:"keyword"},delimiter:{pattern:/^\{[{%]-?|-?[%}]\}$/,alias:"punctuation"},function:/\b(?:atlist|close|closest|count|counter|counttype|dead|dex|diffhits|diffmana|diffstam|diffweight|find|findbuff|finddebuff|findlayer|findtype|findtypelist|followers|gumpexists|hidden|hits|hp|hue|human|humanoid|ingump|inlist|insysmessage|insysmsg|int|invul|lhandempty|list|listexists|mana|maxhits|maxhp|maxmana|maxstam|maxweight|monster|mounted|name|next|noto|paralyzed|poisoned|position|prev|previous|queued|rand|random|rhandempty|skill|stam|str|targetexists|timer|timerexists|varexist|warmode|weight)\b/,keyword:/\b(?:and|as|break|continue|else|elseif|endfor|endif|endwhile|for|if|loop|not|or|replay|stop|while)\b/,boolean:/\b(?:false|null|true)\b/,number:/\b0x[\dA-Fa-f]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][-+]?\d+)?/,operator:[{pattern:/(\s)(?:and|b-and|b-or|b-xor|ends with|in|is|matches|not|or|same as|starts with)(?=\s)/,lookbehind:!0},/[=<>]=?|!=|\*\*?|\/\/?|\?:?|[-+~%|]/],punctuation:/[()\[\]{}:.,]/}}return aE}var oE,WM;function cwe(){if(WM)return oE;WM=1,oE=e,e.displayName="uri",e.aliases=["url"];function e(t){t.languages.uri={scheme:{pattern:/^[a-z][a-z0-9+.-]*:/im,greedy:!0,inside:{"scheme-delimiter":/:$/}},fragment:{pattern:/#[\w\-.~!$&'()*+,;=%:@/?]*/,inside:{"fragment-delimiter":/^#/}},query:{pattern:/\?[\w\-.~!$&'()*+,;=%:@/?]*/,inside:{"query-delimiter":{pattern:/^\?/,greedy:!0},"pair-delimiter":/[&;]/,pair:{pattern:/^[^=][\s\S]*/,inside:{key:/^[^=]+/,value:{pattern:/(^=)[\s\S]+/,lookbehind:!0}}}}},authority:{pattern:RegExp(/^\/\//.source+/(?:[\w\-.~!$&'()*+,;=%:]*@)?/.source+("(?:"+/\[(?:[0-9a-fA-F:.]{2,48}|v[0-9a-fA-F]+\.[\w\-.~!$&'()*+,;=]+)\]/.source+"|"+/[\w\-.~!$&'()*+,;=%]*/.source+")")+/(?::\d*)?/.source,"m"),inside:{"authority-delimiter":/^\/\//,"user-info-segment":{pattern:/^[\w\-.~!$&'()*+,;=%:]*@/,inside:{"user-info-delimiter":/@$/,"user-info":/^[\w\-.~!$&'()*+,;=%:]+/}},"port-segment":{pattern:/:\d*$/,inside:{"port-delimiter":/^:/,port:/^\d+/}},host:{pattern:/[\s\S]+/,inside:{"ip-literal":{pattern:/^\[[\s\S]+\]$/,inside:{"ip-literal-delimiter":/^\[|\]$/,"ipv-future":/^v[\s\S]+/,"ipv6-address":/^[\s\S]+/}},"ipv4-address":/^(?:(?:[03-9]\d?|[12]\d{0,2})\.){3}(?:[03-9]\d?|[12]\d{0,2})$/}}}},path:{pattern:/^[\w\-.~!$&'()*+,;=%:@/]+/m,inside:{"path-separator":/\//}}},t.languages.url=t.languages.uri}return oE}var iE,KM;function uwe(){if(KM)return iE;KM=1,iE=e,e.displayName="v",e.aliases=[];function e(t){(function(n){var r={pattern:/[\s\S]+/,inside:null};n.languages.v=n.languages.extend("clike",{string:{pattern:/r?(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,alias:"quoted-string",greedy:!0,inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:\{[^{}]*\}|\w+(?:\.\w+(?:\([^\(\)]*\))?|\[[^\[\]]+\])*)/,lookbehind:!0,inside:{"interpolation-variable":{pattern:/^\$\w[\s\S]*$/,alias:"variable"},"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},"interpolation-expression":r}}}},"class-name":{pattern:/(\b(?:enum|interface|struct|type)\s+)(?:C\.)?\w+/,lookbehind:!0},keyword:/(?:\b(?:__global|as|asm|assert|atomic|break|chan|const|continue|defer|else|embed|enum|fn|for|go(?:to)?|if|import|in|interface|is|lock|match|module|mut|none|or|pub|return|rlock|select|shared|sizeof|static|struct|type(?:of)?|union|unsafe)|\$(?:else|for|if)|#(?:flag|include))\b/,number:/\b(?:0x[a-f\d]+(?:_[a-f\d]+)*|0b[01]+(?:_[01]+)*|0o[0-7]+(?:_[0-7]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?)\b/i,operator:/~|\?|[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\.?/,builtin:/\b(?:any(?:_float|_int)?|bool|byte(?:ptr)?|charptr|f(?:32|64)|i(?:8|16|64|128|nt)|rune|size_t|string|u(?:16|32|64|128)|voidptr)\b/}),r.inside=n.languages.v,n.languages.insertBefore("v","string",{char:{pattern:/`(?:\\`|\\?[^`]{1,2})`/,alias:"rune"}}),n.languages.insertBefore("v","operator",{attribute:{pattern:/(^[\t ]*)\[(?:deprecated|direct_array_access|flag|inline|live|ref_only|typedef|unsafe_fn|windows_stdcall)\]/m,lookbehind:!0,alias:"annotation",inside:{punctuation:/[\[\]]/,keyword:/\w+/}},generic:{pattern:/<\w+>(?=\s*[\)\{])/,inside:{punctuation:/[<>]/,"class-name":/\w+/}}}),n.languages.insertBefore("v","function",{"generic-function":{pattern:/\b\w+\s*<\w+>(?=\()/,inside:{function:/^\w+/,generic:{pattern:/<\w+>/,inside:n.languages.v.generic.inside}}}})})(t)}return iE}var sE,YM;function dwe(){if(YM)return sE;YM=1,sE=e,e.displayName="vala",e.aliases=[];function e(t){t.languages.vala=t.languages.extend("clike",{"class-name":[{pattern:/\b[A-Z]\w*(?:\.\w+)*\b(?=(?:\?\s+|\*?\s+\*?)\w)/,inside:{punctuation:/\./}},{pattern:/(\[)[A-Z]\w*(?:\.\w+)*\b/,lookbehind:!0,inside:{punctuation:/\./}},{pattern:/(\b(?:class|interface)\s+[A-Z]\w*(?:\.\w+)*\s*:\s*)[A-Z]\w*(?:\.\w+)*\b/,lookbehind:!0,inside:{punctuation:/\./}},{pattern:/((?:\b(?:class|enum|interface|new|struct)\s+)|(?:catch\s+\())[A-Z]\w*(?:\.\w+)*\b/,lookbehind:!0,inside:{punctuation:/\./}}],keyword:/\b(?:abstract|as|assert|async|base|bool|break|case|catch|char|class|const|construct|continue|default|delegate|delete|do|double|dynamic|else|ensures|enum|errordomain|extern|finally|float|for|foreach|get|if|in|inline|int|int16|int32|int64|int8|interface|internal|is|lock|long|namespace|new|null|out|override|owned|params|private|protected|public|ref|requires|return|set|short|signal|sizeof|size_t|ssize_t|static|string|struct|switch|this|throw|throws|try|typeof|uchar|uint|uint16|uint32|uint64|uint8|ulong|unichar|unowned|ushort|using|value|var|virtual|void|volatile|weak|while|yield)\b/i,function:/\b\w+(?=\s*\()/,number:/(?:\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)(?:f|u?l?)?/i,operator:/\+\+|--|&&|\|\||<<=?|>>=?|=>|->|~|[+\-*\/%&^|=!<>]=?|\?\??|\.\.\./,punctuation:/[{}[\];(),.:]/,constant:/\b[A-Z0-9_]+\b/}),t.languages.insertBefore("vala","string",{"raw-string":{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string"},"template-string":{pattern:/@"[\s\S]*?"/,greedy:!0,inside:{interpolation:{pattern:/\$(?:\([^)]*\)|[a-zA-Z]\w*)/,inside:{delimiter:{pattern:/^\$\(?|\)$/,alias:"punctuation"},rest:t.languages.vala}},string:/[\s\S]+/}}}),t.languages.insertBefore("vala","keyword",{regex:{pattern:/\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[imsx]{0,4}(?=\s*(?:$|[\r\n,.;})\]]))/,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:t.languages.regex},"regex-delimiter":/^\//,"regex-flags":/^[a-z]+$/}}})}return sE}var lE,ZM;function fwe(){if(ZM)return lE;ZM=1,lE=e,e.displayName="velocity",e.aliases=[];function e(t){(function(n){n.languages.velocity=n.languages.extend("markup",{});var r={variable:{pattern:/(^|[^\\](?:\\\\)*)\$!?(?:[a-z][\w-]*(?:\([^)]*\))?(?:\.[a-z][\w-]*(?:\([^)]*\))?|\[[^\]]+\])*|\{[^}]+\})/i,lookbehind:!0,inside:{}},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},number:/\b\d+\b/,boolean:/\b(?:false|true)\b/,operator:/[=!<>]=?|[+*/%-]|&&|\|\||\.\.|\b(?:eq|g[et]|l[et]|n(?:e|ot))\b/,punctuation:/[(){}[\]:,.]/};r.variable.inside={string:r.string,function:{pattern:/([^\w-])[a-z][\w-]*(?=\()/,lookbehind:!0},number:r.number,boolean:r.boolean,punctuation:r.punctuation},n.languages.insertBefore("velocity","comment",{unparsed:{pattern:/(^|[^\\])#\[\[[\s\S]*?\]\]#/,lookbehind:!0,greedy:!0,inside:{punctuation:/^#\[\[|\]\]#$/}},"velocity-comment":[{pattern:/(^|[^\\])#\*[\s\S]*?\*#/,lookbehind:!0,greedy:!0,alias:"comment"},{pattern:/(^|[^\\])##.*/,lookbehind:!0,greedy:!0,alias:"comment"}],directive:{pattern:/(^|[^\\](?:\\\\)*)#@?(?:[a-z][\w-]*|\{[a-z][\w-]*\})(?:\s*\((?:[^()]|\([^()]*\))*\))?/i,lookbehind:!0,inside:{keyword:{pattern:/^#@?(?:[a-z][\w-]*|\{[a-z][\w-]*\})|\bin\b/,inside:{punctuation:/[{}]/}},rest:r}},variable:r.variable}),n.languages.velocity.tag.inside["attr-value"].inside.rest=n.languages.velocity})(t)}return lE}var cE,XM;function pwe(){if(XM)return cE;XM=1,cE=e,e.displayName="verilog",e.aliases=[];function e(t){t.languages.verilog={comment:{pattern:/\/\/.*|\/\*[\s\S]*?\*\//,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"kernel-function":{pattern:/\B\$\w+\b/,alias:"property"},constant:/\B`\w+\b/,function:/\b\w+(?=\()/,keyword:/\b(?:alias|and|assert|assign|assume|automatic|before|begin|bind|bins|binsof|bit|break|buf|bufif0|bufif1|byte|case|casex|casez|cell|chandle|class|clocking|cmos|config|const|constraint|context|continue|cover|covergroup|coverpoint|cross|deassign|default|defparam|design|disable|dist|do|edge|else|end|endcase|endclass|endclocking|endconfig|endfunction|endgenerate|endgroup|endinterface|endmodule|endpackage|endprimitive|endprogram|endproperty|endsequence|endspecify|endtable|endtask|enum|event|expect|export|extends|extern|final|first_match|for|force|foreach|forever|fork|forkjoin|function|generate|genvar|highz0|highz1|if|iff|ifnone|ignore_bins|illegal_bins|import|incdir|include|initial|inout|input|inside|instance|int|integer|interface|intersect|join|join_any|join_none|large|liblist|library|local|localparam|logic|longint|macromodule|matches|medium|modport|module|nand|negedge|new|nmos|nor|noshowcancelled|not|notif0|notif1|null|or|output|package|packed|parameter|pmos|posedge|primitive|priority|program|property|protected|pull0|pull1|pulldown|pullup|pulsestyle_ondetect|pulsestyle_onevent|pure|rand|randc|randcase|randsequence|rcmos|real|realtime|ref|reg|release|repeat|return|rnmos|rpmos|rtran|rtranif0|rtranif1|scalared|sequence|shortint|shortreal|showcancelled|signed|small|solve|specify|specparam|static|string|strong0|strong1|struct|super|supply0|supply1|table|tagged|task|this|throughout|time|timeprecision|timeunit|tran|tranif0|tranif1|tri|tri0|tri1|triand|trior|trireg|type|typedef|union|unique|unsigned|use|uwire|var|vectored|virtual|void|wait|wait_order|wand|weak0|weak1|while|wildcard|wire|with|within|wor|xnor|xor)\b/,important:/\b(?:always|always_comb|always_ff|always_latch)\b(?: *@)?/,number:/\B##?\d+|(?:\b\d+)?'[odbh] ?[\da-fzx_?]+|\b(?:\d*[._])?\d+(?:e[-+]?\d+)?/i,operator:/[-+{}^~%*\/?=!<>&|]+/,punctuation:/[[\];(),.:]/}}return cE}var uE,QM;function gwe(){if(QM)return uE;QM=1,uE=e,e.displayName="vhdl",e.aliases=[];function e(t){t.languages.vhdl={comment:/--.+/,"vhdl-vectors":{pattern:/\b[oxb]"[\da-f_]+"|"[01uxzwlh-]+"/i,alias:"number"},"quoted-function":{pattern:/"\S+?"(?=\()/,alias:"function"},string:/"(?:[^\\"\r\n]|\\(?:\r\n|[\s\S]))*"/,constant:/\b(?:library|use)\b/i,keyword:/\b(?:'active|'ascending|'base|'delayed|'driving|'driving_value|'event|'high|'image|'instance_name|'last_active|'last_event|'last_value|'left|'leftof|'length|'low|'path_name|'pos|'pred|'quiet|'range|'reverse_range|'right|'rightof|'simple_name|'stable|'succ|'transaction|'val|'value|access|after|alias|all|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|new|next|null|of|on|open|others|out|package|port|postponed|procedure|process|pure|range|record|register|reject|report|return|select|severity|shared|signal|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with)\b/i,boolean:/\b(?:false|true)\b/i,function:/\w+(?=\()/,number:/'[01uxzwlh-]'|\b(?:\d+#[\da-f_.]+#|\d[\d_.]*)(?:e[-+]?\d+)?/i,operator:/[<>]=?|:=|[-+*/&=]|\b(?:abs|and|mod|nand|nor|not|or|rem|rol|ror|sla|sll|sra|srl|xnor|xor)\b/i,punctuation:/[{}[\];(),.:]/}}return uE}var dE,JM;function mwe(){if(JM)return dE;JM=1,dE=e,e.displayName="vim",e.aliases=[];function e(t){t.languages.vim={string:/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\r\n]|'')*'/,comment:/".*/,function:/\b\w+(?=\()/,keyword:/\b(?:N|Next|P|Print|X|XMLent|XMLns|ab|abbreviate|abc|abclear|abo|aboveleft|al|all|ar|arga|argadd|argd|argdelete|argdo|arge|argedit|argg|argglobal|argl|arglocal|args|argu|argument|as|ascii|b|bN|bNext|ba|bad|badd|ball|bd|bdelete|be|bel|belowright|bf|bfirst|bl|blast|bm|bmodified|bn|bnext|bo|botright|bp|bprevious|br|brea|break|breaka|breakadd|breakd|breakdel|breakl|breaklist|brewind|bro|browse|bufdo|buffer|buffers|bun|bunload|bw|bwipeout|c|cN|cNext|cNfcNfile|ca|cabbrev|cabc|cabclear|cad|caddb|caddbuffer|caddexpr|caddf|caddfile|cal|call|cat|catch|cb|cbuffer|cc|ccl|cclose|cd|ce|center|cex|cexpr|cf|cfile|cfir|cfirst|cg|cgetb|cgetbuffer|cgete|cgetexpr|cgetfile|change|changes|chd|chdir|che|checkpath|checkt|checktime|cl|cla|clast|clist|clo|close|cmapc|cmapclear|cn|cnew|cnewer|cnext|cnf|cnfile|cnorea|cnoreabbrev|co|col|colder|colo|colorscheme|comc|comclear|comp|compiler|con|conf|confirm|continue|cope|copen|copy|cp|cpf|cpfile|cprevious|cq|cquit|cr|crewind|cu|cuna|cunabbrev|cunmap|cw|cwindow|d|debugg|debuggreedy|delc|delcommand|delete|delf|delfunction|delm|delmarks|di|diffg|diffget|diffoff|diffpatch|diffpu|diffput|diffsplit|diffthis|diffu|diffupdate|dig|digraphs|display|dj|djump|dl|dlist|dr|drop|ds|dsearch|dsp|dsplit|e|earlier|echoe|echoerr|echom|echomsg|echon|edit|el|else|elsei|elseif|em|emenu|en|endf|endfo|endfor|endfun|endfunction|endif|endt|endtry|endw|endwhile|ene|enew|ex|exi|exit|exu|exusage|f|file|files|filetype|fin|fina|finally|find|fini|finish|fir|first|fix|fixdel|fo|fold|foldc|foldclose|foldd|folddoc|folddoclosed|folddoopen|foldo|foldopen|for|fu|fun|function|go|goto|gr|grep|grepa|grepadd|h|ha|hardcopy|help|helpf|helpfind|helpg|helpgrep|helpt|helptags|hid|hide|his|history|ia|iabbrev|iabc|iabclear|if|ij|ijump|il|ilist|imapc|imapclear|in|inorea|inoreabbrev|isearch|isp|isplit|iu|iuna|iunabbrev|iunmap|j|join|ju|jumps|k|kee|keepalt|keepj|keepjumps|keepmarks|l|lN|lNext|lNf|lNfile|la|lad|laddb|laddbuffer|laddexpr|laddf|laddfile|lan|language|last|later|lb|lbuffer|lc|lcd|lch|lchdir|lcl|lclose|left|lefta|leftabove|let|lex|lexpr|lf|lfile|lfir|lfirst|lg|lgetb|lgetbuffer|lgete|lgetexpr|lgetfile|lgr|lgrep|lgrepa|lgrepadd|lh|lhelpgrep|list|ll|lla|llast|lli|llist|lm|lmak|lmake|lmap|lmapc|lmapclear|ln|lne|lnew|lnewer|lnext|lnf|lnfile|lnoremap|lo|loadview|loc|lockmarks|lockv|lockvar|lol|lolder|lop|lopen|lp|lpf|lpfile|lprevious|lr|lrewind|ls|lt|ltag|lu|lunmap|lv|lvimgrep|lvimgrepa|lvimgrepadd|lw|lwindow|m|ma|mak|make|mark|marks|mat|match|menut|menutranslate|mk|mkexrc|mks|mksession|mksp|mkspell|mkv|mkvie|mkview|mkvimrc|mod|mode|move|mz|mzf|mzfile|mzscheme|n|nbkey|new|next|nmapc|nmapclear|noh|nohlsearch|norea|noreabbrev|nu|number|nun|nunmap|o|omapc|omapclear|on|only|open|opt|options|ou|ounmap|p|pc|pclose|pe|ped|pedit|perl|perld|perldo|po|pop|popu|popup|pp|ppop|pre|preserve|prev|previous|print|prof|profd|profdel|profile|promptf|promptfind|promptr|promptrepl|ps|psearch|ptN|ptNext|pta|ptag|ptf|ptfirst|ptj|ptjump|ptl|ptlast|ptn|ptnext|ptp|ptprevious|ptr|ptrewind|pts|ptselect|pu|put|pw|pwd|py|pyf|pyfile|python|q|qa|qall|quit|quita|quitall|r|read|rec|recover|red|redi|redir|redo|redr|redraw|redraws|redrawstatus|reg|registers|res|resize|ret|retab|retu|return|rew|rewind|ri|right|rightb|rightbelow|ru|rub|ruby|rubyd|rubydo|rubyf|rubyfile|runtime|rv|rviminfo|sN|sNext|sa|sal|sall|san|sandbox|sargument|sav|saveas|sb|sbN|sbNext|sba|sball|sbf|sbfirst|sbl|sblast|sbm|sbmodified|sbn|sbnext|sbp|sbprevious|sbr|sbrewind|sbuffer|scrip|scripte|scriptencoding|scriptnames|se|set|setf|setfiletype|setg|setglobal|setl|setlocal|sf|sfind|sfir|sfirst|sh|shell|sign|sil|silent|sim|simalt|sl|sla|slast|sleep|sm|smagic|smap|smapc|smapclear|sme|smenu|sn|snext|sni|sniff|sno|snomagic|snor|snoremap|snoreme|snoremenu|so|sor|sort|source|sp|spe|spelld|spelldump|spellgood|spelli|spellinfo|spellr|spellrepall|spellu|spellundo|spellw|spellwrong|split|spr|sprevious|sre|srewind|st|sta|stag|star|startg|startgreplace|startinsert|startr|startreplace|stj|stjump|stop|stopi|stopinsert|sts|stselect|sun|sunhide|sunm|sunmap|sus|suspend|sv|sview|syncbind|t|tN|tNext|ta|tab|tabN|tabNext|tabc|tabclose|tabd|tabdo|tabe|tabedit|tabf|tabfind|tabfir|tabfirst|tabl|tablast|tabm|tabmove|tabn|tabnew|tabnext|tabo|tabonly|tabp|tabprevious|tabr|tabrewind|tabs|tag|tags|tc|tcl|tcld|tcldo|tclf|tclfile|te|tearoff|tf|tfirst|th|throw|tj|tjump|tl|tlast|tm|tmenu|tn|tnext|to|topleft|tp|tprevious|tr|trewind|try|ts|tselect|tu|tunmenu|u|una|unabbreviate|undo|undoj|undojoin|undol|undolist|unh|unhide|unlet|unlo|unlockvar|unm|unmap|up|update|ve|verb|verbose|version|vert|vertical|vi|vie|view|vim|vimgrep|vimgrepa|vimgrepadd|visual|viu|viusage|vmapc|vmapclear|vne|vnew|vs|vsplit|vu|vunmap|w|wN|wNext|wa|wall|wh|while|win|winc|wincmd|windo|winp|winpos|winsize|wn|wnext|wp|wprevious|wq|wqa|wqall|write|ws|wsverb|wv|wviminfo|x|xa|xall|xit|xm|xmap|xmapc|xmapclear|xme|xmenu|xn|xnoremap|xnoreme|xnoremenu|xu|xunmap|y|yank)\b/,builtin:/\b(?:acd|ai|akm|aleph|allowrevins|altkeymap|ambiwidth|ambw|anti|antialias|arab|arabic|arabicshape|ari|arshape|autochdir|autocmd|autoindent|autoread|autowrite|autowriteall|aw|awa|background|backspace|backup|backupcopy|backupdir|backupext|backupskip|balloondelay|ballooneval|balloonexpr|bdir|bdlay|beval|bex|bexpr|bg|bh|bin|binary|biosk|bioskey|bk|bkc|bomb|breakat|brk|browsedir|bs|bsdir|bsk|bt|bufhidden|buflisted|buftype|casemap|ccv|cdpath|cedit|cfu|ch|charconvert|ci|cin|cindent|cink|cinkeys|cino|cinoptions|cinw|cinwords|clipboard|cmdheight|cmdwinheight|cmp|cms|columns|com|comments|commentstring|compatible|complete|completefunc|completeopt|consk|conskey|copyindent|cot|cpo|cpoptions|cpt|cscopepathcomp|cscopeprg|cscopequickfix|cscopetag|cscopetagorder|cscopeverbose|cspc|csprg|csqf|cst|csto|csverb|cuc|cul|cursorcolumn|cursorline|cwh|debug|deco|def|define|delcombine|dex|dg|dict|dictionary|diff|diffexpr|diffopt|digraph|dip|dir|directory|dy|ea|ead|eadirection|eb|ed|edcompatible|ef|efm|ei|ek|enc|encoding|endofline|eol|ep|equalalways|equalprg|errorbells|errorfile|errorformat|esckeys|et|eventignore|expandtab|exrc|fcl|fcs|fdc|fde|fdi|fdl|fdls|fdm|fdn|fdo|fdt|fen|fenc|fencs|fex|ff|ffs|fileencoding|fileencodings|fileformat|fileformats|fillchars|fk|fkmap|flp|fml|fmr|foldcolumn|foldenable|foldexpr|foldignore|foldlevel|foldlevelstart|foldmarker|foldmethod|foldminlines|foldnestmax|foldtext|formatexpr|formatlistpat|formatoptions|formatprg|fp|fs|fsync|ft|gcr|gd|gdefault|gfm|gfn|gfs|gfw|ghr|gp|grepformat|grepprg|gtl|gtt|guicursor|guifont|guifontset|guifontwide|guiheadroom|guioptions|guipty|guitablabel|guitabtooltip|helpfile|helpheight|helplang|hf|hh|hi|hidden|highlight|hk|hkmap|hkmapp|hkp|hl|hlg|hls|hlsearch|ic|icon|iconstring|ignorecase|im|imactivatekey|imak|imc|imcmdline|imd|imdisable|imi|iminsert|ims|imsearch|inc|include|includeexpr|incsearch|inde|indentexpr|indentkeys|indk|inex|inf|infercase|insertmode|invacd|invai|invakm|invallowrevins|invaltkeymap|invanti|invantialias|invar|invarab|invarabic|invarabicshape|invari|invarshape|invautochdir|invautoindent|invautoread|invautowrite|invautowriteall|invaw|invawa|invbackup|invballooneval|invbeval|invbin|invbinary|invbiosk|invbioskey|invbk|invbl|invbomb|invbuflisted|invcf|invci|invcin|invcindent|invcompatible|invconfirm|invconsk|invconskey|invcopyindent|invcp|invcscopetag|invcscopeverbose|invcst|invcsverb|invcuc|invcul|invcursorcolumn|invcursorline|invdeco|invdelcombine|invdg|invdiff|invdigraph|invdisable|invea|inveb|inved|invedcompatible|invek|invendofline|inveol|invequalalways|inverrorbells|invesckeys|invet|invex|invexpandtab|invexrc|invfen|invfk|invfkmap|invfoldenable|invgd|invgdefault|invguipty|invhid|invhidden|invhk|invhkmap|invhkmapp|invhkp|invhls|invhlsearch|invic|invicon|invignorecase|invim|invimc|invimcmdline|invimd|invincsearch|invinf|invinfercase|invinsertmode|invis|invjoinspaces|invjs|invlazyredraw|invlbr|invlinebreak|invlisp|invlist|invloadplugins|invlpl|invlz|invma|invmacatsui|invmagic|invmh|invml|invmod|invmodeline|invmodifiable|invmodified|invmore|invmousef|invmousefocus|invmousehide|invnu|invnumber|invodev|invopendevice|invpaste|invpi|invpreserveindent|invpreviewwindow|invprompt|invpvw|invreadonly|invremap|invrestorescreen|invrevins|invri|invrightleft|invrightleftcmd|invrl|invrlc|invro|invrs|invru|invruler|invsb|invsc|invscb|invscrollbind|invscs|invsecure|invsft|invshellslash|invshelltemp|invshiftround|invshortname|invshowcmd|invshowfulltag|invshowmatch|invshowmode|invsi|invsm|invsmartcase|invsmartindent|invsmarttab|invsmd|invsn|invsol|invspell|invsplitbelow|invsplitright|invspr|invsr|invssl|invsta|invstartofline|invstmp|invswapfile|invswf|invta|invtagbsearch|invtagrelative|invtagstack|invtbi|invtbidi|invtbs|invtermbidi|invterse|invtextauto|invtextmode|invtf|invtgst|invtildeop|invtimeout|invtitle|invto|invtop|invtr|invttimeout|invttybuiltin|invttyfast|invtx|invvb|invvisualbell|invwa|invwarn|invwb|invweirdinvert|invwfh|invwfw|invwildmenu|invwinfixheight|invwinfixwidth|invwiv|invwmnu|invwrap|invwrapscan|invwrite|invwriteany|invwritebackup|invws|isf|isfname|isi|isident|isk|iskeyword|isprint|joinspaces|js|key|keymap|keymodel|keywordprg|km|kmp|kp|langmap|langmenu|laststatus|lazyredraw|lbr|lcs|linebreak|lines|linespace|lisp|lispwords|listchars|loadplugins|lpl|lsp|lz|macatsui|magic|makeef|makeprg|matchpairs|matchtime|maxcombine|maxfuncdepth|maxmapdepth|maxmem|maxmempattern|maxmemtot|mco|mef|menuitems|mfd|mh|mis|mkspellmem|ml|mls|mm|mmd|mmp|mmt|modeline|modelines|modifiable|modified|more|mouse|mousef|mousefocus|mousehide|mousem|mousemodel|mouses|mouseshape|mouset|mousetime|mp|mps|msm|mzq|mzquantum|nf|noacd|noai|noakm|noallowrevins|noaltkeymap|noanti|noantialias|noar|noarab|noarabic|noarabicshape|noari|noarshape|noautochdir|noautoindent|noautoread|noautowrite|noautowriteall|noaw|noawa|nobackup|noballooneval|nobeval|nobin|nobinary|nobiosk|nobioskey|nobk|nobl|nobomb|nobuflisted|nocf|noci|nocin|nocindent|nocompatible|noconfirm|noconsk|noconskey|nocopyindent|nocp|nocscopetag|nocscopeverbose|nocst|nocsverb|nocuc|nocul|nocursorcolumn|nocursorline|nodeco|nodelcombine|nodg|nodiff|nodigraph|nodisable|noea|noeb|noed|noedcompatible|noek|noendofline|noeol|noequalalways|noerrorbells|noesckeys|noet|noex|noexpandtab|noexrc|nofen|nofk|nofkmap|nofoldenable|nogd|nogdefault|noguipty|nohid|nohidden|nohk|nohkmap|nohkmapp|nohkp|nohls|noic|noicon|noignorecase|noim|noimc|noimcmdline|noimd|noincsearch|noinf|noinfercase|noinsertmode|nois|nojoinspaces|nojs|nolazyredraw|nolbr|nolinebreak|nolisp|nolist|noloadplugins|nolpl|nolz|noma|nomacatsui|nomagic|nomh|noml|nomod|nomodeline|nomodifiable|nomodified|nomore|nomousef|nomousefocus|nomousehide|nonu|nonumber|noodev|noopendevice|nopaste|nopi|nopreserveindent|nopreviewwindow|noprompt|nopvw|noreadonly|noremap|norestorescreen|norevins|nori|norightleft|norightleftcmd|norl|norlc|noro|nors|noru|noruler|nosb|nosc|noscb|noscrollbind|noscs|nosecure|nosft|noshellslash|noshelltemp|noshiftround|noshortname|noshowcmd|noshowfulltag|noshowmatch|noshowmode|nosi|nosm|nosmartcase|nosmartindent|nosmarttab|nosmd|nosn|nosol|nospell|nosplitbelow|nosplitright|nospr|nosr|nossl|nosta|nostartofline|nostmp|noswapfile|noswf|nota|notagbsearch|notagrelative|notagstack|notbi|notbidi|notbs|notermbidi|noterse|notextauto|notextmode|notf|notgst|notildeop|notimeout|notitle|noto|notop|notr|nottimeout|nottybuiltin|nottyfast|notx|novb|novisualbell|nowa|nowarn|nowb|noweirdinvert|nowfh|nowfw|nowildmenu|nowinfixheight|nowinfixwidth|nowiv|nowmnu|nowrap|nowrapscan|nowrite|nowriteany|nowritebackup|nows|nrformats|numberwidth|nuw|odev|oft|ofu|omnifunc|opendevice|operatorfunc|opfunc|osfiletype|pa|para|paragraphs|paste|pastetoggle|patchexpr|patchmode|path|pdev|penc|pex|pexpr|pfn|ph|pheader|pi|pm|pmbcs|pmbfn|popt|preserveindent|previewheight|previewwindow|printdevice|printencoding|printexpr|printfont|printheader|printmbcharset|printmbfont|printoptions|prompt|pt|pumheight|pvh|pvw|qe|quoteescape|readonly|remap|report|restorescreen|revins|rightleft|rightleftcmd|rl|rlc|ro|rs|rtp|ruf|ruler|rulerformat|runtimepath|sbo|sc|scb|scr|scroll|scrollbind|scrolljump|scrolloff|scrollopt|scs|sect|sections|secure|sel|selection|selectmode|sessionoptions|sft|shcf|shellcmdflag|shellpipe|shellquote|shellredir|shellslash|shelltemp|shelltype|shellxquote|shiftround|shiftwidth|shm|shortmess|shortname|showbreak|showcmd|showfulltag|showmatch|showmode|showtabline|shq|si|sidescroll|sidescrolloff|siso|sj|slm|smartcase|smartindent|smarttab|smc|smd|softtabstop|sol|spc|spell|spellcapcheck|spellfile|spelllang|spellsuggest|spf|spl|splitbelow|splitright|sps|sr|srr|ss|ssl|ssop|stal|startofline|statusline|stl|stmp|su|sua|suffixes|suffixesadd|sw|swapfile|swapsync|swb|swf|switchbuf|sws|sxq|syn|synmaxcol|syntax|t_AB|t_AF|t_AL|t_CS|t_CV|t_Ce|t_Co|t_Cs|t_DL|t_EI|t_F1|t_F2|t_F3|t_F4|t_F5|t_F6|t_F7|t_F8|t_F9|t_IE|t_IS|t_K1|t_K3|t_K4|t_K5|t_K6|t_K7|t_K8|t_K9|t_KA|t_KB|t_KC|t_KD|t_KE|t_KF|t_KG|t_KH|t_KI|t_KJ|t_KK|t_KL|t_RI|t_RV|t_SI|t_Sb|t_Sf|t_WP|t_WS|t_ZH|t_ZR|t_al|t_bc|t_cd|t_ce|t_cl|t_cm|t_cs|t_da|t_db|t_dl|t_fs|t_k1|t_k2|t_k3|t_k4|t_k5|t_k6|t_k7|t_k8|t_k9|t_kB|t_kD|t_kI|t_kN|t_kP|t_kb|t_kd|t_ke|t_kh|t_kl|t_kr|t_ks|t_ku|t_le|t_mb|t_md|t_me|t_mr|t_ms|t_nd|t_op|t_se|t_so|t_sr|t_te|t_ti|t_ts|t_ue|t_us|t_ut|t_vb|t_ve|t_vi|t_vs|t_xs|tabline|tabpagemax|tabstop|tagbsearch|taglength|tagrelative|tagstack|tal|tb|tbi|tbidi|tbis|tbs|tenc|term|termbidi|termencoding|terse|textauto|textmode|textwidth|tgst|thesaurus|tildeop|timeout|timeoutlen|title|titlelen|titleold|titlestring|toolbar|toolbariconsize|top|tpm|tsl|tsr|ttimeout|ttimeoutlen|ttm|tty|ttybuiltin|ttyfast|ttym|ttymouse|ttyscroll|ttytype|tw|tx|uc|ul|undolevels|updatecount|updatetime|ut|vb|vbs|vdir|verbosefile|vfile|viewdir|viewoptions|viminfo|virtualedit|visualbell|vop|wak|warn|wb|wc|wcm|wd|weirdinvert|wfh|wfw|whichwrap|wi|wig|wildchar|wildcharm|wildignore|wildmenu|wildmode|wildoptions|wim|winaltkeys|window|winfixheight|winfixwidth|winheight|winminheight|winminwidth|winwidth|wiv|wiw|wm|wmh|wmnu|wmw|wop|wrap|wrapmargin|wrapscan|writeany|writebackup|writedelay|ww)\b/,number:/\b(?:0x[\da-f]+|\d+(?:\.\d+)?)\b/i,operator:/\|\||&&|[-+.]=?|[=!](?:[=~][#?]?)?|[<>]=?[#?]?|[*\/%?]|\b(?:is(?:not)?)\b/,punctuation:/[{}[\](),;:]/}}return dE}var fE,e5;function hwe(){if(e5)return fE;e5=1,fE=e,e.displayName="visualBasic",e.aliases=[];function e(t){t.languages["visual-basic"]={comment:{pattern:/(?:['‘’]|REM\b)(?:[^\r\n_]|_(?:\r\n?|\n)?)*/i,inside:{keyword:/^REM/i}},directive:{pattern:/#(?:Const|Else|ElseIf|End|ExternalChecksum|ExternalSource|If|Region)(?:\b_[ \t]*(?:\r\n?|\n)|.)+/i,alias:"property",greedy:!0},string:{pattern:/\$?["“”](?:["“”]{2}|[^"“”])*["“”]C?/i,greedy:!0},date:{pattern:/#[ \t]*(?:\d+([/-])\d+\1\d+(?:[ \t]+(?:\d+[ \t]*(?:AM|PM)|\d+:\d+(?::\d+)?(?:[ \t]*(?:AM|PM))?))?|\d+[ \t]*(?:AM|PM)|\d+:\d+(?::\d+)?(?:[ \t]*(?:AM|PM))?)[ \t]*#/i,alias:"number"},number:/(?:(?:\b\d+(?:\.\d+)?|\.\d+)(?:E[+-]?\d+)?|&[HO][\dA-F]+)(?:[FRD]|U?[ILS])?/i,boolean:/\b(?:False|Nothing|True)\b/i,keyword:/\b(?:AddHandler|AddressOf|Alias|And(?:Also)?|As|Boolean|ByRef|Byte|ByVal|Call|Case|Catch|C(?:Bool|Byte|Char|Date|Dbl|Dec|Int|Lng|Obj|SByte|Short|Sng|Str|Type|UInt|ULng|UShort)|Char|Class|Const|Continue|Currency|Date|Decimal|Declare|Default|Delegate|Dim|DirectCast|Do|Double|Each|Else(?:If)?|End(?:If)?|Enum|Erase|Error|Event|Exit|Finally|For|Friend|Function|Get(?:Type|XMLNamespace)?|Global|GoSub|GoTo|Handles|If|Implements|Imports|In|Inherits|Integer|Interface|Is|IsNot|Let|Lib|Like|Long|Loop|Me|Mod|Module|Must(?:Inherit|Override)|My(?:Base|Class)|Namespace|Narrowing|New|Next|Not(?:Inheritable|Overridable)?|Object|Of|On|Operator|Option(?:al)?|Or(?:Else)?|Out|Overloads|Overridable|Overrides|ParamArray|Partial|Private|Property|Protected|Public|RaiseEvent|ReadOnly|ReDim|RemoveHandler|Resume|Return|SByte|Select|Set|Shadows|Shared|short|Single|Static|Step|Stop|String|Structure|Sub|SyncLock|Then|Throw|To|Try|TryCast|Type|TypeOf|U(?:Integer|Long|Short)|Until|Using|Variant|Wend|When|While|Widening|With(?:Events)?|WriteOnly|Xor)\b/i,operator:/[+\-*/\\^<=>&#@$%!]|\b_(?=[ \t]*[\r\n])/,punctuation:/[{}().,:?]/},t.languages.vb=t.languages["visual-basic"],t.languages.vba=t.languages["visual-basic"]}return fE}var pE,t5;function bwe(){if(t5)return pE;t5=1,pE=e,e.displayName="warpscript",e.aliases=[];function e(t){t.languages.warpscript={comment:/#.*|\/\/.*|\/\*[\s\S]*?\*\//,string:{pattern:/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'|<'(?:[^\\']|'(?!>)|\\.)*'>/,greedy:!0},variable:/\$\S+/,macro:{pattern:/@\S+/,alias:"property"},keyword:/\b(?:BREAK|CHECKMACRO|CONTINUE|CUDF|DEFINED|DEFINEDMACRO|EVAL|FAIL|FOR|FOREACH|FORSTEP|IFT|IFTE|MSGFAIL|NRETURN|RETHROW|RETURN|SWITCH|TRY|UDF|UNTIL|WHILE)\b/,number:/[+-]?\b(?:NaN|Infinity|\d+(?:\.\d*)?(?:[Ee][+-]?\d+)?|0x[\da-fA-F]+|0b[01]+)\b/,boolean:/\b(?:F|T|false|true)\b/,punctuation:/<%|%>|[{}[\]()]/,operator:/==|&&?|\|\|?|\*\*?|>>>?|<<|[<>!~]=?|[-/%^]|\+!?|\b(?:AND|NOT|OR)\b/}}return pE}var gE,n5;function ywe(){if(n5)return gE;n5=1,gE=e,e.displayName="wasm",e.aliases=[];function e(t){t.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/}}return gE}var mE,r5;function vwe(){if(r5)return mE;r5=1,mE=e,e.displayName="webIdl",e.aliases=[];function e(t){(function(n){var r=/(?:\B-|\b_|\b)[A-Za-z][\w-]*(?![\w-])/.source,a="(?:"+/\b(?:unsigned\s+)?long\s+long(?![\w-])/.source+"|"+/\b(?:unrestricted|unsigned)\s+[a-z]+(?![\w-])/.source+"|"+/(?!(?:unrestricted|unsigned)\b)/.source+r+/(?:\s*<(?:[^<>]|<[^<>]*>)*>)?/.source+")"+/(?:\s*\?)?/.source,o={};n.languages["web-idl"]={comment:{pattern:/\/\/.*|\/\*[\s\S]*?\*\//,greedy:!0},string:{pattern:/"[^"]*"/,greedy:!0},namespace:{pattern:RegExp(/(\bnamespace\s+)/.source+r),lookbehind:!0},"class-name":[{pattern:/(^|[^\w-])(?:iterable|maplike|setlike)\s*<(?:[^<>]|<[^<>]*>)*>/,lookbehind:!0,inside:o},{pattern:RegExp(/(\b(?:attribute|const|deleter|getter|optional|setter)\s+)/.source+a),lookbehind:!0,inside:o},{pattern:RegExp("("+/\bcallback\s+/.source+r+/\s*=\s*/.source+")"+a),lookbehind:!0,inside:o},{pattern:RegExp(/(\btypedef\b\s*)/.source+a),lookbehind:!0,inside:o},{pattern:RegExp(/(\b(?:callback|dictionary|enum|interface(?:\s+mixin)?)\s+)(?!(?:interface|mixin)\b)/.source+r),lookbehind:!0},{pattern:RegExp(/(:\s*)/.source+r),lookbehind:!0},RegExp(r+/(?=\s+(?:implements|includes)\b)/.source),{pattern:RegExp(/(\b(?:implements|includes)\s+)/.source+r),lookbehind:!0},{pattern:RegExp(a+"(?="+/\s*(?:\.{3}\s*)?/.source+r+/\s*[(),;=]/.source+")"),inside:o}],builtin:/\b(?:ArrayBuffer|BigInt64Array|BigUint64Array|ByteString|DOMString|DataView|Float32Array|Float64Array|FrozenArray|Int16Array|Int32Array|Int8Array|ObservableArray|Promise|USVString|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray)\b/,keyword:[/\b(?:async|attribute|callback|const|constructor|deleter|dictionary|enum|getter|implements|includes|inherit|interface|mixin|namespace|null|optional|or|partial|readonly|required|setter|static|stringifier|typedef|unrestricted)\b/,/\b(?:any|bigint|boolean|byte|double|float|iterable|long|maplike|object|octet|record|sequence|setlike|short|symbol|undefined|unsigned|void)\b/],boolean:/\b(?:false|true)\b/,number:{pattern:/(^|[^\w-])-?(?:0x[0-9a-f]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|NaN|Infinity)(?![\w-])/i,lookbehind:!0},operator:/\.{3}|[=:?<>-]/,punctuation:/[(){}[\].,;]/};for(var i in n.languages["web-idl"])i!=="class-name"&&(o[i]=n.languages["web-idl"][i]);n.languages.webidl=n.languages["web-idl"]})(t)}return mE}var hE,a5;function Swe(){if(a5)return hE;a5=1,hE=e,e.displayName="wiki",e.aliases=[];function e(t){t.languages.wiki=t.languages.extend("markup",{"block-comment":{pattern:/(^|[^\\])\/\*[\s\S]*?\*\//,lookbehind:!0,alias:"comment"},heading:{pattern:/^(=+)[^=\r\n].*?\1/m,inside:{punctuation:/^=+|=+$/,important:/.+/}},emphasis:{pattern:/('{2,5}).+?\1/,inside:{"bold-italic":{pattern:/(''''').+?(?=\1)/,lookbehind:!0,alias:["bold","italic"]},bold:{pattern:/(''')[^'](?:.*?[^'])?(?=\1)/,lookbehind:!0},italic:{pattern:/('')[^'](?:.*?[^'])?(?=\1)/,lookbehind:!0},punctuation:/^''+|''+$/}},hr:{pattern:/^-{4,}/m,alias:"punctuation"},url:[/ISBN +(?:97[89][ -]?)?(?:\d[ -]?){9}[\dx]\b|(?:PMID|RFC) +\d+/i,/\[\[.+?\]\]|\[.+?\]/],variable:[/__[A-Z]+__/,/\{{3}.+?\}{3}/,/\{\{.+?\}\}/],symbol:[/^#redirect/im,/~{3,5}/],"table-tag":{pattern:/((?:^|[|!])[|!])[^|\r\n]+\|(?!\|)/m,lookbehind:!0,inside:{"table-bar":{pattern:/\|$/,alias:"punctuation"},rest:t.languages.markup.tag.inside}},punctuation:/^(?:\{\||\|\}|\|-|[*#:;!|])|\|\||!!/m}),t.languages.insertBefore("wiki","tag",{nowiki:{pattern:/<(nowiki|pre|source)\b[^>]*>[\s\S]*?<\/\1>/i,inside:{tag:{pattern:/<(?:nowiki|pre|source)\b[^>]*>|<\/(?:nowiki|pre|source)>/i,inside:t.languages.markup.tag.inside}}}})}return hE}var bE,o5;function wwe(){if(o5)return bE;o5=1,bE=e,e.displayName="wolfram",e.aliases=["mathematica","wl","nb"];function e(t){t.languages.wolfram={comment:/\(\*(?:\(\*(?:[^*]|\*(?!\)))*\*\)|(?!\(\*)[\s\S])*?\*\)/,string:{pattern:/"(?:\\.|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:Abs|AbsArg|Accuracy|Block|Do|For|Function|If|Manipulate|Module|Nest|NestList|None|Return|Switch|Table|Which|While)\b/,context:{pattern:/\b\w+`+\w*/,alias:"class-name"},blank:{pattern:/\b\w+_\b/,alias:"regex"},"global-variable":{pattern:/\$\w+/,alias:"variable"},boolean:/\b(?:False|True)\b/,number:/(?:\b(?=\d)|\B(?=\.))(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/\/\.|;|=\.|\^=|\^:=|:=|<<|>>|<\||\|>|:>|\|->|->|<-|@@@|@@|@|\/@|=!=|===|==|=|\+|-|\^|\[\/-+%=\]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},t.languages.mathematica=t.languages.wolfram,t.languages.wl=t.languages.wolfram,t.languages.nb=t.languages.wolfram}return bE}var yE,i5;function Ewe(){if(i5)return yE;i5=1,yE=e,e.displayName="wren",e.aliases=[];function e(t){t.languages.wren={comment:[{pattern:/\/\*(?:[^*/]|\*(?!\/)|\/(?!\*)|\/\*(?:[^*/]|\*(?!\/)|\/(?!\*)|\/\*(?:[^*/]|\*(?!\/)|\/(?!\*))*\*\/)*\*\/)*\*\//,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],"triple-quoted-string":{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string"},"string-literal":null,hashbang:{pattern:/^#!\/.+/,greedy:!0,alias:"comment"},attribute:{pattern:/#!?[ \t\u3000]*\w+/,alias:"keyword"},"class-name":[{pattern:/(\bclass\s+)\w+/,lookbehind:!0},/\b[A-Z][a-z\d_]*\b/],constant:/\b[A-Z][A-Z\d_]*\b/,null:{pattern:/\bnull\b/,alias:"keyword"},keyword:/\b(?:as|break|class|construct|continue|else|for|foreign|if|import|in|is|return|static|super|this|var|while)\b/,boolean:/\b(?:false|true)\b/,number:/\b(?:0x[\da-f]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)\b/i,function:/\b[a-z_]\w*(?=\s*[({])/i,operator:/<<|>>|[=!<>]=?|&&|\|\||[-+*/%~^&|?:]|\.{2,3}/,punctuation:/[\[\](){}.,;]/},t.languages.wren["string-literal"]={pattern:/(^|[^\\"])"(?:[^\\"%]|\\[\s\S]|%(?!\()|%\((?:[^()]|\((?:[^()]|\([^)]*\))*\))*\))*"/,lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)%\((?:[^()]|\((?:[^()]|\([^)]*\))*\))*\)/,lookbehind:!0,inside:{expression:{pattern:/^(%\()[\s\S]+(?=\)$)/,lookbehind:!0,inside:t.languages.wren},"interpolation-punctuation":{pattern:/^%\(|\)$/,alias:"punctuation"}}},string:/[\s\S]+/}}}return yE}var vE,s5;function xwe(){if(s5)return vE;s5=1,vE=e,e.displayName="xeora",e.aliases=["xeoracube"];function e(t){(function(n){n.languages.xeora=n.languages.extend("markup",{constant:{pattern:/\$(?:DomainContents|PageRenderDuration)\$/,inside:{punctuation:{pattern:/\$/}}},variable:{pattern:/\$@?(?:#+|[-+*~=^])?[\w.]+\$/,inside:{punctuation:{pattern:/[$.]/},operator:{pattern:/#+|[-+*~=^@]/}}},"function-inline":{pattern:/\$F:[-\w.]+\?[-\w.]+(?:,(?:(?:@[-#]*\w+\.[\w+.]\.*)*\|)*(?:(?:[\w+]|[-#*.~^]+[\w+]|=\S)(?:[^$=]|=+[^=])*=*|(?:@[-#]*\w+\.[\w+.]\.*)+(?:(?:[\w+]|[-#*~^][-#*.~^]*[\w+]|=\S)(?:[^$=]|=+[^=])*=*)?)?)?\$/,inside:{variable:{pattern:/(?:[,|])@?(?:#+|[-+*~=^])?[\w.]+/,inside:{punctuation:{pattern:/[,.|]/},operator:{pattern:/#+|[-+*~=^@]/}}},punctuation:{pattern:/\$\w:|[$:?.,|]/}},alias:"function"},"function-block":{pattern:/\$XF:\{[-\w.]+\?[-\w.]+(?:,(?:(?:@[-#]*\w+\.[\w+.]\.*)*\|)*(?:(?:[\w+]|[-#*.~^]+[\w+]|=\S)(?:[^$=]|=+[^=])*=*|(?:@[-#]*\w+\.[\w+.]\.*)+(?:(?:[\w+]|[-#*~^][-#*.~^]*[\w+]|=\S)(?:[^$=]|=+[^=])*=*)?)?)?\}:XF\$/,inside:{punctuation:{pattern:/[$:{}?.,|]/}},alias:"function"},"directive-inline":{pattern:/\$\w(?:#\d+\+?)?(?:\[[-\w.]+\])?:[-\/\w.]+\$/,inside:{punctuation:{pattern:/\$(?:\w:|C(?:\[|#\d))?|[:{[\]]/,inside:{tag:{pattern:/#\d/}}}},alias:"function"},"directive-block-open":{pattern:/\$\w+:\{|\$\w(?:#\d+\+?)?(?:\[[-\w.]+\])?:[-\w.]+:\{(?:![A-Z]+)?/,inside:{punctuation:{pattern:/\$(?:\w:|C(?:\[|#\d))?|[:{[\]]/,inside:{tag:{pattern:/#\d/}}},attribute:{pattern:/![A-Z]+$/,inside:{punctuation:{pattern:/!/}},alias:"keyword"}},alias:"function"},"directive-block-separator":{pattern:/\}:[-\w.]+:\{/,inside:{punctuation:{pattern:/[:{}]/}},alias:"function"},"directive-block-close":{pattern:/\}:[-\w.]+\$/,inside:{punctuation:{pattern:/[:{}$]/}},alias:"function"}}),n.languages.insertBefore("inside","punctuation",{variable:n.languages.xeora["function-inline"].inside.variable},n.languages.xeora["function-block"]),n.languages.xeoracube=n.languages.xeora})(t)}return vE}var SE,l5;function kwe(){if(l5)return SE;l5=1,SE=e,e.displayName="xmlDoc",e.aliases=[];function e(t){(function(n){function r(s,l){n.languages[s]&&n.languages.insertBefore(s,"comment",{"doc-comment":l})}var a=n.languages.markup.tag,o={pattern:/\/\/\/.*/,greedy:!0,alias:"comment",inside:{tag:a}},i={pattern:/'''.*/,greedy:!0,alias:"comment",inside:{tag:a}};r("csharp",o),r("fsharp",o),r("vbnet",i)})(t)}return SE}var wE,c5;function Cwe(){if(c5)return wE;c5=1,wE=e,e.displayName="xojo",e.aliases=[];function e(t){t.languages.xojo={comment:{pattern:/(?:'|\/\/|Rem\b).+/i,greedy:!0},string:{pattern:/"(?:""|[^"])*"/,greedy:!0},number:[/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:E[+-]?\d+)?/i,/&[bchou][a-z\d]+/i],directive:{pattern:/#(?:Else|ElseIf|Endif|If|Pragma)\b/i,alias:"property"},keyword:/\b(?:AddHandler|App|Array|As(?:signs)?|Auto|Boolean|Break|By(?:Ref|Val)|Byte|Call|Case|Catch|CFStringRef|CGFloat|Class|Color|Const|Continue|CString|Currency|CurrentMethodName|Declare|Delegate|Dim|Do(?:uble|wnTo)?|Each|Else(?:If)?|End|Enumeration|Event|Exception|Exit|Extends|False|Finally|For|Function|Get|GetTypeInfo|Global|GOTO|If|Implements|In|Inherits|Int(?:8|16|32|64|eger|erface)?|Lib|Loop|Me|Module|Next|Nil|Object|Optional|OSType|ParamArray|Private|Property|Protected|PString|Ptr|Raise(?:Event)?|ReDim|RemoveHandler|Return|Select(?:or)?|Self|Set|Shared|Short|Single|Soft|Static|Step|String|Sub|Super|Text|Then|To|True|Try|Ubound|UInt(?:8|16|32|64|eger)?|Until|Using|Var(?:iant)?|Wend|While|WindowPtr|WString)\b/i,operator:/<[=>]?|>=?|[+\-*\/\\^=]|\b(?:AddressOf|And|Ctype|IsA?|Mod|New|Not|Or|WeakAddressOf|Xor)\b/i,punctuation:/[.,;:()]/}}return wE}var EE,u5;function _we(){if(u5)return EE;u5=1,EE=e,e.displayName="xquery",e.aliases=[];function e(t){(function(n){n.languages.xquery=n.languages.extend("markup",{"xquery-comment":{pattern:/\(:[\s\S]*?:\)/,greedy:!0,alias:"comment"},string:{pattern:/(["'])(?:\1\1|(?!\1)[\s\S])*\1/,greedy:!0},extension:{pattern:/\(#.+?#\)/,alias:"symbol"},variable:/\$[-\w:]+/,axis:{pattern:/(^|[^-])(?:ancestor(?:-or-self)?|attribute|child|descendant(?:-or-self)?|following(?:-sibling)?|parent|preceding(?:-sibling)?|self)(?=::)/,lookbehind:!0,alias:"operator"},"keyword-operator":{pattern:/(^|[^:-])\b(?:and|castable as|div|eq|except|ge|gt|idiv|instance of|intersect|is|le|lt|mod|ne|or|union)\b(?=$|[^:-])/,lookbehind:!0,alias:"operator"},keyword:{pattern:/(^|[^:-])\b(?:as|ascending|at|base-uri|boundary-space|case|cast as|collation|construction|copy-namespaces|declare|default|descending|else|empty (?:greatest|least)|encoding|every|external|for|function|if|import|in|inherit|lax|let|map|module|namespace|no-inherit|no-preserve|option|order(?: by|ed|ing)?|preserve|return|satisfies|schema|some|stable|strict|strip|then|to|treat as|typeswitch|unordered|validate|variable|version|where|xquery)\b(?=$|[^:-])/,lookbehind:!0},function:/[\w-]+(?::[\w-]+)*(?=\s*\()/,"xquery-element":{pattern:/(element\s+)[\w-]+(?::[\w-]+)*/,lookbehind:!0,alias:"tag"},"xquery-attribute":{pattern:/(attribute\s+)[\w-]+(?::[\w-]+)*/,lookbehind:!0,alias:"attr-name"},builtin:{pattern:/(^|[^:-])\b(?:attribute|comment|document|element|processing-instruction|text|xs:(?:ENTITIES|ENTITY|ID|IDREFS?|NCName|NMTOKENS?|NOTATION|Name|QName|anyAtomicType|anyType|anyURI|base64Binary|boolean|byte|date|dateTime|dayTimeDuration|decimal|double|duration|float|gDay|gMonth|gMonthDay|gYear|gYearMonth|hexBinary|int|integer|language|long|negativeInteger|nonNegativeInteger|nonPositiveInteger|normalizedString|positiveInteger|short|string|time|token|unsigned(?:Byte|Int|Long|Short)|untyped(?:Atomic)?|yearMonthDuration))\b(?=$|[^:-])/,lookbehind:!0},number:/\b\d+(?:\.\d+)?(?:E[+-]?\d+)?/,operator:[/[+*=?|@]|\.\.?|:=|!=|<[=<]?|>[=>]?/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}],punctuation:/[[\](){},;:/]/}),n.languages.xquery.tag.pattern=/<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|\{(?!\{)(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])+\}|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/,n.languages.xquery.tag.inside["attr-value"].pattern=/=(?:("|')(?:\\[\s\S]|\{(?!\{)(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])+\}|(?!\1)[^\\])*\1|[^\s'">=]+)/,n.languages.xquery.tag.inside["attr-value"].inside.punctuation=/^="|"$/,n.languages.xquery.tag.inside["attr-value"].inside.expression={pattern:/\{(?!\{)(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])+\}/,inside:n.languages.xquery,alias:"language-xquery"};var r=function(o){return typeof o=="string"?o:typeof o.content=="string"?o.content:o.content.map(r).join("")},a=function(o){for(var i=[],s=0;s0&&i[i.length-1].tagName===r(l.content[0].content[1])&&i.pop():l.content[l.content.length-1].content==="/>"||i.push({tagName:r(l.content[0].content[1]),openedBraces:0}):i.length>0&&l.type==="punctuation"&&l.content==="{"&&(!o[s+1]||o[s+1].type!=="punctuation"||o[s+1].content!=="{")&&(!o[s-1]||o[s-1].type!=="plain-text"||o[s-1].content!=="{")?i[i.length-1].openedBraces++:i.length>0&&i[i.length-1].openedBraces>0&&l.type==="punctuation"&&l.content==="}"?i[i.length-1].openedBraces--:l.type!=="comment"&&(c=!0)),(c||typeof l=="string")&&i.length>0&&i[i.length-1].openedBraces===0){var u=r(l);s0&&(typeof o[s-1]=="string"||o[s-1].type==="plain-text")&&(u=r(o[s-1])+u,o.splice(s-1,1),s--),/^\s+$/.test(u)?o[s]=u:o[s]=new n.Token("plain-text",u,null,u)}l.content&&typeof l.content!="string"&&a(l.content)}};n.hooks.add("after-tokenize",function(o){o.language==="xquery"&&a(o.tokens)})})(t)}return EE}var xE,d5;function Awe(){if(d5)return xE;d5=1,xE=e,e.displayName="yang",e.aliases=[];function e(t){t.languages.yang={comment:/\/\*[\s\S]*?\*\/|\/\/.*/,string:{pattern:/"(?:[^\\"]|\\.)*"|'[^']*'/,greedy:!0},keyword:{pattern:/(^|[{};\r\n][ \t]*)[a-z_][\w.-]*/i,lookbehind:!0},namespace:{pattern:/(\s)[a-z_][\w.-]*(?=:)/i,lookbehind:!0},boolean:/\b(?:false|true)\b/,operator:/\+/,punctuation:/[{};:]/}}return xE}var kE,f5;function Twe(){if(f5)return kE;f5=1,kE=e,e.displayName="zig",e.aliases=[];function e(t){(function(n){function r(u){return function(){return u}}var a=/\b(?:align|allowzero|and|anyframe|anytype|asm|async|await|break|cancel|catch|comptime|const|continue|defer|else|enum|errdefer|error|export|extern|fn|for|if|inline|linksection|nakedcc|noalias|nosuspend|null|or|orelse|packed|promise|pub|resume|return|stdcallcc|struct|suspend|switch|test|threadlocal|try|undefined|union|unreachable|usingnamespace|var|volatile|while)\b/,o="\\b(?!"+a.source+")(?!\\d)\\w+\\b",i=/align\s*\((?:[^()]|\([^()]*\))*\)/.source,s=/(?:\?|\bpromise->|(?:\[[^[\]]*\]|\*(?!\*)|\*\*)(?:\s*|\s*const\b|\s*volatile\b|\s*allowzero\b)*)/.source.replace(//g,r(i)),l=/(?:\bpromise\b|(?:\berror\.)?(?:\.)*(?!\s+))/.source.replace(//g,r(o)),c="(?!\\s)(?:!?\\s*(?:"+s+"\\s*)*"+l+")+";n.languages.zig={comment:[{pattern:/\/\/[/!].*/,alias:"doc-comment"},/\/{2}.*/],string:[{pattern:/(^|[^\\@])c?"(?:[^"\\\r\n]|\\.)*"/,lookbehind:!0,greedy:!0},{pattern:/([\r\n])([ \t]+c?\\{2}).*(?:(?:\r\n?|\n)\2.*)*/,lookbehind:!0,greedy:!0}],char:{pattern:/(^|[^\\])'(?:[^'\\\r\n]|[\uD800-\uDFFF]{2}|\\(?:.|x[a-fA-F\d]{2}|u\{[a-fA-F\d]{1,6}\}))'/,lookbehind:!0,greedy:!0},builtin:/\B@(?!\d)\w+(?=\s*\()/,label:{pattern:/(\b(?:break|continue)\s*:\s*)\w+\b|\b(?!\d)\w+\b(?=\s*:\s*(?:\{|while\b))/,lookbehind:!0},"class-name":[/\b(?!\d)\w+(?=\s*=\s*(?:(?:extern|packed)\s+)?(?:enum|struct|union)\s*[({])/,{pattern:RegExp(/(:\s*)(?=\s*(?:\s*)?[=;,)])|(?=\s*(?:\s*)?\{)/.source.replace(//g,r(c)).replace(//g,r(i))),lookbehind:!0,inside:null},{pattern:RegExp(/(\)\s*)(?=\s*(?:\s*)?;)/.source.replace(//g,r(c)).replace(//g,r(i))),lookbehind:!0,inside:null}],"builtin-type":{pattern:/\b(?:anyerror|bool|c_u?(?:int|long|longlong|short)|c_longdouble|c_void|comptime_(?:float|int)|f(?:16|32|64|128)|[iu](?:8|16|32|64|128|size)|noreturn|type|void)\b/,alias:"keyword"},keyword:a,function:/\b(?!\d)\w+(?=\s*\()/,number:/\b(?:0b[01]+|0o[0-7]+|0x[a-fA-F\d]+(?:\.[a-fA-F\d]*)?(?:[pP][+-]?[a-fA-F\d]+)?|\d+(?:\.\d*)?(?:[eE][+-]?\d+)?)\b/,boolean:/\b(?:false|true)\b/,operator:/\.[*?]|\.{2,3}|[-=]>|\*\*|\+\+|\|\||(?:<<|>>|[-+*]%|[-+*/%^&|<>!=])=?|[?~]/,punctuation:/[.:,;(){}[\]]/},n.languages.zig["class-name"].forEach(function(u){u.inside===null&&(u.inside=n.languages.zig)})})(t)}return kE}var I=Phe,Rwe=I;I.register(Whe());I.register(Khe());I.register(Yhe());I.register(Zhe());I.register(Xhe());I.register(Qhe());I.register(Jhe());I.register(ebe());I.register(tbe());I.register(nbe());I.register(rbe());I.register(abe());I.register(obe());I.register(ibe());I.register(sbe());I.register(lbe());I.register(cbe());I.register(ube());I.register(dbe());I.register(fbe());I.register(pbe());I.register(gbe());I.register(az());I.register(oz());I.register(mbe());I.register(hbe());I.register(bbe());I.register(ybe());I.register(vbe());I.register(Sbe());I.register(wbe());I.register(Ebe());I.register(xbe());I.register(kbe());I.register(Ws());I.register(Cbe());I.register(_be());I.register(Abe());I.register(Tbe());I.register(Rbe());I.register(Nbe());I.register(Ibe());I.register(Obe());I.register(Dbe());I.register(RA());I.register(Lbe());I.register(Ah());I.register(Mbe());I.register(Pbe());I.register($be());I.register(Fbe());I.register(jbe());I.register(zbe());I.register(Ube());I.register(Bbe());I.register(Hbe());I.register(Vbe());I.register(qbe());I.register(Gbe());I.register(Wbe());I.register(Kbe());I.register(Ybe());I.register(Zbe());I.register(Xbe());I.register(Qbe());I.register(Jbe());I.register(eye());I.register(tye());I.register(nye());I.register(rye());I.register(aye());I.register(oye());I.register(iye());I.register(sye());I.register(lye());I.register(cye());I.register(uye());I.register(dye());I.register(fye());I.register(pye());I.register(gye());I.register(mye());I.register(hye());I.register(bye());I.register(yye());I.register(vye());I.register(Sye());I.register(wye());I.register(Eye());I.register(xye());I.register(kye());I.register(Cye());I.register(_ye());I.register(Aye());I.register(NA());I.register(Tye());I.register(Rye());I.register(Nye());I.register(Iye());I.register(Oye());I.register(Dye());I.register(Lye());I.register(Mye());I.register(Pye());I.register($ye());I.register(Fye());I.register(jye());I.register(zye());I.register(Uye());I.register(Bye());I.register(Hye());I.register(Vye());I.register(IA());I.register(qye());I.register(Rh());I.register(Gye());I.register(Wye());I.register(Kye());I.register(Yye());I.register(Zye());I.register(Xye());I.register(Qye());I.register(DA());I.register(Jye());I.register(eve());I.register(tve());I.register(sz());I.register(nve());I.register(rve());I.register(ave());I.register(ove());I.register(ive());I.register(sve());I.register(lve());I.register(cve());I.register(uve());I.register(dve());I.register(fve());I.register(pve());I.register(gve());I.register(mve());I.register(hve());I.register(bve());I.register(iz());I.register(yve());I.register(vve());I.register(Sve());I.register(mr());I.register(wve());I.register(Eve());I.register(xve());I.register(kve());I.register(Cve());I.register(_ve());I.register(Ave());I.register(Tve());I.register(Rve());I.register(Nve());I.register(Ive());I.register(Ove());I.register(Dve());I.register(Lve());I.register(Mve());I.register(Pve());I.register($ve());I.register(Fve());I.register(jve());I.register(zve());I.register(Uve());I.register(Bve());I.register(Hve());I.register(Vve());I.register(qve());I.register(Gve());I.register(Wve());I.register(Kve());I.register(Yve());I.register(Zve());I.register(Xve());I.register(Qve());I.register(Nh());I.register(Jve());I.register(eSe());I.register(tSe());I.register(nSe());I.register(rSe());I.register(aSe());I.register(oSe());I.register(iSe());I.register(sSe());I.register(lSe());I.register(cSe());I.register(uSe());I.register(dSe());I.register(fSe());I.register(pSe());I.register(gSe());I.register(mSe());I.register(hSe());I.register(bSe());I.register(ySe());I.register(vSe());I.register(SSe());I.register(wSe());I.register(ESe());I.register(xSe());I.register(kSe());I.register(CSe());I.register(_Se());I.register(ASe());I.register(TSe());I.register(Th());I.register(RSe());I.register(NSe());I.register(ISe());I.register(OSe());I.register(LA());I.register(DSe());I.register(LSe());I.register(MSe());I.register(PSe());I.register($Se());I.register(FSe());I.register(jSe());I.register(zSe());I.register(USe());I.register(BSe());I.register(HSe());I.register(VSe());I.register(TA());I.register(qSe());I.register(GSe());I.register(WSe());I.register(KSe());I.register(YSe());I.register(ZSe());I.register(MA());I.register(XSe());I.register(QSe());I.register(JSe());I.register(ewe());I.register(twe());I.register(nwe());I.register(rwe());I.register(awe());I.register(lz());I.register(owe());I.register(OA());I.register(iwe());I.register(swe());I.register(lwe());I.register(cwe());I.register(uwe());I.register(dwe());I.register(cz());I.register(fwe());I.register(pwe());I.register(gwe());I.register(mwe());I.register(hwe());I.register(bwe());I.register(ywe());I.register(vwe());I.register(Swe());I.register(wwe());I.register(Ewe());I.register(xwe());I.register(kwe());I.register(Cwe());I.register(_we());I.register(uz());I.register(Awe());I.register(Twe());const Nwe=Tc(Rwe);var dz=_fe(Nwe,Ghe);dz.supportedLanguages=Afe;const Iwe=dz;var fz={},pz={exports:{}};(function(e){function t(n){return n&&n.__esModule?n:{default:n}}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports})(pz);var Owe=pz.exports,CE={},p5;function Dwe(){return p5||(p5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{color:"black",background:"none",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",fontSize:"1em",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",maxHeight:"inherit",height:"inherit",padding:"0 1em",display:"block",overflow:"auto"},'pre[class*="language-"]':{color:"black",background:"none",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",fontSize:"1em",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",position:"relative",margin:".5em 0",overflow:"visible",padding:"1px",backgroundColor:"#fdfdfd",WebkitBoxSizing:"border-box",MozBoxSizing:"border-box",boxSizing:"border-box",marginBottom:"1em"},'pre[class*="language-"] > code':{position:"relative",zIndex:"1",borderLeft:"10px solid #358ccb",boxShadow:"-1px 0px 0px 0px #358ccb, 0px 0px 0px 1px #dfdfdf",backgroundColor:"#fdfdfd",backgroundImage:"linear-gradient(transparent 50%, rgba(69, 142, 209, 0.04) 50%)",backgroundSize:"3em 3em",backgroundOrigin:"content-box",backgroundAttachment:"local"},':not(pre) > code[class*="language-"]':{backgroundColor:"#fdfdfd",WebkitBoxSizing:"border-box",MozBoxSizing:"border-box",boxSizing:"border-box",marginBottom:"1em",position:"relative",padding:".2em",borderRadius:"0.3em",color:"#c92c2c",border:"1px solid rgba(0, 0, 0, 0.1)",display:"inline",whiteSpace:"normal"},'pre[class*="language-"]:before':{content:"''",display:"block",position:"absolute",bottom:"0.75em",left:"0.18em",width:"40%",height:"20%",maxHeight:"13em",boxShadow:"0px 13px 8px #979797",WebkitTransform:"rotate(-2deg)",MozTransform:"rotate(-2deg)",msTransform:"rotate(-2deg)",OTransform:"rotate(-2deg)",transform:"rotate(-2deg)"},'pre[class*="language-"]:after':{content:"''",display:"block",position:"absolute",bottom:"0.75em",left:"auto",width:"40%",height:"20%",maxHeight:"13em",boxShadow:"0px 13px 8px #979797",WebkitTransform:"rotate(2deg)",MozTransform:"rotate(2deg)",msTransform:"rotate(2deg)",OTransform:"rotate(2deg)",transform:"rotate(2deg)",right:"0.75em"},comment:{color:"#7D8B99"},"block-comment":{color:"#7D8B99"},prolog:{color:"#7D8B99"},doctype:{color:"#7D8B99"},cdata:{color:"#7D8B99"},punctuation:{color:"#5F6364"},property:{color:"#c92c2c"},tag:{color:"#c92c2c"},boolean:{color:"#c92c2c"},number:{color:"#c92c2c"},"function-name":{color:"#c92c2c"},constant:{color:"#c92c2c"},symbol:{color:"#c92c2c"},deleted:{color:"#c92c2c"},selector:{color:"#2f9c0a"},"attr-name":{color:"#2f9c0a"},string:{color:"#2f9c0a"},char:{color:"#2f9c0a"},function:{color:"#2f9c0a"},builtin:{color:"#2f9c0a"},inserted:{color:"#2f9c0a"},operator:{color:"#a67f59",background:"rgba(255, 255, 255, 0.5)"},entity:{color:"#a67f59",background:"rgba(255, 255, 255, 0.5)",cursor:"help"},url:{color:"#a67f59",background:"rgba(255, 255, 255, 0.5)"},variable:{color:"#a67f59",background:"rgba(255, 255, 255, 0.5)"},atrule:{color:"#1990b8"},"attr-value":{color:"#1990b8"},keyword:{color:"#1990b8"},"class-name":{color:"#1990b8"},regex:{color:"#e90"},important:{color:"#e90",fontWeight:"normal"},".language-css .token.string":{color:"#a67f59",background:"rgba(255, 255, 255, 0.5)"},".style .token.string":{color:"#a67f59",background:"rgba(255, 255, 255, 0.5)"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},namespace:{Opacity:".7"},'pre[class*="language-"].line-numbers.line-numbers':{paddingLeft:"0"},'pre[class*="language-"].line-numbers.line-numbers code':{paddingLeft:"3.8em"},'pre[class*="language-"].line-numbers.line-numbers .line-numbers-rows':{left:"0"},'pre[class*="language-"][data-line]':{paddingTop:"0",paddingBottom:"0",paddingLeft:"0"},"pre[data-line] code":{position:"relative",paddingLeft:"4em"},"pre .line-highlight":{marginTop:"0"}};e.default=t}(CE)),CE}var _E={},g5;function Lwe(){return g5||(g5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{color:"white",background:"none",textShadow:"0 -.1em .2em black",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",fontSize:"1em",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"white",background:"hsl(30, 20%, 25%)",textShadow:"0 -.1em .2em black",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",fontSize:"1em",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:".5em 0",overflow:"auto",border:".3em solid hsl(30, 20%, 40%)",borderRadius:".5em",boxShadow:"1px 1px .5em black inset"},':not(pre) > code[class*="language-"]':{background:"hsl(30, 20%, 25%)",padding:".15em .2em .05em",borderRadius:".3em",border:".13em solid hsl(30, 20%, 40%)",boxShadow:"1px 1px .3em -.1em black inset",whiteSpace:"normal"},comment:{color:"hsl(30, 20%, 50%)"},prolog:{color:"hsl(30, 20%, 50%)"},doctype:{color:"hsl(30, 20%, 50%)"},cdata:{color:"hsl(30, 20%, 50%)"},punctuation:{Opacity:".7"},namespace:{Opacity:".7"},property:{color:"hsl(350, 40%, 70%)"},tag:{color:"hsl(350, 40%, 70%)"},boolean:{color:"hsl(350, 40%, 70%)"},number:{color:"hsl(350, 40%, 70%)"},constant:{color:"hsl(350, 40%, 70%)"},symbol:{color:"hsl(350, 40%, 70%)"},selector:{color:"hsl(75, 70%, 60%)"},"attr-name":{color:"hsl(75, 70%, 60%)"},string:{color:"hsl(75, 70%, 60%)"},char:{color:"hsl(75, 70%, 60%)"},builtin:{color:"hsl(75, 70%, 60%)"},inserted:{color:"hsl(75, 70%, 60%)"},operator:{color:"hsl(40, 90%, 60%)"},entity:{color:"hsl(40, 90%, 60%)",cursor:"help"},url:{color:"hsl(40, 90%, 60%)"},".language-css .token.string":{color:"hsl(40, 90%, 60%)"},".style .token.string":{color:"hsl(40, 90%, 60%)"},variable:{color:"hsl(40, 90%, 60%)"},atrule:{color:"hsl(350, 40%, 70%)"},"attr-value":{color:"hsl(350, 40%, 70%)"},keyword:{color:"hsl(350, 40%, 70%)"},regex:{color:"#e90"},important:{color:"#e90",fontWeight:"bold"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},deleted:{color:"red"}};e.default=t}(_E)),_E}var AE={},m5;function Mwe(){return m5||(m5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",fontSize:"1em",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"black",color:"white",boxShadow:"-.3em 0 0 .3em black, .3em 0 0 .3em black"},'pre[class*="language-"]':{fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",fontSize:"1em",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:".4em .8em",margin:".5em 0",overflow:"auto",background:`url('data:image/svg+xml;charset=utf-8,%0D%0A%0D%0A%0D%0A<%2Fsvg>')`,backgroundSize:"1em 1em"},':not(pre) > code[class*="language-"]':{padding:".2em",borderRadius:".3em",boxShadow:"none",whiteSpace:"normal"},comment:{color:"#aaa"},prolog:{color:"#aaa"},doctype:{color:"#aaa"},cdata:{color:"#aaa"},punctuation:{color:"#999"},namespace:{Opacity:".7"},property:{color:"#0cf"},tag:{color:"#0cf"},boolean:{color:"#0cf"},number:{color:"#0cf"},constant:{color:"#0cf"},symbol:{color:"#0cf"},selector:{color:"yellow"},"attr-name":{color:"yellow"},string:{color:"yellow"},char:{color:"yellow"},builtin:{color:"yellow"},operator:{color:"yellowgreen"},entity:{color:"yellowgreen",cursor:"help"},url:{color:"yellowgreen"},".language-css .token.string":{color:"yellowgreen"},variable:{color:"yellowgreen"},inserted:{color:"yellowgreen"},atrule:{color:"deeppink"},"attr-value":{color:"deeppink"},keyword:{color:"deeppink"},regex:{color:"orange"},important:{color:"orange",fontWeight:"bold"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},deleted:{color:"red"},"pre.diff-highlight.diff-highlight > code .token.deleted:not(.prefix)":{backgroundColor:"rgba(255, 0, 0, .3)",display:"inline"},"pre > code.diff-highlight.diff-highlight .token.deleted:not(.prefix)":{backgroundColor:"rgba(255, 0, 0, .3)",display:"inline"},"pre.diff-highlight.diff-highlight > code .token.inserted:not(.prefix)":{backgroundColor:"rgba(0, 255, 128, .3)",display:"inline"},"pre > code.diff-highlight.diff-highlight .token.inserted:not(.prefix)":{backgroundColor:"rgba(0, 255, 128, .3)",display:"inline"}};e.default=t}(AE)),AE}var TE={},h5;function Pwe(){return h5||(h5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{color:"#f8f8f2",background:"none",textShadow:"0 1px rgba(0, 0, 0, 0.3)",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",fontSize:"1em",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"#f8f8f2",background:"#272822",textShadow:"0 1px rgba(0, 0, 0, 0.3)",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",fontSize:"1em",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:".5em 0",overflow:"auto",borderRadius:"0.3em"},':not(pre) > code[class*="language-"]':{background:"#272822",padding:".1em",borderRadius:".3em",whiteSpace:"normal"},comment:{color:"#8292a2"},prolog:{color:"#8292a2"},doctype:{color:"#8292a2"},cdata:{color:"#8292a2"},punctuation:{color:"#f8f8f2"},namespace:{Opacity:".7"},property:{color:"#f92672"},tag:{color:"#f92672"},constant:{color:"#f92672"},symbol:{color:"#f92672"},deleted:{color:"#f92672"},boolean:{color:"#ae81ff"},number:{color:"#ae81ff"},selector:{color:"#a6e22e"},"attr-name":{color:"#a6e22e"},string:{color:"#a6e22e"},char:{color:"#a6e22e"},builtin:{color:"#a6e22e"},inserted:{color:"#a6e22e"},operator:{color:"#f8f8f2"},entity:{color:"#f8f8f2",cursor:"help"},url:{color:"#f8f8f2"},".language-css .token.string":{color:"#f8f8f2"},".style .token.string":{color:"#f8f8f2"},variable:{color:"#f8f8f2"},atrule:{color:"#e6db74"},"attr-value":{color:"#e6db74"},function:{color:"#e6db74"},"class-name":{color:"#e6db74"},keyword:{color:"#66d9ef"},regex:{color:"#fd971f"},important:{color:"#fd971f",fontWeight:"bold"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"}};e.default=t}(TE)),TE}var RE={},b5;function $we(){return b5||(b5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{color:"#657b83",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",fontSize:"1em",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"#657b83",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",fontSize:"1em",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:".5em 0",overflow:"auto",borderRadius:"0.3em",backgroundColor:"#fdf6e3"},'pre[class*="language-"]::-moz-selection':{background:"#073642"},'pre[class*="language-"] ::-moz-selection':{background:"#073642"},'code[class*="language-"]::-moz-selection':{background:"#073642"},'code[class*="language-"] ::-moz-selection':{background:"#073642"},'pre[class*="language-"]::selection':{background:"#073642"},'pre[class*="language-"] ::selection':{background:"#073642"},'code[class*="language-"]::selection':{background:"#073642"},'code[class*="language-"] ::selection':{background:"#073642"},':not(pre) > code[class*="language-"]':{backgroundColor:"#fdf6e3",padding:".1em",borderRadius:".3em"},comment:{color:"#93a1a1"},prolog:{color:"#93a1a1"},doctype:{color:"#93a1a1"},cdata:{color:"#93a1a1"},punctuation:{color:"#586e75"},namespace:{Opacity:".7"},property:{color:"#268bd2"},tag:{color:"#268bd2"},boolean:{color:"#268bd2"},number:{color:"#268bd2"},constant:{color:"#268bd2"},symbol:{color:"#268bd2"},deleted:{color:"#268bd2"},selector:{color:"#2aa198"},"attr-name":{color:"#2aa198"},string:{color:"#2aa198"},char:{color:"#2aa198"},builtin:{color:"#2aa198"},url:{color:"#2aa198"},inserted:{color:"#2aa198"},entity:{color:"#657b83",background:"#eee8d5",cursor:"help"},atrule:{color:"#859900"},"attr-value":{color:"#859900"},keyword:{color:"#859900"},function:{color:"#b58900"},"class-name":{color:"#b58900"},regex:{color:"#cb4b16"},important:{color:"#cb4b16",fontWeight:"bold"},variable:{color:"#cb4b16"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"}};e.default=t}(RE)),RE}var NE={},y5;function Fwe(){return y5||(y5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{color:"#ccc",background:"none",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",fontSize:"1em",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"#ccc",background:"#2d2d2d",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",fontSize:"1em",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:".5em 0",overflow:"auto"},':not(pre) > code[class*="language-"]':{background:"#2d2d2d",padding:".1em",borderRadius:".3em",whiteSpace:"normal"},comment:{color:"#999"},"block-comment":{color:"#999"},prolog:{color:"#999"},doctype:{color:"#999"},cdata:{color:"#999"},punctuation:{color:"#ccc"},tag:{color:"#e2777a"},"attr-name":{color:"#e2777a"},namespace:{color:"#e2777a"},deleted:{color:"#e2777a"},"function-name":{color:"#6196cc"},boolean:{color:"#f08d49"},number:{color:"#f08d49"},function:{color:"#f08d49"},property:{color:"#f8c555"},"class-name":{color:"#f8c555"},constant:{color:"#f8c555"},symbol:{color:"#f8c555"},selector:{color:"#cc99cd"},important:{color:"#cc99cd",fontWeight:"bold"},atrule:{color:"#cc99cd"},keyword:{color:"#cc99cd"},builtin:{color:"#cc99cd"},string:{color:"#7ec699"},char:{color:"#7ec699"},"attr-value":{color:"#7ec699"},regex:{color:"#7ec699"},variable:{color:"#7ec699"},operator:{color:"#67cdcc"},entity:{color:"#67cdcc",cursor:"help"},url:{color:"#67cdcc"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},inserted:{color:"green"}};e.default=t}(NE)),NE}var IE={},v5;function jwe(){return v5||(v5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{color:"white",background:"none",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",fontSize:"1em",textAlign:"left",textShadow:"0 -.1em .2em black",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"white",background:"hsl(0, 0%, 8%)",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",fontSize:"1em",textAlign:"left",textShadow:"0 -.1em .2em black",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",borderRadius:".5em",border:".3em solid hsl(0, 0%, 33%)",boxShadow:"1px 1px .5em black inset",margin:".5em 0",overflow:"auto",padding:"1em"},':not(pre) > code[class*="language-"]':{background:"hsl(0, 0%, 8%)",borderRadius:".3em",border:".13em solid hsl(0, 0%, 33%)",boxShadow:"1px 1px .3em -.1em black inset",padding:".15em .2em .05em",whiteSpace:"normal"},'pre[class*="language-"]::-moz-selection':{background:"hsla(0, 0%, 93%, 0.15)",textShadow:"none"},'pre[class*="language-"]::selection':{background:"hsla(0, 0%, 93%, 0.15)",textShadow:"none"},'pre[class*="language-"] ::-moz-selection':{textShadow:"none",background:"hsla(0, 0%, 93%, 0.15)"},'code[class*="language-"]::-moz-selection':{textShadow:"none",background:"hsla(0, 0%, 93%, 0.15)"},'code[class*="language-"] ::-moz-selection':{textShadow:"none",background:"hsla(0, 0%, 93%, 0.15)"},'pre[class*="language-"] ::selection':{textShadow:"none",background:"hsla(0, 0%, 93%, 0.15)"},'code[class*="language-"]::selection':{textShadow:"none",background:"hsla(0, 0%, 93%, 0.15)"},'code[class*="language-"] ::selection':{textShadow:"none",background:"hsla(0, 0%, 93%, 0.15)"},comment:{color:"hsl(0, 0%, 47%)"},prolog:{color:"hsl(0, 0%, 47%)"},doctype:{color:"hsl(0, 0%, 47%)"},cdata:{color:"hsl(0, 0%, 47%)"},punctuation:{Opacity:".7"},namespace:{Opacity:".7"},tag:{color:"hsl(14, 58%, 55%)"},boolean:{color:"hsl(14, 58%, 55%)"},number:{color:"hsl(14, 58%, 55%)"},deleted:{color:"hsl(14, 58%, 55%)"},keyword:{color:"hsl(53, 89%, 79%)"},property:{color:"hsl(53, 89%, 79%)"},selector:{color:"hsl(53, 89%, 79%)"},constant:{color:"hsl(53, 89%, 79%)"},symbol:{color:"hsl(53, 89%, 79%)"},builtin:{color:"hsl(53, 89%, 79%)"},"attr-name":{color:"hsl(76, 21%, 52%)"},"attr-value":{color:"hsl(76, 21%, 52%)"},string:{color:"hsl(76, 21%, 52%)"},char:{color:"hsl(76, 21%, 52%)"},operator:{color:"hsl(76, 21%, 52%)"},entity:{color:"hsl(76, 21%, 52%)",cursor:"help"},url:{color:"hsl(76, 21%, 52%)"},".language-css .token.string":{color:"hsl(76, 21%, 52%)"},".style .token.string":{color:"hsl(76, 21%, 52%)"},variable:{color:"hsl(76, 21%, 52%)"},inserted:{color:"hsl(76, 21%, 52%)"},atrule:{color:"hsl(218, 22%, 55%)"},regex:{color:"hsl(42, 75%, 65%)"},important:{color:"hsl(42, 75%, 65%)",fontWeight:"bold"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},".language-markup .token.tag":{color:"hsl(33, 33%, 52%)"},".language-markup .token.attr-name":{color:"hsl(33, 33%, 52%)"},".language-markup .token.punctuation":{color:"hsl(33, 33%, 52%)"},"":{position:"relative",zIndex:"1"},".line-highlight.line-highlight":{background:"linear-gradient(to right, hsla(0, 0%, 33%, .1) 70%, hsla(0, 0%, 33%, 0))",borderBottom:"1px dashed hsl(0, 0%, 33%)",borderTop:"1px dashed hsl(0, 0%, 33%)",marginTop:"0.75em",zIndex:"0"},".line-highlight.line-highlight:before":{backgroundColor:"hsl(215, 15%, 59%)",color:"hsl(24, 20%, 95%)"},".line-highlight.line-highlight[data-end]:after":{backgroundColor:"hsl(215, 15%, 59%)",color:"hsl(24, 20%, 95%)"}};e.default=t}(IE)),IE}var OE={},S5;function zwe(){return S5||(S5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{color:"black",background:"none",textShadow:"0 1px white",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",fontSize:"1em",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"black",background:"#f5f2f0",textShadow:"0 1px white",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",fontSize:"1em",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:".5em 0",overflow:"auto"},'pre[class*="language-"]::-moz-selection':{textShadow:"none",background:"#b3d4fc"},'pre[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#b3d4fc"},'code[class*="language-"]::-moz-selection':{textShadow:"none",background:"#b3d4fc"},'code[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#b3d4fc"},'pre[class*="language-"]::selection':{textShadow:"none",background:"#b3d4fc"},'pre[class*="language-"] ::selection':{textShadow:"none",background:"#b3d4fc"},'code[class*="language-"]::selection':{textShadow:"none",background:"#b3d4fc"},'code[class*="language-"] ::selection':{textShadow:"none",background:"#b3d4fc"},':not(pre) > code[class*="language-"]':{background:"#f5f2f0",padding:".1em",borderRadius:".3em",whiteSpace:"normal"},comment:{color:"slategray"},prolog:{color:"slategray"},doctype:{color:"slategray"},cdata:{color:"slategray"},punctuation:{color:"#999"},namespace:{Opacity:".7"},property:{color:"#905"},tag:{color:"#905"},boolean:{color:"#905"},number:{color:"#905"},constant:{color:"#905"},symbol:{color:"#905"},deleted:{color:"#905"},selector:{color:"#690"},"attr-name":{color:"#690"},string:{color:"#690"},char:{color:"#690"},builtin:{color:"#690"},inserted:{color:"#690"},operator:{color:"#9a6e3a",background:"hsla(0, 0%, 100%, .5)"},entity:{color:"#9a6e3a",background:"hsla(0, 0%, 100%, .5)",cursor:"help"},url:{color:"#9a6e3a",background:"hsla(0, 0%, 100%, .5)"},".language-css .token.string":{color:"#9a6e3a",background:"hsla(0, 0%, 100%, .5)"},".style .token.string":{color:"#9a6e3a",background:"hsla(0, 0%, 100%, .5)"},atrule:{color:"#07a"},"attr-value":{color:"#07a"},keyword:{color:"#07a"},function:{color:"#DD4A68"},"class-name":{color:"#DD4A68"},regex:{color:"#e90"},important:{color:"#e90",fontWeight:"bold"},variable:{color:"#e90"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"}};e.default=t}(OE)),OE}var DE={},w5;function Uwe(){return w5||(w5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{color:"#f8f8f2",background:"none",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"#f8f8f2",background:"#2b2b2b",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:"0.5em 0",overflow:"auto",borderRadius:"0.3em"},':not(pre) > code[class*="language-"]':{background:"#2b2b2b",padding:"0.1em",borderRadius:"0.3em",whiteSpace:"normal"},comment:{color:"#d4d0ab"},prolog:{color:"#d4d0ab"},doctype:{color:"#d4d0ab"},cdata:{color:"#d4d0ab"},punctuation:{color:"#fefefe"},property:{color:"#ffa07a"},tag:{color:"#ffa07a"},constant:{color:"#ffa07a"},symbol:{color:"#ffa07a"},deleted:{color:"#ffa07a"},boolean:{color:"#00e0e0"},number:{color:"#00e0e0"},selector:{color:"#abe338"},"attr-name":{color:"#abe338"},string:{color:"#abe338"},char:{color:"#abe338"},builtin:{color:"#abe338"},inserted:{color:"#abe338"},operator:{color:"#00e0e0"},entity:{color:"#00e0e0",cursor:"help"},url:{color:"#00e0e0"},".language-css .token.string":{color:"#00e0e0"},".style .token.string":{color:"#00e0e0"},variable:{color:"#00e0e0"},atrule:{color:"#ffd700"},"attr-value":{color:"#ffd700"},function:{color:"#ffd700"},keyword:{color:"#00e0e0"},regex:{color:"#ffd700"},important:{color:"#ffd700",fontWeight:"bold"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"}};e.default=t}(DE)),DE}var LE={},E5;function Bwe(){return E5||(E5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{color:"#c5c8c6",textShadow:"0 1px rgba(0, 0, 0, 0.3)",fontFamily:"Inconsolata, Monaco, Consolas, 'Courier New', Courier, monospace",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"#c5c8c6",textShadow:"0 1px rgba(0, 0, 0, 0.3)",fontFamily:"Inconsolata, Monaco, Consolas, 'Courier New', Courier, monospace",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:".5em 0",overflow:"auto",borderRadius:"0.3em",background:"#1d1f21"},':not(pre) > code[class*="language-"]':{background:"#1d1f21",padding:".1em",borderRadius:".3em"},comment:{color:"#7C7C7C"},prolog:{color:"#7C7C7C"},doctype:{color:"#7C7C7C"},cdata:{color:"#7C7C7C"},punctuation:{color:"#c5c8c6"},".namespace":{Opacity:".7"},property:{color:"#96CBFE"},keyword:{color:"#96CBFE"},tag:{color:"#96CBFE"},"class-name":{color:"#FFFFB6",textDecoration:"underline"},boolean:{color:"#99CC99"},constant:{color:"#99CC99"},symbol:{color:"#f92672"},deleted:{color:"#f92672"},number:{color:"#FF73FD"},selector:{color:"#A8FF60"},"attr-name":{color:"#A8FF60"},string:{color:"#A8FF60"},char:{color:"#A8FF60"},builtin:{color:"#A8FF60"},inserted:{color:"#A8FF60"},variable:{color:"#C6C5FE"},operator:{color:"#EDEDED"},entity:{color:"#FFFFB6",cursor:"help"},url:{color:"#96CBFE"},".language-css .token.string":{color:"#87C38A"},".style .token.string":{color:"#87C38A"},atrule:{color:"#F9EE98"},"attr-value":{color:"#F9EE98"},function:{color:"#DAD085"},regex:{color:"#E9C062"},important:{color:"#fd971f",fontWeight:"bold"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"}};e.default=t}(LE)),LE}var ME={},x5;function Hwe(){return x5||(x5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#f5f7ff",color:"#5e6687"},'pre[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#f5f7ff",color:"#5e6687",padding:"1em",margin:".5em 0",overflow:"auto"},'pre > code[class*="language-"]':{fontSize:"1em"},'pre[class*="language-"]::-moz-selection':{textShadow:"none",background:"#dfe2f1"},'pre[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#dfe2f1"},'code[class*="language-"]::-moz-selection':{textShadow:"none",background:"#dfe2f1"},'code[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#dfe2f1"},'pre[class*="language-"]::selection':{textShadow:"none",background:"#dfe2f1"},'pre[class*="language-"] ::selection':{textShadow:"none",background:"#dfe2f1"},'code[class*="language-"]::selection':{textShadow:"none",background:"#dfe2f1"},'code[class*="language-"] ::selection':{textShadow:"none",background:"#dfe2f1"},':not(pre) > code[class*="language-"]':{padding:".1em",borderRadius:".3em"},comment:{color:"#898ea4"},prolog:{color:"#898ea4"},doctype:{color:"#898ea4"},cdata:{color:"#898ea4"},punctuation:{color:"#5e6687"},namespace:{Opacity:".7"},operator:{color:"#c76b29"},boolean:{color:"#c76b29"},number:{color:"#c76b29"},property:{color:"#c08b30"},tag:{color:"#3d8fd1"},string:{color:"#22a2c9"},selector:{color:"#6679cc"},"attr-name":{color:"#c76b29"},entity:{color:"#22a2c9",cursor:"help"},url:{color:"#22a2c9"},".language-css .token.string":{color:"#22a2c9"},".style .token.string":{color:"#22a2c9"},"attr-value":{color:"#ac9739"},keyword:{color:"#ac9739"},control:{color:"#ac9739"},directive:{color:"#ac9739"},unit:{color:"#ac9739"},statement:{color:"#22a2c9"},regex:{color:"#22a2c9"},atrule:{color:"#22a2c9"},placeholder:{color:"#3d8fd1"},variable:{color:"#3d8fd1"},deleted:{textDecoration:"line-through"},inserted:{borderBottom:"1px dotted #202746",textDecoration:"none"},italic:{fontStyle:"italic"},important:{fontWeight:"bold",color:"#c94922"},bold:{fontWeight:"bold"},"pre > code.highlight":{Outline:"0.4em solid #c94922",OutlineOffset:".4em"},".line-numbers.line-numbers .line-numbers-rows":{borderRightColor:"#dfe2f1"},".line-numbers .line-numbers-rows > span:before":{color:"#979db4"},".line-highlight.line-highlight":{background:"linear-gradient(to right, rgba(107, 115, 148, 0.2) 70%, rgba(107, 115, 148, 0))"}};e.default=t}(ME)),ME}var PE={},k5;function Vwe(){return k5||(k5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{color:"#fff",textShadow:"0 1px 1px #000",fontFamily:'Menlo, Monaco, "Courier New", monospace',direction:"ltr",textAlign:"left",wordSpacing:"normal",whiteSpace:"pre",wordWrap:"normal",lineHeight:"1.4",background:"none",border:"0",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"#fff",textShadow:"0 1px 1px #000",fontFamily:'Menlo, Monaco, "Courier New", monospace',direction:"ltr",textAlign:"left",wordSpacing:"normal",whiteSpace:"pre",wordWrap:"normal",lineHeight:"1.4",background:"#222",border:"0",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"15px",margin:"1em 0",overflow:"auto",MozBorderRadius:"8px",WebkitBorderRadius:"8px",borderRadius:"8px"},'pre[class*="language-"] code':{float:"left",padding:"0 15px 0 0"},':not(pre) > code[class*="language-"]':{background:"#222",padding:"5px 10px",lineHeight:"1",MozBorderRadius:"3px",WebkitBorderRadius:"3px",borderRadius:"3px"},comment:{color:"#797979"},prolog:{color:"#797979"},doctype:{color:"#797979"},cdata:{color:"#797979"},selector:{color:"#fff"},operator:{color:"#fff"},punctuation:{color:"#fff"},namespace:{Opacity:".7"},tag:{color:"#ffd893"},boolean:{color:"#ffd893"},atrule:{color:"#B0C975"},"attr-value":{color:"#B0C975"},hex:{color:"#B0C975"},string:{color:"#B0C975"},property:{color:"#c27628"},entity:{color:"#c27628",cursor:"help"},url:{color:"#c27628"},"attr-name":{color:"#c27628"},keyword:{color:"#c27628"},regex:{color:"#9B71C6"},function:{color:"#e5a638"},constant:{color:"#e5a638"},variable:{color:"#fdfba8"},number:{color:"#8799B0"},important:{color:"#E45734"},deliminator:{color:"#E45734"},".line-highlight.line-highlight":{background:"rgba(255, 255, 255, .2)"},".line-highlight.line-highlight:before":{top:".3em",backgroundColor:"rgba(255, 255, 255, .3)",color:"#fff",MozBorderRadius:"8px",WebkitBorderRadius:"8px",borderRadius:"8px"},".line-highlight.line-highlight[data-end]:after":{top:".3em",backgroundColor:"rgba(255, 255, 255, .3)",color:"#fff",MozBorderRadius:"8px",WebkitBorderRadius:"8px",borderRadius:"8px"},".line-numbers .line-numbers-rows > span":{borderRight:"3px #d9d336 solid"}};e.default=t}(PE)),PE}var $E={},C5;function qwe(){return C5||(C5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{color:"#111b27",background:"none",fontFamily:'Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace',textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"#111b27",background:"#e3eaf2",fontFamily:'Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace',textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:"0.5em 0",overflow:"auto"},'pre[class*="language-"]::-moz-selection':{background:"#8da1b9"},'pre[class*="language-"] ::-moz-selection':{background:"#8da1b9"},'code[class*="language-"]::-moz-selection':{background:"#8da1b9"},'code[class*="language-"] ::-moz-selection':{background:"#8da1b9"},'pre[class*="language-"]::selection':{background:"#8da1b9"},'pre[class*="language-"] ::selection':{background:"#8da1b9"},'code[class*="language-"]::selection':{background:"#8da1b9"},'code[class*="language-"] ::selection':{background:"#8da1b9"},':not(pre) > code[class*="language-"]':{background:"#e3eaf2",padding:"0.1em 0.3em",borderRadius:"0.3em",whiteSpace:"normal"},comment:{color:"#3c526d"},prolog:{color:"#3c526d"},doctype:{color:"#3c526d"},cdata:{color:"#3c526d"},punctuation:{color:"#111b27"},"delimiter.important":{color:"#006d6d",fontWeight:"inherit"},"selector.parent":{color:"#006d6d"},tag:{color:"#006d6d"},"tag.punctuation":{color:"#006d6d"},"attr-name":{color:"#755f00"},boolean:{color:"#755f00"},"boolean.important":{color:"#755f00"},number:{color:"#755f00"},constant:{color:"#755f00"},"selector.attribute":{color:"#755f00"},"class-name":{color:"#005a8e"},key:{color:"#005a8e"},parameter:{color:"#005a8e"},property:{color:"#005a8e"},"property-access":{color:"#005a8e"},variable:{color:"#005a8e"},"attr-value":{color:"#116b00"},inserted:{color:"#116b00"},color:{color:"#116b00"},"selector.value":{color:"#116b00"},string:{color:"#116b00"},"string.url-link":{color:"#116b00"},builtin:{color:"#af00af"},"keyword-array":{color:"#af00af"},package:{color:"#af00af"},regex:{color:"#af00af"},function:{color:"#7c00aa"},"selector.class":{color:"#7c00aa"},"selector.id":{color:"#7c00aa"},"atrule.rule":{color:"#a04900"},combinator:{color:"#a04900"},keyword:{color:"#a04900"},operator:{color:"#a04900"},"pseudo-class":{color:"#a04900"},"pseudo-element":{color:"#a04900"},selector:{color:"#a04900"},unit:{color:"#a04900"},deleted:{color:"#c22f2e"},important:{color:"#c22f2e",fontWeight:"bold"},"keyword-this":{color:"#005a8e",fontWeight:"bold"},this:{color:"#005a8e",fontWeight:"bold"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},entity:{cursor:"help"},".language-markdown .token.title":{color:"#005a8e",fontWeight:"bold"},".language-markdown .token.title .token.punctuation":{color:"#005a8e",fontWeight:"bold"},".language-markdown .token.blockquote.punctuation":{color:"#af00af"},".language-markdown .token.code":{color:"#006d6d"},".language-markdown .token.hr.punctuation":{color:"#005a8e"},".language-markdown .token.url > .token.content":{color:"#116b00"},".language-markdown .token.url-link":{color:"#755f00"},".language-markdown .token.list.punctuation":{color:"#af00af"},".language-markdown .token.table-header":{color:"#111b27"},".language-json .token.operator":{color:"#111b27"},".language-scss .token.variable":{color:"#006d6d"},"token.tab:not(:empty):before":{color:"#3c526d"},"token.cr:before":{color:"#3c526d"},"token.lf:before":{color:"#3c526d"},"token.space:before":{color:"#3c526d"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a":{color:"#e3eaf2",background:"#005a8e"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button":{color:"#e3eaf2",background:"#005a8e"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:hover":{color:"#e3eaf2",background:"#005a8eda",textDecoration:"none"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:focus":{color:"#e3eaf2",background:"#005a8eda",textDecoration:"none"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:hover":{color:"#e3eaf2",background:"#005a8eda",textDecoration:"none"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:focus":{color:"#e3eaf2",background:"#005a8eda",textDecoration:"none"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span":{color:"#e3eaf2",background:"#3c526d"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:hover":{color:"#e3eaf2",background:"#3c526d"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:focus":{color:"#e3eaf2",background:"#3c526d"},".line-highlight.line-highlight":{background:"linear-gradient(to right, #8da1b92f 70%, #8da1b925)"},".line-highlight.line-highlight:before":{backgroundColor:"#3c526d",color:"#e3eaf2",boxShadow:"0 1px #8da1b9"},".line-highlight.line-highlight[data-end]:after":{backgroundColor:"#3c526d",color:"#e3eaf2",boxShadow:"0 1px #8da1b9"},"pre[id].linkable-line-numbers.linkable-line-numbers span.line-numbers-rows > span:hover:before":{backgroundColor:"#3c526d1f"},".line-numbers.line-numbers .line-numbers-rows":{borderRight:"1px solid #8da1b97a",background:"#d0dae77a"},".line-numbers .line-numbers-rows > span:before":{color:"#3c526dda"},".rainbow-braces .token.token.punctuation.brace-level-1":{color:"#755f00"},".rainbow-braces .token.token.punctuation.brace-level-5":{color:"#755f00"},".rainbow-braces .token.token.punctuation.brace-level-9":{color:"#755f00"},".rainbow-braces .token.token.punctuation.brace-level-2":{color:"#af00af"},".rainbow-braces .token.token.punctuation.brace-level-6":{color:"#af00af"},".rainbow-braces .token.token.punctuation.brace-level-10":{color:"#af00af"},".rainbow-braces .token.token.punctuation.brace-level-3":{color:"#005a8e"},".rainbow-braces .token.token.punctuation.brace-level-7":{color:"#005a8e"},".rainbow-braces .token.token.punctuation.brace-level-11":{color:"#005a8e"},".rainbow-braces .token.token.punctuation.brace-level-4":{color:"#7c00aa"},".rainbow-braces .token.token.punctuation.brace-level-8":{color:"#7c00aa"},".rainbow-braces .token.token.punctuation.brace-level-12":{color:"#7c00aa"},"pre.diff-highlight > code .token.token.deleted:not(.prefix)":{backgroundColor:"#c22f2e1f"},"pre > code.diff-highlight .token.token.deleted:not(.prefix)":{backgroundColor:"#c22f2e1f"},"pre.diff-highlight > code .token.token.inserted:not(.prefix)":{backgroundColor:"#116b001f"},"pre > code.diff-highlight .token.token.inserted:not(.prefix)":{backgroundColor:"#116b001f"},".command-line .command-line-prompt":{borderRight:"1px solid #8da1b97a"},".command-line .command-line-prompt > span:before":{color:"#3c526dda"}};e.default=t}($E)),$E}var FE={},_5;function Gwe(){return _5||(_5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{color:"#e3eaf2",background:"none",fontFamily:'Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace',textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"#e3eaf2",background:"#111b27",fontFamily:'Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace',textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:"0.5em 0",overflow:"auto"},'pre[class*="language-"]::-moz-selection':{background:"#3c526d"},'pre[class*="language-"] ::-moz-selection':{background:"#3c526d"},'code[class*="language-"]::-moz-selection':{background:"#3c526d"},'code[class*="language-"] ::-moz-selection':{background:"#3c526d"},'pre[class*="language-"]::selection':{background:"#3c526d"},'pre[class*="language-"] ::selection':{background:"#3c526d"},'code[class*="language-"]::selection':{background:"#3c526d"},'code[class*="language-"] ::selection':{background:"#3c526d"},':not(pre) > code[class*="language-"]':{background:"#111b27",padding:"0.1em 0.3em",borderRadius:"0.3em",whiteSpace:"normal"},comment:{color:"#8da1b9"},prolog:{color:"#8da1b9"},doctype:{color:"#8da1b9"},cdata:{color:"#8da1b9"},punctuation:{color:"#e3eaf2"},"delimiter.important":{color:"#66cccc",fontWeight:"inherit"},"selector.parent":{color:"#66cccc"},tag:{color:"#66cccc"},"tag.punctuation":{color:"#66cccc"},"attr-name":{color:"#e6d37a"},boolean:{color:"#e6d37a"},"boolean.important":{color:"#e6d37a"},number:{color:"#e6d37a"},constant:{color:"#e6d37a"},"selector.attribute":{color:"#e6d37a"},"class-name":{color:"#6cb8e6"},key:{color:"#6cb8e6"},parameter:{color:"#6cb8e6"},property:{color:"#6cb8e6"},"property-access":{color:"#6cb8e6"},variable:{color:"#6cb8e6"},"attr-value":{color:"#91d076"},inserted:{color:"#91d076"},color:{color:"#91d076"},"selector.value":{color:"#91d076"},string:{color:"#91d076"},"string.url-link":{color:"#91d076"},builtin:{color:"#f4adf4"},"keyword-array":{color:"#f4adf4"},package:{color:"#f4adf4"},regex:{color:"#f4adf4"},function:{color:"#c699e3"},"selector.class":{color:"#c699e3"},"selector.id":{color:"#c699e3"},"atrule.rule":{color:"#e9ae7e"},combinator:{color:"#e9ae7e"},keyword:{color:"#e9ae7e"},operator:{color:"#e9ae7e"},"pseudo-class":{color:"#e9ae7e"},"pseudo-element":{color:"#e9ae7e"},selector:{color:"#e9ae7e"},unit:{color:"#e9ae7e"},deleted:{color:"#cd6660"},important:{color:"#cd6660",fontWeight:"bold"},"keyword-this":{color:"#6cb8e6",fontWeight:"bold"},this:{color:"#6cb8e6",fontWeight:"bold"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},entity:{cursor:"help"},".language-markdown .token.title":{color:"#6cb8e6",fontWeight:"bold"},".language-markdown .token.title .token.punctuation":{color:"#6cb8e6",fontWeight:"bold"},".language-markdown .token.blockquote.punctuation":{color:"#f4adf4"},".language-markdown .token.code":{color:"#66cccc"},".language-markdown .token.hr.punctuation":{color:"#6cb8e6"},".language-markdown .token.url .token.content":{color:"#91d076"},".language-markdown .token.url-link":{color:"#e6d37a"},".language-markdown .token.list.punctuation":{color:"#f4adf4"},".language-markdown .token.table-header":{color:"#e3eaf2"},".language-json .token.operator":{color:"#e3eaf2"},".language-scss .token.variable":{color:"#66cccc"},"token.tab:not(:empty):before":{color:"#8da1b9"},"token.cr:before":{color:"#8da1b9"},"token.lf:before":{color:"#8da1b9"},"token.space:before":{color:"#8da1b9"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a":{color:"#111b27",background:"#6cb8e6"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button":{color:"#111b27",background:"#6cb8e6"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:hover":{color:"#111b27",background:"#6cb8e6da",textDecoration:"none"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:focus":{color:"#111b27",background:"#6cb8e6da",textDecoration:"none"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:hover":{color:"#111b27",background:"#6cb8e6da",textDecoration:"none"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:focus":{color:"#111b27",background:"#6cb8e6da",textDecoration:"none"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span":{color:"#111b27",background:"#8da1b9"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:hover":{color:"#111b27",background:"#8da1b9"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:focus":{color:"#111b27",background:"#8da1b9"},".line-highlight.line-highlight":{background:"linear-gradient(to right, #3c526d5f 70%, #3c526d55)"},".line-highlight.line-highlight:before":{backgroundColor:"#8da1b9",color:"#111b27",boxShadow:"0 1px #3c526d"},".line-highlight.line-highlight[data-end]:after":{backgroundColor:"#8da1b9",color:"#111b27",boxShadow:"0 1px #3c526d"},"pre[id].linkable-line-numbers.linkable-line-numbers span.line-numbers-rows > span:hover:before":{backgroundColor:"#8da1b918"},".line-numbers.line-numbers .line-numbers-rows":{borderRight:"1px solid #0b121b",background:"#0b121b7a"},".line-numbers .line-numbers-rows > span:before":{color:"#8da1b9da"},".rainbow-braces .token.token.punctuation.brace-level-1":{color:"#e6d37a"},".rainbow-braces .token.token.punctuation.brace-level-5":{color:"#e6d37a"},".rainbow-braces .token.token.punctuation.brace-level-9":{color:"#e6d37a"},".rainbow-braces .token.token.punctuation.brace-level-2":{color:"#f4adf4"},".rainbow-braces .token.token.punctuation.brace-level-6":{color:"#f4adf4"},".rainbow-braces .token.token.punctuation.brace-level-10":{color:"#f4adf4"},".rainbow-braces .token.token.punctuation.brace-level-3":{color:"#6cb8e6"},".rainbow-braces .token.token.punctuation.brace-level-7":{color:"#6cb8e6"},".rainbow-braces .token.token.punctuation.brace-level-11":{color:"#6cb8e6"},".rainbow-braces .token.token.punctuation.brace-level-4":{color:"#c699e3"},".rainbow-braces .token.token.punctuation.brace-level-8":{color:"#c699e3"},".rainbow-braces .token.token.punctuation.brace-level-12":{color:"#c699e3"},"pre.diff-highlight > code .token.token.deleted:not(.prefix)":{backgroundColor:"#cd66601f"},"pre > code.diff-highlight .token.token.deleted:not(.prefix)":{backgroundColor:"#cd66601f"},"pre.diff-highlight > code .token.token.inserted:not(.prefix)":{backgroundColor:"#91d0761f"},"pre > code.diff-highlight .token.token.inserted:not(.prefix)":{backgroundColor:"#91d0761f"},".command-line .command-line-prompt":{borderRight:"1px solid #0b121b"},".command-line .command-line-prompt > span:before":{color:"#8da1b9da"}};e.default=t}(FE)),FE}var jE={},A5;function Wwe(){return A5||(A5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{color:"black",background:"none",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",fontSize:"1em",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"black",background:"none",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",fontSize:"1em",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",position:"relative",borderLeft:"10px solid #358ccb",boxShadow:"-1px 0 0 0 #358ccb, 0 0 0 1px #dfdfdf",backgroundColor:"#fdfdfd",backgroundImage:"linear-gradient(transparent 50%, rgba(69, 142, 209, 0.04) 50%)",backgroundSize:"3em 3em",backgroundOrigin:"content-box",backgroundAttachment:"local",margin:".5em 0",padding:"0 1em"},'pre[class*="language-"] > code':{display:"block"},':not(pre) > code[class*="language-"]':{position:"relative",padding:".2em",borderRadius:"0.3em",color:"#c92c2c",border:"1px solid rgba(0, 0, 0, 0.1)",display:"inline",whiteSpace:"normal",backgroundColor:"#fdfdfd",WebkitBoxSizing:"border-box",MozBoxSizing:"border-box",boxSizing:"border-box"},comment:{color:"#7D8B99"},"block-comment":{color:"#7D8B99"},prolog:{color:"#7D8B99"},doctype:{color:"#7D8B99"},cdata:{color:"#7D8B99"},punctuation:{color:"#5F6364"},property:{color:"#c92c2c"},tag:{color:"#c92c2c"},boolean:{color:"#c92c2c"},number:{color:"#c92c2c"},"function-name":{color:"#c92c2c"},constant:{color:"#c92c2c"},symbol:{color:"#c92c2c"},deleted:{color:"#c92c2c"},selector:{color:"#2f9c0a"},"attr-name":{color:"#2f9c0a"},string:{color:"#2f9c0a"},char:{color:"#2f9c0a"},function:{color:"#2f9c0a"},builtin:{color:"#2f9c0a"},inserted:{color:"#2f9c0a"},operator:{color:"#a67f59",background:"rgba(255, 255, 255, 0.5)"},entity:{color:"#a67f59",background:"rgba(255, 255, 255, 0.5)",cursor:"help"},url:{color:"#a67f59",background:"rgba(255, 255, 255, 0.5)"},variable:{color:"#a67f59",background:"rgba(255, 255, 255, 0.5)"},atrule:{color:"#1990b8"},"attr-value":{color:"#1990b8"},keyword:{color:"#1990b8"},"class-name":{color:"#1990b8"},regex:{color:"#e90"},important:{color:"#e90",fontWeight:"normal"},".language-css .token.string":{color:"#a67f59",background:"rgba(255, 255, 255, 0.5)"},".style .token.string":{color:"#a67f59",background:"rgba(255, 255, 255, 0.5)"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},namespace:{Opacity:".7"}};e.default=t}(jE)),jE}var zE={},T5;function Kwe(){return T5||(T5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{color:"#a9b7c6",fontFamily:"Consolas, Monaco, 'Andale Mono', monospace",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"#a9b7c6",fontFamily:"Consolas, Monaco, 'Andale Mono', monospace",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:".5em 0",overflow:"auto",background:"#2b2b2b"},'pre[class*="language-"]::-moz-selection':{color:"inherit",background:"rgba(33, 66, 131, .85)"},'pre[class*="language-"] ::-moz-selection':{color:"inherit",background:"rgba(33, 66, 131, .85)"},'code[class*="language-"]::-moz-selection':{color:"inherit",background:"rgba(33, 66, 131, .85)"},'code[class*="language-"] ::-moz-selection':{color:"inherit",background:"rgba(33, 66, 131, .85)"},'pre[class*="language-"]::selection':{color:"inherit",background:"rgba(33, 66, 131, .85)"},'pre[class*="language-"] ::selection':{color:"inherit",background:"rgba(33, 66, 131, .85)"},'code[class*="language-"]::selection':{color:"inherit",background:"rgba(33, 66, 131, .85)"},'code[class*="language-"] ::selection':{color:"inherit",background:"rgba(33, 66, 131, .85)"},':not(pre) > code[class*="language-"]':{background:"#2b2b2b",padding:".1em",borderRadius:".3em"},comment:{color:"#808080"},prolog:{color:"#808080"},cdata:{color:"#808080"},delimiter:{color:"#cc7832"},boolean:{color:"#cc7832"},keyword:{color:"#cc7832"},selector:{color:"#cc7832"},important:{color:"#cc7832"},atrule:{color:"#cc7832"},operator:{color:"#a9b7c6"},punctuation:{color:"#a9b7c6"},"attr-name":{color:"#a9b7c6"},tag:{color:"#e8bf6a"},"tag.punctuation":{color:"#e8bf6a"},doctype:{color:"#e8bf6a"},builtin:{color:"#e8bf6a"},entity:{color:"#6897bb"},number:{color:"#6897bb"},symbol:{color:"#6897bb"},property:{color:"#9876aa"},constant:{color:"#9876aa"},variable:{color:"#9876aa"},string:{color:"#6a8759"},char:{color:"#6a8759"},"attr-value":{color:"#a5c261"},"attr-value.punctuation":{color:"#a5c261"},"attr-value.punctuation:first-child":{color:"#a9b7c6"},url:{color:"#287bde",textDecoration:"underline"},function:{color:"#ffc66d"},regex:{background:"#364135"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},inserted:{background:"#294436"},deleted:{background:"#484a4a"},"code.language-css .token.property":{color:"#a9b7c6"},"code.language-css .token.property + .token.punctuation":{color:"#a9b7c6"},"code.language-css .token.id":{color:"#ffc66d"},"code.language-css .token.selector > .token.class":{color:"#ffc66d"},"code.language-css .token.selector > .token.attribute":{color:"#ffc66d"},"code.language-css .token.selector > .token.pseudo-class":{color:"#ffc66d"},"code.language-css .token.selector > .token.pseudo-element":{color:"#ffc66d"}};e.default=t}(zE)),zE}var UE={},R5;function Ywe(){return R5||(R5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{color:"#f8f8f2",background:"none",textShadow:"0 1px rgba(0, 0, 0, 0.3)",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"#f8f8f2",background:"#282a36",textShadow:"0 1px rgba(0, 0, 0, 0.3)",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:".5em 0",overflow:"auto",borderRadius:"0.3em"},':not(pre) > code[class*="language-"]':{background:"#282a36",padding:".1em",borderRadius:".3em",whiteSpace:"normal"},comment:{color:"#6272a4"},prolog:{color:"#6272a4"},doctype:{color:"#6272a4"},cdata:{color:"#6272a4"},punctuation:{color:"#f8f8f2"},".namespace":{Opacity:".7"},property:{color:"#ff79c6"},tag:{color:"#ff79c6"},constant:{color:"#ff79c6"},symbol:{color:"#ff79c6"},deleted:{color:"#ff79c6"},boolean:{color:"#bd93f9"},number:{color:"#bd93f9"},selector:{color:"#50fa7b"},"attr-name":{color:"#50fa7b"},string:{color:"#50fa7b"},char:{color:"#50fa7b"},builtin:{color:"#50fa7b"},inserted:{color:"#50fa7b"},operator:{color:"#f8f8f2"},entity:{color:"#f8f8f2",cursor:"help"},url:{color:"#f8f8f2"},".language-css .token.string":{color:"#f8f8f2"},".style .token.string":{color:"#f8f8f2"},variable:{color:"#f8f8f2"},atrule:{color:"#f1fa8c"},"attr-value":{color:"#f1fa8c"},function:{color:"#f1fa8c"},"class-name":{color:"#f1fa8c"},keyword:{color:"#8be9fd"},regex:{color:"#ffb86c"},important:{color:"#ffb86c",fontWeight:"bold"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"}};e.default=t}(UE)),UE}var BE={},N5;function Zwe(){return N5||(N5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#2a2734",color:"#9a86fd"},'pre[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#2a2734",color:"#9a86fd",padding:"1em",margin:".5em 0",overflow:"auto"},'pre > code[class*="language-"]':{fontSize:"1em"},'pre[class*="language-"]::-moz-selection':{textShadow:"none",background:"#6a51e6"},'pre[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#6a51e6"},'code[class*="language-"]::-moz-selection':{textShadow:"none",background:"#6a51e6"},'code[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#6a51e6"},'pre[class*="language-"]::selection':{textShadow:"none",background:"#6a51e6"},'pre[class*="language-"] ::selection':{textShadow:"none",background:"#6a51e6"},'code[class*="language-"]::selection':{textShadow:"none",background:"#6a51e6"},'code[class*="language-"] ::selection':{textShadow:"none",background:"#6a51e6"},':not(pre) > code[class*="language-"]':{padding:".1em",borderRadius:".3em"},comment:{color:"#6c6783"},prolog:{color:"#6c6783"},doctype:{color:"#6c6783"},cdata:{color:"#6c6783"},punctuation:{color:"#6c6783"},namespace:{Opacity:".7"},tag:{color:"#e09142"},operator:{color:"#e09142"},number:{color:"#e09142"},property:{color:"#9a86fd"},function:{color:"#9a86fd"},"tag-id":{color:"#eeebff"},selector:{color:"#eeebff"},"atrule-id":{color:"#eeebff"},"code.language-javascript":{color:"#c4b9fe"},"attr-name":{color:"#c4b9fe"},"code.language-css":{color:"#ffcc99"},"code.language-scss":{color:"#ffcc99"},boolean:{color:"#ffcc99"},string:{color:"#ffcc99"},entity:{color:"#ffcc99",cursor:"help"},url:{color:"#ffcc99"},".language-css .token.string":{color:"#ffcc99"},".language-scss .token.string":{color:"#ffcc99"},".style .token.string":{color:"#ffcc99"},"attr-value":{color:"#ffcc99"},keyword:{color:"#ffcc99"},control:{color:"#ffcc99"},directive:{color:"#ffcc99"},unit:{color:"#ffcc99"},statement:{color:"#ffcc99"},regex:{color:"#ffcc99"},atrule:{color:"#ffcc99"},placeholder:{color:"#ffcc99"},variable:{color:"#ffcc99"},deleted:{textDecoration:"line-through"},inserted:{borderBottom:"1px dotted #eeebff",textDecoration:"none"},italic:{fontStyle:"italic"},important:{fontWeight:"bold",color:"#c4b9fe"},bold:{fontWeight:"bold"},"pre > code.highlight":{Outline:".4em solid #8a75f5",OutlineOffset:".4em"},".line-numbers.line-numbers .line-numbers-rows":{borderRightColor:"#2c2937"},".line-numbers .line-numbers-rows > span:before":{color:"#3c3949"},".line-highlight.line-highlight":{background:"linear-gradient(to right, rgba(224, 145, 66, 0.2) 70%, rgba(224, 145, 66, 0))"}};e.default=t}(BE)),BE}var HE={},I5;function Xwe(){return I5||(I5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#322d29",color:"#88786d"},'pre[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#322d29",color:"#88786d",padding:"1em",margin:".5em 0",overflow:"auto"},'pre > code[class*="language-"]':{fontSize:"1em"},'pre[class*="language-"]::-moz-selection':{textShadow:"none",background:"#6f5849"},'pre[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#6f5849"},'code[class*="language-"]::-moz-selection':{textShadow:"none",background:"#6f5849"},'code[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#6f5849"},'pre[class*="language-"]::selection':{textShadow:"none",background:"#6f5849"},'pre[class*="language-"] ::selection':{textShadow:"none",background:"#6f5849"},'code[class*="language-"]::selection':{textShadow:"none",background:"#6f5849"},'code[class*="language-"] ::selection':{textShadow:"none",background:"#6f5849"},':not(pre) > code[class*="language-"]':{padding:".1em",borderRadius:".3em"},comment:{color:"#6a5f58"},prolog:{color:"#6a5f58"},doctype:{color:"#6a5f58"},cdata:{color:"#6a5f58"},punctuation:{color:"#6a5f58"},namespace:{Opacity:".7"},tag:{color:"#bfa05a"},operator:{color:"#bfa05a"},number:{color:"#bfa05a"},property:{color:"#88786d"},function:{color:"#88786d"},"tag-id":{color:"#fff3eb"},selector:{color:"#fff3eb"},"atrule-id":{color:"#fff3eb"},"code.language-javascript":{color:"#a48774"},"attr-name":{color:"#a48774"},"code.language-css":{color:"#fcc440"},"code.language-scss":{color:"#fcc440"},boolean:{color:"#fcc440"},string:{color:"#fcc440"},entity:{color:"#fcc440",cursor:"help"},url:{color:"#fcc440"},".language-css .token.string":{color:"#fcc440"},".language-scss .token.string":{color:"#fcc440"},".style .token.string":{color:"#fcc440"},"attr-value":{color:"#fcc440"},keyword:{color:"#fcc440"},control:{color:"#fcc440"},directive:{color:"#fcc440"},unit:{color:"#fcc440"},statement:{color:"#fcc440"},regex:{color:"#fcc440"},atrule:{color:"#fcc440"},placeholder:{color:"#fcc440"},variable:{color:"#fcc440"},deleted:{textDecoration:"line-through"},inserted:{borderBottom:"1px dotted #fff3eb",textDecoration:"none"},italic:{fontStyle:"italic"},important:{fontWeight:"bold",color:"#a48774"},bold:{fontWeight:"bold"},"pre > code.highlight":{Outline:".4em solid #816d5f",OutlineOffset:".4em"},".line-numbers.line-numbers .line-numbers-rows":{borderRightColor:"#35302b"},".line-numbers .line-numbers-rows > span:before":{color:"#46403d"},".line-highlight.line-highlight":{background:"linear-gradient(to right, rgba(191, 160, 90, 0.2) 70%, rgba(191, 160, 90, 0))"}};e.default=t}(HE)),HE}var VE={},O5;function Qwe(){return O5||(O5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#2a2d2a",color:"#687d68"},'pre[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#2a2d2a",color:"#687d68",padding:"1em",margin:".5em 0",overflow:"auto"},'pre > code[class*="language-"]':{fontSize:"1em"},'pre[class*="language-"]::-moz-selection':{textShadow:"none",background:"#435643"},'pre[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#435643"},'code[class*="language-"]::-moz-selection':{textShadow:"none",background:"#435643"},'code[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#435643"},'pre[class*="language-"]::selection':{textShadow:"none",background:"#435643"},'pre[class*="language-"] ::selection':{textShadow:"none",background:"#435643"},'code[class*="language-"]::selection':{textShadow:"none",background:"#435643"},'code[class*="language-"] ::selection':{textShadow:"none",background:"#435643"},':not(pre) > code[class*="language-"]':{padding:".1em",borderRadius:".3em"},comment:{color:"#535f53"},prolog:{color:"#535f53"},doctype:{color:"#535f53"},cdata:{color:"#535f53"},punctuation:{color:"#535f53"},namespace:{Opacity:".7"},tag:{color:"#a2b34d"},operator:{color:"#a2b34d"},number:{color:"#a2b34d"},property:{color:"#687d68"},function:{color:"#687d68"},"tag-id":{color:"#f0fff0"},selector:{color:"#f0fff0"},"atrule-id":{color:"#f0fff0"},"code.language-javascript":{color:"#b3d6b3"},"attr-name":{color:"#b3d6b3"},"code.language-css":{color:"#e5fb79"},"code.language-scss":{color:"#e5fb79"},boolean:{color:"#e5fb79"},string:{color:"#e5fb79"},entity:{color:"#e5fb79",cursor:"help"},url:{color:"#e5fb79"},".language-css .token.string":{color:"#e5fb79"},".language-scss .token.string":{color:"#e5fb79"},".style .token.string":{color:"#e5fb79"},"attr-value":{color:"#e5fb79"},keyword:{color:"#e5fb79"},control:{color:"#e5fb79"},directive:{color:"#e5fb79"},unit:{color:"#e5fb79"},statement:{color:"#e5fb79"},regex:{color:"#e5fb79"},atrule:{color:"#e5fb79"},placeholder:{color:"#e5fb79"},variable:{color:"#e5fb79"},deleted:{textDecoration:"line-through"},inserted:{borderBottom:"1px dotted #f0fff0",textDecoration:"none"},italic:{fontStyle:"italic"},important:{fontWeight:"bold",color:"#b3d6b3"},bold:{fontWeight:"bold"},"pre > code.highlight":{Outline:".4em solid #5c705c",OutlineOffset:".4em"},".line-numbers.line-numbers .line-numbers-rows":{borderRightColor:"#2c302c"},".line-numbers .line-numbers-rows > span:before":{color:"#3b423b"},".line-highlight.line-highlight":{background:"linear-gradient(to right, rgba(162, 179, 77, 0.2) 70%, rgba(162, 179, 77, 0))"}};e.default=t}(VE)),VE}var qE={},D5;function Jwe(){return D5||(D5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#faf8f5",color:"#728fcb"},'pre[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#faf8f5",color:"#728fcb",padding:"1em",margin:".5em 0",overflow:"auto"},'pre > code[class*="language-"]':{fontSize:"1em"},'pre[class*="language-"]::-moz-selection':{textShadow:"none",background:"#faf8f5"},'pre[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#faf8f5"},'code[class*="language-"]::-moz-selection':{textShadow:"none",background:"#faf8f5"},'code[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#faf8f5"},'pre[class*="language-"]::selection':{textShadow:"none",background:"#faf8f5"},'pre[class*="language-"] ::selection':{textShadow:"none",background:"#faf8f5"},'code[class*="language-"]::selection':{textShadow:"none",background:"#faf8f5"},'code[class*="language-"] ::selection':{textShadow:"none",background:"#faf8f5"},':not(pre) > code[class*="language-"]':{padding:".1em",borderRadius:".3em"},comment:{color:"#b6ad9a"},prolog:{color:"#b6ad9a"},doctype:{color:"#b6ad9a"},cdata:{color:"#b6ad9a"},punctuation:{color:"#b6ad9a"},namespace:{Opacity:".7"},tag:{color:"#063289"},operator:{color:"#063289"},number:{color:"#063289"},property:{color:"#b29762"},function:{color:"#b29762"},"tag-id":{color:"#2d2006"},selector:{color:"#2d2006"},"atrule-id":{color:"#2d2006"},"code.language-javascript":{color:"#896724"},"attr-name":{color:"#896724"},"code.language-css":{color:"#728fcb"},"code.language-scss":{color:"#728fcb"},boolean:{color:"#728fcb"},string:{color:"#728fcb"},entity:{color:"#728fcb",cursor:"help"},url:{color:"#728fcb"},".language-css .token.string":{color:"#728fcb"},".language-scss .token.string":{color:"#728fcb"},".style .token.string":{color:"#728fcb"},"attr-value":{color:"#728fcb"},keyword:{color:"#728fcb"},control:{color:"#728fcb"},directive:{color:"#728fcb"},unit:{color:"#728fcb"},statement:{color:"#728fcb"},regex:{color:"#728fcb"},atrule:{color:"#728fcb"},placeholder:{color:"#93abdc"},variable:{color:"#93abdc"},deleted:{textDecoration:"line-through"},inserted:{borderBottom:"1px dotted #2d2006",textDecoration:"none"},italic:{fontStyle:"italic"},important:{fontWeight:"bold",color:"#896724"},bold:{fontWeight:"bold"},"pre > code.highlight":{Outline:".4em solid #896724",OutlineOffset:".4em"},".line-numbers.line-numbers .line-numbers-rows":{borderRightColor:"#ece8de"},".line-numbers .line-numbers-rows > span:before":{color:"#cdc4b1"},".line-highlight.line-highlight":{background:"linear-gradient(to right, rgba(45, 32, 6, 0.2) 70%, rgba(45, 32, 6, 0))"}};e.default=t}(qE)),qE}var GE={},L5;function e0e(){return L5||(L5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#1d262f",color:"#57718e"},'pre[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#1d262f",color:"#57718e",padding:"1em",margin:".5em 0",overflow:"auto"},'pre > code[class*="language-"]':{fontSize:"1em"},'pre[class*="language-"]::-moz-selection':{textShadow:"none",background:"#004a9e"},'pre[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#004a9e"},'code[class*="language-"]::-moz-selection':{textShadow:"none",background:"#004a9e"},'code[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#004a9e"},'pre[class*="language-"]::selection':{textShadow:"none",background:"#004a9e"},'pre[class*="language-"] ::selection':{textShadow:"none",background:"#004a9e"},'code[class*="language-"]::selection':{textShadow:"none",background:"#004a9e"},'code[class*="language-"] ::selection':{textShadow:"none",background:"#004a9e"},':not(pre) > code[class*="language-"]':{padding:".1em",borderRadius:".3em"},comment:{color:"#4a5f78"},prolog:{color:"#4a5f78"},doctype:{color:"#4a5f78"},cdata:{color:"#4a5f78"},punctuation:{color:"#4a5f78"},namespace:{Opacity:".7"},tag:{color:"#0aa370"},operator:{color:"#0aa370"},number:{color:"#0aa370"},property:{color:"#57718e"},function:{color:"#57718e"},"tag-id":{color:"#ebf4ff"},selector:{color:"#ebf4ff"},"atrule-id":{color:"#ebf4ff"},"code.language-javascript":{color:"#7eb6f6"},"attr-name":{color:"#7eb6f6"},"code.language-css":{color:"#47ebb4"},"code.language-scss":{color:"#47ebb4"},boolean:{color:"#47ebb4"},string:{color:"#47ebb4"},entity:{color:"#47ebb4",cursor:"help"},url:{color:"#47ebb4"},".language-css .token.string":{color:"#47ebb4"},".language-scss .token.string":{color:"#47ebb4"},".style .token.string":{color:"#47ebb4"},"attr-value":{color:"#47ebb4"},keyword:{color:"#47ebb4"},control:{color:"#47ebb4"},directive:{color:"#47ebb4"},unit:{color:"#47ebb4"},statement:{color:"#47ebb4"},regex:{color:"#47ebb4"},atrule:{color:"#47ebb4"},placeholder:{color:"#47ebb4"},variable:{color:"#47ebb4"},deleted:{textDecoration:"line-through"},inserted:{borderBottom:"1px dotted #ebf4ff",textDecoration:"none"},italic:{fontStyle:"italic"},important:{fontWeight:"bold",color:"#7eb6f6"},bold:{fontWeight:"bold"},"pre > code.highlight":{Outline:".4em solid #34659d",OutlineOffset:".4em"},".line-numbers.line-numbers .line-numbers-rows":{borderRightColor:"#1f2932"},".line-numbers .line-numbers-rows > span:before":{color:"#2c3847"},".line-highlight.line-highlight":{background:"linear-gradient(to right, rgba(10, 163, 112, 0.2) 70%, rgba(10, 163, 112, 0))"}};e.default=t}(GE)),GE}var WE={},M5;function t0e(){return M5||(M5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#24242e",color:"#767693"},'pre[class*="language-"]':{fontFamily:'Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace',fontSize:"14px",lineHeight:"1.375",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",background:"#24242e",color:"#767693",padding:"1em",margin:".5em 0",overflow:"auto"},'pre > code[class*="language-"]':{fontSize:"1em"},'pre[class*="language-"]::-moz-selection':{textShadow:"none",background:"#5151e6"},'pre[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#5151e6"},'code[class*="language-"]::-moz-selection':{textShadow:"none",background:"#5151e6"},'code[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#5151e6"},'pre[class*="language-"]::selection':{textShadow:"none",background:"#5151e6"},'pre[class*="language-"] ::selection':{textShadow:"none",background:"#5151e6"},'code[class*="language-"]::selection':{textShadow:"none",background:"#5151e6"},'code[class*="language-"] ::selection':{textShadow:"none",background:"#5151e6"},':not(pre) > code[class*="language-"]':{padding:".1em",borderRadius:".3em"},comment:{color:"#5b5b76"},prolog:{color:"#5b5b76"},doctype:{color:"#5b5b76"},cdata:{color:"#5b5b76"},punctuation:{color:"#5b5b76"},namespace:{Opacity:".7"},tag:{color:"#dd672c"},operator:{color:"#dd672c"},number:{color:"#dd672c"},property:{color:"#767693"},function:{color:"#767693"},"tag-id":{color:"#ebebff"},selector:{color:"#ebebff"},"atrule-id":{color:"#ebebff"},"code.language-javascript":{color:"#aaaaca"},"attr-name":{color:"#aaaaca"},"code.language-css":{color:"#fe8c52"},"code.language-scss":{color:"#fe8c52"},boolean:{color:"#fe8c52"},string:{color:"#fe8c52"},entity:{color:"#fe8c52",cursor:"help"},url:{color:"#fe8c52"},".language-css .token.string":{color:"#fe8c52"},".language-scss .token.string":{color:"#fe8c52"},".style .token.string":{color:"#fe8c52"},"attr-value":{color:"#fe8c52"},keyword:{color:"#fe8c52"},control:{color:"#fe8c52"},directive:{color:"#fe8c52"},unit:{color:"#fe8c52"},statement:{color:"#fe8c52"},regex:{color:"#fe8c52"},atrule:{color:"#fe8c52"},placeholder:{color:"#fe8c52"},variable:{color:"#fe8c52"},deleted:{textDecoration:"line-through"},inserted:{borderBottom:"1px dotted #ebebff",textDecoration:"none"},italic:{fontStyle:"italic"},important:{fontWeight:"bold",color:"#aaaaca"},bold:{fontWeight:"bold"},"pre > code.highlight":{Outline:".4em solid #7676f4",OutlineOffset:".4em"},".line-numbers.line-numbers .line-numbers-rows":{borderRightColor:"#262631"},".line-numbers .line-numbers-rows > span:before":{color:"#393949"},".line-highlight.line-highlight":{background:"linear-gradient(to right, rgba(221, 103, 44, 0.2) 70%, rgba(221, 103, 44, 0))"}};e.default=t}(WE)),WE}var KE={},P5;function n0e(){return P5||(P5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{color:"#393A34",fontFamily:'"Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace',direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",fontSize:".9em",lineHeight:"1.2em",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"#393A34",fontFamily:'"Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace',direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",fontSize:".9em",lineHeight:"1.2em",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:".5em 0",overflow:"auto",border:"1px solid #dddddd",backgroundColor:"white"},'pre > code[class*="language-"]':{fontSize:"1em"},'pre[class*="language-"]::-moz-selection':{background:"#b3d4fc"},'pre[class*="language-"] ::-moz-selection':{background:"#b3d4fc"},'code[class*="language-"]::-moz-selection':{background:"#b3d4fc"},'code[class*="language-"] ::-moz-selection':{background:"#b3d4fc"},'pre[class*="language-"]::selection':{background:"#b3d4fc"},'pre[class*="language-"] ::selection':{background:"#b3d4fc"},'code[class*="language-"]::selection':{background:"#b3d4fc"},'code[class*="language-"] ::selection':{background:"#b3d4fc"},':not(pre) > code[class*="language-"]':{padding:".2em",paddingTop:"1px",paddingBottom:"1px",background:"#f8f8f8",border:"1px solid #dddddd"},comment:{color:"#999988",fontStyle:"italic"},prolog:{color:"#999988",fontStyle:"italic"},doctype:{color:"#999988",fontStyle:"italic"},cdata:{color:"#999988",fontStyle:"italic"},namespace:{Opacity:".7"},string:{color:"#e3116c"},"attr-value":{color:"#e3116c"},punctuation:{color:"#393A34"},operator:{color:"#393A34"},entity:{color:"#36acaa"},url:{color:"#36acaa"},symbol:{color:"#36acaa"},number:{color:"#36acaa"},boolean:{color:"#36acaa"},variable:{color:"#36acaa"},constant:{color:"#36acaa"},property:{color:"#36acaa"},regex:{color:"#36acaa"},inserted:{color:"#36acaa"},atrule:{color:"#00a4db"},keyword:{color:"#00a4db"},"attr-name":{color:"#00a4db"},".language-autohotkey .token.selector":{color:"#00a4db"},function:{color:"#9a050f",fontWeight:"bold"},deleted:{color:"#9a050f"},".language-autohotkey .token.tag":{color:"#9a050f"},tag:{color:"#00009f"},selector:{color:"#00009f"},".language-autohotkey .token.keyword":{color:"#00009f"},important:{fontWeight:"bold"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"}};e.default=t}(KE)),KE}var YE={},$5;function r0e(){return $5||($5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{color:"#ebdbb2",fontFamily:'Consolas, Monaco, "Andale Mono", monospace',direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"#ebdbb2",fontFamily:'Consolas, Monaco, "Andale Mono", monospace',direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:"0.5em 0",overflow:"auto",background:"#1d2021"},'pre[class*="language-"]::-moz-selection':{color:"#fbf1c7",background:"#7c6f64"},'pre[class*="language-"] ::-moz-selection':{color:"#fbf1c7",background:"#7c6f64"},'code[class*="language-"]::-moz-selection':{color:"#fbf1c7",background:"#7c6f64"},'code[class*="language-"] ::-moz-selection':{color:"#fbf1c7",background:"#7c6f64"},'pre[class*="language-"]::selection':{color:"#fbf1c7",background:"#7c6f64"},'pre[class*="language-"] ::selection':{color:"#fbf1c7",background:"#7c6f64"},'code[class*="language-"]::selection':{color:"#fbf1c7",background:"#7c6f64"},'code[class*="language-"] ::selection':{color:"#fbf1c7",background:"#7c6f64"},':not(pre) > code[class*="language-"]':{background:"#1d2021",padding:"0.1em",borderRadius:"0.3em"},comment:{color:"#a89984"},prolog:{color:"#a89984"},cdata:{color:"#a89984"},delimiter:{color:"#fb4934"},boolean:{color:"#fb4934"},keyword:{color:"#fb4934"},selector:{color:"#fb4934"},important:{color:"#fb4934"},atrule:{color:"#fb4934"},operator:{color:"#a89984"},punctuation:{color:"#a89984"},"attr-name":{color:"#a89984"},tag:{color:"#fabd2f"},"tag.punctuation":{color:"#fabd2f"},doctype:{color:"#fabd2f"},builtin:{color:"#fabd2f"},entity:{color:"#d3869b"},number:{color:"#d3869b"},symbol:{color:"#d3869b"},property:{color:"#fb4934"},constant:{color:"#fb4934"},variable:{color:"#fb4934"},string:{color:"#b8bb26"},char:{color:"#b8bb26"},"attr-value":{color:"#a89984"},"attr-value.punctuation":{color:"#a89984"},url:{color:"#b8bb26",textDecoration:"underline"},function:{color:"#fabd2f"},regex:{background:"#b8bb26"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},inserted:{background:"#a89984"},deleted:{background:"#fb4934"}};e.default=t}(YE)),YE}var ZE={},F5;function a0e(){return F5||(F5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{color:"#3c3836",fontFamily:'Consolas, Monaco, "Andale Mono", monospace',direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"#3c3836",fontFamily:'Consolas, Monaco, "Andale Mono", monospace',direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:"0.5em 0",overflow:"auto",background:"#f9f5d7"},'pre[class*="language-"]::-moz-selection':{color:"#282828",background:"#a89984"},'pre[class*="language-"] ::-moz-selection':{color:"#282828",background:"#a89984"},'code[class*="language-"]::-moz-selection':{color:"#282828",background:"#a89984"},'code[class*="language-"] ::-moz-selection':{color:"#282828",background:"#a89984"},'pre[class*="language-"]::selection':{color:"#282828",background:"#a89984"},'pre[class*="language-"] ::selection':{color:"#282828",background:"#a89984"},'code[class*="language-"]::selection':{color:"#282828",background:"#a89984"},'code[class*="language-"] ::selection':{color:"#282828",background:"#a89984"},':not(pre) > code[class*="language-"]':{background:"#f9f5d7",padding:"0.1em",borderRadius:"0.3em"},comment:{color:"#7c6f64"},prolog:{color:"#7c6f64"},cdata:{color:"#7c6f64"},delimiter:{color:"#9d0006"},boolean:{color:"#9d0006"},keyword:{color:"#9d0006"},selector:{color:"#9d0006"},important:{color:"#9d0006"},atrule:{color:"#9d0006"},operator:{color:"#7c6f64"},punctuation:{color:"#7c6f64"},"attr-name":{color:"#7c6f64"},tag:{color:"#b57614"},"tag.punctuation":{color:"#b57614"},doctype:{color:"#b57614"},builtin:{color:"#b57614"},entity:{color:"#8f3f71"},number:{color:"#8f3f71"},symbol:{color:"#8f3f71"},property:{color:"#9d0006"},constant:{color:"#9d0006"},variable:{color:"#9d0006"},string:{color:"#797403"},char:{color:"#797403"},"attr-value":{color:"#7c6f64"},"attr-value.punctuation":{color:"#7c6f64"},url:{color:"#797403",textDecoration:"underline"},function:{color:"#b57614"},regex:{background:"#797403"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},inserted:{background:"#7c6f64"},deleted:{background:"#9d0006"}};e.default=t}(ZE)),ZE}var XE={},j5;function o0e(){return j5||(j5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={"code[class*='language-']":{color:"#d6e7ff",background:"#030314",textShadow:"none",fontFamily:'Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace',fontSize:"1em",lineHeight:"1.5",letterSpacing:".2px",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",textAlign:"left",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},"pre[class*='language-']":{color:"#d6e7ff",background:"#030314",textShadow:"none",fontFamily:'Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace',fontSize:"1em",lineHeight:"1.5",letterSpacing:".2px",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",textAlign:"left",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",border:"1px solid #2a4555",borderRadius:"5px",padding:"1.5em 1em",margin:"1em 0",overflow:"auto"},"pre[class*='language-']::-moz-selection":{color:"inherit",background:"#1d3b54",textShadow:"none"},"pre[class*='language-'] ::-moz-selection":{color:"inherit",background:"#1d3b54",textShadow:"none"},"code[class*='language-']::-moz-selection":{color:"inherit",background:"#1d3b54",textShadow:"none"},"code[class*='language-'] ::-moz-selection":{color:"inherit",background:"#1d3b54",textShadow:"none"},"pre[class*='language-']::selection":{color:"inherit",background:"#1d3b54",textShadow:"none"},"pre[class*='language-'] ::selection":{color:"inherit",background:"#1d3b54",textShadow:"none"},"code[class*='language-']::selection":{color:"inherit",background:"#1d3b54",textShadow:"none"},"code[class*='language-'] ::selection":{color:"inherit",background:"#1d3b54",textShadow:"none"},":not(pre) > code[class*='language-']":{color:"#f0f6f6",background:"#2a4555",padding:"0.2em 0.3em",borderRadius:"0.2em",boxDecorationBreak:"clone"},comment:{color:"#446e69"},prolog:{color:"#446e69"},doctype:{color:"#446e69"},cdata:{color:"#446e69"},punctuation:{color:"#d6b007"},property:{color:"#d6e7ff"},tag:{color:"#d6e7ff"},boolean:{color:"#d6e7ff"},number:{color:"#d6e7ff"},constant:{color:"#d6e7ff"},symbol:{color:"#d6e7ff"},deleted:{color:"#d6e7ff"},selector:{color:"#e60067"},"attr-name":{color:"#e60067"},builtin:{color:"#e60067"},inserted:{color:"#e60067"},string:{color:"#49c6ec"},char:{color:"#49c6ec"},operator:{color:"#ec8e01",background:"transparent"},entity:{color:"#ec8e01",background:"transparent"},url:{color:"#ec8e01",background:"transparent"},".language-css .token.string":{color:"#ec8e01",background:"transparent"},".style .token.string":{color:"#ec8e01",background:"transparent"},atrule:{color:"#0fe468"},"attr-value":{color:"#0fe468"},keyword:{color:"#0fe468"},function:{color:"#78f3e9"},"class-name":{color:"#78f3e9"},regex:{color:"#d6e7ff"},important:{color:"#d6e7ff"},variable:{color:"#d6e7ff"}};e.default=t}(XE)),XE}var QE={},z5;function i0e(){return z5||(z5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{fontFamily:'"Fira Mono", Menlo, Monaco, "Lucida Console", "Courier New", Courier, monospace',fontSize:"16px",lineHeight:"1.375",direction:"ltr",textAlign:"left",wordSpacing:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",whiteSpace:"pre-wrap",wordBreak:"break-all",wordWrap:"break-word",background:"#322931",color:"#b9b5b8"},'pre[class*="language-"]':{fontFamily:'"Fira Mono", Menlo, Monaco, "Lucida Console", "Courier New", Courier, monospace',fontSize:"16px",lineHeight:"1.375",direction:"ltr",textAlign:"left",wordSpacing:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",whiteSpace:"pre-wrap",wordBreak:"break-all",wordWrap:"break-word",background:"#322931",color:"#b9b5b8",padding:"1em",margin:".5em 0",overflow:"auto"},'pre > code[class*="language-"]':{fontSize:"1em"},':not(pre) > code[class*="language-"]':{padding:".1em",borderRadius:".3em"},comment:{color:"#797379"},prolog:{color:"#797379"},doctype:{color:"#797379"},cdata:{color:"#797379"},punctuation:{color:"#b9b5b8"},".namespace":{Opacity:".7"},null:{color:"#fd8b19"},operator:{color:"#fd8b19"},boolean:{color:"#fd8b19"},number:{color:"#fd8b19"},property:{color:"#fdcc59"},tag:{color:"#1290bf"},string:{color:"#149b93"},selector:{color:"#c85e7c"},"attr-name":{color:"#fd8b19"},entity:{color:"#149b93",cursor:"help"},url:{color:"#149b93"},".language-css .token.string":{color:"#149b93"},".style .token.string":{color:"#149b93"},"attr-value":{color:"#8fc13e"},keyword:{color:"#8fc13e"},control:{color:"#8fc13e"},directive:{color:"#8fc13e"},unit:{color:"#8fc13e"},statement:{color:"#149b93"},regex:{color:"#149b93"},atrule:{color:"#149b93"},placeholder:{color:"#1290bf"},variable:{color:"#1290bf"},important:{color:"#dd464c",fontWeight:"bold"},"pre > code.highlight":{Outline:".4em solid red",OutlineOffset:".4em"}};e.default=t}(QE)),QE}var JE={},U5;function s0e(){return U5||(U5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{color:"#f8f8f2",background:"none",textShadow:"0 1px rgba(0, 0, 0, 0.3)",fontFamily:"Monaco, Consolas, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"#f8f8f2",background:"#263E52",textShadow:"0 1px rgba(0, 0, 0, 0.3)",fontFamily:"Monaco, Consolas, 'Andale Mono', 'Ubuntu Mono', monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:".5em 0",overflow:"auto",borderRadius:"0.3em"},':not(pre) > code[class*="language-"]':{background:"#263E52",padding:".1em",borderRadius:".3em",whiteSpace:"normal"},comment:{color:"#5c98cd"},prolog:{color:"#5c98cd"},doctype:{color:"#5c98cd"},cdata:{color:"#5c98cd"},punctuation:{color:"#f8f8f2"},".namespace":{Opacity:".7"},property:{color:"#F05E5D"},tag:{color:"#F05E5D"},constant:{color:"#F05E5D"},symbol:{color:"#F05E5D"},deleted:{color:"#F05E5D"},boolean:{color:"#BC94F9"},number:{color:"#BC94F9"},selector:{color:"#FCFCD6"},"attr-name":{color:"#FCFCD6"},string:{color:"#FCFCD6"},char:{color:"#FCFCD6"},builtin:{color:"#FCFCD6"},inserted:{color:"#FCFCD6"},operator:{color:"#f8f8f2"},entity:{color:"#f8f8f2",cursor:"help"},url:{color:"#f8f8f2"},".language-css .token.string":{color:"#f8f8f2"},".style .token.string":{color:"#f8f8f2"},variable:{color:"#f8f8f2"},atrule:{color:"#66D8EF"},"attr-value":{color:"#66D8EF"},function:{color:"#66D8EF"},"class-name":{color:"#66D8EF"},keyword:{color:"#6EB26E"},regex:{color:"#F05E5D"},important:{color:"#F05E5D",fontWeight:"bold"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"}};e.default=t}(JE)),JE}var ex={},B5;function l0e(){return B5||(B5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",color:"#eee",background:"#2f2f2f",fontFamily:"Roboto Mono, monospace",fontSize:"1em",lineHeight:"1.5em",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",color:"#eee",background:"#2f2f2f",fontFamily:"Roboto Mono, monospace",fontSize:"1em",lineHeight:"1.5em",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",overflow:"auto",position:"relative",margin:"0.5em 0",padding:"1.25em 1em"},'code[class*="language-"]::-moz-selection':{background:"#363636"},'pre[class*="language-"]::-moz-selection':{background:"#363636"},'code[class*="language-"] ::-moz-selection':{background:"#363636"},'pre[class*="language-"] ::-moz-selection':{background:"#363636"},'code[class*="language-"]::selection':{background:"#363636"},'pre[class*="language-"]::selection':{background:"#363636"},'code[class*="language-"] ::selection':{background:"#363636"},'pre[class*="language-"] ::selection':{background:"#363636"},':not(pre) > code[class*="language-"]':{whiteSpace:"normal",borderRadius:"0.2em",padding:"0.1em"},".language-css > code":{color:"#fd9170"},".language-sass > code":{color:"#fd9170"},".language-scss > code":{color:"#fd9170"},'[class*="language-"] .namespace':{Opacity:"0.7"},atrule:{color:"#c792ea"},"attr-name":{color:"#ffcb6b"},"attr-value":{color:"#a5e844"},attribute:{color:"#a5e844"},boolean:{color:"#c792ea"},builtin:{color:"#ffcb6b"},cdata:{color:"#80cbc4"},char:{color:"#80cbc4"},class:{color:"#ffcb6b"},"class-name":{color:"#f2ff00"},comment:{color:"#616161"},constant:{color:"#c792ea"},deleted:{color:"#ff6666"},doctype:{color:"#616161"},entity:{color:"#ff6666"},function:{color:"#c792ea"},hexcode:{color:"#f2ff00"},id:{color:"#c792ea",fontWeight:"bold"},important:{color:"#c792ea",fontWeight:"bold"},inserted:{color:"#80cbc4"},keyword:{color:"#c792ea"},number:{color:"#fd9170"},operator:{color:"#89ddff"},prolog:{color:"#616161"},property:{color:"#80cbc4"},"pseudo-class":{color:"#a5e844"},"pseudo-element":{color:"#a5e844"},punctuation:{color:"#89ddff"},regex:{color:"#f2ff00"},selector:{color:"#ff6666"},string:{color:"#a5e844"},symbol:{color:"#c792ea"},tag:{color:"#ff6666"},unit:{color:"#fd9170"},url:{color:"#ff6666"},variable:{color:"#ff6666"}};e.default=t}(ex)),ex}var tx={},H5;function c0e(){return H5||(H5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",color:"#90a4ae",background:"#fafafa",fontFamily:"Roboto Mono, monospace",fontSize:"1em",lineHeight:"1.5em",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",color:"#90a4ae",background:"#fafafa",fontFamily:"Roboto Mono, monospace",fontSize:"1em",lineHeight:"1.5em",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",overflow:"auto",position:"relative",margin:"0.5em 0",padding:"1.25em 1em"},'code[class*="language-"]::-moz-selection':{background:"#cceae7",color:"#263238"},'pre[class*="language-"]::-moz-selection':{background:"#cceae7",color:"#263238"},'code[class*="language-"] ::-moz-selection':{background:"#cceae7",color:"#263238"},'pre[class*="language-"] ::-moz-selection':{background:"#cceae7",color:"#263238"},'code[class*="language-"]::selection':{background:"#cceae7",color:"#263238"},'pre[class*="language-"]::selection':{background:"#cceae7",color:"#263238"},'code[class*="language-"] ::selection':{background:"#cceae7",color:"#263238"},'pre[class*="language-"] ::selection':{background:"#cceae7",color:"#263238"},':not(pre) > code[class*="language-"]':{whiteSpace:"normal",borderRadius:"0.2em",padding:"0.1em"},".language-css > code":{color:"#f76d47"},".language-sass > code":{color:"#f76d47"},".language-scss > code":{color:"#f76d47"},'[class*="language-"] .namespace':{Opacity:"0.7"},atrule:{color:"#7c4dff"},"attr-name":{color:"#39adb5"},"attr-value":{color:"#f6a434"},attribute:{color:"#f6a434"},boolean:{color:"#7c4dff"},builtin:{color:"#39adb5"},cdata:{color:"#39adb5"},char:{color:"#39adb5"},class:{color:"#39adb5"},"class-name":{color:"#6182b8"},comment:{color:"#aabfc9"},constant:{color:"#7c4dff"},deleted:{color:"#e53935"},doctype:{color:"#aabfc9"},entity:{color:"#e53935"},function:{color:"#7c4dff"},hexcode:{color:"#f76d47"},id:{color:"#7c4dff",fontWeight:"bold"},important:{color:"#7c4dff",fontWeight:"bold"},inserted:{color:"#39adb5"},keyword:{color:"#7c4dff"},number:{color:"#f76d47"},operator:{color:"#39adb5"},prolog:{color:"#aabfc9"},property:{color:"#39adb5"},"pseudo-class":{color:"#f6a434"},"pseudo-element":{color:"#f6a434"},punctuation:{color:"#39adb5"},regex:{color:"#6182b8"},selector:{color:"#e53935"},string:{color:"#f6a434"},symbol:{color:"#7c4dff"},tag:{color:"#e53935"},unit:{color:"#f76d47"},url:{color:"#e53935"},variable:{color:"#e53935"}};e.default=t}(tx)),tx}var nx={},V5;function u0e(){return V5||(V5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",color:"#c3cee3",background:"#263238",fontFamily:"Roboto Mono, monospace",fontSize:"1em",lineHeight:"1.5em",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",color:"#c3cee3",background:"#263238",fontFamily:"Roboto Mono, monospace",fontSize:"1em",lineHeight:"1.5em",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",overflow:"auto",position:"relative",margin:"0.5em 0",padding:"1.25em 1em"},'code[class*="language-"]::-moz-selection':{background:"#363636"},'pre[class*="language-"]::-moz-selection':{background:"#363636"},'code[class*="language-"] ::-moz-selection':{background:"#363636"},'pre[class*="language-"] ::-moz-selection':{background:"#363636"},'code[class*="language-"]::selection':{background:"#363636"},'pre[class*="language-"]::selection':{background:"#363636"},'code[class*="language-"] ::selection':{background:"#363636"},'pre[class*="language-"] ::selection':{background:"#363636"},':not(pre) > code[class*="language-"]':{whiteSpace:"normal",borderRadius:"0.2em",padding:"0.1em"},".language-css > code":{color:"#fd9170"},".language-sass > code":{color:"#fd9170"},".language-scss > code":{color:"#fd9170"},'[class*="language-"] .namespace':{Opacity:"0.7"},atrule:{color:"#c792ea"},"attr-name":{color:"#ffcb6b"},"attr-value":{color:"#c3e88d"},attribute:{color:"#c3e88d"},boolean:{color:"#c792ea"},builtin:{color:"#ffcb6b"},cdata:{color:"#80cbc4"},char:{color:"#80cbc4"},class:{color:"#ffcb6b"},"class-name":{color:"#f2ff00"},color:{color:"#f2ff00"},comment:{color:"#546e7a"},constant:{color:"#c792ea"},deleted:{color:"#f07178"},doctype:{color:"#546e7a"},entity:{color:"#f07178"},function:{color:"#c792ea"},hexcode:{color:"#f2ff00"},id:{color:"#c792ea",fontWeight:"bold"},important:{color:"#c792ea",fontWeight:"bold"},inserted:{color:"#80cbc4"},keyword:{color:"#c792ea",fontStyle:"italic"},number:{color:"#fd9170"},operator:{color:"#89ddff"},prolog:{color:"#546e7a"},property:{color:"#80cbc4"},"pseudo-class":{color:"#c3e88d"},"pseudo-element":{color:"#c3e88d"},punctuation:{color:"#89ddff"},regex:{color:"#f2ff00"},selector:{color:"#f07178"},string:{color:"#c3e88d"},symbol:{color:"#c792ea"},tag:{color:"#f07178"},unit:{color:"#f07178"},url:{color:"#fd9170"},variable:{color:"#f07178"}};e.default=t}(nx)),nx}var rx={},q5;function d0e(){return q5||(q5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{color:"#d6deeb",fontFamily:'Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace',textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",fontSize:"1em",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"white",fontFamily:'Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace',textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",fontSize:"1em",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:"0.5em 0",overflow:"auto",background:"#011627"},'pre[class*="language-"]::-moz-selection':{textShadow:"none",background:"rgba(29, 59, 83, 0.99)"},'pre[class*="language-"] ::-moz-selection':{textShadow:"none",background:"rgba(29, 59, 83, 0.99)"},'code[class*="language-"]::-moz-selection':{textShadow:"none",background:"rgba(29, 59, 83, 0.99)"},'code[class*="language-"] ::-moz-selection':{textShadow:"none",background:"rgba(29, 59, 83, 0.99)"},'pre[class*="language-"]::selection':{textShadow:"none",background:"rgba(29, 59, 83, 0.99)"},'pre[class*="language-"] ::selection':{textShadow:"none",background:"rgba(29, 59, 83, 0.99)"},'code[class*="language-"]::selection':{textShadow:"none",background:"rgba(29, 59, 83, 0.99)"},'code[class*="language-"] ::selection':{textShadow:"none",background:"rgba(29, 59, 83, 0.99)"},':not(pre) > code[class*="language-"]':{color:"white",background:"#011627",padding:"0.1em",borderRadius:"0.3em",whiteSpace:"normal"},comment:{color:"rgb(99, 119, 119)",fontStyle:"italic"},prolog:{color:"rgb(99, 119, 119)",fontStyle:"italic"},cdata:{color:"rgb(99, 119, 119)",fontStyle:"italic"},punctuation:{color:"rgb(199, 146, 234)"},".namespace":{color:"rgb(178, 204, 214)"},deleted:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"},symbol:{color:"rgb(128, 203, 196)"},property:{color:"rgb(128, 203, 196)"},tag:{color:"rgb(127, 219, 202)"},operator:{color:"rgb(127, 219, 202)"},keyword:{color:"rgb(127, 219, 202)"},boolean:{color:"rgb(255, 88, 116)"},number:{color:"rgb(247, 140, 108)"},constant:{color:"rgb(130, 170, 255)"},function:{color:"rgb(130, 170, 255)"},builtin:{color:"rgb(130, 170, 255)"},char:{color:"rgb(130, 170, 255)"},selector:{color:"rgb(199, 146, 234)",fontStyle:"italic"},doctype:{color:"rgb(199, 146, 234)",fontStyle:"italic"},"attr-name":{color:"rgb(173, 219, 103)",fontStyle:"italic"},inserted:{color:"rgb(173, 219, 103)",fontStyle:"italic"},string:{color:"rgb(173, 219, 103)"},url:{color:"rgb(173, 219, 103)"},entity:{color:"rgb(173, 219, 103)"},".language-css .token.string":{color:"rgb(173, 219, 103)"},".style .token.string":{color:"rgb(173, 219, 103)"},"class-name":{color:"rgb(255, 203, 139)"},atrule:{color:"rgb(255, 203, 139)"},"attr-value":{color:"rgb(255, 203, 139)"},regex:{color:"rgb(214, 222, 235)"},important:{color:"rgb(214, 222, 235)",fontWeight:"bold"},variable:{color:"rgb(214, 222, 235)"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"}};e.default=t}(rx)),rx}var ax={},G5;function f0e(){return G5||(G5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{color:"#f8f8f2",background:"none",fontFamily:`"Fira Code", Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace`,textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"#f8f8f2",background:"#2E3440",fontFamily:`"Fira Code", Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace`,textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:".5em 0",overflow:"auto",borderRadius:"0.3em"},':not(pre) > code[class*="language-"]':{background:"#2E3440",padding:".1em",borderRadius:".3em",whiteSpace:"normal"},comment:{color:"#636f88"},prolog:{color:"#636f88"},doctype:{color:"#636f88"},cdata:{color:"#636f88"},punctuation:{color:"#81A1C1"},".namespace":{Opacity:".7"},property:{color:"#81A1C1"},tag:{color:"#81A1C1"},constant:{color:"#81A1C1"},symbol:{color:"#81A1C1"},deleted:{color:"#81A1C1"},number:{color:"#B48EAD"},boolean:{color:"#81A1C1"},selector:{color:"#A3BE8C"},"attr-name":{color:"#A3BE8C"},string:{color:"#A3BE8C"},char:{color:"#A3BE8C"},builtin:{color:"#A3BE8C"},inserted:{color:"#A3BE8C"},operator:{color:"#81A1C1"},entity:{color:"#81A1C1",cursor:"help"},url:{color:"#81A1C1"},".language-css .token.string":{color:"#81A1C1"},".style .token.string":{color:"#81A1C1"},variable:{color:"#81A1C1"},atrule:{color:"#88C0D0"},"attr-value":{color:"#88C0D0"},function:{color:"#88C0D0"},"class-name":{color:"#88C0D0"},keyword:{color:"#81A1C1"},regex:{color:"#EBCB8B"},important:{color:"#EBCB8B",fontWeight:"bold"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"}};e.default=t}(ax)),ax}var ox={},W5;function p0e(){return W5||(W5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{background:"hsl(220, 13%, 18%)",color:"hsl(220, 14%, 71%)",textShadow:"0 1px rgba(0, 0, 0, 0.3)",fontFamily:'"Fira Code", "Fira Mono", Menlo, Consolas, "DejaVu Sans Mono", monospace',direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",lineHeight:"1.5",MozTabSize:"2",OTabSize:"2",tabSize:"2",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{background:"hsl(220, 13%, 18%)",color:"hsl(220, 14%, 71%)",textShadow:"0 1px rgba(0, 0, 0, 0.3)",fontFamily:'"Fira Code", "Fira Mono", Menlo, Consolas, "DejaVu Sans Mono", monospace',direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",lineHeight:"1.5",MozTabSize:"2",OTabSize:"2",tabSize:"2",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:"0.5em 0",overflow:"auto",borderRadius:"0.3em"},'code[class*="language-"]::-moz-selection':{background:"hsl(220, 13%, 28%)",color:"inherit",textShadow:"none"},'code[class*="language-"] *::-moz-selection':{background:"hsl(220, 13%, 28%)",color:"inherit",textShadow:"none"},'pre[class*="language-"] *::-moz-selection':{background:"hsl(220, 13%, 28%)",color:"inherit",textShadow:"none"},'code[class*="language-"]::selection':{background:"hsl(220, 13%, 28%)",color:"inherit",textShadow:"none"},'code[class*="language-"] *::selection':{background:"hsl(220, 13%, 28%)",color:"inherit",textShadow:"none"},'pre[class*="language-"] *::selection':{background:"hsl(220, 13%, 28%)",color:"inherit",textShadow:"none"},':not(pre) > code[class*="language-"]':{padding:"0.2em 0.3em",borderRadius:"0.3em",whiteSpace:"normal"},comment:{color:"hsl(220, 10%, 40%)",fontStyle:"italic"},prolog:{color:"hsl(220, 10%, 40%)"},cdata:{color:"hsl(220, 10%, 40%)"},doctype:{color:"hsl(220, 14%, 71%)"},punctuation:{color:"hsl(220, 14%, 71%)"},entity:{color:"hsl(220, 14%, 71%)",cursor:"help"},"attr-name":{color:"hsl(29, 54%, 61%)"},"class-name":{color:"hsl(29, 54%, 61%)"},boolean:{color:"hsl(29, 54%, 61%)"},constant:{color:"hsl(29, 54%, 61%)"},number:{color:"hsl(29, 54%, 61%)"},atrule:{color:"hsl(29, 54%, 61%)"},keyword:{color:"hsl(286, 60%, 67%)"},property:{color:"hsl(355, 65%, 65%)"},tag:{color:"hsl(355, 65%, 65%)"},symbol:{color:"hsl(355, 65%, 65%)"},deleted:{color:"hsl(355, 65%, 65%)"},important:{color:"hsl(355, 65%, 65%)"},selector:{color:"hsl(95, 38%, 62%)"},string:{color:"hsl(95, 38%, 62%)"},char:{color:"hsl(95, 38%, 62%)"},builtin:{color:"hsl(95, 38%, 62%)"},inserted:{color:"hsl(95, 38%, 62%)"},regex:{color:"hsl(95, 38%, 62%)"},"attr-value":{color:"hsl(95, 38%, 62%)"},"attr-value > .token.punctuation":{color:"hsl(95, 38%, 62%)"},variable:{color:"hsl(207, 82%, 66%)"},operator:{color:"hsl(207, 82%, 66%)"},function:{color:"hsl(207, 82%, 66%)"},url:{color:"hsl(187, 47%, 55%)"},"attr-value > .token.punctuation.attr-equals":{color:"hsl(220, 14%, 71%)"},"special-attr > .token.attr-value > .token.value.css":{color:"hsl(220, 14%, 71%)"},".language-css .token.selector":{color:"hsl(355, 65%, 65%)"},".language-css .token.property":{color:"hsl(220, 14%, 71%)"},".language-css .token.function":{color:"hsl(187, 47%, 55%)"},".language-css .token.url > .token.function":{color:"hsl(187, 47%, 55%)"},".language-css .token.url > .token.string.url":{color:"hsl(95, 38%, 62%)"},".language-css .token.important":{color:"hsl(286, 60%, 67%)"},".language-css .token.atrule .token.rule":{color:"hsl(286, 60%, 67%)"},".language-javascript .token.operator":{color:"hsl(286, 60%, 67%)"},".language-javascript .token.template-string > .token.interpolation > .token.interpolation-punctuation.punctuation":{color:"hsl(5, 48%, 51%)"},".language-json .token.operator":{color:"hsl(220, 14%, 71%)"},".language-json .token.null.keyword":{color:"hsl(29, 54%, 61%)"},".language-markdown .token.url":{color:"hsl(220, 14%, 71%)"},".language-markdown .token.url > .token.operator":{color:"hsl(220, 14%, 71%)"},".language-markdown .token.url-reference.url > .token.string":{color:"hsl(220, 14%, 71%)"},".language-markdown .token.url > .token.content":{color:"hsl(207, 82%, 66%)"},".language-markdown .token.url > .token.url":{color:"hsl(187, 47%, 55%)"},".language-markdown .token.url-reference.url":{color:"hsl(187, 47%, 55%)"},".language-markdown .token.blockquote.punctuation":{color:"hsl(220, 10%, 40%)",fontStyle:"italic"},".language-markdown .token.hr.punctuation":{color:"hsl(220, 10%, 40%)",fontStyle:"italic"},".language-markdown .token.code-snippet":{color:"hsl(95, 38%, 62%)"},".language-markdown .token.bold .token.content":{color:"hsl(29, 54%, 61%)"},".language-markdown .token.italic .token.content":{color:"hsl(286, 60%, 67%)"},".language-markdown .token.strike .token.content":{color:"hsl(355, 65%, 65%)"},".language-markdown .token.strike .token.punctuation":{color:"hsl(355, 65%, 65%)"},".language-markdown .token.list.punctuation":{color:"hsl(355, 65%, 65%)"},".language-markdown .token.title.important > .token.punctuation":{color:"hsl(355, 65%, 65%)"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},namespace:{Opacity:"0.8"},"token.tab:not(:empty):before":{color:"hsla(220, 14%, 71%, 0.15)",textShadow:"none"},"token.cr:before":{color:"hsla(220, 14%, 71%, 0.15)",textShadow:"none"},"token.lf:before":{color:"hsla(220, 14%, 71%, 0.15)",textShadow:"none"},"token.space:before":{color:"hsla(220, 14%, 71%, 0.15)",textShadow:"none"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item":{marginRight:"0.4em"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button":{background:"hsl(220, 13%, 26%)",color:"hsl(220, 9%, 55%)",padding:"0.1em 0.4em",borderRadius:"0.3em"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a":{background:"hsl(220, 13%, 26%)",color:"hsl(220, 9%, 55%)",padding:"0.1em 0.4em",borderRadius:"0.3em"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span":{background:"hsl(220, 13%, 26%)",color:"hsl(220, 9%, 55%)",padding:"0.1em 0.4em",borderRadius:"0.3em"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:hover":{background:"hsl(220, 13%, 28%)",color:"hsl(220, 14%, 71%)"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:focus":{background:"hsl(220, 13%, 28%)",color:"hsl(220, 14%, 71%)"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:hover":{background:"hsl(220, 13%, 28%)",color:"hsl(220, 14%, 71%)"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:focus":{background:"hsl(220, 13%, 28%)",color:"hsl(220, 14%, 71%)"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:hover":{background:"hsl(220, 13%, 28%)",color:"hsl(220, 14%, 71%)"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:focus":{background:"hsl(220, 13%, 28%)",color:"hsl(220, 14%, 71%)"},".line-highlight.line-highlight":{background:"hsla(220, 100%, 80%, 0.04)"},".line-highlight.line-highlight:before":{background:"hsl(220, 13%, 26%)",color:"hsl(220, 14%, 71%)",padding:"0.1em 0.6em",borderRadius:"0.3em",boxShadow:"0 2px 0 0 rgba(0, 0, 0, 0.2)"},".line-highlight.line-highlight[data-end]:after":{background:"hsl(220, 13%, 26%)",color:"hsl(220, 14%, 71%)",padding:"0.1em 0.6em",borderRadius:"0.3em",boxShadow:"0 2px 0 0 rgba(0, 0, 0, 0.2)"},"pre[id].linkable-line-numbers.linkable-line-numbers span.line-numbers-rows > span:hover:before":{backgroundColor:"hsla(220, 100%, 80%, 0.04)"},".line-numbers.line-numbers .line-numbers-rows":{borderRightColor:"hsla(220, 14%, 71%, 0.15)"},".command-line .command-line-prompt":{borderRightColor:"hsla(220, 14%, 71%, 0.15)"},".line-numbers .line-numbers-rows > span:before":{color:"hsl(220, 14%, 45%)"},".command-line .command-line-prompt > span:before":{color:"hsl(220, 14%, 45%)"},".rainbow-braces .token.token.punctuation.brace-level-1":{color:"hsl(355, 65%, 65%)"},".rainbow-braces .token.token.punctuation.brace-level-5":{color:"hsl(355, 65%, 65%)"},".rainbow-braces .token.token.punctuation.brace-level-9":{color:"hsl(355, 65%, 65%)"},".rainbow-braces .token.token.punctuation.brace-level-2":{color:"hsl(95, 38%, 62%)"},".rainbow-braces .token.token.punctuation.brace-level-6":{color:"hsl(95, 38%, 62%)"},".rainbow-braces .token.token.punctuation.brace-level-10":{color:"hsl(95, 38%, 62%)"},".rainbow-braces .token.token.punctuation.brace-level-3":{color:"hsl(207, 82%, 66%)"},".rainbow-braces .token.token.punctuation.brace-level-7":{color:"hsl(207, 82%, 66%)"},".rainbow-braces .token.token.punctuation.brace-level-11":{color:"hsl(207, 82%, 66%)"},".rainbow-braces .token.token.punctuation.brace-level-4":{color:"hsl(286, 60%, 67%)"},".rainbow-braces .token.token.punctuation.brace-level-8":{color:"hsl(286, 60%, 67%)"},".rainbow-braces .token.token.punctuation.brace-level-12":{color:"hsl(286, 60%, 67%)"},"pre.diff-highlight > code .token.token.deleted:not(.prefix)":{backgroundColor:"hsla(353, 100%, 66%, 0.15)"},"pre > code.diff-highlight .token.token.deleted:not(.prefix)":{backgroundColor:"hsla(353, 100%, 66%, 0.15)"},"pre.diff-highlight > code .token.token.deleted:not(.prefix)::-moz-selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre.diff-highlight > code .token.token.deleted:not(.prefix) *::-moz-selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre > code.diff-highlight .token.token.deleted:not(.prefix)::-moz-selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre > code.diff-highlight .token.token.deleted:not(.prefix) *::-moz-selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre.diff-highlight > code .token.token.deleted:not(.prefix)::selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre.diff-highlight > code .token.token.deleted:not(.prefix) *::selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre > code.diff-highlight .token.token.deleted:not(.prefix)::selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre > code.diff-highlight .token.token.deleted:not(.prefix) *::selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre.diff-highlight > code .token.token.inserted:not(.prefix)":{backgroundColor:"hsla(137, 100%, 55%, 0.15)"},"pre > code.diff-highlight .token.token.inserted:not(.prefix)":{backgroundColor:"hsla(137, 100%, 55%, 0.15)"},"pre.diff-highlight > code .token.token.inserted:not(.prefix)::-moz-selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre.diff-highlight > code .token.token.inserted:not(.prefix) *::-moz-selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre > code.diff-highlight .token.token.inserted:not(.prefix)::-moz-selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre > code.diff-highlight .token.token.inserted:not(.prefix) *::-moz-selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre.diff-highlight > code .token.token.inserted:not(.prefix)::selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre.diff-highlight > code .token.token.inserted:not(.prefix) *::selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre > code.diff-highlight .token.token.inserted:not(.prefix)::selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre > code.diff-highlight .token.token.inserted:not(.prefix) *::selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},".prism-previewer.prism-previewer:before":{borderColor:"hsl(224, 13%, 17%)"},".prism-previewer-gradient.prism-previewer-gradient div":{borderColor:"hsl(224, 13%, 17%)",borderRadius:"0.3em"},".prism-previewer-color.prism-previewer-color:before":{borderRadius:"0.3em"},".prism-previewer-easing.prism-previewer-easing:before":{borderRadius:"0.3em"},".prism-previewer.prism-previewer:after":{borderTopColor:"hsl(224, 13%, 17%)"},".prism-previewer-flipped.prism-previewer-flipped.after":{borderBottomColor:"hsl(224, 13%, 17%)"},".prism-previewer-angle.prism-previewer-angle:before":{background:"hsl(219, 13%, 22%)"},".prism-previewer-time.prism-previewer-time:before":{background:"hsl(219, 13%, 22%)"},".prism-previewer-easing.prism-previewer-easing":{background:"hsl(219, 13%, 22%)"},".prism-previewer-angle.prism-previewer-angle circle":{stroke:"hsl(220, 14%, 71%)",strokeOpacity:"1"},".prism-previewer-time.prism-previewer-time circle":{stroke:"hsl(220, 14%, 71%)",strokeOpacity:"1"},".prism-previewer-easing.prism-previewer-easing circle":{stroke:"hsl(220, 14%, 71%)",fill:"transparent"},".prism-previewer-easing.prism-previewer-easing path":{stroke:"hsl(220, 14%, 71%)"},".prism-previewer-easing.prism-previewer-easing line":{stroke:"hsl(220, 14%, 71%)"}};e.default=t}(ox)),ox}var ix={},K5;function g0e(){return K5||(K5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{background:"hsl(230, 1%, 98%)",color:"hsl(230, 8%, 24%)",fontFamily:'"Fira Code", "Fira Mono", Menlo, Consolas, "DejaVu Sans Mono", monospace',direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",lineHeight:"1.5",MozTabSize:"2",OTabSize:"2",tabSize:"2",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{background:"hsl(230, 1%, 98%)",color:"hsl(230, 8%, 24%)",fontFamily:'"Fira Code", "Fira Mono", Menlo, Consolas, "DejaVu Sans Mono", monospace',direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",lineHeight:"1.5",MozTabSize:"2",OTabSize:"2",tabSize:"2",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:"0.5em 0",overflow:"auto",borderRadius:"0.3em"},'code[class*="language-"]::-moz-selection':{background:"hsl(230, 1%, 90%)",color:"inherit"},'code[class*="language-"] *::-moz-selection':{background:"hsl(230, 1%, 90%)",color:"inherit"},'pre[class*="language-"] *::-moz-selection':{background:"hsl(230, 1%, 90%)",color:"inherit"},'code[class*="language-"]::selection':{background:"hsl(230, 1%, 90%)",color:"inherit"},'code[class*="language-"] *::selection':{background:"hsl(230, 1%, 90%)",color:"inherit"},'pre[class*="language-"] *::selection':{background:"hsl(230, 1%, 90%)",color:"inherit"},':not(pre) > code[class*="language-"]':{padding:"0.2em 0.3em",borderRadius:"0.3em",whiteSpace:"normal"},comment:{color:"hsl(230, 4%, 64%)",fontStyle:"italic"},prolog:{color:"hsl(230, 4%, 64%)"},cdata:{color:"hsl(230, 4%, 64%)"},doctype:{color:"hsl(230, 8%, 24%)"},punctuation:{color:"hsl(230, 8%, 24%)"},entity:{color:"hsl(230, 8%, 24%)",cursor:"help"},"attr-name":{color:"hsl(35, 99%, 36%)"},"class-name":{color:"hsl(35, 99%, 36%)"},boolean:{color:"hsl(35, 99%, 36%)"},constant:{color:"hsl(35, 99%, 36%)"},number:{color:"hsl(35, 99%, 36%)"},atrule:{color:"hsl(35, 99%, 36%)"},keyword:{color:"hsl(301, 63%, 40%)"},property:{color:"hsl(5, 74%, 59%)"},tag:{color:"hsl(5, 74%, 59%)"},symbol:{color:"hsl(5, 74%, 59%)"},deleted:{color:"hsl(5, 74%, 59%)"},important:{color:"hsl(5, 74%, 59%)"},selector:{color:"hsl(119, 34%, 47%)"},string:{color:"hsl(119, 34%, 47%)"},char:{color:"hsl(119, 34%, 47%)"},builtin:{color:"hsl(119, 34%, 47%)"},inserted:{color:"hsl(119, 34%, 47%)"},regex:{color:"hsl(119, 34%, 47%)"},"attr-value":{color:"hsl(119, 34%, 47%)"},"attr-value > .token.punctuation":{color:"hsl(119, 34%, 47%)"},variable:{color:"hsl(221, 87%, 60%)"},operator:{color:"hsl(221, 87%, 60%)"},function:{color:"hsl(221, 87%, 60%)"},url:{color:"hsl(198, 99%, 37%)"},"attr-value > .token.punctuation.attr-equals":{color:"hsl(230, 8%, 24%)"},"special-attr > .token.attr-value > .token.value.css":{color:"hsl(230, 8%, 24%)"},".language-css .token.selector":{color:"hsl(5, 74%, 59%)"},".language-css .token.property":{color:"hsl(230, 8%, 24%)"},".language-css .token.function":{color:"hsl(198, 99%, 37%)"},".language-css .token.url > .token.function":{color:"hsl(198, 99%, 37%)"},".language-css .token.url > .token.string.url":{color:"hsl(119, 34%, 47%)"},".language-css .token.important":{color:"hsl(301, 63%, 40%)"},".language-css .token.atrule .token.rule":{color:"hsl(301, 63%, 40%)"},".language-javascript .token.operator":{color:"hsl(301, 63%, 40%)"},".language-javascript .token.template-string > .token.interpolation > .token.interpolation-punctuation.punctuation":{color:"hsl(344, 84%, 43%)"},".language-json .token.operator":{color:"hsl(230, 8%, 24%)"},".language-json .token.null.keyword":{color:"hsl(35, 99%, 36%)"},".language-markdown .token.url":{color:"hsl(230, 8%, 24%)"},".language-markdown .token.url > .token.operator":{color:"hsl(230, 8%, 24%)"},".language-markdown .token.url-reference.url > .token.string":{color:"hsl(230, 8%, 24%)"},".language-markdown .token.url > .token.content":{color:"hsl(221, 87%, 60%)"},".language-markdown .token.url > .token.url":{color:"hsl(198, 99%, 37%)"},".language-markdown .token.url-reference.url":{color:"hsl(198, 99%, 37%)"},".language-markdown .token.blockquote.punctuation":{color:"hsl(230, 4%, 64%)",fontStyle:"italic"},".language-markdown .token.hr.punctuation":{color:"hsl(230, 4%, 64%)",fontStyle:"italic"},".language-markdown .token.code-snippet":{color:"hsl(119, 34%, 47%)"},".language-markdown .token.bold .token.content":{color:"hsl(35, 99%, 36%)"},".language-markdown .token.italic .token.content":{color:"hsl(301, 63%, 40%)"},".language-markdown .token.strike .token.content":{color:"hsl(5, 74%, 59%)"},".language-markdown .token.strike .token.punctuation":{color:"hsl(5, 74%, 59%)"},".language-markdown .token.list.punctuation":{color:"hsl(5, 74%, 59%)"},".language-markdown .token.title.important > .token.punctuation":{color:"hsl(5, 74%, 59%)"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},namespace:{Opacity:"0.8"},"token.tab:not(:empty):before":{color:"hsla(230, 8%, 24%, 0.2)"},"token.cr:before":{color:"hsla(230, 8%, 24%, 0.2)"},"token.lf:before":{color:"hsla(230, 8%, 24%, 0.2)"},"token.space:before":{color:"hsla(230, 8%, 24%, 0.2)"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item":{marginRight:"0.4em"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button":{background:"hsl(230, 1%, 90%)",color:"hsl(230, 6%, 44%)",padding:"0.1em 0.4em",borderRadius:"0.3em"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a":{background:"hsl(230, 1%, 90%)",color:"hsl(230, 6%, 44%)",padding:"0.1em 0.4em",borderRadius:"0.3em"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span":{background:"hsl(230, 1%, 90%)",color:"hsl(230, 6%, 44%)",padding:"0.1em 0.4em",borderRadius:"0.3em"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:hover":{background:"hsl(230, 1%, 78%)",color:"hsl(230, 8%, 24%)"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:focus":{background:"hsl(230, 1%, 78%)",color:"hsl(230, 8%, 24%)"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:hover":{background:"hsl(230, 1%, 78%)",color:"hsl(230, 8%, 24%)"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:focus":{background:"hsl(230, 1%, 78%)",color:"hsl(230, 8%, 24%)"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:hover":{background:"hsl(230, 1%, 78%)",color:"hsl(230, 8%, 24%)"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:focus":{background:"hsl(230, 1%, 78%)",color:"hsl(230, 8%, 24%)"},".line-highlight.line-highlight":{background:"hsla(230, 8%, 24%, 0.05)"},".line-highlight.line-highlight:before":{background:"hsl(230, 1%, 90%)",color:"hsl(230, 8%, 24%)",padding:"0.1em 0.6em",borderRadius:"0.3em",boxShadow:"0 2px 0 0 rgba(0, 0, 0, 0.2)"},".line-highlight.line-highlight[data-end]:after":{background:"hsl(230, 1%, 90%)",color:"hsl(230, 8%, 24%)",padding:"0.1em 0.6em",borderRadius:"0.3em",boxShadow:"0 2px 0 0 rgba(0, 0, 0, 0.2)"},"pre[id].linkable-line-numbers.linkable-line-numbers span.line-numbers-rows > span:hover:before":{backgroundColor:"hsla(230, 8%, 24%, 0.05)"},".line-numbers.line-numbers .line-numbers-rows":{borderRightColor:"hsla(230, 8%, 24%, 0.2)"},".command-line .command-line-prompt":{borderRightColor:"hsla(230, 8%, 24%, 0.2)"},".line-numbers .line-numbers-rows > span:before":{color:"hsl(230, 1%, 62%)"},".command-line .command-line-prompt > span:before":{color:"hsl(230, 1%, 62%)"},".rainbow-braces .token.token.punctuation.brace-level-1":{color:"hsl(5, 74%, 59%)"},".rainbow-braces .token.token.punctuation.brace-level-5":{color:"hsl(5, 74%, 59%)"},".rainbow-braces .token.token.punctuation.brace-level-9":{color:"hsl(5, 74%, 59%)"},".rainbow-braces .token.token.punctuation.brace-level-2":{color:"hsl(119, 34%, 47%)"},".rainbow-braces .token.token.punctuation.brace-level-6":{color:"hsl(119, 34%, 47%)"},".rainbow-braces .token.token.punctuation.brace-level-10":{color:"hsl(119, 34%, 47%)"},".rainbow-braces .token.token.punctuation.brace-level-3":{color:"hsl(221, 87%, 60%)"},".rainbow-braces .token.token.punctuation.brace-level-7":{color:"hsl(221, 87%, 60%)"},".rainbow-braces .token.token.punctuation.brace-level-11":{color:"hsl(221, 87%, 60%)"},".rainbow-braces .token.token.punctuation.brace-level-4":{color:"hsl(301, 63%, 40%)"},".rainbow-braces .token.token.punctuation.brace-level-8":{color:"hsl(301, 63%, 40%)"},".rainbow-braces .token.token.punctuation.brace-level-12":{color:"hsl(301, 63%, 40%)"},"pre.diff-highlight > code .token.token.deleted:not(.prefix)":{backgroundColor:"hsla(353, 100%, 66%, 0.15)"},"pre > code.diff-highlight .token.token.deleted:not(.prefix)":{backgroundColor:"hsla(353, 100%, 66%, 0.15)"},"pre.diff-highlight > code .token.token.deleted:not(.prefix)::-moz-selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre.diff-highlight > code .token.token.deleted:not(.prefix) *::-moz-selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre > code.diff-highlight .token.token.deleted:not(.prefix)::-moz-selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre > code.diff-highlight .token.token.deleted:not(.prefix) *::-moz-selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre.diff-highlight > code .token.token.deleted:not(.prefix)::selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre.diff-highlight > code .token.token.deleted:not(.prefix) *::selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre > code.diff-highlight .token.token.deleted:not(.prefix)::selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre > code.diff-highlight .token.token.deleted:not(.prefix) *::selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre.diff-highlight > code .token.token.inserted:not(.prefix)":{backgroundColor:"hsla(137, 100%, 55%, 0.15)"},"pre > code.diff-highlight .token.token.inserted:not(.prefix)":{backgroundColor:"hsla(137, 100%, 55%, 0.15)"},"pre.diff-highlight > code .token.token.inserted:not(.prefix)::-moz-selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre.diff-highlight > code .token.token.inserted:not(.prefix) *::-moz-selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre > code.diff-highlight .token.token.inserted:not(.prefix)::-moz-selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre > code.diff-highlight .token.token.inserted:not(.prefix) *::-moz-selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre.diff-highlight > code .token.token.inserted:not(.prefix)::selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre.diff-highlight > code .token.token.inserted:not(.prefix) *::selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre > code.diff-highlight .token.token.inserted:not(.prefix)::selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre > code.diff-highlight .token.token.inserted:not(.prefix) *::selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},".prism-previewer.prism-previewer:before":{borderColor:"hsl(0, 0, 95%)"},".prism-previewer-gradient.prism-previewer-gradient div":{borderColor:"hsl(0, 0, 95%)",borderRadius:"0.3em"},".prism-previewer-color.prism-previewer-color:before":{borderRadius:"0.3em"},".prism-previewer-easing.prism-previewer-easing:before":{borderRadius:"0.3em"},".prism-previewer.prism-previewer:after":{borderTopColor:"hsl(0, 0, 95%)"},".prism-previewer-flipped.prism-previewer-flipped.after":{borderBottomColor:"hsl(0, 0, 95%)"},".prism-previewer-angle.prism-previewer-angle:before":{background:"hsl(0, 0%, 100%)"},".prism-previewer-time.prism-previewer-time:before":{background:"hsl(0, 0%, 100%)"},".prism-previewer-easing.prism-previewer-easing":{background:"hsl(0, 0%, 100%)"},".prism-previewer-angle.prism-previewer-angle circle":{stroke:"hsl(230, 8%, 24%)",strokeOpacity:"1"},".prism-previewer-time.prism-previewer-time circle":{stroke:"hsl(230, 8%, 24%)",strokeOpacity:"1"},".prism-previewer-easing.prism-previewer-easing circle":{stroke:"hsl(230, 8%, 24%)",fill:"transparent"},".prism-previewer-easing.prism-previewer-easing path":{stroke:"hsl(230, 8%, 24%)"},".prism-previewer-easing.prism-previewer-easing line":{stroke:"hsl(230, 8%, 24%)"}};e.default=t}(ix)),ix}var sx={},Y5;function m0e(){return Y5||(Y5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",whiteSpace:"pre-wrap",wordBreak:"break-all",wordWrap:"break-word",fontFamily:'Menlo, Monaco, "Courier New", monospace',fontSize:"15px",lineHeight:"1.5",color:"#dccf8f",textShadow:"0"},'pre[class*="language-"]':{MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",whiteSpace:"pre-wrap",wordBreak:"break-all",wordWrap:"break-word",fontFamily:'Menlo, Monaco, "Courier New", monospace',fontSize:"15px",lineHeight:"1.5",color:"#DCCF8F",textShadow:"0",borderRadius:"5px",border:"1px solid #000",background:"#181914 url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAMAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQACQYGBgcGCQcHCQ0IBwgNDwsJCQsPEQ4ODw4OERENDg4ODg0RERQUFhQUERoaHBwaGiYmJiYmKysrKysrKysrKwEJCAgJCgkMCgoMDwwODA8TDg4ODhMVDg4PDg4VGhMRERERExoXGhYWFhoXHR0aGh0dJCQjJCQrKysrKysrKysr/8AAEQgAjACMAwEiAAIRAQMRAf/EAF4AAQEBAAAAAAAAAAAAAAAAAAABBwEBAQAAAAAAAAAAAAAAAAAAAAIQAAEDAwIHAQEAAAAAAAAAAADwAREhYaExkUFRcYGxwdHh8REBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8AyGFEjHaBS2fDDs2zkhKmBKktb7km+ZwwCnXPkLVmCTMItj6AXFxRS465/BTnkAJvkLkJe+7AKKoi2AtRS2zuAWsCb5GOlBN8gKfmuGHZ8MFqIth3ALmFoFwbwKWyAlTAp17uKqBvgBD8sM4fTjhvAhkzhaRkBMKBrfs7jGPIpzy7gFrAqnC0C0gB0EWwBDW2cBVQwm+QtPpa3wBO3sVvszCnLAhkzgL5/RLf13cLQd8/AGlu0Cb5HTx9KuAEieGJEdcehS3eRTp2ATdt3CpIm+QtZwAhROXFeb7swp/ahaM3kBE/jSIUBc/AWrgBN8uNFAl+b7sAXFxFn2YLUU5Ns7gFX8C4ib+hN8gFWXwK3bZglxEJm+gKdciLPsFV/TClsgJUwKJ5FVA7tvIFrfZhVfGJDcsCKaYgAqv6YRbE+RWOWBtu7+AL3yRalXLyKqAIIfk+zARbDgFyEsncYwJvlgFRW+GEWntIi2P0BooyFxcNr8Ep3+ANLbMO+QyhvbiqdgC0kVvgUUiLYgBS2QtPbiVI1/sgOmG9uO+Y8DW+7jS2zAOnj6O2BndwuIAUtkdRN8gFoK3wwXMQyZwHVbClsuNLd4E3yAUR6FVDBR+BafQGt93LVMxJTv8ABts4CVLhcfYWsCb5kC9/BHdU8CLYFY5bMAd+eX9MGthhpbA1vu4B7+RKkaW2Yq4AQtVBBFsAJU/AuIXBhN8gGWnstefhiZyWvLAEnbYS1uzSFP6Jvn4Baxx70JKkQojLib5AVTey1jjgkKJGO0AKWyOm7N7cSpgSpAdPH0Tfd/gp1z5C1ZgKqN9J2wFxcUUuAFLZAm+QC0Fb4YUVRFsAOvj4KW2dwtYE3yAWk/wS/PLMKfmuGHZ8MAXF/Ja32Yi5haAKWz4Ydm2cSpgU693Atb7km+Zwwh+WGcPpxw3gAkzCLY+iYUDW/Z3Adc/gpzyFrAqnALkJe+7DoItgAtRS2zuKqGE3yAx0oJvkdvYrfZmALURbDuL5/RLf13cAuDeBS2RpbtAm+QFVA3wR+3fUtFHoBDJnC0jIXH0HWsgMY8inPLuOkd9chp4z20ALQLSA8cI9jYAIa2zjzjBd8gRafS1vgiUho/kAKcsCGTOGWvoOpkAtB3z8Hm8x2Ff5ADp4+lXAlIvcmwH/2Q==') repeat left top",padding:"12px",overflow:"auto"},'pre > code[class*="language-"]':{fontSize:"1em"},':not(pre) > code[class*="language-"]':{borderRadius:"5px",border:"1px solid #000",color:"#DCCF8F",background:"#181914 url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAMAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQACQYGBgcGCQcHCQ0IBwgNDwsJCQsPEQ4ODw4OERENDg4ODg0RERQUFhQUERoaHBwaGiYmJiYmKysrKysrKysrKwEJCAgJCgkMCgoMDwwODA8TDg4ODhMVDg4PDg4VGhMRERERExoXGhYWFhoXHR0aGh0dJCQjJCQrKysrKysrKysr/8AAEQgAjACMAwEiAAIRAQMRAf/EAF4AAQEBAAAAAAAAAAAAAAAAAAABBwEBAQAAAAAAAAAAAAAAAAAAAAIQAAEDAwIHAQEAAAAAAAAAAADwAREhYaExkUFRcYGxwdHh8REBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8AyGFEjHaBS2fDDs2zkhKmBKktb7km+ZwwCnXPkLVmCTMItj6AXFxRS465/BTnkAJvkLkJe+7AKKoi2AtRS2zuAWsCb5GOlBN8gKfmuGHZ8MFqIth3ALmFoFwbwKWyAlTAp17uKqBvgBD8sM4fTjhvAhkzhaRkBMKBrfs7jGPIpzy7gFrAqnC0C0gB0EWwBDW2cBVQwm+QtPpa3wBO3sVvszCnLAhkzgL5/RLf13cLQd8/AGlu0Cb5HTx9KuAEieGJEdcehS3eRTp2ATdt3CpIm+QtZwAhROXFeb7swp/ahaM3kBE/jSIUBc/AWrgBN8uNFAl+b7sAXFxFn2YLUU5Ns7gFX8C4ib+hN8gFWXwK3bZglxEJm+gKdciLPsFV/TClsgJUwKJ5FVA7tvIFrfZhVfGJDcsCKaYgAqv6YRbE+RWOWBtu7+AL3yRalXLyKqAIIfk+zARbDgFyEsncYwJvlgFRW+GEWntIi2P0BooyFxcNr8Ep3+ANLbMO+QyhvbiqdgC0kVvgUUiLYgBS2QtPbiVI1/sgOmG9uO+Y8DW+7jS2zAOnj6O2BndwuIAUtkdRN8gFoK3wwXMQyZwHVbClsuNLd4E3yAUR6FVDBR+BafQGt93LVMxJTv8ABts4CVLhcfYWsCb5kC9/BHdU8CLYFY5bMAd+eX9MGthhpbA1vu4B7+RKkaW2Yq4AQtVBBFsAJU/AuIXBhN8gGWnstefhiZyWvLAEnbYS1uzSFP6Jvn4Baxx70JKkQojLib5AVTey1jjgkKJGO0AKWyOm7N7cSpgSpAdPH0Tfd/gp1z5C1ZgKqN9J2wFxcUUuAFLZAm+QC0Fb4YUVRFsAOvj4KW2dwtYE3yAWk/wS/PLMKfmuGHZ8MAXF/Ja32Yi5haAKWz4Ydm2cSpgU693Atb7km+Zwwh+WGcPpxw3gAkzCLY+iYUDW/Z3Adc/gpzyFrAqnALkJe+7DoItgAtRS2zuKqGE3yAx0oJvkdvYrfZmALURbDuL5/RLf13cAuDeBS2RpbtAm+QFVA3wR+3fUtFHoBDJnC0jIXH0HWsgMY8inPLuOkd9chp4z20ALQLSA8cI9jYAIa2zjzjBd8gRafS1vgiUho/kAKcsCGTOGWvoOpkAtB3z8Hm8x2Ff5ADp4+lXAlIvcmwH/2Q==') repeat left top",padding:"2px 6px"},namespace:{Opacity:".7"},comment:{color:"#586e75",fontStyle:"italic"},prolog:{color:"#586e75",fontStyle:"italic"},doctype:{color:"#586e75",fontStyle:"italic"},cdata:{color:"#586e75",fontStyle:"italic"},number:{color:"#b89859"},string:{color:"#468966"},char:{color:"#468966"},builtin:{color:"#468966"},inserted:{color:"#468966"},"attr-name":{color:"#b89859"},operator:{color:"#dccf8f"},entity:{color:"#dccf8f",cursor:"help"},url:{color:"#dccf8f"},".language-css .token.string":{color:"#dccf8f"},".style .token.string":{color:"#dccf8f"},selector:{color:"#859900"},regex:{color:"#859900"},atrule:{color:"#cb4b16"},keyword:{color:"#cb4b16"},"attr-value":{color:"#468966"},function:{color:"#b58900"},variable:{color:"#b58900"},placeholder:{color:"#b58900"},property:{color:"#b89859"},tag:{color:"#ffb03b"},boolean:{color:"#b89859"},constant:{color:"#b89859"},symbol:{color:"#b89859"},important:{color:"#dc322f"},statement:{color:"#dc322f"},deleted:{color:"#dc322f"},punctuation:{color:"#dccf8f"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"}};e.default=t}(sx)),sx}var lx={},Z5;function h0e(){return Z5||(Z5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={"code[class*='language-']":{color:"#9efeff",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",fontFamily:"'Operator Mono', 'Fira Code', Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",fontWeight:"400",fontSize:"17px",lineHeight:"25px",letterSpacing:"0.5px",textShadow:"0 1px #222245"},"pre[class*='language-']":{color:"#9efeff",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",fontFamily:"'Operator Mono', 'Fira Code', Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",fontWeight:"400",fontSize:"17px",lineHeight:"25px",letterSpacing:"0.5px",textShadow:"0 1px #222245",padding:"2em",margin:"0.5em 0",overflow:"auto",background:"#1e1e3f"},"pre[class*='language-']::-moz-selection":{color:"inherit",background:"#a599e9"},"pre[class*='language-'] ::-moz-selection":{color:"inherit",background:"#a599e9"},"code[class*='language-']::-moz-selection":{color:"inherit",background:"#a599e9"},"code[class*='language-'] ::-moz-selection":{color:"inherit",background:"#a599e9"},"pre[class*='language-']::selection":{color:"inherit",background:"#a599e9"},"pre[class*='language-'] ::selection":{color:"inherit",background:"#a599e9"},"code[class*='language-']::selection":{color:"inherit",background:"#a599e9"},"code[class*='language-'] ::selection":{color:"inherit",background:"#a599e9"},":not(pre) > code[class*='language-']":{background:"#1e1e3f",padding:"0.1em",borderRadius:"0.3em"},"":{fontWeight:"400"},comment:{color:"#b362ff"},prolog:{color:"#b362ff"},cdata:{color:"#b362ff"},delimiter:{color:"#ff9d00"},keyword:{color:"#ff9d00"},selector:{color:"#ff9d00"},important:{color:"#ff9d00"},atrule:{color:"#ff9d00"},operator:{color:"rgb(255, 180, 84)",background:"none"},"attr-name":{color:"rgb(255, 180, 84)"},punctuation:{color:"#ffffff"},boolean:{color:"rgb(255, 98, 140)"},tag:{color:"rgb(255, 157, 0)"},"tag.punctuation":{color:"rgb(255, 157, 0)"},doctype:{color:"rgb(255, 157, 0)"},builtin:{color:"rgb(255, 157, 0)"},entity:{color:"#6897bb",background:"none"},symbol:{color:"#6897bb"},number:{color:"#ff628c"},property:{color:"#ff628c"},constant:{color:"#ff628c"},variable:{color:"#ff628c"},string:{color:"#a5ff90"},char:{color:"#a5ff90"},"attr-value":{color:"#a5c261"},"attr-value.punctuation":{color:"#a5c261"},"attr-value.punctuation:first-child":{color:"#a9b7c6"},url:{color:"#287bde",textDecoration:"underline",background:"none"},function:{color:"rgb(250, 208, 0)"},regex:{background:"#364135"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},inserted:{background:"#00ff00"},deleted:{background:"#ff000d"},"code.language-css .token.property":{color:"#a9b7c6"},"code.language-css .token.property + .token.punctuation":{color:"#a9b7c6"},"code.language-css .token.id":{color:"#ffc66d"},"code.language-css .token.selector > .token.class":{color:"#ffc66d"},"code.language-css .token.selector > .token.attribute":{color:"#ffc66d"},"code.language-css .token.selector > .token.pseudo-class":{color:"#ffc66d"},"code.language-css .token.selector > .token.pseudo-element":{color:"#ffc66d"},"class-name":{color:"#fb94ff"},".language-css .token.string":{background:"none"},".style .token.string":{background:"none"},".line-highlight.line-highlight":{marginTop:"36px",background:"linear-gradient(to right, rgba(179, 98, 255, 0.17), transparent)"},".line-highlight.line-highlight:before":{content:"''"},".line-highlight.line-highlight[data-end]:after":{content:"''"}};e.default=t}(lx)),lx}var cx={},X5;function b0e(){return X5||(X5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{color:"#839496",textShadow:"0 1px rgba(0, 0, 0, 0.3)",fontFamily:"Inconsolata, Monaco, Consolas, 'Courier New', Courier, monospace",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"#839496",textShadow:"0 1px rgba(0, 0, 0, 0.3)",fontFamily:"Inconsolata, Monaco, Consolas, 'Courier New', Courier, monospace",direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:".5em 0",overflow:"auto",borderRadius:"0.3em",background:"#002b36"},':not(pre) > code[class*="language-"]':{background:"#002b36",padding:".1em",borderRadius:".3em"},comment:{color:"#586e75"},prolog:{color:"#586e75"},doctype:{color:"#586e75"},cdata:{color:"#586e75"},punctuation:{color:"#93a1a1"},".namespace":{Opacity:".7"},property:{color:"#268bd2"},keyword:{color:"#268bd2"},tag:{color:"#268bd2"},"class-name":{color:"#FFFFB6",textDecoration:"underline"},boolean:{color:"#b58900"},constant:{color:"#b58900"},symbol:{color:"#dc322f"},deleted:{color:"#dc322f"},number:{color:"#859900"},selector:{color:"#859900"},"attr-name":{color:"#859900"},string:{color:"#859900"},char:{color:"#859900"},builtin:{color:"#859900"},inserted:{color:"#859900"},variable:{color:"#268bd2"},operator:{color:"#EDEDED"},function:{color:"#268bd2"},regex:{color:"#E9C062"},important:{color:"#fd971f",fontWeight:"bold"},entity:{color:"#FFFFB6",cursor:"help"},url:{color:"#96CBFE"},".language-css .token.string":{color:"#87C38A"},".style .token.string":{color:"#87C38A"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},atrule:{color:"#F9EE98"},"attr-value":{color:"#F9EE98"}};e.default=t}(cx)),cx}var ux={},Q5;function y0e(){return Q5||(Q5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3",background:"none",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",fontSize:"1em",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3",background:"none",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",fontSize:"1em",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:".5em 0",overflow:"auto",backgroundColor:"transparent !important",backgroundImage:"linear-gradient(to bottom, #2a2139 75%, #34294f)"},':not(pre) > code[class*="language-"]':{backgroundColor:"transparent !important",backgroundImage:"linear-gradient(to bottom, #2a2139 75%, #34294f)",padding:".1em",borderRadius:".3em",whiteSpace:"normal"},comment:{color:"#8e8e8e"},"block-comment":{color:"#8e8e8e"},prolog:{color:"#8e8e8e"},doctype:{color:"#8e8e8e"},cdata:{color:"#8e8e8e"},punctuation:{color:"#ccc"},tag:{color:"#e2777a"},"attr-name":{color:"#e2777a"},namespace:{color:"#e2777a"},number:{color:"#e2777a"},unit:{color:"#e2777a"},hexcode:{color:"#e2777a"},deleted:{color:"#e2777a"},property:{color:"#72f1b8",textShadow:"0 0 2px #100c0f, 0 0 10px #257c5575, 0 0 35px #21272475"},selector:{color:"#72f1b8",textShadow:"0 0 2px #100c0f, 0 0 10px #257c5575, 0 0 35px #21272475"},"function-name":{color:"#6196cc"},boolean:{color:"#fdfdfd",textShadow:"0 0 2px #001716, 0 0 3px #03edf975, 0 0 5px #03edf975, 0 0 8px #03edf975"},"selector.id":{color:"#fdfdfd",textShadow:"0 0 2px #001716, 0 0 3px #03edf975, 0 0 5px #03edf975, 0 0 8px #03edf975"},function:{color:"#fdfdfd",textShadow:"0 0 2px #001716, 0 0 3px #03edf975, 0 0 5px #03edf975, 0 0 8px #03edf975"},"class-name":{color:"#fff5f6",textShadow:"0 0 2px #000, 0 0 10px #fc1f2c75, 0 0 5px #fc1f2c75, 0 0 25px #fc1f2c75"},constant:{color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"},symbol:{color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"},important:{color:"#f4eee4",textShadow:"0 0 2px #393a33, 0 0 8px #f39f0575, 0 0 2px #f39f0575",fontWeight:"bold"},atrule:{color:"#f4eee4",textShadow:"0 0 2px #393a33, 0 0 8px #f39f0575, 0 0 2px #f39f0575"},keyword:{color:"#f4eee4",textShadow:"0 0 2px #393a33, 0 0 8px #f39f0575, 0 0 2px #f39f0575"},"selector.class":{color:"#f4eee4",textShadow:"0 0 2px #393a33, 0 0 8px #f39f0575, 0 0 2px #f39f0575"},builtin:{color:"#f4eee4",textShadow:"0 0 2px #393a33, 0 0 8px #f39f0575, 0 0 2px #f39f0575"},string:{color:"#f87c32"},char:{color:"#f87c32"},"attr-value":{color:"#f87c32"},regex:{color:"#f87c32"},variable:{color:"#f87c32"},operator:{color:"#67cdcc"},entity:{color:"#67cdcc",cursor:"help"},url:{color:"#67cdcc"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},inserted:{color:"green"}};e.default=t}(ux)),ux}var dx={},J5;function v0e(){return J5||(J5=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{color:"#393A34",fontFamily:'"Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace',direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",fontSize:".9em",lineHeight:"1.2em",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"#393A34",fontFamily:'"Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace',direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",fontSize:".9em",lineHeight:"1.2em",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:".5em 0",overflow:"auto",border:"1px solid #dddddd",backgroundColor:"white"},'pre > code[class*="language-"]':{fontSize:"1em"},'pre[class*="language-"]::-moz-selection':{background:"#C1DEF1"},'pre[class*="language-"] ::-moz-selection':{background:"#C1DEF1"},'code[class*="language-"]::-moz-selection':{background:"#C1DEF1"},'code[class*="language-"] ::-moz-selection':{background:"#C1DEF1"},'pre[class*="language-"]::selection':{background:"#C1DEF1"},'pre[class*="language-"] ::selection':{background:"#C1DEF1"},'code[class*="language-"]::selection':{background:"#C1DEF1"},'code[class*="language-"] ::selection':{background:"#C1DEF1"},':not(pre) > code[class*="language-"]':{padding:".2em",paddingTop:"1px",paddingBottom:"1px",background:"#f8f8f8",border:"1px solid #dddddd"},comment:{color:"#008000",fontStyle:"italic"},prolog:{color:"#008000",fontStyle:"italic"},doctype:{color:"#008000",fontStyle:"italic"},cdata:{color:"#008000",fontStyle:"italic"},namespace:{Opacity:".7"},string:{color:"#A31515"},punctuation:{color:"#393A34"},operator:{color:"#393A34"},url:{color:"#36acaa"},symbol:{color:"#36acaa"},number:{color:"#36acaa"},boolean:{color:"#36acaa"},variable:{color:"#36acaa"},constant:{color:"#36acaa"},inserted:{color:"#36acaa"},atrule:{color:"#0000ff"},keyword:{color:"#0000ff"},"attr-value":{color:"#0000ff"},".language-autohotkey .token.selector":{color:"#0000ff"},".language-json .token.boolean":{color:"#0000ff"},".language-json .token.number":{color:"#0000ff"},'code[class*="language-css"]':{color:"#0000ff"},function:{color:"#393A34"},deleted:{color:"#9a050f"},".language-autohotkey .token.tag":{color:"#9a050f"},selector:{color:"#800000"},".language-autohotkey .token.keyword":{color:"#00009f"},important:{color:"#e90",fontWeight:"bold"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},"class-name":{color:"#2B91AF"},".language-json .token.property":{color:"#2B91AF"},tag:{color:"#800000"},"attr-name":{color:"#ff0000"},property:{color:"#ff0000"},regex:{color:"#ff0000"},entity:{color:"#ff0000"},"directive.tag.tag":{background:"#ffff00",color:"#393A34"},".line-numbers.line-numbers .line-numbers-rows":{borderRightColor:"#a5a5a5"},".line-numbers .line-numbers-rows > span:before":{color:"#2B91AF"},".line-highlight.line-highlight":{background:"linear-gradient(to right, rgba(193, 222, 241, 0.2) 70%, rgba(221, 222, 241, 0))"}};e.default=t}(dx)),dx}var fx={},e3;function S0e(){return e3||(e3=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'pre[class*="language-"]':{color:"#d4d4d4",fontSize:"13px",textShadow:"none",fontFamily:'Menlo, Monaco, Consolas, "Andale Mono", "Ubuntu Mono", "Courier New", monospace',direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:".5em 0",overflow:"auto",background:"#1e1e1e"},'code[class*="language-"]':{color:"#d4d4d4",fontSize:"13px",textShadow:"none",fontFamily:'Menlo, Monaco, Consolas, "Andale Mono", "Ubuntu Mono", "Courier New", monospace',direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]::selection':{textShadow:"none",background:"#264F78"},'code[class*="language-"]::selection':{textShadow:"none",background:"#264F78"},'pre[class*="language-"] *::selection':{textShadow:"none",background:"#264F78"},'code[class*="language-"] *::selection':{textShadow:"none",background:"#264F78"},':not(pre) > code[class*="language-"]':{padding:".1em .3em",borderRadius:".3em",color:"#db4c69",background:"#1e1e1e"},".namespace":{Opacity:".7"},"doctype.doctype-tag":{color:"#569CD6"},"doctype.name":{color:"#9cdcfe"},comment:{color:"#6a9955"},prolog:{color:"#6a9955"},punctuation:{color:"#d4d4d4"},".language-html .language-css .token.punctuation":{color:"#d4d4d4"},".language-html .language-javascript .token.punctuation":{color:"#d4d4d4"},property:{color:"#9cdcfe"},tag:{color:"#569cd6"},boolean:{color:"#569cd6"},number:{color:"#b5cea8"},constant:{color:"#9cdcfe"},symbol:{color:"#b5cea8"},inserted:{color:"#b5cea8"},unit:{color:"#b5cea8"},selector:{color:"#d7ba7d"},"attr-name":{color:"#9cdcfe"},string:{color:"#ce9178"},char:{color:"#ce9178"},builtin:{color:"#ce9178"},deleted:{color:"#ce9178"},".language-css .token.string.url":{textDecoration:"underline"},operator:{color:"#d4d4d4"},entity:{color:"#569cd6"},"operator.arrow":{color:"#569CD6"},atrule:{color:"#ce9178"},"atrule.rule":{color:"#c586c0"},"atrule.url":{color:"#9cdcfe"},"atrule.url.function":{color:"#dcdcaa"},"atrule.url.punctuation":{color:"#d4d4d4"},keyword:{color:"#569CD6"},"keyword.module":{color:"#c586c0"},"keyword.control-flow":{color:"#c586c0"},function:{color:"#dcdcaa"},"function.maybe-class-name":{color:"#dcdcaa"},regex:{color:"#d16969"},important:{color:"#569cd6"},italic:{fontStyle:"italic"},"class-name":{color:"#4ec9b0"},"maybe-class-name":{color:"#4ec9b0"},console:{color:"#9cdcfe"},parameter:{color:"#9cdcfe"},interpolation:{color:"#9cdcfe"},"punctuation.interpolation-punctuation":{color:"#569cd6"},variable:{color:"#9cdcfe"},"imports.maybe-class-name":{color:"#9cdcfe"},"exports.maybe-class-name":{color:"#9cdcfe"},escape:{color:"#d7ba7d"},"tag.punctuation":{color:"#808080"},cdata:{color:"#808080"},"attr-value":{color:"#ce9178"},"attr-value.punctuation":{color:"#ce9178"},"attr-value.punctuation.attr-equals":{color:"#d4d4d4"},namespace:{color:"#4ec9b0"},'pre[class*="language-javascript"]':{color:"#9cdcfe"},'code[class*="language-javascript"]':{color:"#9cdcfe"},'pre[class*="language-jsx"]':{color:"#9cdcfe"},'code[class*="language-jsx"]':{color:"#9cdcfe"},'pre[class*="language-typescript"]':{color:"#9cdcfe"},'code[class*="language-typescript"]':{color:"#9cdcfe"},'pre[class*="language-tsx"]':{color:"#9cdcfe"},'code[class*="language-tsx"]':{color:"#9cdcfe"},'pre[class*="language-css"]':{color:"#ce9178"},'code[class*="language-css"]':{color:"#ce9178"},'pre[class*="language-html"]':{color:"#d4d4d4"},'code[class*="language-html"]':{color:"#d4d4d4"},".language-regex .token.anchor":{color:"#dcdcaa"},".language-html .token.punctuation":{color:"#808080"},'pre[class*="language-"] > code[class*="language-"]':{position:"relative",zIndex:"1"},".line-highlight.line-highlight":{background:"#f7ebc6",boxShadow:"inset 5px 0 0 #f7d87c",zIndex:"0"}};e.default=t}(fx)),fx}var px={},t3;function w0e(){return t3||(t3=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{MozTabSize:"2",OTabSize:"2",tabSize:"2",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",whiteSpace:"pre-wrap",wordWrap:"normal",fontFamily:'Menlo, Monaco, "Courier New", monospace',fontSize:"14px",color:"#76d9e6",textShadow:"none"},'pre[class*="language-"]':{MozTabSize:"2",OTabSize:"2",tabSize:"2",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",whiteSpace:"pre-wrap",wordWrap:"normal",fontFamily:'Menlo, Monaco, "Courier New", monospace',fontSize:"14px",color:"#76d9e6",textShadow:"none",background:"#2a2a2a",padding:"15px",borderRadius:"4px",border:"1px solid #e1e1e8",overflow:"auto",position:"relative"},'pre > code[class*="language-"]':{fontSize:"1em"},':not(pre) > code[class*="language-"]':{background:"#2a2a2a",padding:"0.15em 0.2em 0.05em",borderRadius:".3em",border:"0.13em solid #7a6652",boxShadow:"1px 1px 0.3em -0.1em #000 inset"},'pre[class*="language-"] code':{whiteSpace:"pre",display:"block"},namespace:{Opacity:".7"},comment:{color:"#6f705e"},prolog:{color:"#6f705e"},doctype:{color:"#6f705e"},cdata:{color:"#6f705e"},operator:{color:"#a77afe"},boolean:{color:"#a77afe"},number:{color:"#a77afe"},"attr-name":{color:"#e6d06c"},string:{color:"#e6d06c"},entity:{color:"#e6d06c",cursor:"help"},url:{color:"#e6d06c"},".language-css .token.string":{color:"#e6d06c"},".style .token.string":{color:"#e6d06c"},selector:{color:"#a6e22d"},inserted:{color:"#a6e22d"},atrule:{color:"#ef3b7d"},"attr-value":{color:"#ef3b7d"},keyword:{color:"#ef3b7d"},important:{color:"#ef3b7d",fontWeight:"bold"},deleted:{color:"#ef3b7d"},regex:{color:"#76d9e6"},statement:{color:"#76d9e6",fontWeight:"bold"},placeholder:{color:"#fff"},variable:{color:"#fff"},bold:{fontWeight:"bold"},punctuation:{color:"#bebec5"},italic:{fontStyle:"italic"},"code.language-markup":{color:"#f9f9f9"},"code.language-markup .token.tag":{color:"#ef3b7d"},"code.language-markup .token.attr-name":{color:"#a6e22d"},"code.language-markup .token.attr-value":{color:"#e6d06c"},"code.language-markup .token.style":{color:"#76d9e6"},"code.language-markup .token.script":{color:"#76d9e6"},"code.language-markup .token.script .token.keyword":{color:"#76d9e6"},".line-highlight.line-highlight":{padding:"0",background:"rgba(255, 255, 255, 0.08)"},".line-highlight.line-highlight:before":{padding:"0.2em 0.5em",backgroundColor:"rgba(255, 255, 255, 0.4)",color:"black",height:"1em",lineHeight:"1em",boxShadow:"0 1px 1px rgba(255, 255, 255, 0.7)"},".line-highlight.line-highlight[data-end]:after":{padding:"0.2em 0.5em",backgroundColor:"rgba(255, 255, 255, 0.4)",color:"black",height:"1em",lineHeight:"1em",boxShadow:"0 1px 1px rgba(255, 255, 255, 0.7)"}};e.default=t}(px)),px}var gx={},n3;function E0e(){return n3||(n3=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={'code[class*="language-"]':{color:"#22da17",fontFamily:"monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",lineHeight:"25px",fontSize:"18px",margin:"5px 0"},'pre[class*="language-"]':{color:"white",fontFamily:"monospace",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",lineHeight:"25px",fontSize:"18px",margin:"0.5em 0",background:"#0a143c",padding:"1em",overflow:"auto"},'pre[class*="language-"] *':{fontFamily:"monospace"},':not(pre) > code[class*="language-"]':{color:"white",background:"#0a143c",padding:"0.1em",borderRadius:"0.3em",whiteSpace:"normal"},'pre[class*="language-"]::-moz-selection':{textShadow:"none",background:"rgba(29, 59, 83, 0.99)"},'pre[class*="language-"] ::-moz-selection':{textShadow:"none",background:"rgba(29, 59, 83, 0.99)"},'code[class*="language-"]::-moz-selection':{textShadow:"none",background:"rgba(29, 59, 83, 0.99)"},'code[class*="language-"] ::-moz-selection':{textShadow:"none",background:"rgba(29, 59, 83, 0.99)"},'pre[class*="language-"]::selection':{textShadow:"none",background:"rgba(29, 59, 83, 0.99)"},'pre[class*="language-"] ::selection':{textShadow:"none",background:"rgba(29, 59, 83, 0.99)"},'code[class*="language-"]::selection':{textShadow:"none",background:"rgba(29, 59, 83, 0.99)"},'code[class*="language-"] ::selection':{textShadow:"none",background:"rgba(29, 59, 83, 0.99)"},comment:{color:"rgb(99, 119, 119)",fontStyle:"italic"},prolog:{color:"rgb(99, 119, 119)",fontStyle:"italic"},cdata:{color:"rgb(99, 119, 119)",fontStyle:"italic"},punctuation:{color:"rgb(199, 146, 234)"},".namespace":{color:"rgb(178, 204, 214)"},deleted:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"},symbol:{color:"rgb(128, 203, 196)"},property:{color:"rgb(128, 203, 196)"},tag:{color:"rgb(127, 219, 202)"},operator:{color:"rgb(127, 219, 202)"},keyword:{color:"rgb(127, 219, 202)"},boolean:{color:"rgb(255, 88, 116)"},number:{color:"rgb(247, 140, 108)"},constant:{color:"rgb(34 183 199)"},function:{color:"rgb(34 183 199)"},builtin:{color:"rgb(34 183 199)"},char:{color:"rgb(34 183 199)"},selector:{color:"rgb(199, 146, 234)",fontStyle:"italic"},doctype:{color:"rgb(199, 146, 234)",fontStyle:"italic"},"attr-name":{color:"rgb(173, 219, 103)",fontStyle:"italic"},inserted:{color:"rgb(173, 219, 103)",fontStyle:"italic"},string:{color:"rgb(173, 219, 103)"},url:{color:"rgb(173, 219, 103)"},entity:{color:"rgb(173, 219, 103)"},".language-css .token.string":{color:"rgb(173, 219, 103)"},".style .token.string":{color:"rgb(173, 219, 103)"},"class-name":{color:"rgb(255, 203, 139)"},atrule:{color:"rgb(255, 203, 139)"},"attr-value":{color:"rgb(255, 203, 139)"},regex:{color:"rgb(214, 222, 235)"},important:{color:"rgb(214, 222, 235)",fontWeight:"bold"},variable:{color:"rgb(214, 222, 235)"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"}};e.default=t}(gx)),gx}(function(e){var t=Owe;Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"a11yDark",{enumerable:!0,get:function(){return u.default}}),Object.defineProperty(e,"atomDark",{enumerable:!0,get:function(){return d.default}}),Object.defineProperty(e,"base16AteliersulphurpoolLight",{enumerable:!0,get:function(){return g.default}}),Object.defineProperty(e,"cb",{enumerable:!0,get:function(){return m.default}}),Object.defineProperty(e,"coldarkCold",{enumerable:!0,get:function(){return b.default}}),Object.defineProperty(e,"coldarkDark",{enumerable:!0,get:function(){return y.default}}),Object.defineProperty(e,"coy",{enumerable:!0,get:function(){return n.default}}),Object.defineProperty(e,"coyWithoutShadows",{enumerable:!0,get:function(){return w.default}}),Object.defineProperty(e,"darcula",{enumerable:!0,get:function(){return v.default}}),Object.defineProperty(e,"dark",{enumerable:!0,get:function(){return r.default}}),Object.defineProperty(e,"dracula",{enumerable:!0,get:function(){return h.default}}),Object.defineProperty(e,"duotoneDark",{enumerable:!0,get:function(){return S.default}}),Object.defineProperty(e,"duotoneEarth",{enumerable:!0,get:function(){return E.default}}),Object.defineProperty(e,"duotoneForest",{enumerable:!0,get:function(){return k.default}}),Object.defineProperty(e,"duotoneLight",{enumerable:!0,get:function(){return x.default}}),Object.defineProperty(e,"duotoneSea",{enumerable:!0,get:function(){return C.default}}),Object.defineProperty(e,"duotoneSpace",{enumerable:!0,get:function(){return _.default}}),Object.defineProperty(e,"funky",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(e,"ghcolors",{enumerable:!0,get:function(){return R.default}}),Object.defineProperty(e,"gruvboxDark",{enumerable:!0,get:function(){return T.default}}),Object.defineProperty(e,"gruvboxLight",{enumerable:!0,get:function(){return L.default}}),Object.defineProperty(e,"holiTheme",{enumerable:!0,get:function(){return D.default}}),Object.defineProperty(e,"hopscotch",{enumerable:!0,get:function(){return H.default}}),Object.defineProperty(e,"lucario",{enumerable:!0,get:function(){return z.default}}),Object.defineProperty(e,"materialDark",{enumerable:!0,get:function(){return M.default}}),Object.defineProperty(e,"materialLight",{enumerable:!0,get:function(){return U.default}}),Object.defineProperty(e,"materialOceanic",{enumerable:!0,get:function(){return X.default}}),Object.defineProperty(e,"nightOwl",{enumerable:!0,get:function(){return j.default}}),Object.defineProperty(e,"nord",{enumerable:!0,get:function(){return O.default}}),Object.defineProperty(e,"okaidia",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(e,"oneDark",{enumerable:!0,get:function(){return A.default}}),Object.defineProperty(e,"oneLight",{enumerable:!0,get:function(){return V.default}}),Object.defineProperty(e,"pojoaque",{enumerable:!0,get:function(){return P.default}}),Object.defineProperty(e,"prism",{enumerable:!0,get:function(){return c.default}}),Object.defineProperty(e,"shadesOfPurple",{enumerable:!0,get:function(){return N.default}}),Object.defineProperty(e,"solarizedDarkAtom",{enumerable:!0,get:function(){return K.default}}),Object.defineProperty(e,"solarizedlight",{enumerable:!0,get:function(){return i.default}}),Object.defineProperty(e,"synthwave84",{enumerable:!0,get:function(){return ae.default}}),Object.defineProperty(e,"tomorrow",{enumerable:!0,get:function(){return s.default}}),Object.defineProperty(e,"twilight",{enumerable:!0,get:function(){return l.default}}),Object.defineProperty(e,"vs",{enumerable:!0,get:function(){return ne.default}}),Object.defineProperty(e,"vscDarkPlus",{enumerable:!0,get:function(){return Q.default}}),Object.defineProperty(e,"xonokai",{enumerable:!0,get:function(){return pe.default}}),Object.defineProperty(e,"zTouch",{enumerable:!0,get:function(){return he.default}});var n=t(Dwe()),r=t(Lwe()),a=t(Mwe()),o=t(Pwe()),i=t($we()),s=t(Fwe()),l=t(jwe()),c=t(zwe()),u=t(Uwe()),d=t(Bwe()),g=t(Hwe()),m=t(Vwe()),b=t(qwe()),y=t(Gwe()),w=t(Wwe()),v=t(Kwe()),h=t(Ywe()),S=t(Zwe()),E=t(Xwe()),k=t(Qwe()),x=t(Jwe()),C=t(e0e()),_=t(t0e()),R=t(n0e()),T=t(r0e()),L=t(a0e()),D=t(o0e()),H=t(i0e()),z=t(s0e()),M=t(l0e()),U=t(c0e()),X=t(u0e()),j=t(d0e()),O=t(f0e()),A=t(p0e()),V=t(g0e()),P=t(m0e()),N=t(h0e()),K=t(b0e()),ae=t(y0e()),ne=t(v0e()),Q=t(S0e()),pe=t(w0e()),he=t(E0e())})(fz);const x0e={javascript:".js",python:".py",java:".java",c:".c",cpp:".cpp","c++":".cpp","c#":".cs",ruby:".rb",php:".php",swift:".swift","objective-c":".m",kotlin:".kt",typescript:".ts",go:".go",perl:".pl",rust:".rs",scala:".scala",haskell:".hs",lua:".lua",shell:".sh",sql:".sql",html:".html",css:".css"},k0e=(e,t=!1)=>{const n="ABCDEFGHJKLMNPQRSTUVWXY3456789";let r="";for(let a=0;a{const n=()=>{if(typeof window>"u")return;const a=x0e[e]||".file",o=`file-${k0e(3,!0)}${a}`,i=window.prompt("Enter file name",o);if(!i)return;const s=new Blob([t],{type:"text/plain"}),l=URL.createObjectURL(s),c=document.createElement("a");c.download=i,c.href=l,c.style.display="none",document.body.appendChild(c),c.click(),document.body.removeChild(c),URL.revokeObjectURL(l)},r=()=>{console.log("copy")};return f.jsxs("div",{className:"codeblock relative w-full bg-zinc-950 font-sans",children:[f.jsxs("div",{className:"flex w-full items-center justify-between bg-zinc-800 px-6 py-2 pr-4 text-zinc-100",children:[f.jsx("span",{className:"text-xs lowercase",children:e}),f.jsxs("div",{className:"flex items-center space-x-1",children:[f.jsxs(ue,{variant:"ghost",size:"icon",onClick:n,children:[f.jsx(Cq,{}),f.jsx("span",{className:"sr-only",children:"Download"})]}),f.jsxs(ue,{variant:"ghost",size:"icon",className:"text-xs hover:bg-zinc-800 focus-visible:ring-1 focus-visible:ring-slate-700 focus-visible:ring-offset-0",onClick:r,children:[f.jsx(Pm,{}),f.jsx("span",{className:"sr-only",children:"Copy code"})]})]})]}),f.jsx(Iwe,{language:e,style:fz.coldarkDark,PreTag:"div",showLineNumbers:!0,customStyle:{margin:0,width:"100%",background:"transparent",padding:"1.5rem 1rem"},lineNumberStyle:{userSelect:"none"},codeTagProps:{style:{fontSize:"0.9rem",fontFamily:"var(--font-mono)"}},children:t})]})});gz.displayName="CodeBlock";function C0e(e,t){const n=t||{};return(e[e.length-1]===""?[...e,""]:e).join((n.padRight?" ":"")+","+(n.padLeft===!1?"":" ")).trim()}const _0e=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,A0e=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,T0e={};function r3(e,t){return((t||T0e).jsx?A0e:_0e).test(e)}const R0e=/[ \t\n\f\r]/g;function N0e(e){return typeof e=="object"?e.type==="text"?a3(e.value):!1:a3(e)}function a3(e){return e.replace(R0e,"")===""}class Cf{constructor(t,n,r){this.property=t,this.normal=n,r&&(this.space=r)}}Cf.prototype.property={};Cf.prototype.normal={};Cf.prototype.space=null;function mz(e,t){const n={},r={};let a=-1;for(;++a4&&n.slice(0,4)==="data"&&M0e.test(t)){if(t.charAt(4)==="-"){const o=t.slice(5).replace(i3,j0e);r="data"+o.charAt(0).toUpperCase()+o.slice(1)}else{const o=t.slice(4);if(!i3.test(o)){let i=o.replace(P0e,F0e);i.charAt(0)!=="-"&&(i="-"+i),t="data"+i}}a=PA}return new a(r,t)}function F0e(e){return"-"+e.toLowerCase()}function j0e(e){return e.charAt(1).toUpperCase()}const z0e={classId:"classID",dataType:"datatype",itemId:"itemID",strokeDashArray:"strokeDasharray",strokeDashOffset:"strokeDashoffset",strokeLineCap:"strokeLinecap",strokeLineJoin:"strokeLinejoin",strokeMiterLimit:"strokeMiterlimit",typeOf:"typeof",xLinkActuate:"xlinkActuate",xLinkArcRole:"xlinkArcrole",xLinkHref:"xlinkHref",xLinkRole:"xlinkRole",xLinkShow:"xlinkShow",xLinkTitle:"xlinkTitle",xLinkType:"xlinkType",xmlnsXLink:"xmlnsXlink"},U0e=mz([yz,bz,wz,Ez,D0e],"html"),$A=mz([yz,bz,wz,Ez,L0e],"svg");function B0e(e){return e.join(" ").trim()}var xz={},s3=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,H0e=/\n/g,V0e=/^\s*/,q0e=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,G0e=/^:\s*/,W0e=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,K0e=/^[;\s]*/,Y0e=/^\s+|\s+$/g,Z0e=` -`,l3="/",c3="*",Qi="",X0e="comment",Q0e="declaration",J0e=function(e,t){if(typeof e!="string")throw new TypeError("First argument must be a string");if(!e)return[];t=t||{};var n=1,r=1;function a(b){var y=b.match(H0e);y&&(n+=y.length);var w=b.lastIndexOf(Z0e);r=~w?b.length-w:r+b.length}function o(){var b={line:n,column:r};return function(y){return y.position=new i(b),c(),y}}function i(b){this.start=b,this.end={line:n,column:r},this.source=t.source}i.prototype.content=e;function s(b){var y=new Error(t.source+":"+n+":"+r+": "+b);if(y.reason=b,y.filename=t.source,y.line=n,y.column=r,y.source=e,!t.silent)throw y}function l(b){var y=b.exec(e);if(y){var w=y[0];return a(w),e=e.slice(w.length),y}}function c(){l(V0e)}function u(b){var y;for(b=b||[];y=d();)y!==!1&&b.push(y);return b}function d(){var b=o();if(!(l3!=e.charAt(0)||c3!=e.charAt(1))){for(var y=2;Qi!=e.charAt(y)&&(c3!=e.charAt(y)||l3!=e.charAt(y+1));)++y;if(y+=2,Qi===e.charAt(y-1))return s("End of comment missing");var w=e.slice(2,y-2);return r+=2,a(w),e=e.slice(y),r+=2,b({type:X0e,comment:w})}}function g(){var b=o(),y=l(q0e);if(y){if(d(),!l(G0e))return s("property missing ':'");var w=l(W0e),v=b({type:Q0e,property:u3(y[0].replace(s3,Qi)),value:w?u3(w[0].replace(s3,Qi)):Qi});return l(K0e),v}}function m(){var b=[];u(b);for(var y;y=g();)y!==!1&&(b.push(y),u(b));return b}return c(),m()};function u3(e){return e?e.replace(Y0e,Qi):Qi}var eEe=nn&&nn.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(xz,"__esModule",{value:!0});var tEe=eEe(J0e);function nEe(e,t){var n=null;if(!e||typeof e!="string")return n;var r=(0,tEe.default)(e),a=typeof t=="function";return r.forEach(function(o){if(o.type==="declaration"){var i=o.property,s=o.value;a?t(i,s,o):s&&(n=n||{},n[i]=s)}}),n}var d3=xz.default=nEe;const rEe=d3.default||d3,kz=Cz("end"),FA=Cz("start");function Cz(e){return t;function t(n){const r=n&&n.position&&n.position[e]||{};if(typeof r.line=="number"&&r.line>0&&typeof r.column=="number"&&r.column>0)return{line:r.line,column:r.column,offset:typeof r.offset=="number"&&r.offset>-1?r.offset:void 0}}}function aEe(e){const t=FA(e),n=kz(e);if(t&&n)return{start:t,end:n}}function Yu(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?f3(e.position):"start"in e||"end"in e?f3(e):"line"in e||"column"in e?jk(e):""}function jk(e){return p3(e&&e.line)+":"+p3(e&&e.column)}function f3(e){return jk(e&&e.start)+"-"+jk(e&&e.end)}function p3(e){return e&&typeof e=="number"?e:1}class Bn extends Error{constructor(t,n,r){super(),typeof n=="string"&&(r=n,n=void 0);let a="",o={},i=!1;if(n&&("line"in n&&"column"in n?o={place:n}:"start"in n&&"end"in n?o={place:n}:"type"in n?o={ancestors:[n],place:n.position}:o={...n}),typeof t=="string"?a=t:!o.cause&&t&&(i=!0,a=t.message,o.cause=t),!o.ruleId&&!o.source&&typeof r=="string"){const l=r.indexOf(":");l===-1?o.ruleId=r:(o.source=r.slice(0,l),o.ruleId=r.slice(l+1))}if(!o.place&&o.ancestors&&o.ancestors){const l=o.ancestors[o.ancestors.length-1];l&&(o.place=l.position)}const s=o.place&&"start"in o.place?o.place.start:o.place;this.ancestors=o.ancestors||void 0,this.cause=o.cause||void 0,this.column=s?s.column:void 0,this.fatal=void 0,this.file,this.message=a,this.line=s?s.line:void 0,this.name=Yu(o.place)||"1:1",this.place=o.place||void 0,this.reason=this.message,this.ruleId=o.ruleId||void 0,this.source=o.source||void 0,this.stack=i&&o.cause&&typeof o.cause.stack=="string"?o.cause.stack:"",this.actual,this.expected,this.note,this.url}}Bn.prototype.file="";Bn.prototype.name="";Bn.prototype.reason="";Bn.prototype.message="";Bn.prototype.stack="";Bn.prototype.column=void 0;Bn.prototype.line=void 0;Bn.prototype.ancestors=void 0;Bn.prototype.cause=void 0;Bn.prototype.fatal=void 0;Bn.prototype.place=void 0;Bn.prototype.ruleId=void 0;Bn.prototype.source=void 0;const jA={}.hasOwnProperty,oEe=new Map,iEe=/[A-Z]/g,sEe=/-([a-z])/g,lEe=new Set(["table","tbody","thead","tfoot","tr"]),cEe=new Set(["td","th"]),_z="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function uEe(e,t){if(!t||t.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const n=t.filePath||void 0;let r;if(t.development){if(typeof t.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");r=yEe(n,t.jsxDEV)}else{if(typeof t.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof t.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");r=bEe(n,t.jsx,t.jsxs)}const a={Fragment:t.Fragment,ancestors:[],components:t.components||{},create:r,elementAttributeNameCase:t.elementAttributeNameCase||"react",evaluater:t.createEvaluater?t.createEvaluater():void 0,filePath:n,ignoreInvalidStyle:t.ignoreInvalidStyle||!1,passKeys:t.passKeys!==!1,passNode:t.passNode||!1,schema:t.space==="svg"?$A:U0e,stylePropertyNameCase:t.stylePropertyNameCase||"dom",tableCellAlignToStyle:t.tableCellAlignToStyle!==!1},o=Az(a,e,void 0);return o&&typeof o!="string"?o:a.create(e,a.Fragment,{children:o||void 0},void 0)}function Az(e,t,n){if(t.type==="element")return dEe(e,t,n);if(t.type==="mdxFlowExpression"||t.type==="mdxTextExpression")return fEe(e,t);if(t.type==="mdxJsxFlowElement"||t.type==="mdxJsxTextElement")return gEe(e,t,n);if(t.type==="mdxjsEsm")return pEe(e,t);if(t.type==="root")return mEe(e,t,n);if(t.type==="text")return hEe(e,t)}function dEe(e,t,n){const r=e.schema;let a=r;t.tagName.toLowerCase()==="svg"&&r.space==="html"&&(a=$A,e.schema=a),e.ancestors.push(t);const o=Rz(e,t.tagName,!1),i=vEe(e,t);let s=UA(e,t);return lEe.has(t.tagName)&&(s=s.filter(function(l){return typeof l=="string"?!N0e(l):!0})),Tz(e,i,o,t),zA(i,s),e.ancestors.pop(),e.schema=r,e.create(t,o,i,n)}function fEe(e,t){if(t.data&&t.data.estree&&e.evaluater){const r=t.data.estree.body[0];return r.type,e.evaluater.evaluateExpression(r.expression)}Rd(e,t.position)}function pEe(e,t){if(t.data&&t.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(t.data.estree);Rd(e,t.position)}function gEe(e,t,n){const r=e.schema;let a=r;t.name==="svg"&&r.space==="html"&&(a=$A,e.schema=a),e.ancestors.push(t);const o=t.name===null?e.Fragment:Rz(e,t.name,!0),i=SEe(e,t),s=UA(e,t);return Tz(e,i,o,t),zA(i,s),e.ancestors.pop(),e.schema=r,e.create(t,o,i,n)}function mEe(e,t,n){const r={};return zA(r,UA(e,t)),e.create(t,e.Fragment,r,n)}function hEe(e,t){return t.value}function Tz(e,t,n,r){typeof n!="string"&&n!==e.Fragment&&e.passNode&&(t.node=r)}function zA(e,t){if(t.length>0){const n=t.length>1?t:t[0];n&&(e.children=n)}}function bEe(e,t,n){return r;function r(a,o,i,s){const c=Array.isArray(i.children)?n:t;return s?c(o,i,s):c(o,i)}}function yEe(e,t){return n;function n(r,a,o,i){const s=Array.isArray(o.children),l=FA(r);return t(a,o,i,s,{columnNumber:l?l.column-1:void 0,fileName:e,lineNumber:l?l.line:void 0},void 0)}}function vEe(e,t){const n={};let r,a;for(a in t.properties)if(a!=="children"&&jA.call(t.properties,a)){const o=wEe(e,a,t.properties[a]);if(o){const[i,s]=o;e.tableCellAlignToStyle&&i==="align"&&typeof s=="string"&&cEe.has(t.tagName)?r=s:n[i]=s}}if(r){const o=n.style||(n.style={});o[e.stylePropertyNameCase==="css"?"text-align":"textAlign"]=r}return n}function SEe(e,t){const n={};for(const r of t.attributes)if(r.type==="mdxJsxExpressionAttribute")if(r.data&&r.data.estree&&e.evaluater){const o=r.data.estree.body[0];o.type;const i=o.expression;i.type;const s=i.properties[0];s.type,Object.assign(n,e.evaluater.evaluateExpression(s.argument))}else Rd(e,t.position);else{const a=r.name;let o;if(r.value&&typeof r.value=="object")if(r.value.data&&r.value.data.estree&&e.evaluater){const s=r.value.data.estree.body[0];s.type,o=e.evaluater.evaluateExpression(s.expression)}else Rd(e,t.position);else o=r.value===null?!0:r.value;n[a]=o}return n}function UA(e,t){const n=[];let r=-1;const a=e.passKeys?new Map:oEe;for(;++ri))return;const C=t.events.length;let _=C,R,T;for(;_--;)if(t.events[_][0]==="exit"&&t.events[_][1].type==="chunkFlow"){if(R){T=t.events[_][1].end;break}R=!0}for(v(r),x=C;xS;){const k=n[E];t.containerState=k[1],k[0].exit.call(t,e)}n.length=S}function h(){a.write([null]),o=void 0,a=void 0,t.containerState._closeFlow=void 0}}function IEe(e,t,n){return ct(e,e.attempt(this.parser.constructs.document,t,n),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}const OEe={tokenize:DEe};function DEe(e){const t=this,n=e.attempt(Ef,r,e.attempt(this.parser.constructs.flowInitial,a,ct(e,e.attempt(this.parser.constructs.flow,a,e.attempt(Hue,a)),"linePrefix")));return n;function r(o){if(o===null){e.consume(o);return}return e.enter("lineEndingBlank"),e.consume(o),e.exit("lineEndingBlank"),t.currentConstruct=void 0,n}function a(o){if(o===null){e.consume(o);return}return e.enter("lineEnding"),e.consume(o),e.exit("lineEnding"),t.currentConstruct=void 0,n}}const LEe={resolveAll:Iz()},MEe=Nz("string"),PEe=Nz("text");function Nz(e){return{tokenize:t,resolveAll:Iz(e==="text"?$Ee:void 0)};function t(n){const r=this,a=this.parser.constructs[e],o=n.attempt(a,i,s);return i;function i(u){return c(u)?o(u):s(u)}function s(u){if(u===null){n.consume(u);return}return n.enter("data"),n.consume(u),l}function l(u){return c(u)?(n.exit("data"),o(u)):(n.consume(u),l)}function c(u){if(u===null)return!0;const d=a[u];let g=-1;if(d)for(;++g-1){const s=i[0];typeof s=="string"?i[0]=s.slice(r):i.shift()}o>0&&i.push(e[a].slice(0,o))}return i}function zEe(e,t){let n=-1;const r=[];let a;for(;++n0){const Tn=De.tokenStack[De.tokenStack.length-1];(Tn[1]||h3).call(De,void 0,Tn[0])}for(le.position={start:Fo(Z.length>0?Z[0][1].start:{line:1,column:1,offset:0}),end:Fo(Z.length>0?Z[Z.length-2][1].end:{line:1,column:1,offset:0})},ft=-1;++ft1?"-"+s:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(i)}]};e.patch(t,l);const c={type:"element",tagName:"sup",properties:{},children:[l]};return e.patch(t,c),e.applyData(t,c)}function uxe(e,t){const n={type:"element",tagName:"h"+t.depth,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function dxe(e,t){if(e.options.allowDangerousHtml){const n={type:"raw",value:t.value};return e.patch(t,n),e.applyData(t,n)}}function Lz(e,t){const n=t.referenceType;let r="]";if(n==="collapsed"?r+="[]":n==="full"&&(r+="["+(t.label||t.identifier)+"]"),t.type==="imageReference")return[{type:"text",value:"!["+t.alt+r}];const a=e.all(t),o=a[0];o&&o.type==="text"?o.value="["+o.value:a.unshift({type:"text",value:"["});const i=a[a.length-1];return i&&i.type==="text"?i.value+=r:a.push({type:"text",value:r}),a}function fxe(e,t){const n=String(t.identifier).toUpperCase(),r=e.definitionById.get(n);if(!r)return Lz(e,t);const a={src:Hc(r.url||""),alt:t.alt};r.title!==null&&r.title!==void 0&&(a.title=r.title);const o={type:"element",tagName:"img",properties:a,children:[]};return e.patch(t,o),e.applyData(t,o)}function pxe(e,t){const n={src:Hc(t.url)};t.alt!==null&&t.alt!==void 0&&(n.alt=t.alt),t.title!==null&&t.title!==void 0&&(n.title=t.title);const r={type:"element",tagName:"img",properties:n,children:[]};return e.patch(t,r),e.applyData(t,r)}function gxe(e,t){const n={type:"text",value:t.value.replace(/\r?\n|\r/g," ")};e.patch(t,n);const r={type:"element",tagName:"code",properties:{},children:[n]};return e.patch(t,r),e.applyData(t,r)}function mxe(e,t){const n=String(t.identifier).toUpperCase(),r=e.definitionById.get(n);if(!r)return Lz(e,t);const a={href:Hc(r.url||"")};r.title!==null&&r.title!==void 0&&(a.title=r.title);const o={type:"element",tagName:"a",properties:a,children:e.all(t)};return e.patch(t,o),e.applyData(t,o)}function hxe(e,t){const n={href:Hc(t.url)};t.title!==null&&t.title!==void 0&&(n.title=t.title);const r={type:"element",tagName:"a",properties:n,children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function bxe(e,t,n){const r=e.all(t),a=n?yxe(n):Mz(t),o={},i=[];if(typeof t.checked=="boolean"){const u=r[0];let d;u&&u.type==="element"&&u.tagName==="p"?d=u:(d={type:"element",tagName:"p",properties:{},children:[]},r.unshift(d)),d.children.length>0&&d.children.unshift({type:"text",value:" "}),d.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:t.checked,disabled:!0},children:[]}),o.className=["task-list-item"]}let s=-1;for(;++s1}function vxe(e,t){const n={},r=e.all(t);let a=-1;for(typeof t.start=="number"&&t.start!==1&&(n.start=t.start);++a0){const i={type:"element",tagName:"tbody",properties:{},children:e.wrap(n,!0)},s=FA(t.children[1]),l=kz(t.children[t.children.length-1]);s&&l&&(i.position={start:s,end:l}),a.push(i)}const o={type:"element",tagName:"table",properties:{},children:e.wrap(a,!0)};return e.patch(t,o),e.applyData(t,o)}function kxe(e,t,n){const r=n?n.children:void 0,o=(r?r.indexOf(t):1)===0?"th":"td",i=n&&n.type==="table"?n.align:void 0,s=i?i.length:t.children.length;let l=-1;const c=[];for(;++l0,!0),r[0]),a=r.index+r[0].length,r=n.exec(t);return o.push(v3(t.slice(a),a>0,!1)),o.join("")}function v3(e,t,n){let r=0,a=e.length;if(t){let o=e.codePointAt(r);for(;o===b3||o===y3;)r++,o=e.codePointAt(r)}if(n){let o=e.codePointAt(a-1);for(;o===b3||o===y3;)a--,o=e.codePointAt(a-1)}return a>r?e.slice(r,a):""}function Axe(e,t){const n={type:"text",value:_xe(String(t.value))};return e.patch(t,n),e.applyData(t,n)}function Txe(e,t){const n={type:"element",tagName:"hr",properties:{},children:[]};return e.patch(t,n),e.applyData(t,n)}const Rxe={blockquote:axe,break:oxe,code:ixe,delete:sxe,emphasis:lxe,footnoteReference:cxe,heading:uxe,html:dxe,imageReference:fxe,image:pxe,inlineCode:gxe,linkReference:mxe,link:hxe,listItem:bxe,list:vxe,paragraph:Sxe,root:wxe,strong:Exe,table:xxe,tableCell:Cxe,tableRow:kxe,text:Axe,thematicBreak:Txe,toml:mp,yaml:mp,definition:mp,footnoteDefinition:mp};function mp(){}const Pz=-1,Ih=0,am=1,om=2,BA=3,HA=4,VA=5,qA=6,$z=7,Fz=8,S3=typeof self=="object"?self:globalThis,Nxe=(e,t)=>{const n=(a,o)=>(e.set(o,a),a),r=a=>{if(e.has(a))return e.get(a);const[o,i]=t[a];switch(o){case Ih:case Pz:return n(i,a);case am:{const s=n([],a);for(const l of i)s.push(r(l));return s}case om:{const s=n({},a);for(const[l,c]of i)s[r(l)]=r(c);return s}case BA:return n(new Date(i),a);case HA:{const{source:s,flags:l}=i;return n(new RegExp(s,l),a)}case VA:{const s=n(new Map,a);for(const[l,c]of i)s.set(r(l),r(c));return s}case qA:{const s=n(new Set,a);for(const l of i)s.add(r(l));return s}case $z:{const{name:s,message:l}=i;return n(new S3[s](l),a)}case Fz:return n(BigInt(i),a);case"BigInt":return n(Object(BigInt(i)),a)}return n(new S3[o](i),a)};return r},w3=e=>Nxe(new Map,e)(0),il="",{toString:Ixe}={},{keys:Oxe}=Object,bu=e=>{const t=typeof e;if(t!=="object"||!e)return[Ih,t];const n=Ixe.call(e).slice(8,-1);switch(n){case"Array":return[am,il];case"Object":return[om,il];case"Date":return[BA,il];case"RegExp":return[HA,il];case"Map":return[VA,il];case"Set":return[qA,il]}return n.includes("Array")?[am,n]:n.includes("Error")?[$z,n]:[om,n]},hp=([e,t])=>e===Ih&&(t==="function"||t==="symbol"),Dxe=(e,t,n,r)=>{const a=(i,s)=>{const l=r.push(i)-1;return n.set(s,l),l},o=i=>{if(n.has(i))return n.get(i);let[s,l]=bu(i);switch(s){case Ih:{let u=i;switch(l){case"bigint":s=Fz,u=i.toString();break;case"function":case"symbol":if(e)throw new TypeError("unable to serialize "+l);u=null;break;case"undefined":return a([Pz],i)}return a([s,u],i)}case am:{if(l)return a([l,[...i]],i);const u=[],d=a([s,u],i);for(const g of i)u.push(o(g));return d}case om:{if(l)switch(l){case"BigInt":return a([l,i.toString()],i);case"Boolean":case"Number":case"String":return a([l,i.valueOf()],i)}if(t&&"toJSON"in i)return o(i.toJSON());const u=[],d=a([s,u],i);for(const g of Oxe(i))(e||!hp(bu(i[g])))&&u.push([o(g),o(i[g])]);return d}case BA:return a([s,i.toISOString()],i);case HA:{const{source:u,flags:d}=i;return a([s,{source:u,flags:d}],i)}case VA:{const u=[],d=a([s,u],i);for(const[g,m]of i)(e||!(hp(bu(g))||hp(bu(m))))&&u.push([o(g),o(m)]);return d}case qA:{const u=[],d=a([s,u],i);for(const g of i)(e||!hp(bu(g)))&&u.push(o(g));return d}}const{message:c}=i;return a([s,{name:l,message:c}],i)};return o},E3=(e,{json:t,lossy:n}={})=>{const r=[];return Dxe(!(t||n),!!t,new Map,r)(e),r},im=typeof structuredClone=="function"?(e,t)=>t&&("json"in t||"lossy"in t)?w3(E3(e,t)):structuredClone(e):(e,t)=>w3(E3(e,t));function Lxe(e,t){const n=[{type:"text",value:"↩"}];return t>1&&n.push({type:"element",tagName:"sup",properties:{},children:[{type:"text",value:String(t)}]}),n}function Mxe(e,t){return"Back to reference "+(e+1)+(t>1?"-"+t:"")}function Pxe(e){const t=typeof e.options.clobberPrefix=="string"?e.options.clobberPrefix:"user-content-",n=e.options.footnoteBackContent||Lxe,r=e.options.footnoteBackLabel||Mxe,a=e.options.footnoteLabel||"Footnotes",o=e.options.footnoteLabelTagName||"h2",i=e.options.footnoteLabelProperties||{className:["sr-only"]},s=[];let l=-1;for(;++l0&&b.push({type:"text",value:" "});let h=typeof n=="string"?n:n(l,m);typeof h=="string"&&(h={type:"text",value:h}),b.push({type:"element",tagName:"a",properties:{href:"#"+t+"fnref-"+g+(m>1?"-"+m:""),dataFootnoteBackref:"",ariaLabel:typeof r=="string"?r:r(l,m),className:["data-footnote-backref"]},children:Array.isArray(h)?h:[h]})}const w=u[u.length-1];if(w&&w.type==="element"&&w.tagName==="p"){const h=w.children[w.children.length-1];h&&h.type==="text"?h.value+=" ":w.children.push({type:"text",value:" "}),w.children.push(...b)}else u.push(...b);const v={type:"element",tagName:"li",properties:{id:t+"fn-"+g},children:e.wrap(u,!0)};e.patch(c,v),s.push(v)}if(s.length!==0)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:o,properties:{...im(i),id:"footnote-label"},children:[{type:"text",value:a}]},{type:"text",value:` -`},{type:"element",tagName:"ol",properties:{},children:e.wrap(s,!0)},{type:"text",value:` -`}]}}const zk={}.hasOwnProperty,$xe={};function Fxe(e,t){const n=t||$xe,r=new Map,a=new Map,o=new Map,i={...Rxe,...n.handlers},s={all:c,applyData:zxe,definitionById:r,footnoteById:a,footnoteCounts:o,footnoteOrder:[],handlers:i,one:l,options:n,patch:jxe,wrap:Bxe};return sA(e,function(u){if(u.type==="definition"||u.type==="footnoteDefinition"){const d=u.type==="definition"?r:a,g=String(u.identifier).toUpperCase();d.has(g)||d.set(g,u)}}),s;function l(u,d){const g=u.type,m=s.handlers[g];if(zk.call(s.handlers,g)&&m)return m(s,u,d);if(s.options.passThrough&&s.options.passThrough.includes(g)){if("children"in u){const{children:y,...w}=u,v=im(w);return v.children=s.all(u),v}return im(u)}return(s.options.unknownHandler||Uxe)(s,u,d)}function c(u){const d=[];if("children"in u){const g=u.children;let m=-1;for(;++m0&&n.push({type:"text",value:` -`}),n}function x3(e){let t=0,n=e.charCodeAt(t);for(;n===9||n===32;)t++,n=e.charCodeAt(t);return e.slice(t)}function k3(e,t){const n=Fxe(e,t),r=n.one(e,void 0),a=Pxe(n),o=Array.isArray(r)?{type:"root",children:r}:r||{type:"root",children:[]};return a&&o.children.push({type:"text",value:` -`},a),o}function Hxe(e,t){return e&&"run"in e?async function(n,r){const a=k3(n,{file:r,...t});await e.run(a,r)}:function(n,r){return k3(n,{file:r,...t||e})}}function C3(e){if(e)throw e}var Xp=Object.prototype.hasOwnProperty,jz=Object.prototype.toString,_3=Object.defineProperty,A3=Object.getOwnPropertyDescriptor,T3=function(t){return typeof Array.isArray=="function"?Array.isArray(t):jz.call(t)==="[object Array]"},R3=function(t){if(!t||jz.call(t)!=="[object Object]")return!1;var n=Xp.call(t,"constructor"),r=t.constructor&&t.constructor.prototype&&Xp.call(t.constructor.prototype,"isPrototypeOf");if(t.constructor&&!n&&!r)return!1;var a;for(a in t);return typeof a>"u"||Xp.call(t,a)},N3=function(t,n){_3&&n.name==="__proto__"?_3(t,n.name,{enumerable:!0,configurable:!0,value:n.newValue,writable:!0}):t[n.name]=n.newValue},I3=function(t,n){if(n==="__proto__")if(Xp.call(t,n)){if(A3)return A3(t,n).value}else return;return t[n]},Vxe=function e(){var t,n,r,a,o,i,s=arguments[0],l=1,c=arguments.length,u=!1;for(typeof s=="boolean"&&(u=s,s=arguments[1]||{},l=2),(s==null||typeof s!="object"&&typeof s!="function")&&(s={});li.length;let l;s&&i.push(a);try{l=e.apply(this,i)}catch(c){const u=c;if(s&&n)throw u;return a(u)}s||(l&&l.then&&typeof l.then=="function"?l.then(o,a):l instanceof Error?a(l):o(l))}function a(i,...s){n||(n=!0,t(i,...s))}function o(i){a(null,i)}}const ka={basename:Wxe,dirname:Kxe,extname:Yxe,join:Zxe,sep:"/"};function Wxe(e,t){if(t!==void 0&&typeof t!="string")throw new TypeError('"ext" argument must be a string');_f(e);let n=0,r=-1,a=e.length,o;if(t===void 0||t.length===0||t.length>e.length){for(;a--;)if(e.codePointAt(a)===47){if(o){n=a+1;break}}else r<0&&(o=!0,r=a+1);return r<0?"":e.slice(n,r)}if(t===e)return"";let i=-1,s=t.length-1;for(;a--;)if(e.codePointAt(a)===47){if(o){n=a+1;break}}else i<0&&(o=!0,i=a+1),s>-1&&(e.codePointAt(a)===t.codePointAt(s--)?s<0&&(r=a):(s=-1,r=i));return n===r?r=i:r<0&&(r=e.length),e.slice(n,r)}function Kxe(e){if(_f(e),e.length===0)return".";let t=-1,n=e.length,r;for(;--n;)if(e.codePointAt(n)===47){if(r){t=n;break}}else r||(r=!0);return t<0?e.codePointAt(0)===47?"/":".":t===1&&e.codePointAt(0)===47?"//":e.slice(0,t)}function Yxe(e){_f(e);let t=e.length,n=-1,r=0,a=-1,o=0,i;for(;t--;){const s=e.codePointAt(t);if(s===47){if(i){r=t+1;break}continue}n<0&&(i=!0,n=t+1),s===46?a<0?a=t:o!==1&&(o=1):a>-1&&(o=-1)}return a<0||n<0||o===0||o===1&&a===n-1&&a===r+1?"":e.slice(a,n)}function Zxe(...e){let t=-1,n;for(;++t0&&e.codePointAt(e.length-1)===47&&(n+="/"),t?"/"+n:n}function Qxe(e,t){let n="",r=0,a=-1,o=0,i=-1,s,l;for(;++i<=e.length;){if(i2){if(l=n.lastIndexOf("/"),l!==n.length-1){l<0?(n="",r=0):(n=n.slice(0,l),r=n.length-1-n.lastIndexOf("/")),a=i,o=0;continue}}else if(n.length>0){n="",r=0,a=i,o=0;continue}}t&&(n=n.length>0?n+"/..":"..",r=2)}else n.length>0?n+="/"+e.slice(a+1,i):n=e.slice(a+1,i),r=i-a-1;a=i,o=0}else s===46&&o>-1?o++:o=-1}return n}function _f(e){if(typeof e!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}const Jxe={cwd:e1e};function e1e(){return"/"}function Bk(e){return!!(e!==null&&typeof e=="object"&&"href"in e&&e.href&&"protocol"in e&&e.protocol&&e.auth===void 0)}function t1e(e){if(typeof e=="string")e=new URL(e);else if(!Bk(e)){const t=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw t.code="ERR_INVALID_ARG_TYPE",t}if(e.protocol!=="file:"){const t=new TypeError("The URL must be of scheme file");throw t.code="ERR_INVALID_URL_SCHEME",t}return n1e(e)}function n1e(e){if(e.hostname!==""){const r=new TypeError('File URL host must be "localhost" or empty on darwin');throw r.code="ERR_INVALID_FILE_URL_HOST",r}const t=e.pathname;let n=-1;for(;++n0){let[m,...b]=u;const y=r[g][1];Uk(y)&&Uk(m)&&(m=bx(!0,y,m)),r[g]=[c,m,...b]}}}}const i1e=new GA().freeze();function wx(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `parser`")}function Ex(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `compiler`")}function xx(e,t){if(t)throw new Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function D3(e){if(!Uk(e)||typeof e.type!="string")throw new TypeError("Expected node, got `"+e+"`")}function L3(e,t,n){if(!n)throw new Error("`"+e+"` finished async. Use `"+t+"` instead")}function bp(e){return s1e(e)?e:new zz(e)}function s1e(e){return!!(e&&typeof e=="object"&&"message"in e&&"messages"in e)}function l1e(e){return typeof e=="string"||c1e(e)}function c1e(e){return!!(e&&typeof e=="object"&&"byteLength"in e&&"byteOffset"in e)}const u1e="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",M3=[],P3={allowDangerousHtml:!0},d1e=/^(https?|ircs?|mailto|xmpp)$/i,f1e=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function p1e(e){const t=e.allowedElements,n=e.allowElement,r=e.children||"",a=e.className,o=e.components,i=e.disallowedElements,s=e.rehypePlugins||M3,l=e.remarkPlugins||M3,c=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...P3}:P3,u=e.skipHtml,d=e.unwrapDisallowed,g=e.urlTransform||g1e,m=i1e().use(rxe).use(l).use(Hxe,c).use(s),b=new zz;typeof r=="string"&&(b.value=r);for(const h of f1e)Object.hasOwn(e,h.from)&&(""+h.from+(h.to?"use `"+h.to+"` instead":"remove it")+u1e+h.id,void 0);const y=m.parse(b);let w=m.runSync(y,b);return a&&(w={type:"element",tagName:"div",properties:{className:a},children:w.type==="root"?w.children:[w]}),sA(w,v),uEe(w,{Fragment:f.Fragment,components:o,ignoreInvalidStyle:!0,jsx:f.jsx,jsxs:f.jsxs,passKeys:!0,passNode:!0});function v(h,S,E){if(h.type==="raw"&&E&&typeof S=="number")return u?E.children.splice(S,1):E.children[S]={type:"text",value:h.value},S;if(h.type==="element"){let k;for(k in hx)if(Object.hasOwn(hx,k)&&Object.hasOwn(h.properties,k)){const x=h.properties[k],C=hx[k];(C===null||C.includes(h.tagName))&&(h.properties[k]=g(String(x||""),k,h))}}if(h.type==="element"){let k=t?!t.includes(h.tagName):i?i.includes(h.tagName):!1;if(!k&&n&&typeof S=="number"&&(k=!n(h,S,E)),k&&E&&typeof S=="number")return d&&h.children?E.children.splice(S,1,...h.children):E.children.splice(S,1),S}}}function g1e(e){const t=e.indexOf(":"),n=e.indexOf("?"),r=e.indexOf("#"),a=e.indexOf("/");return t<0||a>-1&&t>a||n>-1&&t>n||r>-1&&t>r||d1e.test(e.slice(0,t))?e:""}const m1e=p.memo(p1e,(e,t)=>e.children===t.children&&e.className===t.className),Uz=({message:e,className:t})=>f.jsx(m1e,{className:ee("prose-sm whitespace-pre-wrap break-words prose-p:m-0 prose-p:leading-relaxed prose-pre:p-0 prose-li:list-disc",t),remarkPlugins:[ofe,Rle],components:{p({children:n}){return f.jsx("p",{children:n})},code({node:n,className:r,children:a,...o}){if(!a)return null;const i=!String(a).includes(` -`),s=/language-(\w+)/.exec(r||"");return i?f.jsx("code",{className:r,...o,children:a}):f.jsx(gz,{language:s&&s[1]||"",value:String(a).replace(/\n$/,""),...o},Math.random())}},children:e}),h1e=e=>f.jsx("div",{className:ee("flex min-h-8 max-w-lg items-end justify-start pl-10",e.className),children:f.jsx(Uz,{message:e.message,className:"whitespace-pre-wrap text-sm"})}),b1e=e=>f.jsxs(Jm,{className:"w-fit max-w-lg p-2 text-xs [&>svg]:left-2.5 [&>svg]:top-2.5",variant:"destructive",children:[f.jsx(X4,{className:"h-4 w-4"}),f.jsx(z6,{children:"Something went wrong..."}),f.jsx(U6,{className:"text-xs",children:e.message})]}),y1e=({id:e,message:t})=>f.jsx("pre",{className:pie("mb-2 ml-8 w-fit max-w-xl overflow-x-scroll whitespace-pre-line rounded-lg border bg-muted p-2 text-xs font-normal text-muted-foreground"),children:t}),v1e=({message:e})=>f.jsx("p",{className:Tt("relative mb-2 ml-6 w-fit max-w-lg rounded-2xl border border-white bg-muted px-4 py-2 text-sm italic"),children:e}),S1e=({id:e,date:t})=>f.jsxs("span",{className:"!-mt-4 max-w-xl pr-6 text-right text-xs uppercase tracking-tight text-muted-foreground",children:["Message Receipt from ",t?Bs(t,"M/d/yy, h:mm a"):"Unknown"]}),w1e=()=>f.jsx("div",{className:"flex items-end justify-end",children:f.jsx("p",{className:"mb-2 w-fit max-w-lg rounded-2xl rounded-br-none border border-white bg-muted px-4 py-2 text-sm italic",children:"First login"})}),E1e=e=>f.jsx("div",{className:`${e.className} flex items-end justify-end`,children:f.jsxs("div",{className:"order-2 mx-2 flex max-w-lg flex-col items-end space-y-1 text-sm",children:[f.jsx("div",{className:"pr-1.5 text-xs text-muted-foreground",children:Bs(e.date,"MMM d yy, h:mm a")}),f.jsx(Uz,{message:e.message,className:"min-h-8 rounded-2xl rounded-br-none bg-white px-5 py-3 text-black"})]})}),x1e=({type:e,message:t,date:n,id:r},a,o=!0,i=!0,s=!0)=>{const l=e+t+n+r;if(e==="login")return f.jsx(w1e,{},l);if(e==="user")return f.jsx(E1e,{id:r,date:n,message:t??""},l);if(e==="error")return f.jsx(b1e,{date:n,message:t??""},l);if(e==="assistant")return f.jsx(h1e,{id:r,date:n,message:t??""},l);if(s&&e==="message-receipt")return f.jsx(S1e,{date:n},l);if(i&&e==="function-call")return f.jsx(y1e,{id:r,message:t},l);if(o&&e==="internal-monologue")return f.jsx(v1e,{message:t},l)};class sl extends Error{constructor(t,n){super(t+" at position "+n),this.position=n}}const yp=92,kx=47,k1e=42,$3=123,vp=125,F3=91,Sp=93,C1e=40,_1e=41,A1e=32,WA=10,Bz=9,Hz=13,T1e=8,R1e=12,sm=34,j3=43,z3=45,Vz=39,qz=48,Gz=57,Hi=44,wp=46,N1e=58,I1e=59,O1e=65,D1e=97,L1e=69,M1e=101,P1e=70,$1e=102,F1e=160,j1e=8192,z1e=8202,U1e=8239,B1e=8287,H1e=12288,V1e=8220,q1e=8221,G1e=8216,W1e=8217,K1e=96,Y1e=180;function Z1e(e){return e>=qz&&e<=Gz||e>=O1e&&e<=P1e||e>=D1e&&e<=$1e}function Vi(e){return e>=qz&&e<=Gz}function X1e(e){return e>=32&&e<=1114111}function ml(e){return Q1e.test(e)}const Q1e=/^[,:[\]/{}()\n+]$/;function J1e(e){return ml(e)&&e!=="/"}function U3(e){return eke.test(e)||e&&Qp(e.charCodeAt(0))}const eke=/^[[{\w-]$/;function tke(e){return e===WA||e===Hz||e===Bz||e===T1e||e===R1e}function Ol(e){return e===A1e||e===WA||e===Bz||e===Hz}function nke(e){return e===F1e||e>=j1e&&e<=z1e||e===U1e||e===B1e||e===H1e}function Qp(e){return Wz(e)||Hk(e)}function Wz(e){return e===sm||e===V1e||e===q1e}function B3(e){return e===sm}function Hk(e){return e===Vz||e===G1e||e===W1e||e===K1e||e===Y1e}function H3(e){return e===Vz}function yu(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;const r=e.lastIndexOf(t);return r!==-1?e.substring(0,r)+(n?"":e.substring(r+1)):e}function Ea(e,t){let n=e.length;if(!Ol(e.charCodeAt(n-1)))return e+t;for(;Ol(e.charCodeAt(n-1));)n--;return e.substring(0,n)+t+e.substring(n)}function rke(e,t,n){return e.substring(0,t)+e.substring(t+n)}function ake(e){return/[,\n][ \t\r]*$/.test(e)}function oke(e){return/^\w+$/.test(e)}const ike={"\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r"," ":"\\t"},ske={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:` -`,r:"\r",t:" "};function lke(e){let t=0,n="";o()||L();const a=c(Hi);for(a&&i(),U3(e[t])&&ake(n)?(a||(n=Ea(n,",")),y()):a&&(n=yu(n,","));e.charCodeAt(t)===vp||e.charCodeAt(t)===Sp;)t++,i();if(t>=e.length)return n;T();function o(){i();const M=m()||b()||w()||h()||S()||k();return i(),M}function i(){const M=t;let U=s();do U=l(),U&&(U=s());while(U);return t>M}function s(){let M="",U;for(;(U=Ol(e.charCodeAt(t)))||nke(e.charCodeAt(t));)U?M+=e[t]:M+=" ",t++;return M.length>0?(n+=M,!0):!1}function l(){if(e.charCodeAt(t)===kx&&e.charCodeAt(t+1)===k1e){for(;t=e.length;j||(U3(e[t])||O?n=Ea(n,":"):H()),o()||(j||O?n+="null":H())}return e.charCodeAt(t)===vp?(n+="}",t++):n=Ea(n,"}"),!0}return!1}function b(){if(e.charCodeAt(t)===F3){n+="[",t++,i(),u(Hi)&&i();let M=!0;for(;t0&&arguments[0]!==void 0?arguments[0]:!1,U=e.charCodeAt(t)===yp;if(U&&(t++,U=!0),Qp(e.charCodeAt(t))){const X=B3(e.charCodeAt(t))?B3:H3(e.charCodeAt(t))?H3:Hk(e.charCodeAt(t))?Hk:Wz,j=t,O=n.length;let A='"';for(t++;;){if(t>=e.length){const V=x(t-1);return!M&&ml(e.charAt(V))?(t=j,n=n.substring(0,O),w(!0)):(A=Ea(A,'"'),n+=A,!0)}else if(X(e.charCodeAt(t))){const V=t,P=A.length;if(A+='"',t++,n+=A,i(),M||t>=e.length||ml(e.charAt(t))||Qp(e.charCodeAt(t))||Vi(e.charCodeAt(t)))return v(),!0;if(ml(e.charAt(x(V-1))))return t=j,n=n.substring(0,O),w(!0);n=n.substring(0,O),t=V+1,A=A.substring(0,P)+"\\"+A.substring(P)}else{if(M&&ml(e[t]))return A=Ea(A,'"'),n+=A,v(),!0;if(e.charCodeAt(t)===yp){const V=e.charAt(t+1);if(ske[V]!==void 0)A+=e.slice(t,t+2),t+=2;else if(V==="u"){let N=2;for(;N<6&&Z1e(e.charCodeAt(t+N));)N++;N===6?(A+=e.slice(t,t+6),t+=6):t+N>=e.length?t=e.length:z()}else A+=V,t+=2}else{const V=e.charAt(t),P=e.charCodeAt(t);P===sm&&e.charCodeAt(t-1)!==yp?(A+="\\"+V,t++):tke(P)?(A+=ike[V],t++):(X1e(P)||R(V),A+=V,t++)}}U&&d()}}return!1}function v(){let M=!1;for(i();e.charCodeAt(t)===j3;){M=!0,t++,i(),n=yu(n,'"',!0);const U=n.length;w()?n=rke(n,U,1):n=Ea(n,'"')}return M}function h(){const M=t;if(e.charCodeAt(t)===z3){if(t++,C())return _(M),!0;if(!Vi(e.charCodeAt(t)))return t=M,!1}for(;Vi(e.charCodeAt(t));)t++;if(e.charCodeAt(t)===wp){if(t++,C())return _(M),!0;if(!Vi(e.charCodeAt(t)))return t=M,!1;for(;Vi(e.charCodeAt(t));)t++}if(e.charCodeAt(t)===M1e||e.charCodeAt(t)===L1e){if(t++,(e.charCodeAt(t)===z3||e.charCodeAt(t)===j3)&&t++,C())return _(M),!0;if(!Vi(e.charCodeAt(t)))return t=M,!1;for(;Vi(e.charCodeAt(t));)t++}if(!C())return t=M,!1;if(t>M){const U=e.slice(M,t),X=/^0\d/.test(U);return n+=X?'"'.concat(U,'"'):U,!0}return!1}function S(){return E("true","true")||E("false","false")||E("null","null")||E("True","true")||E("False","false")||E("None","null")}function E(M,U){return e.slice(t,t+M.length)===M?(n+=U,t+=M.length,!0):!1}function k(){const M=t;for(;tM){if(e.charCodeAt(t)===C1e&&oke(e.slice(M,t).trim()))return t++,o(),e.charCodeAt(t)===_1e&&(t++,e.charCodeAt(t)===I1e&&t++),!0;{for(;Ol(e.charCodeAt(t-1))&&t>0;)t--;const U=e.slice(M,t);return n+=U==="undefined"?"null":JSON.stringify(U),e.charCodeAt(t)===sm&&t++,!0}}}function x(M){let U=M;for(;U>0&&Ol(e.charCodeAt(U));)U--;return U}function C(){return t>=e.length||ml(e[t])||Ol(e.charCodeAt(t))}function _(M){n+=e.slice(M,t)+"0"}function R(M){throw new sl("Invalid character "+JSON.stringify(M),t)}function T(){throw new sl("Unexpected character "+JSON.stringify(e[t]),t)}function L(){throw new sl("Unexpected end of json string",e.length)}function D(){throw new sl("Object key expected",t)}function H(){throw new sl("Colon expected",t)}function z(){const M=e.slice(t,t+6);throw new sl('Invalid unicode character "'.concat(M,'"'),t)}}function cke(e,t){return e[t]==="*"&&e[t+1]==="/"}const uke=e=>{const t="api",n=[];if(e.role==="system")return n;if(e.role==="assistant")return n.push({id:e.id,source:t,type:"internal-monologue",message:e.text??"",date:new Date(e.created_at||"")}),(e.tool_calls??[]).forEach((o,i)=>{var s,l,c;if(o.type==="function"){const u=new Date(e.created_at||"");if(((s=o.function)==null?void 0:s.name)==="send_message"){let d={};try{d=JSON.parse(lke(o.function.arguments))}catch(g){console.error("failed to parse send message arguments",g,o.function.arguments)}n.push({id:e.id,source:t,type:"assistant",date:u,message:(d==null?void 0:d.message)??""})}else n.push({id:e.id,source:t,type:"function-call",date:u,message:`${(l=o.function)==null?void 0:l.name}(${(c=o.function)==null?void 0:c.arguments})`??""})}}),n;if(e.role==="tool")return e.name==="send_message"?(n.push({id:e.id,source:t,type:"message-receipt",message:(e==null?void 0:e.text)||"",date:new Date(e.created_at||"")}),n):(n.push({id:e.id,source:t,type:"function-call",message:(e==null?void 0:e.text)||"",date:new Date(e.created_at||"")}),n);const r=new Date(e.created_at||""),a=JSON.parse((e==null?void 0:e.text)||"");return a.type==="login"&&n.push({id:e.id,source:t,type:"login",date:r,message:a.message}),a.type==="user_message"&&n.push({id:e.id,source:t,type:"user",date:r,message:a.message}),n},Kz=p.forwardRef(({className:e,...t},n)=>f.jsx("div",{ref:n,className:ee("rounded-lg border bg-card text-card-foreground shadow-sm",e),...t}));Kz.displayName="Card";const Yz=p.forwardRef(({className:e,...t},n)=>f.jsx("div",{ref:n,className:ee("flex flex-col space-y-1.5 p-6",e),...t}));Yz.displayName="CardHeader";const Zz=p.forwardRef(({className:e,...t},n)=>f.jsx("h3",{ref:n,className:ee("text-2xl font-semibold leading-none tracking-tight",e),...t}));Zz.displayName="CardTitle";const Xz=p.forwardRef(({className:e,...t},n)=>f.jsx("p",{ref:n,className:ee("text-sm text-muted-foreground",e),...t}));Xz.displayName="CardDescription";const Qz=p.forwardRef(({className:e,...t},n)=>f.jsx("div",{ref:n,className:ee("p-6 pt-0",e),...t}));Qz.displayName="CardContent";const Jz=p.forwardRef(({className:e,...t},n)=>f.jsx("div",{ref:n,className:ee("flex items-center p-6 pt-0",e),...t}));Jz.displayName="CardFooter";const dke=()=>{const{data:e}=Qm(),[t,n]=p.useState(null),{setAgent:r}=ph();return f.jsxs(Kz,{className:"mx-4 my-10 w-fit bg-background duration-700 animate-in slide-in-from-top slide-out-to-top sm:mx-auto ",children:[f.jsxs(Yz,{className:"pb-3",children:[f.jsx(Zz,{children:"Choose Agent"}),f.jsx(Xz,{children:"Pick an agent to start a conversation..."})]}),f.jsx(Qz,{className:"grid gap-1",children:(e??[]).map((a,o)=>{var i,s,l,c;return f.jsxs("button",{onClick:()=>n(a),className:ee("-mx-2 flex items-start space-x-4 rounded-md p-2 text-left transition-all",(t==null?void 0:t.name)===a.name?"bg-accent text-accent-foreground":"hover:bg-accent hover:text-accent-foreground"),children:[f.jsx(jq,{className:"mt-px h-5 w-5"}),f.jsxs("div",{className:"space-y-1",children:[f.jsx("p",{className:"text-sm font-medium leading-none",children:a.name}),f.jsxs("p",{className:"text-sm text-muted-foreground",children:[((s=(i=a.memory)==null?void 0:i.memory)==null?void 0:s[fr].name)||""," | ",((c=(l=a.memory)==null?void 0:l.memory)==null?void 0:c[Qr].name)||""," | ",a.created_at]})]})]},o)})}),f.jsx(Jz,{children:f.jsx(ue,{onClick:()=>t&&r(t),className:"w-full",children:"Start Chat"})})]})},fke=({className:e})=>f.jsxs("div",{className:e,children:[f.jsxs("span",{className:"relative flex h-4 w-4",children:[f.jsx("span",{className:"absolute inline-flex h-full w-full animate-ping rounded-full bg-blue-400 opacity-75"}),f.jsx("span",{className:"relative inline-flex h-4 w-4 rounded-full bg-blue-600"})]}),f.jsx("span",{className:Tt("ml-4"),children:"Thinking..."})]}),pke=({currentAgent:e,isLoading:t,previousMessages:n})=>{const{messagesRef:r,scrollRef:a,visibilityRef:o}=fle(),i=E9(),s=w9(),l=Qie(),c=n.flatMap(uke),u=dle(c);return e?f.jsx("div",{ref:a,className:"relative flex-1 overflow-auto",children:f.jsxs("div",{className:"flex flex-1 flex-col gap-4 px-4 pb-10 pt-6",ref:r,children:[u.map((d,g)=>{var y;return[((y=u[g-1])==null?void 0:y.type)==="user"||g===0?f.jsx(gle,{name:e.name,date:d.date},d.id+(e.id||"")+g):null,x1e(d,g,s,i,l)]}),t?f.jsx(fke,{className:"flex items-center px-3 py-3"}):null,f.jsx("div",{className:"h-px w-full",ref:o})]})}):f.jsx(ple,{children:f.jsx(dke,{})})},gke=Xe({message:Ce().min(1,"Message cannot be empty...")}),mke=e=>{const{formRef:t,onKeyDown:n}=die(),r=bn({resolver:yn(gke),defaultValues:{message:""}});function a(o){e.onSend(o.message),r.reset()}return f.jsx(vn,{...r,children:f.jsx("form",{ref:t,onSubmit:r.handleSubmit(a),className:"mx-4 mb-8 flex-none",children:f.jsx(ut,{control:r.control,name:"message",render:({field:o})=>f.jsxs(ot,{className:"w-full",children:[f.jsx(yt,{className:"sr-only",children:"What's on your mind"}),f.jsx(pt,{className:"w-full",children:f.jsxs("div",{className:"relative overflow-hidden rounded-md border bg-background p-0.5 has-[:focus]:ring-2 has-[:focus]:ring-ring has-[:focus]:ring-offset-2 ",children:[f.jsx(qs,{onKeyDown:n,className:"h-20 w-full resize-none scroll-pb-10 rounded-none border-none pb-10 pt-4 focus-visible:ring-0",placeholder:"Type your message",...o}),f.jsxs("div",{className:"flex items-center justify-between p-4",children:[f.jsx("div",{}),f.jsxs(ue,{disabled:!e.enabled,type:"submit",children:[f.jsx(Pq,{className:"mr-2 size-5"})," Send"]})]})]})}),f.jsx(lt,{})]})})})})},hke=(e,t,n)=>p.useCallback((r,a="user")=>{var s,l;if(!((l=(s=e==null?void 0:e.memory)==null?void 0:s.memory)!=null&&l[fr]))return;const o=new Date;o.setMilliseconds(0);const i=t({agentId:e.id||"",message:r,role:a,memoryName:e.memory.memory[fr].label||""});n(e.id||"",{id:i,type:a==="user"?"user_message":"system_message",message_type:"user_message",message:r,date:o})},[e,t,n]);function bke(e,t,n,r,a,o,i,s){p.useEffect(()=>(e.current||(e.current=!0,setTimeout(()=>{!t||!n||(r.length===0||(a==null?void 0:a.agentId)!==n.id)&&(o({date:new Date,agentId:n.id||""}),i(s,"system"))},300)),()=>{e.current=!0}),[n,a==null?void 0:a.agentId,r.length,i,o,t])}const yke=["internal_monologue","function_call","function_return"],vke=()=>{const[e,t]=p.useState([]),n=To(),[r,a]=p.useState(!1),o=p.useCallback(async i=>{var g,m;const s=new AbortController,l=s.signal;t(b=>{var y,w;return[...b,{id:Wu(),name:(w=(y=n==null?void 0:n.memory)==null?void 0:y.memory)==null?void 0:w[fr].label,role:"user",text:JSON.stringify({type:"user_message",message:i,time:new Date().toISOString()}),created_at:new Date().toISOString()}]});const c={messages:[{role:"user",name:(m=(g=n==null?void 0:n.memory)==null?void 0:g.memory)==null?void 0:m[fr].label,text:i}],stream_steps:!0,stream_tokens:!0};a(!0);let u="",d=!1;v9(`${S9}/agents/${(n==null?void 0:n.id)||""}/messages`,{method:"POST",headers:{"Content-Type":"application/json",Accept:"text/event-stream",Authorization:"Bearer password"},body:JSON.stringify(c),signal:l,onerror:()=>{s.abort(),a(!1)},onmessage:async b=>{if(["[DONE]","[DONE_GEN]","[DONE_STEP]"].includes(b.data)){a(!1);return}d||(t(h=>{var S,E;return[...h,{name:(E=(S=n==null?void 0:n.memory)==null?void 0:S.memory)==null?void 0:E[Qr].label,role:"assistant",id:Wu(),text:"",created_at:new Date().toISOString()}]}),d=!0);const y=Xe({internal_monologue:Ce()}).or(Xe({function_call:Xe({name:Ce(),arguments:Ce()})})).or(Xe({function_call:Xe({name:Ce()})})).or(Xe({function_call:Xe({arguments:Ce()})})).or(Xe({function_return:Ce(),status:Ce(),id:Ce()})).or(Xe({function_return:Ce(),date:Ce(),status:Ce(),id:Ce()})).and(Xe({date:Ce().optional().transform(h=>h?new Date(h):new Date)})).safeParse(JSON.parse(b.data));if(!y.success){console.log("error",y.error.message,b.data),s.abort();return}const w=y.data,v=Object.keys(w).find(h=>yke.includes(h));if(v&&("internal_monologue"in w&&(u&&u!=="internal_monologue"&&t(h=>{var S,E;return[...h,{name:(E=(S=n==null?void 0:n.memory)==null?void 0:S.memory)==null?void 0:E[Qr].label,role:"assistant",id:Wu(),text:"",created_at:new Date().toISOString()}]}),t(h=>[...h.slice(0,h.length-1),{...h[h.length-1],text:(h[h.length-1].text||"")+w.internal_monologue}])),"function_call"in w&&t(h=>{var k,x,C;const S=h[h.length-1];let E=(k=S==null?void 0:S.tool_calls)==null?void 0:k[((S==null?void 0:S.tool_calls)||[]).length-1];return"name"in w.function_call&&(E={id:"1",type:"function",function:{name:w.function_call.name,arguments:""}}),"arguments"in w.function_call&&(E={...E,id:"1",function:{name:((x=E==null?void 0:E.function)==null?void 0:x.name)||"",arguments:((C=E==null?void 0:E.function)==null?void 0:C.arguments)+w.function_call.arguments}}),E?[...h.slice(0,h.length-1),{...S,tool_calls:[...(S.tool_calls||[]).slice(0,(S.tool_calls||[]).length-1),E]}]:h}),u=v,"function_return"in w)){if(w.function_return==="None")return;t(h=>{const S=h[h.length-1];return[...h.slice(0,h.length-1),{...S,tool_calls:[...S.tool_calls||[],{id:"1",type:"function",function:{name:"",arguments:JSON.stringify(w,null,2)}}]}]})}}})},[n]);return{isLoading:r,streamedMessages:e,getMessageResponse:o}},Ske=()=>{const e=To(),t=p.useRef(!1),n=Fre(),r=$ie((e==null?void 0:e.id)??""),{autoMessage:a,shouldSendAutoMessage:o}=x9(),{setLastAgentInitMessage:i}=ph(),{sendMessage:s}=AN(),{registerOnMessageCallback:l,registerOnLastMessageReplaceCallback:c,registerOnReplaceTemporaryIdsWithReturnedIdsCallback:u,abortStream:d}=AN(),{addMessage:g,replaceLastMessage:m,replaceMessageIds:b}=Fie(),y=hke(e,s,g),{streamedMessages:w,isLoading:v,getMessageResponse:h}=vke(),S=iX({agentId:(e==null?void 0:e.id)??"",msgObject:!0,limit:1e3}),E=p.useCallback(_=>_?_.endsWith("Z")?_:`${_}Z`:"",[]),k=(S.data||[]).map(_=>({..._,created_at:E(_.created_at)}),[S.data]);bke(t,o,e,r,n,i,y,a);const[x,C]=p.useState(!1);return p.useEffect(()=>{e&&d()},[d,e]),p.useEffect(()=>{l(_=>{e&&g(e.id||"",_)}),c(_=>{e&&m(e.id||"",_)}),u((_,R)=>{e&&b(e.id||"",_,R)})},[d,l,c,u,e,g,m,b]),f.jsxs(Fs,{className:"flex flex-col overflow-hidden",children:[f.jsxs("div",{className:"flex flex-none items-center space-x-2 border-b p-4",children:[f.jsx(ue,{className:"mr-2",asChild:!0,size:"iconSm",variant:"outline",children:f.jsx(bd,{to:"..",children:f.jsx(Sq,{className:"size-5"})})}),f.jsxs("div",{className:"flex w-full items-center justify-between",children:[f.jsxs("div",{children:[f.jsx("h1",{className:Tt(),children:"Agent Chat"}),f.jsx("h2",{className:fie("text-foreground"),children:(e==null?void 0:e.name)??"Letta"})]}),e?f.jsxs("button",{onClick:async()=>{await navigator.clipboard.writeText((e==null?void 0:e.id)||""),C(!0),setTimeout(()=>C(!1),2e3)},className:ee(h9({variant:"secondary"}),"ml-2 opacity-80 hover:opacity-100"),children:[f.jsxs("span",{children:["Agent ID: ",e==null?void 0:e.id]}),x?f.jsx(Pm,{className:"ml-2 h-3 w-3"}):f.jsx(xq,{className:"ml-2 h-3 w-3"})]}):null]})]}),f.jsxs("div",{className:"relative flex min-h-0 flex-1",children:[f.jsx(ule,{currentAgentId:e==null?void 0:e.id}),f.jsx("div",{className:"flex flex-1 border-l bg-muted/50",children:f.jsxs("div",{className:"relative mx-auto flex max-w-screen-lg flex-1 flex-col overflow-hidden",children:[f.jsx(use,{}),f.jsx(pke,{currentAgent:e,isLoading:v,previousMessages:[...k,...w],messages:r}),f.jsx(mke,{enabled:!v,onSend:_=>{h(_)}})]})})]})]})},wke={path:"agents/:agentName/chat",element:f.jsx(Ske,{})};function Eke(e,t,n){var r=this,a=p.useRef(null),o=p.useRef(0),i=p.useRef(null),s=p.useRef([]),l=p.useRef(),c=p.useRef(),u=p.useRef(e),d=p.useRef(!0);u.current=e;var g=typeof window<"u",m=!t&&t!==0&&g;if(typeof e!="function")throw new TypeError("Expected a function");t=+t||0;var b=!!(n=n||{}).leading,y=!("trailing"in n)||!!n.trailing,w="maxWait"in n,v="debounceOnServer"in n&&!!n.debounceOnServer,h=w?Math.max(+n.maxWait||0,t):null;p.useEffect(function(){return d.current=!0,function(){d.current=!1}},[]);var S=p.useMemo(function(){var E=function(T){var L=s.current,D=l.current;return s.current=l.current=null,o.current=T,c.current=u.current.apply(D,L)},k=function(T,L){m&&cancelAnimationFrame(i.current),i.current=m?requestAnimationFrame(T):setTimeout(T,L)},x=function(T){if(!d.current)return!1;var L=T-a.current;return!a.current||L>=t||L<0||w&&T-o.current>=h},C=function(T){return i.current=null,y&&s.current?E(T):(s.current=l.current=null,c.current)},_=function T(){var L=Date.now();if(x(L))return C(L);if(d.current){var D=t-(L-a.current),H=w?Math.min(D,h-(L-o.current)):D;k(T,H)}},R=function(){if(g||v){var T=Date.now(),L=x(T);if(s.current=[].slice.call(arguments),l.current=r,a.current=T,L){if(!i.current&&d.current)return o.current=a.current,k(_,t),b?E(a.current):c.current;if(w)return k(_,t),E(a.current)}return i.current||k(_,t),c.current}};return R.cancel=function(){i.current&&(m?cancelAnimationFrame(i.current):clearTimeout(i.current)),o.current=0,s.current=a.current=l.current=i.current=null},R.isPending=function(){return!!i.current},R.flush=function(){return i.current?C(Date.now()):c.current},R},[b,w,t,h,y,m,g,v]);return S}function xke(e,t){return e===t}function kke(e,t){return t}function Oh(e,t,n){var r=n&&n.equalityFn||xke,a=p.useReducer(kke,e),o=a[0],i=a[1],s=Eke(p.useCallback(function(c){return i(c)},[i]),t,n),l=p.useRef(e);return r(l.current,e)||(s(e),l.current=e),[o,s]}const Cke=Xe({agentId:Ce()});function _ke({source:e,closeDialog:t}){const{data:n,isLoading:r}=Qm(),a=x6(),{toast:o}=An(),i=Bt(),s=bn({resolver:yn(Cke),mode:"onChange"}),l=c=>{a.mutate({agentId:c.agentId,sourceId:e.id||""},{onSuccess:()=>{t(),i.invalidateQueries({queryKey:sf()}),o({title:"Agent attached successfully!",duration:5e3})},onError:u=>{o({title:"Error attaching agent...",duration:5e3})}})};return f.jsx(vn,{...s,children:f.jsxs("form",{onSubmit:s.handleSubmit(l,c=>console.log(c)),className:"space-y-8",children:[f.jsx(ut,{control:s.control,name:"agentId",render:({field:c})=>f.jsxs(ot,{children:[f.jsx(yt,{children:"Agent to Attach to"}),f.jsxs(So,{disabled:r,onValueChange:c.onChange,value:c.value,children:[f.jsx(pt,{children:f.jsx(za,{children:f.jsx(wo,{placeholder:r?"Loading agents...":"Select an agent"})})}),f.jsx(Ua,{className:"max-h-[200px] overflow-y-auto",children:(n??[]).map(u=>f.jsx(Fn,{value:u.id||"",children:u.name},u.id))})]}),f.jsx(Mt,{children:"Select an agent to attach your data source to."}),f.jsx(lt,{})]})}),f.jsxs("div",{className:"flex items-center",children:[f.jsx(ue,{type:"submit",children:"Attach to Agent"}),a.isPending&&f.jsxs("div",{className:Tt("ml-4 flex items-center animate-in slide-in-from-bottom-2"),children:[f.jsx(un,{className:"mr-2 h-4 w-4 animate-spin "}),f.jsx("span",{children:"Attaching agent to data source..."})]})]})]})})}const Ake=({open:e,onOpenChange:t,source:n})=>f.jsx(Kt,{open:e,onOpenChange:t,children:f.jsxs(Ht,{className:"max-h-[95svh] w-full sm:max-w-[800px]",children:[f.jsxs(Pt,{children:[f.jsxs($t,{children:["Attach Agent to ",(n==null?void 0:n.name)??"Source"]}),f.jsx(dn,{children:"The datasource will then become available to the agent to use for information."})]}),n?f.jsx(_ke,{source:n,closeDialog:()=>t(!1)}):f.jsx("p",{children:"No source and agent..."})]})}),Tke=Xe({name:Ce().min(1,{message:"Name must be at least 1 character."}).max(30,{message:"Name must not be longer than 30 characters."}),description:Ce().max(2e3).min(0)}),Rke={name:"",description:""};function Nke({closeDialog:e}){const t=cX(),n=Bt(),{toast:r}=An(),a=bn({resolver:yn(Tke),defaultValues:Rke,mode:"onChange"}),o=i=>{t.mutate({requestBody:{name:i.name,description:i.description}},{onSuccess:()=>{n.invalidateQueries({queryKey:sf()}),e(),r({title:"Source created successfully!",duration:5e3})},onError:s=>{r({title:"Error creating source",duration:5e3})}})};return f.jsx(vn,{...a,children:f.jsxs("form",{onSubmit:a.handleSubmit(o,i=>console.log(i)),className:"space-y-8",children:[f.jsx(ut,{control:a.control,name:"name",render:({field:i})=>f.jsxs(ot,{children:[f.jsx(yt,{children:"Name"}),f.jsx(pt,{children:f.jsx(_n,{...i})}),f.jsx(Mt,{children:"This is your sources display name. It can be a real name or a pseudonym."}),f.jsx(lt,{})]})}),f.jsx(ut,{control:a.control,name:"description",render:({field:i})=>f.jsxs(ot,{children:[f.jsx(yt,{children:"Description"}),f.jsx(pt,{children:f.jsx(qs,{placeholder:"Describe your source here",className:"resize-none",...i})}),f.jsx(lt,{})]})}),f.jsxs("div",{className:"flex items-center",children:[f.jsx(ue,{type:"submit",children:"Create Source"}),t.isPending&&f.jsxs("div",{className:Tt("ml-4 flex items-center animate-in slide-in-from-bottom-2"),children:[f.jsx(un,{className:"mr-2 h-4 w-4 animate-spin "}),f.jsx("span",{children:"Creating Source..."})]})]})]})})}const Ike=({open:e,onOpenChange:t})=>f.jsx(Kt,{open:e,onOpenChange:t,children:f.jsxs(Ht,{className:"max-h-[95svh] w-full sm:max-w-[800px]",children:[f.jsxs(Pt,{children:[f.jsx($t,{children:"Create Data Source"}),f.jsx(dn,{children:"Add a new data source here. Click create when you're done."})]}),f.jsx(Nke,{closeDialog:()=>t(!1)})]})}),Oke=({value:e,onValueChange:t})=>f.jsx("form",{children:f.jsxs("div",{className:"relative",children:[f.jsx(Ms,{className:"pointer-events-none absolute left-[12px] top-3 h-4 w-4 text-muted-foreground"}),f.jsx(_n,{placeholder:"Search data source",value:e,onChange:n=>t(n.target.value),className:"w-52 pl-8 lg:w-80"})]})}),Dke=(e,t,n,r,a)=>[{accessorKey:"actions",header:"",cell:({row:o})=>f.jsx(Dn,{isLoading:a,children:f.jsxs("span",{className:"flex space-x-2",children:[f.jsx(ue,{onClick:()=>e(o.original),className:"!h-6 !w-6 !p-1",variant:"ghost",children:f.jsx(eF,{className:"h-3.5 w-3.5"})}),f.jsx(ue,{onClick:()=>t(o.original),className:"!h-6 !w-6 !p-1",variant:"ghost",children:f.jsx(Fm,{className:"h-3.5 w-3.5"})})]})})},{accessorKey:"name",header:"Name",cell:({row:o})=>f.jsx(Dn,{isLoading:a,children:o.getValue("name")})},{accessorFn:o=>{var i;return(i=o.embedding_config)==null?void 0:i.embedding_model},accessorKey:"embedding_model",header:"Embedding Model",cell:({row:o})=>f.jsx(Dn,{isLoading:a,children:o.getValue("embedding_model")})},{accessorFn:o=>{var i;return((i=o.embedding_config)==null?void 0:i.embedding_dim)??0},accessorKey:"embedding_dim",header:"Embedding Dimensions",cell:({row:o})=>f.jsx(Dn,{isLoading:a,children:o.getValue("embedding_dim")})},{accessorFn:o=>{var i;return((i=o.metadata_)==null?void 0:i.num_documents)??0},accessorKey:"num_documents",header:"Documents",cell:({row:o})=>f.jsx(Dn,{isLoading:a,children:o.getValue("num_documents")})},{accessorFn:o=>{var i;return((i=o.metadata_)==null?void 0:i.num_passages)??0},accessorKey:"num_passages",header:"Passages",cell:({row:o})=>f.jsx(Dn,{isLoading:a,children:o.getValue("num_passages")})},{accessorKey:"created_at",header:"Created At",cell:({row:o})=>f.jsx(Dn,{isLoading:a,children:Mre(o,"created_at","Unknown")})},{accessorFn:o=>{var i;return(i=o.metadata_)==null?void 0:i.attached_agents},accessorKey:"attached_agents",header:"Attached To",cell:({row:o})=>{const i=o.getValue("attached_agents")??[];return f.jsx(Dn,{isLoading:a,children:f.jsxs("div",{className:"flex flex-wrap items-baseline",children:[f.jsxs(ue,{onClick:()=>n(o.original),variant:"ghost",className:"mr-1 h-5 !p-1 text-xs",size:"sm",children:[f.jsx("span",{className:"sr-only",children:"attach another agent"}),f.jsx(Dq,{className:"h-3 w-3"})]}),i.map(s=>f.jsxs(ue,{onClick:()=>r(o.original,s),variant:"ghost",className:"mr-1 h-5 !p-1 text-xs",size:"sm",children:[s.name,f.jsx(Iq,{className:"ml-2 h-3 w-3"})]},s.id)),i.length===0&&f.jsx("span",{className:"text-xs",children:"- None"})]})})}}],Lke=({nameFilter:e,className:t,onSourceUpload:n,onSourceEdit:r,onAttachAgent:a,onDetachAgent:o})=>{const{data:i,isError:s,isLoading:l}=b_(),c=(i??[]).filter(u=>u.name.includes(e));return f.jsx("div",{className:t,children:f.jsx(uf,{columns:Dke(n,r,a,o,l),isLoading:l,error:s?"Failed to load sources":void 0,data:c,renderPagination:u=>f.jsx(df,{className:"mt-4",table:u})})})},Mke=({open:e,onOpenChange:t,source:n,agent:r})=>{const a=Bt(),o=k6(),{toast:i}=An(),s=()=>{!n||!r||o.mutate({agentId:r.id,sourceId:n.id||""},{onSuccess:()=>{t(!1),a.invalidateQueries({queryKey:sf()}),i({title:"Agent detached successfully!",duration:3e3})},onError:l=>i({title:"Failed to detach agent!",duration:3e3})})};return f.jsx(Kt,{open:n&&r&&e,onOpenChange:t,children:f.jsxs(Ht,{className:"max-h-[95svh] w-full sm:max-w-[800px]",children:[f.jsx(Pt,{children:f.jsxs($t,{children:["Detach Agent from ",(n==null?void 0:n.name)??"Source"]})}),f.jsx("p",{className:"pb-10",children:"The data source will then no longer be available to the agent to use for information."}),f.jsxs("div",{className:"flex space-x-2",children:[f.jsx(ue,{variant:"ghost",onClick:()=>t(!1),children:"Cancel"}),f.jsxs(ue,{onClick:s,children:[o.isPending?"Detaching":"Detach"," Agent"]})]})]})})},Pke=Xe({name:Ce().min(1,{message:"Name must be at least 1 character."}).max(30,{message:"Name must not be longer than 30 characters."}),description:Ce().max(2e3).min(0)});function $ke({source:e,closeDialog:t}){const n=pX(),r=Bt(),{toast:a}=An(),o={name:e.name,description:e.description??""},i=bn({resolver:yn(Pke),defaultValues:o,mode:"onChange"}),s=l=>{n.mutate({sourceId:e.id||"",requestBody:{id:e.id||"",name:l.name||"",description:l.description}},{onSuccess:()=>{r.invalidateQueries({queryKey:sf()}),t(),a({title:"Source editd successfully!",duration:5e3})},onError:c=>{a({title:"Error creating source",duration:5e3})}})};return f.jsx(vn,{...i,children:f.jsxs("form",{onSubmit:i.handleSubmit(s,l=>console.log(l)),className:"space-y-8",children:[f.jsx(ut,{control:i.control,name:"name",render:({field:l})=>f.jsxs(ot,{children:[f.jsx(yt,{children:"Name"}),f.jsx(pt,{children:f.jsx(_n,{...l})}),f.jsx(Mt,{children:"This is your sources display name. It can be a real name or a pseudonym."}),f.jsx(lt,{})]})}),f.jsx(ut,{control:i.control,name:"description",render:({field:l})=>f.jsxs(ot,{children:[f.jsx(yt,{children:"Description"}),f.jsx(pt,{children:f.jsx(qs,{placeholder:"Describe your source here",className:"resize-none",...l})}),f.jsx(lt,{})]})}),f.jsxs("div",{className:"flex items-center",children:[f.jsx(ue,{type:"submit",children:"Edit Source"}),n.isPending&&f.jsxs("div",{className:Tt("ml-4 flex items-center animate-in slide-in-from-bottom-2"),children:[f.jsx(un,{className:"mr-2 h-4 w-4 animate-spin "}),f.jsx("span",{children:"Edit Source..."})]})]})]})})}const Fke=({open:e,onOpenChange:t,source:n})=>f.jsx(Kt,{open:e,onOpenChange:t,children:f.jsxs(Ht,{className:"max-h-[95svh] w-full sm:max-w-[800px]",children:[f.jsxs(Pt,{children:[f.jsx($t,{children:"Edit Data Source"}),f.jsx(dn,{children:"Edit an existing data source here."})]}),n?f.jsx($ke,{source:n,closeDialog:()=>t(!1)}):f.jsx("p",{children:"No source..."})]})}),jke=Xe({file:Tie(e=>e instanceof File)}),zke=e=>{const t=C6(),{toast:n}=An(),r=Bt(),a=bn({resolver:yn(jke),mode:"onChange"}),o=i=>{t.mutate({sourceId:e.source.id||"",formData:{file:i.file}},{onSuccess:()=>{r.invalidateQueries({queryKey:BZ()}),e.onComplete()},onError:s=>n({title:"Failed to upload file...",duration:5e3})})};return f.jsx(vn,{...a,children:f.jsxs("form",{onSubmit:a.handleSubmit(o),className:"space-y-8",children:[f.jsx(ut,{control:a.control,name:"file",render:({field:i})=>f.jsxs(ot,{children:[f.jsx(yt,{children:"File"}),f.jsx(pt,{children:f.jsx(_n,{type:"file",ref:i.ref,disabled:i.disabled,name:i.name,onBlur:i.onBlur,onChange:s=>{var l,c;i.onChange((c=(l=s.target)==null?void 0:l.files)==null?void 0:c[0])}})}),f.jsx(Mt,{children:"File to upload."}),f.jsx(lt,{})]})}),f.jsxs("div",{className:"flex space-x-4",children:[f.jsx(ue,{children:"Upload File"}),t.isPending&&f.jsxs("div",{className:Tt("ml-4 flex items-center animate-in slide-in-from-bottom-2"),children:[f.jsx(un,{className:"mr-2 h-4 w-4 animate-spin "}),f.jsx("span",{children:"Creating Job to ingest file..."})]}),t.isSuccess&&f.jsxs("div",{className:Tt("ml-4 flex items-center text-emerald-600 animate-in slide-in-from-bottom-2"),children:[f.jsx(Mm,{className:"mr-2 h-4 w-4 "}),f.jsx("span",{children:"Job created! File ingestion started!"})]})]})]})})},Uke=Xe({sourceId:Ce(),file:Rie()}),Bke=({onComplete:e})=>{const t=b_(),n=C6(),{toast:r}=An(),a=bn({resolver:yn(Uke),defaultValues:{sourceId:"",file:void 0},mode:"onChange"}),o=Bt(),i=s=>{n.mutate({sourceId:s.sourceId,formData:{file:s.file}},{onSuccess:()=>{o.invalidateQueries({queryKey:b6()}),e()},onError:l=>r({title:"Failed to upload file...",duration:5e3})})};return f.jsx(vn,{...a,children:f.jsxs("form",{onSubmit:a.handleSubmit(i),className:"space-y-8",children:[f.jsx(ut,{control:a.control,name:"sourceId",render:({field:s})=>f.jsxs(ot,{children:[f.jsx(yt,{children:"Upload to"}),f.jsx(pt,{children:f.jsxs(So,{value:s.value,name:s.name,onValueChange:s.onChange,disabled:t.isLoading,children:[f.jsx(za,{className:"w-full",children:f.jsx(wo,{placeholder:"Select a source"})}),f.jsx(Ua,{children:(t.data??[]).map(l=>f.jsx(Fn,{value:l.id||"",children:l.name},l.id))})]})}),f.jsx(Mt,{children:"Upload your data to this source."}),f.jsx(lt,{})]})}),f.jsx(ut,{control:a.control,name:"file",render:({field:s})=>f.jsxs(ot,{children:[f.jsx(yt,{children:"File"}),f.jsx(pt,{children:f.jsx(_n,{type:"file",ref:s.ref,disabled:s.disabled,name:s.name,onBlur:s.onBlur,onChange:l=>{var c,u;s.onChange((u=(c=l.target)==null?void 0:c.files)==null?void 0:u[0])}})}),f.jsx(Mt,{children:"File to upload."}),f.jsx(lt,{})]})}),f.jsxs("div",{className:"flex space-x-4",children:[f.jsx(ue,{children:"Upload File"}),n.isPending&&f.jsxs("div",{className:Tt("ml-4 flex items-center animate-in slide-in-from-bottom-2"),children:[f.jsx(un,{className:"mr-2 h-4 w-4 animate-spin "}),f.jsx("span",{children:"Creating Job to ingest file..."})]}),n.isSuccess&&f.jsxs("div",{className:Tt("ml-4 flex items-center text-emerald-600 animate-in slide-in-from-bottom-2"),children:[f.jsx(Mm,{className:"mr-2 h-4 w-4 "}),f.jsx("span",{children:"Job created! File ingestion started!"})]})]})]})})},Hke=({source:e,open:t,onOpenChange:n})=>f.jsx(Kt,{open:t,onOpenChange:n,children:f.jsxs(Ht,{className:"max-h-[95svh] w-full sm:max-w-[800px]",children:[f.jsx(Pt,{children:f.jsxs($t,{children:["Upload Data ",e&&`to ${e.name}`]})}),e?f.jsx(zke,{onComplete:()=>n(!1),source:e}):f.jsx(Bke,{onComplete:()=>n(!1)})]})}),eU="Progress",Dh=100,[Vke,mTe]=zn(eU),[qke,Gke]=Vke(eU),tU=p.forwardRef((e,t)=>{const{__scopeProgress:n,value:r,max:a,getValueLabel:o=Yke,...i}=e,s=Vk(a)?a:Dh,l=rU(r,s)?r:null,c=lm(l)?o(l,s):void 0;return p.createElement(qke,{scope:n,value:l,max:s},p.createElement(ze.div,W({"aria-valuemax":s,"aria-valuemin":0,"aria-valuenow":lm(l)?l:void 0,"aria-valuetext":c,role:"progressbar","data-state":nU(l,s),"data-value":l??void 0,"data-max":s},i,{ref:t})))});tU.propTypes={max(e,t,n){const r=e[t],a=String(r);return r&&!Vk(r)?new Error(Zke(a,n)):null},value(e,t,n){const r=e[t],a=String(r),o=Vk(e.max)?e.max:Dh;return r!=null&&!rU(r,o)?new Error(Xke(a,n)):null}};const Wke="ProgressIndicator",Kke=p.forwardRef((e,t)=>{var n;const{__scopeProgress:r,...a}=e,o=Gke(Wke,r);return p.createElement(ze.div,W({"data-state":nU(o.value,o.max),"data-value":(n=o.value)!==null&&n!==void 0?n:void 0,"data-max":o.max},a,{ref:t}))});function Yke(e,t){return`${Math.round(e/t*100)}%`}function nU(e,t){return e==null?"indeterminate":e===t?"complete":"loading"}function lm(e){return typeof e=="number"}function Vk(e){return lm(e)&&!isNaN(e)&&e>0}function rU(e,t){return lm(e)&&!isNaN(e)&&e<=t&&e>=0}function Zke(e,t){return`Invalid prop \`max\` of value \`${e}\` supplied to \`${t}\`. Only numbers greater than 0 are valid max values. Defaulting to \`${Dh}\`.`}function Xke(e,t){return`Invalid prop \`value\` of value \`${e}\` supplied to \`${t}\`. The \`value\` prop must be: - - a positive number - - less than the value passed to \`max\` (or ${Dh} if no \`max\` prop is set) - - \`null\` if the progress is indeterminate. - -Defaulting to \`null\`.`}const aU=tU,Qke=Kke,oU=p.forwardRef(({className:e,value:t,indeterminate:n=!1,...r},a)=>f.jsx(aU,{ref:a,className:ee("relative h-4 w-full overflow-hidden rounded-full bg-secondary",e),...r,children:f.jsx(Qke,{className:ee("h-full w-full flex-1 bg-primary transition-all",n&&"animate-progress origin-left"),style:{transform:`translateX(-${100-(t||0)}%)`}})}));oU.displayName=aU.displayName;function Jke({job:e}){var n;const t=p.useMemo(()=>{var a;const r=(a=e==null?void 0:e.metadata_)==null?void 0:a.filename;return typeof r=="string"?r:"Unknown"},[(n=e==null?void 0:e.metadata_)==null?void 0:n.filename]);return f.jsx("div",{className:"border rounded-sm p-3 gap-3 flex flex-col",children:f.jsxs("div",{className:"text-sm whitespace-nowrap gap-4 text-muted-foreground items-center flex flex-row justify-between",children:[f.jsxs("div",{children:["Uploading ",t]}),f.jsx(oU,{className:"h-2",indeterminate:!0}),f.jsx("div",{children:"Indeterminate time to upload"})]})})}function eCe(){const{data:e}=sX({userId:""},void 0,{refetchInterval:2e3}),t=p.useMemo(()=>e||[],[e]);return f.jsx("div",{className:"mx-4 my-4 rounded flex flex-col gap-2",children:f.jsx("div",{className:"flex flex-col gap-3",children:t.map(n=>f.jsx(Jke,{job:n},n.id))})})}const tCe=()=>{const[e,t]=p.useState(!1),[n,r]=p.useState(!1),[a,o]=p.useState(),[i,s]=p.useState(!1),[l,c]=p.useState(),[u,d]=p.useState(!1),[g,m]=p.useState(),[b,y]=p.useState(!1),[w,v]=p.useState(),[h,S]=p.useState(""),[E]=Oh(h,300),k=T=>{c(T),s(!0)},x=T=>{o(T),r(!0)},C=T=>{s(T),T||setTimeout(()=>c(void 0),300)},_=T=>{v(T),d(!0)},R=(T,L)=>{m({source:T,agent:L}),y(!0)};return f.jsxs(Fs,{children:[f.jsxs("div",{className:"flex items-center justify-between bg-background/95 px-4 pb-3 pt-2.5 backdrop-blur supports-[backdrop-filter]:bg-background/60",children:[f.jsx(Oke,{value:h,onValueChange:S}),f.jsxs("div",{className:"flex items-center space-x-2",children:[f.jsxs(ue,{onClick:()=>s(!0),size:"sm",children:[f.jsx(eF,{className:"mr-2 h-4 w-4"}),"Upload Data"]}),f.jsxs(ue,{onClick:()=>t(!0),size:"sm",children:[f.jsx(ya,{className:"mr-2 h-4 w-4"}),"Create Data Source"]})]})]}),f.jsx(eCe,{}),f.jsx(Lke,{onSourceUpload:k,onSourceEdit:x,onAttachAgent:_,onDetachAgent:R,className:"mx-4",nameFilter:E}),f.jsx(Ike,{open:e,onOpenChange:t}),f.jsx(Fke,{source:a,open:n,onOpenChange:r}),f.jsx(Hke,{source:l,open:i,onOpenChange:C}),f.jsx(Ake,{source:w,open:u,onOpenChange:d}),f.jsx(Mke,{source:g==null?void 0:g.source,agent:g==null?void 0:g.agent,open:b,onOpenChange:y})]})},nCe={path:"data-sources",element:f.jsx(tCe,{})},rCe=Xe({name:Ce().min(1,{message:"Name must be at least 1 character."}).max(30,{message:"Name must not be longer than 30 characters."}),text:Ce().max(2e3).min(0)}),aCe={name:"",text:""};function oCe({closeDialog:e}){const t=_6(),{toast:n}=An(),r=rCe.extend({text:Ce().max(2e3).min(0)}),a=Bt(),o=bn({resolver:yn(r),defaultValues:aCe,mode:"onChange"}),i=s=>{t.mutate({requestBody:{label:Qr,name:s.name,value:s.text}},{onSuccess:()=>{a.invalidateQueries({queryKey:lf({label:Qr})}),e(),n({title:"Persona created successfully!",duration:5e3})},onError:l=>{n({title:"Error creating persona",duration:5e3})}})};return f.jsx(vn,{...o,children:f.jsxs("form",{onSubmit:o.handleSubmit(i,s=>console.log(s)),className:"space-y-8",children:[f.jsx(ut,{control:o.control,name:"name",render:({field:s})=>f.jsxs(ot,{children:[f.jsx(yt,{children:"Name"}),f.jsx(pt,{children:f.jsx(_n,{...s})}),f.jsx(Mt,{children:"This is your personas display name. It can be a real name or a pseudonym."}),f.jsx(lt,{})]})}),f.jsx(ut,{control:o.control,name:"text",render:({field:s})=>{var l;return f.jsxs(ot,{children:[f.jsx(pt,{children:f.jsx(Ai,{placeholder:"Describe your persona here",charCount:(l=s.value)==null?void 0:l.length,limit:2e3,...s})}),f.jsxs(Mt,{children:["You can use no more than ",2e3," characters."]}),f.jsx(lt,{})]})}}),f.jsxs("div",{className:"flex items-center",children:[f.jsx(ue,{type:"submit",children:"Create Persona"}),t.isPending&&f.jsxs("div",{className:Tt("ml-4 flex items-center animate-in slide-in-from-bottom-2"),children:[f.jsx(un,{className:"mr-2 h-4 w-4 animate-spin "}),f.jsx("span",{children:"Creating Persona..."})]})]})]})})}const iCe=({open:e,onOpenChange:t})=>f.jsx(Kt,{open:e,onOpenChange:t,children:f.jsxs(Ht,{className:"max-h-[95svh] w-full sm:max-w-[800px]",children:[f.jsxs(Pt,{children:[f.jsx($t,{children:"Create Persona"}),f.jsx(dn,{children:"Add a new persona here. Click create when you're done."})]}),f.jsx(oCe,{closeDialog:()=>t(!1)})]})}),sCe=Xe({text:Ce().max(2e3).min(0)});function lCe({persona:e,closeDialog:t}){const n=v_(),r=Bt(),{toast:a}=An(),o=sCe.extend({text:Ce().max(2e3).min(0)}),i={text:e.value||""},s=bn({resolver:yn(o),defaultValues:i,mode:"onChange"}),l=c=>{n.mutate({blockId:e.id||"",requestBody:{id:e.id||"",value:c.text||""}},{onSuccess:()=>{r.invalidateQueries({queryKey:lf({label:Qr})}),t(),a({title:"Persona updated successfully!",duration:5e3})},onError:u=>{a({title:"Error updating persona",duration:5e3})}})};return f.jsx(vn,{...s,children:f.jsxs("form",{onSubmit:s.handleSubmit(l,c=>console.log(c)),className:"space-y-8",children:[f.jsx(ut,{control:s.control,name:"text",render:({field:c})=>{var u;return f.jsxs(ot,{children:[f.jsx(pt,{children:f.jsx(Ai,{placeholder:"Describe your persona here",charCount:(u=c.value)==null?void 0:u.length,limit:2e3,...c})}),f.jsxs(Mt,{children:["You can use no more than ",2e3," characters."]}),f.jsx(lt,{})]})}}),f.jsxs("div",{className:"flex items-center",children:[f.jsx(ue,{type:"submit",children:"Update Persona"}),n.isPending&&f.jsxs("div",{className:Tt("ml-4 flex items-center animate-in slide-in-from-bottom-2"),children:[f.jsx(un,{className:"mr-2 h-4 w-4 animate-spin "}),f.jsx("span",{children:"Updating Persona..."})]})]})]})})}const cCe=({persona:e,open:t,onOpenChange:n})=>f.jsx(Kt,{open:t,onOpenChange:n,children:f.jsxs(Ht,{className:"max-h-[95svh] w-full sm:max-w-[800px]",children:[f.jsxs(Pt,{children:[f.jsxs($t,{children:["Edit ",(e==null?void 0:e.name)??"Persona"]}),f.jsx(dn,{children:"Edit existing agent template here. Click create when you're done."})]}),e?f.jsx(lCe,{persona:e,closeDialog:()=>n(!1)}):f.jsx("p",{children:"No Persona...."})]})}),uCe=({value:e,onValueChange:t})=>f.jsx("form",{children:f.jsxs("div",{className:"relative",children:[f.jsx(Ms,{className:"pointer-events-none absolute left-[12px] top-3 h-4 w-4 text-muted-foreground"}),f.jsx(_n,{placeholder:"Search persona",value:e,onChange:n=>t(n.target.value),className:"w-52 pl-8 lg:w-80"})]})});let Cx;const iU="HoverCard",[sU,hTe]=zn(iU,[qa]),KA=qa(),[dCe,YA]=sU(iU),fCe=e=>{const{__scopeHoverCard:t,children:n,open:r,defaultOpen:a,onOpenChange:o,openDelay:i=700,closeDelay:s=300}=e,l=KA(t),c=p.useRef(0),u=p.useRef(0),d=p.useRef(!1),g=p.useRef(!1),[m=!1,b]=Fa({prop:r,defaultProp:a,onChange:o}),y=p.useCallback(()=>{clearTimeout(u.current),c.current=window.setTimeout(()=>b(!0),i)},[i,b]),w=p.useCallback(()=>{clearTimeout(c.current),!d.current&&!g.current&&(u.current=window.setTimeout(()=>b(!1),s))},[s,b]),v=p.useCallback(()=>b(!1),[b]);return p.useEffect(()=>()=>{clearTimeout(c.current),clearTimeout(u.current)},[]),p.createElement(dCe,{scope:t,open:m,onOpenChange:b,onOpen:y,onClose:w,onDismiss:v,hasSelectionRef:d,isPointerDownOnContentRef:g},p.createElement(ah,l,n))},pCe="HoverCardTrigger",gCe=p.forwardRef((e,t)=>{const{__scopeHoverCard:n,...r}=e,a=YA(pCe,n),o=KA(n);return p.createElement(pf,W({asChild:!0},o),p.createElement(ze.a,W({"data-state":a.open?"open":"closed"},r,{ref:t,onPointerEnter:fe(e.onPointerEnter,cm(a.onOpen)),onPointerLeave:fe(e.onPointerLeave,cm(a.onClose)),onFocus:fe(e.onFocus,a.onOpen),onBlur:fe(e.onBlur,a.onClose),onTouchStart:fe(e.onTouchStart,i=>i.preventDefault())})))}),mCe="HoverCardPortal",[bTe,hCe]=sU(mCe,{forceMount:void 0}),qk="HoverCardContent",bCe=p.forwardRef((e,t)=>{const n=hCe(qk,e.__scopeHoverCard),{forceMount:r=n.forceMount,...a}=e,o=YA(qk,e.__scopeHoverCard);return p.createElement(pr,{present:r||o.open},p.createElement(yCe,W({"data-state":o.open?"open":"closed"},a,{onPointerEnter:fe(e.onPointerEnter,cm(o.onOpen)),onPointerLeave:fe(e.onPointerLeave,cm(o.onClose)),ref:t})))}),yCe=p.forwardRef((e,t)=>{const{__scopeHoverCard:n,onEscapeKeyDown:r,onPointerDownOutside:a,onFocusOutside:o,onInteractOutside:i,...s}=e,l=YA(qk,n),c=KA(n),u=p.useRef(null),d=nt(t,u),[g,m]=p.useState(!1);return p.useEffect(()=>{if(g){const b=document.body;return Cx=b.style.userSelect||b.style.webkitUserSelect,b.style.userSelect="none",b.style.webkitUserSelect="none",()=>{b.style.userSelect=Cx,b.style.webkitUserSelect=Cx}}},[g]),p.useEffect(()=>{if(u.current){const b=()=>{m(!1),l.isPointerDownOnContentRef.current=!1,setTimeout(()=>{var y;((y=document.getSelection())===null||y===void 0?void 0:y.toString())!==""&&(l.hasSelectionRef.current=!0)})};return document.addEventListener("pointerup",b),()=>{document.removeEventListener("pointerup",b),l.hasSelectionRef.current=!1,l.isPointerDownOnContentRef.current=!1}}},[l.isPointerDownOnContentRef,l.hasSelectionRef]),p.useEffect(()=>{u.current&&vCe(u.current).forEach(y=>y.setAttribute("tabindex","-1"))}),p.createElement(Ls,{asChild:!0,disableOutsidePointerEvents:!1,onInteractOutside:i,onEscapeKeyDown:r,onPointerDownOutside:a,onFocusOutside:fe(o,b=>{b.preventDefault()}),onDismiss:l.onDismiss},p.createElement(gf,W({},c,s,{onPointerDown:fe(s.onPointerDown,b=>{b.currentTarget.contains(b.target)&&m(!0),l.hasSelectionRef.current=!1,l.isPointerDownOnContentRef.current=!0}),ref:d,style:{...s.style,userSelect:g?"text":void 0,WebkitUserSelect:g?"text":void 0,"--radix-hover-card-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-hover-card-content-available-width":"var(--radix-popper-available-width)","--radix-hover-card-content-available-height":"var(--radix-popper-available-height)","--radix-hover-card-trigger-width":"var(--radix-popper-anchor-width)","--radix-hover-card-trigger-height":"var(--radix-popper-anchor-height)"}})))});function cm(e){return t=>t.pointerType==="touch"?void 0:e()}function vCe(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});for(;n.nextNode();)t.push(n.currentNode);return t}const SCe=fCe,wCe=gCe,lU=bCe,ECe=SCe,xCe=wCe,cU=p.forwardRef(({className:e,align:t="center",sideOffset:n=4,...r},a)=>f.jsx(lU,{ref:a,align:t,sideOffset:n,className:ee("z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...r}));cU.displayName=lU.displayName;const ZA=({text:e})=>f.jsxs(ECe,{children:[f.jsx(xCe,{asChild:!0,children:f.jsx(ue,{size:"sm",variant:"ghost",className:"-mx-4 w-96 text-left font-normal",children:f.jsx("span",{className:"h-6 w-full truncate text-left",children:f.jsx("span",{className:"whitespace-pre",children:e})})})}),f.jsx(cU,{className:"w-[300px] p-4 sm:w-[500px]",children:f.jsx("div",{className:"max-h-[400px] overflow-y-auto",children:f.jsx("p",{className:"whitespace-pre-wrap",children:e})})})]}),kCe=(e,t)=>[{accessorKey:"edit",header:"",size:20,cell:({row:n})=>t?f.jsx(Pi,{className:"h-6 w-6"}):f.jsx(ue,{onClick:()=>e(n.original),className:"!h-6 !w-6 !p-1",variant:"ghost",children:f.jsx(Fm,{className:"h-3.5 w-3.5"})})},{accessorKey:"name",header:"Name",cell:({row:n})=>f.jsx(Dn,{isLoading:t,children:n.getValue("name")})},{accessorKey:"value",header:"Value",cell:({row:n})=>f.jsx(Dn,{isLoading:t,children:f.jsx(ZA,{text:n.getValue("value")})})}],CCe=({onPersonaEdit:e,nameFilter:t,className:n})=>{const{data:r,isLoading:a,isError:o}=Ng({label:Qr}),i=p.useMemo(()=>(r??[]).filter(s=>{var l;return(l=s.name)==null?void 0:l.includes(t)}),[r,t]);return f.jsx("div",{className:n,children:f.jsx(uf,{columns:kCe(e,a),isLoading:a,error:o?"Error loading agent templates":void 0,data:i,renderPagination:s=>f.jsx(df,{className:"mt-4",table:s})})})},_Ce=()=>{const[e,t]=p.useState(""),[n]=Oh(e,300),r=Li(),[a,o]=p.useState(r.search.includes("openCreatePersona")??!1),[i,s]=p.useState(null),[l,c]=p.useState(!1),u=d=>{s(d),c(!0)};return f.jsxs(Fs,{children:[f.jsxs("div",{className:"flex items-center justify-between bg-background/95 px-4 pb-3 pt-2.5 backdrop-blur supports-[backdrop-filter]:bg-background/60",children:[f.jsx(uCe,{value:e,onValueChange:t}),f.jsxs(ue,{onClick:()=>o(!0),size:"sm",children:[f.jsx(ya,{className:"mr-2 h-4 w-4"}),"Create Persona"]})]}),f.jsx(CCe,{onPersonaEdit:u,nameFilter:n,className:"mx-4"}),f.jsx(iCe,{open:a,onOpenChange:d=>o(d)}),f.jsx(cCe,{persona:i,open:l,onOpenChange:d=>c(d)})]})},ACe={path:"agent-templates",element:f.jsx(_Ce,{})},uU="Radio",[TCe,dU]=zn(uU),[RCe,NCe]=TCe(uU),ICe=p.forwardRef((e,t)=>{const{__scopeRadio:n,name:r,checked:a=!1,required:o,disabled:i,value:s="on",onCheck:l,...c}=e,[u,d]=p.useState(null),g=nt(t,y=>d(y)),m=p.useRef(!1),b=u?!!u.closest("form"):!0;return p.createElement(RCe,{scope:n,checked:a,disabled:i},p.createElement(ze.button,W({type:"button",role:"radio","aria-checked":a,"data-state":fU(a),"data-disabled":i?"":void 0,disabled:i,value:s},c,{ref:g,onClick:fe(e.onClick,y=>{a||l==null||l(),b&&(m.current=y.isPropagationStopped(),m.current||y.stopPropagation())})})),b&&p.createElement(LCe,{control:u,bubbles:!m.current,name:r,value:s,checked:a,required:o,disabled:i,style:{transform:"translateX(-100%)"}}))}),OCe="RadioIndicator",DCe=p.forwardRef((e,t)=>{const{__scopeRadio:n,forceMount:r,...a}=e,o=NCe(OCe,n);return p.createElement(pr,{present:r||o.checked},p.createElement(ze.span,W({"data-state":fU(o.checked),"data-disabled":o.disabled?"":void 0},a,{ref:t})))}),LCe=e=>{const{control:t,checked:n,bubbles:r=!0,...a}=e,o=p.useRef(null),i=F_(n),s=N_(t);return p.useEffect(()=>{const l=o.current,c=window.HTMLInputElement.prototype,d=Object.getOwnPropertyDescriptor(c,"checked").set;if(i!==n&&d){const g=new Event("click",{bubbles:r});d.call(l,n),l.dispatchEvent(g)}},[i,n,r]),p.createElement("input",W({type:"radio","aria-hidden":!0,defaultChecked:n},a,{tabIndex:-1,ref:o,style:{...e.style,...s,position:"absolute",pointerEvents:"none",opacity:0,margin:0}}))};function fU(e){return e?"checked":"unchecked"}const MCe=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],pU="RadioGroup",[PCe,yTe]=zn(pU,[oh,dU]),gU=oh(),mU=dU(),[$Ce,FCe]=PCe(pU),jCe=p.forwardRef((e,t)=>{const{__scopeRadioGroup:n,name:r,defaultValue:a,value:o,required:i=!1,disabled:s=!1,orientation:l,dir:c,loop:u=!0,onValueChange:d,...g}=e,m=gU(n),b=x_(c),[y,w]=Fa({prop:o,defaultProp:a,onChange:d});return p.createElement($Ce,{scope:n,name:r,required:i,disabled:s,value:y,onValueChange:w},p.createElement(o7,W({asChild:!0},m,{orientation:l,dir:b,loop:u}),p.createElement(ze.div,W({role:"radiogroup","aria-required":i,"aria-orientation":l,"data-disabled":s?"":void 0,dir:b},g,{ref:t}))))}),zCe="RadioGroupItem",UCe=p.forwardRef((e,t)=>{const{__scopeRadioGroup:n,disabled:r,...a}=e,o=FCe(zCe,n),i=o.disabled||r,s=gU(n),l=mU(n),c=p.useRef(null),u=nt(t,c),d=o.value===a.value,g=p.useRef(!1);return p.useEffect(()=>{const m=y=>{MCe.includes(y.key)&&(g.current=!0)},b=()=>g.current=!1;return document.addEventListener("keydown",m),document.addEventListener("keyup",b),()=>{document.removeEventListener("keydown",m),document.removeEventListener("keyup",b)}},[]),p.createElement(i7,W({asChild:!0},s,{focusable:!i,active:d}),p.createElement(ICe,W({disabled:i,required:o.required,checked:d},l,a,{name:o.name,ref:u,onCheck:()=>o.onValueChange(a.value),onKeyDown:fe(m=>{m.key==="Enter"&&m.preventDefault()}),onFocus:fe(a.onFocus,()=>{var m;g.current&&((m=c.current)===null||m===void 0||m.click())})})))}),BCe=p.forwardRef((e,t)=>{const{__scopeRadioGroup:n,...r}=e,a=mU(n);return p.createElement(DCe,W({},a,r,{ref:t}))}),hU=jCe,bU=UCe,HCe=BCe,yU=p.forwardRef(({className:e,...t},n)=>f.jsx(hU,{className:ee("grid gap-2",e),...t,ref:n}));yU.displayName=hU.displayName;const vU=p.forwardRef(({className:e,children:t,...n},r)=>f.jsx(bU,{ref:r,className:ee("aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",e),...n,children:f.jsx(HCe,{className:"flex items-center justify-center",children:f.jsx(Q4,{className:"h-2.5 w-2.5 fill-current text-current"})})}));vU.displayName=bU.displayName;const Gk="horizontal",VCe=["horizontal","vertical"],SU=p.forwardRef((e,t)=>{const{decorative:n,orientation:r=Gk,...a}=e,o=wU(r)?r:Gk,s=n?{role:"none"}:{"aria-orientation":o==="vertical"?o:void 0,role:"separator"};return p.createElement(ze.div,W({"data-orientation":o},s,a,{ref:t}))});SU.propTypes={orientation(e,t,n){const r=e[t],a=String(r);return r&&!wU(r)?new Error(qCe(a,n)):null}};function qCe(e,t){return`Invalid prop \`orientation\` of value \`${e}\` supplied to \`${t}\`, expected one of: - - horizontal - - vertical - -Defaulting to \`${Gk}\`.`}function wU(e){return VCe.includes(e)}const EU=SU,Nd=p.forwardRef(({className:e,orientation:t="horizontal",decorative:n=!0,...r},a)=>f.jsx(EU,{ref:a,decorative:n,orientation:t,className:ee("shrink-0 bg-border",t==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",e),...r}));Nd.displayName=EU.displayName;const xU=({children:e,title:t,description:n})=>f.jsxs("div",{className:"space-y-6",children:[f.jsxs("div",{children:[f.jsx("h3",{className:"text-lg font-medium",children:t}),f.jsx("p",{className:"text-sm text-muted-foreground",children:n})]}),f.jsx(Nd,{}),e]}),GCe=Xe({currentAgentId:Ce({required_error:"Please select an agent."})}),WCe=e=>({currentAgentId:e??""});function KCe(){const{data:e}=Qm(),t=To(),{setAgent:n}=ph(),r=bn({resolver:yn(GCe),defaultValues:WCe(t==null?void 0:t.id)});function a(o){const i=(e??[]).find(s=>s.id===o.currentAgentId);i&&(n(i),e_({title:"Agent updated successfully!",description:"You can now continue your conversation with them!"}))}return f.jsx(xU,{title:"Agents",description:"Manage the agents you chat with...",children:f.jsx(vn,{...r,children:f.jsxs("form",{onSubmit:r.handleSubmit(a),className:"space-y-8",children:[f.jsx(ut,{control:r.control,name:"currentAgentId",render:({field:o})=>f.jsxs(ot,{className:"space-y-1",children:[f.jsx(yt,{children:"Current Agent"}),f.jsx(Mt,{children:"Agent you are currently chatting with..."}),f.jsx(lt,{}),f.jsx(yU,{onValueChange:o.onChange,defaultValue:o.value,className:"flex flex-wrap gap-8 pt-2",children:e==null?void 0:e.map((i,s)=>f.jsx(ot,{children:f.jsxs(yt,{className:"[&:has([data-state=checked])>div]:border-primary",children:[f.jsx(pt,{children:f.jsx(vU,{value:i.id||"",className:"sr-only"})}),f.jsx("div",{className:"items-center rounded-md border-2 border-muted p-1 hover:border-accent",children:f.jsxs("div",{className:"space-y-2 rounded-sm bg-[#ecedef] p-2",children:[f.jsxs("div",{className:"space-y-2 rounded-md bg-white p-2 shadow-sm",children:[f.jsx("div",{className:"h-2 w-[80px] rounded-lg bg-[#ecedef]"}),f.jsx("div",{className:"h-2 w-[100px] rounded-lg bg-[#ecedef]"})]}),f.jsxs("div",{className:"flex items-center space-x-2 rounded-md bg-white p-2 shadow-sm",children:[f.jsx("div",{className:"h-4 w-4 rounded-full bg-[#ecedef]"}),f.jsx("div",{className:"h-2 w-[100px] rounded-lg bg-[#ecedef]"})]}),f.jsxs("div",{className:"flex items-center space-x-2 rounded-md bg-white p-2 shadow-sm",children:[f.jsx("div",{className:"h-4 w-4 rounded-full bg-[#ecedef]"}),f.jsx("div",{className:"h-2 w-[100px] rounded-lg bg-[#ecedef]"})]})]})}),f.jsx("span",{className:"block w-full p-2 text-center font-normal",children:i.name})]})},s))})]})}),f.jsx(ue,{type:"submit",children:"Update agent"})]})})})}const YCe=Xe({username:Ce().min(2,{message:"Username must be at least 2 characters."}).max(30,{message:"Username must not be longer than 30 characters."}),email:Ce({required_error:"Please select an email to display."}).email(),bio:Ce().max(160).min(4),urls:nA(Xe({value:Ce().url({message:"Please enter a valid URL."})})).optional()}),ZCe={bio:"Build LLM agents using Letta.",urls:[{value:"https://memgpt.ai"},{value:"http://twitter.com/MemGPT"}]};function XCe(){const e=bn({resolver:yn(YCe),defaultValues:ZCe,mode:"onChange"}),{fields:t,append:n}=vae({name:"urls",control:e.control});function r(a){e_({title:"You submitted the following values:",description:f.jsx("pre",{className:"mt-2 w-[340px] rounded-md bg-slate-950 p-4",children:f.jsx("code",{className:"text-white",children:JSON.stringify(a,null,2)})})})}return f.jsx(xU,{title:"Profile",description:"This is how others will see you in the MemGPT community.",children:f.jsx(vn,{...e,children:f.jsxs("form",{onSubmit:e.handleSubmit(r),className:"space-y-8",children:[f.jsx(ut,{control:e.control,name:"username",render:({field:a})=>f.jsxs(ot,{children:[f.jsx(yt,{children:"Username"}),f.jsx(pt,{children:f.jsx(_n,{placeholder:"memgpt",...a})}),f.jsx(Mt,{children:"This is your public display name. It can be your real name or a pseudonym. You can only change this once every 30 days."}),f.jsx(lt,{})]})}),f.jsx(ut,{control:e.control,name:"email",render:({field:a})=>f.jsxs(ot,{children:[f.jsx(yt,{children:"Email"}),f.jsxs(So,{onValueChange:a.onChange,defaultValue:a.value,children:[f.jsx(pt,{children:f.jsx(za,{children:f.jsx(wo,{placeholder:"Select a verified email to display"})})}),f.jsxs(Ua,{children:[f.jsx(Fn,{value:"m@example.com",children:"m@example.com"}),f.jsx(Fn,{value:"m@google.com",children:"m@google.com"}),f.jsx(Fn,{value:"m@support.com",children:"m@support.com"})]})]}),f.jsxs(Mt,{children:["You can manage verified email addresses in your ",f.jsx(bd,{to:"/examples/forms",children:"email settings"}),"."]}),f.jsx(lt,{})]})}),f.jsx(ut,{control:e.control,name:"bio",render:({field:a})=>f.jsxs(ot,{children:[f.jsx(yt,{children:"Bio"}),f.jsx(pt,{children:f.jsx(qs,{placeholder:"Tell us a little bit about yourself",className:"resize-none",...a})}),f.jsxs(Mt,{children:["You can ",f.jsx("span",{children:"@mention"})," other users and organizations to link to them."]}),f.jsx(lt,{})]})}),f.jsxs("div",{children:[t.map((a,o)=>f.jsx(ut,{control:e.control,name:`urls.${o}.value`,render:({field:i})=>f.jsxs(ot,{children:[f.jsx(yt,{className:ee(o!==0&&"sr-only"),children:"URLs"}),f.jsx(Mt,{className:ee(o!==0&&"sr-only"),children:"Add links to your website, blog, or social media profiles."}),f.jsx(pt,{children:f.jsx(_n,{...i})}),f.jsx(lt,{})]})},a.id)),f.jsx(ue,{type:"button",variant:"outline",size:"sm",className:"mt-2",onClick:()=>n({value:""}),children:"Add URL"})]}),f.jsx(ue,{type:"submit",children:"Update profile"})]})})})}function QCe({className:e,items:t,...n}){return f.jsx("nav",{className:ee("flex space-x-2 lg:flex-col lg:space-x-0 lg:space-y-1",e),...n,children:t.map((r,a)=>f.jsx(jF,{relative:"path",to:r.to,className:ee(yc({variant:"ghost"}),"hover:bg-transparent hover:underline","[&.active]:bg-muted [&.active]:hover:bg-muted [&.active]:hover:no-underline","justify-start"),children:r.title},a))})}const JCe=[{title:"Profile",to:"./profile"}];function e_e(){return f.jsx(Fs,{children:f.jsxs("div",{className:"h-full space-y-6 overflow-y-auto p-10 pb-16",children:[f.jsxs("div",{className:"space-y-0.5",children:[f.jsx("h1",{className:"text-2xl font-bold tracking-tight",children:"Settings"}),f.jsx("p",{className:"text-muted-foreground",children:"Manage your Letta settings, like agents, prompts, and history."})]}),f.jsx(Nd,{className:"my-6"}),f.jsxs("div",{className:"flex flex-col space-y-8 lg:flex-row lg:space-x-12 lg:space-y-0",children:[f.jsx("aside",{className:"-mx-4 lg:w-1/5",children:f.jsx(QCe,{items:JCe})}),f.jsx("div",{className:"flex-1 lg:max-w-4xl",children:f.jsx(PF,{})})]})]})})}const t_e={path:"settings",element:f.jsx(e_e,{}),children:[{path:"",element:f.jsx(MF,{to:"profile"})},{path:"agents",element:f.jsx(KCe,{})},{path:"profile",element:f.jsx(XCe,{})}]};var kU={exports:{}};(function(e){var t=typeof window<"u"?window:typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope?self:{};/** - * Prism: Lightweight, robust, elegant syntax highlighting - * - * @license MIT - * @author Lea Verou - * @namespace - * @public - */var n=function(r){var a=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,o=0,i={},s={manual:r.Prism&&r.Prism.manual,disableWorkerMessageHandler:r.Prism&&r.Prism.disableWorkerMessageHandler,util:{encode:function h(S){return S instanceof l?new l(S.type,h(S.content),S.alias):Array.isArray(S)?S.map(h):S.replace(/&/g,"&").replace(/"u")return null;if("currentScript"in document&&1<2)return document.currentScript;try{throw new Error}catch(k){var h=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(k.stack)||[])[1];if(h){var S=document.getElementsByTagName("script");for(var E in S)if(S[E].src==h)return S[E]}return null}},isActive:function(h,S,E){for(var k="no-"+S;h;){var x=h.classList;if(x.contains(S))return!0;if(x.contains(k))return!1;h=h.parentElement}return!!E}},languages:{plain:i,plaintext:i,text:i,txt:i,extend:function(h,S){var E=s.util.clone(s.languages[h]);for(var k in S)E[k]=S[k];return E},insertBefore:function(h,S,E,k){k=k||s.languages;var x=k[h],C={};for(var _ in x)if(x.hasOwnProperty(_)){if(_==S)for(var R in E)E.hasOwnProperty(R)&&(C[R]=E[R]);E.hasOwnProperty(_)||(C[_]=x[_])}var T=k[h];return k[h]=C,s.languages.DFS(s.languages,function(L,D){D===T&&L!=h&&(this[L]=C)}),C},DFS:function h(S,E,k,x){x=x||{};var C=s.util.objId;for(var _ in S)if(S.hasOwnProperty(_)){E.call(S,_,S[_],k||_);var R=S[_],T=s.util.type(R);T==="Object"&&!x[C(R)]?(x[C(R)]=!0,h(R,E,null,x)):T==="Array"&&!x[C(R)]&&(x[C(R)]=!0,h(R,E,_,x))}}},plugins:{},highlightAll:function(h,S){s.highlightAllUnder(document,h,S)},highlightAllUnder:function(h,S,E){var k={callback:E,container:h,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};s.hooks.run("before-highlightall",k),k.elements=Array.prototype.slice.apply(k.container.querySelectorAll(k.selector)),s.hooks.run("before-all-elements-highlight",k);for(var x=0,C;C=k.elements[x++];)s.highlightElement(C,S===!0,k.callback)},highlightElement:function(h,S,E){var k=s.util.getLanguage(h),x=s.languages[k];s.util.setLanguage(h,k);var C=h.parentElement;C&&C.nodeName.toLowerCase()==="pre"&&s.util.setLanguage(C,k);var _=h.textContent,R={element:h,language:k,grammar:x,code:_};function T(D){R.highlightedCode=D,s.hooks.run("before-insert",R),R.element.innerHTML=R.highlightedCode,s.hooks.run("after-highlight",R),s.hooks.run("complete",R),E&&E.call(R.element)}if(s.hooks.run("before-sanity-check",R),C=R.element.parentElement,C&&C.nodeName.toLowerCase()==="pre"&&!C.hasAttribute("tabindex")&&C.setAttribute("tabindex","0"),!R.code){s.hooks.run("complete",R),E&&E.call(R.element);return}if(s.hooks.run("before-highlight",R),!R.grammar){T(s.util.encode(R.code));return}if(S&&r.Worker){var L=new Worker(s.filename);L.onmessage=function(D){T(D.data)},L.postMessage(JSON.stringify({language:R.language,code:R.code,immediateClose:!0}))}else T(s.highlight(R.code,R.grammar,R.language))},highlight:function(h,S,E){var k={code:h,grammar:S,language:E};if(s.hooks.run("before-tokenize",k),!k.grammar)throw new Error('The language "'+k.language+'" has no grammar.');return k.tokens=s.tokenize(k.code,k.grammar),s.hooks.run("after-tokenize",k),l.stringify(s.util.encode(k.tokens),k.language)},tokenize:function(h,S){var E=S.rest;if(E){for(var k in E)S[k]=E[k];delete S.rest}var x=new d;return g(x,x.head,h),u(h,x,S,x.head,0),b(x)},hooks:{all:{},add:function(h,S){var E=s.hooks.all;E[h]=E[h]||[],E[h].push(S)},run:function(h,S){var E=s.hooks.all[h];if(!(!E||!E.length))for(var k=0,x;x=E[k++];)x(S)}},Token:l};r.Prism=s;function l(h,S,E,k){this.type=h,this.content=S,this.alias=E,this.length=(k||"").length|0}l.stringify=function h(S,E){if(typeof S=="string")return S;if(Array.isArray(S)){var k="";return S.forEach(function(T){k+=h(T,E)}),k}var x={type:S.type,content:h(S.content,E),tag:"span",classes:["token",S.type],attributes:{},language:E},C=S.alias;C&&(Array.isArray(C)?Array.prototype.push.apply(x.classes,C):x.classes.push(C)),s.hooks.run("wrap",x);var _="";for(var R in x.attributes)_+=" "+R+'="'+(x.attributes[R]||"").replace(/"/g,""")+'"';return"<"+x.tag+' class="'+x.classes.join(" ")+'"'+_+">"+x.content+""};function c(h,S,E,k){h.lastIndex=S;var x=h.exec(E);if(x&&k&&x[1]){var C=x[1].length;x.index+=C,x[0]=x[0].slice(C)}return x}function u(h,S,E,k,x,C){for(var _ in E)if(!(!E.hasOwnProperty(_)||!E[_])){var R=E[_];R=Array.isArray(R)?R:[R];for(var T=0;T=C.reach);O+=j.value.length,j=j.next){var A=j.value;if(S.length>h.length)return;if(!(A instanceof l)){var V=1,P;if(z){if(P=c(X,O,h,H),!P||P.index>=h.length)break;var ne=P.index,N=P.index+P[0].length,K=O;for(K+=j.value.length;ne>=K;)j=j.next,K+=j.value.length;if(K-=j.value.length,O=K,j.value instanceof l)continue;for(var ae=j;ae!==S.tail&&(KC.reach&&(C.reach=re);var Ee=j.prev;pe&&(Ee=g(S,Ee,pe),O+=pe.length),m(S,Ee,V);var ke=new l(_,D?s.tokenize(Q,D):Q,M,Q);if(j=g(S,Ee,ke),he&&g(S,j,he),V>1){var We={cause:_+","+T,reach:re};u(h,S,E,j.prev,O,We),C&&We.reach>C.reach&&(C.reach=We.reach)}}}}}}function d(){var h={value:null,prev:null,next:null},S={value:null,prev:h,next:null};h.next=S,this.head=h,this.tail=S,this.length=0}function g(h,S,E){var k=S.next,x={value:E,prev:S,next:k};return S.next=x,k.prev=x,h.length++,x}function m(h,S,E){for(var k=S.next,x=0;x/,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]},n.languages.markup.tag.inside["attr-value"].inside.entity=n.languages.markup.entity,n.languages.markup.doctype.inside["internal-subset"].inside=n.languages.markup,n.hooks.add("wrap",function(r){r.type==="entity"&&(r.attributes.title=r.content.replace(/&/,"&"))}),Object.defineProperty(n.languages.markup.tag,"addInlined",{value:function(a,o){var i={};i["language-"+o]={pattern:/(^$)/i,lookbehind:!0,inside:n.languages[o]},i.cdata=/^$/i;var s={"included-cdata":{pattern://i,inside:i}};s["language-"+o]={pattern:/[\s\S]+/,inside:n.languages[o]};var l={};l[a]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,function(){return a}),"i"),lookbehind:!0,greedy:!0,inside:s},n.languages.insertBefore("markup","cdata",l)}}),Object.defineProperty(n.languages.markup.tag,"addAttribute",{value:function(r,a){n.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+r+")"+/\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:[a,"language-"+a],inside:n.languages[a]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),n.languages.html=n.languages.markup,n.languages.mathml=n.languages.markup,n.languages.svg=n.languages.markup,n.languages.xml=n.languages.extend("markup",{}),n.languages.ssml=n.languages.xml,n.languages.atom=n.languages.xml,n.languages.rss=n.languages.xml,function(r){var a=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;r.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+a.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\\((?:"+a.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+a.source+"$"),alias:"url"}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+a.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:a,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:/[(){};:,]/},r.languages.css.atrule.inside.rest=r.languages.css;var o=r.languages.markup;o&&(o.tag.addInlined("style","css"),o.tag.addAttribute("style","css"))}(n),n.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:/[{}[\];(),.:]/},n.languages.javascript=n.languages.extend("clike",{"class-name":[n.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}|\?\?=?|\?\.?|[~:]/}),n.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,n.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:n.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:n.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:n.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:n.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:n.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),n.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:n.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"}}),n.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),n.languages.markup&&(n.languages.markup.tag.addInlined("script","javascript"),n.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")),n.languages.js=n.languages.javascript,function(){if(typeof n>"u"||typeof document>"u")return;Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector);var r="Loading…",a=function(y,w){return"✖ Error "+y+" while fetching file: "+w},o="✖ Error: File does not exist or is empty",i={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"},s="data-src-status",l="loading",c="loaded",u="failed",d="pre[data-src]:not(["+s+'="'+c+'"]):not(['+s+'="'+l+'"])';function g(y,w,v){var h=new XMLHttpRequest;h.open("GET",y,!0),h.onreadystatechange=function(){h.readyState==4&&(h.status<400&&h.responseText?w(h.responseText):h.status>=400?v(a(h.status,h.statusText)):v(o))},h.send(null)}function m(y){var w=/^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(y||"");if(w){var v=Number(w[1]),h=w[2],S=w[3];return h?S?[v,Number(S)]:[v,void 0]:[v,v]}}n.hooks.add("before-highlightall",function(y){y.selector+=", "+d}),n.hooks.add("before-sanity-check",function(y){var w=y.element;if(w.matches(d)){y.code="",w.setAttribute(s,l);var v=w.appendChild(document.createElement("CODE"));v.textContent=r;var h=w.getAttribute("data-src"),S=y.language;if(S==="none"){var E=(/\.(\w+)$/.exec(h)||[,"none"])[1];S=i[E]||E}n.util.setLanguage(v,S),n.util.setLanguage(w,S);var k=n.plugins.autoloader;k&&k.loadLanguages(S),g(h,function(x){w.setAttribute(s,c);var C=m(w.getAttribute("data-range"));if(C){var _=x.split(/\r\n?|\n/g),R=C[0],T=C[1]==null?_.length:C[1];R<0&&(R+=_.length),R=Math.max(0,Math.min(R-1,_.length)),T<0&&(T+=_.length),T=Math.max(0,Math.min(T,_.length)),x=_.slice(R,T).join(` -`),w.hasAttribute("data-start")||w.setAttribute("data-start",String(R+1))}v.textContent=x,n.highlightElement(v)},function(x){w.setAttribute(s,u),v.textContent=x})}}),n.plugins.fileHighlight={highlight:function(w){for(var v=(w||document).querySelectorAll(d),h=0,S;S=v[h++];)n.highlightElement(S)}};var b=!1;n.fileHighlight=function(){b||(console.warn("Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead."),b=!0),n.plugins.fileHighlight.highlight.apply(this,arguments)}}()})(kU);var V3=kU.exports;Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/};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;var CU={},n_e=nn&&nn.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,a){r.__proto__=a}||function(r,a){for(var o in a)Object.prototype.hasOwnProperty.call(a,o)&&(r[o]=a[o])},e(t,n)};return function(t,n){if(typeof n!="function"&&n!==null)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),fn=nn&&nn.__assign||function(){return fn=Object.assign||function(e){for(var t,n=1,r=arguments.length;n-1){n._history.stack=c.slice(0,u+1);var d=n._history.stack.length;if(d>Y3){var g=d-Y3;n._history.stack=c.slice(g,d),n._history.offset=Math.max(n._history.offset-g,0)}}var m=Date.now();if(a){var b=n._history.stack[n._history.offset];if(b&&m-b.timestamp=y&&H<=w&&D.startsWith(m)?D.substring(m.length):D}).join(` -`);if(u!==v){var h=b[y];n._applyEdits({value:v,selectionStart:h!=null&&h.startsWith(m)?d-m.length:d,selectionEnd:g-(u.length-v.length)})}}else if(d!==g){var b=n._getLines(u,d),S=b.length-1,E=n._getLines(u,g).length-1,h=b[S];n._applyEdits({value:u.split(` -`).map(function(z,M){return M>=S&&M<=E?m+z:z}).join(` -`),selectionStart:h&&/\S/.test(h)?d+m.length:d,selectionEnd:g+m.length*(E-S+1)})}else{var k=d+m.length;n._applyEdits({value:u.substring(0,d)+m+u.substring(g),selectionStart:k,selectionEnd:k})}else if(r.keyCode===c_e){var x=d!==g,C=u.substring(0,d);if(C.endsWith(m)&&!x){r.preventDefault();var k=d-m.length;n._applyEdits({value:u.substring(0,d-m.length)+u.substring(g),selectionStart:k,selectionEnd:k})}}else if(r.keyCode===s_e){if(d===g){var _=n._getLines(u,d).pop(),R=_==null?void 0:_.match(/^\s+/);if(R!=null&&R[0]){r.preventDefault();var T=` -`+R[0],k=d+T.length;n._applyEdits({value:u.substring(0,d)+T+u.substring(g),selectionStart:k,selectionEnd:k})}}}else if(r.keyCode===q3||r.keyCode===G3||r.keyCode===W3||r.keyCode===K3){var L=void 0;r.keyCode===q3&&r.shiftKey?L=["(",")"]:r.keyCode===G3?r.shiftKey?L=["{","}"]:L=["[","]"]:r.keyCode===W3?r.shiftKey?L=['"','"']:L=["'","'"]:r.keyCode===K3&&!r.shiftKey&&(L=["`","`"]),d!==g&&L&&(r.preventDefault(),n._applyEdits({value:u.substring(0,d)+L[0]+u.substring(d,g)+L[1]+u.substring(g),selectionStart:d,selectionEnd:g+2}))}else(_x?r.metaKey&&r.keyCode===Ep:r.ctrlKey&&r.keyCode===Ep)&&!r.shiftKey&&!r.altKey?(r.preventDefault(),n._undoEdit()):(_x?r.metaKey&&r.keyCode===Ep&&r.shiftKey:g_e?r.ctrlKey&&r.keyCode===u_e:r.ctrlKey&&r.keyCode===Ep&&r.shiftKey)&&!r.altKey?(r.preventDefault(),n._redoEdit()):r.keyCode===d_e&&r.ctrlKey&&(!_x||r.shiftKey)&&(r.preventDefault(),n.setState(function(D){return{capture:!D.capture}}))}},n._handleChange=function(r){var a=r.currentTarget,o=a.value,i=a.selectionStart,s=a.selectionEnd;n._recordChange({value:o,selectionStart:i,selectionEnd:s},!0),n.props.onValueChange(o)},n._history={stack:[],offset:-1},n._input=null,n}return t.prototype.componentDidMount=function(){this._recordCurrentState()},Object.defineProperty(t.prototype,"session",{get:function(){return{history:this._history}},set:function(n){this._history=n.history},enumerable:!1,configurable:!0}),t.prototype.render=function(){var n=this,r=this.props,a=r.value,o=r.style,i=r.padding,s=r.highlight,l=r.textareaId,c=r.textareaClassName,u=r.autoFocus,d=r.disabled,g=r.form,m=r.maxLength,b=r.minLength,y=r.name,w=r.placeholder,v=r.readOnly,h=r.required,S=r.onClick,E=r.onFocus,k=r.onBlur,x=r.onKeyUp;r.onKeyDown,r.onValueChange,r.tabSize,r.insertSpaces,r.ignoreTabKey;var C=r.preClassName,_=i_e(r,["value","style","padding","highlight","textareaId","textareaClassName","autoFocus","disabled","form","maxLength","minLength","name","placeholder","readOnly","required","onClick","onFocus","onBlur","onKeyUp","onKeyDown","onValueChange","tabSize","insertSpaces","ignoreTabKey","preClassName"]),R={paddingTop:typeof i=="object"?i.top:i,paddingRight:typeof i=="object"?i.right:i,paddingBottom:typeof i=="object"?i.bottom:i,paddingLeft:typeof i=="object"?i.left:i},T=s(a);return vu.createElement("div",fn({},_,{style:fn(fn({},Su.container),o)}),vu.createElement("pre",fn({className:C,"aria-hidden":"true",style:fn(fn(fn({},Su.editor),Su.highlight),R)},typeof T=="string"?{dangerouslySetInnerHTML:{__html:T+"
"}}:{children:T})),vu.createElement("textarea",{ref:function(L){return n._input=L},style:fn(fn(fn({},Su.editor),Su.textarea),R),className:Jp+(c?" ".concat(c):""),id:l,value:a,onChange:this._handleChange,onKeyDown:this._handleKeyDown,onClick:S,onKeyUp:x,onFocus:E,onBlur:k,disabled:d,form:g,maxLength:m,minLength:b,name:y,placeholder:w,readOnly:v,required:h,autoFocus:u,autoCapitalize:"off",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"data-gramm":!1}),vu.createElement("style",{dangerouslySetInnerHTML:{__html:m_e}}))},t.defaultProps={tabSize:2,insertSpaces:!0,ignoreTabKey:!1,padding:0},t}(vu.Component),b_e=CU.default=h_e,Su={container:{position:"relative",textAlign:"left",boxSizing:"border-box",padding:0,overflow:"hidden"},textarea:{position:"absolute",top:0,left:0,height:"100%",width:"100%",resize:"none",color:"inherit",overflow:"hidden",MozOsxFontSmoothing:"grayscale",WebkitFontSmoothing:"antialiased",WebkitTextFillColor:"transparent"},highlight:{position:"relative",pointerEvents:"none"},editor:{margin:0,border:0,background:"none",boxSizing:"inherit",display:"inherit",fontFamily:"inherit",fontSize:"inherit",fontStyle:"inherit",fontVariantLigatures:"inherit",fontWeight:"inherit",letterSpacing:"inherit",lineHeight:"inherit",tabSize:"inherit",textIndent:"inherit",textRendering:"inherit",textTransform:"inherit",whiteSpace:"pre-wrap",wordBreak:"keep-all",overflowWrap:"break-word"}};const _U=({ref:e,value:t,onChange:n})=>f.jsx(b_e,{ref:e,className:"min-h-96 rounded-md border border-input bg-gray-800 text-gray-100 has-[:disabled]:opacity-50",textareaClassName:"focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50",value:t,onValueChange:n,highlight:r=>V3.highlight(r,V3.languages.py,"py"),padding:10,style:{fontFamily:'"Fira code", "Fira Mono", monospace',fontSize:12}}),y_e=Xe({name:Ce().min(1,{message:"Name must be at least 1 character."}).max(30,{message:"Name must not be longer than 30 characters."}),code:Ce()}),v_e={name:"",code:`import random - -def roll_d20(self) -> str: - """ - Simulate the roll of a 20-sided die (d20). - - This function generates a random integer between 1 and 20, inclusive, - which represents the outcome of a single roll of a d20. - - Returns: - int: A random integer between 1 and 20, representing the die roll. - - Example: - >>> roll_d20() - 15 # This is an example output and may vary each time the function is called. - """ - dice_role_outcome = random.randint(1, 20) - output_string = f"You rolled a {dice_role_outcome}" - return output_string`};function S_e({closeDialog:e}){const t=lX(),n=Bt(),{toast:r}=An(),a=bn({resolver:yn(y_e),defaultValues:v_e,mode:"onChange"}),o=i=>{t.mutate({requestBody:{name:i.name,tags:[],source_code:i.code}},{onSuccess:()=>{n.invalidateQueries({queryKey:g_()}),e(),r({title:"Tool created successfully!",duration:5e3})},onError:s=>{r({title:"Error creating tool",duration:5e3})}})};return f.jsx(vn,{...a,children:f.jsxs("form",{onSubmit:a.handleSubmit(o,i=>console.log(i)),className:"space-y-8",children:[f.jsx(ut,{control:a.control,name:"name",render:({field:i})=>f.jsxs(ot,{children:[f.jsx(yt,{children:"Name"}),f.jsx(pt,{children:f.jsx(_n,{...i})}),f.jsx(Mt,{children:"This is your tools display name. It can be a real name or a pseudonym."}),f.jsx(lt,{})]})}),f.jsx(ut,{control:a.control,name:"code",render:({field:i})=>f.jsxs(ot,{children:[f.jsx(yt,{children:"Source Code"}),f.jsx(pt,{children:f.jsx(_U,{...i})}),f.jsx(Mt,{children:"Write the source code for your tool. Custom tools must be valid Python code, and all arguments must be type annotated, and you must include a docstring."}),f.jsx(lt,{})]})}),f.jsxs("div",{className:"flex items-center",children:[f.jsx(ue,{type:"submit",children:"Create Tool"}),t.isPending&&f.jsxs("div",{className:Tt("ml-4 flex items-center animate-in slide-in-from-bottom-2"),children:[f.jsx(un,{className:"mr-2 h-4 w-4 animate-spin "}),f.jsx("span",{children:"Creating Tool..."})]})]})]})})}const w_e=({open:e,onOpenChange:t})=>f.jsx(Kt,{open:e,onOpenChange:t,children:f.jsxs(Ht,{className:"max-h-[95svh] w-full overflow-y-auto sm:max-w-[800px]",children:[f.jsxs(Pt,{children:[f.jsx($t,{children:"Create Tool"}),f.jsx(dn,{children:"Add a new tool here. Click create when you're done."})]}),f.jsx(S_e,{closeDialog:()=>t(!1)})]})}),E_e=Xe({source_code:Ce()});function x_e({tool:e,closeDialog:t}){const n=fX(),r=Bt(),{toast:a}=An(),o={...e},i=bn({resolver:yn(E_e),defaultValues:o,mode:"onChange"}),s=l=>{n.mutate({toolId:e.id||"",requestBody:{id:e.id||"",source_code:l.source_code}},{onSuccess:()=>{t(),r.invalidateQueries({queryKey:g_()}),a({title:"Tool updated successfully!",duration:5e3})},onError:c=>{a({title:"Error updating tool",duration:5e3})}})};return f.jsx(vn,{...i,children:f.jsxs("form",{onSubmit:i.handleSubmit(s,l=>console.log(l)),className:"space-y-8",children:[f.jsx(ut,{control:i.control,name:"source_code",render:({field:l})=>f.jsxs(ot,{children:[f.jsx(yt,{children:"Source Code"}),f.jsx(pt,{children:f.jsx(_U,{...l})}),f.jsx(lt,{})]})}),f.jsxs("div",{className:"flex items-center",children:[f.jsx(ue,{type:"submit",children:"Update Tool"}),n.isPending&&f.jsxs("div",{className:Tt("ml-4 flex items-center animate-in slide-in-from-bottom-2"),children:[f.jsx(un,{className:"mr-2 h-4 w-4 animate-spin "}),f.jsx("span",{children:"Updating Tool..."})]})]})]})})}const k_e=({tool:e,open:t,onOpenChange:n})=>f.jsx(Kt,{open:t,onOpenChange:n,children:f.jsxs(Ht,{className:"max-h-[95svh] w-full overflow-y-auto sm:max-w-[800px]",children:[f.jsxs(Pt,{children:[f.jsxs($t,{children:["Edit ",(e==null?void 0:e.name)??"Tool"]}),f.jsx(dn,{children:"Edit existing tool here. Click create when you're done."})]}),e?f.jsx(x_e,{tool:e,closeDialog:()=>n(!1)}):f.jsx("p",{children:"No Tool...."})]})}),C_e=({value:e,onValueChange:t})=>f.jsx("form",{children:f.jsxs("div",{className:"relative",children:[f.jsx(Ms,{className:"pointer-events-none absolute left-[12px] top-3 h-4 w-4 text-muted-foreground"}),f.jsx(_n,{placeholder:"Search tool",value:e,onChange:n=>t(n.target.value),className:"w-52 pl-8 lg:w-80"})]})}),__e=(e,t)=>[{accessorKey:"edit",header:"",size:20,cell:({row:n})=>t?f.jsx(Pi,{className:"h-6 w-6"}):f.jsx(ue,{onClick:()=>e(n.original),className:"!h-6 !w-6 !p-1",variant:"ghost",children:f.jsx(Fm,{className:"h-3.5 w-3.5"})})},{accessorKey:"name",header:"Name",cell:({row:n})=>f.jsx(Dn,{isLoading:t,children:n.getValue("name")})},{accessorFn:n=>{var r;return(r=n.json_schema)==null?void 0:r.description},accessorKey:"docstring",header:"Docstring",cell:({row:n})=>f.jsx(Dn,{isLoading:t,children:f.jsx(ZA,{text:n.getValue("docstring")})})},{accessorFn:n=>{var r,a;return(a=(r=n.tags)==null?void 0:r[0])==null?void 0:a.replace("memgpt-","")},accessorKey:"library",header:"Library",cell:({row:n})=>{const r=n.getValue("library");return f.jsx(Dn,{isLoading:t,children:r==="base"?f.jsx(b9,{className:"-ml-2",variant:"secondary",children:r}):f.jsx("span",{className:"text-xs",children:r})})}},{accessorKey:"last_edited",header:"Last Edited",cell:({row:n})=>f.jsx(Dn,{isLoading:t,children:n.getValue("last_edited")??"Never"})}],A_e=({onToolEdit:e,nameFilter:t,className:n})=>{const{data:r,isError:a,isLoading:o}=Xm(),i=(r??[]).filter(s=>s.name.includes(t));return f.jsx("div",{className:n,children:f.jsx(uf,{columns:__e(e,o),isLoading:o,error:a?"Error loading tools":void 0,data:i,renderPagination:s=>f.jsx(df,{className:"mt-4",table:s})})})},T_e=()=>{const[e,t]=p.useState(""),[n]=Oh(e,300),[r,a]=p.useState(!1),[o,i]=p.useState(null),[s,l]=p.useState(!1),c=u=>{i(u),l(!0)};return f.jsxs(Fs,{children:[f.jsxs("div",{className:"flex items-center justify-between bg-background/95 px-4 pb-3 pt-2.5 backdrop-blur supports-[backdrop-filter]:bg-background/60",children:[f.jsx(C_e,{value:e,onValueChange:t}),f.jsxs(ue,{onClick:()=>a(!0),size:"sm",children:[f.jsx(ya,{className:"mr-2 h-4 w-4"}),"Create Tool"]})]}),f.jsx(A_e,{className:"mx-4",onToolEdit:c,nameFilter:n}),f.jsx(w_e,{open:r,onOpenChange:u=>a(u)}),f.jsx(k_e,{tool:o,open:s,onOpenChange:u=>l(u)})]})},R_e={path:"tools",element:f.jsx(T_e,{})},N_e=Xe({name:Ce().min(1,{message:"Name must be at least 1 character."}).max(30,{message:"Name must not be longer than 30 characters."}),text:Ce().max(2e3).min(0)}),I_e={name:"",text:""};function O_e({closeDialog:e}){const t=Bt(),n=_6(),{toast:r}=An(),a=2e3,o=N_e.extend({text:Ce().max(a).min(0)}),i=bn({resolver:yn(o),defaultValues:I_e,mode:"onChange"}),s=l=>{n.mutate({requestBody:{value:l.text||"",label:fr,name:l.name||""}},{onSuccess:()=>{e(),t.invalidateQueries({queryKey:lf({label:fr})}),r({title:"Human created successfully!",duration:5e3})},onError:c=>{let u="Error creating human";const d=`${u}: Unspecified error.`;try{r({title:"Error updating human",duration:5e3})}catch{u=d}r({title:u,duration:5e3})}})};return f.jsx(vn,{...i,children:f.jsxs("form",{onSubmit:i.handleSubmit(s,l=>console.log(l)),className:"space-y-8",children:[f.jsx(ut,{control:i.control,name:"name",render:({field:l})=>f.jsxs(ot,{children:[f.jsx(yt,{children:"Name"}),f.jsx(pt,{children:f.jsx(_n,{...l})}),f.jsx(Mt,{children:"This is your humans display name. It can be a real name or a pseudonym."}),f.jsx(lt,{})]})}),f.jsx(ut,{control:i.control,name:"text",render:({field:l})=>{var c;return f.jsxs(ot,{children:[f.jsx(pt,{children:f.jsx(Ai,{placeholder:"Describe your human here",...l,charCount:(c=l.value)==null?void 0:c.length,limit:a})}),f.jsxs(Mt,{children:["You can use no more than ",a," characters."]}),f.jsx(lt,{})]})}}),f.jsxs("div",{className:"flex items-center",children:[f.jsx(ue,{type:"submit",children:"Create Persona"}),n.isPending&&f.jsxs("div",{className:Tt("ml-4 flex items-center animate-in slide-in-from-bottom-2"),children:[f.jsx(un,{className:"mr-2 h-4 w-4 animate-spin "}),f.jsx("span",{children:"Creating Persona..."})]})]})]})})}const D_e=({open:e,onOpenChange:t})=>f.jsx(Kt,{open:e,onOpenChange:t,children:f.jsxs(Ht,{className:"max-h-[95svh] w-full sm:max-w-[800px]",children:[f.jsxs(Pt,{children:[f.jsx($t,{children:"Create Human"}),f.jsx(dn,{children:"Add a new human here. Click create when you're done."})]}),f.jsx(O_e,{closeDialog:()=>t(!1)})]})}),L_e=Xe({text:Ce().max(2e3).min(0)});function M_e({human:e,closeDialog:t}){const n=v_(),r=Bt(),{toast:a}=An(),o=2e3,i=L_e.extend({text:Ce().max(o).min(0)}),s={text:e.value||""},l=bn({resolver:yn(i),defaultValues:s,mode:"onChange"}),c=u=>{n.mutate({blockId:e.id||"",requestBody:{id:e.id||"",value:u.text||""}},{onSuccess:()=>{t(),r.invalidateQueries({queryKey:lf({label:fr})}),a({title:"Human updated successfully!",duration:5e3})},onError:d=>{a({title:"Error updating human",duration:5e3})}})};return f.jsx(vn,{...l,children:f.jsxs("form",{onSubmit:l.handleSubmit(c,u=>console.log(u)),className:"space-y-8",children:[f.jsx(ut,{control:l.control,name:"text",render:({field:u})=>{var d;return f.jsxs(ot,{children:[f.jsx(pt,{children:f.jsx(Ai,{placeholder:"Describe your human here",...u,charCount:(d=u.value)==null?void 0:d.length,limit:o})}),f.jsxs(Mt,{children:["You can use no more than ",o," characters."]}),f.jsx(lt,{})]})}}),f.jsxs("div",{className:"flex items-center",children:[f.jsx(ue,{type:"submit",children:"Update Persona"}),n.isPending&&f.jsxs("div",{className:Tt("ml-4 flex items-center animate-in slide-in-from-bottom-2"),children:[f.jsx(un,{className:"mr-2 h-4 w-4 animate-spin "}),f.jsx("span",{children:"Updating Human..."})]})]})]})})}const P_e=({human:e,open:t,onOpenChange:n})=>f.jsx(Kt,{open:t,onOpenChange:n,children:f.jsxs(Ht,{className:"max-h-[95svh] w-full sm:max-w-[800px]",children:[f.jsxs(Pt,{children:[f.jsxs($t,{children:["Edit ",(e==null?void 0:e.name)??"Human"]}),f.jsx(dn,{children:"Edit existing human here. Click create when you're done."})]}),e?f.jsx(M_e,{human:e,closeDialog:()=>n(!1)}):f.jsx("p",{children:"No Human...."})]})}),$_e=({value:e,onValueChange:t})=>f.jsx("form",{children:f.jsxs("div",{className:"relative",children:[f.jsx(Ms,{className:"pointer-events-none absolute left-[12px] top-3 h-4 w-4 text-muted-foreground"}),f.jsx(_n,{placeholder:"Search user",value:e,onChange:n=>t(n.target.value),className:"w-52 pl-8 lg:w-80"})]})}),F_e=(e,t)=>[{accessorKey:"edit",header:"",size:20,cell:({row:n})=>t?f.jsx(Pi,{className:"h-6 w-6"}):f.jsx(ue,{onClick:()=>e(n.original),className:"!h-6 !w-6 !p-1",variant:"ghost",children:f.jsx(Fm,{className:"h-3.5 w-3.5"})})},{accessorKey:"name",header:"Name",cell:({row:n})=>f.jsx(Dn,{isLoading:t,children:n.getValue("name")})},{accessorKey:"value",header:"Text",cell:({row:n})=>f.jsx(Dn,{isLoading:t,children:f.jsx(ZA,{text:n.getValue("value")})})}],j_e=({onHumanEdit:e,nameFilter:t,className:n})=>{const{data:r,isError:a,isLoading:o}=Ng({label:fr}),i=(r??[]).filter(s=>{var l;return(l=s.name)==null?void 0:l.includes(t)});return f.jsx("div",{className:n,children:f.jsx(uf,{isLoading:o,error:a?"Error loading humans":void 0,columns:F_e(e,o),data:i,renderPagination:s=>f.jsx(df,{className:"mt-4",table:s})})})},z_e=()=>{const[e,t]=p.useState(""),[n]=Oh(e,300),[r,a]=p.useState(!1),[o,i]=p.useState(null),[s,l]=p.useState(!1),c=u=>{i(u),l(!0)};return f.jsxs(Fs,{children:[f.jsxs("div",{className:"flex items-center justify-between bg-background/95 px-4 pb-3 pt-2.5 backdrop-blur supports-[backdrop-filter]:bg-background/60",children:[f.jsx($_e,{value:e,onValueChange:t}),f.jsxs(ue,{onClick:()=>a(!0),size:"sm",children:[f.jsx(ya,{className:"mr-2 h-4 w-4"}),"Create Human"]})]}),f.jsx(j_e,{onHumanEdit:c,nameFilter:n,className:"mx-4"}),f.jsx(D_e,{open:r,onOpenChange:u=>a(u)}),f.jsx(P_e,{human:o,open:s,onOpenChange:u=>l(u)})]})},U_e={path:"human-templates",element:f.jsx(z_e,{})},{createElement:Ac,createContext:B_e,createRef:vTe,forwardRef:AU,useCallback:hr,useContext:TU,useEffect:ys,useImperativeHandle:RU,useLayoutEffect:H_e,useMemo:V_e,useRef:ar,useState:Zu}=Kd,Z3=Kd["useId".toString()],q_e=H_e,Lh=B_e(null);Lh.displayName="PanelGroupContext";const vs=q_e,G_e=typeof Z3=="function"?Z3:()=>null;let W_e=0;function XA(e=null){const t=G_e(),n=ar(e||t||null);return n.current===null&&(n.current=""+W_e++),e??n.current}function NU({children:e,className:t="",collapsedSize:n,collapsible:r,defaultSize:a,forwardedRef:o,id:i,maxSize:s,minSize:l,onCollapse:c,onExpand:u,onResize:d,order:g,style:m,tagName:b="div",...y}){const w=TU(Lh);if(w===null)throw Error("Panel components must be rendered within a PanelGroup container");const{collapsePanel:v,expandPanel:h,getPanelSize:S,getPanelStyle:E,groupId:k,isPanelCollapsed:x,reevaluatePanelConstraints:C,registerPanel:_,resizePanel:R,unregisterPanel:T}=w,L=XA(i),D=ar({callbacks:{onCollapse:c,onExpand:u,onResize:d},constraints:{collapsedSize:n,collapsible:r,defaultSize:a,maxSize:s,minSize:l},id:L,idIsFromProps:i!==void 0,order:g});ar({didLogMissingDefaultSizeWarning:!1}),vs(()=>{const{callbacks:z,constraints:M}=D.current,U={...M};D.current.id=L,D.current.idIsFromProps=i!==void 0,D.current.order=g,z.onCollapse=c,z.onExpand=u,z.onResize=d,M.collapsedSize=n,M.collapsible=r,M.defaultSize=a,M.maxSize=s,M.minSize=l,(U.collapsedSize!==M.collapsedSize||U.collapsible!==M.collapsible||U.maxSize!==M.maxSize||U.minSize!==M.minSize)&&C(D.current,U)}),vs(()=>{const z=D.current;return _(z),()=>{T(z)}},[g,L,_,T]),RU(o,()=>({collapse:()=>{v(D.current)},expand:()=>{h(D.current)},getId(){return L},getSize(){return S(D.current)},isCollapsed(){return x(D.current)},isExpanded(){return!x(D.current)},resize:z=>{R(D.current,z)}}),[v,h,S,x,L,R]);const H=E(D.current,a);return Ac(b,{...y,children:e,className:t,id:i,style:{...H,...m},"data-panel":"","data-panel-collapsible":r||void 0,"data-panel-group-id":k,"data-panel-id":L,"data-panel-size":parseFloat(""+H.flexGrow).toFixed(1)})}const IU=AU((e,t)=>Ac(NU,{...e,forwardedRef:t}));NU.displayName="Panel";IU.displayName="forwardRef(Panel)";let Wk=null,is=null;function K_e(e,t){if(t){const n=(t&PU)!==0,r=(t&$U)!==0,a=(t&FU)!==0,o=(t&jU)!==0;if(n)return a?"se-resize":o?"ne-resize":"e-resize";if(r)return a?"sw-resize":o?"nw-resize":"w-resize";if(a)return"s-resize";if(o)return"n-resize"}switch(e){case"horizontal":return"ew-resize";case"intersection":return"move";case"vertical":return"ns-resize"}}function Y_e(){is!==null&&(document.head.removeChild(is),Wk=null,is=null)}function Ax(e,t){const n=K_e(e,t);Wk!==n&&(Wk=n,is===null&&(is=document.createElement("style"),document.head.appendChild(is)),is.innerHTML=`*{cursor: ${n}!important;}`)}function OU(e){return e.type==="keydown"}function DU(e){return e.type.startsWith("mouse")}function LU(e){return e.type.startsWith("touch")}function Mh(e){if(DU(e))return{x:e.pageX,y:e.pageY};if(LU(e)){const t=e.touches[0];if(t&&t.pageX&&t.pageY)return{x:t.pageX,y:t.pageY}}return{x:1/0,y:1/0}}function Z_e(){if(typeof matchMedia=="function")return matchMedia("(pointer:coarse)").matches?"coarse":"fine"}function X_e(e,t,n){return n?e.xt.x&&e.yt.y:e.x<=t.x+t.width&&e.x+e.width>=t.x&&e.y<=t.y+t.height&&e.y+e.height>=t.y}function Q_e(e,t){if(e===t)throw new Error("Cannot compare node with itself");const n={a:J3(e),b:J3(t)};let r;for(;n.a.at(-1)===n.b.at(-1);)e=n.a.pop(),t=n.b.pop(),r=e;Ye(r);const a={a:Q3(X3(n.a)),b:Q3(X3(n.b))};if(a.a===a.b){const o=r.childNodes,i={a:n.a.at(-1),b:n.b.at(-1)};let s=o.length;for(;s--;){const l=o[s];if(l===i.a)return 1;if(l===i.b)return-1}}return Math.sign(a.a-a.b)}const J_e=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function eAe(e){const t=getComputedStyle(MU(e)).display;return t==="flex"||t==="inline-flex"}function tAe(e){const t=getComputedStyle(e);return!!(t.position==="fixed"||t.zIndex!=="auto"&&(t.position!=="static"||eAe(e))||+t.opacity<1||"transform"in t&&t.transform!=="none"||"webkitTransform"in t&&t.webkitTransform!=="none"||"mixBlendMode"in t&&t.mixBlendMode!=="normal"||"filter"in t&&t.filter!=="none"||"webkitFilter"in t&&t.webkitFilter!=="none"||"isolation"in t&&t.isolation==="isolate"||J_e.test(t.willChange)||t.webkitOverflowScrolling==="touch")}function X3(e){let t=e.length;for(;t--;){const n=e[t];if(Ye(n),tAe(n))return n}return null}function Q3(e){return e&&Number(getComputedStyle(e).zIndex)||0}function J3(e){const t=[];for(;e;)t.push(e),e=MU(e);return t}function MU(e){var t;return((t=e.parentNode)===null||t===void 0?void 0:t.host)||e.parentNode}const PU=1,$U=2,FU=4,jU=8,nAe=Z_e()==="coarse";let Ri=[],Ph=!1,Yo=new Map,$h=new Map;const Id=new Set;function rAe(e,t,n,r,a){var o;const{ownerDocument:i}=t,s={direction:n,element:t,hitAreaMargins:r,setResizeHandlerState:a},l=(o=Yo.get(i))!==null&&o!==void 0?o:0;return Yo.set(i,l+1),Id.add(s),um(),function(){var u;$h.delete(e),Id.delete(s);const d=(u=Yo.get(i))!==null&&u!==void 0?u:1;Yo.set(i,d-1),um(),d===1&&Yo.delete(i)}}function xp(e){const{target:t}=e,{x:n,y:r}=Mh(e);Ph=!0,QA({target:t,x:n,y:r}),um(),Ri.length>0&&(JA("down",e),e.preventDefault())}function jo(e){const{x:t,y:n}=Mh(e);if(!Ph){const{target:r}=e;QA({target:r,x:t,y:n})}JA("move",e),zU(),Ri.length>0&&e.preventDefault()}function zo(e){const{target:t}=e,{x:n,y:r}=Mh(e);$h.clear(),Ph=!1,Ri.length>0&&e.preventDefault(),JA("up",e),QA({target:t,x:n,y:r}),zU(),um()}function QA({target:e,x:t,y:n}){Ri.splice(0);let r=null;e instanceof HTMLElement&&(r=e),Id.forEach(a=>{const{element:o,hitAreaMargins:i}=a,s=o.getBoundingClientRect(),{bottom:l,left:c,right:u,top:d}=s,g=nAe?i.coarse:i.fine;if(t>=c-g&&t<=u+g&&n>=d-g&&n<=l+g){if(r!==null&&o!==r&&!o.contains(r)&&!r.contains(o)&&Q_e(r,o)>0){let b=r,y=!1;for(;b&&!b.contains(o);){if(X_e(b.getBoundingClientRect(),s,!0)){y=!0;break}b=b.parentElement}if(y)return}Ri.push(a)}})}function Tx(e,t){$h.set(e,t)}function zU(){let e=!1,t=!1;Ri.forEach(r=>{const{direction:a}=r;a==="horizontal"?e=!0:t=!0});let n=0;$h.forEach(r=>{n|=r}),e&&t?Ax("intersection",n):e?Ax("horizontal",n):t?Ax("vertical",n):Y_e()}function um(){Yo.forEach((e,t)=>{const{body:n}=t;n.removeEventListener("contextmenu",zo),n.removeEventListener("mousedown",xp),n.removeEventListener("mouseleave",jo),n.removeEventListener("mousemove",jo),n.removeEventListener("touchmove",jo),n.removeEventListener("touchstart",xp)}),window.removeEventListener("mouseup",zo),window.removeEventListener("touchcancel",zo),window.removeEventListener("touchend",zo),Id.size>0&&(Ph?(Ri.length>0&&Yo.forEach((e,t)=>{const{body:n}=t;e>0&&(n.addEventListener("contextmenu",zo),n.addEventListener("mouseleave",jo),n.addEventListener("mousemove",jo),n.addEventListener("touchmove",jo,{passive:!1}))}),window.addEventListener("mouseup",zo),window.addEventListener("touchcancel",zo),window.addEventListener("touchend",zo)):Yo.forEach((e,t)=>{const{body:n}=t;e>0&&(n.addEventListener("mousedown",xp),n.addEventListener("mousemove",jo),n.addEventListener("touchmove",jo,{passive:!1}),n.addEventListener("touchstart",xp))}))}function JA(e,t){Id.forEach(n=>{const{setResizeHandlerState:r}=n,a=Ri.includes(n);r(e,a,t)})}function Ye(e,t="Assertion failed!"){if(!e)throw console.error(t),Error(t)}const UU=10;function Od(e,t,n=UU){e=parseFloat(e.toFixed(n)),t=parseFloat(t.toFixed(n));const r=e-t;return r===0?0:r>0?1:-1}function vr(e,t,n){return Od(e,t,n)===0}function Dl({panelConstraints:e,panelIndex:t,size:n}){const r=e[t];Ye(r!=null);let{collapsedSize:a=0,collapsible:o,maxSize:i=100,minSize:s=0}=r;if(Od(n,s)<0)if(o){const l=(a+s)/2;Od(n,l)<0?n=a:n=s}else n=s;return n=Math.min(i,n),n=parseFloat(n.toFixed(UU)),n}function Ru({delta:e,layout:t,panelConstraints:n,pivotIndices:r,trigger:a}){if(vr(e,0))return t;const o=[...t],[i,s]=r;Ye(i!=null),Ye(s!=null);let l=0;if(a==="keyboard"){{const u=e<0?s:i,d=n[u];if(Ye(d),d.collapsible){const g=t[u];Ye(g!=null);const m=n[u];Ye(m);const{collapsedSize:b=0,minSize:y=0}=m;if(vr(g,b)){const w=y-g;Od(w,Math.abs(e))>0&&(e=e<0?0-w:w)}}}{const u=e<0?i:s,d=n[u];Ye(d);const{collapsible:g}=d;if(g){const m=t[u];Ye(m!=null);const b=n[u];Ye(b);const{collapsedSize:y=0,minSize:w=0}=b;if(vr(m,w)){const v=m-y;Od(v,Math.abs(e))>0&&(e=e<0?0-v:v)}}}}{const u=e<0?1:-1;let d=e<0?s:i,g=0;for(;;){const b=t[d];Ye(b!=null);const w=Dl({panelConstraints:n,panelIndex:d,size:100})-b;if(g+=w,d+=u,d<0||d>=n.length)break}const m=Math.min(Math.abs(e),Math.abs(g));e=e<0?0-m:m}{let d=e<0?i:s;for(;d>=0&&d=0))break;e<0?d--:d++}}if(vr(l,0))return t;{const u=e<0?s:i,d=t[u];Ye(d!=null);const g=d+l,m=Dl({panelConstraints:n,panelIndex:u,size:g});if(o[u]=m,!vr(m,g)){let b=g-m,w=e<0?s:i;for(;w>=0&&w0?w--:w++}}}const c=o.reduce((u,d)=>d+u,0);return vr(c,100)?o:t}function aAe({layout:e,panelsArray:t,pivotIndices:n}){let r=0,a=100,o=0,i=0;const s=n[0];Ye(s!=null),t.forEach((d,g)=>{const{constraints:m}=d,{maxSize:b=100,minSize:y=0}=m;g===s?(r=y,a=b):(o+=y,i+=b)});const l=Math.min(a,100-o),c=Math.max(r,100-i),u=e[s];return{valueMax:l,valueMin:c,valueNow:u}}function Dd(e,t=document){return Array.from(t.querySelectorAll(`[data-panel-resize-handle-id][data-panel-group-id="${e}"]`))}function BU(e,t,n=document){const a=Dd(e,n).findIndex(o=>o.getAttribute("data-panel-resize-handle-id")===t);return a??null}function HU(e,t,n){const r=BU(e,t,n);return r!=null?[r,r+1]:[-1,-1]}function VU(e,t=document){var n;if(t instanceof HTMLElement&&(t==null||(n=t.dataset)===null||n===void 0?void 0:n.panelGroupId)==e)return t;const r=t.querySelector(`[data-panel-group][data-panel-group-id="${e}"]`);return r||null}function Fh(e,t=document){const n=t.querySelector(`[data-panel-resize-handle-id="${e}"]`);return n||null}function oAe(e,t,n,r=document){var a,o,i,s;const l=Fh(t,r),c=Dd(e,r),u=l?c.indexOf(l):-1,d=(a=(o=n[u])===null||o===void 0?void 0:o.id)!==null&&a!==void 0?a:null,g=(i=(s=n[u+1])===null||s===void 0?void 0:s.id)!==null&&i!==void 0?i:null;return[d,g]}function iAe({committedValuesRef:e,eagerValuesRef:t,groupId:n,layout:r,panelDataArray:a,panelGroupElement:o,setLayout:i}){ar({didWarnAboutMissingResizeHandle:!1}),vs(()=>{if(!o)return;const s=Dd(n,o);for(let l=0;l{s.forEach((l,c)=>{l.removeAttribute("aria-controls"),l.removeAttribute("aria-valuemax"),l.removeAttribute("aria-valuemin"),l.removeAttribute("aria-valuenow")})}},[n,r,a,o]),ys(()=>{if(!o)return;const s=t.current;Ye(s);const{panelDataArray:l}=s,c=VU(n,o);Ye(c!=null,`No group found for id "${n}"`);const u=Dd(n,o);Ye(u);const d=u.map(g=>{const m=g.getAttribute("data-panel-resize-handle-id");Ye(m);const[b,y]=oAe(n,m,l,o);if(b==null||y==null)return()=>{};const w=v=>{if(!v.defaultPrevented)switch(v.key){case"Enter":{v.preventDefault();const h=l.findIndex(S=>S.id===b);if(h>=0){const S=l[h];Ye(S);const E=r[h],{collapsedSize:k=0,collapsible:x,minSize:C=0}=S.constraints;if(E!=null&&x){const _=Ru({delta:vr(E,k)?C-k:k-E,layout:r,panelConstraints:l.map(R=>R.constraints),pivotIndices:HU(n,m,o),trigger:"keyboard"});r!==_&&i(_)}}break}}};return g.addEventListener("keydown",w),()=>{g.removeEventListener("keydown",w)}});return()=>{d.forEach(g=>g())}},[o,e,t,n,r,a,i])}function eP(e,t){if(e.length!==t.length)return!1;for(let n=0;no.constraints);let r=0,a=100;for(let o=0;o{const o=e[a];Ye(o);const{callbacks:i,constraints:s,id:l}=o,{collapsedSize:c=0,collapsible:u}=s,d=n[l];if(d==null||r!==d){n[l]=r;const{onCollapse:g,onExpand:m,onResize:b}=i;b&&b(r,d),u&&(g||m)&&(m&&(d==null||d===c)&&r!==c&&m(),g&&(d==null||d!==c)&&r===c&&g())}})}function kp(e,t){if(e.length!==t.length)return!1;for(let n=0;n{n!==null&&clearTimeout(n),n=setTimeout(()=>{e(...a)},t)}}function tP(e){try{if(typeof localStorage<"u")e.getItem=t=>localStorage.getItem(t),e.setItem=(t,n)=>{localStorage.setItem(t,n)};else throw new Error("localStorage not supported in this environment")}catch(t){console.error(t),e.getItem=()=>null,e.setItem=()=>{}}}function GU(e){return`react-resizable-panels:${e}`}function WU(e){return e.map(t=>{const{constraints:n,id:r,idIsFromProps:a,order:o}=t;return a?r:o?`${o}:${JSON.stringify(n)}`:JSON.stringify(n)}).sort((t,n)=>t.localeCompare(n)).join(",")}function KU(e,t){try{const n=GU(e),r=t.getItem(n);if(r){const a=JSON.parse(r);if(typeof a=="object"&&a!=null)return a}}catch{}return null}function fAe(e,t,n){var r,a;const o=(r=KU(e,n))!==null&&r!==void 0?r:{},i=WU(t);return(a=o[i])!==null&&a!==void 0?a:null}function pAe(e,t,n,r,a){var o;const i=GU(e),s=WU(t),l=(o=KU(e,a))!==null&&o!==void 0?o:{};l[s]={expandToSizes:Object.fromEntries(n.entries()),layout:r};try{a.setItem(i,JSON.stringify(l))}catch(c){console.error(c)}}function nP({layout:e,panelConstraints:t}){const n=[...e],r=n.reduce((o,i)=>o+i,0);if(n.length!==t.length)throw Error(`Invalid ${t.length} panel layout: ${n.map(o=>`${o}%`).join(", ")}`);if(!vr(r,100))for(let o=0;o(tP(Nu),Nu.getItem(e)),setItem:(e,t)=>{tP(Nu),Nu.setItem(e,t)}},rP={};function YU({autoSaveId:e=null,children:t,className:n="",direction:r,forwardedRef:a,id:o=null,onLayout:i=null,keyboardResizeBy:s=null,storage:l=Nu,style:c,tagName:u="div",...d}){const g=XA(o),m=ar(null),[b,y]=Zu(null),[w,v]=Zu([]),h=ar({}),S=ar(new Map),E=ar(0),k=ar({autoSaveId:e,direction:r,dragState:b,id:g,keyboardResizeBy:s,onLayout:i,storage:l}),x=ar({layout:w,panelDataArray:[],panelDataArrayChanged:!1});ar({didLogIdAndOrderWarning:!1,didLogPanelConstraintsWarning:!1,prevPanelIds:[]}),RU(a,()=>({getId:()=>k.current.id,getLayout:()=>{const{layout:P}=x.current;return P},setLayout:P=>{const{onLayout:N}=k.current,{layout:K,panelDataArray:ae}=x.current,ne=nP({layout:P,panelConstraints:ae.map(Q=>Q.constraints)});eP(K,ne)||(v(ne),x.current.layout=ne,N&&N(ne),ll(ae,ne,h.current))}}),[]),vs(()=>{k.current.autoSaveId=e,k.current.direction=r,k.current.dragState=b,k.current.id=g,k.current.onLayout=i,k.current.storage=l}),iAe({committedValuesRef:k,eagerValuesRef:x,groupId:g,layout:w,panelDataArray:x.current.panelDataArray,setLayout:v,panelGroupElement:m.current}),ys(()=>{const{panelDataArray:P}=x.current;if(e){if(w.length===0||w.length!==P.length)return;let N=rP[e];N==null&&(N=dAe(pAe,gAe),rP[e]=N);const K=[...P],ae=new Map(S.current);N(e,K,ae,w,l)}},[e,w,l]),ys(()=>{});const C=hr(P=>{const{onLayout:N}=k.current,{layout:K,panelDataArray:ae}=x.current;if(P.constraints.collapsible){const ne=ae.map(re=>re.constraints),{collapsedSize:Q=0,panelSize:pe,pivotIndices:he}=qi(ae,P,K);if(Ye(pe!=null),pe!==Q){S.current.set(P.id,pe);const Ee=hl(ae,P)===ae.length-1?pe-Q:Q-pe,ke=Ru({delta:Ee,layout:K,panelConstraints:ne,pivotIndices:he,trigger:"imperative-api"});kp(K,ke)||(v(ke),x.current.layout=ke,N&&N(ke),ll(ae,ke,h.current))}}},[]),_=hr(P=>{const{onLayout:N}=k.current,{layout:K,panelDataArray:ae}=x.current;if(P.constraints.collapsible){const ne=ae.map(Ee=>Ee.constraints),{collapsedSize:Q=0,panelSize:pe,minSize:he=0,pivotIndices:re}=qi(ae,P,K);if(pe===Q){const Ee=S.current.get(P.id),ke=Ee!=null&&Ee>=he?Ee:he,Vt=hl(ae,P)===ae.length-1?pe-ke:ke-pe,mt=Ru({delta:Vt,layout:K,panelConstraints:ne,pivotIndices:re,trigger:"imperative-api"});kp(K,mt)||(v(mt),x.current.layout=mt,N&&N(mt),ll(ae,mt,h.current))}}},[]),R=hr(P=>{const{layout:N,panelDataArray:K}=x.current,{panelSize:ae}=qi(K,P,N);return Ye(ae!=null),ae},[]),T=hr((P,N)=>{const{panelDataArray:K}=x.current,ae=hl(K,P);return uAe({defaultSize:N,dragState:b,layout:w,panelData:K,panelIndex:ae})},[b,w]),L=hr(P=>{const{layout:N,panelDataArray:K}=x.current,{collapsedSize:ae=0,collapsible:ne,panelSize:Q}=qi(K,P,N);return ne===!0&&Q===ae},[]),D=hr(P=>{const{layout:N,panelDataArray:K}=x.current,{collapsedSize:ae=0,collapsible:ne,panelSize:Q}=qi(K,P,N);return Ye(Q!=null),!ne||Q>ae},[]),H=hr(P=>{const{panelDataArray:N}=x.current;N.push(P),N.sort((K,ae)=>{const ne=K.order,Q=ae.order;return ne==null&&Q==null?0:ne==null?-1:Q==null?1:ne-Q}),x.current.panelDataArrayChanged=!0},[]);vs(()=>{if(x.current.panelDataArrayChanged){x.current.panelDataArrayChanged=!1;const{autoSaveId:P,onLayout:N,storage:K}=k.current,{layout:ae,panelDataArray:ne}=x.current;let Q=null;if(P){const he=fAe(P,ne,K);he&&(S.current=new Map(Object.entries(he.expandToSizes)),Q=he.layout)}Q==null&&(Q=cAe({panelDataArray:ne}));const pe=nP({layout:Q,panelConstraints:ne.map(he=>he.constraints)});eP(ae,pe)||(v(pe),x.current.layout=pe,N&&N(pe),ll(ne,pe,h.current))}}),vs(()=>{const P=x.current;return()=>{P.layout=[]}},[]);const z=hr(P=>function(K){K.preventDefault();const ae=m.current;if(!ae)return()=>null;const{direction:ne,dragState:Q,id:pe,keyboardResizeBy:he,onLayout:re}=k.current,{layout:Ee,panelDataArray:ke}=x.current,{initialLayout:We}=Q??{},Vt=HU(pe,P,ae);let mt=lAe(K,P,ne,Q,he,ae);if(mt===0)return;const Hn=ne==="horizontal";document.dir==="rtl"&&Hn&&(mt=-mt);const F=ke.map(ye=>ye.constraints),q=Ru({delta:mt,layout:We??Ee,panelConstraints:F,pivotIndices:Vt,trigger:OU(K)?"keyboard":"mouse-or-touch"}),Y=!kp(Ee,q);(DU(K)||LU(K))&&E.current!=mt&&(E.current=mt,Y?Tx(P,0):Hn?Tx(P,mt<0?PU:$U):Tx(P,mt<0?FU:jU)),Y&&(v(q),x.current.layout=q,re&&re(q),ll(ke,q,h.current))},[]),M=hr((P,N)=>{const{onLayout:K}=k.current,{layout:ae,panelDataArray:ne}=x.current,Q=ne.map(We=>We.constraints),{panelSize:pe,pivotIndices:he}=qi(ne,P,ae);Ye(pe!=null);const Ee=hl(ne,P)===ne.length-1?pe-N:N-pe,ke=Ru({delta:Ee,layout:ae,panelConstraints:Q,pivotIndices:he,trigger:"imperative-api"});kp(ae,ke)||(v(ke),x.current.layout=ke,K&&K(ke),ll(ne,ke,h.current))},[]),U=hr((P,N)=>{const{layout:K,panelDataArray:ae}=x.current,{collapsedSize:ne=0,collapsible:Q}=N,{collapsedSize:pe=0,collapsible:he,maxSize:re=100,minSize:Ee=0}=P.constraints,{panelSize:ke}=qi(ae,P,K);Ye(ke!=null),Q&&he&&ke===ne?ne!==pe&&M(P,pe):kere&&M(P,re)},[M]),X=hr((P,N)=>{const{direction:K}=k.current,{layout:ae}=x.current;if(!m.current)return;const ne=Fh(P,m.current);Ye(ne);const Q=qU(K,N);y({dragHandleId:P,dragHandleRect:ne.getBoundingClientRect(),initialCursorPosition:Q,initialLayout:ae})},[]),j=hr(()=>{y(null)},[]),O=hr(P=>{const{panelDataArray:N}=x.current,K=hl(N,P);K>=0&&(N.splice(K,1),delete h.current[P.id],x.current.panelDataArrayChanged=!0)},[]),A=V_e(()=>({collapsePanel:C,direction:r,dragState:b,expandPanel:_,getPanelSize:R,getPanelStyle:T,groupId:g,isPanelCollapsed:L,isPanelExpanded:D,reevaluatePanelConstraints:U,registerPanel:H,registerResizeHandle:z,resizePanel:M,startDragging:X,stopDragging:j,unregisterPanel:O,panelGroupElement:m.current}),[C,b,r,_,R,T,g,L,D,U,H,z,M,X,j,O]),V={display:"flex",flexDirection:r==="horizontal"?"row":"column",height:"100%",overflow:"hidden",width:"100%"};return Ac(Lh.Provider,{value:A},Ac(u,{...d,children:t,className:n,id:o,ref:m,style:{...V,...c},"data-panel-group":"","data-panel-group-direction":r,"data-panel-group-id":g}))}const ZU=AU((e,t)=>Ac(YU,{...e,forwardedRef:t}));YU.displayName="PanelGroup";ZU.displayName="forwardRef(PanelGroup)";function hl(e,t){return e.findIndex(n=>n===t||n.id===t.id)}function qi(e,t,n){const r=hl(e,t),o=r===e.length-1?[r-1,r]:[r,r+1],i=n[r];return{...t.constraints,panelSize:i,pivotIndices:o}}function mAe({disabled:e,handleId:t,resizeHandler:n,panelGroupElement:r}){ys(()=>{if(e||n==null||r==null)return;const a=Fh(t,r);if(a==null)return;const o=i=>{if(!i.defaultPrevented)switch(i.key){case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"ArrowUp":case"End":case"Home":{i.preventDefault(),n(i);break}case"F6":{i.preventDefault();const s=a.getAttribute("data-panel-group-id");Ye(s);const l=Dd(s,r),c=BU(s,t,r);Ye(c!==null);const u=i.shiftKey?c>0?c-1:l.length-1:c+1{a.removeEventListener("keydown",o)}},[r,e,t,n])}function XU({children:e=null,className:t="",disabled:n=!1,hitAreaMargins:r,id:a,onDragging:o,style:i={},tabIndex:s=0,tagName:l="div",...c}){const u=ar(null),d=ar({onDragging:o});ys(()=>{d.current.onDragging=o});const g=TU(Lh);if(g===null)throw Error("PanelResizeHandle components must be rendered within a PanelGroup container");const{direction:m,groupId:b,registerResizeHandle:y,startDragging:w,stopDragging:v,panelGroupElement:h}=g,S=XA(a),[E,k]=Zu("inactive"),[x,C]=Zu(!1),[_,R]=Zu(null),T=ar({state:E});return vs(()=>{T.current.state=E}),ys(()=>{if(n)R(null);else{const D=y(S);R(()=>D)}},[n,S,y]),ys(()=>{var D,H;if(n||_==null)return;const z=u.current;Ye(z);const M=(U,X,j)=>{if(X)switch(U){case"down":{k("drag"),w(S,j);const{onDragging:O}=d.current;O&&O(!0);break}case"move":{const{state:O}=T.current;O!=="drag"&&k("hover"),_(j);break}case"up":{k("hover"),v();const{onDragging:O}=d.current;O&&O(!1);break}}else k("inactive")};return rAe(S,z,m,{coarse:(D=r==null?void 0:r.coarse)!==null&&D!==void 0?D:15,fine:(H=r==null?void 0:r.fine)!==null&&H!==void 0?H:5},M)},[m,n,r,y,S,_,w,v]),mAe({disabled:n,handleId:S,resizeHandler:_,panelGroupElement:h}),Ac(l,{...c,children:e,className:t,id:a,onBlur:()=>C(!1),onFocus:()=>C(!0),ref:u,role:"separator",style:{...{touchAction:"none",userSelect:"none"},...i},tabIndex:s,"data-panel-group-direction":m,"data-panel-group-id":b,"data-resize-handle":"","data-resize-handle-active":E==="drag"?"pointer":x?"keyboard":void 0,"data-resize-handle-state":E,"data-panel-resize-handle-enabled":!n,"data-panel-resize-handle-id":S})}XU.displayName="PanelResizeHandle";const hAe=({className:e,...t})=>f.jsx(ZU,{className:ee("flex h-full w-full data-[panel-group-direction=vertical]:flex-col",e),...t}),aP=IU,bAe=({withHandle:e,className:t,...n})=>f.jsx(XU,{className:ee("relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90",t),...n,children:e&&f.jsx("div",{className:"z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border",children:f.jsx(Aq,{className:"h-2.5 w-2.5"})})}),[jh,STe]=zn("Tooltip",[qa]),eT=qa(),yAe="TooltipProvider",vAe=700,Kk="tooltip.open",[SAe,tT]=jh(yAe),wAe=e=>{const{__scopeTooltip:t,delayDuration:n=vAe,skipDelayDuration:r=300,disableHoverableContent:a=!1,children:o}=e,[i,s]=p.useState(!0),l=p.useRef(!1),c=p.useRef(0);return p.useEffect(()=>{const u=c.current;return()=>window.clearTimeout(u)},[]),p.createElement(SAe,{scope:t,isOpenDelayed:i,delayDuration:n,onOpen:p.useCallback(()=>{window.clearTimeout(c.current),s(!1)},[]),onClose:p.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>s(!0),r)},[r]),isPointerInTransitRef:l,onPointerInTransitChange:p.useCallback(u=>{l.current=u},[]),disableHoverableContent:a},o)},nT="Tooltip",[EAe,zh]=jh(nT),xAe=e=>{const{__scopeTooltip:t,children:n,open:r,defaultOpen:a=!1,onOpenChange:o,disableHoverableContent:i,delayDuration:s}=e,l=tT(nT,e.__scopeTooltip),c=eT(t),[u,d]=p.useState(null),g=bi(),m=p.useRef(0),b=i??l.disableHoverableContent,y=s??l.delayDuration,w=p.useRef(!1),[v=!1,h]=Fa({prop:r,defaultProp:a,onChange:C=>{C?(l.onOpen(),document.dispatchEvent(new CustomEvent(Kk))):l.onClose(),o==null||o(C)}}),S=p.useMemo(()=>v?w.current?"delayed-open":"instant-open":"closed",[v]),E=p.useCallback(()=>{window.clearTimeout(m.current),w.current=!1,h(!0)},[h]),k=p.useCallback(()=>{window.clearTimeout(m.current),h(!1)},[h]),x=p.useCallback(()=>{window.clearTimeout(m.current),m.current=window.setTimeout(()=>{w.current=!0,h(!0)},y)},[y,h]);return p.useEffect(()=>()=>window.clearTimeout(m.current),[]),p.createElement(ah,c,p.createElement(EAe,{scope:t,contentId:g,open:v,stateAttribute:S,trigger:u,onTriggerChange:d,onTriggerEnter:p.useCallback(()=>{l.isOpenDelayed?x():E()},[l.isOpenDelayed,x,E]),onTriggerLeave:p.useCallback(()=>{b?k():window.clearTimeout(m.current)},[k,b]),onOpen:E,onClose:k,disableHoverableContent:b},n))},oP="TooltipTrigger",kAe=p.forwardRef((e,t)=>{const{__scopeTooltip:n,...r}=e,a=zh(oP,n),o=tT(oP,n),i=eT(n),s=p.useRef(null),l=nt(t,s,a.onTriggerChange),c=p.useRef(!1),u=p.useRef(!1),d=p.useCallback(()=>c.current=!1,[]);return p.useEffect(()=>()=>document.removeEventListener("pointerup",d),[d]),p.createElement(pf,W({asChild:!0},i),p.createElement(ze.button,W({"aria-describedby":a.open?a.contentId:void 0,"data-state":a.stateAttribute},r,{ref:l,onPointerMove:fe(e.onPointerMove,g=>{g.pointerType!=="touch"&&!u.current&&!o.isPointerInTransitRef.current&&(a.onTriggerEnter(),u.current=!0)}),onPointerLeave:fe(e.onPointerLeave,()=>{a.onTriggerLeave(),u.current=!1}),onPointerDown:fe(e.onPointerDown,()=>{c.current=!0,document.addEventListener("pointerup",d,{once:!0})}),onFocus:fe(e.onFocus,()=>{c.current||a.onOpen()}),onBlur:fe(e.onBlur,a.onClose),onClick:fe(e.onClick,a.onClose)})))}),CAe="TooltipPortal",[wTe,_Ae]=jh(CAe,{forceMount:void 0}),Ld="TooltipContent",AAe=p.forwardRef((e,t)=>{const n=_Ae(Ld,e.__scopeTooltip),{forceMount:r=n.forceMount,side:a="top",...o}=e,i=zh(Ld,e.__scopeTooltip);return p.createElement(pr,{present:r||i.open},i.disableHoverableContent?p.createElement(QU,W({side:a},o,{ref:t})):p.createElement(TAe,W({side:a},o,{ref:t})))}),TAe=p.forwardRef((e,t)=>{const n=zh(Ld,e.__scopeTooltip),r=tT(Ld,e.__scopeTooltip),a=p.useRef(null),o=nt(t,a),[i,s]=p.useState(null),{trigger:l,onClose:c}=n,u=a.current,{onPointerInTransitChange:d}=r,g=p.useCallback(()=>{s(null),d(!1)},[d]),m=p.useCallback((b,y)=>{const w=b.currentTarget,v={x:b.clientX,y:b.clientY},h=NAe(v,w.getBoundingClientRect()),S=IAe(v,h),E=OAe(y.getBoundingClientRect()),k=LAe([...S,...E]);s(k),d(!0)},[d]);return p.useEffect(()=>()=>g(),[g]),p.useEffect(()=>{if(l&&u){const b=w=>m(w,u),y=w=>m(w,l);return l.addEventListener("pointerleave",b),u.addEventListener("pointerleave",y),()=>{l.removeEventListener("pointerleave",b),u.removeEventListener("pointerleave",y)}}},[l,u,m,g]),p.useEffect(()=>{if(i){const b=y=>{const w=y.target,v={x:y.clientX,y:y.clientY},h=(l==null?void 0:l.contains(w))||(u==null?void 0:u.contains(w)),S=!DAe(v,i);h?g():S&&(g(),c())};return document.addEventListener("pointermove",b),()=>document.removeEventListener("pointermove",b)}},[l,u,i,c,g]),p.createElement(QU,W({},e,{ref:o}))}),[RAe,ETe]=jh(nT,{isInside:!1}),QU=p.forwardRef((e,t)=>{const{__scopeTooltip:n,children:r,"aria-label":a,onEscapeKeyDown:o,onPointerDownOutside:i,...s}=e,l=zh(Ld,n),c=eT(n),{onClose:u}=l;return p.useEffect(()=>(document.addEventListener(Kk,u),()=>document.removeEventListener(Kk,u)),[u]),p.useEffect(()=>{if(l.trigger){const d=g=>{const m=g.target;m!=null&&m.contains(l.trigger)&&u()};return window.addEventListener("scroll",d,{capture:!0}),()=>window.removeEventListener("scroll",d,{capture:!0})}},[l.trigger,u]),p.createElement(Ls,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:o,onPointerDownOutside:i,onFocusOutside:d=>d.preventDefault(),onDismiss:u},p.createElement(gf,W({"data-state":l.stateAttribute},c,s,{ref:t,style:{...s.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"}}),p.createElement(Rm,null,r),p.createElement(RAe,{scope:n,isInside:!0},p.createElement(qV,{id:l.contentId,role:"tooltip"},a||r))))});function NAe(e,t){const n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),a=Math.abs(t.right-e.x),o=Math.abs(t.left-e.x);switch(Math.min(n,r,a,o)){case o:return"left";case a:return"right";case n:return"top";case r:return"bottom";default:throw new Error("unreachable")}}function IAe(e,t,n=5){const r=[];switch(t){case"top":r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case"bottom":r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case"left":r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case"right":r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n});break}return r}function OAe(e){const{top:t,right:n,bottom:r,left:a}=e;return[{x:a,y:t},{x:n,y:t},{x:n,y:r},{x:a,y:r}]}function DAe(e,t){const{x:n,y:r}=e;let a=!1;for(let o=0,i=t.length-1;or!=u>r&&n<(c-s)*(r-l)/(u-l)+s&&(a=!a)}return a}function LAe(e){const t=e.slice();return t.sort((n,r)=>n.xr.x?1:n.yr.y?1:0),MAe(t)}function MAe(e){if(e.length<=1)return e.slice();const t=[];for(let r=0;r=2;){const o=t[t.length-1],i=t[t.length-2];if((o.x-i.x)*(a.y-i.y)>=(o.y-i.y)*(a.x-i.x))t.pop();else break}t.push(a)}t.pop();const n=[];for(let r=e.length-1;r>=0;r--){const a=e[r];for(;n.length>=2;){const o=n[n.length-1],i=n[n.length-2];if((o.x-i.x)*(a.y-i.y)>=(o.y-i.y)*(a.x-i.x))n.pop();else break}n.push(a)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}const PAe=wAe,$Ae=xAe,FAe=kAe,JU=AAe,jAe=PAe,Yk=$Ae,Zk=FAe,dm=p.forwardRef(({className:e,sideOffset:t=4,...n},r)=>f.jsx(JU,{ref:r,sideOffset:t,className:ee("z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...n}));dm.displayName=JU.displayName;const eB=p.createContext({setTheme(e){},toggleTheme(){},theme:localStorage.getItem("theme")==="dark"?"dark":"light"});function zAe({children:e}){const[t,n]=p.useState(localStorage.getItem("theme")==="dark"?"dark":"light"),r=p.useCallback(()=>n(o=>o==="light"?"dark":"light"),[n]),a=p.useMemo(()=>({theme:t,setTheme:n,toggleTheme:r}),[t,n,r]);return p.useEffect(()=>{t==="light"?(document.documentElement.classList.remove("dark"),document.documentElement.classList.add("light")):(document.documentElement.classList.remove("light"),document.documentElement.classList.add("dark")),localStorage.setItem("theme",t)},[t]),f.jsx(eB.Provider,{value:a,children:e})}const UAe=()=>p.useContext(eB);function iP({links:e,isCollapsed:t}){return f.jsx("div",{"data-collapsed":t,className:"group flex flex-col gap-4 py-2 data-[collapsed=true]:py-2",children:f.jsx("nav",{className:"grid gap-1 px-2 group-[[data-collapsed=true]]:justify-center group-[[data-collapsed=true]]:px-2",children:e.map((n,r)=>t?f.jsxs(Yk,{delayDuration:0,children:[f.jsx(Zk,{asChild:!0,children:f.jsxs(bd,{to:n.to,className:ee(yc({variant:n.variant,size:"icon"}),"h-9 w-9",n.variant==="default"&&"bg-background-darker text-black dark:bg-muted dark:text-muted-foreground dark:hover:bg-muted dark:hover:text-white"),children:[f.jsx(n.icon,{className:"h-4 w-4"}),f.jsx("span",{className:"sr-only",children:n.title})]})}),f.jsxs(dm,{side:"right",className:"flex items-center gap-4",children:[n.title,n.label&&f.jsx("span",{className:"ml-auto text-muted-foreground",children:n.label})]})]},r):f.jsxs(bd,{to:n.to,className:ee(yc({variant:n.variant,size:"sm"}),n.variant==="default"&&"bg-background-darker hover:text-background text-foreground dark:bg-muted dark:text-white dark:hover:bg-muted dark:hover:text-white","justify-start"),children:[f.jsx(n.icon,{className:"mr-2 h-4 w-4"}),n.title,n.label&&f.jsx("span",{className:ee("ml-auto",n.variant==="default"&&"text-background dark:text-white"),children:n.label})]},r))})})}function BAe(e){const{className:t,collapse:n}=e;return f.jsxs("svg",{className:t,height:"28",...n?{width:28,viewBox:"0 0 28 28"}:{width:96,viewBox:"0 0 96 28"},fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[f.jsx("path",{d:"M16.9282 11.2005H11.2857V16.8003H16.9282V11.2005Z",fill:"currentColor"}),f.jsx("path",{d:"M22.5705 3.81489V0H5.64243V3.81489C5.64243 4.80109 4.8376 5.59984 3.84391 5.59984H0V22.4002H3.84391C4.8376 22.4002 5.64243 23.1989 5.64243 24.1851V28H22.5705V24.1851C22.5705 23.1989 23.3753 22.4002 24.369 22.4002H28.213V5.59984H24.369C23.3753 5.59984 22.5705 4.80109 22.5705 3.81489ZM22.5705 20.6144C22.5705 21.6006 21.7657 22.3994 20.772 22.3994H7.44174C6.44805 22.3994 5.64322 21.6006 5.64322 20.6144V7.3848C5.64322 6.3986 6.44805 5.59984 7.44174 5.59984H20.772C21.7657 5.59984 22.5705 6.3986 22.5705 7.3848V20.6144Z",fill:"currentColor"}),!n&&f.jsxs(f.Fragment,{children:[f.jsx("path",{d:"M44.8064 5.59982H42.3182V22.3994H53.3766V20.0233H44.8064V5.59982Z",fill:"currentColor"}),f.jsx("path",{d:"M60.5503 10.5463H59.6655C57.0057 10.5463 54.3224 12.1648 54.3224 15.7798V17.5368C54.3224 20.8134 56.233 22.7703 59.4327 22.7703H60.7838C63.4835 22.7703 65.4043 21.193 65.7985 18.6528L65.833 18.4288H63.2704L63.2281 18.5673C62.8488 19.8133 61.8574 20.3942 60.1083 20.3942C57.838 20.3942 56.7667 19.3933 56.7408 17.2459H65.8933V15.7798C65.8933 12.1648 63.21 10.5463 60.5503 10.5463ZM56.8145 15.1459C57.0684 13.5702 58.0394 12.9223 60.1075 12.9223C62.1756 12.9223 63.1458 13.5702 63.3997 15.1459H56.8145Z",fill:"currentColor"}),f.jsx("path",{d:"M70.8579 5.59982H68.3705V10.5463H66.717V12.9224H68.3705V17.6286C68.3705 21.7795 70.9151 22.3994 72.4323 22.3994H74.002V20.0233H73.1078C71.5099 20.0233 70.8579 19.2222 70.8579 17.2592V12.9232H74.002V10.5471H70.8579V5.59982Z",fill:"currentColor"}),f.jsx("path",{d:"M79.2637 5.59982H76.7764V10.5463H75.1228V12.9224H76.7764V17.6286C76.7764 21.7795 79.3209 22.3994 80.8381 22.3994H82.4078V20.0233H81.5137C79.9158 20.0233 79.2637 19.2222 79.2637 17.2592V12.9232H82.4078V10.5471H79.2637V5.59982Z",fill:"currentColor"}),f.jsx("path",{d:"M95.2238 20.0232C94.7309 20.0232 94.5115 19.8195 94.5115 19.3622V15.317C94.5115 11.1662 91.9669 10.5463 90.4497 10.5463H88.1676C86.1944 10.5463 84.0824 11.9805 84.0824 14.1154V14.3098H86.5697V14.1154C86.5697 13.4574 87.3808 12.9231 88.3769 12.9231H89.7742C91.5594 12.9231 91.9449 13.5609 92.0163 14.9849H88.4231C85.645 14.9849 83.7791 16.4565 83.7791 18.6466V18.9009C83.7791 20.0575 84.2313 22.7477 88.4231 22.7477C89.4936 22.7477 91.3642 22.5618 92.3705 21.3765C92.9802 22.4008 94.2646 22.4008 95.2238 22.4008H95.4197V20.0248H95.2238V20.0232ZM92.0233 18.7609C92.0233 20.0808 89.9121 20.3694 89.0979 20.3694C86.7288 20.3694 86.2657 19.7961 86.2657 18.8068C86.2657 17.7086 87.2453 17.1284 89.0979 17.1284H92.0233V18.7609Z",fill:"currentColor"})]})]})}function HAe({defaultLayout:e=[265,440,655],defaultCollapsed:t=!1,navCollapsedSize:n,children:r}){const a=Li(),o=b=>{var y;return((y=a.pathname.split("/"))==null?void 0:y[1])===b?"default":"ghost"},i=[{title:"Agents",icon:Lm,variant:o("agents"),to:"agents"},{title:"Data Sources",icon:_q,variant:o("files"),to:"data-sources"},{title:"Tool Builder",icon:zq,variant:o("tools"),to:"tools"},{title:"Agent Templates",icon:kq,variant:o("agent-templates"),to:"agent-templates"},{title:"User Templates",icon:QC,variant:o("human-templates"),to:"human-templates"}],{theme:s,toggleTheme:l}=UAe(),[c,u]=p.useState(t),{logout:d}=iY(),g=Mi(),m=()=>{d(),g("/login")};return f.jsx(jAe,{delayDuration:0,children:f.jsxs(hAe,{direction:"horizontal",onLayout:b=>{document.cookie=`react-resizable-panels:layout=${JSON.stringify(b)}`},className:"h-full items-stretch",children:[f.jsxs(aP,{defaultSize:e[0],collapsedSize:n,collapsible:!0,minSize:14,maxSize:20,onCollapse:()=>{u(!0),document.cookie=`react-resizable-panels:collapsed=${JSON.stringify(!0)}`},onExpand:()=>{u(!1),document.cookie=`react-resizable-panels:collapsed=${JSON.stringify(!1)}`},className:ee("flex flex-col",c&&"min-w-[50px] transition-all duration-300 ease-in-out"),children:[f.jsx(jF,{to:"/",className:ee("flex h-[56px] items-center",c?"h-[56px] justify-center":"px-2"),children:f.jsx(BAe,{collapse:c,className:"h-[24px] dark:text-white"})}),f.jsx(Nd,{}),f.jsx(iP,{isCollapsed:c,links:i}),f.jsx(Nd,{}),f.jsx(iP,{isCollapsed:c,links:[{title:"Settings",icon:Eq,variant:o("settings"),to:"settings"}]}),f.jsx("div",{className:ee("flex flex-1 items-end",c&&"justify-center p-2.5"),children:f.jsxs("div",{className:"grid gap-2",children:[c?f.jsxs(Yk,{delayDuration:0,children:[f.jsx(Zk,{asChild:!0,children:f.jsxs(ue,{variant:"ghost",onClick:l,size:"icon",className:"h-9 w-9",children:[f.jsx("span",{className:"sr-only",children:"Toggle Dark Mode"}),s==="light"?f.jsx(wR,{className:"h-4 w-4"}):f.jsx(ER,{className:"w-4 w-4"})]})}),f.jsx(dm,{side:"right",className:"flex items-center gap-4",children:"Toggle Dark Mode"})]}):f.jsx(ue,{className:"m-2.5",variant:"ghost",size:c?"icon":"sm",onClick:l,children:s==="light"?f.jsx(wR,{className:"h-4 w-4"}):f.jsx(ER,{className:"w-4 w-4"})}),c?f.jsxs(Yk,{delayDuration:0,children:[f.jsx(Zk,{asChild:!0,children:f.jsxs(ue,{variant:"ghost",onClick:m,size:"icon",className:"h-9 w-9",children:[f.jsx("span",{className:"sr-only",children:"Sign Out"}),f.jsx(SR,{className:"h-4 w-4"})]})}),f.jsx(dm,{side:"right",className:"flex items-center gap-4",children:"Sign Out"})]}):f.jsx(ue,{className:"m-2.5",variant:"ghost",size:c?"icon":"sm",onClick:m,children:f.jsx(SR,{className:"h-4 w-4"})})]})})]}),f.jsx(bAe,{withHandle:!0}),f.jsx(aP,{className:"h-full",defaultSize:e[1],minSize:30,children:r})]})})}/*! js-cookie v3.0.5 | MIT */function Cp(e){for(var t=1;t"u")){i=Cp({},t,i),typeof i.expires=="number"&&(i.expires=new Date(Date.now()+i.expires*864e5)),i.expires&&(i.expires=i.expires.toUTCString()),a=encodeURIComponent(a).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape);var s="";for(var l in i)i[l]&&(s+="; "+l,i[l]!==!0&&(s+="="+i[l].split(";")[0]));return document.cookie=a+"="+e.write(o,a)+s}}function r(a){if(!(typeof document>"u"||arguments.length&&!a)){for(var o=document.cookie?document.cookie.split("; "):[],i={},s=0;s{const e=sP.get("react-resizable-panels:layout"),t=sP.get("react-resizable-panels:collapsed"),n=e?JSON.parse(e):void 0,r=t?JSON.parse(t):void 0;return{defaultLayout:n,defaultCollapsed:r}},GAe=()=>{const{defaultCollapsed:e,defaultLayout:t}=qAe();return f.jsx(AZ,{children:f.jsx(hX,{children:f.jsx(HAe,{defaultLayout:t,defaultCollapsed:e,navCollapsedSize:4,children:f.jsx(PF,{})})})})},WAe=bK([{path:"/",element:GAe(),children:[{path:"",element:f.jsx(MF,{to:"/agents",replace:!0})},Mie,wke,nCe,ACe,t_e,R_e,U_e]}]),KAe=new zG;function YAe(){return f.jsx(Jm,{className:"bg-red-600 text-white rounded-none",children:f.jsxs("div",{children:[f.jsxs("div",{className:"flex items-center mb-3 gap-2",children:[f.jsx(X4,{className:"w-6 h-6"}),f.jsx("div",{className:"font-bold",children:"DEPRECATION NOTICE"})]}),"The self-hosted Letta dev portal is deprecated and will not work as intended with newer versions of Letta (",">","v0.5.0). Please use our new Agent Development Environment at ",f.jsx("a",{className:"underline",href:"https://app.letta.com",children:"https://app.letta.com"})]})})}function ZAe(){return f.jsxs(qG,{client:KAe,children:[f.jsxs(zAe,{children:[f.jsx(YAe,{}),f.jsx(CK,{router:WAe}),f.jsx(CG,{})]}),f.jsx(oW,{initialIsOpen:!1})]})}const XAe=O4(document.getElementById("root"));XAe.render(f.jsx(p.StrictMode,{children:f.jsx(ZAe,{})})); diff --git a/letta/server/static_files/assets/index-43ab4d62.css b/letta/server/static_files/assets/index-43ab4d62.css new file mode 100644 index 0000000000..17e1816fd9 --- /dev/null +++ b/letta/server/static_files/assets/index-43ab4d62.css @@ -0,0 +1 @@ +*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}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,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;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{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-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,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}:root{--background: 210, 10%, 92%;--background-lighter: 0, 0%, 100%;--background-darker: 210, 6%, 86%;--foreground: 224 71.4% 4.1%;--card: 0 0% 100%;--card-foreground: 224 71.4% 4.1%;--popover: 0 0% 100%;--popover-foreground: 224 71.4% 4.1%;--primary: 220.9 39.3% 11%;--primary-foreground: 210 20% 98%;--secondary: 240, 92%, 35%;--secondary-foreground: 0, 0%, 100%;--muted: 220 14.3% 95.9%;--muted-foreground: 220 8.9% 46.1%;--accent: 220 14.3% 95.9%;--accent-foreground: 220.9 39.3% 11%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 210 20% 98%;--border: 210, 6%, 86%;--input: 210, 6%, 86%;--ring: 224 71.4% 4.1%;--radius: .5rem}.dark{--background: 224 71.4% 4.1%;--background-lighter: 224 71.4% 4.1%;--background-darker: 224 71.4% 4.1%;--foreground: 210 20% 98%;--card: 224 71.4% 4.1%;--card-foreground: 210 20% 98%;--popover: 224 71.4% 4.1%;--popover-foreground: 210 20% 98%;--primary: 210 20% 98%;--primary-foreground: 220.9 39.3% 11%;--secondary: 10, 100%, 60%;--secondary-foreground: 210 20% 98%;--muted: 215 27.9% 16.9%;--muted-foreground: 217.9 10.6% 64.9%;--accent: 215 27.9% 16.9%;--accent-foreground: 210 20% 98%;--destructive: 0 62.8% 30.6%;--destructive-foreground: 210 20% 98%;--border: 215 27.9% 16.9%;--input: 215 27.9% 16.9%;--ring: 216 12.2% 83.9%}*{border-color:hsl(var(--border))}html{height:100%}body{height:100%;width:100%;background-color:hsl(var(--background));color:hsl(var(--foreground));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}input::file-selector-button{color:hsl(var(--foreground))}*,:before,:after{--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: rgb(59 130 246 / .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: rgb(59 130 246 / .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: }.fixed{position:fixed}.mt-10{margin-top:2.5rem}.mt-3{margin-top:.75rem}.flex{display:flex}.h-\[100dvh\]{height:100dvh}.h-full{height:100%}.w-\[100dvh\]{width:100dvh}.w-full{width:100%}.max-w-\[600px\]{max-width:600px}.max-w-\[893px\]{max-width:893px}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-5{gap:1.25rem}.border{border-width:1px}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.p-0{padding:0}.p-10{padding:2.5rem}.px-4{padding-left:1rem;padding-right:1rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.font-semibold{font-weight:600}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}@keyframes enter{0%{opacity:var(--tw-enter-opacity, 1);transform:translate3d(var(--tw-enter-translate-x, 0),var(--tw-enter-translate-y, 0),0) scale3d(var(--tw-enter-scale, 1),var(--tw-enter-scale, 1),var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity, 1);transform:translate3d(var(--tw-exit-translate-x, 0),var(--tw-exit-translate-y, 0),0) scale3d(var(--tw-exit-scale, 1),var(--tw-exit-scale, 1),var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0))}}.PopoverContent{width:var(--radix-popover-trigger-width);max-height:var(--radix-popover-content-available-height)} diff --git a/letta/server/static_files/assets/index-4848e3d7.js b/letta/server/static_files/assets/index-4848e3d7.js new file mode 100644 index 0000000000..97b8ee8c24 --- /dev/null +++ b/letta/server/static_files/assets/index-4848e3d7.js @@ -0,0 +1,40 @@ +(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))r(l);new MutationObserver(l=>{for(const o of l)if(o.type==="childList")for(const u of o.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&r(u)}).observe(document,{childList:!0,subtree:!0});function t(l){const o={};return l.integrity&&(o.integrity=l.integrity),l.referrerPolicy&&(o.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?o.credentials="include":l.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(l){if(l.ep)return;l.ep=!0;const o=t(l);fetch(l.href,o)}})();var Ai={exports:{}},br={},Bi={exports:{}},L={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Yt=Symbol.for("react.element"),rc=Symbol.for("react.portal"),lc=Symbol.for("react.fragment"),oc=Symbol.for("react.strict_mode"),uc=Symbol.for("react.profiler"),ic=Symbol.for("react.provider"),sc=Symbol.for("react.context"),ac=Symbol.for("react.forward_ref"),cc=Symbol.for("react.suspense"),fc=Symbol.for("react.memo"),dc=Symbol.for("react.lazy"),Ou=Symbol.iterator;function pc(e){return e===null||typeof e!="object"?null:(e=Ou&&e[Ou]||e["@@iterator"],typeof e=="function"?e:null)}var Wi={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Qi=Object.assign,Ki={};function lt(e,n,t){this.props=e,this.context=n,this.refs=Ki,this.updater=t||Wi}lt.prototype.isReactComponent={};lt.prototype.setState=function(e,n){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,n,"setState")};lt.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Yi(){}Yi.prototype=lt.prototype;function Vo(e,n,t){this.props=e,this.context=n,this.refs=Ki,this.updater=t||Wi}var Fo=Vo.prototype=new Yi;Fo.constructor=Vo;Qi(Fo,lt.prototype);Fo.isPureReactComponent=!0;var Du=Array.isArray,Zi=Object.prototype.hasOwnProperty,Ho={current:null},Xi={key:!0,ref:!0,__self:!0,__source:!0};function Gi(e,n,t){var r,l={},o=null,u=null;if(n!=null)for(r in n.ref!==void 0&&(u=n.ref),n.key!==void 0&&(o=""+n.key),n)Zi.call(n,r)&&!Xi.hasOwnProperty(r)&&(l[r]=n[r]);var i=arguments.length-2;if(i===1)l.children=t;else if(1>>1,X=C[W];if(0>>1;Wl(yl,z))ynl(bt,yl)?(C[W]=bt,C[yn]=z,W=yn):(C[W]=yl,C[vn]=z,W=vn);else if(ynl(bt,z))C[W]=bt,C[yn]=z,W=yn;else break e}}return P}function l(C,P){var z=C.sortIndex-P.sortIndex;return z!==0?z:C.id-P.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var u=Date,i=u.now();e.unstable_now=function(){return u.now()-i}}var s=[],c=[],h=1,m=null,p=3,g=!1,w=!1,S=!1,I=typeof setTimeout=="function"?setTimeout:null,f=typeof clearTimeout=="function"?clearTimeout:null,a=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function d(C){for(var P=t(c);P!==null;){if(P.callback===null)r(c);else if(P.startTime<=C)r(c),P.sortIndex=P.expirationTime,n(s,P);else break;P=t(c)}}function v(C){if(S=!1,d(C),!w)if(t(s)!==null)w=!0,hl(E);else{var P=t(c);P!==null&&vl(v,P.startTime-C)}}function E(C,P){w=!1,S&&(S=!1,f(N),N=-1),g=!0;var z=p;try{for(d(P),m=t(s);m!==null&&(!(m.expirationTime>P)||C&&!Ne());){var W=m.callback;if(typeof W=="function"){m.callback=null,p=m.priorityLevel;var X=W(m.expirationTime<=P);P=e.unstable_now(),typeof X=="function"?m.callback=X:m===t(s)&&r(s),d(P)}else r(s);m=t(s)}if(m!==null)var qt=!0;else{var vn=t(c);vn!==null&&vl(v,vn.startTime-P),qt=!1}return qt}finally{m=null,p=z,g=!1}}var x=!1,_=null,N=-1,B=5,T=-1;function Ne(){return!(e.unstable_now()-TC||125W?(C.sortIndex=z,n(c,C),t(s)===null&&C===t(c)&&(S?(f(N),N=-1):S=!0,vl(v,z-W))):(C.sortIndex=X,n(s,C),w||g||(w=!0,hl(E))),C},e.unstable_shouldYield=Ne,e.unstable_wrapCallback=function(C){var P=p;return function(){var z=p;p=P;try{return C.apply(this,arguments)}finally{p=z}}}})(es);bi.exports=es;var xc=bi.exports;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var ns=$o,ye=xc;function y(e){for(var n="https://reactjs.org/docs/error-decoder.html?invariant="+e,t=1;t"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Wl=Object.prototype.hasOwnProperty,_c=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,Iu={},Vu={};function Nc(e){return Wl.call(Vu,e)?!0:Wl.call(Iu,e)?!1:_c.test(e)?Vu[e]=!0:(Iu[e]=!0,!1)}function Pc(e,n,t,r){if(t!==null&&t.type===0)return!1;switch(typeof n){case"function":case"symbol":return!0;case"boolean":return r?!1:t!==null?!t.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function zc(e,n,t,r){if(n===null||typeof n>"u"||Pc(e,n,t,r))return!0;if(r)return!1;if(t!==null)switch(t.type){case 3:return!n;case 4:return n===!1;case 5:return isNaN(n);case 6:return isNaN(n)||1>n}return!1}function se(e,n,t,r,l,o,u){this.acceptsBooleans=n===2||n===3||n===4,this.attributeName=r,this.attributeNamespace=l,this.mustUseProperty=t,this.propertyName=e,this.type=n,this.sanitizeURL=o,this.removeEmptyString=u}var ee={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){ee[e]=new se(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var n=e[0];ee[n]=new se(n,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){ee[e]=new se(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){ee[e]=new se(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){ee[e]=new se(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){ee[e]=new se(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){ee[e]=new se(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){ee[e]=new se(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){ee[e]=new se(e,5,!1,e.toLowerCase(),null,!1,!1)});var Ao=/[\-:]([a-z])/g;function Bo(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var n=e.replace(Ao,Bo);ee[n]=new se(n,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var n=e.replace(Ao,Bo);ee[n]=new se(n,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var n=e.replace(Ao,Bo);ee[n]=new se(n,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){ee[e]=new se(e,1,!1,e.toLowerCase(),null,!1,!1)});ee.xlinkHref=new se("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){ee[e]=new se(e,1,!1,e.toLowerCase(),null,!0,!0)});function Wo(e,n,t,r){var l=ee.hasOwnProperty(n)?ee[n]:null;(l!==null?l.type!==0:r||!(2i||l[u]!==o[i]){var s=` +`+l[u].replace(" at new "," at ");return e.displayName&&s.includes("")&&(s=s.replace("",e.displayName)),s}while(1<=u&&0<=i);break}}}finally{Sl=!1,Error.prepareStackTrace=t}return(e=e?e.displayName||e.name:"")?yt(e):""}function Lc(e){switch(e.tag){case 5:return yt(e.type);case 16:return yt("Lazy");case 13:return yt("Suspense");case 19:return yt("SuspenseList");case 0:case 2:case 15:return e=kl(e.type,!1),e;case 11:return e=kl(e.type.render,!1),e;case 1:return e=kl(e.type,!0),e;default:return""}}function Zl(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Dn:return"Fragment";case On:return"Portal";case Ql:return"Profiler";case Qo:return"StrictMode";case Kl:return"Suspense";case Yl:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case ls:return(e.displayName||"Context")+".Consumer";case rs:return(e._context.displayName||"Context")+".Provider";case Ko:var n=e.render;return e=e.displayName,e||(e=n.displayName||n.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Yo:return n=e.displayName||null,n!==null?n:Zl(e.type)||"Memo";case Ge:n=e._payload,e=e._init;try{return Zl(e(n))}catch{}}return null}function Tc(e){var n=e.type;switch(e.tag){case 24:return"Cache";case 9:return(n.displayName||"Context")+".Consumer";case 10:return(n._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=n.render,e=e.displayName||e.name||"",n.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return n;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Zl(n);case 8:return n===Qo?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof n=="function")return n.displayName||n.name||null;if(typeof n=="string")return n}return null}function fn(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function us(e){var n=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(n==="checkbox"||n==="radio")}function Rc(e){var n=us(e)?"checked":"value",t=Object.getOwnPropertyDescriptor(e.constructor.prototype,n),r=""+e[n];if(!e.hasOwnProperty(n)&&typeof t<"u"&&typeof t.get=="function"&&typeof t.set=="function"){var l=t.get,o=t.set;return Object.defineProperty(e,n,{configurable:!0,get:function(){return l.call(this)},set:function(u){r=""+u,o.call(this,u)}}),Object.defineProperty(e,n,{enumerable:t.enumerable}),{getValue:function(){return r},setValue:function(u){r=""+u},stopTracking:function(){e._valueTracker=null,delete e[n]}}}}function tr(e){e._valueTracker||(e._valueTracker=Rc(e))}function is(e){if(!e)return!1;var n=e._valueTracker;if(!n)return!0;var t=n.getValue(),r="";return e&&(r=us(e)?e.checked?"true":"false":e.value),e=r,e!==t?(n.setValue(e),!0):!1}function Lr(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Xl(e,n){var t=n.checked;return U({},n,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:t??e._wrapperState.initialChecked})}function Hu(e,n){var t=n.defaultValue==null?"":n.defaultValue,r=n.checked!=null?n.checked:n.defaultChecked;t=fn(n.value!=null?n.value:t),e._wrapperState={initialChecked:r,initialValue:t,controlled:n.type==="checkbox"||n.type==="radio"?n.checked!=null:n.value!=null}}function ss(e,n){n=n.checked,n!=null&&Wo(e,"checked",n,!1)}function Gl(e,n){ss(e,n);var t=fn(n.value),r=n.type;if(t!=null)r==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+t):e.value!==""+t&&(e.value=""+t);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}n.hasOwnProperty("value")?Jl(e,n.type,t):n.hasOwnProperty("defaultValue")&&Jl(e,n.type,fn(n.defaultValue)),n.checked==null&&n.defaultChecked!=null&&(e.defaultChecked=!!n.defaultChecked)}function Uu(e,n,t){if(n.hasOwnProperty("value")||n.hasOwnProperty("defaultValue")){var r=n.type;if(!(r!=="submit"&&r!=="reset"||n.value!==void 0&&n.value!==null))return;n=""+e._wrapperState.initialValue,t||n===e.value||(e.value=n),e.defaultValue=n}t=e.name,t!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,t!==""&&(e.name=t)}function Jl(e,n,t){(n!=="number"||Lr(e.ownerDocument)!==e)&&(t==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+t&&(e.defaultValue=""+t))}var gt=Array.isArray;function Qn(e,n,t,r){if(e=e.options,n){n={};for(var l=0;l"+n.valueOf().toString()+"",n=rr.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;n.firstChild;)e.appendChild(n.firstChild)}});function Rt(e,n){if(n){var t=e.firstChild;if(t&&t===e.lastChild&&t.nodeType===3){t.nodeValue=n;return}}e.textContent=n}var kt={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Mc=["Webkit","ms","Moz","O"];Object.keys(kt).forEach(function(e){Mc.forEach(function(n){n=n+e.charAt(0).toUpperCase()+e.substring(1),kt[n]=kt[e]})});function ds(e,n,t){return n==null||typeof n=="boolean"||n===""?"":t||typeof n!="number"||n===0||kt.hasOwnProperty(e)&&kt[e]?(""+n).trim():n+"px"}function ps(e,n){e=e.style;for(var t in n)if(n.hasOwnProperty(t)){var r=t.indexOf("--")===0,l=ds(t,n[t],r);t==="float"&&(t="cssFloat"),r?e.setProperty(t,l):e[t]=l}}var Oc=U({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function eo(e,n){if(n){if(Oc[e]&&(n.children!=null||n.dangerouslySetInnerHTML!=null))throw Error(y(137,e));if(n.dangerouslySetInnerHTML!=null){if(n.children!=null)throw Error(y(60));if(typeof n.dangerouslySetInnerHTML!="object"||!("__html"in n.dangerouslySetInnerHTML))throw Error(y(61))}if(n.style!=null&&typeof n.style!="object")throw Error(y(62))}}function no(e,n){if(e.indexOf("-")===-1)return typeof n.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var to=null;function Zo(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var ro=null,Kn=null,Yn=null;function Bu(e){if(e=Gt(e)){if(typeof ro!="function")throw Error(y(280));var n=e.stateNode;n&&(n=ll(n),ro(e.stateNode,e.type,n))}}function ms(e){Kn?Yn?Yn.push(e):Yn=[e]:Kn=e}function hs(){if(Kn){var e=Kn,n=Yn;if(Yn=Kn=null,Bu(e),n)for(e=0;e>>=0,e===0?32:31-(Wc(e)/Qc|0)|0}var lr=64,or=4194304;function wt(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Or(e,n){var t=e.pendingLanes;if(t===0)return 0;var r=0,l=e.suspendedLanes,o=e.pingedLanes,u=t&268435455;if(u!==0){var i=u&~l;i!==0?r=wt(i):(o&=u,o!==0&&(r=wt(o)))}else u=t&~l,u!==0?r=wt(u):o!==0&&(r=wt(o));if(r===0)return 0;if(n!==0&&n!==r&&!(n&l)&&(l=r&-r,o=n&-n,l>=o||l===16&&(o&4194240)!==0))return n;if(r&4&&(r|=t&16),n=e.entangledLanes,n!==0)for(e=e.entanglements,n&=r;0t;t++)n.push(e);return n}function Zt(e,n,t){e.pendingLanes|=n,n!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,n=31-Re(n),e[n]=t}function Xc(e,n){var t=e.pendingLanes&~n;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=n,e.mutableReadLanes&=n,e.entangledLanes&=n,n=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=Ct),qu=String.fromCharCode(32),bu=!1;function js(e,n){switch(e){case"keyup":return xf.indexOf(n.keyCode)!==-1;case"keydown":return n.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Is(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var jn=!1;function Nf(e,n){switch(e){case"compositionend":return Is(n);case"keypress":return n.which!==32?null:(bu=!0,qu);case"textInput":return e=n.data,e===qu&&bu?null:e;default:return null}}function Pf(e,n){if(jn)return e==="compositionend"||!tu&&js(e,n)?(e=Os(),Sr=bo=en=null,jn=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(n.ctrlKey||n.altKey||n.metaKey)||n.ctrlKey&&n.altKey){if(n.char&&1=n)return{node:t,offset:n-e};e=r}e:{for(;t;){if(t.nextSibling){t=t.nextSibling;break e}t=t.parentNode}t=void 0}t=ri(t)}}function Us(e,n){return e&&n?e===n?!0:e&&e.nodeType===3?!1:n&&n.nodeType===3?Us(e,n.parentNode):"contains"in e?e.contains(n):e.compareDocumentPosition?!!(e.compareDocumentPosition(n)&16):!1:!1}function $s(){for(var e=window,n=Lr();n instanceof e.HTMLIFrameElement;){try{var t=typeof n.contentWindow.location.href=="string"}catch{t=!1}if(t)e=n.contentWindow;else break;n=Lr(e.document)}return n}function ru(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return n&&(n==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||n==="textarea"||e.contentEditable==="true")}function If(e){var n=$s(),t=e.focusedElem,r=e.selectionRange;if(n!==t&&t&&t.ownerDocument&&Us(t.ownerDocument.documentElement,t)){if(r!==null&&ru(t)){if(n=r.start,e=r.end,e===void 0&&(e=n),"selectionStart"in t)t.selectionStart=n,t.selectionEnd=Math.min(e,t.value.length);else if(e=(n=t.ownerDocument||document)&&n.defaultView||window,e.getSelection){e=e.getSelection();var l=t.textContent.length,o=Math.min(r.start,l);r=r.end===void 0?o:Math.min(r.end,l),!e.extend&&o>r&&(l=r,r=o,o=l),l=li(t,o);var u=li(t,r);l&&u&&(e.rangeCount!==1||e.anchorNode!==l.node||e.anchorOffset!==l.offset||e.focusNode!==u.node||e.focusOffset!==u.offset)&&(n=n.createRange(),n.setStart(l.node,l.offset),e.removeAllRanges(),o>r?(e.addRange(n),e.extend(u.node,u.offset)):(n.setEnd(u.node,u.offset),e.addRange(n)))}}for(n=[],e=t;e=e.parentNode;)e.nodeType===1&&n.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof t.focus=="function"&&t.focus(),t=0;t=document.documentMode,In=null,ao=null,_t=null,co=!1;function oi(e,n,t){var r=t.window===t?t.document:t.nodeType===9?t:t.ownerDocument;co||In==null||In!==Lr(r)||(r=In,"selectionStart"in r&&ru(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),_t&&Vt(_t,r)||(_t=r,r=Ir(ao,"onSelect"),0Hn||(e.current=yo[Hn],yo[Hn]=null,Hn--)}function O(e,n){Hn++,yo[Hn]=e.current,e.current=n}var dn={},le=mn(dn),fe=mn(!1),_n=dn;function qn(e,n){var t=e.type.contextTypes;if(!t)return dn;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===n)return r.__reactInternalMemoizedMaskedChildContext;var l={},o;for(o in t)l[o]=n[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=n,e.__reactInternalMemoizedMaskedChildContext=l),l}function de(e){return e=e.childContextTypes,e!=null}function Fr(){j(fe),j(le)}function di(e,n,t){if(le.current!==dn)throw Error(y(168));O(le,n),O(fe,t)}function Gs(e,n,t){var r=e.stateNode;if(n=n.childContextTypes,typeof r.getChildContext!="function")return t;r=r.getChildContext();for(var l in r)if(!(l in n))throw Error(y(108,Tc(e)||"Unknown",l));return U({},t,r)}function Hr(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||dn,_n=le.current,O(le,e),O(fe,fe.current),!0}function pi(e,n,t){var r=e.stateNode;if(!r)throw Error(y(169));t?(e=Gs(e,n,_n),r.__reactInternalMemoizedMergedChildContext=e,j(fe),j(le),O(le,e)):j(fe),O(fe,t)}var Ue=null,ol=!1,jl=!1;function Js(e){Ue===null?Ue=[e]:Ue.push(e)}function Zf(e){ol=!0,Js(e)}function hn(){if(!jl&&Ue!==null){jl=!0;var e=0,n=M;try{var t=Ue;for(M=1;e>=u,l-=u,$e=1<<32-Re(n)+l|t<N?(B=_,_=null):B=_.sibling;var T=p(f,_,d[N],v);if(T===null){_===null&&(_=B);break}e&&_&&T.alternate===null&&n(f,_),a=o(T,a,N),x===null?E=T:x.sibling=T,x=T,_=B}if(N===d.length)return t(f,_),V&&gn(f,N),E;if(_===null){for(;NN?(B=_,_=null):B=_.sibling;var Ne=p(f,_,T.value,v);if(Ne===null){_===null&&(_=B);break}e&&_&&Ne.alternate===null&&n(f,_),a=o(Ne,a,N),x===null?E=Ne:x.sibling=Ne,x=Ne,_=B}if(T.done)return t(f,_),V&&gn(f,N),E;if(_===null){for(;!T.done;N++,T=d.next())T=m(f,T.value,v),T!==null&&(a=o(T,a,N),x===null?E=T:x.sibling=T,x=T);return V&&gn(f,N),E}for(_=r(f,_);!T.done;N++,T=d.next())T=g(_,f,N,T.value,v),T!==null&&(e&&T.alternate!==null&&_.delete(T.key===null?N:T.key),a=o(T,a,N),x===null?E=T:x.sibling=T,x=T);return e&&_.forEach(function(it){return n(f,it)}),V&&gn(f,N),E}function I(f,a,d,v){if(typeof d=="object"&&d!==null&&d.type===Dn&&d.key===null&&(d=d.props.children),typeof d=="object"&&d!==null){switch(d.$$typeof){case nr:e:{for(var E=d.key,x=a;x!==null;){if(x.key===E){if(E=d.type,E===Dn){if(x.tag===7){t(f,x.sibling),a=l(x,d.props.children),a.return=f,f=a;break e}}else if(x.elementType===E||typeof E=="object"&&E!==null&&E.$$typeof===Ge&&Si(E)===x.type){t(f,x.sibling),a=l(x,d.props),a.ref=mt(f,x,d),a.return=f,f=a;break e}t(f,x);break}else n(f,x);x=x.sibling}d.type===Dn?(a=xn(d.props.children,f.mode,v,d.key),a.return=f,f=a):(v=zr(d.type,d.key,d.props,null,f.mode,v),v.ref=mt(f,a,d),v.return=f,f=v)}return u(f);case On:e:{for(x=d.key;a!==null;){if(a.key===x)if(a.tag===4&&a.stateNode.containerInfo===d.containerInfo&&a.stateNode.implementation===d.implementation){t(f,a.sibling),a=l(a,d.children||[]),a.return=f,f=a;break e}else{t(f,a);break}else n(f,a);a=a.sibling}a=Bl(d,f.mode,v),a.return=f,f=a}return u(f);case Ge:return x=d._init,I(f,a,x(d._payload),v)}if(gt(d))return w(f,a,d,v);if(at(d))return S(f,a,d,v);dr(f,d)}return typeof d=="string"&&d!==""||typeof d=="number"?(d=""+d,a!==null&&a.tag===6?(t(f,a.sibling),a=l(a,d),a.return=f,f=a):(t(f,a),a=Al(d,f.mode,v),a.return=f,f=a),u(f)):t(f,a)}return I}var et=oa(!0),ua=oa(!1),Jt={},Fe=mn(Jt),$t=mn(Jt),At=mn(Jt);function En(e){if(e===Jt)throw Error(y(174));return e}function du(e,n){switch(O(At,n),O($t,e),O(Fe,Jt),e=n.nodeType,e){case 9:case 11:n=(n=n.documentElement)?n.namespaceURI:bl(null,"");break;default:e=e===8?n.parentNode:n,n=e.namespaceURI||null,e=e.tagName,n=bl(n,e)}j(Fe),O(Fe,n)}function nt(){j(Fe),j($t),j(At)}function ia(e){En(At.current);var n=En(Fe.current),t=bl(n,e.type);n!==t&&(O($t,e),O(Fe,t))}function pu(e){$t.current===e&&(j(Fe),j($t))}var F=mn(0);function Qr(e){for(var n=e;n!==null;){if(n.tag===13){var t=n.memoizedState;if(t!==null&&(t=t.dehydrated,t===null||t.data==="$?"||t.data==="$!"))return n}else if(n.tag===19&&n.memoizedProps.revealOrder!==void 0){if(n.flags&128)return n}else if(n.child!==null){n.child.return=n,n=n.child;continue}if(n===e)break;for(;n.sibling===null;){if(n.return===null||n.return===e)return null;n=n.return}n.sibling.return=n.return,n=n.sibling}return null}var Il=[];function mu(){for(var e=0;et?t:4,e(!0);var r=Vl.transition;Vl.transition={};try{e(!1),n()}finally{M=t,Vl.transition=r}}function Ca(){return _e().memoizedState}function qf(e,n,t){var r=an(e);if(t={lane:r,action:t,hasEagerState:!1,eagerState:null,next:null},xa(e))_a(n,t);else if(t=na(e,n,t,r),t!==null){var l=ue();Me(t,e,r,l),Na(t,n,r)}}function bf(e,n,t){var r=an(e),l={lane:r,action:t,hasEagerState:!1,eagerState:null,next:null};if(xa(e))_a(n,l);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=n.lastRenderedReducer,o!==null))try{var u=n.lastRenderedState,i=o(u,t);if(l.hasEagerState=!0,l.eagerState=i,Oe(i,u)){var s=n.interleaved;s===null?(l.next=l,cu(n)):(l.next=s.next,s.next=l),n.interleaved=l;return}}catch{}finally{}t=na(e,n,l,r),t!==null&&(l=ue(),Me(t,e,r,l),Na(t,n,r))}}function xa(e){var n=e.alternate;return e===H||n!==null&&n===H}function _a(e,n){Nt=Kr=!0;var t=e.pending;t===null?n.next=n:(n.next=t.next,t.next=n),e.pending=n}function Na(e,n,t){if(t&4194240){var r=n.lanes;r&=e.pendingLanes,t|=r,n.lanes=t,Go(e,t)}}var Yr={readContext:xe,useCallback:ne,useContext:ne,useEffect:ne,useImperativeHandle:ne,useInsertionEffect:ne,useLayoutEffect:ne,useMemo:ne,useReducer:ne,useRef:ne,useState:ne,useDebugValue:ne,useDeferredValue:ne,useTransition:ne,useMutableSource:ne,useSyncExternalStore:ne,useId:ne,unstable_isNewReconciler:!1},ed={readContext:xe,useCallback:function(e,n){return je().memoizedState=[e,n===void 0?null:n],e},useContext:xe,useEffect:Ei,useImperativeHandle:function(e,n,t){return t=t!=null?t.concat([e]):null,xr(4194308,4,ga.bind(null,n,e),t)},useLayoutEffect:function(e,n){return xr(4194308,4,e,n)},useInsertionEffect:function(e,n){return xr(4,2,e,n)},useMemo:function(e,n){var t=je();return n=n===void 0?null:n,e=e(),t.memoizedState=[e,n],e},useReducer:function(e,n,t){var r=je();return n=t!==void 0?t(n):n,r.memoizedState=r.baseState=n,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:n},r.queue=e,e=e.dispatch=qf.bind(null,H,e),[r.memoizedState,e]},useRef:function(e){var n=je();return e={current:e},n.memoizedState=e},useState:ki,useDebugValue:wu,useDeferredValue:function(e){return je().memoizedState=e},useTransition:function(){var e=ki(!1),n=e[0];return e=Jf.bind(null,e[1]),je().memoizedState=e,[n,e]},useMutableSource:function(){},useSyncExternalStore:function(e,n,t){var r=H,l=je();if(V){if(t===void 0)throw Error(y(407));t=t()}else{if(t=n(),J===null)throw Error(y(349));Pn&30||ca(r,n,t)}l.memoizedState=t;var o={value:t,getSnapshot:n};return l.queue=o,Ei(da.bind(null,r,o,e),[e]),r.flags|=2048,Qt(9,fa.bind(null,r,o,t,n),void 0,null),t},useId:function(){var e=je(),n=J.identifierPrefix;if(V){var t=Ae,r=$e;t=(r&~(1<<32-Re(r)-1)).toString(32)+t,n=":"+n+"R"+t,t=Bt++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=u.createElement(t,{is:r.is}):(e=u.createElement(t),t==="select"&&(u=e,r.multiple?u.multiple=!0:r.size&&(u.size=r.size))):e=u.createElementNS(e,t),e[Ie]=n,e[Ut]=r,ja(e,n,!1,!1),n.stateNode=e;e:{switch(u=no(t,r),t){case"dialog":D("cancel",e),D("close",e),l=r;break;case"iframe":case"object":case"embed":D("load",e),l=r;break;case"video":case"audio":for(l=0;lrt&&(n.flags|=128,r=!0,ht(o,!1),n.lanes=4194304)}else{if(!r)if(e=Qr(u),e!==null){if(n.flags|=128,r=!0,t=e.updateQueue,t!==null&&(n.updateQueue=t,n.flags|=4),ht(o,!0),o.tail===null&&o.tailMode==="hidden"&&!u.alternate&&!V)return te(n),null}else 2*Q()-o.renderingStartTime>rt&&t!==1073741824&&(n.flags|=128,r=!0,ht(o,!1),n.lanes=4194304);o.isBackwards?(u.sibling=n.child,n.child=u):(t=o.last,t!==null?t.sibling=u:n.child=u,o.last=u)}return o.tail!==null?(n=o.tail,o.rendering=n,o.tail=n.sibling,o.renderingStartTime=Q(),n.sibling=null,t=F.current,O(F,r?t&1|2:t&1),n):(te(n),null);case 22:case 23:return _u(),r=n.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(n.flags|=8192),r&&n.mode&1?me&1073741824&&(te(n),n.subtreeFlags&6&&(n.flags|=8192)):te(n),null;case 24:return null;case 25:return null}throw Error(y(156,n.tag))}function sd(e,n){switch(ou(n),n.tag){case 1:return de(n.type)&&Fr(),e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 3:return nt(),j(fe),j(le),mu(),e=n.flags,e&65536&&!(e&128)?(n.flags=e&-65537|128,n):null;case 5:return pu(n),null;case 13:if(j(F),e=n.memoizedState,e!==null&&e.dehydrated!==null){if(n.alternate===null)throw Error(y(340));bn()}return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 19:return j(F),null;case 4:return nt(),null;case 10:return au(n.type._context),null;case 22:case 23:return _u(),null;case 24:return null;default:return null}}var mr=!1,re=!1,ad=typeof WeakSet=="function"?WeakSet:Set,k=null;function Bn(e,n){var t=e.ref;if(t!==null)if(typeof t=="function")try{t(null)}catch(r){A(e,n,r)}else t.current=null}function Lo(e,n,t){try{t()}catch(r){A(e,n,r)}}var Ri=!1;function cd(e,n){if(fo=Dr,e=$s(),ru(e)){if("selectionStart"in e)var t={start:e.selectionStart,end:e.selectionEnd};else e:{t=(t=e.ownerDocument)&&t.defaultView||window;var r=t.getSelection&&t.getSelection();if(r&&r.rangeCount!==0){t=r.anchorNode;var l=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{t.nodeType,o.nodeType}catch{t=null;break e}var u=0,i=-1,s=-1,c=0,h=0,m=e,p=null;n:for(;;){for(var g;m!==t||l!==0&&m.nodeType!==3||(i=u+l),m!==o||r!==0&&m.nodeType!==3||(s=u+r),m.nodeType===3&&(u+=m.nodeValue.length),(g=m.firstChild)!==null;)p=m,m=g;for(;;){if(m===e)break n;if(p===t&&++c===l&&(i=u),p===o&&++h===r&&(s=u),(g=m.nextSibling)!==null)break;m=p,p=m.parentNode}m=g}t=i===-1||s===-1?null:{start:i,end:s}}else t=null}t=t||{start:0,end:0}}else t=null;for(po={focusedElem:e,selectionRange:t},Dr=!1,k=n;k!==null;)if(n=k,e=n.child,(n.subtreeFlags&1028)!==0&&e!==null)e.return=n,k=e;else for(;k!==null;){n=k;try{var w=n.alternate;if(n.flags&1024)switch(n.tag){case 0:case 11:case 15:break;case 1:if(w!==null){var S=w.memoizedProps,I=w.memoizedState,f=n.stateNode,a=f.getSnapshotBeforeUpdate(n.elementType===n.type?S:ze(n.type,S),I);f.__reactInternalSnapshotBeforeUpdate=a}break;case 3:var d=n.stateNode.containerInfo;d.nodeType===1?d.textContent="":d.nodeType===9&&d.documentElement&&d.removeChild(d.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(y(163))}}catch(v){A(n,n.return,v)}if(e=n.sibling,e!==null){e.return=n.return,k=e;break}k=n.return}return w=Ri,Ri=!1,w}function Pt(e,n,t){var r=n.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var l=r=r.next;do{if((l.tag&e)===e){var o=l.destroy;l.destroy=void 0,o!==void 0&&Lo(n,t,o)}l=l.next}while(l!==r)}}function sl(e,n){if(n=n.updateQueue,n=n!==null?n.lastEffect:null,n!==null){var t=n=n.next;do{if((t.tag&e)===e){var r=t.create;t.destroy=r()}t=t.next}while(t!==n)}}function To(e){var n=e.ref;if(n!==null){var t=e.stateNode;switch(e.tag){case 5:e=t;break;default:e=t}typeof n=="function"?n(e):n.current=e}}function Fa(e){var n=e.alternate;n!==null&&(e.alternate=null,Fa(n)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(n=e.stateNode,n!==null&&(delete n[Ie],delete n[Ut],delete n[vo],delete n[Kf],delete n[Yf])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Ha(e){return e.tag===5||e.tag===3||e.tag===4}function Mi(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Ha(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Ro(e,n,t){var r=e.tag;if(r===5||r===6)e=e.stateNode,n?t.nodeType===8?t.parentNode.insertBefore(e,n):t.insertBefore(e,n):(t.nodeType===8?(n=t.parentNode,n.insertBefore(e,t)):(n=t,n.appendChild(e)),t=t._reactRootContainer,t!=null||n.onclick!==null||(n.onclick=Vr));else if(r!==4&&(e=e.child,e!==null))for(Ro(e,n,t),e=e.sibling;e!==null;)Ro(e,n,t),e=e.sibling}function Mo(e,n,t){var r=e.tag;if(r===5||r===6)e=e.stateNode,n?t.insertBefore(e,n):t.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(Mo(e,n,t),e=e.sibling;e!==null;)Mo(e,n,t),e=e.sibling}var q=null,Le=!1;function Xe(e,n,t){for(t=t.child;t!==null;)Ua(e,n,t),t=t.sibling}function Ua(e,n,t){if(Ve&&typeof Ve.onCommitFiberUnmount=="function")try{Ve.onCommitFiberUnmount(el,t)}catch{}switch(t.tag){case 5:re||Bn(t,n);case 6:var r=q,l=Le;q=null,Xe(e,n,t),q=r,Le=l,q!==null&&(Le?(e=q,t=t.stateNode,e.nodeType===8?e.parentNode.removeChild(t):e.removeChild(t)):q.removeChild(t.stateNode));break;case 18:q!==null&&(Le?(e=q,t=t.stateNode,e.nodeType===8?Dl(e.parentNode,t):e.nodeType===1&&Dl(e,t),jt(e)):Dl(q,t.stateNode));break;case 4:r=q,l=Le,q=t.stateNode.containerInfo,Le=!0,Xe(e,n,t),q=r,Le=l;break;case 0:case 11:case 14:case 15:if(!re&&(r=t.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){l=r=r.next;do{var o=l,u=o.destroy;o=o.tag,u!==void 0&&(o&2||o&4)&&Lo(t,n,u),l=l.next}while(l!==r)}Xe(e,n,t);break;case 1:if(!re&&(Bn(t,n),r=t.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=t.memoizedProps,r.state=t.memoizedState,r.componentWillUnmount()}catch(i){A(t,n,i)}Xe(e,n,t);break;case 21:Xe(e,n,t);break;case 22:t.mode&1?(re=(r=re)||t.memoizedState!==null,Xe(e,n,t),re=r):Xe(e,n,t);break;default:Xe(e,n,t)}}function Oi(e){var n=e.updateQueue;if(n!==null){e.updateQueue=null;var t=e.stateNode;t===null&&(t=e.stateNode=new ad),n.forEach(function(r){var l=wd.bind(null,e,r);t.has(r)||(t.add(r),r.then(l,l))})}}function Pe(e,n){var t=n.deletions;if(t!==null)for(var r=0;rl&&(l=u),r&=~o}if(r=l,r=Q()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*dd(r/1960))-r,10e?16:e,nn===null)var r=!1;else{if(e=nn,nn=null,Gr=0,R&6)throw Error(y(331));var l=R;for(R|=4,k=e.current;k!==null;){var o=k,u=o.child;if(k.flags&16){var i=o.deletions;if(i!==null){for(var s=0;sQ()-Cu?Cn(e,0):Eu|=t),pe(e,n)}function Za(e,n){n===0&&(e.mode&1?(n=or,or<<=1,!(or&130023424)&&(or=4194304)):n=1);var t=ue();e=Ke(e,n),e!==null&&(Zt(e,n,t),pe(e,t))}function gd(e){var n=e.memoizedState,t=0;n!==null&&(t=n.retryLane),Za(e,t)}function wd(e,n){var t=0;switch(e.tag){case 13:var r=e.stateNode,l=e.memoizedState;l!==null&&(t=l.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(y(314))}r!==null&&r.delete(n),Za(e,t)}var Xa;Xa=function(e,n,t){if(e!==null)if(e.memoizedProps!==n.pendingProps||fe.current)ce=!0;else{if(!(e.lanes&t)&&!(n.flags&128))return ce=!1,ud(e,n,t);ce=!!(e.flags&131072)}else ce=!1,V&&n.flags&1048576&&qs(n,$r,n.index);switch(n.lanes=0,n.tag){case 2:var r=n.type;_r(e,n),e=n.pendingProps;var l=qn(n,le.current);Xn(n,t),l=vu(null,n,r,e,l,t);var o=yu();return n.flags|=1,typeof l=="object"&&l!==null&&typeof l.render=="function"&&l.$$typeof===void 0?(n.tag=1,n.memoizedState=null,n.updateQueue=null,de(r)?(o=!0,Hr(n)):o=!1,n.memoizedState=l.state!==null&&l.state!==void 0?l.state:null,fu(n),l.updater=ul,n.stateNode=l,l._reactInternals=n,Eo(n,r,e,t),n=_o(null,n,r,!0,o,t)):(n.tag=0,V&&o&&lu(n),oe(null,n,l,t),n=n.child),n;case 16:r=n.elementType;e:{switch(_r(e,n),e=n.pendingProps,l=r._init,r=l(r._payload),n.type=r,l=n.tag=kd(r),e=ze(r,e),l){case 0:n=xo(null,n,r,e,t);break e;case 1:n=zi(null,n,r,e,t);break e;case 11:n=Ni(null,n,r,e,t);break e;case 14:n=Pi(null,n,r,ze(r.type,e),t);break e}throw Error(y(306,r,""))}return n;case 0:return r=n.type,l=n.pendingProps,l=n.elementType===r?l:ze(r,l),xo(e,n,r,l,t);case 1:return r=n.type,l=n.pendingProps,l=n.elementType===r?l:ze(r,l),zi(e,n,r,l,t);case 3:e:{if(Ma(n),e===null)throw Error(y(387));r=n.pendingProps,o=n.memoizedState,l=o.element,ta(e,n),Wr(n,r,null,t);var u=n.memoizedState;if(r=u.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:u.cache,pendingSuspenseBoundaries:u.pendingSuspenseBoundaries,transitions:u.transitions},n.updateQueue.baseState=o,n.memoizedState=o,n.flags&256){l=tt(Error(y(423)),n),n=Li(e,n,r,t,l);break e}else if(r!==l){l=tt(Error(y(424)),n),n=Li(e,n,r,t,l);break e}else for(he=on(n.stateNode.containerInfo.firstChild),ve=n,V=!0,Te=null,t=ua(n,null,r,t),n.child=t;t;)t.flags=t.flags&-3|4096,t=t.sibling;else{if(bn(),r===l){n=Ye(e,n,t);break e}oe(e,n,r,t)}n=n.child}return n;case 5:return ia(n),e===null&&wo(n),r=n.type,l=n.pendingProps,o=e!==null?e.memoizedProps:null,u=l.children,mo(r,l)?u=null:o!==null&&mo(r,o)&&(n.flags|=32),Ra(e,n),oe(e,n,u,t),n.child;case 6:return e===null&&wo(n),null;case 13:return Oa(e,n,t);case 4:return du(n,n.stateNode.containerInfo),r=n.pendingProps,e===null?n.child=et(n,null,r,t):oe(e,n,r,t),n.child;case 11:return r=n.type,l=n.pendingProps,l=n.elementType===r?l:ze(r,l),Ni(e,n,r,l,t);case 7:return oe(e,n,n.pendingProps,t),n.child;case 8:return oe(e,n,n.pendingProps.children,t),n.child;case 12:return oe(e,n,n.pendingProps.children,t),n.child;case 10:e:{if(r=n.type._context,l=n.pendingProps,o=n.memoizedProps,u=l.value,O(Ar,r._currentValue),r._currentValue=u,o!==null)if(Oe(o.value,u)){if(o.children===l.children&&!fe.current){n=Ye(e,n,t);break e}}else for(o=n.child,o!==null&&(o.return=n);o!==null;){var i=o.dependencies;if(i!==null){u=o.child;for(var s=i.firstContext;s!==null;){if(s.context===r){if(o.tag===1){s=Be(-1,t&-t),s.tag=2;var c=o.updateQueue;if(c!==null){c=c.shared;var h=c.pending;h===null?s.next=s:(s.next=h.next,h.next=s),c.pending=s}}o.lanes|=t,s=o.alternate,s!==null&&(s.lanes|=t),So(o.return,t,n),i.lanes|=t;break}s=s.next}}else if(o.tag===10)u=o.type===n.type?null:o.child;else if(o.tag===18){if(u=o.return,u===null)throw Error(y(341));u.lanes|=t,i=u.alternate,i!==null&&(i.lanes|=t),So(u,t,n),u=o.sibling}else u=o.child;if(u!==null)u.return=o;else for(u=o;u!==null;){if(u===n){u=null;break}if(o=u.sibling,o!==null){o.return=u.return,u=o;break}u=u.return}o=u}oe(e,n,l.children,t),n=n.child}return n;case 9:return l=n.type,r=n.pendingProps.children,Xn(n,t),l=xe(l),r=r(l),n.flags|=1,oe(e,n,r,t),n.child;case 14:return r=n.type,l=ze(r,n.pendingProps),l=ze(r.type,l),Pi(e,n,r,l,t);case 15:return La(e,n,n.type,n.pendingProps,t);case 17:return r=n.type,l=n.pendingProps,l=n.elementType===r?l:ze(r,l),_r(e,n),n.tag=1,de(r)?(e=!0,Hr(n)):e=!1,Xn(n,t),la(n,r,l),Eo(n,r,l,t),_o(null,n,r,!0,e,t);case 19:return Da(e,n,t);case 22:return Ta(e,n,t)}throw Error(y(156,n.tag))};function Ga(e,n){return Es(e,n)}function Sd(e,n,t,r){this.tag=e,this.key=t,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=n,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ee(e,n,t,r){return new Sd(e,n,t,r)}function Pu(e){return e=e.prototype,!(!e||!e.isReactComponent)}function kd(e){if(typeof e=="function")return Pu(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Ko)return 11;if(e===Yo)return 14}return 2}function cn(e,n){var t=e.alternate;return t===null?(t=Ee(e.tag,n,e.key,e.mode),t.elementType=e.elementType,t.type=e.type,t.stateNode=e.stateNode,t.alternate=e,e.alternate=t):(t.pendingProps=n,t.type=e.type,t.flags=0,t.subtreeFlags=0,t.deletions=null),t.flags=e.flags&14680064,t.childLanes=e.childLanes,t.lanes=e.lanes,t.child=e.child,t.memoizedProps=e.memoizedProps,t.memoizedState=e.memoizedState,t.updateQueue=e.updateQueue,n=e.dependencies,t.dependencies=n===null?null:{lanes:n.lanes,firstContext:n.firstContext},t.sibling=e.sibling,t.index=e.index,t.ref=e.ref,t}function zr(e,n,t,r,l,o){var u=2;if(r=e,typeof e=="function")Pu(e)&&(u=1);else if(typeof e=="string")u=5;else e:switch(e){case Dn:return xn(t.children,l,o,n);case Qo:u=8,l|=8;break;case Ql:return e=Ee(12,t,n,l|2),e.elementType=Ql,e.lanes=o,e;case Kl:return e=Ee(13,t,n,l),e.elementType=Kl,e.lanes=o,e;case Yl:return e=Ee(19,t,n,l),e.elementType=Yl,e.lanes=o,e;case os:return cl(t,l,o,n);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case rs:u=10;break e;case ls:u=9;break e;case Ko:u=11;break e;case Yo:u=14;break e;case Ge:u=16,r=null;break e}throw Error(y(130,e==null?e:typeof e,""))}return n=Ee(u,t,n,l),n.elementType=e,n.type=r,n.lanes=o,n}function xn(e,n,t,r){return e=Ee(7,e,r,n),e.lanes=t,e}function cl(e,n,t,r){return e=Ee(22,e,r,n),e.elementType=os,e.lanes=t,e.stateNode={isHidden:!1},e}function Al(e,n,t){return e=Ee(6,e,null,n),e.lanes=t,e}function Bl(e,n,t){return n=Ee(4,e.children!==null?e.children:[],e.key,n),n.lanes=t,n.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},n}function Ed(e,n,t,r,l){this.tag=n,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Cl(0),this.expirationTimes=Cl(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Cl(0),this.identifierPrefix=r,this.onRecoverableError=l,this.mutableSourceEagerHydrationData=null}function zu(e,n,t,r,l,o,u,i,s){return e=new Ed(e,n,t,i,s),n===1?(n=1,o===!0&&(n|=8)):n=0,o=Ee(3,null,null,n),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:t,cache:null,transitions:null,pendingSuspenseBoundaries:null},fu(o),e}function Cd(e,n,t){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(ec)}catch(e){console.error(e)}}ec(),qi.exports=ge;var zd=qi.exports,nc,$i=zd;nc=$i.createRoot,$i.hydrateRoot;function Ld(){return $.jsxs("svg",{width:"137",height:"40",viewBox:"0 0 137 40",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[$.jsx("path",{d:"M24.1831 16.0007H16.1225V24.0004H24.1831V16.0007Z",fill:"#161616"}),$.jsx("path",{d:"M32.2436 5.44985V0H8.06062V5.44985C8.06062 6.8587 6.91086 7.99978 5.4913 7.99978H0V32.0002H5.4913C6.91086 32.0002 8.06062 33.1413 8.06062 34.5502V40H32.2436V34.5502C32.2436 33.1413 33.3934 32.0002 34.8129 32.0002H40.3042V7.99978H34.8129C33.3934 7.99978 32.2436 6.8587 32.2436 5.44985ZM32.2436 29.4492C32.2436 30.858 31.0939 31.9991 29.6743 31.9991H10.6311C9.2115 31.9991 8.06174 30.858 8.06174 29.4492V10.5497C8.06174 9.14086 9.2115 7.99978 10.6311 7.99978H29.6743C31.0939 7.99978 32.2436 9.14086 32.2436 10.5497V29.4492Z",fill:"#161616"}),$.jsx("path",{d:"M64.0092 7.99974H60.4546V31.9991H76.2523V28.6047H64.0092V7.99974Z",fill:"#161616"}),$.jsx("path",{d:"M86.5004 15.0661H85.2364C81.4368 15.0661 77.6035 17.3783 77.6035 22.5426V25.0525C77.6035 29.7335 80.3329 32.529 84.9039 32.529H86.834C90.6908 32.529 93.4348 30.2757 93.9979 26.6469L94.0472 26.3269H90.3863L90.3258 26.5247C89.784 28.3046 88.3678 29.1346 85.869 29.1346C82.6257 29.1346 81.0953 27.7047 81.0584 24.637H94.1334V22.5426C94.1334 17.3783 90.3001 15.0661 86.5004 15.0661ZM81.1636 21.6371C81.5263 19.386 82.9134 18.4605 85.8679 18.4605C88.8223 18.4605 90.2083 19.386 90.571 21.6371H81.1636Z",fill:"#161616"}),$.jsx("path",{d:"M101.226 7.99974H97.6722V15.0662H95.31V18.4606H97.6722V25.1837C97.6722 31.1135 101.307 31.9991 103.475 31.9991H105.717V28.6047H104.44C102.157 28.6047 101.226 27.4603 101.226 24.6559V18.4617H105.717V15.0673H101.226V7.99974Z",fill:"#161616"}),$.jsx("path",{d:"M113.234 7.99974H109.681V15.0662H107.318V18.4606H109.681V25.1837C109.681 31.1135 113.316 31.9991 115.483 31.9991H117.726V28.6047H116.448C114.165 28.6047 113.234 27.4603 113.234 24.6559V18.4617H117.726V15.0673H113.234V7.99974Z",fill:"#161616"}),$.jsx("path",{d:"M136.034 28.6046C135.33 28.6046 135.016 28.3135 135.016 27.6602V21.8815C135.016 15.9517 131.381 15.0661 129.214 15.0661H125.954C123.135 15.0661 120.118 17.115 120.118 20.1649V20.4426H123.671V20.1649C123.671 19.2249 124.83 18.4616 126.253 18.4616H128.249C130.799 18.4616 131.35 19.3727 131.452 21.4071H126.319C122.35 21.4071 119.684 23.5092 119.684 26.638V27.0014C119.684 28.6535 120.33 32.4967 126.319 32.4967C127.848 32.4967 130.52 32.2312 131.958 30.5379C132.829 32.0012 134.664 32.0012 136.034 32.0012H136.314V28.6069H136.034V28.6046ZM131.462 26.8014C131.462 28.6869 128.446 29.0991 127.283 29.0991C123.898 29.0991 123.237 28.2802 123.237 26.8669C123.237 25.2981 124.636 24.4692 127.283 24.4692H131.462V26.8014Z",fill:"#161616"})]})}function Td(){return $.jsx("svg",{width:"16",height:"13",viewBox:"0 0 16 13",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:$.jsx("path",{d:"M14.4373 2.55366V5.21163H13.2678V3.332H12.4534V2.41123H11.4604V0H8.97894V1.94985H7.01906V0H4.53761V2.41123H3.54463V3.332H2.73019V5.21163H1.56068V2.55366H0V6.94885H0.850552V7.65697H1.7011V9.35807H3.96991V10.7222H2.48144V12.4774H4.4674V10.5978H6.52357V8.9669H9.47643V10.5978H11.5326V12.4774H13.5186V10.7222H12.0301V9.35807H14.2989V7.65697H15.1494V6.94885H16V2.55366H14.4393H14.4373ZM6.56971 7.12738H5.32798V5.001H6.56971V7.12738ZM10.668 7.12738H9.42628V5.001H10.668V7.12738Z",fill:"#FDFEFF"})})}function Rd(){return $.jsx("div",{className:"fixed bg-white w-[100dvh] p-0 h-[100dvh] flex items-center justify-center",children:$.jsxs("div",{className:"max-w-[893px] w-full border p-10 flex flex-col gap-5",children:[$.jsx(Ld,{}),$.jsxs("div",{className:"flex gap-2 flex-col max-w-[600px]",children:[$.jsx("h1",{className:"font-semibold text-3xl",children:"Experience the new ADE"}),$.jsx("h3",{className:"text-lg",children:"We have launched the next-generation Agent Development Environment (ADE) for interacting with agents both in the cloud and locally."}),$.jsx("p",{className:"mt-10",children:"The old Letta chat UI is no longer supported past Letta version 0.5.0. To use the old chat interface, please downgrade your Letta version."}),$.jsx("div",{className:"flex mt-3",children:$.jsxs("a",{href:"https://app.letta.com",className:"bg-black flex gap-3 items-center px-4 py-3 text-white text-bold",children:[$.jsx(Td,{}),"Open the new ADE"]})})]})]})})}const Md=nc(document.getElementById("root"));Md.render($.jsx($o.StrictMode,{children:$.jsx(Rd,{})})); diff --git a/letta/server/static_files/assets/index-56a3f8c6.css b/letta/server/static_files/assets/index-56a3f8c6.css deleted file mode 100644 index c8f2a7f16f..0000000000 --- a/letta/server/static_files/assets/index-56a3f8c6.css +++ /dev/null @@ -1 +0,0 @@ -*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}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,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;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{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-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,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}:root{--background: 210, 10%, 92%;--background-lighter: 0, 0%, 100%;--background-darker: 210, 6%, 86%;--foreground: 224 71.4% 4.1%;--card: 0 0% 100%;--card-foreground: 224 71.4% 4.1%;--popover: 0 0% 100%;--popover-foreground: 224 71.4% 4.1%;--primary: 220.9 39.3% 11%;--primary-foreground: 210 20% 98%;--secondary: 240, 92%, 35%;--secondary-foreground: 0, 0%, 100%;--muted: 220 14.3% 95.9%;--muted-foreground: 220 8.9% 46.1%;--accent: 220 14.3% 95.9%;--accent-foreground: 220.9 39.3% 11%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 210 20% 98%;--border: 210, 6%, 86%;--input: 210, 6%, 86%;--ring: 224 71.4% 4.1%;--radius: .5rem}.dark{--background: 224 71.4% 4.1%;--background-lighter: 224 71.4% 4.1%;--background-darker: 224 71.4% 4.1%;--foreground: 210 20% 98%;--card: 224 71.4% 4.1%;--card-foreground: 210 20% 98%;--popover: 224 71.4% 4.1%;--popover-foreground: 210 20% 98%;--primary: 210 20% 98%;--primary-foreground: 220.9 39.3% 11%;--secondary: 10, 100%, 60%;--secondary-foreground: 210 20% 98%;--muted: 215 27.9% 16.9%;--muted-foreground: 217.9 10.6% 64.9%;--accent: 215 27.9% 16.9%;--accent-foreground: 210 20% 98%;--destructive: 0 62.8% 30.6%;--destructive-foreground: 210 20% 98%;--border: 215 27.9% 16.9%;--input: 215 27.9% 16.9%;--ring: 216 12.2% 83.9%}*{border-color:hsl(var(--border))}html{height:100%}body{height:100%;width:100%;background-color:hsl(var(--background));color:hsl(var(--foreground));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}input::file-selector-button{color:hsl(var(--foreground))}*,:before,:after{--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: rgb(59 130 246 / .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: rgb(59 130 246 / .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: }.prose-sm{font-size:.875rem;line-height:1.7142857}.prose-sm :where(p):not(:where([class~="not-prose"],[class~="not-prose"] *)){margin-top:1.1428571em;margin-bottom:1.1428571em}.prose-sm :where([class~="lead"]):not(:where([class~="not-prose"],[class~="not-prose"] *)){font-size:1.2857143em;line-height:1.5555556;margin-top:.8888889em;margin-bottom:.8888889em}.prose-sm :where(blockquote):not(:where([class~="not-prose"],[class~="not-prose"] *)){margin-top:1.3333333em;margin-bottom:1.3333333em;padding-inline-start:1.1111111em}.prose-sm :where(h1):not(:where([class~="not-prose"],[class~="not-prose"] *)){font-size:2.1428571em;margin-top:0;margin-bottom:.8em;line-height:1.2}.prose-sm :where(h2):not(:where([class~="not-prose"],[class~="not-prose"] *)){font-size:1.4285714em;margin-top:1.6em;margin-bottom:.8em;line-height:1.4}.prose-sm :where(h3):not(:where([class~="not-prose"],[class~="not-prose"] *)){font-size:1.2857143em;margin-top:1.5555556em;margin-bottom:.4444444em;line-height:1.5555556}.prose-sm :where(h4):not(:where([class~="not-prose"],[class~="not-prose"] *)){margin-top:1.4285714em;margin-bottom:.5714286em;line-height:1.4285714}.prose-sm :where(img):not(:where([class~="not-prose"],[class~="not-prose"] *)){margin-top:1.7142857em;margin-bottom:1.7142857em}.prose-sm :where(picture):not(:where([class~="not-prose"],[class~="not-prose"] *)){margin-top:1.7142857em;margin-bottom:1.7142857em}.prose-sm :where(picture > img):not(:where([class~="not-prose"],[class~="not-prose"] *)){margin-top:0;margin-bottom:0}.prose-sm :where(video):not(:where([class~="not-prose"],[class~="not-prose"] *)){margin-top:1.7142857em;margin-bottom:1.7142857em}.prose-sm :where(kbd):not(:where([class~="not-prose"],[class~="not-prose"] *)){font-size:.8571429em;border-radius:.3125rem;padding-top:.1428571em;padding-inline-end:.3571429em;padding-bottom:.1428571em;padding-inline-start:.3571429em}.prose-sm :where(code):not(:where([class~="not-prose"],[class~="not-prose"] *)){font-size:.8571429em}.prose-sm :where(h2 code):not(:where([class~="not-prose"],[class~="not-prose"] *)){font-size:.9em}.prose-sm :where(h3 code):not(:where([class~="not-prose"],[class~="not-prose"] *)){font-size:.8888889em}.prose-sm :where(pre):not(:where([class~="not-prose"],[class~="not-prose"] *)){font-size:.8571429em;line-height:1.6666667;margin-top:1.6666667em;margin-bottom:1.6666667em;border-radius:.25rem;padding-top:.6666667em;padding-inline-end:1em;padding-bottom:.6666667em;padding-inline-start:1em}.prose-sm :where(ol):not(:where([class~="not-prose"],[class~="not-prose"] *)){margin-top:1.1428571em;margin-bottom:1.1428571em;padding-inline-start:1.5714286em}.prose-sm :where(ul):not(:where([class~="not-prose"],[class~="not-prose"] *)){margin-top:1.1428571em;margin-bottom:1.1428571em;padding-inline-start:1.5714286em}.prose-sm :where(li):not(:where([class~="not-prose"],[class~="not-prose"] *)){margin-top:.2857143em;margin-bottom:.2857143em}.prose-sm :where(ol > li):not(:where([class~="not-prose"],[class~="not-prose"] *)){padding-inline-start:.4285714em}.prose-sm :where(ul > li):not(:where([class~="not-prose"],[class~="not-prose"] *)){padding-inline-start:.4285714em}.prose-sm :where(.prose-sm > ul > li p):not(:where([class~="not-prose"],[class~="not-prose"] *)){margin-top:.5714286em;margin-bottom:.5714286em}.prose-sm :where(.prose-sm > ul > li > p:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm > ul > li > p:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)){margin-bottom:1.1428571em}.prose-sm :where(.prose-sm > ol > li > p:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm > ol > li > p:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)){margin-bottom:1.1428571em}.prose-sm :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~="not-prose"],[class~="not-prose"] *)){margin-top:.5714286em;margin-bottom:.5714286em}.prose-sm :where(dl):not(:where([class~="not-prose"],[class~="not-prose"] *)){margin-top:1.1428571em;margin-bottom:1.1428571em}.prose-sm :where(dt):not(:where([class~="not-prose"],[class~="not-prose"] *)){margin-top:1.1428571em}.prose-sm :where(dd):not(:where([class~="not-prose"],[class~="not-prose"] *)){margin-top:.2857143em;padding-inline-start:1.5714286em}.prose-sm :where(hr):not(:where([class~="not-prose"],[class~="not-prose"] *)){margin-top:2.8571429em;margin-bottom:2.8571429em}.prose-sm :where(hr + *):not(:where([class~="not-prose"],[class~="not-prose"] *)){margin-top:0}.prose-sm :where(h2 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)){margin-top:0}.prose-sm :where(h3 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)){margin-top:0}.prose-sm :where(h4 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)){margin-top:0}.prose-sm :where(table):not(:where([class~="not-prose"],[class~="not-prose"] *)){font-size:.8571429em;line-height:1.5}.prose-sm :where(thead th):not(:where([class~="not-prose"],[class~="not-prose"] *)){padding-inline-end:1em;padding-bottom:.6666667em;padding-inline-start:1em}.prose-sm :where(thead th:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)){padding-inline-start:0}.prose-sm :where(thead th:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)){padding-inline-end:0}.prose-sm :where(tbody td,tfoot td):not(:where([class~="not-prose"],[class~="not-prose"] *)){padding-top:.6666667em;padding-inline-end:1em;padding-bottom:.6666667em;padding-inline-start:1em}.prose-sm :where(tbody td:first-child,tfoot td:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)){padding-inline-start:0}.prose-sm :where(tbody td:last-child,tfoot td:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)){padding-inline-end:0}.prose-sm :where(figure):not(:where([class~="not-prose"],[class~="not-prose"] *)){margin-top:1.7142857em;margin-bottom:1.7142857em}.prose-sm :where(figure > *):not(:where([class~="not-prose"],[class~="not-prose"] *)){margin-top:0;margin-bottom:0}.prose-sm :where(figcaption):not(:where([class~="not-prose"],[class~="not-prose"] *)){font-size:.8571429em;line-height:1.3333333;margin-top:.6666667em}.prose-sm :where(.prose-sm > :first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)){margin-top:0}.prose-sm :where(.prose-sm > :last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)){margin-bottom:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.\!collapse{visibility:collapse!important}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0px}.bottom-0{bottom:0px}.bottom-2{bottom:.5rem}.left-2{left:.5rem}.left-3{left:.75rem}.left-\[12px\]{left:12px}.left-\[50\%\]{left:50%}.right-0{right:0px}.right-2{right:.5rem}.right-2\.5{right:.625rem}.right-3{right:.75rem}.right-4{right:1rem}.top-0{top:0px}.top-2{top:.5rem}.top-2\.5{top:.625rem}.top-3{top:.75rem}.top-4{top:1rem}.top-\[50\%\]{top:50%}.z-10{z-index:10}.z-50{z-index:50}.z-\[100\]{z-index:100}.order-2{order:2}.m-2{margin:.5rem}.m-2\.5{margin:.625rem}.\!my-4{margin-top:1rem!important;margin-bottom:1rem!important}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.\!-mt-4{margin-top:-1rem!important}.-ml-1{margin-left:-.25rem}.-ml-2{margin-left:-.5rem}.-ml-3{margin-left:-.75rem}.-mt-2{margin-top:-.5rem}.-mt-8{margin-top:-2rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-1\.5{margin-left:.375rem}.ml-2{margin-left:.5rem}.ml-4{margin-left:1rem}.ml-6{margin-left:1.5rem}.ml-8{margin-left:2rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-4{margin-right:1rem}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-px{margin-top:1px}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.\!table{display:table!important}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.aspect-square{aspect-ratio:1 / 1}.size-3{width:.75rem;height:.75rem}.size-3\.5{width:.875rem;height:.875rem}.size-4{width:1rem;height:1rem}.size-5{width:1.25rem;height:1.25rem}.size-6{width:1.5rem;height:1.5rem}.\!h-6{height:1.5rem!important}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.h-24{height:6rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[1px\]{height:1px}.h-\[24px\]{height:24px}.h-\[35px\]{height:35px}.h-\[56px\]{height:56px}.h-\[70px\]{height:70px}.h-\[78px\]{height:78px}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-full{height:100%}.h-px{height:1px}.max-h-\[200px\]{max-height:200px}.max-h-\[400px\]{max-height:400px}.max-h-\[95svh\]{max-height:95svh}.max-h-screen{max-height:100vh}.min-h-0{min-height:0px}.min-h-40{min-height:10rem}.min-h-8{min-height:2rem}.min-h-80{min-height:20rem}.min-h-96{min-height:24rem}.min-h-\[10rem\]{min-height:10rem}.min-h-\[60vh\]{min-height:60vh}.min-h-\[80px\]{min-height:80px}.\!w-6{width:1.5rem!important}.w-10{width:2.5rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-52{width:13rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-96{width:24rem}.w-\[100px\]{width:100px}.w-\[150px\]{width:150px}.w-\[1px\]{width:1px}.w-\[300px\]{width:300px}.w-\[340px\]{width:340px}.w-\[44px\]{width:44px}.w-\[70px\]{width:70px}.w-\[80px\]{width:80px}.w-\[95\%\]{width:95%}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-min{width:-moz-min-content;width:min-content}.w-px{width:1px}.min-w-\[50px\]{min-width:50px}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.max-w-80{max-width:20rem}.max-w-lg{max-width:32rem}.max-w-screen-lg{max-width:1024px}.max-w-xl{max-width:36rem}.flex-1{flex:1 1 0%}.flex-none{flex:none}.shrink-0{flex-shrink:0}.caption-bottom{caption-side:bottom}.origin-left{transform-origin:left}.translate-x-\[-50\%\]{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes ping{75%,to{transform:scale(2);opacity:0}}.animate-ping{animation:ping 1s cubic-bezier(0,0,.2,1) infinite}@keyframes progress{0%{transform:translate(0) scaleX(0)}40%{transform:translate(0) scaleX(.4)}to{transform:translate(100%) scaleX(.5)}}.animate-progress{animation:progress 1.5s infinite linear}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.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-none{resize:none}.scroll-m-20{scroll-margin:5rem}.scroll-pb-10{scroll-padding-bottom:2.5rem}.list-disc{list-style-type:disc}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-8{gap:2rem}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1.5rem * var(--tw-space-x-reverse));margin-left:calc(1.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-scroll{overflow-x:scroll}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-br-none{border-bottom-right-radius:0}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-b-0{border-bottom-width:0px}.border-b-\[1px\]{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-r-2{border-right-width:2px}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-destructive{border-color:hsl(var(--destructive))}.border-destructive\/50{border-color:hsl(var(--destructive) / .5)}.border-input{border-color:hsl(var(--input))}.border-muted{border-color:hsl(var(--muted))}.border-primary{border-color:hsl(var(--primary))}.border-transparent{border-color:transparent}.border-white{--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity))}.bg-\[\#ecedef\]{--tw-bg-opacity: 1;background-color:rgb(236 237 239 / var(--tw-bg-opacity))}.bg-accent{background-color:hsl(var(--accent))}.bg-background{background-color:hsl(var(--background))}.bg-background-darker{background-color:hsl(var(--background-darker))}.bg-background-lighter{background-color:hsl(var(--background-lighter))}.bg-background\/80{background-color:hsl(var(--background) / .8)}.bg-background\/95{background-color:hsl(var(--background) / .95)}.bg-blue-400{--tw-bg-opacity: 1;background-color:rgb(96 165 250 / var(--tw-bg-opacity))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-destructive{background-color:hsl(var(--destructive))}.bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity))}.bg-secondary{background-color:hsl(var(--secondary))}.bg-slate-950{--tw-bg-opacity: 1;background-color:rgb(2 6 23 / 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-zinc-800{--tw-bg-opacity: 1;background-color:rgb(39 39 42 / var(--tw-bg-opacity))}.bg-zinc-950{--tw-bg-opacity: 1;background-color:rgb(9 9 11 / var(--tw-bg-opacity))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-transparent{--tw-gradient-from: transparent var(--tw-gradient-from-position);--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.to-background{--tw-gradient-to: hsl(var(--background)) var(--tw-gradient-to-position)}.to-55\%{--tw-gradient-to-position: 55%}.fill-current{fill:currentColor}.\!p-1{padding:.25rem!important}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-10{padding:2.5rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-20{padding:5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-0{padding-left:0;padding-right:0}.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}.px-\[0\.3rem\]{padding-left:.3rem;padding-right:.3rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-\[0\.2rem\]{padding-top:.2rem;padding-bottom:.2rem}.pb-10{padding-bottom:2.5rem}.pb-16{padding-bottom:4rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-6{padding-bottom:1.5rem}.pl-10{padding-left:2.5rem}.pl-6{padding-left:1.5rem}.pl-7{padding-left:1.75rem}.pl-8{padding-left:2rem}.pl-9{padding-left:2.25rem}.pr-1{padding-right:.25rem}.pr-1\.5{padding-right:.375rem}.pr-10{padding-right:2.5rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pr-6{padding-right:1.5rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-2{padding-top:.5rem}.pt-2\.5{padding-top:.625rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-7{line-height:1.75rem}.leading-none{line-height:1}.tracking-tight{letter-spacing:-.025em}.tracking-widest{letter-spacing:.1em}.text-accent-foreground{color:hsl(var(--accent-foreground))}.text-background{color:hsl(var(--background))}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-current{color:currentColor}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-emerald-600{--tw-text-opacity: 1;color:rgb(5 150 105 / var(--tw-text-opacity))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\/50{color:hsl(var(--foreground) / .5)}.text-gray-100{--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/60{color:hsl(var(--muted-foreground) / .6)}.text-muted-foreground\/70{color:hsl(var(--muted-foreground) / .7)}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-zinc-100{--tw-text-opacity: 1;color:rgb(244 244 245 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.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)}.backdrop-blur{--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-700{transition-duration:.7s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity, 1);transform:translate3d(var(--tw-enter-translate-x, 0),var(--tw-enter-translate-y, 0),0) scale3d(var(--tw-enter-scale, 1),var(--tw-enter-scale, 1),var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity, 1);transform:translate3d(var(--tw-exit-translate-x, 0),var(--tw-exit-translate-y, 0),0) scale3d(var(--tw-exit-scale, 1),var(--tw-exit-scale, 1),var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0))}}.animate-in{animation-name:enter;animation-duration:.15s;--tw-enter-opacity: initial;--tw-enter-scale: initial;--tw-enter-rotate: initial;--tw-enter-translate-x: initial;--tw-enter-translate-y: initial}.fade-in-0{--tw-enter-opacity: 0}.zoom-in-95{--tw-enter-scale: .95}.slide-in-from-bottom-2{--tw-enter-translate-y: .5rem}.slide-in-from-top{--tw-enter-translate-y: -100%}.slide-out-to-top{--tw-exit-translate-y: -100%}.duration-200{animation-duration:.2s}.duration-300{animation-duration:.3s}.duration-700{animation-duration:.7s}.ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.running{animation-play-state:running}.PopoverContent{width:var(--radix-popover-trigger-width);max-height:var(--radix-popover-content-available-height)}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:inset-y-0:after{content:var(--tw-content);top:0px;bottom:0px}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:w-1:after{content:var(--tw-content);width:.25rem}.after\:-translate-x-1\/2:after{content:var(--tw-content);--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.first\:mt-0:first-child{margin-top:0}.hover\:border-accent:hover{border-color:hsl(var(--accent))}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-destructive\/80:hover{background-color:hsl(var(--destructive) / .8)}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive) / .9)}.hover\:bg-muted:hover{background-color:hsl(var(--muted))}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-primary\/80:hover{background-color:hsl(var(--primary) / .8)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-secondary:hover{background-color:hsl(var(--secondary))}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:bg-transparent:hover{background-color:transparent}.hover\:bg-zinc-800:hover{--tw-bg-opacity: 1;background-color:rgb(39 39 42 / var(--tw-bg-opacity))}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-background:hover{color:hsl(var(--background))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:opacity-100:focus{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-0:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-slate-700:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(51 65 85 / var(--tw-ring-opacity))}.focus-visible\:ring-offset-0:focus-visible{--tw-ring-offset-width: 0px}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width: 1px}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color: hsl(var(--background))}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:opacity-100{opacity:1}.group[data-collapsed=true] .group-\[\[data-collapsed\=true\]\]\:justify-center{justify-content:center}.group.destructive .group-\[\.destructive\]\:border-muted\/40{border-color:hsl(var(--muted) / .4)}.group[data-collapsed=true] .group-\[\[data-collapsed\=true\]\]\:px-2{padding-left:.5rem;padding-right:.5rem}.group.destructive .group-\[\.destructive\]\:text-red-300{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity))}.group.destructive .group-\[\.destructive\]\:hover\:border-destructive\/30:hover{border-color:hsl(var(--destructive) / .3)}.group.destructive .group-\[\.destructive\]\:hover\:bg-destructive:hover{background-color:hsl(var(--destructive))}.group.destructive .group-\[\.destructive\]\:hover\:text-destructive-foreground:hover{color:hsl(var(--destructive-foreground))}.group.destructive .group-\[\.destructive\]\:hover\:text-red-50:hover{--tw-text-opacity: 1;color:rgb(254 242 242 / var(--tw-text-opacity))}.group.destructive .group-\[\.destructive\]\:focus\:ring-destructive:focus{--tw-ring-color: hsl(var(--destructive))}.group.destructive .group-\[\.destructive\]\:focus\:ring-red-400:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(248 113 113 / var(--tw-ring-opacity))}.group.destructive .group-\[\.destructive\]\:focus\:ring-offset-red-600:focus{--tw-ring-offset-color: #dc2626}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.has-\[\:disabled\]\:opacity-50:has(:disabled){opacity:.5}.has-\[\:focus\]\:ring-2:has(:focus){--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.has-\[\:focus\]\:ring-ring:has(:focus){--tw-ring-color: hsl(var(--ring))}.has-\[\:focus\]\:ring-offset-2:has(:focus){--tw-ring-offset-width: 2px}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[panel-group-direction\=vertical\]\:h-px[data-panel-group-direction=vertical]{height:1px}.data-\[panel-group-direction\=vertical\]\:w-full[data-panel-group-direction=vertical]{width:100%}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=checked\]\:translate-x-5[data-state=checked]{--tw-translate-x: 1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked],.data-\[swipe\=cancel\]\:translate-x-0[data-swipe=cancel]{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=end\]\:translate-x-\[var\(--radix-toast-swipe-end-x\)\][data-swipe=end]{--tw-translate-x: var(--radix-toast-swipe-end-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=move\]\:translate-x-\[var\(--radix-toast-swipe-move-x\)\][data-swipe=move]{--tw-translate-x: var(--radix-toast-swipe-move-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[panel-group-direction\=vertical\]\:flex-col[data-panel-group-direction=vertical]{flex-direction:column}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:hsl(var(--input))}.data-\[collapsed\=true\]\:py-2[data-collapsed=true]{padding-top:.5rem;padding-bottom:.5rem}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[swipe\=move\]\:transition-none[data-swipe=move]{transition-property:none}.data-\[state\=open\]\:animate-in[data-state=open]{animation-name:enter;animation-duration:.15s;--tw-enter-opacity: initial;--tw-enter-scale: initial;--tw-enter-rotate: initial;--tw-enter-translate-x: initial;--tw-enter-translate-y: initial}.data-\[state\=closed\]\:animate-out[data-state=closed],.data-\[swipe\=end\]\:animate-out[data-swipe=end]{animation-name:exit;animation-duration:.15s;--tw-exit-opacity: initial;--tw-exit-scale: initial;--tw-exit-rotate: initial;--tw-exit-translate-x: initial;--tw-exit-translate-y: initial}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity: 0}.data-\[state\=closed\]\:fade-out-80[data-state=closed]{--tw-exit-opacity: .8}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity: 0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale: .95}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale: .95}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y: -.5rem}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x: .5rem}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x: -.5rem}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y: .5rem}.data-\[state\=closed\]\:slide-out-to-left-1\/2[data-state=closed]{--tw-exit-translate-x: -50%}.data-\[state\=closed\]\:slide-out-to-right-full[data-state=closed]{--tw-exit-translate-x: 100%}.data-\[state\=closed\]\:slide-out-to-top-\[48\%\][data-state=closed]{--tw-exit-translate-y: -48%}.data-\[state\=open\]\:slide-in-from-left-1\/2[data-state=open]{--tw-enter-translate-x: -50%}.data-\[state\=open\]\:slide-in-from-top-\[48\%\][data-state=open]{--tw-enter-translate-y: -48%}.data-\[state\=open\]\:slide-in-from-top-full[data-state=open]{--tw-enter-translate-y: -100%}.data-\[panel-group-direction\=vertical\]\:after\:left-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);left:0px}.data-\[panel-group-direction\=vertical\]\:after\:h-1[data-panel-group-direction=vertical]:after{content:var(--tw-content);height:.25rem}.data-\[panel-group-direction\=vertical\]\:after\:w-full[data-panel-group-direction=vertical]:after{content:var(--tw-content);width:100%}.data-\[panel-group-direction\=vertical\]\:after\:-translate-y-1\/2[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[panel-group-direction\=vertical\]\:after\:translate-x-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.prose-p\:m-0 :is(:where(p):not(:where([class~="not-prose"],[class~="not-prose"] *))){margin:0}.prose-p\:leading-relaxed :is(:where(p):not(:where([class~="not-prose"],[class~="not-prose"] *))){line-height:1.625}.prose-pre\:p-0 :is(:where(pre):not(:where([class~="not-prose"],[class~="not-prose"] *))){padding:0}.prose-li\:list-disc :is(:where(li):not(:where([class~="not-prose"],[class~="not-prose"] *))){list-style-type:disc}@supports ((-webkit-backdrop-filter: var(--tw)) or (backdrop-filter: var(--tw))){.supports-\[backdrop-filter\]\:bg-background\/60{background-color:hsl(var(--background) / .6)}}:is(.dark .dark\:border-destructive){border-color:hsl(var(--destructive))}:is(.dark .dark\:bg-muted){background-color:hsl(var(--muted))}:is(.dark .dark\:text-muted-foreground){color:hsl(var(--muted-foreground))}:is(.dark .dark\:text-white){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}:is(.dark .dark\:hover\:bg-muted:hover){background-color:hsl(var(--muted))}:is(.dark .dark\:hover\:text-white:hover){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}@media (min-width: 640px){.sm\:bottom-0{bottom:0px}.sm\:right-0{right:0px}.sm\:top-auto{top:auto}.sm\:mx-auto{margin-left:auto;margin-right:auto}.sm\:mt-0{margin-top:0}.sm\:w-\[500px\]{width:500px}.sm\:max-w-\[350px\]{max-width:350px}.sm\:max-w-\[800px\]{max-width:800px}.sm\:flex-row{flex-direction:row}.sm\:flex-col{flex-direction:column}.sm\:justify-end{justify-content:flex-end}.sm\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:text-left{text-align:left}.data-\[state\=open\]\:sm\:slide-in-from-bottom-full[data-state=open]{--tw-enter-translate-y: 100%}}@media (min-width: 768px){.md\:w-52{width:13rem}.md\:w-full{width:100%}.md\:max-w-\[420px\]{max-width:420px}}@media (min-width: 1024px){.lg\:flex{display:flex}.lg\:w-1\/5{width:20%}.lg\:w-80{width:20rem}.lg\:max-w-4xl{max-width:56rem}.lg\:flex-row{flex-direction:row}.lg\:flex-col{flex-direction:column}.lg\:space-x-0>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(0px * var(--tw-space-x-reverse));margin-left:calc(0px * calc(1 - var(--tw-space-x-reverse)))}.lg\:space-x-12>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(3rem * var(--tw-space-x-reverse));margin-left:calc(3rem * calc(1 - var(--tw-space-x-reverse)))}.lg\:space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(2rem * var(--tw-space-x-reverse));margin-left:calc(2rem * calc(1 - var(--tw-space-x-reverse)))}.lg\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.lg\:space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.lg\:text-5xl{font-size:3rem;line-height:1}}.\[\&\.active\]\:bg-muted.active,.\[\&\.active\]\:hover\:bg-muted:hover.active{background-color:hsl(var(--muted))}.\[\&\.active\]\:hover\:no-underline:hover.active{text-decoration-line:none}.\[\&\:has\(\[data-state\=checked\]\)\>div\]\:border-primary:has([data-state=checked])>div{border-color:hsl(var(--primary))}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\:not\(\:first-child\)\]\:mt-6:not(:first-child){margin-top:1.5rem}.\[\&\>li\]\:mt-2>li{margin-top:.5rem}.\[\&\>svg\+div\]\:translate-y-\[-3px\]>svg+div{--tw-translate-y: -3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>svg\]\:absolute>svg{position:absolute}.\[\&\>svg\]\:left-2\.5>svg{left:.625rem}.\[\&\>svg\]\:left-4>svg{left:1rem}.\[\&\>svg\]\:top-2\.5>svg{top:.625rem}.\[\&\>svg\]\:top-4>svg{top:1rem}.\[\&\>svg\]\:text-destructive>svg{color:hsl(var(--destructive))}.\[\&\>svg\]\:text-foreground>svg{color:hsl(var(--foreground))}.\[\&\>svg\~\*\]\:pl-7>svg~*{padding-left:1.75rem}.\[\&\[data-panel-group-direction\=vertical\]\>div\]\:rotate-90[data-panel-group-direction=vertical]>div{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&_p\]\:leading-relaxed p{line-height:1.625}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0px}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}code[class*=language-],pre[class*=language-]{color:#fff;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;text-shadow:0 -.1em .2em black;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}pre[class*=language-],:not(pre)>code[class*=language-]{background:hsl(0,0%,8%)}pre[class*=language-]{border-radius:.5em;border:.3em solid hsl(0,0%,33%);box-shadow:1px 1px .5em #000 inset;margin:.5em 0;overflow:auto;padding:1em}pre[class*=language-]::-moz-selection{background:hsl(200,4%,16%)}pre[class*=language-]::selection{background:hsl(200,4%,16%)}pre[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,code[class*=language-] ::-moz-selection{text-shadow:none;background:hsla(0,0%,93%,.15)}pre[class*=language-]::selection,pre[class*=language-] ::selection,code[class*=language-]::selection,code[class*=language-] ::selection{text-shadow:none;background:hsla(0,0%,93%,.15)}:not(pre)>code[class*=language-]{border-radius:.3em;border:.13em solid hsl(0,0%,33%);box-shadow:1px 1px .3em -.1em #000 inset;padding:.15em .2em .05em;white-space:normal}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:#787878}.token.punctuation,.token.namespace{opacity:.7}.token.tag,.token.boolean,.token.number,.token.deleted{color:#cf694a}.token.keyword,.token.property,.token.selector,.token.constant,.token.symbol,.token.builtin{color:#f9ee9a}.token.attr-name,.token.attr-value,.token.string,.token.char,.token.operator,.token.entity,.token.url,.language-css .token.string,.style .token.string,.token.variable,.token.inserted{color:#919e6b}.token.atrule{color:#7386a5}.token.regex,.token.important{color:#e9c163}.token.important,.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.language-markup .token.tag,.language-markup .token.attr-name,.language-markup .token.punctuation{color:#ad895c}.token{position:relative;z-index:1}.line-highlight.line-highlight{background:hsla(0,0%,33%,.25);background:linear-gradient(to right,hsla(0,0%,33%,.1) 70%,hsla(0,0%,33%,0));border-bottom:1px dashed hsl(0,0%,33%);border-top:1px dashed hsl(0,0%,33%);margin-top:.75em;z-index:0}.line-highlight.line-highlight:before,.line-highlight.line-highlight[data-end]:after{background-color:#8794a6;color:#f5f2f0} diff --git a/letta/server/static_files/index.html b/letta/server/static_files/index.html index a16f6d7b7f..003573298e 100644 --- a/letta/server/static_files/index.html +++ b/letta/server/static_files/index.html @@ -29,8 +29,8 @@ } } - - + +
From d2f60b804aaa78817448c359d0b826246f8790ff Mon Sep 17 00:00:00 2001 From: Shubham Naik Date: Sat, 7 Dec 2024 10:47:32 -0800 Subject: [PATCH 05/39] chore: drop ade flag (#2185) Co-authored-by: Shubham Naik --- letta/cli/cli.py | 1 - letta/server/rest_api/app.py | 5 ++--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/letta/cli/cli.py b/letta/cli/cli.py index 2e18dcb98b..e7f811e9f3 100644 --- a/letta/cli/cli.py +++ b/letta/cli/cli.py @@ -51,7 +51,6 @@ def server( port: Annotated[Optional[int], typer.Option(help="Port to run the server on")] = None, host: Annotated[Optional[str], typer.Option(help="Host to run the server on (default to localhost)")] = None, debug: Annotated[bool, typer.Option(help="Turn debugging output on")] = False, - ade: Annotated[bool, typer.Option(help="Allows remote access")] = False, secure: Annotated[bool, typer.Option(help="Adds simple security access")] = False, ): """Launch a Letta server process""" diff --git a/letta/server/rest_api/app.py b/letta/server/rest_api/app.py index ab2c340ef7..4db8323668 100644 --- a/letta/server/rest_api/app.py +++ b/letta/server/rest_api/app.py @@ -144,9 +144,8 @@ def create_application() -> "FastAPI": debug=True, ) - if (os.getenv("LETTA_SERVER_ADE") == "true") or "--ade" in sys.argv: - settings.cors_origins.append("https://app.letta.com") - print(f"▶ View using ADE at: https://app.letta.com/development-servers/local/dashboard") + settings.cors_origins.append("https://app.letta.com") + print(f"▶ View using ADE at: https://app.letta.com/development-servers/local/dashboard") if (os.getenv("LETTA_SERVER_SECURE") == "true") or "--secure" in sys.argv: print(f"▶ Using secure mode with password: {random_password}") From ccf15b3b8b6211ee86dfcf9663e4badf64fafef8 Mon Sep 17 00:00:00 2001 From: Sarah Wooders Date: Sat, 7 Dec 2024 11:50:18 -0800 Subject: [PATCH 06/39] feat: support system message for chatml wrapper (#2187) --- .../llm_chat_completion_wrappers/chatml.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/letta/local_llm/llm_chat_completion_wrappers/chatml.py b/letta/local_llm/llm_chat_completion_wrappers/chatml.py index 82155d955e..baa1592324 100644 --- a/letta/local_llm/llm_chat_completion_wrappers/chatml.py +++ b/letta/local_llm/llm_chat_completion_wrappers/chatml.py @@ -3,6 +3,7 @@ from letta.local_llm.llm_chat_completion_wrappers.wrapper_base import ( LLMChatCompletionWrapper, ) +from letta.schemas.enums import MessageRole from letta.utils import json_dumps, json_loads PREFIX_HINT = """# Reminders: @@ -208,7 +209,9 @@ def chat_completion_to_prompt(self, messages, functions, first_message=False, fu # Last are the user/assistant messages for message in messages[1:]: - assert message["role"] in ["user", "assistant", "function", "tool"], message + # check that message["role"] is a valid option for MessageRole + # TODO: this shouldn't be necessary if we use pydantic in the future + assert message["role"] in [role.value for role in MessageRole] if message["role"] == "user": # Support for AutoGen naming of agents @@ -231,6 +234,15 @@ def chat_completion_to_prompt(self, messages, functions, first_message=False, fu prompt += f"\n<|im_start|>{role_str}\n{msg_str.strip()}<|im_end|>" + elif message["role"] == "system": + + role_str = "system" + msg_str = self._compile_system_message( + system_message=message["content"], functions=functions, function_documentation=function_documentation + ) + + prompt += f"\n<|im_start|>{role_str}\n{msg_str.strip()}<|im_end|>" + elif message["role"] in ["tool", "function"]: if self.allow_function_role: role_str = message["role"] From 14d1009d15d74908fa089380b544a7c4db8a9f16 Mon Sep 17 00:00:00 2001 From: Matthew Zhou Date: Sat, 7 Dec 2024 12:18:17 -0800 Subject: [PATCH 07/39] fix: Fix composio tool add (#2188) --- examples/composio_tool_usage.py | 15 ++++++++++ letta/client/client.py | 2 +- letta/functions/helpers.py | 6 ++-- letta/schemas/tool.py | 23 ++++++++------ letta/server/rest_api/routers/v1/tools.py | 30 ++++++++++++++++--- letta/server/server.py | 21 +++++++------ letta/services/sandbox_config_manager.py | 15 ++++++++++ letta/services/tool_manager.py | 4 +-- ...integration_test_tool_execution_sandbox.py | 3 +- tests/test_v1_routes.py | 20 +++++++++++-- 10 files changed, 106 insertions(+), 33 deletions(-) diff --git a/examples/composio_tool_usage.py b/examples/composio_tool_usage.py index 26508fcdf1..877d375456 100644 --- a/examples/composio_tool_usage.py +++ b/examples/composio_tool_usage.py @@ -1,10 +1,14 @@ import json +import os import uuid from letta import create_client from letta.schemas.embedding_config import EmbeddingConfig from letta.schemas.llm_config import LLMConfig from letta.schemas.memory import ChatMemory +from letta.schemas.sandbox_config import SandboxEnvironmentVariableCreate, SandboxType +from letta.services.sandbox_config_manager import SandboxConfigManager +from letta.settings import tool_settings """ Setup here. @@ -25,6 +29,17 @@ print(f"Deleted agent: {agent_state.name} with ID {str(agent_state.id)}") +# Add sandbox env +manager = SandboxConfigManager(tool_settings) +# Ensure you have e2b key set +sandbox_config = manager.get_or_create_default_sandbox_config(sandbox_type=SandboxType.E2B, actor=client.user) +manager.create_sandbox_env_var( + SandboxEnvironmentVariableCreate(key="COMPOSIO_API_KEY", value=os.environ.get("COMPOSIO_API_KEY")), + sandbox_config_id=sandbox_config.id, + actor=client.user, +) + + """ This example show how you can add Composio tools . diff --git a/letta/client/client.py b/letta/client/client.py index 485ce30050..b56bc19f6d 100644 --- a/letta/client/client.py +++ b/letta/client/client.py @@ -2683,7 +2683,7 @@ def load_crewai_tool(self, crewai_tool: "CrewAIBaseTool", additional_imports_mod return self.server.tool_manager.create_or_update_tool(pydantic_tool=Tool(**tool_create.model_dump()), actor=self.user) def load_composio_tool(self, action: "ActionType") -> Tool: - tool_create = ToolCreate.from_composio(action=action) + tool_create = ToolCreate.from_composio(action_name=action.name) return self.server.tool_manager.create_or_update_tool(pydantic_tool=Tool(**tool_create.model_dump()), actor=self.user) def create_tool( diff --git a/letta/functions/helpers.py b/letta/functions/helpers.py index d94eb7da7d..d58efc4633 100644 --- a/letta/functions/helpers.py +++ b/letta/functions/helpers.py @@ -4,12 +4,12 @@ from pydantic import BaseModel -def generate_composio_tool_wrapper(action: "ActionType") -> tuple[str, str]: +def generate_composio_tool_wrapper(action_name: str) -> tuple[str, str]: # Instantiate the object - tool_instantiation_str = f"composio_toolset.get_tools(actions=[Action.{str(action)}])[0]" + tool_instantiation_str = f"composio_toolset.get_tools(actions=['{action_name}'])[0]" # Generate func name - func_name = action.name.lower() + func_name = action_name.lower() wrapper_function_str = f""" def {func_name}(**kwargs): diff --git a/letta/schemas/tool.py b/letta/schemas/tool.py index ba84455186..f02cf1fd3a 100644 --- a/letta/schemas/tool.py +++ b/letta/schemas/tool.py @@ -93,7 +93,7 @@ class ToolCreate(LettaBase): ) @classmethod - def from_composio(cls, action: "ActionType") -> "ToolCreate": + def from_composio(cls, action_name: str, api_key: Optional[str] = None) -> "ToolCreate": """ Class method to create an instance of Letta-compatible Composio Tool. Check https://docs.composio.dev/introduction/intro/overview to look at options for from_composio @@ -101,15 +101,20 @@ def from_composio(cls, action: "ActionType") -> "ToolCreate": This function will error if we find more than one tool, or 0 tools. Args: - action ActionType: A action name to filter tools by. + action_name str: A action name to filter tools by. Returns: Tool: A Letta Tool initialized with attributes derived from the Composio tool. """ from composio import LogLevel from composio_langchain import ComposioToolSet - composio_toolset = ComposioToolSet(logging_level=LogLevel.ERROR) - composio_tools = composio_toolset.get_tools(actions=[action]) + if api_key: + # Pass in an external API key + composio_toolset = ComposioToolSet(logging_level=LogLevel.ERROR, api_key=api_key) + else: + # Use environmental variable + composio_toolset = ComposioToolSet(logging_level=LogLevel.ERROR) + composio_tools = composio_toolset.get_tools(actions=[action_name]) assert len(composio_tools) > 0, "User supplied parameters do not match any Composio tools" assert len(composio_tools) == 1, f"User supplied parameters match too many Composio tools; {len(composio_tools)} > 1" @@ -119,7 +124,7 @@ def from_composio(cls, action: "ActionType") -> "ToolCreate": description = composio_tool.description source_type = "python" tags = ["composio"] - wrapper_func_name, wrapper_function_str = generate_composio_tool_wrapper(action) + wrapper_func_name, wrapper_function_str = generate_composio_tool_wrapper(action_name) json_schema = generate_schema_from_args_schema_v2(composio_tool.args_schema, name=wrapper_func_name, description=description) return cls( @@ -179,10 +184,10 @@ def load_default_langchain_tools(cls) -> List["ToolCreate"]: def load_default_composio_tools(cls) -> List["ToolCreate"]: from composio_langchain import Action - calculator = ToolCreate.from_composio(action=Action.MATHEMATICAL_CALCULATOR) - serp_news = ToolCreate.from_composio(action=Action.SERPAPI_NEWS_SEARCH) - serp_google_search = ToolCreate.from_composio(action=Action.SERPAPI_SEARCH) - serp_google_maps = ToolCreate.from_composio(action=Action.SERPAPI_GOOGLE_MAPS_SEARCH) + calculator = ToolCreate.from_composio(action_name=Action.MATHEMATICAL_CALCULATOR.name) + serp_news = ToolCreate.from_composio(action_name=Action.SERPAPI_NEWS_SEARCH.name) + serp_google_search = ToolCreate.from_composio(action_name=Action.SERPAPI_SEARCH.name) + serp_google_maps = ToolCreate.from_composio(action_name=Action.SERPAPI_GOOGLE_MAPS_SEARCH.name) return [calculator, serp_news, serp_google_search, serp_google_maps] diff --git a/letta/server/rest_api/routers/v1/tools.py b/letta/server/rest_api/routers/v1/tools.py index c9b60f7855..1b5e2eac8c 100644 --- a/letta/server/rest_api/routers/v1/tools.py +++ b/letta/server/rest_api/routers/v1/tools.py @@ -7,6 +7,7 @@ from letta.orm.errors import UniqueConstraintViolationError from letta.schemas.letta_message import FunctionReturn from letta.schemas.tool import Tool, ToolCreate, ToolRunFromSource, ToolUpdate +from letta.schemas.user import User from letta.server.rest_api.utils import get_letta_server from letta.server.server import SyncServer @@ -213,22 +214,27 @@ def run_tool_from_source( @router.get("/composio/apps", response_model=List[AppModel], operation_id="list_composio_apps") -def list_composio_apps(server: SyncServer = Depends(get_letta_server)): +def list_composio_apps(server: SyncServer = Depends(get_letta_server), user_id: Optional[str] = Header(None, alias="user_id")): """ Get a list of all Composio apps """ - return server.get_composio_apps() + actor = server.get_user_or_default(user_id=user_id) + composio_api_key = get_composio_key(server, actor=actor) + return server.get_composio_apps(api_key=composio_api_key) @router.get("/composio/apps/{composio_app_name}/actions", response_model=List[ActionModel], operation_id="list_composio_actions_by_app") def list_composio_actions_by_app( composio_app_name: str, server: SyncServer = Depends(get_letta_server), + user_id: Optional[str] = Header(None, alias="user_id"), ): """ Get a list of all Composio actions for a specific app """ - return server.get_composio_actions_from_app_name(composio_app_name=composio_app_name) + actor = server.get_user_or_default(user_id=user_id) + composio_api_key = get_composio_key(server, actor=actor) + return server.get_composio_actions_from_app_name(composio_app_name=composio_app_name, api_key=composio_api_key) @router.post("/composio/{composio_action_name}", response_model=Tool, operation_id="add_composio_tool") @@ -241,5 +247,21 @@ def add_composio_tool( Add a new Composio tool by action name (Composio refers to each tool as an `Action`) """ actor = server.get_user_or_default(user_id=user_id) - tool_create = ToolCreate.from_composio(action=composio_action_name) + composio_api_key = get_composio_key(server, actor=actor) + tool_create = ToolCreate.from_composio(action_name=composio_action_name, api_key=composio_api_key) return server.tool_manager.create_or_update_tool(pydantic_tool=Tool(**tool_create.model_dump()), actor=actor) + + +# TODO: Factor this out to somewhere else +def get_composio_key(server: SyncServer, actor: User): + api_keys = server.sandbox_config_manager.list_sandbox_env_vars_by_key(key="COMPOSIO_API_KEY", actor=actor) + if not api_keys: + raise HTTPException( + status_code=400, # Bad Request + detail=f"No API keys found for Composio. Please add your Composio API Key as an environment variable for your sandbox configuration.", + ) + + # TODO: Add more protections around this + # Ideally, not tied to a specific sandbox, but for now we just get the first one + # Theoretically possible for someone to have different composio api keys per sandbox + return api_keys[0].value diff --git a/letta/server/server.py b/letta/server/server.py index 7a430862e4..fa3d29fa21 100644 --- a/letta/server/server.py +++ b/letta/server/server.py @@ -236,11 +236,6 @@ def __init__( # Locks self.send_message_lock = Lock() - # Composio - self.composio_client = None - if tool_settings.composio_api_key: - self.composio_client = Composio(api_key=tool_settings.composio_api_key) - # Initialize the metadata store config = LettaConfig.load() if settings.letta_pg_uri_no_default: @@ -1899,9 +1894,17 @@ def run_tool_from_source( ) # Composio wrappers - def get_composio_apps(self) -> List["AppModel"]: + def get_composio_client(self, api_key: Optional[str] = None): + if api_key: + return Composio(api_key=api_key) + elif tool_settings.composio_api_key: + return Composio(api_key=tool_settings.composio_api_key) + else: + return Composio() + + def get_composio_apps(self, api_key: Optional[str] = None) -> List["AppModel"]: """Get a list of all Composio apps with actions""" - apps = self.composio_client.apps.get() + apps = self.get_composio_client(api_key=api_key).apps.get() apps_with_actions = [] for app in apps: # A bit of hacky logic until composio patches this @@ -1910,6 +1913,6 @@ def get_composio_apps(self) -> List["AppModel"]: return apps_with_actions - def get_composio_actions_from_app_name(self, composio_app_name: str) -> List["ActionModel"]: - actions = self.composio_client.actions.get(apps=[composio_app_name]) + def get_composio_actions_from_app_name(self, composio_app_name: str, api_key: Optional[str] = None) -> List["ActionModel"]: + actions = self.get_composio_client(api_key=api_key).actions.get(apps=[composio_app_name]) return actions diff --git a/letta/services/sandbox_config_manager.py b/letta/services/sandbox_config_manager.py index 48e53f9f5d..05b669d82c 100644 --- a/letta/services/sandbox_config_manager.py +++ b/letta/services/sandbox_config_manager.py @@ -225,6 +225,21 @@ def list_sandbox_env_vars( ) return [env_var.to_pydantic() for env_var in env_vars] + @enforce_types + def list_sandbox_env_vars_by_key( + self, key: str, actor: PydanticUser, cursor: Optional[str] = None, limit: Optional[int] = 50 + ) -> List[PydanticEnvVar]: + """List all sandbox environment variables with optional pagination.""" + with self.session_maker() as session: + env_vars = SandboxEnvVarModel.list( + db_session=session, + cursor=cursor, + limit=limit, + organization_id=actor.organization_id, + key=key, + ) + return [env_var.to_pydantic() for env_var in env_vars] + @enforce_types def get_sandbox_env_vars_as_dict( self, sandbox_config_id: str, actor: PydanticUser, cursor: Optional[str] = None, limit: Optional[int] = 50 diff --git a/letta/services/tool_manager.py b/letta/services/tool_manager.py index 6e1818e3ba..63240930fe 100644 --- a/letta/services/tool_manager.py +++ b/letta/services/tool_manager.py @@ -40,8 +40,6 @@ def create_or_update_tool(self, pydantic_tool: PydanticTool, actor: PydanticUser if tool: # Put to dict and remove fields that should not be reset update_data = pydantic_tool.model_dump(exclude={"module"}, exclude_unset=True, exclude_none=True) - # Remove redundant update fields - update_data = {key: value for key, value in update_data.items() if getattr(tool, key) != value} # If there's anything to update if update_data: @@ -108,7 +106,7 @@ def update_tool_by_id(self, tool_id: str, tool_update: ToolUpdate, actor: Pydant tool = ToolModel.read(db_session=session, identifier=tool_id, actor=actor) # Update tool attributes with only the fields that were explicitly set - update_data = tool_update.model_dump(exclude_unset=True, exclude_none=True) + update_data = tool_update.model_dump(exclude_none=True) for key, value in update_data.items(): setattr(tool, key, value) diff --git a/tests/integration_test_tool_execution_sandbox.py b/tests/integration_test_tool_execution_sandbox.py index 0574e43cae..e13275b21a 100644 --- a/tests/integration_test_tool_execution_sandbox.py +++ b/tests/integration_test_tool_execution_sandbox.py @@ -5,7 +5,6 @@ from unittest.mock import patch import pytest -from composio import Action from sqlalchemy import delete from letta import create_client @@ -200,7 +199,7 @@ def create_list(): @pytest.fixture def composio_github_star_tool(test_user): tool_manager = ToolManager() - tool_create = ToolCreate.from_composio(action=Action.GITHUB_STAR_A_REPOSITORY_FOR_THE_AUTHENTICATED_USER) + tool_create = ToolCreate.from_composio(action_name="GITHUB_STAR_A_REPOSITORY_FOR_THE_AUTHENTICATED_USER") tool = tool_manager.create_or_update_tool(pydantic_tool=Tool(**tool_create.model_dump()), actor=test_user) yield tool diff --git a/tests/test_v1_routes.py b/tests/test_v1_routes.py index 883395e1bd..8f9d9972fe 100644 --- a/tests/test_v1_routes.py +++ b/tests/test_v1_routes.py @@ -162,6 +162,16 @@ def composio_actions(): ] +def configure_mock_sync_server(mock_sync_server): + # Mock sandbox config manager to return a valid API key + mock_api_key = Mock() + mock_api_key.value = "mock_composio_api_key" + mock_sync_server.sandbox_config_manager.list_sandbox_env_vars_by_key.return_value = [mock_api_key] + + # Mock user retrieval + mock_sync_server.get_user_or_default.return_value = Mock() # Provide additional attributes if needed + + # ====================================================================================================================== # Tools Routes Tests # ====================================================================================================================== @@ -274,6 +284,8 @@ def test_add_base_tools(client, mock_sync_server, add_integers_tool): def test_list_composio_apps(client, mock_sync_server, composio_apps): + configure_mock_sync_server(mock_sync_server) + mock_sync_server.get_composio_apps.return_value = composio_apps response = client.get("/v1/tools/composio/apps") @@ -284,16 +296,20 @@ def test_list_composio_apps(client, mock_sync_server, composio_apps): def test_list_composio_actions_by_app(client, mock_sync_server, composio_actions): + configure_mock_sync_server(mock_sync_server) + mock_sync_server.get_composio_actions_from_app_name.return_value = composio_actions response = client.get("/v1/tools/composio/apps/App1/actions") assert response.status_code == 200 assert len(response.json()) == 1 - mock_sync_server.get_composio_actions_from_app_name.assert_called_once_with(composio_app_name="App1") + mock_sync_server.get_composio_actions_from_app_name.assert_called_once_with(composio_app_name="App1", api_key="mock_composio_api_key") def test_add_composio_tool(client, mock_sync_server, add_integers_tool): + configure_mock_sync_server(mock_sync_server) + # Mock ToolCreate.from_composio to return the expected ToolCreate object with patch("letta.schemas.tool.ToolCreate.from_composio") as mock_from_composio: mock_from_composio.return_value = ToolCreate( @@ -314,4 +330,4 @@ def test_add_composio_tool(client, mock_sync_server, add_integers_tool): mock_sync_server.tool_manager.create_or_update_tool.assert_called_once() # Verify the mocked from_composio method was called - mock_from_composio.assert_called_once_with(action=add_integers_tool.name) + mock_from_composio.assert_called_once_with(action_name=add_integers_tool.name, api_key="mock_composio_api_key") From 3ee3793a4f85dd84a886019e3246a551e7914d31 Mon Sep 17 00:00:00 2001 From: Charles Packer Date: Sat, 7 Dec 2024 12:52:51 -0800 Subject: [PATCH 08/39] fix: temp disable stream tokens (#2189) --- .persist/.gitkeep | 0 letta/server/rest_api/routers/v1/agents.py | 2 ++ letta/server/rest_api/utils.py | 4 +++- letta/services/sandbox_config_manager.py | 2 +- 4 files changed, 6 insertions(+), 2 deletions(-) delete mode 100644 .persist/.gitkeep diff --git a/.persist/.gitkeep b/.persist/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/letta/server/rest_api/routers/v1/agents.py b/letta/server/rest_api/routers/v1/agents.py index 20661ef9b7..ebf10b7cdd 100644 --- a/letta/server/rest_api/routers/v1/agents.py +++ b/letta/server/rest_api/routers/v1/agents.py @@ -486,6 +486,8 @@ async def send_message_streaming( This endpoint accepts a message from a user and processes it through the agent. It will stream the steps of the response always, and stream the tokens if 'stream_tokens' is set to True. """ + request.stream_tokens = False + actor = server.get_user_or_default(user_id=user_id) result = await send_message_to_agent( server=server, diff --git a/letta/server/rest_api/utils.py b/letta/server/rest_api/utils.py index 4fd92b5aad..a87400dc27 100644 --- a/letta/server/rest_api/utils.py +++ b/letta/server/rest_api/utils.py @@ -1,6 +1,5 @@ import asyncio import json -import traceback import warnings from enum import Enum from typing import AsyncGenerator, Optional, Union @@ -62,6 +61,9 @@ async def sse_async_generator( raise ValueError(f"Expected LettaUsageStatistics, got {type(usage)}") yield sse_formatter({"usage": usage.model_dump()}) except Exception as e: + import traceback + + traceback.print_exc() warnings.warn(f"Error getting usage data: {e}") yield sse_formatter({"error": "Failed to get usage data"}) diff --git a/letta/services/sandbox_config_manager.py b/letta/services/sandbox_config_manager.py index 05b669d82c..c91e6669f1 100644 --- a/letta/services/sandbox_config_manager.py +++ b/letta/services/sandbox_config_manager.py @@ -33,7 +33,7 @@ def __init__(self, settings): def get_or_create_default_sandbox_config(self, sandbox_type: SandboxType, actor: PydanticUser) -> PydanticSandboxConfig: sandbox_config = self.get_sandbox_config_by_type(sandbox_type, actor=actor) if not sandbox_config: - logger.info(f"Creating new sandbox config of type {sandbox_type}, none found for organization {actor.organization_id}.") + logger.debug(f"Creating new sandbox config of type {sandbox_type}, none found for organization {actor.organization_id}.") # TODO: Add more sandbox types later if sandbox_type == SandboxType.E2B: From ee0ab8d7d6777934cc8330d8ee9a765b2b8c2ec8 Mon Sep 17 00:00:00 2001 From: Matthew Zhou Date: Sat, 7 Dec 2024 13:11:46 -0800 Subject: [PATCH 09/39] fix: Patch dummy message and fix test (#2192) --- letta/client/client.py | 4 +++- letta/llm_api/openai.py | 1 - letta/schemas/tool.py | 14 ++++++++------ tests/helpers/endpoints_helper.py | 3 +-- tests/test_client_legacy.py | 15 ++++++++++++--- 5 files changed, 24 insertions(+), 13 deletions(-) diff --git a/letta/client/client.py b/letta/client/client.py index b56bc19f6d..eaf477e935 100644 --- a/letta/client/client.py +++ b/letta/client/client.py @@ -22,7 +22,7 @@ from letta.schemas.enums import JobStatus, MessageRole from letta.schemas.file import FileMetadata from letta.schemas.job import Job -from letta.schemas.letta_request import LettaRequest +from letta.schemas.letta_request import LettaRequest, LettaStreamingRequest from letta.schemas.letta_response import LettaResponse, LettaStreamingResponse from letta.schemas.llm_config import LLMConfig from letta.schemas.memory import ( @@ -965,8 +965,10 @@ def send_message( if stream_tokens or stream_steps: from letta.client.streaming import _sse_post + request = LettaStreamingRequest(messages=messages, stream_tokens=stream_tokens) return _sse_post(f"{self.base_url}/{self.api_prefix}/agents/{agent_id}/messages/stream", request.model_dump(), self.headers) else: + request = LettaRequest(messages=messages) response = requests.post( f"{self.base_url}/{self.api_prefix}/agents/{agent_id}/messages", json=request.model_dump(), headers=self.headers ) diff --git a/letta/llm_api/openai.py b/letta/llm_api/openai.py index e83e855b90..813ae68d59 100644 --- a/letta/llm_api/openai.py +++ b/letta/llm_api/openai.py @@ -217,7 +217,6 @@ def openai_chat_completions_process_stream( dummy_message = _Message( role=_MessageRole.assistant, text="", - user_id="", agent_id="", model="", name=None, diff --git a/letta/schemas/tool.py b/letta/schemas/tool.py index f02cf1fd3a..ed31f9d687 100644 --- a/letta/schemas/tool.py +++ b/letta/schemas/tool.py @@ -182,14 +182,16 @@ def load_default_langchain_tools(cls) -> List["ToolCreate"]: @classmethod def load_default_composio_tools(cls) -> List["ToolCreate"]: - from composio_langchain import Action + pass - calculator = ToolCreate.from_composio(action_name=Action.MATHEMATICAL_CALCULATOR.name) - serp_news = ToolCreate.from_composio(action_name=Action.SERPAPI_NEWS_SEARCH.name) - serp_google_search = ToolCreate.from_composio(action_name=Action.SERPAPI_SEARCH.name) - serp_google_maps = ToolCreate.from_composio(action_name=Action.SERPAPI_GOOGLE_MAPS_SEARCH.name) + # TODO: Disable composio tools for now + # TODO: Naming is causing issues + # calculator = ToolCreate.from_composio(action_name=Action.MATHEMATICAL_CALCULATOR.name) + # serp_news = ToolCreate.from_composio(action_name=Action.SERPAPI_NEWS_SEARCH.name) + # serp_google_search = ToolCreate.from_composio(action_name=Action.SERPAPI_SEARCH.name) + # serp_google_maps = ToolCreate.from_composio(action_name=Action.SERPAPI_GOOGLE_MAPS_SEARCH.name) - return [calculator, serp_news, serp_google_search, serp_google_maps] + return [] class ToolUpdate(LettaBase): diff --git a/tests/helpers/endpoints_helper.py b/tests/helpers/endpoints_helper.py index 27c45de786..47424572a1 100644 --- a/tests/helpers/endpoints_helper.py +++ b/tests/helpers/endpoints_helper.py @@ -170,8 +170,7 @@ def check_agent_uses_external_tool(filename: str) -> LettaResponse: # Set up client client = create_client() cleanup(client=client, agent_uuid=agent_uuid) - # tool = client.load_composio_tool(action=Action.GITHUB_STAR_A_REPOSITORY_FOR_THE_AUTHENTICATED_USER) - tool = client.load_composio_tool(action=Action.WEBTOOL_SCRAPE_WEBSITE_CONTENT) + tool = client.load_composio_tool(action=Action.GITHUB_STAR_A_REPOSITORY_FOR_THE_AUTHENTICATED_USER) tool_name = tool.name # Set up persona for tool usage diff --git a/tests/test_client_legacy.py b/tests/test_client_legacy.py index b5bad0d869..ce93457bb7 100644 --- a/tests/test_client_legacy.py +++ b/tests/test_client_legacy.py @@ -81,7 +81,7 @@ def client(request): # use local client (no server) client = create_client() - client.set_default_llm_config(LLMConfig.default_config("gpt-4")) + client.set_default_llm_config(LLMConfig.default_config("gpt-4o-mini")) client.set_default_embedding_config(EmbeddingConfig.default_config(provider="openai")) yield client @@ -223,7 +223,8 @@ def test_core_memory(mock_e2b_api_key_none, client: Union[LocalClient, RESTClien assert "Timber" in memory.get_block("human").value, f"Updating core memory failed: {memory.get_block('human').value}" -def test_streaming_send_message(mock_e2b_api_key_none, client: Union[LocalClient, RESTClient], agent: AgentState): +@pytest.mark.parametrize("stream_tokens", [True, False]) +def test_streaming_send_message(mock_e2b_api_key_none, client: RESTClient, agent: AgentState, stream_tokens): if isinstance(client, LocalClient): pytest.skip("Skipping test_streaming_send_message because LocalClient does not support streaming") assert isinstance(client, RESTClient), client @@ -236,12 +237,13 @@ def test_streaming_send_message(mock_e2b_api_key_none, client: Union[LocalClient message="This is a test. Repeat after me: 'banana'", role="user", stream_steps=True, - stream_tokens=True, + stream_tokens=stream_tokens, ) # Some manual checks to run # 1. Check that there were inner thoughts inner_thoughts_exist = False + inner_thoughts_count = 0 # 2. Check that the agent runs `send_message` send_message_ran = False # 3. Check that we get all the start/stop/end tokens we want @@ -256,6 +258,7 @@ def test_streaming_send_message(mock_e2b_api_key_none, client: Union[LocalClient assert isinstance(chunk, LettaStreamingResponse) if isinstance(chunk, InternalMonologue) and chunk.internal_monologue and chunk.internal_monologue != "": inner_thoughts_exist = True + inner_thoughts_count += 1 if isinstance(chunk, FunctionCallMessage) and chunk.function_call and chunk.function_call.name == "send_message": send_message_ran = True if isinstance(chunk, MessageStreamStatus): @@ -275,6 +278,12 @@ def test_streaming_send_message(mock_e2b_api_key_none, client: Union[LocalClient assert chunk.prompt_tokens > 1000 assert chunk.total_tokens > 1000 + # If stream tokens, we expect at least one inner thought + if stream_tokens: + assert inner_thoughts_count > 1, "Expected more than one inner thought" + else: + assert inner_thoughts_count == 1, "Expected one inner thought" + assert inner_thoughts_exist, "No inner thoughts found" assert send_message_ran, "send_message function call not found" assert done, "Message stream not done" From 9b339efaec0f63ce396ded82eec59004f57a53a0 Mon Sep 17 00:00:00 2001 From: Matthew Zhou Date: Sat, 7 Dec 2024 14:09:20 -0800 Subject: [PATCH 10/39] fix: Updating messages (#2186) --- ...7a33843feb_migrate_messages_to_the_orm.py} | 14 +++-- letta/agent.py | 51 +++++-------------- letta/client/client.py | 9 ++-- letta/orm/message.py | 4 +- letta/schemas/message.py | 10 ++-- letta/server/rest_api/routers/v1/agents.py | 7 ++- letta/server/server.py | 6 +-- letta/services/message_manager.py | 32 ++++++++---- tests/test_client_legacy.py | 6 +-- tests/test_managers.py | 10 ++-- 10 files changed, 65 insertions(+), 84 deletions(-) rename alembic/versions/{95badb46fdf9_migrate_message_to_orm.py => d27a33843feb_migrate_messages_to_the_orm.py} (87%) diff --git a/alembic/versions/95badb46fdf9_migrate_message_to_orm.py b/alembic/versions/d27a33843feb_migrate_messages_to_the_orm.py similarity index 87% rename from alembic/versions/95badb46fdf9_migrate_message_to_orm.py rename to alembic/versions/d27a33843feb_migrate_messages_to_the_orm.py index 73254e39ea..575bd25bd7 100644 --- a/alembic/versions/95badb46fdf9_migrate_message_to_orm.py +++ b/alembic/versions/d27a33843feb_migrate_messages_to_the_orm.py @@ -1,8 +1,8 @@ -"""Migrate message to orm +"""Migrate messages to the orm -Revision ID: 95badb46fdf9 -Revises: 3c683a662c82 -Create Date: 2024-12-05 14:02:04.163150 +Revision ID: d27a33843feb +Revises: 08b2f8225812 +Create Date: 2024-12-07 13:52:20.591898 """ @@ -14,7 +14,7 @@ from alembic import op # revision identifiers, used by Alembic. -revision: str = "95badb46fdf9" +revision: str = "d27a33843feb" down_revision: Union[str, None] = "08b2f8225812" branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None @@ -39,10 +39,9 @@ def upgrade() -> None: ) op.alter_column("messages", "organization_id", nullable=False) op.alter_column("messages", "tool_calls", existing_type=postgresql.JSON(astext_type=sa.Text()), nullable=False) - op.alter_column("messages", "created_at", existing_type=postgresql.TIMESTAMP(timezone=True), nullable=False) op.drop_index("message_idx_user", table_name="messages") - op.create_foreign_key(None, "messages", "agents", ["agent_id"], ["id"]) op.create_foreign_key(None, "messages", "organizations", ["organization_id"], ["id"]) + op.create_foreign_key(None, "messages", "agents", ["agent_id"], ["id"]) op.drop_column("messages", "user_id") # ### end Alembic commands ### @@ -53,7 +52,6 @@ def downgrade() -> None: op.drop_constraint(None, "messages", type_="foreignkey") op.drop_constraint(None, "messages", type_="foreignkey") op.create_index("message_idx_user", "messages", ["user_id", "agent_id"], unique=False) - op.alter_column("messages", "created_at", existing_type=postgresql.TIMESTAMP(timezone=True), nullable=True) op.alter_column("messages", "tool_calls", existing_type=postgresql.JSON(astext_type=sa.Text()), nullable=True) op.drop_column("messages", "organization_id") op.drop_column("messages", "_last_updated_by_id") diff --git a/letta/agent.py b/letta/agent.py index 3e619ea5bd..12368a939f 100644 --- a/letta/agent.py +++ b/letta/agent.py @@ -36,7 +36,7 @@ from letta.schemas.embedding_config import EmbeddingConfig from letta.schemas.enums import MessageRole from letta.schemas.memory import ContextWindowOverview, Memory -from letta.schemas.message import Message, UpdateMessage +from letta.schemas.message import Message, MessageUpdate from letta.schemas.openai.chat_completion_request import ( Tool as ChatCompletionRequestTool, ) @@ -512,9 +512,10 @@ def _validate_message_buffer_is_utc(self): for m in self._messages: # assert is_utc_datetime(m.created_at), f"created_at on message for agent {self.agent_state.name} isn't UTC:\n{vars(m)}" # TODO eventually do casting via an edit_message function - if not is_utc_datetime(m.created_at): - printd(f"Warning - created_at on message for agent {self.agent_state.name} isn't UTC (text='{m.text}')") - m.created_at = m.created_at.replace(tzinfo=datetime.timezone.utc) + if m.created_at: + if not is_utc_datetime(m.created_at): + printd(f"Warning - created_at on message for agent {self.agent_state.name} isn't UTC (text='{m.text}')") + m.created_at = m.created_at.replace(tzinfo=datetime.timezone.utc) def set_message_buffer(self, message_ids: List[str], force_utc: bool = True): """Set the messages in the buffer to the message IDs list""" @@ -1405,36 +1406,10 @@ def attach_source(self, source_id: str, source_connector: StorageConnector, ms: f"Attached data source {source.name} to agent {self.agent_state.name}, consisting of {len(all_passages)}. Agent now has {total_agent_passages} embeddings in archival memory.", ) - def update_message(self, request: UpdateMessage) -> Message: + def update_message(self, message_id: str, request: MessageUpdate) -> Message: """Update the details of a message associated with an agent""" - - message = self.message_manager.get_message_by_id(message_id=request.id, actor=self.user) - if message is None: - raise ValueError(f"Message with id {request.id} not found") - assert isinstance(message, Message), f"Message is not a Message object: {type(message)}" - - # Override fields - # NOTE: we try to do some sanity checking here (see asserts), but it's not foolproof - if request.role: - message.role = request.role - if request.text: - message.text = request.text - if request.name: - message.name = request.name - if request.tool_calls: - assert message.role == MessageRole.assistant, "Tool calls can only be added to assistant messages" - message.tool_calls = request.tool_calls - if request.tool_call_id: - assert message.role == MessageRole.tool, "tool_call_id can only be added to tool messages" - message.tool_call_id = request.tool_call_id - # Save the updated message - self.message_manager.update_message_by_id(message_id=message.id, message=message, actor=self.user) - - # Return the updated message - updated_message = self.message_manager.get_message_by_id(message_id=message.id, actor=self.user) - if updated_message is None: - raise ValueError(f"Error persisting message - message with id {request.id} not found") + updated_message = self.message_manager.update_message_by_id(message_id=message_id, message_update=request, actor=self.user) return updated_message # TODO(sarah): should we be creating a new message here, or just editing a message? @@ -1444,10 +1419,10 @@ def rethink_message(self, new_thought: str) -> Message: msg_obj = self._messages[x] if msg_obj.role == MessageRole.assistant: updated_message = self.update_message( - request=UpdateMessage( - id=msg_obj.id, + message_id=msg_obj.id, + request=MessageUpdate( text=new_thought, - ) + ), ) self.refresh_message_buffer() return updated_message @@ -1486,10 +1461,10 @@ def rewrite_message(self, new_text: str) -> Message: # Write the update to the DB updated_message = self.update_message( - request=UpdateMessage( - id=message_obj.id, + message_id=message_obj.id, + request=MessageUpdate( tool_calls=message_obj.tool_calls, - ) + ), ) self.refresh_message_buffer() return updated_message diff --git a/letta/client/client.py b/letta/client/client.py index eaf477e935..afccdafaa5 100644 --- a/letta/client/client.py +++ b/letta/client/client.py @@ -32,7 +32,7 @@ Memory, RecallMemorySummary, ) -from letta.schemas.message import Message, MessageCreate, UpdateMessage +from letta.schemas.message import Message, MessageCreate, MessageUpdate from letta.schemas.openai.chat_completions import ToolCall from letta.schemas.organization import Organization from letta.schemas.passage import Passage @@ -586,8 +586,7 @@ def update_message( tool_calls: Optional[List[ToolCall]] = None, tool_call_id: Optional[str] = None, ) -> Message: - request = UpdateMessage( - id=message_id, + request = MessageUpdate( role=role, text=text, name=name, @@ -2148,8 +2147,8 @@ def update_message( ) -> Message: message = self.server.update_agent_message( agent_id=agent_id, - request=UpdateMessage( - id=message_id, + message_id=message_id, + request=MessageUpdate( role=role, text=text, name=name, diff --git a/letta/orm/message.py b/letta/orm/message.py index 3f0b56c791..8de6f1f54b 100644 --- a/letta/orm/message.py +++ b/letta/orm/message.py @@ -1,7 +1,6 @@ -from datetime import datetime from typing import Optional -from sqlalchemy import JSON, DateTime, TypeDecorator +from sqlalchemy import JSON, TypeDecorator from sqlalchemy.orm import Mapped, mapped_column, relationship from letta.orm.mixins import AgentMixin, OrganizationMixin @@ -58,7 +57,6 @@ class Message(SqlalchemyBase, OrganizationMixin, AgentMixin): name: Mapped[Optional[str]] = mapped_column(nullable=True, doc="Name for multi-agent scenarios") tool_calls: Mapped[ToolCall] = mapped_column(ToolCallColumn, doc="Tool call information") tool_call_id: Mapped[Optional[str]] = mapped_column(nullable=True, doc="ID of the tool call") - created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=datetime.utcnow) # Relationships # TODO: Add in after Agent ORM is created diff --git a/letta/schemas/message.py b/letta/schemas/message.py index a9e2fcb888..750e4a0593 100644 --- a/letta/schemas/message.py +++ b/letta/schemas/message.py @@ -13,7 +13,7 @@ ) from letta.local_llm.constants import INNER_THOUGHTS_KWARG from letta.schemas.enums import MessageRole -from letta.schemas.letta_base import LettaBase +from letta.schemas.letta_base import OrmMetadataBase from letta.schemas.letta_message import ( AssistantMessage, FunctionCall, @@ -50,7 +50,7 @@ def add_inner_thoughts_to_tool_call( raise e -class BaseMessage(LettaBase): +class BaseMessage(OrmMetadataBase): __id_prefix__ = "message" @@ -66,10 +66,9 @@ class MessageCreate(BaseMessage): name: Optional[str] = Field(None, description="The name of the participant.") -class UpdateMessage(BaseMessage): +class MessageUpdate(BaseMessage): """Request to update a message""" - id: str = Field(..., description="The id of the message.") role: Optional[MessageRole] = Field(None, description="The role of the participant.") text: Optional[str] = Field(None, description="The text of the message.") # NOTE: probably doesn't make sense to allow remapping user_id or agent_id (vs creating a new message) @@ -109,9 +108,10 @@ class Message(BaseMessage): agent_id: Optional[str] = Field(None, description="The unique identifier of the agent.") model: Optional[str] = Field(None, description="The model used to make the function call.") name: Optional[str] = Field(None, description="The name of the participant.") - created_at: datetime = Field(default_factory=get_utc_time, description="The time the message was created.") tool_calls: Optional[List[ToolCall]] = Field(None, description="The list of tool calls requested.") tool_call_id: Optional[str] = Field(None, description="The id of the tool call.") + # This overrides the optional base orm schema, created_at MUST exist on all messages objects + created_at: datetime = Field(default_factory=get_utc_time, description="The timestamp when the object was created.") @field_validator("role") @classmethod diff --git a/letta/server/rest_api/routers/v1/agents.py b/letta/server/rest_api/routers/v1/agents.py index ebf10b7cdd..e3922a28f9 100644 --- a/letta/server/rest_api/routers/v1/agents.py +++ b/letta/server/rest_api/routers/v1/agents.py @@ -28,7 +28,7 @@ Memory, RecallMemorySummary, ) -from letta.schemas.message import Message, MessageCreate, UpdateMessage +from letta.schemas.message import Message, MessageCreate, MessageUpdate from letta.schemas.passage import Passage from letta.schemas.source import Source from letta.schemas.tool import Tool @@ -422,14 +422,13 @@ def get_agent_messages( def update_message( agent_id: str, message_id: str, - request: UpdateMessage = Body(...), + request: MessageUpdate = Body(...), server: "SyncServer" = Depends(get_letta_server), ): """ Update the details of a message associated with an agent. """ - assert request.id == message_id, f"Message ID mismatch: {request.id} != {message_id}" - return server.update_agent_message(agent_id=agent_id, request=request) + return server.update_agent_message(agent_id=agent_id, message_id=message_id, request=request) @router.post( diff --git a/letta/server/server.py b/letta/server/server.py index fa3d29fa21..da87d9df25 100644 --- a/letta/server/server.py +++ b/letta/server/server.py @@ -67,7 +67,7 @@ Memory, RecallMemorySummary, ) -from letta.schemas.message import Message, MessageCreate, MessageRole, UpdateMessage +from letta.schemas.message import Message, MessageCreate, MessageRole, MessageUpdate from letta.schemas.organization import Organization from letta.schemas.passage import Passage from letta.schemas.source import Source @@ -1662,12 +1662,12 @@ def get_agent_message(self, agent_id: str, message_id: str) -> Optional[Message] save_agent(letta_agent, self.ms) return message - def update_agent_message(self, agent_id: str, request: UpdateMessage) -> Message: + def update_agent_message(self, agent_id: str, message_id: str, request: MessageUpdate) -> Message: """Update the details of a message associated with an agent""" # Get the current message letta_agent = self.load_agent(agent_id=agent_id) - response = letta_agent.update_message(request=request) + response = letta_agent.update_message(message_id=message_id, request=request) save_agent(letta_agent, self.ms) return response diff --git a/letta/services/message_manager.py b/letta/services/message_manager.py index 7a46ddba0d..b9932b39b8 100644 --- a/letta/services/message_manager.py +++ b/letta/services/message_manager.py @@ -5,6 +5,7 @@ from letta.orm.message import Message as MessageModel from letta.schemas.enums import MessageRole from letta.schemas.message import Message as PydanticMessage +from letta.schemas.message import MessageUpdate from letta.schemas.user import User as PydanticUser from letta.utils import enforce_types @@ -44,27 +45,38 @@ def create_many_messages(self, pydantic_msgs: List[PydanticMessage], actor: Pyda return [self.create_message(m, actor=actor) for m in pydantic_msgs] @enforce_types - def update_message_by_id(self, message_id: str, message: PydanticMessage, actor: PydanticUser) -> PydanticMessage: + def update_message_by_id(self, message_id: str, message_update: MessageUpdate, actor: PydanticUser) -> PydanticMessage: """ Updates an existing record in the database with values from the provided record object. """ with self.session_maker() as session: # Fetch existing message from database - msg = MessageModel.read( + message = MessageModel.read( db_session=session, identifier=message_id, actor=actor, ) - # Update the database record with values from the provided record - for column in MessageModel.__table__.columns: - column_name = column.name - if hasattr(message, column_name): - new_value = getattr(message, column_name) - setattr(msg, column_name, new_value) + # Some safety checks specific to messages + if message_update.tool_calls and message.role != MessageRole.assistant: + raise ValueError( + f"Tool calls {message_update.tool_calls} can only be added to assistant messages. Message {message_id} has role {message.role}." + ) + if message_update.tool_call_id and message.role != MessageRole.tool: + raise ValueError( + f"Tool call IDs {message_update.tool_call_id} can only be added to tool messages. Message {message_id} has role {message.role}." + ) + + # get update dictionary + update_data = message_update.model_dump(exclude_unset=True, exclude_none=True) + # Remove redundant update fields + update_data = {key: value for key, value in update_data.items() if getattr(message, key) != value} + + for key, value in update_data.items(): + setattr(message, key, value) + message.update(db_session=session, actor=actor) - # Commit changes - return msg.update(db_session=session, actor=actor).to_pydantic() + return message.to_pydantic() @enforce_types def delete_message_by_id(self, message_id: str, actor: PydanticUser) -> bool: diff --git a/tests/test_client_legacy.py b/tests/test_client_legacy.py index ce93457bb7..65bd5f16b2 100644 --- a/tests/test_client_legacy.py +++ b/tests/test_client_legacy.py @@ -279,11 +279,7 @@ def test_streaming_send_message(mock_e2b_api_key_none, client: RESTClient, agent assert chunk.total_tokens > 1000 # If stream tokens, we expect at least one inner thought - if stream_tokens: - assert inner_thoughts_count > 1, "Expected more than one inner thought" - else: - assert inner_thoughts_count == 1, "Expected one inner thought" - + assert inner_thoughts_count >= 1, "Expected more than one inner thought" assert inner_thoughts_exist, "No inner thoughts found" assert send_message_ran, "send_message function call not found" assert done, "Message stream not done" diff --git a/tests/test_managers.py b/tests/test_managers.py index 53107dfed5..dc47693893 100644 --- a/tests/test_managers.py +++ b/tests/test_managers.py @@ -37,6 +37,7 @@ from letta.schemas.job import JobUpdate from letta.schemas.llm_config import LLMConfig from letta.schemas.message import Message as PydanticMessage +from letta.schemas.message import MessageUpdate from letta.schemas.organization import Organization as PydanticOrganization from letta.schemas.sandbox_config import ( E2BSandboxConfig, @@ -598,16 +599,19 @@ def test_message_get_by_id(server: SyncServer, hello_world_message_fixture, defa assert retrieved.text == hello_world_message_fixture.text -def test_message_update(server: SyncServer, hello_world_message_fixture, default_user): +def test_message_update(server: SyncServer, hello_world_message_fixture, default_user, other_user): """Test updating a message""" new_text = "Updated text" - hello_world_message_fixture.text = new_text - updated = server.message_manager.update_message_by_id(hello_world_message_fixture.id, hello_world_message_fixture, actor=default_user) + updated = server.message_manager.update_message_by_id(hello_world_message_fixture.id, MessageUpdate(text=new_text), actor=other_user) assert updated is not None assert updated.text == new_text retrieved = server.message_manager.get_message_by_id(hello_world_message_fixture.id, actor=default_user) assert retrieved.text == new_text + # Assert that orm metadata fields are populated + assert retrieved.created_by_id == default_user.id + assert retrieved.last_updated_by_id == other_user.id + def test_message_delete(server: SyncServer, hello_world_message_fixture, default_user): """Test deleting a message""" From 180c9f1e6851063228d3ffd0b51efb36f0496ae4 Mon Sep 17 00:00:00 2001 From: Matthew Zhou Date: Sat, 7 Dec 2024 14:30:31 -0800 Subject: [PATCH 11/39] fix: Revert changes to alembic script and tweak created_at field on messages (#2194) --- ...badb46fdf9_migrate_messages_to_the_orm.py} | 14 +++++---- ...dbf_tweak_created_at_field_for_messages.py | 31 +++++++++++++++++++ 2 files changed, 39 insertions(+), 6 deletions(-) rename alembic/versions/{d27a33843feb_migrate_messages_to_the_orm.py => 95badb46fdf9_migrate_messages_to_the_orm.py} (87%) create mode 100644 alembic/versions/e1a625072dbf_tweak_created_at_field_for_messages.py diff --git a/alembic/versions/d27a33843feb_migrate_messages_to_the_orm.py b/alembic/versions/95badb46fdf9_migrate_messages_to_the_orm.py similarity index 87% rename from alembic/versions/d27a33843feb_migrate_messages_to_the_orm.py rename to alembic/versions/95badb46fdf9_migrate_messages_to_the_orm.py index 575bd25bd7..73254e39ea 100644 --- a/alembic/versions/d27a33843feb_migrate_messages_to_the_orm.py +++ b/alembic/versions/95badb46fdf9_migrate_messages_to_the_orm.py @@ -1,8 +1,8 @@ -"""Migrate messages to the orm +"""Migrate message to orm -Revision ID: d27a33843feb -Revises: 08b2f8225812 -Create Date: 2024-12-07 13:52:20.591898 +Revision ID: 95badb46fdf9 +Revises: 3c683a662c82 +Create Date: 2024-12-05 14:02:04.163150 """ @@ -14,7 +14,7 @@ from alembic import op # revision identifiers, used by Alembic. -revision: str = "d27a33843feb" +revision: str = "95badb46fdf9" down_revision: Union[str, None] = "08b2f8225812" branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None @@ -39,9 +39,10 @@ def upgrade() -> None: ) op.alter_column("messages", "organization_id", nullable=False) op.alter_column("messages", "tool_calls", existing_type=postgresql.JSON(astext_type=sa.Text()), nullable=False) + op.alter_column("messages", "created_at", existing_type=postgresql.TIMESTAMP(timezone=True), nullable=False) op.drop_index("message_idx_user", table_name="messages") - op.create_foreign_key(None, "messages", "organizations", ["organization_id"], ["id"]) op.create_foreign_key(None, "messages", "agents", ["agent_id"], ["id"]) + op.create_foreign_key(None, "messages", "organizations", ["organization_id"], ["id"]) op.drop_column("messages", "user_id") # ### end Alembic commands ### @@ -52,6 +53,7 @@ def downgrade() -> None: op.drop_constraint(None, "messages", type_="foreignkey") op.drop_constraint(None, "messages", type_="foreignkey") op.create_index("message_idx_user", "messages", ["user_id", "agent_id"], unique=False) + op.alter_column("messages", "created_at", existing_type=postgresql.TIMESTAMP(timezone=True), nullable=True) op.alter_column("messages", "tool_calls", existing_type=postgresql.JSON(astext_type=sa.Text()), nullable=True) op.drop_column("messages", "organization_id") op.drop_column("messages", "_last_updated_by_id") diff --git a/alembic/versions/e1a625072dbf_tweak_created_at_field_for_messages.py b/alembic/versions/e1a625072dbf_tweak_created_at_field_for_messages.py new file mode 100644 index 0000000000..fb425db317 --- /dev/null +++ b/alembic/versions/e1a625072dbf_tweak_created_at_field_for_messages.py @@ -0,0 +1,31 @@ +"""Tweak created_at field for messages + +Revision ID: e1a625072dbf +Revises: 95badb46fdf9 +Create Date: 2024-12-07 14:28:27.643583 + +""" + +from typing import Sequence, Union + +from sqlalchemy.dialects import postgresql + +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "e1a625072dbf" +down_revision: Union[str, None] = "95badb46fdf9" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column("messages", "created_at", existing_type=postgresql.TIMESTAMP(timezone=True), nullable=True) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column("messages", "created_at", existing_type=postgresql.TIMESTAMP(timezone=True), nullable=False) + # ### end Alembic commands ### From 30f17da3baa6284ff6ae822fc7c017aad2c3bd1a Mon Sep 17 00:00:00 2001 From: Sarah Wooders Date: Sat, 7 Dec 2024 16:13:37 -0800 Subject: [PATCH 12/39] feat: remove loading from module (#2196) --- letta/agent.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/letta/agent.py b/letta/agent.py index 12368a939f..a09fd04c40 100644 --- a/letta/agent.py +++ b/letta/agent.py @@ -477,10 +477,10 @@ def link_tools(self, tools: List[Tool]): for tool in tools: try: # WARNING: name may not be consistent? - if tool.module: # execute the whole module - exec(tool.module, env) - else: - exec(tool.source_code, env) + # if tool.module: # execute the whole module + # exec(tool.module, env) + # else: + exec(tool.source_code, env) self.functions_python[tool.json_schema["name"]] = env[tool.json_schema["name"]] self.functions.append(tool.json_schema) except Exception: From 376120fc26bd19f93722b204a19cf9aeaba61b7e Mon Sep 17 00:00:00 2001 From: Charles Packer Date: Sat, 7 Dec 2024 16:14:51 -0800 Subject: [PATCH 13/39] fix: disable printing version in health check, causes spam (#2195) --- letta/cli/cli.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/letta/cli/cli.py b/letta/cli/cli.py index e7f811e9f3..d55d3b74f3 100644 --- a/letta/cli/cli.py +++ b/letta/cli/cli.py @@ -370,8 +370,7 @@ def delete_agent( sys.exit(1) -def version(): +def version() -> str: import letta - print(letta.__version__) return letta.__version__ From 660a599cec39be5cac57f45b8470dec79d6c3f50 Mon Sep 17 00:00:00 2001 From: Matthew Zhou Date: Sat, 7 Dec 2024 21:37:06 -0800 Subject: [PATCH 14/39] chore: Bump composio-core requirements to latest (#2197) --- poetry.lock | 21 ++++++++++++++++++++- pyproject.toml | 2 +- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/poetry.lock b/poetry.lock index 84716f7004..b53c0649be 100644 --- a/poetry.lock +++ b/poetry.lock @@ -6214,39 +6214,58 @@ description = "Database Abstraction Library" optional = false python-versions = ">=3.7" files = [ + {file = "SQLAlchemy-2.0.36-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:59b8f3adb3971929a3e660337f5dacc5942c2cdb760afcabb2614ffbda9f9f72"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:37350015056a553e442ff672c2d20e6f4b6d0b2495691fa239d8aa18bb3bc908"}, {file = "SQLAlchemy-2.0.36-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8318f4776c85abc3f40ab185e388bee7a6ea99e7fa3a30686580b209eaa35c08"}, {file = "SQLAlchemy-2.0.36-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c245b1fbade9c35e5bd3b64270ab49ce990369018289ecfde3f9c318411aaa07"}, {file = "SQLAlchemy-2.0.36-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:69f93723edbca7342624d09f6704e7126b152eaed3cdbb634cb657a54332a3c5"}, {file = "SQLAlchemy-2.0.36-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f9511d8dd4a6e9271d07d150fb2f81874a3c8c95e11ff9af3a2dfc35fe42ee44"}, {file = "SQLAlchemy-2.0.36-cp310-cp310-win32.whl", hash = "sha256:c3f3631693003d8e585d4200730616b78fafd5a01ef8b698f6967da5c605b3fa"}, {file = "SQLAlchemy-2.0.36-cp310-cp310-win_amd64.whl", hash = "sha256:a86bfab2ef46d63300c0f06936bd6e6c0105faa11d509083ba8f2f9d237fb5b5"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fd3a55deef00f689ce931d4d1b23fa9f04c880a48ee97af488fd215cf24e2a6c"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4f5e9cd989b45b73bd359f693b935364f7e1f79486e29015813c338450aa5a71"}, {file = "SQLAlchemy-2.0.36-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0ddd9db6e59c44875211bc4c7953a9f6638b937b0a88ae6d09eb46cced54eff"}, {file = "SQLAlchemy-2.0.36-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2519f3a5d0517fc159afab1015e54bb81b4406c278749779be57a569d8d1bb0d"}, {file = "SQLAlchemy-2.0.36-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59b1ee96617135f6e1d6f275bbe988f419c5178016f3d41d3c0abb0c819f75bb"}, {file = "SQLAlchemy-2.0.36-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:39769a115f730d683b0eb7b694db9789267bcd027326cccc3125e862eb03bfd8"}, {file = "SQLAlchemy-2.0.36-cp311-cp311-win32.whl", hash = "sha256:66bffbad8d6271bb1cc2f9a4ea4f86f80fe5e2e3e501a5ae2a3dc6a76e604e6f"}, {file = "SQLAlchemy-2.0.36-cp311-cp311-win_amd64.whl", hash = "sha256:23623166bfefe1487d81b698c423f8678e80df8b54614c2bf4b4cfcd7c711959"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7b64e6ec3f02c35647be6b4851008b26cff592a95ecb13b6788a54ef80bbdd4"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:46331b00096a6db1fdc052d55b101dbbfc99155a548e20a0e4a8e5e4d1362855"}, {file = "SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdf3386a801ea5aba17c6410dd1dc8d39cf454ca2565541b5ac42a84e1e28f53"}, {file = "SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac9dfa18ff2a67b09b372d5db8743c27966abf0e5344c555d86cc7199f7ad83a"}, {file = "SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:90812a8933df713fdf748b355527e3af257a11e415b613dd794512461eb8a686"}, {file = "SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1bc330d9d29c7f06f003ab10e1eaced295e87940405afe1b110f2eb93a233588"}, {file = "SQLAlchemy-2.0.36-cp312-cp312-win32.whl", hash = "sha256:79d2e78abc26d871875b419e1fd3c0bca31a1cb0043277d0d850014599626c2e"}, {file = "SQLAlchemy-2.0.36-cp312-cp312-win_amd64.whl", hash = "sha256:b544ad1935a8541d177cb402948b94e871067656b3a0b9e91dbec136b06a2ff5"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b5cc79df7f4bc3d11e4b542596c03826063092611e481fcf1c9dfee3c94355ef"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3c01117dd36800f2ecaa238c65365b7b16497adc1522bf84906e5710ee9ba0e8"}, {file = "SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9bc633f4ee4b4c46e7adcb3a9b5ec083bf1d9a97c1d3854b92749d935de40b9b"}, {file = "SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e46ed38affdfc95d2c958de328d037d87801cfcbea6d421000859e9789e61c2"}, {file = "SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b2985c0b06e989c043f1dc09d4fe89e1616aadd35392aea2844f0458a989eacf"}, {file = "SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a121d62ebe7d26fec9155f83f8be5189ef1405f5973ea4874a26fab9f1e262c"}, {file = "SQLAlchemy-2.0.36-cp313-cp313-win32.whl", hash = "sha256:0572f4bd6f94752167adfd7c1bed84f4b240ee6203a95e05d1e208d488d0d436"}, {file = "SQLAlchemy-2.0.36-cp313-cp313-win_amd64.whl", hash = "sha256:8c78ac40bde930c60e0f78b3cd184c580f89456dd87fc08f9e3ee3ce8765ce88"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:be9812b766cad94a25bc63bec11f88c4ad3629a0cec1cd5d4ba48dc23860486b"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50aae840ebbd6cdd41af1c14590e5741665e5272d2fee999306673a1bb1fdb4d"}, {file = "SQLAlchemy-2.0.36-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4557e1f11c5f653ebfdd924f3f9d5ebfc718283b0b9beebaa5dd6b77ec290971"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:07b441f7d03b9a66299ce7ccf3ef2900abc81c0db434f42a5694a37bd73870f2"}, {file = "SQLAlchemy-2.0.36-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:28120ef39c92c2dd60f2721af9328479516844c6b550b077ca450c7d7dc68575"}, {file = "SQLAlchemy-2.0.36-cp37-cp37m-win32.whl", hash = "sha256:b81ee3d84803fd42d0b154cb6892ae57ea6b7c55d8359a02379965706c7efe6c"}, {file = "SQLAlchemy-2.0.36-cp37-cp37m-win_amd64.whl", hash = "sha256:f942a799516184c855e1a32fbc7b29d7e571b52612647866d4ec1c3242578fcb"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3d6718667da04294d7df1670d70eeddd414f313738d20a6f1d1f379e3139a545"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:72c28b84b174ce8af8504ca28ae9347d317f9dba3999e5981a3cd441f3712e24"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b11d0cfdd2b095e7b0686cf5fabeb9c67fae5b06d265d8180715b8cfa86522e3"}, {file = "SQLAlchemy-2.0.36-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e32092c47011d113dc01ab3e1d3ce9f006a47223b18422c5c0d150af13a00687"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:6a440293d802d3011028e14e4226da1434b373cbaf4a4bbb63f845761a708346"}, {file = "SQLAlchemy-2.0.36-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c54a1e53a0c308a8e8a7dffb59097bff7facda27c70c286f005327f21b2bd6b1"}, {file = "SQLAlchemy-2.0.36-cp38-cp38-win32.whl", hash = "sha256:1e0d612a17581b6616ff03c8e3d5eff7452f34655c901f75d62bd86449d9750e"}, {file = "SQLAlchemy-2.0.36-cp38-cp38-win_amd64.whl", hash = "sha256:8958b10490125124463095bbdadda5aa22ec799f91958e410438ad6c97a7b793"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dc022184d3e5cacc9579e41805a681187650e170eb2fd70e28b86192a479dcaa"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b817d41d692bf286abc181f8af476c4fbef3fd05e798777492618378448ee689"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4e46a888b54be23d03a89be510f24a7652fe6ff660787b96cd0e57a4ebcb46d"}, {file = "SQLAlchemy-2.0.36-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4ae3005ed83f5967f961fd091f2f8c5329161f69ce8480aa8168b2d7fe37f06"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:03e08af7a5f9386a43919eda9de33ffda16b44eb11f3b313e6822243770e9763"}, {file = "SQLAlchemy-2.0.36-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:3dbb986bad3ed5ceaf090200eba750b5245150bd97d3e67343a3cfed06feecf7"}, {file = "SQLAlchemy-2.0.36-cp39-cp39-win32.whl", hash = "sha256:9fe53b404f24789b5ea9003fc25b9a3988feddebd7e7b369c8fac27ad6f52f28"}, {file = "SQLAlchemy-2.0.36-cp39-cp39-win_amd64.whl", hash = "sha256:af148a33ff0349f53512a049c6406923e4e02bf2f26c5fb285f143faf4f0e46a"}, @@ -7535,4 +7554,4 @@ tests = ["wikipedia"] [metadata] lock-version = "2.0" python-versions = "<3.13,>=3.10" -content-hash = "55f9fdb8f904ae60aa7b871f9b45a4da17e505c1efa96b6e373f39904f57a684" +content-hash = "1293bc3a4f2bf98a65b547ce57d62ab0c1f26b6a035241c68327e83d71b2e4fd" diff --git a/pyproject.toml b/pyproject.toml index ef6b97966b..24cc74cbed 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -67,7 +67,7 @@ llama-index-embeddings-openai = "^0.2.5" llama-index-embeddings-ollama = "^0.3.1" wikipedia = {version = "^1.4.0", optional = true} composio-langchain = "^0.5.28" -composio-core = "^0.5.34" +composio-core = "^0.5.51" alembic = "^1.13.3" pyhumps = "^3.8.0" psycopg2 = "^2.9.10" From b1015c0679ce3984de5ad4dcf9ff0ab40f836689 Mon Sep 17 00:00:00 2001 From: Charles Packer Date: Sun, 8 Dec 2024 17:04:04 -0800 Subject: [PATCH 15/39] fix: add a special error type for configuration errors (#2198) --- letta/errors.py | 24 ++++++++++++++++++++++++ letta/llm_api/llm_api_tools.py | 19 +++++++++++++------ letta/server/rest_api/app.py | 26 ++++++++++++++++++++++++++ letta/server/server.py | 7 ++++--- 4 files changed, 67 insertions(+), 9 deletions(-) diff --git a/letta/errors.py b/letta/errors.py index cb10c5d964..c478ef42fa 100644 --- a/letta/errors.py +++ b/letta/errors.py @@ -22,6 +22,30 @@ def __init__(self, message=None): super().__init__(self.message) +class LettaConfigurationError(LettaError): + """Error raised when there are configuration-related issues.""" + + def __init__(self, message: str, missing_fields: Optional[List[str]] = None): + self.missing_fields = missing_fields or [] + super().__init__(message) + + +class LettaAgentNotFoundError(LettaError): + """Error raised when an agent is not found.""" + + def __init__(self, message: str): + self.message = message + super().__init__(self.message) + + +class LettaUserNotFoundError(LettaError): + """Error raised when a user is not found.""" + + def __init__(self, message: str): + self.message = message + super().__init__(self.message) + + class LLMError(LettaError): pass diff --git a/letta/llm_api/llm_api_tools.py b/letta/llm_api/llm_api_tools.py index 9a6374b511..163c4e1868 100644 --- a/letta/llm_api/llm_api_tools.py +++ b/letta/llm_api/llm_api_tools.py @@ -5,6 +5,7 @@ import requests from letta.constants import CLI_WARNING_PREFIX +from letta.errors import LettaConfigurationError from letta.llm_api.anthropic import anthropic_chat_completions_request from letta.llm_api.azure_openai import azure_openai_chat_completions_request from letta.llm_api.google_ai import ( @@ -148,7 +149,7 @@ def create( if llm_config.model_endpoint_type == "openai": if model_settings.openai_api_key is None and llm_config.model_endpoint == "https://api.openai.com/v1": # only is a problem if we are *not* using an openai proxy - raise ValueError(f"OpenAI key is missing from letta config file") + raise LettaConfigurationError(message="OpenAI key is missing from letta config file", missing_fields=["openai_api_key"]) data = build_openai_chat_completions_request(llm_config, messages, user_id, functions, function_call, use_tool_naming, max_tokens) if stream: # Client requested token streaming @@ -187,13 +188,19 @@ def create( raise NotImplementedError(f"Streaming not yet implemented for {llm_config.model_endpoint_type}") if model_settings.azure_api_key is None: - raise ValueError(f"Azure API key is missing. Did you set AZURE_API_KEY in your env?") + raise LettaConfigurationError( + message="Azure API key is missing. Did you set AZURE_API_KEY in your env?", missing_fields=["azure_api_key"] + ) if model_settings.azure_base_url is None: - raise ValueError(f"Azure base url is missing. Did you set AZURE_BASE_URL in your env?") + raise LettaConfigurationError( + message="Azure base url is missing. Did you set AZURE_BASE_URL in your env?", missing_fields=["azure_base_url"] + ) if model_settings.azure_api_version is None: - raise ValueError(f"Azure API version is missing. Did you set AZURE_API_VERSION in your env?") + raise LettaConfigurationError( + message="Azure API version is missing. Did you set AZURE_API_VERSION in your env?", missing_fields=["azure_api_version"] + ) # Set the llm config model_endpoint from model_settings # For Azure, this model_endpoint is required to be configured via env variable, so users don't need to provide it in the LLM config @@ -291,7 +298,7 @@ def create( raise NotImplementedError(f"Streaming not yet implemented for Groq.") if model_settings.groq_api_key is None and llm_config.model_endpoint == "https://api.groq.com/openai/v1/chat/completions": - raise ValueError(f"Groq key is missing from letta config file") + raise LettaConfigurationError(message="Groq key is missing from letta config file", missing_fields=["groq_api_key"]) # force to true for groq, since they don't support 'content' is non-null if llm_config.put_inner_thoughts_in_kwargs: @@ -344,7 +351,7 @@ def create( raise NotImplementedError(f"Streaming not yet implemented for TogetherAI (via the /completions endpoint).") if model_settings.together_api_key is None and llm_config.model_endpoint == "https://api.together.ai/v1/completions": - raise ValueError(f"TogetherAI key is missing from letta config file") + raise LettaConfigurationError(message="TogetherAI key is missing from letta config file", missing_fields=["together_api_key"]) return get_chat_completion( model=llm_config.model, diff --git a/letta/server/rest_api/app.py b/letta/server/rest_api/app.py index 4db8323668..9b43495a27 100644 --- a/letta/server/rest_api/app.py +++ b/letta/server/rest_api/app.py @@ -13,6 +13,7 @@ from letta.__init__ import __version__ from letta.constants import ADMIN_PREFIX, API_PREFIX, OPENAI_API_PREFIX +from letta.errors import LettaAgentNotFoundError, LettaUserNotFoundError from letta.schemas.letta_response import LettaResponse from letta.server.constants import REST_DEFAULT_PORT @@ -144,6 +145,31 @@ def create_application() -> "FastAPI": debug=True, ) + @app.exception_handler(Exception) + async def generic_error_handler(request, exc): + # Log the actual error for debugging + log.error(f"Unhandled error: {exc}", exc_info=True) + + # Print the stack trace + print(f"Stack trace: {exc.__traceback__}") + + return JSONResponse( + status_code=500, + content={ + "detail": "An internal server error occurred", + # Only include error details in debug/development mode + # "debug_info": str(exc) if settings.debug else None + }, + ) + + @app.exception_handler(LettaAgentNotFoundError) + async def agent_not_found_handler(request, exc): + return JSONResponse(status_code=404, content={"detail": "Agent not found"}) + + @app.exception_handler(LettaUserNotFoundError) + async def user_not_found_handler(request, exc): + return JSONResponse(status_code=404, content={"detail": "User not found"}) + settings.cors_origins.append("https://app.letta.com") print(f"▶ View using ADE at: https://app.letta.com/development-servers/local/dashboard") diff --git a/letta/server/server.py b/letta/server/server.py index da87d9df25..965c9b2798 100644 --- a/letta/server/server.py +++ b/letta/server/server.py @@ -21,6 +21,7 @@ from letta.chat_only_agent import ChatOnlyAgent from letta.credentials import LettaCredentials from letta.data_sources.connectors import DataConnector, load_data +from letta.errors import LettaAgentNotFoundError, LettaUserNotFoundError # TODO use custom interface from letta.interface import AgentInterface # abstract @@ -397,7 +398,7 @@ def load_agent(self, agent_id: str, interface: Union[AgentInterface, None] = Non with agent_lock: agent_state = self.get_agent(agent_id=agent_id) if agent_state is None: - raise ValueError(f"Agent (agent_id={agent_id}) does not exist") + raise LettaAgentNotFoundError(f"Agent (agent_id={agent_id}) does not exist") elif agent_state.user_id is None: raise ValueError(f"Agent (agent_id={agent_id}) does not have a user_id") actor = self.user_manager.get_user_by_id(user_id=agent_state.user_id) @@ -1249,9 +1250,9 @@ def get_agent_archival_cursor( reverse: Optional[bool] = False, ) -> List[Passage]: if self.user_manager.get_user_by_id(user_id=user_id) is None: - raise ValueError(f"User user_id={user_id} does not exist") + raise LettaUserNotFoundError(f"User user_id={user_id} does not exist") if self.ms.get_agent(agent_id=agent_id, user_id=user_id) is None: - raise ValueError(f"Agent agent_id={agent_id} does not exist") + raise LettaAgentNotFoundError(f"Agent agent_id={agent_id} does not exist") # Get the agent object (loaded in memory) letta_agent = self.load_agent(agent_id=agent_id) From 8633c7bd5fb9319e0d0d54997be69a9fcb28c7ea Mon Sep 17 00:00:00 2001 From: Charles Packer Date: Sun, 8 Dec 2024 21:22:48 -0800 Subject: [PATCH 16/39] fix: patch anthropic system message in send_message route (#2199) --- letta/schemas/message.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/letta/schemas/message.py b/letta/schemas/message.py index 750e4a0593..0e58bacf33 100644 --- a/letta/schemas/message.py +++ b/letta/schemas/message.py @@ -481,7 +481,20 @@ def add_xml_tag(string: str, xml_tag: Optional[str]): return f"<{xml_tag}>{string} Date: Sun, 8 Dec 2024 23:14:18 -0800 Subject: [PATCH 17/39] fix: bad print in common cli (#2200) --- letta/orm/sqlalchemy_base.py | 2 +- tests/test_client.py | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/letta/orm/sqlalchemy_base.py b/letta/orm/sqlalchemy_base.py index 2fd6394724..4507f51c27 100644 --- a/letta/orm/sqlalchemy_base.py +++ b/letta/orm/sqlalchemy_base.py @@ -187,7 +187,7 @@ def hard_delete(self, db_session: "Session", actor: Optional["User"] = None) -> logger.exception(f"Failed to hard delete {self.__class__.__name__} with ID {self.id}") raise ValueError(f"Failed to hard delete {self.__class__.__name__} with ID {self.id}: {e}") else: - logger.info(f"{self.__class__.__name__} with ID {self.id} successfully hard deleted") + logger.debug(f"{self.__class__.__name__} with ID {self.id} successfully hard deleted") def update(self, db_session: "Session", actor: Optional["User"] = None) -> Type["SqlalchemyBase"]: logger.debug(f"Updating {self.__class__.__name__} with ID: {self.id} with actor={actor}") diff --git a/tests/test_client.py b/tests/test_client.py index 6a0db9933b..866bd2012b 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -292,6 +292,12 @@ def test_messages(client: Union[LocalClient, RESTClient], agent: AgentState): assert len(messages_response) > 0, "Retrieving messages failed" +def test_send_system_message(client: Union[LocalClient, RESTClient], agent: AgentState): + """Important unit test since the Letta API exposes sending system messages, but some backends don't natively support it (eg Anthropic)""" + send_system_message_response = client.send_message(agent_id=agent.id, message="Event occured: The user just logged off.", role="system") + assert send_system_message_response, "Sending message failed" + + @pytest.mark.asyncio async def test_send_message_parallel(client: Union[LocalClient, RESTClient], agent: AgentState, request): """ From 2e9184cd5b04d2b11dc0dadbbab9722df2324e1a Mon Sep 17 00:00:00 2001 From: Charles Packer Date: Sun, 8 Dec 2024 23:54:29 -0800 Subject: [PATCH 18/39] fix: bug in get_tool_id (#2201) --- letta/client/client.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/letta/client/client.py b/letta/client/client.py index afccdafaa5..d4cedb033c 100644 --- a/letta/client/client.py +++ b/letta/client/client.py @@ -2836,7 +2836,7 @@ def get_tool_id(self, name: str) -> Optional[str]: id (str): ID of the tool (`None` if not found) """ tool = self.server.tool_manager.get_tool_by_name(tool_name=name, actor=self.user) - return tool.id + return tool.id if tool else None def load_data(self, connector: DataConnector, source_name: str): """ From fd35339754dc5d976304bdf3dce681dee02620e6 Mon Sep 17 00:00:00 2001 From: Sarah Wooders Date: Mon, 9 Dec 2024 13:27:52 -0800 Subject: [PATCH 19/39] feat: error stack trace capture (#2203) --- letta/server/rest_api/app.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/letta/server/rest_api/app.py b/letta/server/rest_api/app.py index 9b43495a27..321a48827e 100644 --- a/letta/server/rest_api/app.py +++ b/letta/server/rest_api/app.py @@ -152,6 +152,10 @@ async def generic_error_handler(request, exc): # Print the stack trace print(f"Stack trace: {exc.__traceback__}") + if (os.getenv("SENTRY_DSN") is not None) and (os.getenv("SENTRY_DSN") != ""): + import sentry_sdk + + sentry_sdk.capture_exception(exc) return JSONResponse( status_code=500, From fd597055b7c7b2417f93f5027e7f388c3a9c5cac Mon Sep 17 00:00:00 2001 From: Charles Packer Date: Mon, 9 Dec 2024 15:03:11 -0800 Subject: [PATCH 20/39] fix: patch `Dockerfile` for purpose of `docker run` (#2177) --- .dockerignore | 10 ++++- Dockerfile | 93 +++++++++++++++++++++++------------------ letta/cli/cli.py | 1 + letta/server/startup.sh | 56 +++++++++++++++++++------ 4 files changed, 107 insertions(+), 53 deletions(-) diff --git a/.dockerignore b/.dockerignore index 39976e4439..ffe57a736e 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1 +1,9 @@ -chatui +**/__pycache__ +**/.pytest_cache +**/*.pyc +**/*.pyo +**/*.pyd +.git +.gitignore +.env +*.log diff --git a/Dockerfile b/Dockerfile index 7bea036033..42ee3d37ba 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,56 +1,69 @@ -# The builder image, used to build the virtual environment -FROM python:3.12.2-bookworm as builder -ARG LETTA_ENVIRONMENT=PRODUCTION -ENV LETTA_ENVIRONMENT=${LETTA_ENVIRONMENT} -RUN pip install poetry==1.8.2 +# Start with pgvector base for builder +FROM ankane/pgvector:v0.5.1 AS builder + +# Install Python and required packages +RUN apt-get update && apt-get install -y \ + python3 \ + python3-venv \ + python3-pip \ + python3-full \ + build-essential \ + libpq-dev \ + python3-dev \ + && rm -rf /var/lib/apt/lists/* -ENV POETRY_NO_INTERACTION=1 \ +ARG LETTA_ENVIRONMENT=PRODUCTION +ENV LETTA_ENVIRONMENT=${LETTA_ENVIRONMENT} \ + POETRY_NO_INTERACTION=1 \ POETRY_VIRTUALENVS_IN_PROJECT=1 \ POETRY_VIRTUALENVS_CREATE=1 \ POETRY_CACHE_DIR=/tmp/poetry_cache WORKDIR /app +# Create and activate virtual environment +RUN python3 -m venv /opt/venv +ENV PATH="/opt/venv/bin:$PATH" + +# Now install poetry in the virtual environment +RUN pip install --no-cache-dir poetry==1.8.2 + +# Copy dependency files first COPY pyproject.toml poetry.lock ./ -RUN poetry lock --no-update -RUN if [ "$LETTA_ENVIRONMENT" = "DEVELOPMENT" ] ; then \ - poetry install --no-root -E "postgres server dev" ; \ - else \ - poetry install --no-root --all-extras && \ - rm -rf $POETRY_CACHE_DIR ; \ - fi +# Then copy the rest of the application code +COPY . . +RUN poetry lock --no-update && \ + poetry install --all-extras && \ + rm -rf $POETRY_CACHE_DIR + +# Runtime stage +FROM ankane/pgvector:v0.5.1 AS runtime + +# Install Python packages +RUN apt-get update && apt-get install -y \ + python3 \ + python3-venv \ + && rm -rf /var/lib/apt/lists/* \ + && mkdir -p /app -# The runtime image, used to just run the code provided its virtual environment -FROM python:3.12.2-slim-bookworm as runtime ARG LETTA_ENVIRONMENT=PRODUCTION -ENV LETTA_ENVIRONMENT=${LETTA_ENVIRONMENT} -ENV VIRTUAL_ENV=/app/.venv \ - PATH="/app/.venv/bin:$PATH" +ENV LETTA_ENVIRONMENT=${LETTA_ENVIRONMENT} \ + VIRTUAL_ENV="/app/.venv" \ + PATH="/app/.venv/bin:$PATH" \ + POSTGRES_USER=letta \ + POSTGRES_PASSWORD=letta \ + POSTGRES_DB=letta -COPY --from=builder ${VIRTUAL_ENV} ${VIRTUAL_ENV} +WORKDIR /app -COPY ./letta /letta -COPY ./alembic.ini /alembic.ini -COPY ./alembic /alembic +# Copy virtual environment and app from builder +COPY --from=builder /app . -EXPOSE 8283 +# Copy initialization SQL if it exists +COPY init.sql /docker-entrypoint-initdb.d/ -CMD ./letta/server/startup.sh +EXPOSE 8283 5432 -# allow for in-container development and testing -FROM builder as development -ARG LETTA_ENVIRONMENT=PRODUCTION -ENV LETTA_ENVIRONMENT=${LETTA_ENVIRONMENT} -ENV VIRTUAL_ENV=/app/.venv \ - PATH="/app/.venv/bin:$PATH" -ENV PYTHONPATH=/ -WORKDIR / -COPY ./tests /tests -COPY ./letta /letta -COPY ./alembic.ini /alembic.ini -COPY ./alembic /alembic -#COPY ./configs/server_config.yaml /root/.letta/config -EXPOSE 8083 - -CMD ./letta/server/startup.sh +ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] +CMD ["./letta/server/startup.sh"] diff --git a/letta/cli/cli.py b/letta/cli/cli.py index d55d3b74f3..bedab42916 100644 --- a/letta/cli/cli.py +++ b/letta/cli/cli.py @@ -51,6 +51,7 @@ def server( port: Annotated[Optional[int], typer.Option(help="Port to run the server on")] = None, host: Annotated[Optional[str], typer.Option(help="Host to run the server on (default to localhost)")] = None, debug: Annotated[bool, typer.Option(help="Turn debugging output on")] = False, + ade: Annotated[bool, typer.Option(help="Allows remote access")] = False, # NOTE: deprecated secure: Annotated[bool, typer.Option(help="Adds simple security access")] = False, ): """Launch a Letta server process""" diff --git a/letta/server/startup.sh b/letta/server/startup.sh index e0556f7088..2e9d7c301d 100755 --- a/letta/server/startup.sh +++ b/letta/server/startup.sh @@ -1,17 +1,49 @@ #!/bin/sh -echo "Starting Letta server at http://localhost:8283" +set -e # Exit on any error -# Check if LETTA_PG_URI or LETTA_PG_DB is set and run alembic upgrade if either is -if [ -n "$LETTA_PG_URI" ] || [ -n "$LETTA_PG_DB" ]; then - echo "LETTA_PG_URI or LETTA_PG_DB is set, running alembic upgrade head" - alembic upgrade head -fi +HOST="${HOST:-0.0.0.0}" +PORT="${PORT:-8283}" + +# Function to wait for PostgreSQL to be ready +wait_for_postgres() { + until pg_isready -U "${POSTGRES_USER:-letta}" -h localhost; do + echo "Waiting for PostgreSQL to be ready..." + sleep 2 + done +} -if [ "$MEMGPT_ENVIRONMENT" = "DEVELOPMENT" ]; then - echo "Starting in development mode!" - uvicorn letta.server.rest_api.app:app --reload --reload-dir /letta --host 0.0.0.0 --port 8283 +# Check if we're configured for external Postgres +if [ -n "$LETTA_PG_URI" ]; then + echo "External Postgres configuration detected, using $LETTA_PG_URI" else - # Production start command here (replace with the actual production command) - echo "Starting in production mode!" - uvicorn letta.server.rest_api.app:app --host 0.0.0.0 --port 8283 + echo "No external Postgres configuration detected, starting internal PostgreSQL..." + # Start PostgreSQL using the base image's entrypoint script + /usr/local/bin/docker-entrypoint.sh postgres & + + # Wait for PostgreSQL to be ready + wait_for_postgres + + # Set default connection URI for internal postgres + export LETTA_PG_URI="postgresql://${POSTGRES_USER:-letta}:${POSTGRES_PASSWORD:-letta}@localhost:5432/${POSTGRES_DB:-letta}" + echo "Using internal PostgreSQL at: $LETTA_PG_URI" fi + +# Attempt database migration +echo "Attempting to migrate database..." +if ! alembic upgrade head; then + echo "ERROR: Database migration failed!" + echo "Please check your database connection and try again." + echo "If the problem persists, check the logs for more details." + exit 1 +fi +echo "Database migration completed successfully." + +# If ADE is enabled, add the --ade flag to the command +CMD="letta server --host $HOST --port $PORT" +if [ "${SECURE:-false}" = "true" ]; then + CMD="$CMD --secure" +fi + +echo "Starting Letta server at http://$HOST:$PORT..." +echo "Executing: $CMD" +exec $CMD From 5e38adf8f376de079b2c068fab9f07418d004e57 Mon Sep 17 00:00:00 2001 From: Sarah Wooders Date: Mon, 9 Dec 2024 15:11:31 -0800 Subject: [PATCH 21/39] fix: ask for embedding config for `letta load directory ... ` (#2184) --- letta/cli/cli_load.py | 90 ++++++++++-------------------------------- letta/client/client.py | 2 + letta/main.py | 1 - 3 files changed, 23 insertions(+), 70 deletions(-) diff --git a/letta/cli/cli_load.py b/letta/cli/cli_load.py index 61518bc038..b27da4d81a 100644 --- a/letta/cli/cli_load.py +++ b/letta/cli/cli_load.py @@ -11,6 +11,7 @@ import uuid from typing import Annotated, List, Optional +import questionary import typer from letta import create_client @@ -37,8 +38,27 @@ def load_directory( # create connector connector = DirectoryConnector(input_files=input_files, input_directory=input_dir, recursive=recursive, extensions=extensions) + # choose form list of embedding configs + embedding_configs = client.list_embedding_configs() + embedding_options = [embedding_config.embedding_model for embedding_config in embedding_configs] + + embedding_choices = [ + questionary.Choice(title=embedding_config.pretty_print(), value=embedding_config) for embedding_config in embedding_configs + ] + + # select model + if len(embedding_options) == 0: + raise ValueError("No embedding models found. Please enable a provider.") + elif len(embedding_options) == 1: + embedding_model_name = embedding_options[0] + else: + embedding_model_name = questionary.select("Select embedding model:", choices=embedding_choices).ask().embedding_model + embedding_config = [ + embedding_config for embedding_config in embedding_configs if embedding_config.embedding_model == embedding_model_name + ][0] + # create source - source = client.create_source(name=name) + source = client.create_source(name=name, embedding_config=embedding_config) # load data try: @@ -46,71 +66,3 @@ def load_directory( except Exception as e: typer.secho(f"Failed to load data from provided information.\n{e}", fg=typer.colors.RED) client.delete_source(source.id) - - -# @app.command("webpage") -# def load_webpage( -# name: Annotated[str, typer.Option(help="Name of dataset to load.")], -# urls: Annotated[List[str], typer.Option(help="List of urls to load.")], -# ): -# try: -# from llama_index.readers.web import SimpleWebPageReader -# -# docs = SimpleWebPageReader(html_to_text=True).load_data(urls) -# store_docs(name, docs) -# -# except ValueError as e: -# typer.secho(f"Failed to load webpage from provided information.\n{e}", fg=typer.colors.RED) - - -@app.command("vector-database") -def load_vector_database( - name: Annotated[str, typer.Option(help="Name of dataset to load.")], - uri: Annotated[str, typer.Option(help="Database URI.")], - table_name: Annotated[str, typer.Option(help="Name of table containing data.")], - text_column: Annotated[str, typer.Option(help="Name of column containing text.")], - embedding_column: Annotated[str, typer.Option(help="Name of column containing embedding.")], - user_id: Annotated[Optional[uuid.UUID], typer.Option(help="User ID to associate with dataset.")] = None, -): - """Load pre-computed embeddings into Letta from a database.""" - raise NotImplementedError - # try: - # config = LettaConfig.load() - # connector = VectorDBConnector( - # uri=uri, - # table_name=table_name, - # text_column=text_column, - # embedding_column=embedding_column, - # embedding_dim=config.default_embedding_config.embedding_dim, - # ) - # if not user_id: - # user_id = uuid.UUID(config.anon_clientid) - - # ms = MetadataStore(config) - # source = Source( - # name=name, - # user_id=user_id, - # embedding_model=config.default_embedding_config.embedding_model, - # embedding_dim=config.default_embedding_config.embedding_dim, - # ) - # ms.create_source(source) - # passage_storage = StorageConnector.get_storage_connector(TableType.PASSAGES, config, user_id) - # # TODO: also get document store - - # # ingest data into passage/document store - # try: - # num_passages, num_documents = load_data( - # connector=connector, - # source=source, - # embedding_config=config.default_embedding_config, - # document_store=None, - # passage_store=passage_storage, - # ) - # print(f"Loaded {num_passages} passages and {num_documents} files from {name}") - # except Exception as e: - # typer.secho(f"Failed to load data from provided information.\n{e}", fg=typer.colors.RED) - # ms.delete_source(source_id=source.id) - - # except ValueError as e: - # typer.secho(f"Failed to load VectorDB from provided information.\n{e}", fg=typer.colors.RED) - # raise diff --git a/letta/client/client.py b/letta/client/client.py index d4cedb033c..7e8ec30428 100644 --- a/letta/client/client.py +++ b/letta/client/client.py @@ -1319,6 +1319,7 @@ def create_source(self, name: str, embedding_config: Optional[EmbeddingConfig] = Returns: source (Source): Created source """ + assert embedding_config or self._default_embedding_config, f"Must specify embedding_config for source" source_create = SourceCreate(name=name, embedding_config=embedding_config or self._default_embedding_config) payload = source_create.model_dump() response = requests.post(f"{self.base_url}/{self.api_prefix}/sources", json=payload, headers=self.headers) @@ -2896,6 +2897,7 @@ def create_source(self, name: str, embedding_config: Optional[EmbeddingConfig] = Returns: source (Source): Created source """ + assert embedding_config or self._default_embedding_config, f"Must specify embedding_config for source" source = Source( name=name, embedding_config=embedding_config or self._default_embedding_config, organization_id=self.user.organization_id ) diff --git a/letta/main.py b/letta/main.py index 1f8e19efa9..6a394fcf64 100644 --- a/letta/main.py +++ b/letta/main.py @@ -191,7 +191,6 @@ def run_agent_loop( print(f"\nDumping memory contents:\n") print(f"{letta_agent.agent_state.memory.compile()}") print(f"{letta_agent.archival_memory.compile()}") - print(f"{letta_agent.recall_memory.compile()}") continue elif user_input.lower() == "/model": From 6fde66b4007eec89d606cccb7fe2a936bea3ec14 Mon Sep 17 00:00:00 2001 From: Sarah Wooders Date: Mon, 9 Dec 2024 15:18:31 -0800 Subject: [PATCH 22/39] chore: bump version 0.6.2 + and make postgres dependencies optional (#2183) --- letta/__init__.py | 2 +- poetry.lock | 231 +++++++++++++++++++++++----------------------- pyproject.toml | 6 +- 3 files changed, 120 insertions(+), 119 deletions(-) diff --git a/letta/__init__.py b/letta/__init__.py index 3dba086387..1ca57b875d 100644 --- a/letta/__init__.py +++ b/letta/__init__.py @@ -1,4 +1,4 @@ -__version__ = "0.6.1" +__version__ = "0.6.2" # import clients from letta.client.client import LocalClient, RESTClient, create_client diff --git a/poetry.lock b/poetry.lock index b53c0649be..f0cb082bd8 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1249,19 +1249,19 @@ files = [ [[package]] name = "e2b" -version = "1.0.4" +version = "1.0.5" description = "E2B SDK that give agents cloud environments" optional = true python-versions = "<4.0,>=3.8" files = [ - {file = "e2b-1.0.4-py3-none-any.whl", hash = "sha256:1a9c765eb1b2cc291c5ebd3f2e268f8fba9471a12f470f4651395b5753730170"}, - {file = "e2b-1.0.4.tar.gz", hash = "sha256:5ed3db4f984e52cf3aabb717725493ff060a8374b7c878b31bceeff46a0b5648"}, + {file = "e2b-1.0.5-py3-none-any.whl", hash = "sha256:a71bdec46f33d3e38e87d475d7fd2939bd7b6b753b819c9639ca211cd375b79e"}, + {file = "e2b-1.0.5.tar.gz", hash = "sha256:43c82705af7b7d4415c2510ff77dab4dc075351e0b769d6adf8e0d7bb4868d13"}, ] [package.dependencies] attrs = ">=23.2.0" httpcore = ">=1.0.5,<2.0.0" -httpx = ">=0.27.0,<0.28.0" +httpx = ">=0.27.0,<1.0.0" packaging = ">=24.1" protobuf = ">=3.20.0,<6.0.0" python-dateutil = ">=2.8.2" @@ -1269,19 +1269,19 @@ typing-extensions = ">=4.1.0" [[package]] name = "e2b-code-interpreter" -version = "1.0.2" +version = "1.0.3" description = "E2B Code Interpreter - Stateful code execution" optional = true python-versions = "<4.0,>=3.8" files = [ - {file = "e2b_code_interpreter-1.0.2-py3-none-any.whl", hash = "sha256:02f2786a094550be8b96093c7cfcae9ff24cbeddb4dff76f3c2e6c4d06d4ba86"}, - {file = "e2b_code_interpreter-1.0.2.tar.gz", hash = "sha256:b2a173209205bc0fce09a90b145cd6c739ff6130d9ec850bdc38e70c1b666f67"}, + {file = "e2b_code_interpreter-1.0.3-py3-none-any.whl", hash = "sha256:c638bd4ec1c99d9c4eaac541bc8b15134cf786f6c7c400d979cef96d62e485d8"}, + {file = "e2b_code_interpreter-1.0.3.tar.gz", hash = "sha256:36475acc001b1317ed129d65970fce6a7cc2d50e3fd3e8a13ad5d7d3e0fac237"}, ] [package.dependencies] attrs = ">=21.3.0" e2b = ">=1.0.4,<2.0.0" -httpx = ">=0.20.0,<0.28.0" +httpx = ">=0.20.0,<1.0.0" [[package]] name = "environs" @@ -2188,13 +2188,13 @@ files = [ [[package]] name = "huggingface-hub" -version = "0.26.3" +version = "0.26.5" description = "Client library to download and publish models, datasets and other repos on the huggingface.co hub" optional = false python-versions = ">=3.8.0" files = [ - {file = "huggingface_hub-0.26.3-py3-none-any.whl", hash = "sha256:e66aa99e569c2d5419240a9e553ad07245a5b1300350bfbc5a4945cf7432991b"}, - {file = "huggingface_hub-0.26.3.tar.gz", hash = "sha256:90e1fe62ffc26757a073aaad618422b899ccf9447c2bba8c902a90bef5b42e1d"}, + {file = "huggingface_hub-0.26.5-py3-none-any.whl", hash = "sha256:fb7386090bbe892072e64b85f7c4479fd2d65eea5f2543327c970d5169e83924"}, + {file = "huggingface_hub-0.26.5.tar.gz", hash = "sha256:1008bd18f60bfb65e8dbc0a97249beeeaa8c99d3c2fa649354df9fa5a13ed83b"}, ] [package.dependencies] @@ -2485,86 +2485,87 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "jiter" -version = "0.8.0" +version = "0.8.2" description = "Fast iterable JSON parser." optional = false python-versions = ">=3.8" files = [ - {file = "jiter-0.8.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:dee4eeb293ffcd2c3b31ebab684dbf7f7b71fe198f8eddcdf3a042cc6e10205a"}, - {file = "jiter-0.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:aad1e6e9b01cf0304dcee14db03e92e0073287a6297caf5caf2e9dbfea16a924"}, - {file = "jiter-0.8.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:504099fb7acdbe763e10690d560a25d4aee03d918d6a063f3a761d8a09fb833f"}, - {file = "jiter-0.8.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2373487caad7fe39581f588ab5c9262fc1ade078d448626fec93f4ffba528858"}, - {file = "jiter-0.8.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c341ecc3f9bccde952898b0c97c24f75b84b56a7e2f8bbc7c8e38cab0875a027"}, - {file = "jiter-0.8.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0e48e7a336529b9419d299b70c358d4ebf99b8f4b847ed3f1000ec9f320e8c0c"}, - {file = "jiter-0.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5ee157a8afd2943be690db679f82fafb8d347a8342e8b9c34863de30c538d55"}, - {file = "jiter-0.8.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d7dceae3549b80087f913aad4acc2a7c1e0ab7cb983effd78bdc9c41cabdcf18"}, - {file = "jiter-0.8.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e29e9ecce53d396772590438214cac4ab89776f5e60bd30601f1050b34464019"}, - {file = "jiter-0.8.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fa1782f22d5f92c620153133f35a9a395d3f3823374bceddd3e7032e2fdfa0b1"}, - {file = "jiter-0.8.0-cp310-none-win32.whl", hash = "sha256:f754ef13b4e4f67a3bf59fe974ef4342523801c48bf422f720bd37a02a360584"}, - {file = "jiter-0.8.0-cp310-none-win_amd64.whl", hash = "sha256:796f750b65f5d605f5e7acaccc6b051675e60c41d7ac3eab40dbd7b5b81a290f"}, - {file = "jiter-0.8.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:f6f4e645efd96b4690b9b6091dbd4e0fa2885ba5c57a0305c1916b75b4f30ff6"}, - {file = "jiter-0.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f61cf6d93c1ade9b8245c9f14b7900feadb0b7899dbe4aa8de268b705647df81"}, - {file = "jiter-0.8.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0396bc5cb1309c6dab085e70bb3913cdd92218315e47b44afe9eace68ee8adaa"}, - {file = "jiter-0.8.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:62d0e42ec5dc772bd8554a304358220be5d97d721c4648b23f3a9c01ccc2cb26"}, - {file = "jiter-0.8.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ec4b711989860705733fc59fb8c41b2def97041cea656b37cf6c8ea8dee1c3f4"}, - {file = "jiter-0.8.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:859cc35bf304ab066d88f10a44a3251a9cd057fb11ec23e00be22206db878f4f"}, - {file = "jiter-0.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5000195921aa293b39b9b5bc959d7fa658e7f18f938c0e52732da8e3cc70a278"}, - {file = "jiter-0.8.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:36050284c0abde57aba34964d3920f3d6228211b65df7187059bb7c7f143759a"}, - {file = "jiter-0.8.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a88f608e050cfe45c48d771e86ecdbf5258314c883c986d4217cc79e1fb5f689"}, - {file = "jiter-0.8.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:646cf4237665b2e13b4159d8f26d53f59bc9f2e6e135e3a508a2e5dd26d978c6"}, - {file = "jiter-0.8.0-cp311-none-win32.whl", hash = "sha256:21fe5b8345db1b3023052b2ade9bb4d369417827242892051244af8fae8ba231"}, - {file = "jiter-0.8.0-cp311-none-win_amd64.whl", hash = "sha256:30c2161c5493acf6b6c3c909973fb64ae863747def01cc7574f3954e0a15042c"}, - {file = "jiter-0.8.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:d91a52d8f49ada2672a4b808a0c5c25d28f320a2c9ca690e30ebd561eb5a1002"}, - {file = "jiter-0.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c38cf25cf7862f61410b7a49684d34eb3b5bcbd7ddaf4773eea40e0bd43de706"}, - {file = "jiter-0.8.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6189beb5c4b3117624be6b2e84545cff7611f5855d02de2d06ff68e316182be"}, - {file = "jiter-0.8.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e13fa849c0e30643554add089983caa82f027d69fad8f50acadcb21c462244ab"}, - {file = "jiter-0.8.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d7765ca159d0a58e8e0f8ca972cd6d26a33bc97b4480d0d2309856763807cd28"}, - {file = "jiter-0.8.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1b0befe7c6e9fc867d5bed21bab0131dfe27d1fa5cd52ba2bced67da33730b7d"}, - {file = "jiter-0.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7d6363d4c6f1052b1d8b494eb9a72667c3ef5f80ebacfe18712728e85327000"}, - {file = "jiter-0.8.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a873e57009863eeac3e3969e4653f07031d6270d037d6224415074ac17e5505c"}, - {file = "jiter-0.8.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:2582912473c0d9940791479fe1bf2976a34f212eb8e0a82ee9e645ac275c5d16"}, - {file = "jiter-0.8.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:646163201af42f55393ee6e8f6136b8df488253a6533f4230a64242ecbfe6048"}, - {file = "jiter-0.8.0-cp312-none-win32.whl", hash = "sha256:96e75c9abfbf7387cba89a324d2356d86d8897ac58c956017d062ad510832dae"}, - {file = "jiter-0.8.0-cp312-none-win_amd64.whl", hash = "sha256:ed6074552b4a32e047b52dad5ab497223721efbd0e9efe68c67749f094a092f7"}, - {file = "jiter-0.8.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:dd5e351cb9b3e676ec3360a85ea96def515ad2b83c8ae3a251ce84985a2c9a6f"}, - {file = "jiter-0.8.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ba9f12b0f801ecd5ed0cec29041dc425d1050922b434314c592fc30d51022467"}, - {file = "jiter-0.8.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a7ba461c3681728d556392e8ae56fb44a550155a24905f01982317b367c21dd4"}, - {file = "jiter-0.8.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3a15ed47ab09576db560dbc5c2c5a64477535beb056cd7d997d5dd0f2798770e"}, - {file = "jiter-0.8.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cef55042816d0737142b0ec056c0356a5f681fb8d6aa8499b158e87098f4c6f8"}, - {file = "jiter-0.8.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:549f170215adeb5e866f10617c3d019d8eb4e6d4e3c6b724b3b8c056514a3487"}, - {file = "jiter-0.8.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f867edeb279d22020877640d2ea728de5817378c60a51be8af731a8a8f525306"}, - {file = "jiter-0.8.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aef8845f463093799db4464cee2aa59d61aa8edcb3762aaa4aacbec3f478c929"}, - {file = "jiter-0.8.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:d0d6e22e4062c3d3c1bf3594baa2f67fc9dcdda8275abad99e468e0c6540bc54"}, - {file = "jiter-0.8.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:079e62e64696241ac3f408e337aaac09137ed760ccf2b72b1094b48745c13641"}, - {file = "jiter-0.8.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:74d2b56ed3da5760544df53b5f5c39782e68efb64dc3aa0bba4cc08815e6fae8"}, - {file = "jiter-0.8.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:798dafe108cba58a7bb0a50d4d5971f98bb7f3c974e1373e750de6eb21c1a329"}, - {file = "jiter-0.8.0-cp313-none-win32.whl", hash = "sha256:ca6d3064dfc743eb0d3d7539d89d4ba886957c717567adc72744341c1e3573c9"}, - {file = "jiter-0.8.0-cp313-none-win_amd64.whl", hash = "sha256:38caedda64fe1f04b06d7011fc15e86b3b837ed5088657bf778656551e3cd8f9"}, - {file = "jiter-0.8.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:bb5c8a0a8d081c338db22e5b8d53a89a121790569cbb85f7d3cfb1fe0fbe9836"}, - {file = "jiter-0.8.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:202dbe8970bfb166fab950eaab8f829c505730a0b33cc5e1cfb0a1c9dd56b2f9"}, - {file = "jiter-0.8.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9046812e5671fdcfb9ae02881fff1f6a14d484b7e8b3316179a372cdfa1e8026"}, - {file = "jiter-0.8.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e6ac56425023e52d65150918ae25480d0a1ce2a6bf5ea2097f66a2cc50f6d692"}, - {file = "jiter-0.8.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7dfcf97210c6eab9d2a1c6af15dd39e1d5154b96a7145d0a97fa1df865b7b834"}, - {file = "jiter-0.8.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d4e3c8444d418686f78c9a547b9b90031faf72a0a1a46bfec7fb31edbd889c0d"}, - {file = "jiter-0.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6507011a299b7f578559084256405a8428875540d8d13530e00b688e41b09493"}, - {file = "jiter-0.8.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0aae4738eafdd34f0f25c2d3668ce9e8fa0d7cb75a2efae543c9a69aebc37323"}, - {file = "jiter-0.8.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7f5d782e790396b13f2a7b36bdcaa3736a33293bdda80a4bf1a3ce0cd5ef9f15"}, - {file = "jiter-0.8.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cc7f993bc2c4e03015445adbb16790c303282fce2e8d9dc3a3905b1d40e50564"}, - {file = "jiter-0.8.0-cp38-none-win32.whl", hash = "sha256:d4a8a6eda018a991fa58ef707dd51524055d11f5acb2f516d70b1be1d15ab39c"}, - {file = "jiter-0.8.0-cp38-none-win_amd64.whl", hash = "sha256:4cca948a3eda8ea24ed98acb0ee19dc755b6ad2e570ec85e1527d5167f91ff67"}, - {file = "jiter-0.8.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:ef89663678d8257063ce7c00d94638e05bd72f662c5e1eb0e07a172e6c1a9a9f"}, - {file = "jiter-0.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c402ddcba90b4cc71db3216e8330f4db36e0da2c78cf1d8a9c3ed8f272602a94"}, - {file = "jiter-0.8.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a6dfe795b7a173a9f8ba7421cdd92193d60c1c973bbc50dc3758a9ad0fa5eb6"}, - {file = "jiter-0.8.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8ec29a31b9abd6be39453a2c45da067138a3005d65d2c0507c530e0f1fdcd9a4"}, - {file = "jiter-0.8.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2a488f8c54bddc3ddefaf3bfd6de4a52c97fc265d77bc2dcc6ee540c17e8c342"}, - {file = "jiter-0.8.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aeb5561adf4d26ca0d01b5811b4d7b56a8986699a473d700757b4758ef787883"}, - {file = "jiter-0.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ab961858d7ad13132328517d29f121ae1b2d94502191d6bcf96bddcc8bb5d1c"}, - {file = "jiter-0.8.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a207e718d114d23acf0850a2174d290f42763d955030d9924ffa4227dbd0018f"}, - {file = "jiter-0.8.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:733bc9dc8ff718a0ae4695239e9268eb93e88b73b367dfac3ec227d8ce2f1e77"}, - {file = "jiter-0.8.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d1ec27299e22d05e13a06e460bf7f75f26f9aaa0e0fb7d060f40e88df1d81faa"}, - {file = "jiter-0.8.0-cp39-none-win32.whl", hash = "sha256:e8dbfcb46553e6661d3fc1f33831598fcddf73d0f67834bce9fc3e9ebfe5c439"}, - {file = "jiter-0.8.0-cp39-none-win_amd64.whl", hash = "sha256:af2ce2487b3a93747e2cb5150081d4ae1e5874fce5924fc1a12e9e768e489ad8"}, - {file = "jiter-0.8.0.tar.gz", hash = "sha256:86fee98b569d4cc511ff2e3ec131354fafebd9348a487549c31ad371ae730310"}, + {file = "jiter-0.8.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:ca8577f6a413abe29b079bc30f907894d7eb07a865c4df69475e868d73e71c7b"}, + {file = "jiter-0.8.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b25bd626bde7fb51534190c7e3cb97cee89ee76b76d7585580e22f34f5e3f393"}, + {file = "jiter-0.8.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5c826a221851a8dc028eb6d7d6429ba03184fa3c7e83ae01cd6d3bd1d4bd17d"}, + {file = "jiter-0.8.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d35c864c2dff13dfd79fb070fc4fc6235d7b9b359efe340e1261deb21b9fcb66"}, + {file = "jiter-0.8.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f557c55bc2b7676e74d39d19bcb8775ca295c7a028246175d6a8b431e70835e5"}, + {file = "jiter-0.8.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:580ccf358539153db147e40751a0b41688a5ceb275e6f3e93d91c9467f42b2e3"}, + {file = "jiter-0.8.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af102d3372e917cffce49b521e4c32c497515119dc7bd8a75665e90a718bbf08"}, + {file = "jiter-0.8.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cadcc978f82397d515bb2683fc0d50103acff2a180552654bb92d6045dec2c49"}, + {file = "jiter-0.8.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ba5bdf56969cad2019d4e8ffd3f879b5fdc792624129741d3d83fc832fef8c7d"}, + {file = "jiter-0.8.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3b94a33a241bee9e34b8481cdcaa3d5c2116f575e0226e421bed3f7a6ea71cff"}, + {file = "jiter-0.8.2-cp310-cp310-win32.whl", hash = "sha256:6e5337bf454abddd91bd048ce0dca5134056fc99ca0205258766db35d0a2ea43"}, + {file = "jiter-0.8.2-cp310-cp310-win_amd64.whl", hash = "sha256:4a9220497ca0cb1fe94e3f334f65b9b5102a0b8147646118f020d8ce1de70105"}, + {file = "jiter-0.8.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:2dd61c5afc88a4fda7d8b2cf03ae5947c6ac7516d32b7a15bf4b49569a5c076b"}, + {file = "jiter-0.8.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a6c710d657c8d1d2adbbb5c0b0c6bfcec28fd35bd6b5f016395f9ac43e878a15"}, + {file = "jiter-0.8.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9584de0cd306072635fe4b89742bf26feae858a0683b399ad0c2509011b9dc0"}, + {file = "jiter-0.8.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5a90a923338531b7970abb063cfc087eebae6ef8ec8139762007188f6bc69a9f"}, + {file = "jiter-0.8.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21974d246ed0181558087cd9f76e84e8321091ebfb3a93d4c341479a736f099"}, + {file = "jiter-0.8.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:32475a42b2ea7b344069dc1e81445cfc00b9d0e3ca837f0523072432332e9f74"}, + {file = "jiter-0.8.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b9931fd36ee513c26b5bf08c940b0ac875de175341cbdd4fa3be109f0492586"}, + {file = "jiter-0.8.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ce0820f4a3a59ddced7fce696d86a096d5cc48d32a4183483a17671a61edfddc"}, + {file = "jiter-0.8.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8ffc86ae5e3e6a93765d49d1ab47b6075a9c978a2b3b80f0f32628f39caa0c88"}, + {file = "jiter-0.8.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5127dc1abd809431172bc3fbe8168d6b90556a30bb10acd5ded41c3cfd6f43b6"}, + {file = "jiter-0.8.2-cp311-cp311-win32.whl", hash = "sha256:66227a2c7b575720c1871c8800d3a0122bb8ee94edb43a5685aa9aceb2782d44"}, + {file = "jiter-0.8.2-cp311-cp311-win_amd64.whl", hash = "sha256:cde031d8413842a1e7501e9129b8e676e62a657f8ec8166e18a70d94d4682855"}, + {file = "jiter-0.8.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:e6ec2be506e7d6f9527dae9ff4b7f54e68ea44a0ef6b098256ddf895218a2f8f"}, + {file = "jiter-0.8.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:76e324da7b5da060287c54f2fabd3db5f76468006c811831f051942bf68c9d44"}, + {file = "jiter-0.8.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:180a8aea058f7535d1c84183c0362c710f4750bef66630c05f40c93c2b152a0f"}, + {file = "jiter-0.8.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:025337859077b41548bdcbabe38698bcd93cfe10b06ff66617a48ff92c9aec60"}, + {file = "jiter-0.8.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ecff0dc14f409599bbcafa7e470c00b80f17abc14d1405d38ab02e4b42e55b57"}, + {file = "jiter-0.8.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ffd9fee7d0775ebaba131f7ca2e2d83839a62ad65e8e02fe2bd8fc975cedeb9e"}, + {file = "jiter-0.8.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14601dcac4889e0a1c75ccf6a0e4baf70dbc75041e51bcf8d0e9274519df6887"}, + {file = "jiter-0.8.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:92249669925bc1c54fcd2ec73f70f2c1d6a817928480ee1c65af5f6b81cdf12d"}, + {file = "jiter-0.8.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e725edd0929fa79f8349ab4ec7f81c714df51dc4e991539a578e5018fa4a7152"}, + {file = "jiter-0.8.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bf55846c7b7a680eebaf9c3c48d630e1bf51bdf76c68a5f654b8524335b0ad29"}, + {file = "jiter-0.8.2-cp312-cp312-win32.whl", hash = "sha256:7efe4853ecd3d6110301665a5178b9856be7e2a9485f49d91aa4d737ad2ae49e"}, + {file = "jiter-0.8.2-cp312-cp312-win_amd64.whl", hash = "sha256:83c0efd80b29695058d0fd2fa8a556490dbce9804eac3e281f373bbc99045f6c"}, + {file = "jiter-0.8.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:ca1f08b8e43dc3bd0594c992fb1fd2f7ce87f7bf0d44358198d6da8034afdf84"}, + {file = "jiter-0.8.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5672a86d55416ccd214c778efccf3266b84f87b89063b582167d803246354be4"}, + {file = "jiter-0.8.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58dc9bc9767a1101f4e5e22db1b652161a225874d66f0e5cb8e2c7d1c438b587"}, + {file = "jiter-0.8.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:37b2998606d6dadbb5ccda959a33d6a5e853252d921fec1792fc902351bb4e2c"}, + {file = "jiter-0.8.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4ab9a87f3784eb0e098f84a32670cfe4a79cb6512fd8f42ae3d0709f06405d18"}, + {file = "jiter-0.8.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:79aec8172b9e3c6d05fd4b219d5de1ac616bd8da934107325a6c0d0e866a21b6"}, + {file = "jiter-0.8.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:711e408732d4e9a0208008e5892c2966b485c783cd2d9a681f3eb147cf36c7ef"}, + {file = "jiter-0.8.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:653cf462db4e8c41995e33d865965e79641ef45369d8a11f54cd30888b7e6ff1"}, + {file = "jiter-0.8.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:9c63eaef32b7bebac8ebebf4dabebdbc6769a09c127294db6babee38e9f405b9"}, + {file = "jiter-0.8.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:eb21aaa9a200d0a80dacc7a81038d2e476ffe473ffdd9c91eb745d623561de05"}, + {file = "jiter-0.8.2-cp313-cp313-win32.whl", hash = "sha256:789361ed945d8d42850f919342a8665d2dc79e7e44ca1c97cc786966a21f627a"}, + {file = "jiter-0.8.2-cp313-cp313-win_amd64.whl", hash = "sha256:ab7f43235d71e03b941c1630f4b6e3055d46b6cb8728a17663eaac9d8e83a865"}, + {file = "jiter-0.8.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:b426f72cd77da3fec300ed3bc990895e2dd6b49e3bfe6c438592a3ba660e41ca"}, + {file = "jiter-0.8.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2dd880785088ff2ad21ffee205e58a8c1ddabc63612444ae41e5e4b321b39c0"}, + {file = "jiter-0.8.2-cp313-cp313t-win_amd64.whl", hash = "sha256:3ac9f578c46f22405ff7f8b1f5848fb753cc4b8377fbec8470a7dc3997ca7566"}, + {file = "jiter-0.8.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:9e1fa156ee9454642adb7e7234a383884452532bc9d53d5af2d18d98ada1d79c"}, + {file = "jiter-0.8.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0cf5dfa9956d96ff2efb0f8e9c7d055904012c952539a774305aaaf3abdf3d6c"}, + {file = "jiter-0.8.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e52bf98c7e727dd44f7c4acb980cb988448faeafed8433c867888268899b298b"}, + {file = "jiter-0.8.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a2ecaa3c23e7a7cf86d00eda3390c232f4d533cd9ddea4b04f5d0644faf642c5"}, + {file = "jiter-0.8.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:08d4c92bf480e19fc3f2717c9ce2aa31dceaa9163839a311424b6862252c943e"}, + {file = "jiter-0.8.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:99d9a1eded738299ba8e106c6779ce5c3893cffa0e32e4485d680588adae6db8"}, + {file = "jiter-0.8.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d20be8b7f606df096e08b0b1b4a3c6f0515e8dac296881fe7461dfa0fb5ec817"}, + {file = "jiter-0.8.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d33f94615fcaf872f7fd8cd98ac3b429e435c77619777e8a449d9d27e01134d1"}, + {file = "jiter-0.8.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:317b25e98a35ffec5c67efe56a4e9970852632c810d35b34ecdd70cc0e47b3b6"}, + {file = "jiter-0.8.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fc9043259ee430ecd71d178fccabd8c332a3bf1e81e50cae43cc2b28d19e4cb7"}, + {file = "jiter-0.8.2-cp38-cp38-win32.whl", hash = "sha256:fc5adda618205bd4678b146612ce44c3cbfdee9697951f2c0ffdef1f26d72b63"}, + {file = "jiter-0.8.2-cp38-cp38-win_amd64.whl", hash = "sha256:cd646c827b4f85ef4a78e4e58f4f5854fae0caf3db91b59f0d73731448a970c6"}, + {file = "jiter-0.8.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:e41e75344acef3fc59ba4765df29f107f309ca9e8eace5baacabd9217e52a5ee"}, + {file = "jiter-0.8.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7f22b16b35d5c1df9dfd58843ab2cd25e6bf15191f5a236bed177afade507bfc"}, + {file = "jiter-0.8.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7200b8f7619d36aa51c803fd52020a2dfbea36ffec1b5e22cab11fd34d95a6d"}, + {file = "jiter-0.8.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:70bf4c43652cc294040dbb62256c83c8718370c8b93dd93d934b9a7bf6c4f53c"}, + {file = "jiter-0.8.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f9d471356dc16f84ed48768b8ee79f29514295c7295cb41e1133ec0b2b8d637d"}, + {file = "jiter-0.8.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:859e8eb3507894093d01929e12e267f83b1d5f6221099d3ec976f0c995cb6bd9"}, + {file = "jiter-0.8.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eaa58399c01db555346647a907b4ef6d4f584b123943be6ed5588c3f2359c9f4"}, + {file = "jiter-0.8.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8f2d5ed877f089862f4c7aacf3a542627c1496f972a34d0474ce85ee7d939c27"}, + {file = "jiter-0.8.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:03c9df035d4f8d647f8c210ddc2ae0728387275340668fb30d2421e17d9a0841"}, + {file = "jiter-0.8.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8bd2a824d08d8977bb2794ea2682f898ad3d8837932e3a74937e93d62ecbb637"}, + {file = "jiter-0.8.2-cp39-cp39-win32.whl", hash = "sha256:ca29b6371ebc40e496995c94b988a101b9fbbed48a51190a4461fcb0a68b4a36"}, + {file = "jiter-0.8.2-cp39-cp39-win_amd64.whl", hash = "sha256:1c0dfbd1be3cbefc7510102370d86e35d1d53e5a93d48519688b1bf0f761160a"}, + {file = "jiter-0.8.2.tar.gz", hash = "sha256:cd73d3e740666d0e639f678adb176fad25c1bcbdae88d8d7b857e1783bb4212d"}, ] [[package]] @@ -2720,19 +2721,19 @@ adal = ["adal (>=1.0.2)"] [[package]] name = "langchain" -version = "0.3.9" +version = "0.3.10" description = "Building applications with LLMs through composability" optional = false python-versions = "<4.0,>=3.9" files = [ - {file = "langchain-0.3.9-py3-none-any.whl", hash = "sha256:ade5a1fee2f94f2e976a6c387f97d62cc7f0b9f26cfe0132a41d2bda761e1045"}, - {file = "langchain-0.3.9.tar.gz", hash = "sha256:4950c4ad627d0aa95ce6bda7de453e22059b7e7836b562a8f781fb0b05d7294c"}, + {file = "langchain-0.3.10-py3-none-any.whl", hash = "sha256:4ae38d4c9f9ec5cd1a16a505b451a57c0aab2807d6c9f8cb5b346d06301b2232"}, + {file = "langchain-0.3.10.tar.gz", hash = "sha256:aef0f9bdaf4a4d3d50aec348438135987bda1d83070b49f77032f561d3a761d8"}, ] [package.dependencies] aiohttp = ">=3.8.3,<4.0.0" async-timeout = {version = ">=4.0.0,<5.0.0", markers = "python_version < \"3.11\""} -langchain-core = ">=0.3.21,<0.4.0" +langchain-core = ">=0.3.22,<0.4.0" langchain-text-splitters = ">=0.3.0,<0.4.0" langsmith = ">=0.1.17,<0.2.0" numpy = [ @@ -2747,21 +2748,21 @@ tenacity = ">=8.1.0,<8.4.0 || >8.4.0,<10" [[package]] name = "langchain-community" -version = "0.3.9" +version = "0.3.10" description = "Community contributed LangChain integrations." optional = true python-versions = "<4.0,>=3.9" files = [ - {file = "langchain_community-0.3.9-py3-none-any.whl", hash = "sha256:ccccf9e703ccb7d929034be56e36177e3ee796e5ab8417aa79c25dc6ef40e1bd"}, - {file = "langchain_community-0.3.9.tar.gz", hash = "sha256:b0b44c530c7647a360f2321749e7b7e95a3cbdfa2fceed7e1214228833996223"}, + {file = "langchain_community-0.3.10-py3-none-any.whl", hash = "sha256:f718de973f60c6d0f10c71321e461cf41251cc74543f064b7b2ee7ae06b9a43f"}, + {file = "langchain_community-0.3.10.tar.gz", hash = "sha256:f503e90cbb44ddb14afb141552a93fd9fbd0b216407315a6608f901861a938f9"}, ] [package.dependencies] aiohttp = ">=3.8.3,<4.0.0" dataclasses-json = ">=0.5.7,<0.7" httpx-sse = ">=0.4.0,<0.5.0" -langchain = ">=0.3.8,<0.4.0" -langchain-core = ">=0.3.21,<0.4.0" +langchain = ">=0.3.10,<0.4.0" +langchain-core = ">=0.3.22,<0.4.0" langsmith = ">=0.1.125,<0.2.0" numpy = [ {version = ">=1.22.4,<2", markers = "python_version < \"3.12\""}, @@ -2775,13 +2776,13 @@ tenacity = ">=8.1.0,<8.4.0 || >8.4.0,<10" [[package]] name = "langchain-core" -version = "0.3.21" +version = "0.3.22" description = "Building applications with LLMs through composability" optional = false python-versions = "<4.0,>=3.9" files = [ - {file = "langchain_core-0.3.21-py3-none-any.whl", hash = "sha256:7e723dff80946a1198976c6876fea8326dc82566ef9bcb5f8d9188f738733665"}, - {file = "langchain_core-0.3.21.tar.gz", hash = "sha256:561b52b258ffa50a9fb11d7a1940ebfd915654d1ec95b35e81dfd5ee84143411"}, + {file = "langchain_core-0.3.22-py3-none-any.whl", hash = "sha256:b40b036b3bd4abc1dfc820e149f5a3c4abef2fee83eb807c4310a41a064580e0"}, + {file = "langchain_core-0.3.22.tar.gz", hash = "sha256:c61c6d62f137dff2a1ec785473a3225e4fa237e53eac88f5359fda664dc5d91c"}, ] [package.dependencies] @@ -2798,18 +2799,18 @@ typing-extensions = ">=4.7" [[package]] name = "langchain-openai" -version = "0.2.11" +version = "0.2.12" description = "An integration package connecting OpenAI and LangChain" optional = false python-versions = "<4.0,>=3.9" files = [ - {file = "langchain_openai-0.2.11-py3-none-any.whl", hash = "sha256:c019ae915a5782943bee9503388e65c8622d400e0451ef885f3e4989cf35727f"}, - {file = "langchain_openai-0.2.11.tar.gz", hash = "sha256:563bd843092d260c7ffd88b8e0e6b830f36347e058e62a6d5e9cc4c461a8da98"}, + {file = "langchain_openai-0.2.12-py3-none-any.whl", hash = "sha256:916965c45584d9ea565825ad3bb7629b1ff57f12f36d4b937e5b7d65903839d6"}, + {file = "langchain_openai-0.2.12.tar.gz", hash = "sha256:8b92096623065a2820e89aa5fb0a262fb109d56c346e3b09ba319af424c45cd1"}, ] [package.dependencies] langchain-core = ">=0.3.21,<0.4.0" -openai = ">=1.54.0,<2.0.0" +openai = ">=1.55.3,<2.0.0" tiktoken = ">=0.7,<1" [[package]] @@ -3158,13 +3159,13 @@ llama-parse = ">=0.5.0" [[package]] name = "llama-parse" -version = "0.5.16" +version = "0.5.17" description = "Parse files into RAG-Optimized formats." optional = false python-versions = "<4.0,>=3.9" files = [ - {file = "llama_parse-0.5.16-py3-none-any.whl", hash = "sha256:a0b72770b1101604d02faa8236024eadd494fd135a833fb23a22a3ab570381fa"}, - {file = "llama_parse-0.5.16.tar.gz", hash = "sha256:609a9262461b787bab116e6ab74e52339e2950623f20867578e49d91e8974641"}, + {file = "llama_parse-0.5.17-py3-none-any.whl", hash = "sha256:0981c7e4ac21bc3b314830c6e9eaed4b20db874ec8f8868540707cf2cca07051"}, + {file = "llama_parse-0.5.17.tar.gz", hash = "sha256:2ba2700ca3b15e84ef072fedcbbfeae2fc13ce7b63fee20fcd5249e6fcdbd381"}, ] [package.dependencies] @@ -3205,13 +3206,13 @@ Werkzeug = ">=2.0.0" [[package]] name = "mako" -version = "1.3.7" +version = "1.3.8" description = "A super-fast templating language that borrows the best ideas from the existing templating languages." optional = false python-versions = ">=3.8" files = [ - {file = "Mako-1.3.7-py3-none-any.whl", hash = "sha256:d18f990ad57f800ce8e76cbfb0b74afe471c293517e9f5003ace6dad5aa72c36"}, - {file = "mako-1.3.7.tar.gz", hash = "sha256:20405b1232e0759f0e7d87b01f6bb94fce0761747f1cb876ecf90bd512d0b639"}, + {file = "Mako-1.3.8-py3-none-any.whl", hash = "sha256:42f48953c7eb91332040ff567eb7eea69b22e7a4affbc5ba8e845e8f730f6627"}, + {file = "mako-1.3.8.tar.gz", hash = "sha256:577b97e414580d3e088d47c2dbbe9594aa7a5146ed2875d4dfa9075af2dd3cc8"}, ] [package.dependencies] @@ -3910,13 +3911,13 @@ sympy = "*" [[package]] name = "openai" -version = "1.57.0" +version = "1.57.1" description = "The official Python library for the openai API" optional = false python-versions = ">=3.8" files = [ - {file = "openai-1.57.0-py3-none-any.whl", hash = "sha256:972e36960b821797952da3dc4532f486c28e28a2a332d7d0c5407f242e9d9c39"}, - {file = "openai-1.57.0.tar.gz", hash = "sha256:76f91971c4bdbd78380c9970581075e0337b5d497c2fbf7b5255078f4b31abf9"}, + {file = "openai-1.57.1-py3-none-any.whl", hash = "sha256:3865686c927e93492d1145938d4a24b634951531c4b2769d43ca5dbd4b25d8fd"}, + {file = "openai-1.57.1.tar.gz", hash = "sha256:a95f22e04ab3df26e64a15d958342265e802314131275908b3b3e36f8c5d4377"}, ] [package.dependencies] @@ -4740,7 +4741,7 @@ test = ["pytest", "pytest-xdist", "setuptools"] name = "psycopg2" version = "2.9.10" description = "psycopg2 - Python-PostgreSQL Database Adapter" -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "psycopg2-2.9.10-cp310-cp310-win32.whl", hash = "sha256:5df2b672140f95adb453af93a7d669d7a7bf0a56bcd26f1502329166f4a61716"}, @@ -4758,7 +4759,7 @@ files = [ name = "psycopg2-binary" version = "2.9.10" description = "psycopg2 - Python-PostgreSQL Database Adapter" -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "psycopg2-binary-2.9.10.tar.gz", hash = "sha256:4b3df0e6990aa98acda57d983942eff13d824135fe2250e6522edaa782a06de2"}, @@ -7554,4 +7555,4 @@ tests = ["wikipedia"] [metadata] lock-version = "2.0" python-versions = "<3.13,>=3.10" -content-hash = "1293bc3a4f2bf98a65b547ce57d62ab0c1f26b6a035241c68327e83d71b2e4fd" +content-hash = "04884f8e0f0dba223d058969636575e96aa0b8d089bbabba6425acc82ac4ea88" diff --git a/pyproject.toml b/pyproject.toml index 24cc74cbed..cf07689a68 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "letta" -version = "0.6.1" +version = "0.6.2" packages = [ {include = "letta"} ] @@ -70,8 +70,8 @@ composio-langchain = "^0.5.28" composio-core = "^0.5.51" alembic = "^1.13.3" pyhumps = "^3.8.0" -psycopg2 = "^2.9.10" -psycopg2-binary = "^2.9.10" +psycopg2 = {version = "^2.9.10", optional = true} +psycopg2-binary = {version = "^2.9.10", optional = true} e2b-code-interpreter = {version = "^1.0.1", optional = true} pathvalidate = "^3.2.1" langchain-community = {version = "^0.3.7", optional = true} From f72f4df275947f12b9f6b6ebc452b5cbb2d6a22e Mon Sep 17 00:00:00 2001 From: Kevin Lin Date: Mon, 9 Dec 2024 18:00:49 -0700 Subject: [PATCH 23/39] fix: remove dedup messages (#2204) --- letta/offline_memory_agent.py | 7 ++----- tests/test_offline_memory_agent.py | 2 +- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/letta/offline_memory_agent.py b/letta/offline_memory_agent.py index b8f68ea7f2..cceefb4370 100644 --- a/letta/offline_memory_agent.py +++ b/letta/offline_memory_agent.py @@ -150,11 +150,8 @@ def step( step_count = 0 while counter < self.max_memory_rethinks: - # This is hacky but we need to do this for now - # TODO: REMOVE THIS - for m in next_input_message: - m.id = m._generate_id() - + if counter > 0: + next_input_message = [] kwargs["ms"] = ms kwargs["first_message"] = False step_response = self.inner_step( diff --git a/tests/test_offline_memory_agent.py b/tests/test_offline_memory_agent.py index d642d159c6..c3cbb71dc0 100644 --- a/tests/test_offline_memory_agent.py +++ b/tests/test_offline_memory_agent.py @@ -98,7 +98,7 @@ def test_ripple_edit(client, mock_e2b_api_key_none): assert conversation_agent.memory.get_block("rethink_memory_block").value != "[empty]" # Clean up agent - client.create_agent(conversation_agent.id) + client.delete_agent(conversation_agent.id) client.delete_agent(offline_memory_agent.id) From 85a9046c6361b0b974f13e8007360235971d5b77 Mon Sep 17 00:00:00 2001 From: Charles Packer Date: Mon, 9 Dec 2024 18:23:05 -0800 Subject: [PATCH 24/39] feat: add an async messages route (`/agent/{agent_id}/messages/async`) (#2206) --- letta/client/client.py | 34 ++++++- letta/server/rest_api/routers/v1/agents.py | 101 ++++++++++++++++++++- tests/test_client.py | 26 ++++++ 3 files changed, 159 insertions(+), 2 deletions(-) diff --git a/letta/client/client.py b/letta/client/client.py index 7e8ec30428..97f36cd927 100644 --- a/letta/client/client.py +++ b/letta/client/client.py @@ -960,7 +960,6 @@ def send_message( # TODO: figure out how to handle stream_steps and stream_tokens # When streaming steps is True, stream_tokens must be False - request = LettaRequest(messages=messages) if stream_tokens or stream_steps: from letta.client.streaming import _sse_post @@ -985,6 +984,39 @@ def send_message( return response + def send_message_async( + self, + message: str, + role: str, + agent_id: Optional[str] = None, + name: Optional[str] = None, + ) -> Job: + """ + Send a message to an agent (async, returns a job) + + Args: + message (str): Message to send + role (str): Role of the message + agent_id (str): ID of the agent + name(str): Name of the sender + + Returns: + job (Job): Information about the async job + """ + messages = [MessageCreate(role=MessageRole(role), text=message, name=name)] + + request = LettaRequest(messages=messages) + response = requests.post( + f"{self.base_url}/{self.api_prefix}/agents/{agent_id}/messages/async", + json=request.model_dump(), + headers=self.headers, + ) + if response.status_code != 200: + raise ValueError(f"Failed to send message: {response.text}") + response = Job(**response.json()) + + return response + # humans / personas def list_blocks(self, label: Optional[str] = None, templates_only: Optional[bool] = True) -> List[Block]: diff --git a/letta/server/rest_api/routers/v1/agents.py b/letta/server/rest_api/routers/v1/agents.py index e3922a28f9..e7f68dc96d 100644 --- a/letta/server/rest_api/routers/v1/agents.py +++ b/letta/server/rest_api/routers/v1/agents.py @@ -3,7 +3,16 @@ from datetime import datetime from typing import List, Optional, Union -from fastapi import APIRouter, Body, Depends, Header, HTTPException, Query, status +from fastapi import ( + APIRouter, + BackgroundTasks, + Body, + Depends, + Header, + HTTPException, + Query, + status, +) from fastapi.responses import JSONResponse, StreamingResponse from letta.constants import DEFAULT_MESSAGE_TOOL, DEFAULT_MESSAGE_TOOL_KWARG @@ -14,6 +23,7 @@ CreateBlock, ) from letta.schemas.enums import MessageStreamStatus +from letta.schemas.job import Job, JobStatus, JobUpdate from letta.schemas.letta_message import ( LegacyLettaMessage, LettaMessage, @@ -32,6 +42,7 @@ from letta.schemas.passage import Passage from letta.schemas.source import Source from letta.schemas.tool import Tool +from letta.schemas.user import User from letta.server.rest_api.interface import StreamingServerInterface from letta.server.rest_api.utils import get_letta_server, sse_async_generator from letta.server.server import SyncServer @@ -502,6 +513,94 @@ async def send_message_streaming( return result +async def process_message_background( + job_id: str, + server: SyncServer, + actor: User, + agent_id: str, + user_id: str, + messages: list, + assistant_message_tool_name: str, + assistant_message_tool_kwarg: str, +) -> None: + """Background task to process the message and update job status.""" + try: + # TODO(matt) we should probably make this stream_steps and log each step as it progresses, so the job update GET can see the total steps so far + partial usage? + result = await send_message_to_agent( + server=server, + agent_id=agent_id, + user_id=user_id, + messages=messages, + stream_steps=False, # NOTE(matt) + stream_tokens=False, + assistant_message_tool_name=assistant_message_tool_name, + assistant_message_tool_kwarg=assistant_message_tool_kwarg, + ) + + # Update job status to completed + job_update = JobUpdate( + status=JobStatus.completed, + completed_at=datetime.utcnow(), + metadata_={"result": result.model_dump()}, # Store the result in metadata + ) + server.job_manager.update_job_by_id(job_id=job_id, job_update=job_update, actor=actor) + + except Exception as e: + # Update job status to failed + job_update = JobUpdate( + status=JobStatus.failed, + completed_at=datetime.utcnow(), + metadata_={"error": str(e)}, + ) + server.job_manager.update_job_by_id(job_id=job_id, job_update=job_update, actor=actor) + raise + + +@router.post( + "/{agent_id}/messages/async", + response_model=Job, + operation_id="create_agent_message_async", +) +async def send_message_async( + agent_id: str, + background_tasks: BackgroundTasks, + server: SyncServer = Depends(get_letta_server), + request: LettaRequest = Body(...), + user_id: Optional[str] = Header(None, alias="user_id"), +): + """ + Asynchronously process a user message and return a job ID. + The actual processing happens in the background, and the status can be checked using the job ID. + """ + actor = server.get_user_or_default(user_id=user_id) + + # Create a new job + job = Job( + user_id=actor.id, + status=JobStatus.created, + metadata_={ + "job_type": "send_message_async", + "agent_id": agent_id, + }, + ) + job = server.job_manager.create_job(pydantic_job=job, actor=actor) + + # Add the background task + background_tasks.add_task( + process_message_background, + job_id=job.id, + server=server, + actor=actor, + agent_id=agent_id, + user_id=actor.id, + messages=request.messages, + assistant_message_tool_name=request.assistant_message_tool_name, + assistant_message_tool_kwarg=request.assistant_message_tool_kwarg, + ) + + return job + + # TODO: move this into server.py? async def send_message_to_agent( server: SyncServer, diff --git a/tests/test_client.py b/tests/test_client.py index 866bd2012b..61a95f3a49 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -14,6 +14,7 @@ from letta.schemas.agent import AgentState from letta.schemas.block import CreateBlock from letta.schemas.embedding_config import EmbeddingConfig +from letta.schemas.job import JobStatus from letta.schemas.llm_config import LLMConfig from letta.schemas.sandbox_config import LocalSandboxConfig, SandboxType from letta.utils import create_random_username @@ -328,3 +329,28 @@ async def send_message_task(message: str): # Ensure both tasks completed assert len(responses) == len(messages), "Not all messages were processed" + + +def test_send_message_async(client: Union[LocalClient, RESTClient], agent: AgentState): + """Test that we can send a message asynchronously""" + + if not isinstance(client, RESTClient): + pytest.skip("send_message_async is only supported by the RESTClient") + + print("Sending message asynchronously") + job = client.send_message_async(agent_id=agent.id, role="user", message="This is a test message, no need to respond.") + assert job.id is not None + assert job.status == JobStatus.created + print(f"Job created, job={job}, status={job.status}") + + # Wait for the job to complete, cancel it if takes over 10 seconds + start_time = time.time() + while job.status == JobStatus.created: + time.sleep(1) + job = client.get_job(job_id=job.id) + print(f"Job status: {job.status}") + if time.time() - start_time > 10: + pytest.fail("Job took too long to complete") + + print(f"Job completed in {time.time() - start_time} seconds, job={job}") + assert job.status == JobStatus.completed From af5ef6d174151442f7975c1291f4e201610dd6ba Mon Sep 17 00:00:00 2001 From: Sarah Wooders Date: Mon, 9 Dec 2024 18:55:18 -0800 Subject: [PATCH 25/39] feat: enable configuration of `response_char_limit` for tools (#2207) --- ...f_add_column_to_tools_table_to_contain_.py | 39 ++++++++++++++++ letta/agent.py | 8 +++- letta/client/client.py | 44 ++++++++++++++----- letta/orm/tool.py | 14 +++--- letta/schemas/tool.py | 5 +++ letta/utils.py | 11 +++-- tests/test_client.py | 39 +++++++++++++++- 7 files changed, 133 insertions(+), 27 deletions(-) create mode 100644 alembic/versions/a91994b9752f_add_column_to_tools_table_to_contain_.py diff --git a/alembic/versions/a91994b9752f_add_column_to_tools_table_to_contain_.py b/alembic/versions/a91994b9752f_add_column_to_tools_table_to_contain_.py new file mode 100644 index 0000000000..f8da3856bd --- /dev/null +++ b/alembic/versions/a91994b9752f_add_column_to_tools_table_to_contain_.py @@ -0,0 +1,39 @@ +"""add column to tools table to contain function return limit return_char_limit + +Revision ID: a91994b9752f +Revises: e1a625072dbf +Create Date: 2024-12-09 18:27:25.650079 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa + +from alembic import op +from letta.constants import FUNCTION_RETURN_CHAR_LIMIT + +# revision identifiers, used by Alembic. +revision: str = "a91994b9752f" +down_revision: Union[str, None] = "e1a625072dbf" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column("tools", sa.Column("return_char_limit", sa.Integer(), nullable=True)) + + # Populate `return_char_limit` column + op.execute( + f""" + UPDATE tools + SET return_char_limit = {FUNCTION_RETURN_CHAR_LIMIT} + """ + ) + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column("tools", "return_char_limit") + # ### end Alembic commands ### diff --git a/letta/agent.py b/letta/agent.py index a09fd04c40..81924c2ea9 100644 --- a/letta/agent.py +++ b/letta/agent.py @@ -801,7 +801,13 @@ def _handle_ai_response( # but by default, we add a truncation safeguard to prevent bad functions from # overflow the agent context window truncate = True - function_response_string = validate_function_response(function_response, truncate=truncate) + + # get the function response limit + tool_obj = [tool for tool in self.agent_state.tools if tool.name == function_name][0] + return_char_limit = tool_obj.return_char_limit + function_response_string = validate_function_response( + function_response, return_char_limit=return_char_limit, truncate=truncate + ) function_args.pop("self", None) function_response = package_function_response(True, function_response_string) function_failed = False diff --git a/letta/client/client.py b/letta/client/client.py index 97f36cd927..6456aa3f35 100644 --- a/letta/client/client.py +++ b/letta/client/client.py @@ -11,6 +11,7 @@ BASE_TOOLS, DEFAULT_HUMAN, DEFAULT_PERSONA, + FUNCTION_RETURN_CHAR_LIMIT, ) from letta.data_sources.connectors import DataConnector from letta.functions.functions import parse_source_code @@ -200,18 +201,12 @@ def load_composio_tool(self, action: "ActionType") -> Tool: raise NotImplementedError def create_tool( - self, - func, - name: Optional[str] = None, - tags: Optional[List[str]] = None, + self, func, name: Optional[str] = None, tags: Optional[List[str]] = None, return_char_limit: int = FUNCTION_RETURN_CHAR_LIMIT ) -> Tool: raise NotImplementedError def create_or_update_tool( - self, - func, - name: Optional[str] = None, - tags: Optional[List[str]] = None, + self, func, name: Optional[str] = None, tags: Optional[List[str]] = None, return_char_limit: int = FUNCTION_RETURN_CHAR_LIMIT ) -> Tool: raise NotImplementedError @@ -222,6 +217,7 @@ def update_tool( description: Optional[str] = None, func: Optional[Callable] = None, tags: Optional[List[str]] = None, + return_char_limit: int = FUNCTION_RETURN_CHAR_LIMIT, ) -> Tool: raise NotImplementedError @@ -1465,6 +1461,7 @@ def create_tool( func: Callable, name: Optional[str] = None, tags: Optional[List[str]] = None, + return_char_limit: int = FUNCTION_RETURN_CHAR_LIMIT, ) -> Tool: """ Create a tool. This stores the source code of function on the server, so that the server can execute the function and generate an OpenAI JSON schemas for it when using with an agent. @@ -1473,6 +1470,7 @@ def create_tool( func (callable): The function to create a tool for. name: (str): Name of the tool (must be unique per-user.) tags (Optional[List[str]], optional): Tags for the tool. Defaults to None. + return_char_limit (int): The character limit for the tool's return value. Defaults to FUNCTION_RETURN_CHAR_LIMIT. Returns: tool (Tool): The created tool. @@ -1481,7 +1479,9 @@ def create_tool( source_type = "python" # call server function - request = ToolCreate(source_type=source_type, source_code=source_code, name=name, tags=tags) + request = ToolCreate(source_type=source_type, source_code=source_code, name=name, return_char_limit=return_char_limit) + if tags: + request.tags = tags response = requests.post(f"{self.base_url}/{self.api_prefix}/tools", json=request.model_dump(), headers=self.headers) if response.status_code != 200: raise ValueError(f"Failed to create tool: {response.text}") @@ -1492,6 +1492,7 @@ def create_or_update_tool( func: Callable, name: Optional[str] = None, tags: Optional[List[str]] = None, + return_char_limit: int = FUNCTION_RETURN_CHAR_LIMIT, ) -> Tool: """ Creates or updates a tool. This stores the source code of function on the server, so that the server can execute the function and generate an OpenAI JSON schemas for it when using with an agent. @@ -1500,6 +1501,7 @@ def create_or_update_tool( func (callable): The function to create a tool for. name: (str): Name of the tool (must be unique per-user.) tags (Optional[List[str]], optional): Tags for the tool. Defaults to None. + return_char_limit (int): The character limit for the tool's return value. Defaults to FUNCTION_RETURN_CHAR_LIMIT. Returns: tool (Tool): The created tool. @@ -1508,7 +1510,9 @@ def create_or_update_tool( source_type = "python" # call server function - request = ToolCreate(source_type=source_type, source_code=source_code, name=name, tags=tags) + request = ToolCreate(source_type=source_type, source_code=source_code, name=name, return_char_limit=return_char_limit) + if tags: + request.tags = tags response = requests.put(f"{self.base_url}/{self.api_prefix}/tools", json=request.model_dump(), headers=self.headers) if response.status_code != 200: raise ValueError(f"Failed to create tool: {response.text}") @@ -1521,6 +1525,7 @@ def update_tool( description: Optional[str] = None, func: Optional[Callable] = None, tags: Optional[List[str]] = None, + return_char_limit: int = FUNCTION_RETURN_CHAR_LIMIT, ) -> Tool: """ Update a tool with provided parameters (name, func, tags) @@ -1530,6 +1535,7 @@ def update_tool( name (str): Name of the tool func (callable): Function to wrap in a tool tags (List[str]): Tags for the tool + return_char_limit (int): The character limit for the tool's return value. Defaults to FUNCTION_RETURN_CHAR_LIMIT. Returns: tool (Tool): Updated tool @@ -1541,7 +1547,14 @@ def update_tool( source_type = "python" - request = ToolUpdate(description=description, source_type=source_type, source_code=source_code, tags=tags, name=name) + request = ToolUpdate( + description=description, + source_type=source_type, + source_code=source_code, + tags=tags, + name=name, + return_char_limit=return_char_limit, + ) response = requests.patch(f"{self.base_url}/{self.api_prefix}/tools/{id}", json=request.model_dump(), headers=self.headers) if response.status_code != 200: raise ValueError(f"Failed to update tool: {response.text}") @@ -2726,6 +2739,7 @@ def create_tool( name: Optional[str] = None, tags: Optional[List[str]] = None, description: Optional[str] = None, + return_char_limit: int = FUNCTION_RETURN_CHAR_LIMIT, ) -> Tool: """ Create a tool. This stores the source code of function on the server, so that the server can execute the function and generate an OpenAI JSON schemas for it when using with an agent. @@ -2735,6 +2749,7 @@ def create_tool( name: (str): Name of the tool (must be unique per-user.) tags (Optional[List[str]], optional): Tags for the tool. Defaults to None. description (str, optional): The description. + return_char_limit (int): The character limit for the tool's return value. Defaults to FUNCTION_RETURN_CHAR_LIMIT. Returns: tool (Tool): The created tool. @@ -2755,6 +2770,7 @@ def create_tool( name=name, tags=tags, description=description, + return_char_limit=return_char_limit, ), actor=self.user, ) @@ -2765,6 +2781,7 @@ def create_or_update_tool( name: Optional[str] = None, tags: Optional[List[str]] = None, description: Optional[str] = None, + return_char_limit: int = FUNCTION_RETURN_CHAR_LIMIT, ) -> Tool: """ Creates or updates a tool. This stores the source code of function on the server, so that the server can execute the function and generate an OpenAI JSON schemas for it when using with an agent. @@ -2774,6 +2791,7 @@ def create_or_update_tool( name: (str): Name of the tool (must be unique per-user.) tags (Optional[List[str]], optional): Tags for the tool. Defaults to None. description (str, optional): The description. + return_char_limit (int): The character limit for the tool's return value. Defaults to FUNCTION_RETURN_CHAR_LIMIT. Returns: tool (Tool): The created tool. @@ -2791,6 +2809,7 @@ def create_or_update_tool( name=name, tags=tags, description=description, + return_char_limit=return_char_limit, ), actor=self.user, ) @@ -2802,6 +2821,7 @@ def update_tool( description: Optional[str] = None, func: Optional[callable] = None, tags: Optional[List[str]] = None, + return_char_limit: int = FUNCTION_RETURN_CHAR_LIMIT, ) -> Tool: """ Update a tool with provided parameters (name, func, tags) @@ -2811,6 +2831,7 @@ def update_tool( name (str): Name of the tool func (callable): Function to wrap in a tool tags (List[str]): Tags for the tool + return_char_limit (int): The character limit for the tool's return value. Defaults to FUNCTION_RETURN_CHAR_LIMIT. Returns: tool (Tool): Updated tool @@ -2821,6 +2842,7 @@ def update_tool( "tags": tags, "name": name, "description": description, + "return_char_limit": return_char_limit, } # Filter out any None values from the dictionary diff --git a/letta/orm/tool.py b/letta/orm/tool.py index 00038fe000..8f1ac46a43 100644 --- a/letta/orm/tool.py +++ b/letta/orm/tool.py @@ -30,6 +30,7 @@ class Tool(SqlalchemyBase, OrganizationMixin): __table_args__ = (UniqueConstraint("name", "organization_id", name="uix_name_organization"),) name: Mapped[str] = mapped_column(doc="The display name of the tool.") + return_char_limit: Mapped[int] = mapped_column(nullable=True, doc="The maximum number of characters the tool can return.") description: Mapped[Optional[str]] = mapped_column(nullable=True, doc="The description of the tool.") tags: Mapped[List] = mapped_column(JSON, doc="Metadata tags used to filter tools.") source_type: Mapped[ToolSourceType] = mapped_column(String, doc="The type of the source code.", default=ToolSourceType.json) @@ -45,19 +46,16 @@ class Tool(SqlalchemyBase, OrganizationMixin): # Add event listener to update tool_name in ToolsAgents when Tool name changes -@event.listens_for(Tool, 'before_update') +@event.listens_for(Tool, "before_update") def update_tool_name_in_tools_agents(mapper, connection, target): """Update tool_name in ToolsAgents when Tool name changes.""" state = target._sa_instance_state - history = state.get_history('name', passive=True) + history = state.get_history("name", passive=True) if not history.has_changes(): return - + # Get the new name and update all associated ToolsAgents records new_name = target.name from letta.orm.tools_agents import ToolsAgents - connection.execute( - ToolsAgents.__table__.update().where( - ToolsAgents.tool_id == target.id - ).values(tool_name=new_name) - ) + + connection.execute(ToolsAgents.__table__.update().where(ToolsAgents.tool_id == target.id).values(tool_name=new_name)) diff --git a/letta/schemas/tool.py b/letta/schemas/tool.py index ed31f9d687..997965ab5e 100644 --- a/letta/schemas/tool.py +++ b/letta/schemas/tool.py @@ -2,6 +2,7 @@ from pydantic import Field, model_validator +from letta.constants import FUNCTION_RETURN_CHAR_LIMIT from letta.functions.functions import derive_openai_json_schema from letta.functions.helpers import ( generate_composio_tool_wrapper, @@ -41,6 +42,9 @@ class Tool(BaseTool): source_code: str = Field(..., description="The source code of the function.") json_schema: Optional[Dict] = Field(None, description="The JSON schema of the function.") + # tool configuration + return_char_limit: int = Field(FUNCTION_RETURN_CHAR_LIMIT, description="The maximum number of characters in the response.") + # metadata fields created_by_id: Optional[str] = Field(None, description="The id of the user that made this Tool.") last_updated_by_id: Optional[str] = Field(None, description="The id of the user that made this Tool.") @@ -91,6 +95,7 @@ class ToolCreate(LettaBase): json_schema: Optional[Dict] = Field( None, description="The JSON schema of the function (auto-generated from source_code if not provided)" ) + return_char_limit: int = Field(FUNCTION_RETURN_CHAR_LIMIT, description="The maximum number of characters in the response.") @classmethod def from_composio(cls, action_name: str, api_key: Optional[str] = None) -> "ToolCreate": diff --git a/letta/utils.py b/letta/utils.py index 71915420f3..ad6668857a 100644 --- a/letta/utils.py +++ b/letta/utils.py @@ -28,7 +28,6 @@ CLI_WARNING_PREFIX, CORE_MEMORY_HUMAN_CHAR_LIMIT, CORE_MEMORY_PERSONA_CHAR_LIMIT, - FUNCTION_RETURN_CHAR_LIMIT, LETTA_DIR, MAX_FILENAME_LENGTH, TOOL_CALL_ID_MAX_LEN, @@ -906,8 +905,8 @@ def parse_json(string) -> dict: raise e -def validate_function_response(function_response_string: any, strict: bool = False, truncate: bool = True) -> str: - """Check to make sure that a function used by Letta returned a valid response +def validate_function_response(function_response_string: any, return_char_limit: int, strict: bool = False, truncate: bool = True) -> str: + """Check to make sure that a function used by Letta returned a valid response. Truncates to return_char_limit if necessary. Responses need to be strings (or None) that fall under a certain text count limit. """ @@ -943,11 +942,11 @@ def validate_function_response(function_response_string: any, strict: bool = Fal # Now check the length and make sure it doesn't go over the limit # TODO we should change this to a max token limit that's variable based on tokens remaining (or context-window) - if truncate and len(function_response_string) > FUNCTION_RETURN_CHAR_LIMIT: + if truncate and len(function_response_string) > return_char_limit: print( - f"{CLI_WARNING_PREFIX}function return was over limit ({len(function_response_string)} > {FUNCTION_RETURN_CHAR_LIMIT}) and was truncated" + f"{CLI_WARNING_PREFIX}function return was over limit ({len(function_response_string)} > {return_char_limit}) and was truncated" ) - function_response_string = f"{function_response_string[:FUNCTION_RETURN_CHAR_LIMIT]}... [NOTE: function output was truncated since it exceeded the character limit ({len(function_response_string)} > {FUNCTION_RETURN_CHAR_LIMIT})]" + function_response_string = f"{function_response_string[:return_char_limit]}... [NOTE: function output was truncated since it exceeded the character limit ({len(function_response_string)} > {return_char_limit})]" return function_response_string diff --git a/tests/test_client.py b/tests/test_client.py index 61a95f3a49..2c92ef9501 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -1,4 +1,5 @@ import asyncio +import json import os import threading import time @@ -15,6 +16,7 @@ from letta.schemas.block import CreateBlock from letta.schemas.embedding_config import EmbeddingConfig from letta.schemas.job import JobStatus +from letta.schemas.letta_message import FunctionReturn from letta.schemas.llm_config import LLMConfig from letta.schemas.sandbox_config import LocalSandboxConfig, SandboxType from letta.utils import create_random_username @@ -40,7 +42,8 @@ def run_server(): @pytest.fixture( - params=[{"server": False}, {"server": True}], # whether to use REST API server + # params=[{"server": False}, {"server": True}], # whether to use REST API server + params=[{"server": False}], # whether to use REST API server scope="module", ) def client(request): @@ -299,6 +302,40 @@ def test_send_system_message(client: Union[LocalClient, RESTClient], agent: Agen assert send_system_message_response, "Sending message failed" +def test_function_return_limit(client: Union[LocalClient, RESTClient]): + """Test to see if the function return limit works""" + + def big_return(): + """ + Always call this tool. + + Returns: + important_data (str): Important data + """ + return "x" * 100000 + + padding = len("[NOTE: function output was truncated since it exceeded the character limit (100000 > 1000)]") + 50 + tool = client.create_or_update_tool(func=big_return, return_char_limit=1000) + agent = client.create_agent(name="agent1", tools=[tool.name]) + # get function response + response = client.send_message(agent_id=agent.id, message="call the big_return function", role="user") + print(response.messages) + + response_message = None + for message in response.messages: + if isinstance(message, FunctionReturn): + response_message = message + break + + assert response_message, "FunctionReturn message not found in response" + res = response_message.function_return + assert "function output was truncated " in res + res_json = json.loads(res) + assert ( + len(res_json["message"]) <= 1000 + padding + ), f"Expected length to be less than or equal to 1000 + {padding}, but got {len(res_json['message'])}" + + @pytest.mark.asyncio async def test_send_message_parallel(client: Union[LocalClient, RESTClient], agent: AgentState, request): """ From 666e4259cf9f16e14f793110408ab0910dc2d7b2 Mon Sep 17 00:00:00 2001 From: Matthew Zhou Date: Mon, 9 Dec 2024 19:35:58 -0800 Subject: [PATCH 26/39] fix: Modify the `list` ORM function (#2208) --- letta/client/client.py | 2 +- letta/orm/sqlalchemy_base.py | 47 ++++++++++++---- letta/server/rest_api/routers/v1/agents.py | 2 +- letta/server/server.py | 64 +++------------------- letta/services/message_manager.py | 3 + letta/services/tool_execution_sandbox.py | 2 +- tests/test_managers.py | 21 +++++-- tests/test_server.py | 50 +++++++---------- 8 files changed, 84 insertions(+), 107 deletions(-) diff --git a/letta/client/client.py b/letta/client/client.py index 6456aa3f35..a0b6729b8d 100644 --- a/letta/client/client.py +++ b/letta/client/client.py @@ -3128,7 +3128,7 @@ def get_messages(self, agent_id: str, cursor: Optional[str] = None, limit: Optio return self.server.get_agent_recall_cursor( user_id=self.user_id, agent_id=agent_id, - cursor=cursor, + before=cursor, limit=limit, reverse=True, ) diff --git a/letta/orm/sqlalchemy_base.py b/letta/orm/sqlalchemy_base.py index 4507f51c27..6f8a764408 100644 --- a/letta/orm/sqlalchemy_base.py +++ b/letta/orm/sqlalchemy_base.py @@ -2,7 +2,7 @@ from enum import Enum from typing import TYPE_CHECKING, List, Literal, Optional, Type -from sqlalchemy import String, func, select +from sqlalchemy import String, desc, func, or_, select from sqlalchemy.exc import DBAPIError from sqlalchemy.orm import Mapped, Session, mapped_column @@ -60,14 +60,25 @@ def list( end_date: Optional[datetime] = None, limit: Optional[int] = 50, query_text: Optional[str] = None, + ascending: bool = True, **kwargs, ) -> List[Type["SqlalchemyBase"]]: - """List records with advanced filtering and pagination options.""" + """ + List records with cursor-based pagination, ordering by created_at. + Cursor is an ID, but pagination is based on the cursor object's created_at value. + """ if start_date and end_date and start_date > end_date: raise ValueError("start_date must be earlier than or equal to end_date") logger.debug(f"Listing {cls.__name__} with kwarg filters {kwargs}") with db_session as session: + # If cursor provided, get the reference object + cursor_obj = None + if cursor: + cursor_obj = session.get(cls, cursor) + if not cursor_obj: + raise NoResultFound(f"No {cls.__name__} found with id {cursor}") + query = select(cls) # Apply filtering logic @@ -80,22 +91,38 @@ def list( # Date range filtering if start_date: - query = query.filter(cls.created_at >= start_date) + query = query.filter(cls.created_at > start_date) if end_date: - query = query.filter(cls.created_at <= end_date) - - # Cursor-based pagination - if cursor: - query = query.where(cls.id > cursor) + query = query.filter(cls.created_at < end_date) + + # Cursor-based pagination using created_at + # TODO: There is a really nasty race condition issue here with Sqlite + # TODO: If they have the same created_at timestamp, this query does NOT match for whatever reason + if cursor_obj: + if ascending: + query = query.where(cls.created_at >= cursor_obj.created_at).where( + or_(cls.created_at > cursor_obj.created_at, cls.id > cursor_obj.id) + ) + else: + query = query.where(cls.created_at <= cursor_obj.created_at).where( + or_(cls.created_at < cursor_obj.created_at, cls.id < cursor_obj.id) + ) # Apply text search if query_text: query = query.filter(func.lower(cls.text).contains(func.lower(query_text))) - # Handle ordering and soft deletes + # Handle soft deletes if hasattr(cls, "is_deleted"): query = query.where(cls.is_deleted == False) - query = query.order_by(cls.id).limit(limit) + + # Apply ordering by created_at + if ascending: + query = query.order_by(cls.created_at, cls.id) + else: + query = query.order_by(desc(cls.created_at), desc(cls.id)) + + query = query.limit(limit) return list(session.execute(query).scalars()) diff --git a/letta/server/rest_api/routers/v1/agents.py b/letta/server/rest_api/routers/v1/agents.py index e7f68dc96d..2a9471d975 100644 --- a/letta/server/rest_api/routers/v1/agents.py +++ b/letta/server/rest_api/routers/v1/agents.py @@ -420,7 +420,7 @@ def get_agent_messages( return server.get_agent_recall_cursor( user_id=actor.id, agent_id=agent_id, - cursor=before, + before=before, limit=limit, reverse=True, return_message_object=msg_object, diff --git a/letta/server/server.py b/letta/server/server.py index 965c9b2798..e20afd17c5 100644 --- a/letta/server/server.py +++ b/letta/server/server.py @@ -101,11 +101,6 @@ def list_agents(self, user_id: str) -> dict: """List all available agents to a user""" raise NotImplementedError - @abstractmethod - def get_agent_messages(self, user_id: str, agent_id: str, start: int, count: int) -> list: - """Paginated query of in-context messages in agent message queue""" - raise NotImplementedError - @abstractmethod def get_agent_memory(self, user_id: str, agent_id: str) -> dict: """Return the memory of an agent (core memory + non-core statistics)""" @@ -1173,55 +1168,6 @@ def get_agent_message(self, agent_id: str, message_id: str) -> Message: message = agent.message_manager.get_message_by_id(id=message_id, actor=self.default_user) return message - def get_agent_messages( - self, - agent_id: str, - start: int, - count: int, - ) -> Union[List[Message], List[LettaMessage]]: - """Paginated query of all messages in agent message queue""" - # Get the agent object (loaded in memory) - letta_agent = self.load_agent(agent_id=agent_id) - - if start < 0 or count < 0: - raise ValueError("Start and count values should be non-negative") - - if start + count < len(letta_agent._messages): # messages can be returned from whats in memory - # Reverse the list to make it in reverse chronological order - reversed_messages = letta_agent._messages[::-1] - # Check if start is within the range of the list - if start >= len(reversed_messages): - raise IndexError("Start index is out of range") - - # Calculate the end index, ensuring it does not exceed the list length - end_index = min(start + count, len(reversed_messages)) - - # Slice the list for pagination - messages = reversed_messages[start:end_index] - - else: - # need to access persistence manager for additional messages - - # get messages using message manager - page = letta_agent.message_manager.list_user_messages_for_agent( - agent_id=agent_id, - actor=self.default_user, - cursor=start, - limit=count, - ) - - messages = page - assert all(isinstance(m, Message) for m in messages) - - ## Convert to json - ## Add a tag indicating in-context or not - # json_messages = [record.to_json() for record in messages] - # in_context_message_ids = [str(m.id) for m in letta_agent._messages] - # for d in json_messages: - # d["in_context"] = True if str(d["id"]) in in_context_message_ids else False - - return messages - def get_agent_archival(self, user_id: str, agent_id: str, start: int, count: int) -> List[Passage]: """Paginated query of all messages in agent archival memory""" if self.user_manager.get_user_by_id(user_id=user_id) is None: @@ -1303,7 +1249,8 @@ def get_agent_recall_cursor( self, user_id: str, agent_id: str, - cursor: Optional[str] = None, + after: Optional[str] = None, + before: Optional[str] = None, limit: Optional[int] = 100, reverse: Optional[bool] = False, return_message_object: bool = True, @@ -1320,12 +1267,15 @@ def get_agent_recall_cursor( letta_agent = self.load_agent(agent_id=agent_id) # iterate over records - # TODO: Check "order_by", "order" + start_date = self.message_manager.get_message_by_id(after, actor=actor).created_at if after else None + end_date = self.message_manager.get_message_by_id(before, actor=actor).created_at if before else None records = letta_agent.message_manager.list_messages_for_agent( agent_id=agent_id, actor=actor, - cursor=cursor, + start_date=start_date, + end_date=end_date, limit=limit, + ascending=not reverse, ) assert all(isinstance(m, Message) for m in records) diff --git a/letta/services/message_manager.py b/letta/services/message_manager.py index b9932b39b8..b415194420 100644 --- a/letta/services/message_manager.py +++ b/letta/services/message_manager.py @@ -119,6 +119,7 @@ def list_user_messages_for_agent( limit: Optional[int] = 50, filters: Optional[Dict] = None, query_text: Optional[str] = None, + ascending: bool = True, ) -> List[PydanticMessage]: """List user messages with flexible filtering and pagination options. @@ -159,6 +160,7 @@ def list_messages_for_agent( limit: Optional[int] = 50, filters: Optional[Dict] = None, query_text: Optional[str] = None, + ascending: bool = True, ) -> List[PydanticMessage]: """List messages with flexible filtering and pagination options. @@ -188,6 +190,7 @@ def list_messages_for_agent( end_date=end_date, limit=limit, query_text=query_text, + ascending=ascending, **message_filters, ) diff --git a/letta/services/tool_execution_sandbox.py b/letta/services/tool_execution_sandbox.py index 4c95184cc5..2a76a147a6 100644 --- a/letta/services/tool_execution_sandbox.py +++ b/letta/services/tool_execution_sandbox.py @@ -459,7 +459,7 @@ def invoke_function_call(self, inject_agent_state: bool) -> str: Generate the code string to call the function. Args: - inject_agent_state (bool): Whether to inject the agent's state as an input into the tool + inject_agent_state (bool): Whether to inject the axgent's state as an input into the tool Returns: str: Generated code string for calling the tool diff --git a/tests/test_managers.py b/tests/test_managers.py index dc47693893..74675b4cb5 100644 --- a/tests/test_managers.py +++ b/tests/test_managers.py @@ -1,4 +1,5 @@ import os +import time from datetime import datetime, timedelta import pytest @@ -73,8 +74,8 @@ azure_version=None, azure_deployment=None, ) - -using_sqlite = not bool(os.getenv("LETTA_PG_URI")) +CREATE_DELAY_SQLITE = 1 +USING_SQLITE = not bool(os.getenv("LETTA_PG_URI")) @pytest.fixture(autouse=True) @@ -911,6 +912,8 @@ def test_list_sources(server: SyncServer, default_user): """Test listing sources with pagination.""" # Create multiple sources server.source_manager.create_source(PydanticSource(name="Source 1", embedding_config=DEFAULT_EMBEDDING_CONFIG), actor=default_user) + if USING_SQLITE: + time.sleep(CREATE_DELAY_SQLITE) server.source_manager.create_source(PydanticSource(name="Source 2", embedding_config=DEFAULT_EMBEDDING_CONFIG), actor=default_user) # List sources without pagination @@ -1004,6 +1007,8 @@ def test_list_files(server: SyncServer, default_user, default_source): PydanticFileMetadata(file_name="File 1", file_path="/path/to/file1.txt", file_type="text/plain", source_id=default_source.id), actor=default_user, ) + if USING_SQLITE: + time.sleep(CREATE_DELAY_SQLITE) server.source_manager.create_file( PydanticFileMetadata(file_name="File 2", file_path="/path/to/file2.txt", file_type="text/plain", source_id=default_source.id), actor=default_user, @@ -1184,6 +1189,8 @@ def test_list_sandbox_configs(server: SyncServer, default_user): config=LocalSandboxConfig(sandbox_dir=""), ) server.sandbox_config_manager.create_or_update_sandbox_config(config_a, actor=default_user) + if USING_SQLITE: + time.sleep(CREATE_DELAY_SQLITE) server.sandbox_config_manager.create_or_update_sandbox_config(config_b, actor=default_user) # List configs without pagination @@ -1239,6 +1246,8 @@ def test_list_sandbox_env_vars(server: SyncServer, sandbox_config_fixture, defau env_var_create_a = SandboxEnvironmentVariableCreate(key="VAR1", value="value1") env_var_create_b = SandboxEnvironmentVariableCreate(key="VAR2", value="value2") server.sandbox_config_manager.create_sandbox_env_var(env_var_create_a, sandbox_config_id=sandbox_config_fixture.id, actor=default_user) + if USING_SQLITE: + time.sleep(CREATE_DELAY_SQLITE) server.sandbox_config_manager.create_sandbox_env_var(env_var_create_b, sandbox_config_id=sandbox_config_fixture.id, actor=default_user) # List env vars without pagination @@ -1299,7 +1308,7 @@ def test_change_label_on_block_reflects_in_block_agents_table(server, sarah_agen assert default_block.label not in labels -@pytest.mark.skipif(using_sqlite, reason="Skipped because using SQLite") +@pytest.mark.skipif(USING_SQLITE, reason="Skipped because using SQLite") def test_add_block_to_agent_nonexistent_block(server, sarah_agent, default_user): with pytest.raises(ForeignKeyConstraintViolationError): server.blocks_agents_manager.add_block_to_agent( @@ -1361,7 +1370,7 @@ def test_list_agent_ids_with_block(server, sarah_agent, charles_agent, default_u assert len(agent_ids) == 2 -@pytest.mark.skipif(using_sqlite, reason="Skipped because using SQLite") +@pytest.mark.skipif(USING_SQLITE, reason="Skipped because using SQLite") def test_add_block_to_agent_with_deleted_block(server, sarah_agent, default_user, default_block): block_manager = BlockManager() block_manager.delete_block(block_id=default_block.id, actor=default_user) @@ -1401,7 +1410,7 @@ def test_change_name_on_tool_reflects_in_tool_agents_table(server, sarah_agent, assert print_tool.name not in names -@pytest.mark.skipif(using_sqlite, reason="Skipped because using SQLite") +@pytest.mark.skipif(USING_SQLITE, reason="Skipped because using SQLite") def test_add_tool_to_agent_nonexistent_tool(server, sarah_agent, default_user): with pytest.raises(ForeignKeyConstraintViolationError): server.tools_agents_manager.add_tool_to_agent(agent_id=sarah_agent.id, tool_id="nonexistent_tool", tool_name="nonexistent_name") @@ -1447,7 +1456,7 @@ def test_list_agent_ids_with_tool(server, sarah_agent, charles_agent, default_us assert len(agent_ids) == 2 -@pytest.mark.skipif(using_sqlite, reason="Skipped because using SQLite") +@pytest.mark.skipif(USING_SQLITE, reason="Skipped because using SQLite") def test_add_tool_to_agent_with_deleted_tool(server, sarah_agent, default_user, print_tool): tool_manager = ToolManager() tool_manager.delete_tool_by_id(tool_id=print_tool.id, actor=default_user) diff --git a/tests/test_server.py b/tests/test_server.py index c85f12ca38..8d85cc1cd5 100644 --- a/tests/test_server.py +++ b/tests/test_server.py @@ -161,37 +161,25 @@ def test_user_message(server, user_id, agent_id): # server.user_message(user_id=user_id, agent_id=agent_id, message="Hello?") -# TODO: Add this back, this is broken on main -# @pytest.mark.order(5) -# def test_get_recall_memory(server, org_id, user_id, agent_id): -# # test recall memory cursor pagination -# messages_1 = server.get_agent_recall_cursor(user_id=user_id, agent_id=agent_id, limit=2) -# cursor1 = messages_1[-1].id -# messages_2 = server.get_agent_recall_cursor(user_id=user_id, agent_id=agent_id, after=cursor1, limit=1000) -# messages_2[-1].id -# messages_3 = server.get_agent_recall_cursor(user_id=user_id, agent_id=agent_id, limit=1000) -# messages_3[-1].id -# assert messages_3[-1].created_at >= messages_3[0].created_at -# assert len(messages_3) == len(messages_1) + len(messages_2) -# messages_4 = server.get_agent_recall_cursor(user_id=user_id, agent_id=agent_id, reverse=True, before=cursor1) -# assert len(messages_4) == 1 -# -# # test in-context message ids -# in_context_ids = server.get_in_context_message_ids(agent_id=agent_id) -# message_ids = [m.id for m in messages_3] -# for message_id in in_context_ids: -# assert message_id in message_ids, f"{message_id} not in {message_ids}" -# -# # test recall memory -# messages_1 = server.get_agent_messages(agent_id=agent_id, start=0, count=1) -# assert len(messages_1) == 1 -# messages_2 = server.get_agent_messages(agent_id=agent_id, start=1, count=1000) -# messages_3 = server.get_agent_messages(agent_id=agent_id, start=1, count=2) -# # not sure exactly how many messages there should be -# assert len(messages_2) > len(messages_3) -# # test safe empty return -# messages_none = server.get_agent_messages(agent_id=agent_id, start=1000, count=1000) -# assert len(messages_none) == 0 +@pytest.mark.order(5) +def test_get_recall_memory(server, org_id, user_id, agent_id): + # test recall memory cursor pagination + messages_1 = server.get_agent_recall_cursor(user_id=user_id, agent_id=agent_id, limit=2) + cursor1 = messages_1[-1].id + messages_2 = server.get_agent_recall_cursor(user_id=user_id, agent_id=agent_id, after=cursor1, limit=1000) + messages_2[-1].id + messages_3 = server.get_agent_recall_cursor(user_id=user_id, agent_id=agent_id, limit=1000) + messages_3[-1].id + assert messages_3[-1].created_at >= messages_3[0].created_at + assert len(messages_3) == len(messages_1) + len(messages_2) + messages_4 = server.get_agent_recall_cursor(user_id=user_id, agent_id=agent_id, reverse=True, before=cursor1) + assert len(messages_4) == 1 + + # test in-context message ids + in_context_ids = server.get_in_context_message_ids(agent_id=agent_id) + message_ids = [m.id for m in messages_3] + for message_id in in_context_ids: + assert message_id in message_ids, f"{message_id} not in {message_ids}" @pytest.mark.order(6) From 975aca155f352db41870018aeee9a7fa9de90cdb Mon Sep 17 00:00:00 2001 From: cthomas Date: Tue, 10 Dec 2024 10:38:17 -0800 Subject: [PATCH 27/39] fix: pattern match new prints correctly (#2213) Co-authored-by: Caren Thomas --- .github/workflows/check_for_new_prints.yml | 2 +- letta/services/tool_execution_sandbox.py | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/check_for_new_prints.yml b/.github/workflows/check_for_new_prints.yml index 470f5a4faf..c7bba7a0cd 100644 --- a/.github/workflows/check_for_new_prints.yml +++ b/.github/workflows/check_for_new_prints.yml @@ -43,7 +43,7 @@ jobs: NEW_PRINTS=$(git diff ${{ github.event.pull_request.base.sha }} ${{ github.sha }} "$file" | \ grep "^+" | \ grep -v "^+++" | \ - grep "print(" || true) + grep -E "(^|\s)print\(" || true) if [ ! -z "$NEW_PRINTS" ]; then echo "❌ Found new print statements in $file:" diff --git a/letta/services/tool_execution_sandbox.py b/letta/services/tool_execution_sandbox.py index 2a76a147a6..b45a0b00c5 100644 --- a/letta/services/tool_execution_sandbox.py +++ b/letta/services/tool_execution_sandbox.py @@ -201,7 +201,10 @@ def run_local_dir_sandbox_venv(self, sbx_config: SandboxConfig, env: Dict[str, s func_result, stdout = self.parse_out_function_results_markers(result.stdout) func_return, agent_state = self.parse_best_effort(func_result) return SandboxRunResult( - func_return=func_return, agent_state=agent_state, stdout=[stdout], sandbox_config_fingerprint=sbx_config.fingerprint() + func_return=func_return, + agent_state=agent_state, + stdout=[stdout], + sandbox_config_fingerprint=sbx_config.fingerprint(), ) except subprocess.TimeoutExpired: raise TimeoutError(f"Executing tool {self.tool_name} has timed out.") From 415163fb750c3b1570922975b17672acc10dda5d Mon Sep 17 00:00:00 2001 From: Kevin Lin Date: Tue, 10 Dec 2024 12:27:35 -0700 Subject: [PATCH 28/39] fix: allow empty initial message sequence (#2214) --- letta/offline_memory_agent.py | 3 ++- letta/server/server.py | 4 +++- tests/test_offline_memory_agent.py | 22 +++++++++++++++++++++- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/letta/offline_memory_agent.py b/letta/offline_memory_agent.py index cceefb4370..85cbb082fe 100644 --- a/letta/offline_memory_agent.py +++ b/letta/offline_memory_agent.py @@ -130,8 +130,9 @@ def __init__( # extras first_message_verify_mono: bool = False, max_memory_rethinks: int = 10, + initial_message_sequence: Optional[List[Message]] = None, ): - super().__init__(interface, agent_state, user) + super().__init__(interface, agent_state, user, initial_message_sequence=initial_message_sequence) self.first_message_verify_mono = first_message_verify_mono self.max_memory_rethinks = max_memory_rethinks diff --git a/letta/server/server.py b/letta/server/server.py index e20afd17c5..08701587da 100644 --- a/letta/server/server.py +++ b/letta/server/server.py @@ -379,6 +379,8 @@ def initialize_agent(self, agent_id, interface: Union[AgentInterface, None] = No interface = interface or self.default_interface_factory() if agent_state.agent_type == AgentType.memgpt_agent: agent = Agent(agent_state=agent_state, interface=interface, user=actor, initial_message_sequence=initial_message_sequence) + elif agent_state.agent_type == AgentType.offline_memory_agent: + agent = OfflineMemoryAgent(agent_state=agent_state, interface=interface, user=actor, initial_message_sequence=initial_message_sequence) else: assert initial_message_sequence is None, f"Initial message sequence is not supported for O1Agents" agent = O1Agent(agent_state=agent_state, interface=interface, user=actor) @@ -843,7 +845,7 @@ def create_agent( self.ms.create_agent(agent_state) # create the agent object - if request.initial_message_sequence: + if request.initial_message_sequence is not None: # init_messages = [Message(user_id=user_id, agent_id=agent_state.id, role=message.role, text=message.text) for message in request.initial_message_sequence] init_messages = [] for message in request.initial_message_sequence: diff --git a/tests/test_offline_memory_agent.py b/tests/test_offline_memory_agent.py index c3cbb71dc0..ff3aca5cfa 100644 --- a/tests/test_offline_memory_agent.py +++ b/tests/test_offline_memory_agent.py @@ -32,7 +32,6 @@ def clear_agents(client): for agent in client.list_agents(): client.delete_agent(agent.id) - def test_ripple_edit(client, mock_e2b_api_key_none): trigger_rethink_memory_tool = client.create_or_update_tool(trigger_rethink_memory) @@ -135,3 +134,24 @@ def test_chat_only_agent(client, mock_e2b_api_key_none): # Clean up agent client.delete_agent(chat_only_agent.id) + +def test_initial_message_sequence(client, mock_e2b_api_key_none): + """ + Test that when we set the initial sequence to an empty list, + we do not get the default initial message sequence. + """ + offline_memory_agent = client.create_agent( + name="offline_memory_agent", + agent_type=AgentType.offline_memory_agent, + system=gpt_system.get_system_text("memgpt_offline_memory"), + llm_config=LLMConfig.default_config("gpt-4"), + embedding_config=EmbeddingConfig.default_config("text-embedding-ada-002"), + include_base_tools=False, + initial_message_sequence=[], + ) + assert offline_memory_agent is not None + assert len(offline_memory_agent.message_ids) == 1 # There should just the system message + + client.delete_agent(offline_memory_agent.id) + + From 6ca8bfa854c5da9dc987d8126417e3d7478a537a Mon Sep 17 00:00:00 2001 From: Charles Packer Date: Tue, 10 Dec 2024 11:55:15 -0800 Subject: [PATCH 29/39] fix: re-enable streaming tokens (#2193) --- letta/server/rest_api/routers/v1/agents.py | 1 - 1 file changed, 1 deletion(-) diff --git a/letta/server/rest_api/routers/v1/agents.py b/letta/server/rest_api/routers/v1/agents.py index 2a9471d975..52e280697d 100644 --- a/letta/server/rest_api/routers/v1/agents.py +++ b/letta/server/rest_api/routers/v1/agents.py @@ -496,7 +496,6 @@ async def send_message_streaming( This endpoint accepts a message from a user and processes it through the agent. It will stream the steps of the response always, and stream the tokens if 'stream_tokens' is set to True. """ - request.stream_tokens = False actor = server.get_user_or_default(user_id=user_id) result = await send_message_to_agent( From ab1b440565a524e4f9e20b242d55d6af29a8a239 Mon Sep 17 00:00:00 2001 From: cthomas Date: Tue, 10 Dec 2024 13:24:05 -0800 Subject: [PATCH 30/39] feat: add logs to response for tool run (#2205) Co-authored-by: Caren Thomas --- letta/schemas/letta_message.py | 6 +++++- letta/schemas/sandbox_config.py | 1 + letta/server/server.py | 4 ++++ letta/services/tool_execution_sandbox.py | 23 ++++++++++++++++------- tests/test_server.py | 12 ++++++++++++ 5 files changed, 38 insertions(+), 8 deletions(-) diff --git a/letta/schemas/letta_message.py b/letta/schemas/letta_message.py index b3f7bf9000..3b2dc73480 100644 --- a/letta/schemas/letta_message.py +++ b/letta/schemas/letta_message.py @@ -1,6 +1,6 @@ import json from datetime import datetime, timezone -from typing import Annotated, Literal, Optional, Union +from typing import Annotated, List, Literal, Optional, Union from pydantic import BaseModel, Field, field_serializer, field_validator @@ -150,12 +150,16 @@ class FunctionReturn(LettaMessage): id (str): The ID of the message date (datetime): The date the message was created in ISO format function_call_id (str): A unique identifier for the function call that generated this message + stdout (Optional[List(str)]): Captured stdout (e.g. prints, logs) from the function invocation + stderr (Optional[List(str)]): Captured stderr from the function invocation """ message_type: Literal["function_return"] = "function_return" function_return: str status: Literal["success", "error"] function_call_id: str + stdout: Optional[List[str]] = None + stderr: Optional[List[str]] = None # Legacy Letta API had an additional type "assistant_message" and the "function_call" was a formatted string diff --git a/letta/schemas/sandbox_config.py b/letta/schemas/sandbox_config.py index 97e5a8efc6..246ba8a3ab 100644 --- a/letta/schemas/sandbox_config.py +++ b/letta/schemas/sandbox_config.py @@ -19,6 +19,7 @@ class SandboxRunResult(BaseModel): func_return: Optional[Any] = Field(None, description="The function return object") agent_state: Optional[AgentState] = Field(None, description="The agent state") stdout: Optional[List[str]] = Field(None, description="Captured stdout (e.g. prints, logs) from the function invocation") + stderr: Optional[List[str]] = Field(None, description="Captured stderr from the function invocation") sandbox_config_fingerprint: str = Field(None, description="The fingerprint of the config for the sandbox") diff --git a/letta/server/server.py b/letta/server/server.py index 08701587da..609e8eab49 100644 --- a/letta/server/server.py +++ b/letta/server/server.py @@ -1829,6 +1829,8 @@ def run_tool_from_source( date=get_utc_time(), status="success", function_return=function_response, + stdout=sandbox_run_result.stdout, + stderr=sandbox_run_result.stderr, ) except Exception as e: # same as agent.py @@ -1844,6 +1846,8 @@ def run_tool_from_source( date=get_utc_time(), status="error", function_return=error_msg, + stdout=[''], + stderr=[traceback.format_exc()], ) # Composio wrappers diff --git a/letta/services/tool_execution_sandbox.py b/letta/services/tool_execution_sandbox.py index b45a0b00c5..e1698dfe14 100644 --- a/letta/services/tool_execution_sandbox.py +++ b/letta/services/tool_execution_sandbox.py @@ -127,11 +127,12 @@ def run_local_dir_sandbox(self, agent_state: AgentState) -> Optional[SandboxRunR # Save the old stdout old_stdout = sys.stdout + old_stderr = sys.stderr try: if local_configs.use_venv: return self.run_local_dir_sandbox_venv(sbx_config, env, temp_file_path) else: - return self.run_local_dir_sandbox_runpy(sbx_config, env_vars, temp_file_path, old_stdout) + return self.run_local_dir_sandbox_runpy(sbx_config, env_vars, temp_file_path, old_stdout, old_stderr) except Exception as e: logger.error(f"Executing tool {self.tool_name} has an unexpected error: {e}") logger.error(f"Logging out tool {self.tool_name} auto-generated code for debugging: \n\n{code}") @@ -139,6 +140,7 @@ def run_local_dir_sandbox(self, agent_state: AgentState) -> Optional[SandboxRunR finally: # Clean up the temp file and restore stdout sys.stdout = old_stdout + sys.stderr = old_stderr os.remove(temp_file_path) def run_local_dir_sandbox_venv(self, sbx_config: SandboxConfig, env: Dict[str, str], temp_file_path: str) -> SandboxRunResult: @@ -202,8 +204,9 @@ def run_local_dir_sandbox_venv(self, sbx_config: SandboxConfig, env: Dict[str, s func_return, agent_state = self.parse_best_effort(func_result) return SandboxRunResult( func_return=func_return, - agent_state=agent_state, - stdout=[stdout], + agent_state=agent_state, + stdout=[stdout], + stderr=[result.stderr], sandbox_config_fingerprint=sbx_config.fingerprint(), ) except subprocess.TimeoutExpired: @@ -216,11 +219,13 @@ def run_local_dir_sandbox_venv(self, sbx_config: SandboxConfig, env: Dict[str, s raise e def run_local_dir_sandbox_runpy( - self, sbx_config: SandboxConfig, env_vars: Dict[str, str], temp_file_path: str, old_stdout: TextIO + self, sbx_config: SandboxConfig, env_vars: Dict[str, str], temp_file_path: str, old_stdout: TextIO, old_stderr: TextIO ) -> SandboxRunResult: - # Redirect stdout to capture script output + # Redirect stdout and stderr to capture script output captured_stdout = io.StringIO() + captured_stderr = io.StringIO() sys.stdout = captured_stdout + sys.stderr = captured_stderr # Execute the temp file with self.temporary_env_vars(env_vars): @@ -230,14 +235,17 @@ def run_local_dir_sandbox_runpy( func_result = result.get(self.LOCAL_SANDBOX_RESULT_VAR_NAME) func_return, agent_state = self.parse_best_effort(func_result) - # Restore stdout and collect captured output + # Restore stdout and stderr and collect captured output sys.stdout = old_stdout + sys.stderr = old_stderr stdout_output = captured_stdout.getvalue() + stderr_output = captured_stderr.getvalue() return SandboxRunResult( func_return=func_return, agent_state=agent_state, stdout=[stdout_output], + stderr=[stderr_output], sandbox_config_fingerprint=sbx_config.fingerprint(), ) @@ -297,7 +305,8 @@ def run_e2b_sandbox(self, agent_state: AgentState) -> Optional[SandboxRunResult] return SandboxRunResult( func_return=func_return, agent_state=agent_state, - stdout=execution.logs.stdout + execution.logs.stderr, + stdout=execution.logs.stdout, + stderr=execution.logs.stderr, sandbox_config_fingerprint=sbx_config.fingerprint(), ) diff --git a/tests/test_server.py b/tests/test_server.py index 8d85cc1cd5..32e5da6902 100644 --- a/tests/test_server.py +++ b/tests/test_server.py @@ -541,6 +541,8 @@ def test_tool_run(server, mock_e2b_api_key_none, user_id, agent_id): print(result) assert result.status == "success" assert result.function_return == "Ingested message Hello, world!", result.function_return + assert result.stdout == [''] + assert result.stderr == [''] result = server.run_tool_from_source( user_id=user_id, @@ -552,6 +554,8 @@ def test_tool_run(server, mock_e2b_api_key_none, user_id, agent_id): print(result) assert result.status == "success" assert result.function_return == "Ingested message Well well well", result.function_return + assert result.stdout == [''] + assert result.stderr == [''] result = server.run_tool_from_source( user_id=user_id, @@ -564,6 +568,8 @@ def test_tool_run(server, mock_e2b_api_key_none, user_id, agent_id): assert result.status == "error" assert "Error" in result.function_return, result.function_return assert "missing 1 required positional argument" in result.function_return, result.function_return + assert result.stdout == [''] + assert result.stderr != [''], "missing 1 required positional argument" in result.stderr[0] # Test that we can still pull the tool out by default (pulls that last tool in the source) result = server.run_tool_from_source( @@ -576,6 +582,8 @@ def test_tool_run(server, mock_e2b_api_key_none, user_id, agent_id): print(result) assert result.status == "success" assert result.function_return == "Ingested message Well well well", result.function_return + assert result.stdout != [''], "I'm a distractor" in result.stdout[0] + assert result.stderr == [''] # Test that we can pull the tool out by name result = server.run_tool_from_source( @@ -588,6 +596,8 @@ def test_tool_run(server, mock_e2b_api_key_none, user_id, agent_id): print(result) assert result.status == "success" assert result.function_return == "Ingested message Well well well", result.function_return + assert result.stdout != [''], "I'm a distractor" in result.stdout[0] + assert result.stderr == [''] # Test that we can pull a different tool out by name result = server.run_tool_from_source( @@ -600,6 +610,8 @@ def test_tool_run(server, mock_e2b_api_key_none, user_id, agent_id): print(result) assert result.status == "success" assert result.function_return == str(None), result.function_return + assert result.stdout != [''], "I'm a distractor" in result.stdout[0] + assert result.stderr == [''] def test_composio_client_simple(server): From af127b8d4c772f601743241a6fb9ba42248a412e Mon Sep 17 00:00:00 2001 From: Shubham Naik Date: Tue, 10 Dec 2024 13:36:20 -0800 Subject: [PATCH 31/39] feat: support local https mode (#2217) Co-authored-by: Shubham Naik --- certs/README.md | 9 +++++++++ certs/localhost-key.pem | 28 ++++++++++++++++++++++++++++ certs/localhost.pem | 26 ++++++++++++++++++++++++++ letta/cli/cli.py | 1 + letta/server/rest_api/app.py | 25 ++++++++++++++++++------- 5 files changed, 82 insertions(+), 7 deletions(-) create mode 100644 certs/README.md create mode 100644 certs/localhost-key.pem create mode 100644 certs/localhost.pem diff --git a/certs/README.md b/certs/README.md new file mode 100644 index 0000000000..87f56da334 --- /dev/null +++ b/certs/README.md @@ -0,0 +1,9 @@ +# About +These certs are used to set up a localhost https connection to the ADE. + +## Instructions +1. Install [mkcert](https://github.com/FiloSottile/mkcert) +2. Run `mkcert -install` +3. Run letta with the environment variable `LOCAL_HTTPS=true` +4. Access the app at [https://app.letta.com/development-servers/local/dashboard](https://app.letta.com/development-servers/local/dashboard) +5. Click "Add remote server" and enter `https://localhost:8283` as the URL, leave password blank unless you have secured your ADE with a password. diff --git a/certs/localhost-key.pem b/certs/localhost-key.pem new file mode 100644 index 0000000000..363a191f97 --- /dev/null +++ b/certs/localhost-key.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDenaHTolfy9TzX +AUd60yPO1W0mpxdDTuxr2p3tBUaQJt5bEGzJbs1M0i5YVRK/SxtYZQvyqmI0ULKN +8+evKSEpJoDgLfFKM266jzKDSXd5XBQ3XuuxbKq6NV6qoTdweJ0zP0XXDUnKoTN6 +eMkUi8hD9P1TR3Ok3VGnT1wsdG0wPwRPDI/sD92GASL4ViUy/1Llrs7GjlOC+7M2 +GMoGifSHjmx2xgZ/K8cdD2q15iJJlhdbgCwfejcQlP7cmLtSJHH188EZeoFPEfNS +UpYNglS1kx0D/LC1ooTQRkCpLAnxeonMQZS5O5/q/zyxftkyKO+NInR6DtM0Uj8f +Gu5UDw1TAgMBAAECggEBANhqpkf4K0gm4V6j/7mISedp1RMenZ7xuyWfAqjJ2C+L +md8tuJSbAzsLmcKF8hPGEG9+zH685Xu2d99InpPKiFJY/DD0eP6JwbvcOl8nrN5u +hbjOrpNt8QvVlpKK6DqPB0Qq3tqSMIqs7D7D7bfrrGVkZmHvtJ0yC497t0AAb6XV +zTtnY9K6LVxb/t+eIDDX1AvE7i2WC+j1YgfexbM0VI/g4fveEVaKPFkWF3nSm0Ag +BmqzfGFUWKhBZmWpU0m86Zc45q575Bl64yXEQDYocUw3UfOp5/uF0lwuVe5Bpq/w +hIJgrW6RLzy20QFgPDxHhG3QdBpq4gB9BxCrMb+yhQECgYEA6jL1pD0drczxfaWC +bh+VsbVrRnz/0XDlPjaysO+qKsNP104gydeyyB6RcGnO8PssvFMCJNQlMhkEpp9x +bOwR36a4A2absC/osGgFH4pYyN2wqDb+qE2A3M+rnSGourd09y8BsCovN+5YsozK +HCnqjNWUweypU+RUvtM5jztsiOUCgYEA81ajdczpsysSn0xIFF0exvnnPLy/AiOR +uEFbPi0kavy7niwd609JFsSOwUXg2QavBNeoLH+YrQhueDoBJZANerLfLD8jqQxD +ojB6DkHwK5Vf9NIm8DZQ6trtf8xWGB/TuwpkWHm1wMdlCbmH38MukU4p6as7FKzT +8J57p/TfcdcCgYEAyDqfVzbFTBWfFbxOghZQ5mlj+RTfplHuPL2JEssk4oCvnzV1 +xPu8J2ozEDf2LIOiYLRbbd9OmcFX/5jr4aMHOP6R7p5oVz7uovub/bZLaBhZc8fo ++z2gAakvYR0o49H7l2XB/LpkOl51yNmj5mZT2Oq1zwKmVkotxiRS3smAZp0CgYAP +sOyFchs3xHVE9GRJe9+6MO8qSXl/p8+DtCMwFTUd+QIYJvwe6lPqNe6Go/zlwbqT +c1yS0f+EWODWu9bLF0jnOpWNgtzHz9Skpr+YH8Re6xju7oY4QyhgnJFoBkMe9x5u +FzN1SRPhRHpNcDtEwI9GK2YkfTgoEyTvhSiwIegurQKBgQDGkheCC7hqleNV3lGM +SfMUgyGt/1abZ82eAkdfeUrM37FeSbxuafyp0ICjZY0xsn6RUickHyXBJhkOGSJX +lGSvHwMsnXT30KAGd08ZqWmTSGmH6IrdVhrveY+e18ILXYgAkQ1T9tSKjeyFfK8m +dUWlFZHfdToFu1pn7yBgofMAmw== +-----END PRIVATE KEY----- diff --git a/certs/localhost.pem b/certs/localhost.pem new file mode 100644 index 0000000000..8d4df20565 --- /dev/null +++ b/certs/localhost.pem @@ -0,0 +1,26 @@ +-----BEGIN CERTIFICATE----- +MIIEdjCCAt6gAwIBAgIQX/6Qs3c+lQq4+pcuUK7a7jANBgkqhkiG9w0BAQsFADCB +lTEeMBwGA1UEChMVbWtjZXJ0IGRldmVsb3BtZW50IENBMTUwMwYDVQQLDCxzaHVi +QFNodWItTWVtR1BULURyaXZlci5sb2NhbCAoU2h1YmhhbSBOYWlrKTE8MDoGA1UE +AwwzbWtjZXJ0IHNodWJAU2h1Yi1NZW1HUFQtRHJpdmVyLmxvY2FsIChTaHViaGFt +IE5haWspMB4XDTI0MTIxMDE4MTgwMFoXDTI3MDMxMDE4MTgwMFowYDEnMCUGA1UE +ChMebWtjZXJ0IGRldmVsb3BtZW50IGNlcnRpZmljYXRlMTUwMwYDVQQLDCxzaHVi +QFNodWItTWVtR1BULURyaXZlci5sb2NhbCAoU2h1YmhhbSBOYWlrKTCCASIwDQYJ +KoZIhvcNAQEBBQADggEPADCCAQoCggEBAN6dodOiV/L1PNcBR3rTI87VbSanF0NO +7Gvane0FRpAm3lsQbMluzUzSLlhVEr9LG1hlC/KqYjRQso3z568pISkmgOAt8Uoz +brqPMoNJd3lcFDde67Fsqro1XqqhN3B4nTM/RdcNScqhM3p4yRSLyEP0/VNHc6Td +UadPXCx0bTA/BE8Mj+wP3YYBIvhWJTL/UuWuzsaOU4L7szYYygaJ9IeObHbGBn8r +xx0ParXmIkmWF1uALB96NxCU/tyYu1IkcfXzwRl6gU8R81JSlg2CVLWTHQP8sLWi +hNBGQKksCfF6icxBlLk7n+r/PLF+2TIo740idHoO0zRSPx8a7lQPDVMCAwEAAaN2 +MHQwDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMB8GA1UdIwQY +MBaAFJ31vDww7/qA2mBtAN3GE+TZCqNeMCwGA1UdEQQlMCOCCWxvY2FsaG9zdIcE +fwAAAYcQAAAAAAAAAAAAAAAAAAAAATANBgkqhkiG9w0BAQsFAAOCAYEAAy63DbPf +8iSWYmVgccFc5D+MpNgnWi6WsI5OTtRv66eV9+Vv9HseEVrSw8IVMoZt+peosi+K +0woVPT+bKCxlgkEClO7oZIUEMlzJq9sduISFV5fzFLMq8xhIIO5ud4zs1X/1GlrE +zAdq+YiZnbuKqLFSoPLZGrVclmiI3dLqp0LETZxVOiCGt52RRb87Mt9bQEHnP5LJ +EOJYZ1C7/qDDga3vFJ66Nisy015DpE7XXM5PASElpK9l4+yBOg9UdLSkd0VLm/Jm ++4rskdrSTiomU2TBd6Vys7nrn2K72ZOHOcbfFnPEet9z1L44xaddsaPE52ayu8PO +uxHl7rBr2Kzeuy22ppX09EpPdSnjrG6Sgojv4CCS6n8tAbhat8K0pTrzk1e7L8HT +Qy4P/LlViW56mfyM+02CurxbVOecCDdFPMwY357BXMnL6VmRrDtixh+XIXdyK2zS +aYhsbRFA7VJ1AM57gbPbDJElyIlvVetubilvfuOvvQX46cC/ZX5agzTd +-----END CERTIFICATE----- diff --git a/letta/cli/cli.py b/letta/cli/cli.py index bedab42916..81e27c9af6 100644 --- a/letta/cli/cli.py +++ b/letta/cli/cli.py @@ -53,6 +53,7 @@ def server( debug: Annotated[bool, typer.Option(help="Turn debugging output on")] = False, ade: Annotated[bool, typer.Option(help="Allows remote access")] = False, # NOTE: deprecated secure: Annotated[bool, typer.Option(help="Adds simple security access")] = False, + localhttps: Annotated[bool, typer.Option(help="Setup local https")] = False, ): """Launch a Letta server process""" if type == ServerChoice.rest_api: diff --git a/letta/server/rest_api/app.py b/letta/server/rest_api/app.py index 321a48827e..9b567bf4a0 100644 --- a/letta/server/rest_api/app.py +++ b/letta/server/rest_api/app.py @@ -175,7 +175,6 @@ async def user_not_found_handler(request, exc): return JSONResponse(status_code=404, content={"detail": "User not found"}) settings.cors_origins.append("https://app.letta.com") - print(f"▶ View using ADE at: https://app.letta.com/development-servers/local/dashboard") if (os.getenv("LETTA_SERVER_SECURE") == "true") or "--secure" in sys.argv: print(f"▶ Using secure mode with password: {random_password}") @@ -254,9 +253,21 @@ def start_server( # Add the handler to the logger server_logger.addHandler(stream_handler) - print(f"▶ Server running at: http://{host or 'localhost'}:{port or REST_DEFAULT_PORT}\n") - uvicorn.run( - app, - host=host or "localhost", - port=port or REST_DEFAULT_PORT, - ) + if (os.getenv("LOCAL_HTTPS") == "true") or "--localhttps" in sys.argv: + uvicorn.run( + app, + host=host or "localhost", + port=port or REST_DEFAULT_PORT, + ssl_keyfile="certs/localhost-key.pem", + ssl_certfile="certs/localhost.pem", + ) + print(f"▶ Server running at: https://{host or 'localhost'}:{port or REST_DEFAULT_PORT}\n") + else: + uvicorn.run( + app, + host=host or "localhost", + port=port or REST_DEFAULT_PORT, + ) + print(f"▶ Server running at: http://{host or 'localhost'}:{port or REST_DEFAULT_PORT}\n") + + print(f"▶ View using ADE at: https://app.letta.com/development-servers/local/dashboard") From 61f8a15a1b01fda2fb0e6c075fd6e37027f3b07a Mon Sep 17 00:00:00 2001 From: Shubham Naik Date: Tue, 10 Dec 2024 13:37:21 -0800 Subject: [PATCH 32/39] feat: add files (#2210) Co-authored-by: Shubham Naik --- .../assets/{index-4848e3d7.js => index-048c9598.js} | 2 +- .../assets/{index-43ab4d62.css => index-0e31b727.css} | 2 +- letta/server/static_files/index.html | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) rename letta/server/static_files/assets/{index-4848e3d7.js => index-048c9598.js} (99%) rename letta/server/static_files/assets/{index-43ab4d62.css => index-0e31b727.css} (87%) diff --git a/letta/server/static_files/assets/index-4848e3d7.js b/letta/server/static_files/assets/index-048c9598.js similarity index 99% rename from letta/server/static_files/assets/index-4848e3d7.js rename to letta/server/static_files/assets/index-048c9598.js index 97b8ee8c24..7b63c8d1b9 100644 --- a/letta/server/static_files/assets/index-4848e3d7.js +++ b/letta/server/static_files/assets/index-048c9598.js @@ -37,4 +37,4 @@ `+l[u].replace(" at new "," at ");return e.displayName&&s.includes("")&&(s=s.replace("",e.displayName)),s}while(1<=u&&0<=i);break}}}finally{Sl=!1,Error.prepareStackTrace=t}return(e=e?e.displayName||e.name:"")?yt(e):""}function Lc(e){switch(e.tag){case 5:return yt(e.type);case 16:return yt("Lazy");case 13:return yt("Suspense");case 19:return yt("SuspenseList");case 0:case 2:case 15:return e=kl(e.type,!1),e;case 11:return e=kl(e.type.render,!1),e;case 1:return e=kl(e.type,!0),e;default:return""}}function Zl(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Dn:return"Fragment";case On:return"Portal";case Ql:return"Profiler";case Qo:return"StrictMode";case Kl:return"Suspense";case Yl:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case ls:return(e.displayName||"Context")+".Consumer";case rs:return(e._context.displayName||"Context")+".Provider";case Ko:var n=e.render;return e=e.displayName,e||(e=n.displayName||n.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Yo:return n=e.displayName||null,n!==null?n:Zl(e.type)||"Memo";case Ge:n=e._payload,e=e._init;try{return Zl(e(n))}catch{}}return null}function Tc(e){var n=e.type;switch(e.tag){case 24:return"Cache";case 9:return(n.displayName||"Context")+".Consumer";case 10:return(n._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=n.render,e=e.displayName||e.name||"",n.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return n;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Zl(n);case 8:return n===Qo?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof n=="function")return n.displayName||n.name||null;if(typeof n=="string")return n}return null}function fn(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function us(e){var n=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(n==="checkbox"||n==="radio")}function Rc(e){var n=us(e)?"checked":"value",t=Object.getOwnPropertyDescriptor(e.constructor.prototype,n),r=""+e[n];if(!e.hasOwnProperty(n)&&typeof t<"u"&&typeof t.get=="function"&&typeof t.set=="function"){var l=t.get,o=t.set;return Object.defineProperty(e,n,{configurable:!0,get:function(){return l.call(this)},set:function(u){r=""+u,o.call(this,u)}}),Object.defineProperty(e,n,{enumerable:t.enumerable}),{getValue:function(){return r},setValue:function(u){r=""+u},stopTracking:function(){e._valueTracker=null,delete e[n]}}}}function tr(e){e._valueTracker||(e._valueTracker=Rc(e))}function is(e){if(!e)return!1;var n=e._valueTracker;if(!n)return!0;var t=n.getValue(),r="";return e&&(r=us(e)?e.checked?"true":"false":e.value),e=r,e!==t?(n.setValue(e),!0):!1}function Lr(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Xl(e,n){var t=n.checked;return U({},n,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:t??e._wrapperState.initialChecked})}function Hu(e,n){var t=n.defaultValue==null?"":n.defaultValue,r=n.checked!=null?n.checked:n.defaultChecked;t=fn(n.value!=null?n.value:t),e._wrapperState={initialChecked:r,initialValue:t,controlled:n.type==="checkbox"||n.type==="radio"?n.checked!=null:n.value!=null}}function ss(e,n){n=n.checked,n!=null&&Wo(e,"checked",n,!1)}function Gl(e,n){ss(e,n);var t=fn(n.value),r=n.type;if(t!=null)r==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+t):e.value!==""+t&&(e.value=""+t);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}n.hasOwnProperty("value")?Jl(e,n.type,t):n.hasOwnProperty("defaultValue")&&Jl(e,n.type,fn(n.defaultValue)),n.checked==null&&n.defaultChecked!=null&&(e.defaultChecked=!!n.defaultChecked)}function Uu(e,n,t){if(n.hasOwnProperty("value")||n.hasOwnProperty("defaultValue")){var r=n.type;if(!(r!=="submit"&&r!=="reset"||n.value!==void 0&&n.value!==null))return;n=""+e._wrapperState.initialValue,t||n===e.value||(e.value=n),e.defaultValue=n}t=e.name,t!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,t!==""&&(e.name=t)}function Jl(e,n,t){(n!=="number"||Lr(e.ownerDocument)!==e)&&(t==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+t&&(e.defaultValue=""+t))}var gt=Array.isArray;function Qn(e,n,t,r){if(e=e.options,n){n={};for(var l=0;l"+n.valueOf().toString()+"",n=rr.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;n.firstChild;)e.appendChild(n.firstChild)}});function Rt(e,n){if(n){var t=e.firstChild;if(t&&t===e.lastChild&&t.nodeType===3){t.nodeValue=n;return}}e.textContent=n}var kt={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Mc=["Webkit","ms","Moz","O"];Object.keys(kt).forEach(function(e){Mc.forEach(function(n){n=n+e.charAt(0).toUpperCase()+e.substring(1),kt[n]=kt[e]})});function ds(e,n,t){return n==null||typeof n=="boolean"||n===""?"":t||typeof n!="number"||n===0||kt.hasOwnProperty(e)&&kt[e]?(""+n).trim():n+"px"}function ps(e,n){e=e.style;for(var t in n)if(n.hasOwnProperty(t)){var r=t.indexOf("--")===0,l=ds(t,n[t],r);t==="float"&&(t="cssFloat"),r?e.setProperty(t,l):e[t]=l}}var Oc=U({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function eo(e,n){if(n){if(Oc[e]&&(n.children!=null||n.dangerouslySetInnerHTML!=null))throw Error(y(137,e));if(n.dangerouslySetInnerHTML!=null){if(n.children!=null)throw Error(y(60));if(typeof n.dangerouslySetInnerHTML!="object"||!("__html"in n.dangerouslySetInnerHTML))throw Error(y(61))}if(n.style!=null&&typeof n.style!="object")throw Error(y(62))}}function no(e,n){if(e.indexOf("-")===-1)return typeof n.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var to=null;function Zo(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var ro=null,Kn=null,Yn=null;function Bu(e){if(e=Gt(e)){if(typeof ro!="function")throw Error(y(280));var n=e.stateNode;n&&(n=ll(n),ro(e.stateNode,e.type,n))}}function ms(e){Kn?Yn?Yn.push(e):Yn=[e]:Kn=e}function hs(){if(Kn){var e=Kn,n=Yn;if(Yn=Kn=null,Bu(e),n)for(e=0;e>>=0,e===0?32:31-(Wc(e)/Qc|0)|0}var lr=64,or=4194304;function wt(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Or(e,n){var t=e.pendingLanes;if(t===0)return 0;var r=0,l=e.suspendedLanes,o=e.pingedLanes,u=t&268435455;if(u!==0){var i=u&~l;i!==0?r=wt(i):(o&=u,o!==0&&(r=wt(o)))}else u=t&~l,u!==0?r=wt(u):o!==0&&(r=wt(o));if(r===0)return 0;if(n!==0&&n!==r&&!(n&l)&&(l=r&-r,o=n&-n,l>=o||l===16&&(o&4194240)!==0))return n;if(r&4&&(r|=t&16),n=e.entangledLanes,n!==0)for(e=e.entanglements,n&=r;0t;t++)n.push(e);return n}function Zt(e,n,t){e.pendingLanes|=n,n!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,n=31-Re(n),e[n]=t}function Xc(e,n){var t=e.pendingLanes&~n;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=n,e.mutableReadLanes&=n,e.entangledLanes&=n,n=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=Ct),qu=String.fromCharCode(32),bu=!1;function js(e,n){switch(e){case"keyup":return xf.indexOf(n.keyCode)!==-1;case"keydown":return n.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Is(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var jn=!1;function Nf(e,n){switch(e){case"compositionend":return Is(n);case"keypress":return n.which!==32?null:(bu=!0,qu);case"textInput":return e=n.data,e===qu&&bu?null:e;default:return null}}function Pf(e,n){if(jn)return e==="compositionend"||!tu&&js(e,n)?(e=Os(),Sr=bo=en=null,jn=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(n.ctrlKey||n.altKey||n.metaKey)||n.ctrlKey&&n.altKey){if(n.char&&1=n)return{node:t,offset:n-e};e=r}e:{for(;t;){if(t.nextSibling){t=t.nextSibling;break e}t=t.parentNode}t=void 0}t=ri(t)}}function Us(e,n){return e&&n?e===n?!0:e&&e.nodeType===3?!1:n&&n.nodeType===3?Us(e,n.parentNode):"contains"in e?e.contains(n):e.compareDocumentPosition?!!(e.compareDocumentPosition(n)&16):!1:!1}function $s(){for(var e=window,n=Lr();n instanceof e.HTMLIFrameElement;){try{var t=typeof n.contentWindow.location.href=="string"}catch{t=!1}if(t)e=n.contentWindow;else break;n=Lr(e.document)}return n}function ru(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return n&&(n==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||n==="textarea"||e.contentEditable==="true")}function If(e){var n=$s(),t=e.focusedElem,r=e.selectionRange;if(n!==t&&t&&t.ownerDocument&&Us(t.ownerDocument.documentElement,t)){if(r!==null&&ru(t)){if(n=r.start,e=r.end,e===void 0&&(e=n),"selectionStart"in t)t.selectionStart=n,t.selectionEnd=Math.min(e,t.value.length);else if(e=(n=t.ownerDocument||document)&&n.defaultView||window,e.getSelection){e=e.getSelection();var l=t.textContent.length,o=Math.min(r.start,l);r=r.end===void 0?o:Math.min(r.end,l),!e.extend&&o>r&&(l=r,r=o,o=l),l=li(t,o);var u=li(t,r);l&&u&&(e.rangeCount!==1||e.anchorNode!==l.node||e.anchorOffset!==l.offset||e.focusNode!==u.node||e.focusOffset!==u.offset)&&(n=n.createRange(),n.setStart(l.node,l.offset),e.removeAllRanges(),o>r?(e.addRange(n),e.extend(u.node,u.offset)):(n.setEnd(u.node,u.offset),e.addRange(n)))}}for(n=[],e=t;e=e.parentNode;)e.nodeType===1&&n.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof t.focus=="function"&&t.focus(),t=0;t=document.documentMode,In=null,ao=null,_t=null,co=!1;function oi(e,n,t){var r=t.window===t?t.document:t.nodeType===9?t:t.ownerDocument;co||In==null||In!==Lr(r)||(r=In,"selectionStart"in r&&ru(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),_t&&Vt(_t,r)||(_t=r,r=Ir(ao,"onSelect"),0Hn||(e.current=yo[Hn],yo[Hn]=null,Hn--)}function O(e,n){Hn++,yo[Hn]=e.current,e.current=n}var dn={},le=mn(dn),fe=mn(!1),_n=dn;function qn(e,n){var t=e.type.contextTypes;if(!t)return dn;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===n)return r.__reactInternalMemoizedMaskedChildContext;var l={},o;for(o in t)l[o]=n[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=n,e.__reactInternalMemoizedMaskedChildContext=l),l}function de(e){return e=e.childContextTypes,e!=null}function Fr(){j(fe),j(le)}function di(e,n,t){if(le.current!==dn)throw Error(y(168));O(le,n),O(fe,t)}function Gs(e,n,t){var r=e.stateNode;if(n=n.childContextTypes,typeof r.getChildContext!="function")return t;r=r.getChildContext();for(var l in r)if(!(l in n))throw Error(y(108,Tc(e)||"Unknown",l));return U({},t,r)}function Hr(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||dn,_n=le.current,O(le,e),O(fe,fe.current),!0}function pi(e,n,t){var r=e.stateNode;if(!r)throw Error(y(169));t?(e=Gs(e,n,_n),r.__reactInternalMemoizedMergedChildContext=e,j(fe),j(le),O(le,e)):j(fe),O(fe,t)}var Ue=null,ol=!1,jl=!1;function Js(e){Ue===null?Ue=[e]:Ue.push(e)}function Zf(e){ol=!0,Js(e)}function hn(){if(!jl&&Ue!==null){jl=!0;var e=0,n=M;try{var t=Ue;for(M=1;e>=u,l-=u,$e=1<<32-Re(n)+l|t<N?(B=_,_=null):B=_.sibling;var T=p(f,_,d[N],v);if(T===null){_===null&&(_=B);break}e&&_&&T.alternate===null&&n(f,_),a=o(T,a,N),x===null?E=T:x.sibling=T,x=T,_=B}if(N===d.length)return t(f,_),V&&gn(f,N),E;if(_===null){for(;NN?(B=_,_=null):B=_.sibling;var Ne=p(f,_,T.value,v);if(Ne===null){_===null&&(_=B);break}e&&_&&Ne.alternate===null&&n(f,_),a=o(Ne,a,N),x===null?E=Ne:x.sibling=Ne,x=Ne,_=B}if(T.done)return t(f,_),V&&gn(f,N),E;if(_===null){for(;!T.done;N++,T=d.next())T=m(f,T.value,v),T!==null&&(a=o(T,a,N),x===null?E=T:x.sibling=T,x=T);return V&&gn(f,N),E}for(_=r(f,_);!T.done;N++,T=d.next())T=g(_,f,N,T.value,v),T!==null&&(e&&T.alternate!==null&&_.delete(T.key===null?N:T.key),a=o(T,a,N),x===null?E=T:x.sibling=T,x=T);return e&&_.forEach(function(it){return n(f,it)}),V&&gn(f,N),E}function I(f,a,d,v){if(typeof d=="object"&&d!==null&&d.type===Dn&&d.key===null&&(d=d.props.children),typeof d=="object"&&d!==null){switch(d.$$typeof){case nr:e:{for(var E=d.key,x=a;x!==null;){if(x.key===E){if(E=d.type,E===Dn){if(x.tag===7){t(f,x.sibling),a=l(x,d.props.children),a.return=f,f=a;break e}}else if(x.elementType===E||typeof E=="object"&&E!==null&&E.$$typeof===Ge&&Si(E)===x.type){t(f,x.sibling),a=l(x,d.props),a.ref=mt(f,x,d),a.return=f,f=a;break e}t(f,x);break}else n(f,x);x=x.sibling}d.type===Dn?(a=xn(d.props.children,f.mode,v,d.key),a.return=f,f=a):(v=zr(d.type,d.key,d.props,null,f.mode,v),v.ref=mt(f,a,d),v.return=f,f=v)}return u(f);case On:e:{for(x=d.key;a!==null;){if(a.key===x)if(a.tag===4&&a.stateNode.containerInfo===d.containerInfo&&a.stateNode.implementation===d.implementation){t(f,a.sibling),a=l(a,d.children||[]),a.return=f,f=a;break e}else{t(f,a);break}else n(f,a);a=a.sibling}a=Bl(d,f.mode,v),a.return=f,f=a}return u(f);case Ge:return x=d._init,I(f,a,x(d._payload),v)}if(gt(d))return w(f,a,d,v);if(at(d))return S(f,a,d,v);dr(f,d)}return typeof d=="string"&&d!==""||typeof d=="number"?(d=""+d,a!==null&&a.tag===6?(t(f,a.sibling),a=l(a,d),a.return=f,f=a):(t(f,a),a=Al(d,f.mode,v),a.return=f,f=a),u(f)):t(f,a)}return I}var et=oa(!0),ua=oa(!1),Jt={},Fe=mn(Jt),$t=mn(Jt),At=mn(Jt);function En(e){if(e===Jt)throw Error(y(174));return e}function du(e,n){switch(O(At,n),O($t,e),O(Fe,Jt),e=n.nodeType,e){case 9:case 11:n=(n=n.documentElement)?n.namespaceURI:bl(null,"");break;default:e=e===8?n.parentNode:n,n=e.namespaceURI||null,e=e.tagName,n=bl(n,e)}j(Fe),O(Fe,n)}function nt(){j(Fe),j($t),j(At)}function ia(e){En(At.current);var n=En(Fe.current),t=bl(n,e.type);n!==t&&(O($t,e),O(Fe,t))}function pu(e){$t.current===e&&(j(Fe),j($t))}var F=mn(0);function Qr(e){for(var n=e;n!==null;){if(n.tag===13){var t=n.memoizedState;if(t!==null&&(t=t.dehydrated,t===null||t.data==="$?"||t.data==="$!"))return n}else if(n.tag===19&&n.memoizedProps.revealOrder!==void 0){if(n.flags&128)return n}else if(n.child!==null){n.child.return=n,n=n.child;continue}if(n===e)break;for(;n.sibling===null;){if(n.return===null||n.return===e)return null;n=n.return}n.sibling.return=n.return,n=n.sibling}return null}var Il=[];function mu(){for(var e=0;et?t:4,e(!0);var r=Vl.transition;Vl.transition={};try{e(!1),n()}finally{M=t,Vl.transition=r}}function Ca(){return _e().memoizedState}function qf(e,n,t){var r=an(e);if(t={lane:r,action:t,hasEagerState:!1,eagerState:null,next:null},xa(e))_a(n,t);else if(t=na(e,n,t,r),t!==null){var l=ue();Me(t,e,r,l),Na(t,n,r)}}function bf(e,n,t){var r=an(e),l={lane:r,action:t,hasEagerState:!1,eagerState:null,next:null};if(xa(e))_a(n,l);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=n.lastRenderedReducer,o!==null))try{var u=n.lastRenderedState,i=o(u,t);if(l.hasEagerState=!0,l.eagerState=i,Oe(i,u)){var s=n.interleaved;s===null?(l.next=l,cu(n)):(l.next=s.next,s.next=l),n.interleaved=l;return}}catch{}finally{}t=na(e,n,l,r),t!==null&&(l=ue(),Me(t,e,r,l),Na(t,n,r))}}function xa(e){var n=e.alternate;return e===H||n!==null&&n===H}function _a(e,n){Nt=Kr=!0;var t=e.pending;t===null?n.next=n:(n.next=t.next,t.next=n),e.pending=n}function Na(e,n,t){if(t&4194240){var r=n.lanes;r&=e.pendingLanes,t|=r,n.lanes=t,Go(e,t)}}var Yr={readContext:xe,useCallback:ne,useContext:ne,useEffect:ne,useImperativeHandle:ne,useInsertionEffect:ne,useLayoutEffect:ne,useMemo:ne,useReducer:ne,useRef:ne,useState:ne,useDebugValue:ne,useDeferredValue:ne,useTransition:ne,useMutableSource:ne,useSyncExternalStore:ne,useId:ne,unstable_isNewReconciler:!1},ed={readContext:xe,useCallback:function(e,n){return je().memoizedState=[e,n===void 0?null:n],e},useContext:xe,useEffect:Ei,useImperativeHandle:function(e,n,t){return t=t!=null?t.concat([e]):null,xr(4194308,4,ga.bind(null,n,e),t)},useLayoutEffect:function(e,n){return xr(4194308,4,e,n)},useInsertionEffect:function(e,n){return xr(4,2,e,n)},useMemo:function(e,n){var t=je();return n=n===void 0?null:n,e=e(),t.memoizedState=[e,n],e},useReducer:function(e,n,t){var r=je();return n=t!==void 0?t(n):n,r.memoizedState=r.baseState=n,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:n},r.queue=e,e=e.dispatch=qf.bind(null,H,e),[r.memoizedState,e]},useRef:function(e){var n=je();return e={current:e},n.memoizedState=e},useState:ki,useDebugValue:wu,useDeferredValue:function(e){return je().memoizedState=e},useTransition:function(){var e=ki(!1),n=e[0];return e=Jf.bind(null,e[1]),je().memoizedState=e,[n,e]},useMutableSource:function(){},useSyncExternalStore:function(e,n,t){var r=H,l=je();if(V){if(t===void 0)throw Error(y(407));t=t()}else{if(t=n(),J===null)throw Error(y(349));Pn&30||ca(r,n,t)}l.memoizedState=t;var o={value:t,getSnapshot:n};return l.queue=o,Ei(da.bind(null,r,o,e),[e]),r.flags|=2048,Qt(9,fa.bind(null,r,o,t,n),void 0,null),t},useId:function(){var e=je(),n=J.identifierPrefix;if(V){var t=Ae,r=$e;t=(r&~(1<<32-Re(r)-1)).toString(32)+t,n=":"+n+"R"+t,t=Bt++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=u.createElement(t,{is:r.is}):(e=u.createElement(t),t==="select"&&(u=e,r.multiple?u.multiple=!0:r.size&&(u.size=r.size))):e=u.createElementNS(e,t),e[Ie]=n,e[Ut]=r,ja(e,n,!1,!1),n.stateNode=e;e:{switch(u=no(t,r),t){case"dialog":D("cancel",e),D("close",e),l=r;break;case"iframe":case"object":case"embed":D("load",e),l=r;break;case"video":case"audio":for(l=0;lrt&&(n.flags|=128,r=!0,ht(o,!1),n.lanes=4194304)}else{if(!r)if(e=Qr(u),e!==null){if(n.flags|=128,r=!0,t=e.updateQueue,t!==null&&(n.updateQueue=t,n.flags|=4),ht(o,!0),o.tail===null&&o.tailMode==="hidden"&&!u.alternate&&!V)return te(n),null}else 2*Q()-o.renderingStartTime>rt&&t!==1073741824&&(n.flags|=128,r=!0,ht(o,!1),n.lanes=4194304);o.isBackwards?(u.sibling=n.child,n.child=u):(t=o.last,t!==null?t.sibling=u:n.child=u,o.last=u)}return o.tail!==null?(n=o.tail,o.rendering=n,o.tail=n.sibling,o.renderingStartTime=Q(),n.sibling=null,t=F.current,O(F,r?t&1|2:t&1),n):(te(n),null);case 22:case 23:return _u(),r=n.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(n.flags|=8192),r&&n.mode&1?me&1073741824&&(te(n),n.subtreeFlags&6&&(n.flags|=8192)):te(n),null;case 24:return null;case 25:return null}throw Error(y(156,n.tag))}function sd(e,n){switch(ou(n),n.tag){case 1:return de(n.type)&&Fr(),e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 3:return nt(),j(fe),j(le),mu(),e=n.flags,e&65536&&!(e&128)?(n.flags=e&-65537|128,n):null;case 5:return pu(n),null;case 13:if(j(F),e=n.memoizedState,e!==null&&e.dehydrated!==null){if(n.alternate===null)throw Error(y(340));bn()}return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 19:return j(F),null;case 4:return nt(),null;case 10:return au(n.type._context),null;case 22:case 23:return _u(),null;case 24:return null;default:return null}}var mr=!1,re=!1,ad=typeof WeakSet=="function"?WeakSet:Set,k=null;function Bn(e,n){var t=e.ref;if(t!==null)if(typeof t=="function")try{t(null)}catch(r){A(e,n,r)}else t.current=null}function Lo(e,n,t){try{t()}catch(r){A(e,n,r)}}var Ri=!1;function cd(e,n){if(fo=Dr,e=$s(),ru(e)){if("selectionStart"in e)var t={start:e.selectionStart,end:e.selectionEnd};else e:{t=(t=e.ownerDocument)&&t.defaultView||window;var r=t.getSelection&&t.getSelection();if(r&&r.rangeCount!==0){t=r.anchorNode;var l=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{t.nodeType,o.nodeType}catch{t=null;break e}var u=0,i=-1,s=-1,c=0,h=0,m=e,p=null;n:for(;;){for(var g;m!==t||l!==0&&m.nodeType!==3||(i=u+l),m!==o||r!==0&&m.nodeType!==3||(s=u+r),m.nodeType===3&&(u+=m.nodeValue.length),(g=m.firstChild)!==null;)p=m,m=g;for(;;){if(m===e)break n;if(p===t&&++c===l&&(i=u),p===o&&++h===r&&(s=u),(g=m.nextSibling)!==null)break;m=p,p=m.parentNode}m=g}t=i===-1||s===-1?null:{start:i,end:s}}else t=null}t=t||{start:0,end:0}}else t=null;for(po={focusedElem:e,selectionRange:t},Dr=!1,k=n;k!==null;)if(n=k,e=n.child,(n.subtreeFlags&1028)!==0&&e!==null)e.return=n,k=e;else for(;k!==null;){n=k;try{var w=n.alternate;if(n.flags&1024)switch(n.tag){case 0:case 11:case 15:break;case 1:if(w!==null){var S=w.memoizedProps,I=w.memoizedState,f=n.stateNode,a=f.getSnapshotBeforeUpdate(n.elementType===n.type?S:ze(n.type,S),I);f.__reactInternalSnapshotBeforeUpdate=a}break;case 3:var d=n.stateNode.containerInfo;d.nodeType===1?d.textContent="":d.nodeType===9&&d.documentElement&&d.removeChild(d.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(y(163))}}catch(v){A(n,n.return,v)}if(e=n.sibling,e!==null){e.return=n.return,k=e;break}k=n.return}return w=Ri,Ri=!1,w}function Pt(e,n,t){var r=n.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var l=r=r.next;do{if((l.tag&e)===e){var o=l.destroy;l.destroy=void 0,o!==void 0&&Lo(n,t,o)}l=l.next}while(l!==r)}}function sl(e,n){if(n=n.updateQueue,n=n!==null?n.lastEffect:null,n!==null){var t=n=n.next;do{if((t.tag&e)===e){var r=t.create;t.destroy=r()}t=t.next}while(t!==n)}}function To(e){var n=e.ref;if(n!==null){var t=e.stateNode;switch(e.tag){case 5:e=t;break;default:e=t}typeof n=="function"?n(e):n.current=e}}function Fa(e){var n=e.alternate;n!==null&&(e.alternate=null,Fa(n)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(n=e.stateNode,n!==null&&(delete n[Ie],delete n[Ut],delete n[vo],delete n[Kf],delete n[Yf])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Ha(e){return e.tag===5||e.tag===3||e.tag===4}function Mi(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Ha(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Ro(e,n,t){var r=e.tag;if(r===5||r===6)e=e.stateNode,n?t.nodeType===8?t.parentNode.insertBefore(e,n):t.insertBefore(e,n):(t.nodeType===8?(n=t.parentNode,n.insertBefore(e,t)):(n=t,n.appendChild(e)),t=t._reactRootContainer,t!=null||n.onclick!==null||(n.onclick=Vr));else if(r!==4&&(e=e.child,e!==null))for(Ro(e,n,t),e=e.sibling;e!==null;)Ro(e,n,t),e=e.sibling}function Mo(e,n,t){var r=e.tag;if(r===5||r===6)e=e.stateNode,n?t.insertBefore(e,n):t.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(Mo(e,n,t),e=e.sibling;e!==null;)Mo(e,n,t),e=e.sibling}var q=null,Le=!1;function Xe(e,n,t){for(t=t.child;t!==null;)Ua(e,n,t),t=t.sibling}function Ua(e,n,t){if(Ve&&typeof Ve.onCommitFiberUnmount=="function")try{Ve.onCommitFiberUnmount(el,t)}catch{}switch(t.tag){case 5:re||Bn(t,n);case 6:var r=q,l=Le;q=null,Xe(e,n,t),q=r,Le=l,q!==null&&(Le?(e=q,t=t.stateNode,e.nodeType===8?e.parentNode.removeChild(t):e.removeChild(t)):q.removeChild(t.stateNode));break;case 18:q!==null&&(Le?(e=q,t=t.stateNode,e.nodeType===8?Dl(e.parentNode,t):e.nodeType===1&&Dl(e,t),jt(e)):Dl(q,t.stateNode));break;case 4:r=q,l=Le,q=t.stateNode.containerInfo,Le=!0,Xe(e,n,t),q=r,Le=l;break;case 0:case 11:case 14:case 15:if(!re&&(r=t.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){l=r=r.next;do{var o=l,u=o.destroy;o=o.tag,u!==void 0&&(o&2||o&4)&&Lo(t,n,u),l=l.next}while(l!==r)}Xe(e,n,t);break;case 1:if(!re&&(Bn(t,n),r=t.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=t.memoizedProps,r.state=t.memoizedState,r.componentWillUnmount()}catch(i){A(t,n,i)}Xe(e,n,t);break;case 21:Xe(e,n,t);break;case 22:t.mode&1?(re=(r=re)||t.memoizedState!==null,Xe(e,n,t),re=r):Xe(e,n,t);break;default:Xe(e,n,t)}}function Oi(e){var n=e.updateQueue;if(n!==null){e.updateQueue=null;var t=e.stateNode;t===null&&(t=e.stateNode=new ad),n.forEach(function(r){var l=wd.bind(null,e,r);t.has(r)||(t.add(r),r.then(l,l))})}}function Pe(e,n){var t=n.deletions;if(t!==null)for(var r=0;rl&&(l=u),r&=~o}if(r=l,r=Q()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*dd(r/1960))-r,10e?16:e,nn===null)var r=!1;else{if(e=nn,nn=null,Gr=0,R&6)throw Error(y(331));var l=R;for(R|=4,k=e.current;k!==null;){var o=k,u=o.child;if(k.flags&16){var i=o.deletions;if(i!==null){for(var s=0;sQ()-Cu?Cn(e,0):Eu|=t),pe(e,n)}function Za(e,n){n===0&&(e.mode&1?(n=or,or<<=1,!(or&130023424)&&(or=4194304)):n=1);var t=ue();e=Ke(e,n),e!==null&&(Zt(e,n,t),pe(e,t))}function gd(e){var n=e.memoizedState,t=0;n!==null&&(t=n.retryLane),Za(e,t)}function wd(e,n){var t=0;switch(e.tag){case 13:var r=e.stateNode,l=e.memoizedState;l!==null&&(t=l.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(y(314))}r!==null&&r.delete(n),Za(e,t)}var Xa;Xa=function(e,n,t){if(e!==null)if(e.memoizedProps!==n.pendingProps||fe.current)ce=!0;else{if(!(e.lanes&t)&&!(n.flags&128))return ce=!1,ud(e,n,t);ce=!!(e.flags&131072)}else ce=!1,V&&n.flags&1048576&&qs(n,$r,n.index);switch(n.lanes=0,n.tag){case 2:var r=n.type;_r(e,n),e=n.pendingProps;var l=qn(n,le.current);Xn(n,t),l=vu(null,n,r,e,l,t);var o=yu();return n.flags|=1,typeof l=="object"&&l!==null&&typeof l.render=="function"&&l.$$typeof===void 0?(n.tag=1,n.memoizedState=null,n.updateQueue=null,de(r)?(o=!0,Hr(n)):o=!1,n.memoizedState=l.state!==null&&l.state!==void 0?l.state:null,fu(n),l.updater=ul,n.stateNode=l,l._reactInternals=n,Eo(n,r,e,t),n=_o(null,n,r,!0,o,t)):(n.tag=0,V&&o&&lu(n),oe(null,n,l,t),n=n.child),n;case 16:r=n.elementType;e:{switch(_r(e,n),e=n.pendingProps,l=r._init,r=l(r._payload),n.type=r,l=n.tag=kd(r),e=ze(r,e),l){case 0:n=xo(null,n,r,e,t);break e;case 1:n=zi(null,n,r,e,t);break e;case 11:n=Ni(null,n,r,e,t);break e;case 14:n=Pi(null,n,r,ze(r.type,e),t);break e}throw Error(y(306,r,""))}return n;case 0:return r=n.type,l=n.pendingProps,l=n.elementType===r?l:ze(r,l),xo(e,n,r,l,t);case 1:return r=n.type,l=n.pendingProps,l=n.elementType===r?l:ze(r,l),zi(e,n,r,l,t);case 3:e:{if(Ma(n),e===null)throw Error(y(387));r=n.pendingProps,o=n.memoizedState,l=o.element,ta(e,n),Wr(n,r,null,t);var u=n.memoizedState;if(r=u.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:u.cache,pendingSuspenseBoundaries:u.pendingSuspenseBoundaries,transitions:u.transitions},n.updateQueue.baseState=o,n.memoizedState=o,n.flags&256){l=tt(Error(y(423)),n),n=Li(e,n,r,t,l);break e}else if(r!==l){l=tt(Error(y(424)),n),n=Li(e,n,r,t,l);break e}else for(he=on(n.stateNode.containerInfo.firstChild),ve=n,V=!0,Te=null,t=ua(n,null,r,t),n.child=t;t;)t.flags=t.flags&-3|4096,t=t.sibling;else{if(bn(),r===l){n=Ye(e,n,t);break e}oe(e,n,r,t)}n=n.child}return n;case 5:return ia(n),e===null&&wo(n),r=n.type,l=n.pendingProps,o=e!==null?e.memoizedProps:null,u=l.children,mo(r,l)?u=null:o!==null&&mo(r,o)&&(n.flags|=32),Ra(e,n),oe(e,n,u,t),n.child;case 6:return e===null&&wo(n),null;case 13:return Oa(e,n,t);case 4:return du(n,n.stateNode.containerInfo),r=n.pendingProps,e===null?n.child=et(n,null,r,t):oe(e,n,r,t),n.child;case 11:return r=n.type,l=n.pendingProps,l=n.elementType===r?l:ze(r,l),Ni(e,n,r,l,t);case 7:return oe(e,n,n.pendingProps,t),n.child;case 8:return oe(e,n,n.pendingProps.children,t),n.child;case 12:return oe(e,n,n.pendingProps.children,t),n.child;case 10:e:{if(r=n.type._context,l=n.pendingProps,o=n.memoizedProps,u=l.value,O(Ar,r._currentValue),r._currentValue=u,o!==null)if(Oe(o.value,u)){if(o.children===l.children&&!fe.current){n=Ye(e,n,t);break e}}else for(o=n.child,o!==null&&(o.return=n);o!==null;){var i=o.dependencies;if(i!==null){u=o.child;for(var s=i.firstContext;s!==null;){if(s.context===r){if(o.tag===1){s=Be(-1,t&-t),s.tag=2;var c=o.updateQueue;if(c!==null){c=c.shared;var h=c.pending;h===null?s.next=s:(s.next=h.next,h.next=s),c.pending=s}}o.lanes|=t,s=o.alternate,s!==null&&(s.lanes|=t),So(o.return,t,n),i.lanes|=t;break}s=s.next}}else if(o.tag===10)u=o.type===n.type?null:o.child;else if(o.tag===18){if(u=o.return,u===null)throw Error(y(341));u.lanes|=t,i=u.alternate,i!==null&&(i.lanes|=t),So(u,t,n),u=o.sibling}else u=o.child;if(u!==null)u.return=o;else for(u=o;u!==null;){if(u===n){u=null;break}if(o=u.sibling,o!==null){o.return=u.return,u=o;break}u=u.return}o=u}oe(e,n,l.children,t),n=n.child}return n;case 9:return l=n.type,r=n.pendingProps.children,Xn(n,t),l=xe(l),r=r(l),n.flags|=1,oe(e,n,r,t),n.child;case 14:return r=n.type,l=ze(r,n.pendingProps),l=ze(r.type,l),Pi(e,n,r,l,t);case 15:return La(e,n,n.type,n.pendingProps,t);case 17:return r=n.type,l=n.pendingProps,l=n.elementType===r?l:ze(r,l),_r(e,n),n.tag=1,de(r)?(e=!0,Hr(n)):e=!1,Xn(n,t),la(n,r,l),Eo(n,r,l,t),_o(null,n,r,!0,e,t);case 19:return Da(e,n,t);case 22:return Ta(e,n,t)}throw Error(y(156,n.tag))};function Ga(e,n){return Es(e,n)}function Sd(e,n,t,r){this.tag=e,this.key=t,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=n,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ee(e,n,t,r){return new Sd(e,n,t,r)}function Pu(e){return e=e.prototype,!(!e||!e.isReactComponent)}function kd(e){if(typeof e=="function")return Pu(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Ko)return 11;if(e===Yo)return 14}return 2}function cn(e,n){var t=e.alternate;return t===null?(t=Ee(e.tag,n,e.key,e.mode),t.elementType=e.elementType,t.type=e.type,t.stateNode=e.stateNode,t.alternate=e,e.alternate=t):(t.pendingProps=n,t.type=e.type,t.flags=0,t.subtreeFlags=0,t.deletions=null),t.flags=e.flags&14680064,t.childLanes=e.childLanes,t.lanes=e.lanes,t.child=e.child,t.memoizedProps=e.memoizedProps,t.memoizedState=e.memoizedState,t.updateQueue=e.updateQueue,n=e.dependencies,t.dependencies=n===null?null:{lanes:n.lanes,firstContext:n.firstContext},t.sibling=e.sibling,t.index=e.index,t.ref=e.ref,t}function zr(e,n,t,r,l,o){var u=2;if(r=e,typeof e=="function")Pu(e)&&(u=1);else if(typeof e=="string")u=5;else e:switch(e){case Dn:return xn(t.children,l,o,n);case Qo:u=8,l|=8;break;case Ql:return e=Ee(12,t,n,l|2),e.elementType=Ql,e.lanes=o,e;case Kl:return e=Ee(13,t,n,l),e.elementType=Kl,e.lanes=o,e;case Yl:return e=Ee(19,t,n,l),e.elementType=Yl,e.lanes=o,e;case os:return cl(t,l,o,n);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case rs:u=10;break e;case ls:u=9;break e;case Ko:u=11;break e;case Yo:u=14;break e;case Ge:u=16,r=null;break e}throw Error(y(130,e==null?e:typeof e,""))}return n=Ee(u,t,n,l),n.elementType=e,n.type=r,n.lanes=o,n}function xn(e,n,t,r){return e=Ee(7,e,r,n),e.lanes=t,e}function cl(e,n,t,r){return e=Ee(22,e,r,n),e.elementType=os,e.lanes=t,e.stateNode={isHidden:!1},e}function Al(e,n,t){return e=Ee(6,e,null,n),e.lanes=t,e}function Bl(e,n,t){return n=Ee(4,e.children!==null?e.children:[],e.key,n),n.lanes=t,n.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},n}function Ed(e,n,t,r,l){this.tag=n,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Cl(0),this.expirationTimes=Cl(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Cl(0),this.identifierPrefix=r,this.onRecoverableError=l,this.mutableSourceEagerHydrationData=null}function zu(e,n,t,r,l,o,u,i,s){return e=new Ed(e,n,t,i,s),n===1?(n=1,o===!0&&(n|=8)):n=0,o=Ee(3,null,null,n),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:t,cache:null,transitions:null,pendingSuspenseBoundaries:null},fu(o),e}function Cd(e,n,t){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(ec)}catch(e){console.error(e)}}ec(),qi.exports=ge;var zd=qi.exports,nc,$i=zd;nc=$i.createRoot,$i.hydrateRoot;function Ld(){return $.jsxs("svg",{width:"137",height:"40",viewBox:"0 0 137 40",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[$.jsx("path",{d:"M24.1831 16.0007H16.1225V24.0004H24.1831V16.0007Z",fill:"#161616"}),$.jsx("path",{d:"M32.2436 5.44985V0H8.06062V5.44985C8.06062 6.8587 6.91086 7.99978 5.4913 7.99978H0V32.0002H5.4913C6.91086 32.0002 8.06062 33.1413 8.06062 34.5502V40H32.2436V34.5502C32.2436 33.1413 33.3934 32.0002 34.8129 32.0002H40.3042V7.99978H34.8129C33.3934 7.99978 32.2436 6.8587 32.2436 5.44985ZM32.2436 29.4492C32.2436 30.858 31.0939 31.9991 29.6743 31.9991H10.6311C9.2115 31.9991 8.06174 30.858 8.06174 29.4492V10.5497C8.06174 9.14086 9.2115 7.99978 10.6311 7.99978H29.6743C31.0939 7.99978 32.2436 9.14086 32.2436 10.5497V29.4492Z",fill:"#161616"}),$.jsx("path",{d:"M64.0092 7.99974H60.4546V31.9991H76.2523V28.6047H64.0092V7.99974Z",fill:"#161616"}),$.jsx("path",{d:"M86.5004 15.0661H85.2364C81.4368 15.0661 77.6035 17.3783 77.6035 22.5426V25.0525C77.6035 29.7335 80.3329 32.529 84.9039 32.529H86.834C90.6908 32.529 93.4348 30.2757 93.9979 26.6469L94.0472 26.3269H90.3863L90.3258 26.5247C89.784 28.3046 88.3678 29.1346 85.869 29.1346C82.6257 29.1346 81.0953 27.7047 81.0584 24.637H94.1334V22.5426C94.1334 17.3783 90.3001 15.0661 86.5004 15.0661ZM81.1636 21.6371C81.5263 19.386 82.9134 18.4605 85.8679 18.4605C88.8223 18.4605 90.2083 19.386 90.571 21.6371H81.1636Z",fill:"#161616"}),$.jsx("path",{d:"M101.226 7.99974H97.6722V15.0662H95.31V18.4606H97.6722V25.1837C97.6722 31.1135 101.307 31.9991 103.475 31.9991H105.717V28.6047H104.44C102.157 28.6047 101.226 27.4603 101.226 24.6559V18.4617H105.717V15.0673H101.226V7.99974Z",fill:"#161616"}),$.jsx("path",{d:"M113.234 7.99974H109.681V15.0662H107.318V18.4606H109.681V25.1837C109.681 31.1135 113.316 31.9991 115.483 31.9991H117.726V28.6047H116.448C114.165 28.6047 113.234 27.4603 113.234 24.6559V18.4617H117.726V15.0673H113.234V7.99974Z",fill:"#161616"}),$.jsx("path",{d:"M136.034 28.6046C135.33 28.6046 135.016 28.3135 135.016 27.6602V21.8815C135.016 15.9517 131.381 15.0661 129.214 15.0661H125.954C123.135 15.0661 120.118 17.115 120.118 20.1649V20.4426H123.671V20.1649C123.671 19.2249 124.83 18.4616 126.253 18.4616H128.249C130.799 18.4616 131.35 19.3727 131.452 21.4071H126.319C122.35 21.4071 119.684 23.5092 119.684 26.638V27.0014C119.684 28.6535 120.33 32.4967 126.319 32.4967C127.848 32.4967 130.52 32.2312 131.958 30.5379C132.829 32.0012 134.664 32.0012 136.034 32.0012H136.314V28.6069H136.034V28.6046ZM131.462 26.8014C131.462 28.6869 128.446 29.0991 127.283 29.0991C123.898 29.0991 123.237 28.2802 123.237 26.8669C123.237 25.2981 124.636 24.4692 127.283 24.4692H131.462V26.8014Z",fill:"#161616"})]})}function Td(){return $.jsx("svg",{width:"16",height:"13",viewBox:"0 0 16 13",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:$.jsx("path",{d:"M14.4373 2.55366V5.21163H13.2678V3.332H12.4534V2.41123H11.4604V0H8.97894V1.94985H7.01906V0H4.53761V2.41123H3.54463V3.332H2.73019V5.21163H1.56068V2.55366H0V6.94885H0.850552V7.65697H1.7011V9.35807H3.96991V10.7222H2.48144V12.4774H4.4674V10.5978H6.52357V8.9669H9.47643V10.5978H11.5326V12.4774H13.5186V10.7222H12.0301V9.35807H14.2989V7.65697H15.1494V6.94885H16V2.55366H14.4393H14.4373ZM6.56971 7.12738H5.32798V5.001H6.56971V7.12738ZM10.668 7.12738H9.42628V5.001H10.668V7.12738Z",fill:"#FDFEFF"})})}function Rd(){return $.jsx("div",{className:"fixed bg-white w-[100dvh] p-0 h-[100dvh] flex items-center justify-center",children:$.jsxs("div",{className:"max-w-[893px] w-full border p-10 flex flex-col gap-5",children:[$.jsx(Ld,{}),$.jsxs("div",{className:"flex gap-2 flex-col max-w-[600px]",children:[$.jsx("h1",{className:"font-semibold text-3xl",children:"Experience the new ADE"}),$.jsx("h3",{className:"text-lg",children:"We have launched the next-generation Agent Development Environment (ADE) for interacting with agents both in the cloud and locally."}),$.jsx("p",{className:"mt-10",children:"The old Letta chat UI is no longer supported past Letta version 0.5.0. To use the old chat interface, please downgrade your Letta version."}),$.jsx("div",{className:"flex mt-3",children:$.jsxs("a",{href:"https://app.letta.com",className:"bg-black flex gap-3 items-center px-4 py-3 text-white text-bold",children:[$.jsx(Td,{}),"Open the new ADE"]})})]})]})})}const Md=nc(document.getElementById("root"));Md.render($.jsx($o.StrictMode,{children:$.jsx(Rd,{})})); +`+o.stack}return{value:e,source:n,stack:l,digest:null}}function Ul(e,n,t){return{value:e,source:null,stack:t??null,digest:n??null}}function Co(e,n){try{console.error(n.value)}catch(t){setTimeout(function(){throw t})}}var rd=typeof WeakMap=="function"?WeakMap:Map;function Pa(e,n,t){t=Be(-1,t),t.tag=3,t.payload={element:null};var r=n.value;return t.callback=function(){Xr||(Xr=!0,Oo=r),Co(e,n)},t}function za(e,n,t){t=Be(-1,t),t.tag=3;var r=e.type.getDerivedStateFromError;if(typeof r=="function"){var l=n.value;t.payload=function(){return r(l)},t.callback=function(){Co(e,n)}}var o=e.stateNode;return o!==null&&typeof o.componentDidCatch=="function"&&(t.callback=function(){Co(e,n),typeof r!="function"&&(sn===null?sn=new Set([this]):sn.add(this));var u=n.stack;this.componentDidCatch(n.value,{componentStack:u!==null?u:""})}),t}function Ci(e,n,t){var r=e.pingCache;if(r===null){r=e.pingCache=new rd;var l=new Set;r.set(n,l)}else l=r.get(n),l===void 0&&(l=new Set,r.set(n,l));l.has(t)||(l.add(t),e=yd.bind(null,e,n,t),n.then(e,e))}function xi(e){do{var n;if((n=e.tag===13)&&(n=e.memoizedState,n=n!==null?n.dehydrated!==null:!0),n)return e;e=e.return}while(e!==null);return null}function _i(e,n,t,r,l){return e.mode&1?(e.flags|=65536,e.lanes=l,e):(e===n?e.flags|=65536:(e.flags|=128,t.flags|=131072,t.flags&=-52805,t.tag===1&&(t.alternate===null?t.tag=17:(n=Be(-1,1),n.tag=2,un(t,n,1))),t.lanes|=1),e)}var ld=Ze.ReactCurrentOwner,ce=!1;function oe(e,n,t,r){n.child=e===null?ua(n,null,t,r):et(n,e.child,t,r)}function Ni(e,n,t,r,l){t=t.render;var o=n.ref;return Xn(n,l),r=vu(e,n,t,r,o,l),t=yu(),e!==null&&!ce?(n.updateQueue=e.updateQueue,n.flags&=-2053,e.lanes&=~l,Ye(e,n,l)):(V&&t&&lu(n),n.flags|=1,oe(e,n,r,l),n.child)}function Pi(e,n,t,r,l){if(e===null){var o=t.type;return typeof o=="function"&&!Pu(o)&&o.defaultProps===void 0&&t.compare===null&&t.defaultProps===void 0?(n.tag=15,n.type=o,La(e,n,o,r,l)):(e=zr(t.type,null,r,n,n.mode,l),e.ref=n.ref,e.return=n,n.child=e)}if(o=e.child,!(e.lanes&l)){var u=o.memoizedProps;if(t=t.compare,t=t!==null?t:Vt,t(u,r)&&e.ref===n.ref)return Ye(e,n,l)}return n.flags|=1,e=cn(o,r),e.ref=n.ref,e.return=n,n.child=e}function La(e,n,t,r,l){if(e!==null){var o=e.memoizedProps;if(Vt(o,r)&&e.ref===n.ref)if(ce=!1,n.pendingProps=r=o,(e.lanes&l)!==0)e.flags&131072&&(ce=!0);else return n.lanes=e.lanes,Ye(e,n,l)}return xo(e,n,t,r,l)}function Ta(e,n,t){var r=n.pendingProps,l=r.children,o=e!==null?e.memoizedState:null;if(r.mode==="hidden")if(!(n.mode&1))n.memoizedState={baseLanes:0,cachePool:null,transitions:null},O(Wn,me),me|=t;else{if(!(t&1073741824))return e=o!==null?o.baseLanes|t:t,n.lanes=n.childLanes=1073741824,n.memoizedState={baseLanes:e,cachePool:null,transitions:null},n.updateQueue=null,O(Wn,me),me|=e,null;n.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=o!==null?o.baseLanes:t,O(Wn,me),me|=r}else o!==null?(r=o.baseLanes|t,n.memoizedState=null):r=t,O(Wn,me),me|=r;return oe(e,n,l,t),n.child}function Ra(e,n){var t=n.ref;(e===null&&t!==null||e!==null&&e.ref!==t)&&(n.flags|=512,n.flags|=2097152)}function xo(e,n,t,r,l){var o=de(t)?_n:le.current;return o=qn(n,o),Xn(n,l),t=vu(e,n,t,r,o,l),r=yu(),e!==null&&!ce?(n.updateQueue=e.updateQueue,n.flags&=-2053,e.lanes&=~l,Ye(e,n,l)):(V&&r&&lu(n),n.flags|=1,oe(e,n,t,l),n.child)}function zi(e,n,t,r,l){if(de(t)){var o=!0;Hr(n)}else o=!1;if(Xn(n,l),n.stateNode===null)_r(e,n),la(n,t,r),Eo(n,t,r,l),r=!0;else if(e===null){var u=n.stateNode,i=n.memoizedProps;u.props=i;var s=u.context,c=t.contextType;typeof c=="object"&&c!==null?c=xe(c):(c=de(t)?_n:le.current,c=qn(n,c));var h=t.getDerivedStateFromProps,m=typeof h=="function"||typeof u.getSnapshotBeforeUpdate=="function";m||typeof u.UNSAFE_componentWillReceiveProps!="function"&&typeof u.componentWillReceiveProps!="function"||(i!==r||s!==c)&&wi(n,u,r,c),Je=!1;var p=n.memoizedState;u.state=p,Wr(n,r,u,l),s=n.memoizedState,i!==r||p!==s||fe.current||Je?(typeof h=="function"&&(ko(n,t,h,r),s=n.memoizedState),(i=Je||gi(n,t,i,r,p,s,c))?(m||typeof u.UNSAFE_componentWillMount!="function"&&typeof u.componentWillMount!="function"||(typeof u.componentWillMount=="function"&&u.componentWillMount(),typeof u.UNSAFE_componentWillMount=="function"&&u.UNSAFE_componentWillMount()),typeof u.componentDidMount=="function"&&(n.flags|=4194308)):(typeof u.componentDidMount=="function"&&(n.flags|=4194308),n.memoizedProps=r,n.memoizedState=s),u.props=r,u.state=s,u.context=c,r=i):(typeof u.componentDidMount=="function"&&(n.flags|=4194308),r=!1)}else{u=n.stateNode,ta(e,n),i=n.memoizedProps,c=n.type===n.elementType?i:ze(n.type,i),u.props=c,m=n.pendingProps,p=u.context,s=t.contextType,typeof s=="object"&&s!==null?s=xe(s):(s=de(t)?_n:le.current,s=qn(n,s));var g=t.getDerivedStateFromProps;(h=typeof g=="function"||typeof u.getSnapshotBeforeUpdate=="function")||typeof u.UNSAFE_componentWillReceiveProps!="function"&&typeof u.componentWillReceiveProps!="function"||(i!==m||p!==s)&&wi(n,u,r,s),Je=!1,p=n.memoizedState,u.state=p,Wr(n,r,u,l);var w=n.memoizedState;i!==m||p!==w||fe.current||Je?(typeof g=="function"&&(ko(n,t,g,r),w=n.memoizedState),(c=Je||gi(n,t,c,r,p,w,s)||!1)?(h||typeof u.UNSAFE_componentWillUpdate!="function"&&typeof u.componentWillUpdate!="function"||(typeof u.componentWillUpdate=="function"&&u.componentWillUpdate(r,w,s),typeof u.UNSAFE_componentWillUpdate=="function"&&u.UNSAFE_componentWillUpdate(r,w,s)),typeof u.componentDidUpdate=="function"&&(n.flags|=4),typeof u.getSnapshotBeforeUpdate=="function"&&(n.flags|=1024)):(typeof u.componentDidUpdate!="function"||i===e.memoizedProps&&p===e.memoizedState||(n.flags|=4),typeof u.getSnapshotBeforeUpdate!="function"||i===e.memoizedProps&&p===e.memoizedState||(n.flags|=1024),n.memoizedProps=r,n.memoizedState=w),u.props=r,u.state=w,u.context=s,r=c):(typeof u.componentDidUpdate!="function"||i===e.memoizedProps&&p===e.memoizedState||(n.flags|=4),typeof u.getSnapshotBeforeUpdate!="function"||i===e.memoizedProps&&p===e.memoizedState||(n.flags|=1024),r=!1)}return _o(e,n,t,r,o,l)}function _o(e,n,t,r,l,o){Ra(e,n);var u=(n.flags&128)!==0;if(!r&&!u)return l&&pi(n,t,!1),Ye(e,n,o);r=n.stateNode,ld.current=n;var i=u&&typeof t.getDerivedStateFromError!="function"?null:r.render();return n.flags|=1,e!==null&&u?(n.child=et(n,e.child,null,o),n.child=et(n,null,i,o)):oe(e,n,i,o),n.memoizedState=r.state,l&&pi(n,t,!0),n.child}function Ma(e){var n=e.stateNode;n.pendingContext?di(e,n.pendingContext,n.pendingContext!==n.context):n.context&&di(e,n.context,!1),du(e,n.containerInfo)}function Li(e,n,t,r,l){return bn(),uu(l),n.flags|=256,oe(e,n,t,r),n.child}var No={dehydrated:null,treeContext:null,retryLane:0};function Po(e){return{baseLanes:e,cachePool:null,transitions:null}}function Oa(e,n,t){var r=n.pendingProps,l=F.current,o=!1,u=(n.flags&128)!==0,i;if((i=u)||(i=e!==null&&e.memoizedState===null?!1:(l&2)!==0),i?(o=!0,n.flags&=-129):(e===null||e.memoizedState!==null)&&(l|=1),O(F,l&1),e===null)return wo(n),e=n.memoizedState,e!==null&&(e=e.dehydrated,e!==null)?(n.mode&1?e.data==="$!"?n.lanes=8:n.lanes=1073741824:n.lanes=1,null):(u=r.children,e=r.fallback,o?(r=n.mode,o=n.child,u={mode:"hidden",children:u},!(r&1)&&o!==null?(o.childLanes=0,o.pendingProps=u):o=cl(u,r,0,null),e=xn(e,r,t,null),o.return=n,e.return=n,o.sibling=e,n.child=o,n.child.memoizedState=Po(t),n.memoizedState=No,e):Su(n,u));if(l=e.memoizedState,l!==null&&(i=l.dehydrated,i!==null))return od(e,n,u,r,i,l,t);if(o){o=r.fallback,u=n.mode,l=e.child,i=l.sibling;var s={mode:"hidden",children:r.children};return!(u&1)&&n.child!==l?(r=n.child,r.childLanes=0,r.pendingProps=s,n.deletions=null):(r=cn(l,s),r.subtreeFlags=l.subtreeFlags&14680064),i!==null?o=cn(i,o):(o=xn(o,u,t,null),o.flags|=2),o.return=n,r.return=n,r.sibling=o,n.child=r,r=o,o=n.child,u=e.child.memoizedState,u=u===null?Po(t):{baseLanes:u.baseLanes|t,cachePool:null,transitions:u.transitions},o.memoizedState=u,o.childLanes=e.childLanes&~t,n.memoizedState=No,r}return o=e.child,e=o.sibling,r=cn(o,{mode:"visible",children:r.children}),!(n.mode&1)&&(r.lanes=t),r.return=n,r.sibling=null,e!==null&&(t=n.deletions,t===null?(n.deletions=[e],n.flags|=16):t.push(e)),n.child=r,n.memoizedState=null,r}function Su(e,n){return n=cl({mode:"visible",children:n},e.mode,0,null),n.return=e,e.child=n}function pr(e,n,t,r){return r!==null&&uu(r),et(n,e.child,null,t),e=Su(n,n.pendingProps.children),e.flags|=2,n.memoizedState=null,e}function od(e,n,t,r,l,o,u){if(t)return n.flags&256?(n.flags&=-257,r=Ul(Error(y(422))),pr(e,n,u,r)):n.memoizedState!==null?(n.child=e.child,n.flags|=128,null):(o=r.fallback,l=n.mode,r=cl({mode:"visible",children:r.children},l,0,null),o=xn(o,l,u,null),o.flags|=2,r.return=n,o.return=n,r.sibling=o,n.child=r,n.mode&1&&et(n,e.child,null,u),n.child.memoizedState=Po(u),n.memoizedState=No,o);if(!(n.mode&1))return pr(e,n,u,null);if(l.data==="$!"){if(r=l.nextSibling&&l.nextSibling.dataset,r)var i=r.dgst;return r=i,o=Error(y(419)),r=Ul(o,r,void 0),pr(e,n,u,r)}if(i=(u&e.childLanes)!==0,ce||i){if(r=J,r!==null){switch(u&-u){case 4:l=2;break;case 16:l=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:l=32;break;case 536870912:l=268435456;break;default:l=0}l=l&(r.suspendedLanes|u)?0:l,l!==0&&l!==o.retryLane&&(o.retryLane=l,Ke(e,l),Me(r,e,l,-1))}return Nu(),r=Ul(Error(y(421))),pr(e,n,u,r)}return l.data==="$?"?(n.flags|=128,n.child=e.child,n=gd.bind(null,e),l._reactRetry=n,null):(e=o.treeContext,he=on(l.nextSibling),ve=n,V=!0,Te=null,e!==null&&(Se[ke++]=$e,Se[ke++]=Ae,Se[ke++]=Nn,$e=e.id,Ae=e.overflow,Nn=n),n=Su(n,r.children),n.flags|=4096,n)}function Ti(e,n,t){e.lanes|=n;var r=e.alternate;r!==null&&(r.lanes|=n),So(e.return,n,t)}function $l(e,n,t,r,l){var o=e.memoizedState;o===null?e.memoizedState={isBackwards:n,rendering:null,renderingStartTime:0,last:r,tail:t,tailMode:l}:(o.isBackwards=n,o.rendering=null,o.renderingStartTime=0,o.last=r,o.tail=t,o.tailMode=l)}function Da(e,n,t){var r=n.pendingProps,l=r.revealOrder,o=r.tail;if(oe(e,n,r.children,t),r=F.current,r&2)r=r&1|2,n.flags|=128;else{if(e!==null&&e.flags&128)e:for(e=n.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&Ti(e,t,n);else if(e.tag===19)Ti(e,t,n);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===n)break e;for(;e.sibling===null;){if(e.return===null||e.return===n)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(O(F,r),!(n.mode&1))n.memoizedState=null;else switch(l){case"forwards":for(t=n.child,l=null;t!==null;)e=t.alternate,e!==null&&Qr(e)===null&&(l=t),t=t.sibling;t=l,t===null?(l=n.child,n.child=null):(l=t.sibling,t.sibling=null),$l(n,!1,l,t,o);break;case"backwards":for(t=null,l=n.child,n.child=null;l!==null;){if(e=l.alternate,e!==null&&Qr(e)===null){n.child=l;break}e=l.sibling,l.sibling=t,t=l,l=e}$l(n,!0,t,null,o);break;case"together":$l(n,!1,null,null,void 0);break;default:n.memoizedState=null}return n.child}function _r(e,n){!(n.mode&1)&&e!==null&&(e.alternate=null,n.alternate=null,n.flags|=2)}function Ye(e,n,t){if(e!==null&&(n.dependencies=e.dependencies),zn|=n.lanes,!(t&n.childLanes))return null;if(e!==null&&n.child!==e.child)throw Error(y(153));if(n.child!==null){for(e=n.child,t=cn(e,e.pendingProps),n.child=t,t.return=n;e.sibling!==null;)e=e.sibling,t=t.sibling=cn(e,e.pendingProps),t.return=n;t.sibling=null}return n.child}function ud(e,n,t){switch(n.tag){case 3:Ma(n),bn();break;case 5:ia(n);break;case 1:de(n.type)&&Hr(n);break;case 4:du(n,n.stateNode.containerInfo);break;case 10:var r=n.type._context,l=n.memoizedProps.value;O(Ar,r._currentValue),r._currentValue=l;break;case 13:if(r=n.memoizedState,r!==null)return r.dehydrated!==null?(O(F,F.current&1),n.flags|=128,null):t&n.child.childLanes?Oa(e,n,t):(O(F,F.current&1),e=Ye(e,n,t),e!==null?e.sibling:null);O(F,F.current&1);break;case 19:if(r=(t&n.childLanes)!==0,e.flags&128){if(r)return Da(e,n,t);n.flags|=128}if(l=n.memoizedState,l!==null&&(l.rendering=null,l.tail=null,l.lastEffect=null),O(F,F.current),r)break;return null;case 22:case 23:return n.lanes=0,Ta(e,n,t)}return Ye(e,n,t)}var ja,zo,Ia,Va;ja=function(e,n){for(var t=n.child;t!==null;){if(t.tag===5||t.tag===6)e.appendChild(t.stateNode);else if(t.tag!==4&&t.child!==null){t.child.return=t,t=t.child;continue}if(t===n)break;for(;t.sibling===null;){if(t.return===null||t.return===n)return;t=t.return}t.sibling.return=t.return,t=t.sibling}};zo=function(){};Ia=function(e,n,t,r){var l=e.memoizedProps;if(l!==r){e=n.stateNode,En(Fe.current);var o=null;switch(t){case"input":l=Xl(e,l),r=Xl(e,r),o=[];break;case"select":l=U({},l,{value:void 0}),r=U({},r,{value:void 0}),o=[];break;case"textarea":l=ql(e,l),r=ql(e,r),o=[];break;default:typeof l.onClick!="function"&&typeof r.onClick=="function"&&(e.onclick=Vr)}eo(t,r);var u;t=null;for(c in l)if(!r.hasOwnProperty(c)&&l.hasOwnProperty(c)&&l[c]!=null)if(c==="style"){var i=l[c];for(u in i)i.hasOwnProperty(u)&&(t||(t={}),t[u]="")}else c!=="dangerouslySetInnerHTML"&&c!=="children"&&c!=="suppressContentEditableWarning"&&c!=="suppressHydrationWarning"&&c!=="autoFocus"&&(Tt.hasOwnProperty(c)?o||(o=[]):(o=o||[]).push(c,null));for(c in r){var s=r[c];if(i=l!=null?l[c]:void 0,r.hasOwnProperty(c)&&s!==i&&(s!=null||i!=null))if(c==="style")if(i){for(u in i)!i.hasOwnProperty(u)||s&&s.hasOwnProperty(u)||(t||(t={}),t[u]="");for(u in s)s.hasOwnProperty(u)&&i[u]!==s[u]&&(t||(t={}),t[u]=s[u])}else t||(o||(o=[]),o.push(c,t)),t=s;else c==="dangerouslySetInnerHTML"?(s=s?s.__html:void 0,i=i?i.__html:void 0,s!=null&&i!==s&&(o=o||[]).push(c,s)):c==="children"?typeof s!="string"&&typeof s!="number"||(o=o||[]).push(c,""+s):c!=="suppressContentEditableWarning"&&c!=="suppressHydrationWarning"&&(Tt.hasOwnProperty(c)?(s!=null&&c==="onScroll"&&D("scroll",e),o||i===s||(o=[])):(o=o||[]).push(c,s))}t&&(o=o||[]).push("style",t);var c=o;(n.updateQueue=c)&&(n.flags|=4)}};Va=function(e,n,t,r){t!==r&&(n.flags|=4)};function ht(e,n){if(!V)switch(e.tailMode){case"hidden":n=e.tail;for(var t=null;n!==null;)n.alternate!==null&&(t=n),n=n.sibling;t===null?e.tail=null:t.sibling=null;break;case"collapsed":t=e.tail;for(var r=null;t!==null;)t.alternate!==null&&(r=t),t=t.sibling;r===null?n||e.tail===null?e.tail=null:e.tail.sibling=null:r.sibling=null}}function te(e){var n=e.alternate!==null&&e.alternate.child===e.child,t=0,r=0;if(n)for(var l=e.child;l!==null;)t|=l.lanes|l.childLanes,r|=l.subtreeFlags&14680064,r|=l.flags&14680064,l.return=e,l=l.sibling;else for(l=e.child;l!==null;)t|=l.lanes|l.childLanes,r|=l.subtreeFlags,r|=l.flags,l.return=e,l=l.sibling;return e.subtreeFlags|=r,e.childLanes=t,n}function id(e,n,t){var r=n.pendingProps;switch(ou(n),n.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return te(n),null;case 1:return de(n.type)&&Fr(),te(n),null;case 3:return r=n.stateNode,nt(),j(fe),j(le),mu(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),(e===null||e.child===null)&&(fr(n)?n.flags|=4:e===null||e.memoizedState.isDehydrated&&!(n.flags&256)||(n.flags|=1024,Te!==null&&(Io(Te),Te=null))),zo(e,n),te(n),null;case 5:pu(n);var l=En(At.current);if(t=n.type,e!==null&&n.stateNode!=null)Ia(e,n,t,r,l),e.ref!==n.ref&&(n.flags|=512,n.flags|=2097152);else{if(!r){if(n.stateNode===null)throw Error(y(166));return te(n),null}if(e=En(Fe.current),fr(n)){r=n.stateNode,t=n.type;var o=n.memoizedProps;switch(r[Ie]=n,r[Ut]=o,e=(n.mode&1)!==0,t){case"dialog":D("cancel",r),D("close",r);break;case"iframe":case"object":case"embed":D("load",r);break;case"video":case"audio":for(l=0;l<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=u.createElement(t,{is:r.is}):(e=u.createElement(t),t==="select"&&(u=e,r.multiple?u.multiple=!0:r.size&&(u.size=r.size))):e=u.createElementNS(e,t),e[Ie]=n,e[Ut]=r,ja(e,n,!1,!1),n.stateNode=e;e:{switch(u=no(t,r),t){case"dialog":D("cancel",e),D("close",e),l=r;break;case"iframe":case"object":case"embed":D("load",e),l=r;break;case"video":case"audio":for(l=0;lrt&&(n.flags|=128,r=!0,ht(o,!1),n.lanes=4194304)}else{if(!r)if(e=Qr(u),e!==null){if(n.flags|=128,r=!0,t=e.updateQueue,t!==null&&(n.updateQueue=t,n.flags|=4),ht(o,!0),o.tail===null&&o.tailMode==="hidden"&&!u.alternate&&!V)return te(n),null}else 2*Q()-o.renderingStartTime>rt&&t!==1073741824&&(n.flags|=128,r=!0,ht(o,!1),n.lanes=4194304);o.isBackwards?(u.sibling=n.child,n.child=u):(t=o.last,t!==null?t.sibling=u:n.child=u,o.last=u)}return o.tail!==null?(n=o.tail,o.rendering=n,o.tail=n.sibling,o.renderingStartTime=Q(),n.sibling=null,t=F.current,O(F,r?t&1|2:t&1),n):(te(n),null);case 22:case 23:return _u(),r=n.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(n.flags|=8192),r&&n.mode&1?me&1073741824&&(te(n),n.subtreeFlags&6&&(n.flags|=8192)):te(n),null;case 24:return null;case 25:return null}throw Error(y(156,n.tag))}function sd(e,n){switch(ou(n),n.tag){case 1:return de(n.type)&&Fr(),e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 3:return nt(),j(fe),j(le),mu(),e=n.flags,e&65536&&!(e&128)?(n.flags=e&-65537|128,n):null;case 5:return pu(n),null;case 13:if(j(F),e=n.memoizedState,e!==null&&e.dehydrated!==null){if(n.alternate===null)throw Error(y(340));bn()}return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 19:return j(F),null;case 4:return nt(),null;case 10:return au(n.type._context),null;case 22:case 23:return _u(),null;case 24:return null;default:return null}}var mr=!1,re=!1,ad=typeof WeakSet=="function"?WeakSet:Set,k=null;function Bn(e,n){var t=e.ref;if(t!==null)if(typeof t=="function")try{t(null)}catch(r){A(e,n,r)}else t.current=null}function Lo(e,n,t){try{t()}catch(r){A(e,n,r)}}var Ri=!1;function cd(e,n){if(fo=Dr,e=$s(),ru(e)){if("selectionStart"in e)var t={start:e.selectionStart,end:e.selectionEnd};else e:{t=(t=e.ownerDocument)&&t.defaultView||window;var r=t.getSelection&&t.getSelection();if(r&&r.rangeCount!==0){t=r.anchorNode;var l=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{t.nodeType,o.nodeType}catch{t=null;break e}var u=0,i=-1,s=-1,c=0,h=0,m=e,p=null;n:for(;;){for(var g;m!==t||l!==0&&m.nodeType!==3||(i=u+l),m!==o||r!==0&&m.nodeType!==3||(s=u+r),m.nodeType===3&&(u+=m.nodeValue.length),(g=m.firstChild)!==null;)p=m,m=g;for(;;){if(m===e)break n;if(p===t&&++c===l&&(i=u),p===o&&++h===r&&(s=u),(g=m.nextSibling)!==null)break;m=p,p=m.parentNode}m=g}t=i===-1||s===-1?null:{start:i,end:s}}else t=null}t=t||{start:0,end:0}}else t=null;for(po={focusedElem:e,selectionRange:t},Dr=!1,k=n;k!==null;)if(n=k,e=n.child,(n.subtreeFlags&1028)!==0&&e!==null)e.return=n,k=e;else for(;k!==null;){n=k;try{var w=n.alternate;if(n.flags&1024)switch(n.tag){case 0:case 11:case 15:break;case 1:if(w!==null){var S=w.memoizedProps,I=w.memoizedState,f=n.stateNode,a=f.getSnapshotBeforeUpdate(n.elementType===n.type?S:ze(n.type,S),I);f.__reactInternalSnapshotBeforeUpdate=a}break;case 3:var d=n.stateNode.containerInfo;d.nodeType===1?d.textContent="":d.nodeType===9&&d.documentElement&&d.removeChild(d.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(y(163))}}catch(v){A(n,n.return,v)}if(e=n.sibling,e!==null){e.return=n.return,k=e;break}k=n.return}return w=Ri,Ri=!1,w}function Pt(e,n,t){var r=n.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var l=r=r.next;do{if((l.tag&e)===e){var o=l.destroy;l.destroy=void 0,o!==void 0&&Lo(n,t,o)}l=l.next}while(l!==r)}}function sl(e,n){if(n=n.updateQueue,n=n!==null?n.lastEffect:null,n!==null){var t=n=n.next;do{if((t.tag&e)===e){var r=t.create;t.destroy=r()}t=t.next}while(t!==n)}}function To(e){var n=e.ref;if(n!==null){var t=e.stateNode;switch(e.tag){case 5:e=t;break;default:e=t}typeof n=="function"?n(e):n.current=e}}function Fa(e){var n=e.alternate;n!==null&&(e.alternate=null,Fa(n)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(n=e.stateNode,n!==null&&(delete n[Ie],delete n[Ut],delete n[vo],delete n[Kf],delete n[Yf])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Ha(e){return e.tag===5||e.tag===3||e.tag===4}function Mi(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Ha(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Ro(e,n,t){var r=e.tag;if(r===5||r===6)e=e.stateNode,n?t.nodeType===8?t.parentNode.insertBefore(e,n):t.insertBefore(e,n):(t.nodeType===8?(n=t.parentNode,n.insertBefore(e,t)):(n=t,n.appendChild(e)),t=t._reactRootContainer,t!=null||n.onclick!==null||(n.onclick=Vr));else if(r!==4&&(e=e.child,e!==null))for(Ro(e,n,t),e=e.sibling;e!==null;)Ro(e,n,t),e=e.sibling}function Mo(e,n,t){var r=e.tag;if(r===5||r===6)e=e.stateNode,n?t.insertBefore(e,n):t.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(Mo(e,n,t),e=e.sibling;e!==null;)Mo(e,n,t),e=e.sibling}var q=null,Le=!1;function Xe(e,n,t){for(t=t.child;t!==null;)Ua(e,n,t),t=t.sibling}function Ua(e,n,t){if(Ve&&typeof Ve.onCommitFiberUnmount=="function")try{Ve.onCommitFiberUnmount(el,t)}catch{}switch(t.tag){case 5:re||Bn(t,n);case 6:var r=q,l=Le;q=null,Xe(e,n,t),q=r,Le=l,q!==null&&(Le?(e=q,t=t.stateNode,e.nodeType===8?e.parentNode.removeChild(t):e.removeChild(t)):q.removeChild(t.stateNode));break;case 18:q!==null&&(Le?(e=q,t=t.stateNode,e.nodeType===8?Dl(e.parentNode,t):e.nodeType===1&&Dl(e,t),jt(e)):Dl(q,t.stateNode));break;case 4:r=q,l=Le,q=t.stateNode.containerInfo,Le=!0,Xe(e,n,t),q=r,Le=l;break;case 0:case 11:case 14:case 15:if(!re&&(r=t.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){l=r=r.next;do{var o=l,u=o.destroy;o=o.tag,u!==void 0&&(o&2||o&4)&&Lo(t,n,u),l=l.next}while(l!==r)}Xe(e,n,t);break;case 1:if(!re&&(Bn(t,n),r=t.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=t.memoizedProps,r.state=t.memoizedState,r.componentWillUnmount()}catch(i){A(t,n,i)}Xe(e,n,t);break;case 21:Xe(e,n,t);break;case 22:t.mode&1?(re=(r=re)||t.memoizedState!==null,Xe(e,n,t),re=r):Xe(e,n,t);break;default:Xe(e,n,t)}}function Oi(e){var n=e.updateQueue;if(n!==null){e.updateQueue=null;var t=e.stateNode;t===null&&(t=e.stateNode=new ad),n.forEach(function(r){var l=wd.bind(null,e,r);t.has(r)||(t.add(r),r.then(l,l))})}}function Pe(e,n){var t=n.deletions;if(t!==null)for(var r=0;rl&&(l=u),r&=~o}if(r=l,r=Q()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*dd(r/1960))-r,10e?16:e,nn===null)var r=!1;else{if(e=nn,nn=null,Gr=0,R&6)throw Error(y(331));var l=R;for(R|=4,k=e.current;k!==null;){var o=k,u=o.child;if(k.flags&16){var i=o.deletions;if(i!==null){for(var s=0;sQ()-Cu?Cn(e,0):Eu|=t),pe(e,n)}function Za(e,n){n===0&&(e.mode&1?(n=or,or<<=1,!(or&130023424)&&(or=4194304)):n=1);var t=ue();e=Ke(e,n),e!==null&&(Zt(e,n,t),pe(e,t))}function gd(e){var n=e.memoizedState,t=0;n!==null&&(t=n.retryLane),Za(e,t)}function wd(e,n){var t=0;switch(e.tag){case 13:var r=e.stateNode,l=e.memoizedState;l!==null&&(t=l.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(y(314))}r!==null&&r.delete(n),Za(e,t)}var Xa;Xa=function(e,n,t){if(e!==null)if(e.memoizedProps!==n.pendingProps||fe.current)ce=!0;else{if(!(e.lanes&t)&&!(n.flags&128))return ce=!1,ud(e,n,t);ce=!!(e.flags&131072)}else ce=!1,V&&n.flags&1048576&&qs(n,$r,n.index);switch(n.lanes=0,n.tag){case 2:var r=n.type;_r(e,n),e=n.pendingProps;var l=qn(n,le.current);Xn(n,t),l=vu(null,n,r,e,l,t);var o=yu();return n.flags|=1,typeof l=="object"&&l!==null&&typeof l.render=="function"&&l.$$typeof===void 0?(n.tag=1,n.memoizedState=null,n.updateQueue=null,de(r)?(o=!0,Hr(n)):o=!1,n.memoizedState=l.state!==null&&l.state!==void 0?l.state:null,fu(n),l.updater=ul,n.stateNode=l,l._reactInternals=n,Eo(n,r,e,t),n=_o(null,n,r,!0,o,t)):(n.tag=0,V&&o&&lu(n),oe(null,n,l,t),n=n.child),n;case 16:r=n.elementType;e:{switch(_r(e,n),e=n.pendingProps,l=r._init,r=l(r._payload),n.type=r,l=n.tag=kd(r),e=ze(r,e),l){case 0:n=xo(null,n,r,e,t);break e;case 1:n=zi(null,n,r,e,t);break e;case 11:n=Ni(null,n,r,e,t);break e;case 14:n=Pi(null,n,r,ze(r.type,e),t);break e}throw Error(y(306,r,""))}return n;case 0:return r=n.type,l=n.pendingProps,l=n.elementType===r?l:ze(r,l),xo(e,n,r,l,t);case 1:return r=n.type,l=n.pendingProps,l=n.elementType===r?l:ze(r,l),zi(e,n,r,l,t);case 3:e:{if(Ma(n),e===null)throw Error(y(387));r=n.pendingProps,o=n.memoizedState,l=o.element,ta(e,n),Wr(n,r,null,t);var u=n.memoizedState;if(r=u.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:u.cache,pendingSuspenseBoundaries:u.pendingSuspenseBoundaries,transitions:u.transitions},n.updateQueue.baseState=o,n.memoizedState=o,n.flags&256){l=tt(Error(y(423)),n),n=Li(e,n,r,t,l);break e}else if(r!==l){l=tt(Error(y(424)),n),n=Li(e,n,r,t,l);break e}else for(he=on(n.stateNode.containerInfo.firstChild),ve=n,V=!0,Te=null,t=ua(n,null,r,t),n.child=t;t;)t.flags=t.flags&-3|4096,t=t.sibling;else{if(bn(),r===l){n=Ye(e,n,t);break e}oe(e,n,r,t)}n=n.child}return n;case 5:return ia(n),e===null&&wo(n),r=n.type,l=n.pendingProps,o=e!==null?e.memoizedProps:null,u=l.children,mo(r,l)?u=null:o!==null&&mo(r,o)&&(n.flags|=32),Ra(e,n),oe(e,n,u,t),n.child;case 6:return e===null&&wo(n),null;case 13:return Oa(e,n,t);case 4:return du(n,n.stateNode.containerInfo),r=n.pendingProps,e===null?n.child=et(n,null,r,t):oe(e,n,r,t),n.child;case 11:return r=n.type,l=n.pendingProps,l=n.elementType===r?l:ze(r,l),Ni(e,n,r,l,t);case 7:return oe(e,n,n.pendingProps,t),n.child;case 8:return oe(e,n,n.pendingProps.children,t),n.child;case 12:return oe(e,n,n.pendingProps.children,t),n.child;case 10:e:{if(r=n.type._context,l=n.pendingProps,o=n.memoizedProps,u=l.value,O(Ar,r._currentValue),r._currentValue=u,o!==null)if(Oe(o.value,u)){if(o.children===l.children&&!fe.current){n=Ye(e,n,t);break e}}else for(o=n.child,o!==null&&(o.return=n);o!==null;){var i=o.dependencies;if(i!==null){u=o.child;for(var s=i.firstContext;s!==null;){if(s.context===r){if(o.tag===1){s=Be(-1,t&-t),s.tag=2;var c=o.updateQueue;if(c!==null){c=c.shared;var h=c.pending;h===null?s.next=s:(s.next=h.next,h.next=s),c.pending=s}}o.lanes|=t,s=o.alternate,s!==null&&(s.lanes|=t),So(o.return,t,n),i.lanes|=t;break}s=s.next}}else if(o.tag===10)u=o.type===n.type?null:o.child;else if(o.tag===18){if(u=o.return,u===null)throw Error(y(341));u.lanes|=t,i=u.alternate,i!==null&&(i.lanes|=t),So(u,t,n),u=o.sibling}else u=o.child;if(u!==null)u.return=o;else for(u=o;u!==null;){if(u===n){u=null;break}if(o=u.sibling,o!==null){o.return=u.return,u=o;break}u=u.return}o=u}oe(e,n,l.children,t),n=n.child}return n;case 9:return l=n.type,r=n.pendingProps.children,Xn(n,t),l=xe(l),r=r(l),n.flags|=1,oe(e,n,r,t),n.child;case 14:return r=n.type,l=ze(r,n.pendingProps),l=ze(r.type,l),Pi(e,n,r,l,t);case 15:return La(e,n,n.type,n.pendingProps,t);case 17:return r=n.type,l=n.pendingProps,l=n.elementType===r?l:ze(r,l),_r(e,n),n.tag=1,de(r)?(e=!0,Hr(n)):e=!1,Xn(n,t),la(n,r,l),Eo(n,r,l,t),_o(null,n,r,!0,e,t);case 19:return Da(e,n,t);case 22:return Ta(e,n,t)}throw Error(y(156,n.tag))};function Ga(e,n){return Es(e,n)}function Sd(e,n,t,r){this.tag=e,this.key=t,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=n,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ee(e,n,t,r){return new Sd(e,n,t,r)}function Pu(e){return e=e.prototype,!(!e||!e.isReactComponent)}function kd(e){if(typeof e=="function")return Pu(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Ko)return 11;if(e===Yo)return 14}return 2}function cn(e,n){var t=e.alternate;return t===null?(t=Ee(e.tag,n,e.key,e.mode),t.elementType=e.elementType,t.type=e.type,t.stateNode=e.stateNode,t.alternate=e,e.alternate=t):(t.pendingProps=n,t.type=e.type,t.flags=0,t.subtreeFlags=0,t.deletions=null),t.flags=e.flags&14680064,t.childLanes=e.childLanes,t.lanes=e.lanes,t.child=e.child,t.memoizedProps=e.memoizedProps,t.memoizedState=e.memoizedState,t.updateQueue=e.updateQueue,n=e.dependencies,t.dependencies=n===null?null:{lanes:n.lanes,firstContext:n.firstContext},t.sibling=e.sibling,t.index=e.index,t.ref=e.ref,t}function zr(e,n,t,r,l,o){var u=2;if(r=e,typeof e=="function")Pu(e)&&(u=1);else if(typeof e=="string")u=5;else e:switch(e){case Dn:return xn(t.children,l,o,n);case Qo:u=8,l|=8;break;case Ql:return e=Ee(12,t,n,l|2),e.elementType=Ql,e.lanes=o,e;case Kl:return e=Ee(13,t,n,l),e.elementType=Kl,e.lanes=o,e;case Yl:return e=Ee(19,t,n,l),e.elementType=Yl,e.lanes=o,e;case os:return cl(t,l,o,n);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case rs:u=10;break e;case ls:u=9;break e;case Ko:u=11;break e;case Yo:u=14;break e;case Ge:u=16,r=null;break e}throw Error(y(130,e==null?e:typeof e,""))}return n=Ee(u,t,n,l),n.elementType=e,n.type=r,n.lanes=o,n}function xn(e,n,t,r){return e=Ee(7,e,r,n),e.lanes=t,e}function cl(e,n,t,r){return e=Ee(22,e,r,n),e.elementType=os,e.lanes=t,e.stateNode={isHidden:!1},e}function Al(e,n,t){return e=Ee(6,e,null,n),e.lanes=t,e}function Bl(e,n,t){return n=Ee(4,e.children!==null?e.children:[],e.key,n),n.lanes=t,n.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},n}function Ed(e,n,t,r,l){this.tag=n,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Cl(0),this.expirationTimes=Cl(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Cl(0),this.identifierPrefix=r,this.onRecoverableError=l,this.mutableSourceEagerHydrationData=null}function zu(e,n,t,r,l,o,u,i,s){return e=new Ed(e,n,t,i,s),n===1?(n=1,o===!0&&(n|=8)):n=0,o=Ee(3,null,null,n),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:t,cache:null,transitions:null,pendingSuspenseBoundaries:null},fu(o),e}function Cd(e,n,t){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(ec)}catch(e){console.error(e)}}ec(),qi.exports=ge;var zd=qi.exports,nc,$i=zd;nc=$i.createRoot,$i.hydrateRoot;function Ld(){return $.jsxs("svg",{width:"137",height:"40",viewBox:"0 0 137 40",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[$.jsx("path",{d:"M24.1831 16.0007H16.1225V24.0004H24.1831V16.0007Z",fill:"#161616"}),$.jsx("path",{d:"M32.2436 5.44985V0H8.06062V5.44985C8.06062 6.8587 6.91086 7.99978 5.4913 7.99978H0V32.0002H5.4913C6.91086 32.0002 8.06062 33.1413 8.06062 34.5502V40H32.2436V34.5502C32.2436 33.1413 33.3934 32.0002 34.8129 32.0002H40.3042V7.99978H34.8129C33.3934 7.99978 32.2436 6.8587 32.2436 5.44985ZM32.2436 29.4492C32.2436 30.858 31.0939 31.9991 29.6743 31.9991H10.6311C9.2115 31.9991 8.06174 30.858 8.06174 29.4492V10.5497C8.06174 9.14086 9.2115 7.99978 10.6311 7.99978H29.6743C31.0939 7.99978 32.2436 9.14086 32.2436 10.5497V29.4492Z",fill:"#161616"}),$.jsx("path",{d:"M64.0092 7.99974H60.4546V31.9991H76.2523V28.6047H64.0092V7.99974Z",fill:"#161616"}),$.jsx("path",{d:"M86.5004 15.0661H85.2364C81.4368 15.0661 77.6035 17.3783 77.6035 22.5426V25.0525C77.6035 29.7335 80.3329 32.529 84.9039 32.529H86.834C90.6908 32.529 93.4348 30.2757 93.9979 26.6469L94.0472 26.3269H90.3863L90.3258 26.5247C89.784 28.3046 88.3678 29.1346 85.869 29.1346C82.6257 29.1346 81.0953 27.7047 81.0584 24.637H94.1334V22.5426C94.1334 17.3783 90.3001 15.0661 86.5004 15.0661ZM81.1636 21.6371C81.5263 19.386 82.9134 18.4605 85.8679 18.4605C88.8223 18.4605 90.2083 19.386 90.571 21.6371H81.1636Z",fill:"#161616"}),$.jsx("path",{d:"M101.226 7.99974H97.6722V15.0662H95.31V18.4606H97.6722V25.1837C97.6722 31.1135 101.307 31.9991 103.475 31.9991H105.717V28.6047H104.44C102.157 28.6047 101.226 27.4603 101.226 24.6559V18.4617H105.717V15.0673H101.226V7.99974Z",fill:"#161616"}),$.jsx("path",{d:"M113.234 7.99974H109.681V15.0662H107.318V18.4606H109.681V25.1837C109.681 31.1135 113.316 31.9991 115.483 31.9991H117.726V28.6047H116.448C114.165 28.6047 113.234 27.4603 113.234 24.6559V18.4617H117.726V15.0673H113.234V7.99974Z",fill:"#161616"}),$.jsx("path",{d:"M136.034 28.6046C135.33 28.6046 135.016 28.3135 135.016 27.6602V21.8815C135.016 15.9517 131.381 15.0661 129.214 15.0661H125.954C123.135 15.0661 120.118 17.115 120.118 20.1649V20.4426H123.671V20.1649C123.671 19.2249 124.83 18.4616 126.253 18.4616H128.249C130.799 18.4616 131.35 19.3727 131.452 21.4071H126.319C122.35 21.4071 119.684 23.5092 119.684 26.638V27.0014C119.684 28.6535 120.33 32.4967 126.319 32.4967C127.848 32.4967 130.52 32.2312 131.958 30.5379C132.829 32.0012 134.664 32.0012 136.034 32.0012H136.314V28.6069H136.034V28.6046ZM131.462 26.8014C131.462 28.6869 128.446 29.0991 127.283 29.0991C123.898 29.0991 123.237 28.2802 123.237 26.8669C123.237 25.2981 124.636 24.4692 127.283 24.4692H131.462V26.8014Z",fill:"#161616"})]})}function Td(){return $.jsx("svg",{width:"16",height:"13",viewBox:"0 0 16 13",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:$.jsx("path",{d:"M14.4373 2.55366V5.21163H13.2678V3.332H12.4534V2.41123H11.4604V0H8.97894V1.94985H7.01906V0H4.53761V2.41123H3.54463V3.332H2.73019V5.21163H1.56068V2.55366H0V6.94885H0.850552V7.65697H1.7011V9.35807H3.96991V10.7222H2.48144V12.4774H4.4674V10.5978H6.52357V8.9669H9.47643V10.5978H11.5326V12.4774H13.5186V10.7222H12.0301V9.35807H14.2989V7.65697H15.1494V6.94885H16V2.55366H14.4393H14.4373ZM6.56971 7.12738H5.32798V5.001H6.56971V7.12738ZM10.668 7.12738H9.42628V5.001H10.668V7.12738Z",fill:"#FDFEFF"})})}function Rd(){return $.jsx("div",{className:"fixed bg-white w-[100dvw] p-0 h-[100dvh] flex items-center justify-center",children:$.jsxs("div",{className:"max-w-[893px] w-full border p-10 flex flex-col gap-5",children:[$.jsx(Ld,{}),$.jsxs("div",{className:"flex gap-2 text-black flex-col max-w-[600px]",children:[$.jsx("h1",{className:"font-semibold text-3xl",children:"Experience the new ADE"}),$.jsx("h3",{className:"text-lg",children:"We have launched the next-generation Agent Development Environment (ADE) for interacting with agents both in the cloud and locally."}),$.jsx("p",{className:"mt-10",children:"The old Letta chat UI is no longer supported past Letta version 0.5.0. To use the old chat interface, please downgrade your Letta version."}),$.jsx("div",{className:"flex mt-3",children:$.jsxs("a",{href:"https://app.letta.com",className:"bg-black flex gap-3 items-center px-4 py-3 text-white text-bold",children:[$.jsx(Td,{}),"Open the new ADE"]})})]})]})})}const Md=nc(document.getElementById("root"));Md.render($.jsx($o.StrictMode,{children:$.jsx(Rd,{})})); diff --git a/letta/server/static_files/assets/index-43ab4d62.css b/letta/server/static_files/assets/index-0e31b727.css similarity index 87% rename from letta/server/static_files/assets/index-43ab4d62.css rename to letta/server/static_files/assets/index-0e31b727.css index 17e1816fd9..bd025e3c35 100644 --- a/letta/server/static_files/assets/index-43ab4d62.css +++ b/letta/server/static_files/assets/index-0e31b727.css @@ -1 +1 @@ -*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}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,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;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{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-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,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}:root{--background: 210, 10%, 92%;--background-lighter: 0, 0%, 100%;--background-darker: 210, 6%, 86%;--foreground: 224 71.4% 4.1%;--card: 0 0% 100%;--card-foreground: 224 71.4% 4.1%;--popover: 0 0% 100%;--popover-foreground: 224 71.4% 4.1%;--primary: 220.9 39.3% 11%;--primary-foreground: 210 20% 98%;--secondary: 240, 92%, 35%;--secondary-foreground: 0, 0%, 100%;--muted: 220 14.3% 95.9%;--muted-foreground: 220 8.9% 46.1%;--accent: 220 14.3% 95.9%;--accent-foreground: 220.9 39.3% 11%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 210 20% 98%;--border: 210, 6%, 86%;--input: 210, 6%, 86%;--ring: 224 71.4% 4.1%;--radius: .5rem}.dark{--background: 224 71.4% 4.1%;--background-lighter: 224 71.4% 4.1%;--background-darker: 224 71.4% 4.1%;--foreground: 210 20% 98%;--card: 224 71.4% 4.1%;--card-foreground: 210 20% 98%;--popover: 224 71.4% 4.1%;--popover-foreground: 210 20% 98%;--primary: 210 20% 98%;--primary-foreground: 220.9 39.3% 11%;--secondary: 10, 100%, 60%;--secondary-foreground: 210 20% 98%;--muted: 215 27.9% 16.9%;--muted-foreground: 217.9 10.6% 64.9%;--accent: 215 27.9% 16.9%;--accent-foreground: 210 20% 98%;--destructive: 0 62.8% 30.6%;--destructive-foreground: 210 20% 98%;--border: 215 27.9% 16.9%;--input: 215 27.9% 16.9%;--ring: 216 12.2% 83.9%}*{border-color:hsl(var(--border))}html{height:100%}body{height:100%;width:100%;background-color:hsl(var(--background));color:hsl(var(--foreground));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}input::file-selector-button{color:hsl(var(--foreground))}*,:before,:after{--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: rgb(59 130 246 / .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: rgb(59 130 246 / .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: }.fixed{position:fixed}.mt-10{margin-top:2.5rem}.mt-3{margin-top:.75rem}.flex{display:flex}.h-\[100dvh\]{height:100dvh}.h-full{height:100%}.w-\[100dvh\]{width:100dvh}.w-full{width:100%}.max-w-\[600px\]{max-width:600px}.max-w-\[893px\]{max-width:893px}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-5{gap:1.25rem}.border{border-width:1px}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.p-0{padding:0}.p-10{padding:2.5rem}.px-4{padding-left:1rem;padding-right:1rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.font-semibold{font-weight:600}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}@keyframes enter{0%{opacity:var(--tw-enter-opacity, 1);transform:translate3d(var(--tw-enter-translate-x, 0),var(--tw-enter-translate-y, 0),0) scale3d(var(--tw-enter-scale, 1),var(--tw-enter-scale, 1),var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity, 1);transform:translate3d(var(--tw-exit-translate-x, 0),var(--tw-exit-translate-y, 0),0) scale3d(var(--tw-exit-scale, 1),var(--tw-exit-scale, 1),var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0))}}.PopoverContent{width:var(--radix-popover-trigger-width);max-height:var(--radix-popover-content-available-height)} +*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}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,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;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{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-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,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}:root{--background: 210, 10%, 92%;--background-lighter: 0, 0%, 100%;--background-darker: 210, 6%, 86%;--foreground: 224 71.4% 4.1%;--card: 0 0% 100%;--card-foreground: 224 71.4% 4.1%;--popover: 0 0% 100%;--popover-foreground: 224 71.4% 4.1%;--primary: 220.9 39.3% 11%;--primary-foreground: 210 20% 98%;--secondary: 240, 92%, 35%;--secondary-foreground: 0, 0%, 100%;--muted: 220 14.3% 95.9%;--muted-foreground: 220 8.9% 46.1%;--accent: 220 14.3% 95.9%;--accent-foreground: 220.9 39.3% 11%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 210 20% 98%;--border: 210, 6%, 86%;--input: 210, 6%, 86%;--ring: 224 71.4% 4.1%;--radius: .5rem}.dark{--background: 224 71.4% 4.1%;--background-lighter: 224 71.4% 4.1%;--background-darker: 224 71.4% 4.1%;--foreground: 210 20% 98%;--card: 224 71.4% 4.1%;--card-foreground: 210 20% 98%;--popover: 224 71.4% 4.1%;--popover-foreground: 210 20% 98%;--primary: 210 20% 98%;--primary-foreground: 220.9 39.3% 11%;--secondary: 10, 100%, 60%;--secondary-foreground: 210 20% 98%;--muted: 215 27.9% 16.9%;--muted-foreground: 217.9 10.6% 64.9%;--accent: 215 27.9% 16.9%;--accent-foreground: 210 20% 98%;--destructive: 0 62.8% 30.6%;--destructive-foreground: 210 20% 98%;--border: 215 27.9% 16.9%;--input: 215 27.9% 16.9%;--ring: 216 12.2% 83.9%}*{border-color:hsl(var(--border))}html{height:100%}body{height:100%;width:100%;background-color:hsl(var(--background));color:hsl(var(--foreground));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}input::file-selector-button{color:hsl(var(--foreground))}*,:before,:after{--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: rgb(59 130 246 / .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: rgb(59 130 246 / .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: }.fixed{position:fixed}.mt-10{margin-top:2.5rem}.mt-3{margin-top:.75rem}.flex{display:flex}.h-\[100dvh\]{height:100dvh}.h-full{height:100%}.w-\[100dvw\]{width:100dvw}.w-full{width:100%}.max-w-\[600px\]{max-width:600px}.max-w-\[893px\]{max-width:893px}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-5{gap:1.25rem}.border{border-width:1px}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.p-0{padding:0}.p-10{padding:2.5rem}.px-4{padding-left:1rem;padding-right:1rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.font-semibold{font-weight:600}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}@keyframes enter{0%{opacity:var(--tw-enter-opacity, 1);transform:translate3d(var(--tw-enter-translate-x, 0),var(--tw-enter-translate-y, 0),0) scale3d(var(--tw-enter-scale, 1),var(--tw-enter-scale, 1),var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity, 1);transform:translate3d(var(--tw-exit-translate-x, 0),var(--tw-exit-translate-y, 0),0) scale3d(var(--tw-exit-scale, 1),var(--tw-exit-scale, 1),var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0))}}.PopoverContent{width:var(--radix-popover-trigger-width);max-height:var(--radix-popover-content-available-height)} diff --git a/letta/server/static_files/index.html b/letta/server/static_files/index.html index 003573298e..8819c00c28 100644 --- a/letta/server/static_files/index.html +++ b/letta/server/static_files/index.html @@ -29,8 +29,8 @@ } } - - + +
From 0efec77ab302f256983c360a2e7cd193e0b2ace0 Mon Sep 17 00:00:00 2001 From: Kevin Lin Date: Tue, 10 Dec 2024 14:49:35 -0700 Subject: [PATCH 33/39] fix: fix o1 duplicate messages (#2216) --- letta/o1_agent.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/letta/o1_agent.py b/letta/o1_agent.py index cef2769d4a..837005cfd1 100644 --- a/letta/o1_agent.py +++ b/letta/o1_agent.py @@ -67,9 +67,8 @@ def step( total_usage = UsageStatistics() step_count = 0 while step_count < self.max_thinking_steps: - # This is hacky but we need to do this for now - for m in next_input_message: - m.id = m._generate_id() + if counter > 0: + next_input_message = [] kwargs["ms"] = ms kwargs["first_message"] = False From 7f85a0315b61e49544842b52409fd9349184e5df Mon Sep 17 00:00:00 2001 From: Charles Packer Date: Tue, 10 Dec 2024 14:00:31 -0800 Subject: [PATCH 34/39] fix: cleanup error trace for no llm/embedding_config on POST (#2218) --- letta/server/rest_api/app.py | 15 ++++++++++----- letta/server/server.py | 6 ++++++ 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/letta/server/rest_api/app.py b/letta/server/rest_api/app.py index 9b567bf4a0..ebbd58601c 100644 --- a/letta/server/rest_api/app.py +++ b/letta/server/rest_api/app.py @@ -6,7 +6,7 @@ from typing import Optional import uvicorn -from fastapi import FastAPI +from fastapi import FastAPI, Request from fastapi.responses import JSONResponse from starlette.middleware.base import BaseHTTPMiddleware from starlette.middleware.cors import CORSMiddleware @@ -136,17 +136,18 @@ def create_application() -> "FastAPI": }, ) + debug_mode = "--debug" in sys.argv app = FastAPI( swagger_ui_parameters={"docExpansion": "none"}, # openapi_tags=TAGS_METADATA, title="Letta", summary="Create LLM agents with long-term memory and custom tools 📚🦙", version="1.0.0", # TODO wire this up to the version in the package - debug=True, + debug=debug_mode, # if True, the stack trace will be printed in the response ) @app.exception_handler(Exception) - async def generic_error_handler(request, exc): + async def generic_error_handler(request: Request, exc: Exception): # Log the actual error for debugging log.error(f"Unhandled error: {exc}", exc_info=True) @@ -166,12 +167,16 @@ async def generic_error_handler(request, exc): }, ) + @app.exception_handler(ValueError) + async def value_error_handler(request: Request, exc: ValueError): + return JSONResponse(status_code=400, content={"detail": str(exc)}) + @app.exception_handler(LettaAgentNotFoundError) - async def agent_not_found_handler(request, exc): + async def agent_not_found_handler(request: Request, exc: LettaAgentNotFoundError): return JSONResponse(status_code=404, content={"detail": "Agent not found"}) @app.exception_handler(LettaUserNotFoundError) - async def user_not_found_handler(request, exc): + async def user_not_found_handler(request: Request, exc: LettaUserNotFoundError): return JSONResponse(status_code=404, content={"detail": "User not found"}) settings.cors_origins.append("https://app.letta.com") diff --git a/letta/server/server.py b/letta/server/server.py index 609e8eab49..c60abe484c 100644 --- a/letta/server/server.py +++ b/letta/server/server.py @@ -826,6 +826,12 @@ def create_agent( if not user: raise ValueError(f"cannot find user with associated client id: {user_id}") + if request.llm_config is None: + raise ValueError("llm_config is required") + + if request.embedding_config is None: + raise ValueError("embedding_config is required") + # created and persist the agent state in the DB agent_state = PersistedAgentState( name=request.name, From 7472a3d9cf75d44006dea8112b68fc8541cb69b7 Mon Sep 17 00:00:00 2001 From: Charles Packer Date: Tue, 10 Dec 2024 14:02:05 -0800 Subject: [PATCH 35/39] fix: make healthcheck public (#2209) --- letta/server/rest_api/app.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/letta/server/rest_api/app.py b/letta/server/rest_api/app.py index ebbd58601c..b48a13d0d1 100644 --- a/letta/server/rest_api/app.py +++ b/letta/server/rest_api/app.py @@ -109,7 +109,13 @@ def generate_password(): class CheckPasswordMiddleware(BaseHTTPMiddleware): + async def dispatch(self, request, call_next): + + # Exclude health check endpoint from password protection + if request.url.path == "/v1/health/" or request.url.path == "/latest/health/": + return await call_next(request) + if request.headers.get("X-BARE-PASSWORD") == f"password {random_password}": return await call_next(request) From ac8bd80d1b2195feb9542c50e1044cece18257a5 Mon Sep 17 00:00:00 2001 From: Sarah Wooders Date: Tue, 10 Dec 2024 16:10:34 -0800 Subject: [PATCH 36/39] feat: modify REST API schemas (#2121) --- letta/schemas/agent.py | 7 ++++--- letta/schemas/letta_request.py | 6 +++--- letta/schemas/tool_rule.py | 3 --- letta/server/rest_api/routers/v1/agents.py | 9 +++++++-- 4 files changed, 14 insertions(+), 11 deletions(-) diff --git a/letta/schemas/agent.py b/letta/schemas/agent.py index d15dc6b3df..f0372f8fa5 100644 --- a/letta/schemas/agent.py +++ b/letta/schemas/agent.py @@ -4,6 +4,7 @@ from pydantic import BaseModel, Field, field_validator +from letta.constants import BASE_MEMORY_TOOLS, BASE_TOOLS from letta.schemas.block import CreateBlock from letta.schemas.embedding_config import EmbeddingConfig from letta.schemas.letta_base import LettaBase @@ -108,7 +109,7 @@ class CreateAgent(BaseAgent): # # all optional as server can generate defaults name: Optional[str] = Field(None, description="The name of the agent.") message_ids: Optional[List[str]] = Field(None, description="The ids of the messages in the agent's in-context memory.") - + # memory creation memory_blocks: List[CreateBlock] = Field( # [CreateHuman(), CreatePersona()], description="The blocks to create in the agent's in-context memory." @@ -116,11 +117,11 @@ class CreateAgent(BaseAgent): # description="The blocks to create in the agent's in-context memory.", ) - tools: Optional[List[str]] = Field(None, description="The tools used by the agent.") + tools: List[str] = Field(BASE_TOOLS + BASE_MEMORY_TOOLS, description="The tools used by the agent.") tool_rules: Optional[List[ToolRule]] = Field(None, description="The tool rules governing the agent.") tags: Optional[List[str]] = Field(None, description="The tags associated with the agent.") system: Optional[str] = Field(None, description="The system prompt used by the agent.") - agent_type: Optional[AgentType] = Field(None, description="The type of agent.") + agent_type: AgentType = Field(AgentType.memgpt_agent, description="The type of agent.") llm_config: Optional[LLMConfig] = Field(None, description="The LLM configuration used by the agent.") embedding_config: Optional[EmbeddingConfig] = Field(None, description="The embedding configuration used by the agent.") # Note: if this is None, then we'll populate with the standard "more human than human" initial message sequence diff --git a/letta/schemas/letta_request.py b/letta/schemas/letta_request.py index 11ef8bad49..123d817cf2 100644 --- a/letta/schemas/letta_request.py +++ b/letta/schemas/letta_request.py @@ -1,13 +1,13 @@ -from typing import List, Union +from typing import List from pydantic import BaseModel, Field from letta.constants import DEFAULT_MESSAGE_TOOL, DEFAULT_MESSAGE_TOOL_KWARG -from letta.schemas.message import Message, MessageCreate +from letta.schemas.message import MessageCreate class LettaRequest(BaseModel): - messages: Union[List[MessageCreate], List[Message]] = Field(..., description="The messages to be sent to the agent.") + messages: List[MessageCreate] = Field(..., description="The messages to be sent to the agent.") # Flags to support the use of AssistantMessage message types diff --git a/letta/schemas/tool_rule.py b/letta/schemas/tool_rule.py index 42f460e467..b320917d25 100644 --- a/letta/schemas/tool_rule.py +++ b/letta/schemas/tool_rule.py @@ -17,7 +17,6 @@ class ChildToolRule(BaseToolRule): A ToolRule represents a tool that can be invoked by the agent. """ - # type: str = Field("ToolRule") type: ToolRuleType = ToolRuleType.constrain_child_tools children: List[str] = Field(..., description="The children tools that can be invoked.") @@ -27,7 +26,6 @@ class InitToolRule(BaseToolRule): Represents the initial tool rule configuration. """ - # type: str = Field("InitToolRule") type: ToolRuleType = ToolRuleType.run_first @@ -36,7 +34,6 @@ class TerminalToolRule(BaseToolRule): Represents a terminal tool rule configuration where if this tool gets called, it must end the agent loop. """ - # type: str = Field("TerminalToolRule") type: ToolRuleType = ToolRuleType.exit_loop diff --git a/letta/server/rest_api/routers/v1/agents.py b/letta/server/rest_api/routers/v1/agents.py index 52e280697d..3a758bba32 100644 --- a/letta/server/rest_api/routers/v1/agents.py +++ b/letta/server/rest_api/routers/v1/agents.py @@ -165,7 +165,7 @@ def get_agent_state( return server.get_agent_state(user_id=actor.id, agent_id=agent_id) -@router.delete("/{agent_id}", response_model=None, operation_id="delete_agent") +@router.delete("/{agent_id}", response_model=AgentState, operation_id="delete_agent") def delete_agent( agent_id: str, server: "SyncServer" = Depends(get_letta_server), @@ -176,7 +176,12 @@ def delete_agent( """ actor = server.get_user_or_default(user_id=user_id) - return server.delete_agent(user_id=actor.id, agent_id=agent_id) + agent = server.get_agent(agent_id) + if not agent: + raise HTTPException(status_code=404, detail=f"Agent agent_id={agent_id} not found.") + + server.delete_agent(user_id=actor.id, agent_id=agent_id) + return agent @router.get("/{agent_id}/sources", response_model=List[Source], operation_id="get_agent_sources") From c9c2cca4f499c0128ef5de5a89cf85c065dff373 Mon Sep 17 00:00:00 2001 From: Charles Packer Date: Tue, 10 Dec 2024 16:11:47 -0800 Subject: [PATCH 37/39] fix: create new request model that drops user_id (#2220) --- letta/server/rest_api/routers/v1/agents.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/letta/server/rest_api/routers/v1/agents.py b/letta/server/rest_api/routers/v1/agents.py index 3a758bba32..9dfd7e2bfe 100644 --- a/letta/server/rest_api/routers/v1/agents.py +++ b/letta/server/rest_api/routers/v1/agents.py @@ -14,6 +14,7 @@ status, ) from fastapi.responses import JSONResponse, StreamingResponse +from pydantic import Field from letta.constants import DEFAULT_MESSAGE_TOOL, DEFAULT_MESSAGE_TOOL_KWARG from letta.schemas.agent import AgentState, CreateAgent, UpdateAgentState @@ -87,9 +88,18 @@ def get_agent_context_window( return server.get_agent_context_window(user_id=actor.id, agent_id=agent_id) +class CreateAgentRequest(CreateAgent): + """ + CreateAgent model specifically for POST request body, excluding user_id which comes from headers + """ + + # Override the user_id field to exclude it from the request body validation + user_id: Optional[str] = Field(None, exclude=True) + + @router.post("/", response_model=AgentState, operation_id="create_agent") def create_agent( - agent: CreateAgent = Body(...), + agent: CreateAgentRequest = Body(...), server: "SyncServer" = Depends(get_letta_server), user_id: Optional[str] = Header(None, alias="user_id"), # Extract user_id from header, default to None if not present ): From 31d27741931194cc557c188f638d85d5a0306262 Mon Sep 17 00:00:00 2001 From: mlong93 <35275280+mlong93@users.noreply.github.com> Date: Tue, 10 Dec 2024 18:09:35 -0800 Subject: [PATCH 38/39] feat: orm passage migration (#2180) Co-authored-by: Mindy Long --- .gitignore | 3 + ..._add_passages_orm_drop_legacy_passages_.py | 88 +++++ letta/agent.py | 75 ++-- letta/agent_store/chroma.py | 297 --------------- letta/agent_store/db.py | 66 +--- letta/agent_store/storage.py | 19 +- letta/client/client.py | 5 +- letta/config.py | 4 +- letta/data_sources/connectors.py | 7 +- letta/functions/function_sets/base.py | 47 ++- letta/metadata.py | 15 +- letta/orm/__init__.py | 1 + letta/orm/file.py | 1 + letta/orm/mixins.py | 14 +- letta/orm/organization.py | 3 + letta/orm/passage.py | 72 ++++ letta/orm/sqlalchemy_base.py | 43 ++- letta/orm/sqlite_functions.py | 140 ++++++++ letta/orm/user.py | 2 +- letta/schemas/passage.py | 10 +- letta/server/rest_api/routers/v1/agents.py | 3 +- letta/server/server.py | 148 +++++--- letta/services/passage_manager.py | 225 ++++++++++++ letta/services/source_manager.py | 3 +- letta/settings.py | 2 + pyproject.toml | 2 +- tests/test_base_functions.py | 60 +++- tests/test_client_legacy.py | 1 - tests/test_managers.py | 337 +++++++++++++++++- tests/test_server.py | 80 +++-- tests/test_vector_embeddings.py | 42 +++ 31 files changed, 1283 insertions(+), 532 deletions(-) create mode 100644 alembic/versions/c5d964280dff_add_passages_orm_drop_legacy_passages_.py delete mode 100644 letta/agent_store/chroma.py create mode 100644 letta/orm/passage.py create mode 100644 letta/orm/sqlite_functions.py create mode 100644 letta/services/passage_manager.py create mode 100644 tests/test_vector_embeddings.py diff --git a/.gitignore b/.gitignore index 12042451e0..baaeabfbe5 100644 --- a/.gitignore +++ b/.gitignore @@ -1022,3 +1022,6 @@ memgpy/pytest.ini ## ignore venvs tests/test_tool_sandbox/restaurant_management_system/venv + +## custom scripts +test diff --git a/alembic/versions/c5d964280dff_add_passages_orm_drop_legacy_passages_.py b/alembic/versions/c5d964280dff_add_passages_orm_drop_legacy_passages_.py new file mode 100644 index 0000000000..a16fdae444 --- /dev/null +++ b/alembic/versions/c5d964280dff_add_passages_orm_drop_legacy_passages_.py @@ -0,0 +1,88 @@ +"""Add Passages ORM, drop legacy passages, cascading deletes for file-passages and user-jobs + +Revision ID: c5d964280dff +Revises: a91994b9752f +Create Date: 2024-12-10 15:05:32.335519 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + +# revision identifiers, used by Alembic. +revision: str = 'c5d964280dff' +down_revision: Union[str, None] = 'a91994b9752f' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('passages', sa.Column('updated_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True)) + op.add_column('passages', sa.Column('is_deleted', sa.Boolean(), server_default=sa.text('FALSE'), nullable=False)) + op.add_column('passages', sa.Column('_created_by_id', sa.String(), nullable=True)) + op.add_column('passages', sa.Column('_last_updated_by_id', sa.String(), nullable=True)) + + # Data migration step: + op.add_column("passages", sa.Column("organization_id", sa.String(), nullable=True)) + # Populate `organization_id` based on `user_id` + # Use a raw SQL query to update the organization_id + op.execute( + """ + UPDATE passages + SET organization_id = users.organization_id + FROM users + WHERE passages.user_id = users.id + """ + ) + + # Set `organization_id` as non-nullable after population + op.alter_column("passages", "organization_id", nullable=False) + + op.alter_column('passages', 'text', + existing_type=sa.VARCHAR(), + nullable=False) + op.alter_column('passages', 'embedding_config', + existing_type=postgresql.JSON(astext_type=sa.Text()), + nullable=False) + op.alter_column('passages', 'metadata_', + existing_type=postgresql.JSON(astext_type=sa.Text()), + nullable=False) + op.alter_column('passages', 'created_at', + existing_type=postgresql.TIMESTAMP(timezone=True), + nullable=False) + op.drop_index('passage_idx_user', table_name='passages') + op.create_foreign_key(None, 'passages', 'organizations', ['organization_id'], ['id']) + op.create_foreign_key(None, 'passages', 'agents', ['agent_id'], ['id']) + op.create_foreign_key(None, 'passages', 'files', ['file_id'], ['id'], ondelete='CASCADE') + op.drop_column('passages', 'user_id') + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('passages', sa.Column('user_id', sa.VARCHAR(), autoincrement=False, nullable=False)) + op.drop_constraint(None, 'passages', type_='foreignkey') + op.drop_constraint(None, 'passages', type_='foreignkey') + op.drop_constraint(None, 'passages', type_='foreignkey') + op.create_index('passage_idx_user', 'passages', ['user_id', 'agent_id', 'file_id'], unique=False) + op.alter_column('passages', 'created_at', + existing_type=postgresql.TIMESTAMP(timezone=True), + nullable=True) + op.alter_column('passages', 'metadata_', + existing_type=postgresql.JSON(astext_type=sa.Text()), + nullable=True) + op.alter_column('passages', 'embedding_config', + existing_type=postgresql.JSON(astext_type=sa.Text()), + nullable=True) + op.alter_column('passages', 'text', + existing_type=sa.VARCHAR(), + nullable=True) + op.drop_column('passages', 'organization_id') + op.drop_column('passages', '_last_updated_by_id') + op.drop_column('passages', '_created_by_id') + op.drop_column('passages', 'is_deleted') + op.drop_column('passages', 'updated_at') + # ### end Alembic commands ### diff --git a/letta/agent.py b/letta/agent.py index 81924c2ea9..efb850e28e 100644 --- a/letta/agent.py +++ b/letta/agent.py @@ -28,7 +28,7 @@ from letta.llm_api.helpers import is_context_overflow_error from letta.llm_api.llm_api_tools import create from letta.local_llm.utils import num_tokens_from_functions, num_tokens_from_messages -from letta.memory import ArchivalMemory, EmbeddingArchivalMemory, summarize_messages +from letta.memory import summarize_messages from letta.metadata import MetadataStore from letta.orm import User from letta.schemas.agent import AgentState, AgentStepResponse @@ -52,6 +52,7 @@ from letta.schemas.user import User as PydanticUser from letta.services.block_manager import BlockManager from letta.services.message_manager import MessageManager +from letta.services.passage_manager import PassageManager from letta.services.source_manager import SourceManager from letta.services.tool_execution_sandbox import ToolExecutionSandbox from letta.services.user_manager import UserManager @@ -85,7 +86,7 @@ def compile_memory_metadata_block( actor: PydanticUser, agent_id: str, memory_edit_timestamp: datetime.datetime, - archival_memory: Optional[ArchivalMemory] = None, + passage_manager: Optional[PassageManager] = None, message_manager: Optional[MessageManager] = None, ) -> str: # Put the timestamp in the local timezone (mimicking get_local_time()) @@ -96,7 +97,7 @@ def compile_memory_metadata_block( [ f"### Memory [last modified: {timestamp_str}]", f"{message_manager.size(actor=actor, agent_id=agent_id) if message_manager else 0} previous messages between you and the user are stored in recall memory (use functions to access them)", - f"{archival_memory.count() if archival_memory else 0} total memories you created are stored in archival memory (use functions to access them)", + f"{passage_manager.size(actor=actor, agent_id=agent_id) if passage_manager else 0} total memories you created are stored in archival memory (use functions to access them)", "\nCore memory shown below (limited in size, additional information stored in archival / recall memory):", ] ) @@ -109,7 +110,7 @@ def compile_system_message( in_context_memory: Memory, in_context_memory_last_edit: datetime.datetime, # TODO move this inside of BaseMemory? actor: PydanticUser, - archival_memory: Optional[ArchivalMemory] = None, + passage_manager: Optional[PassageManager] = None, message_manager: Optional[MessageManager] = None, user_defined_variables: Optional[dict] = None, append_icm_if_missing: bool = True, @@ -138,7 +139,7 @@ def compile_system_message( actor=actor, agent_id=agent_id, memory_edit_timestamp=in_context_memory_last_edit, - archival_memory=archival_memory, + passage_manager=passage_manager, message_manager=message_manager, ) full_memory_string = memory_metadata_string + "\n" + in_context_memory.compile() @@ -175,7 +176,7 @@ def initialize_message_sequence( agent_id: str, memory: Memory, actor: PydanticUser, - archival_memory: Optional[ArchivalMemory] = None, + passage_manager: Optional[PassageManager] = None, message_manager: Optional[MessageManager] = None, memory_edit_timestamp: Optional[datetime.datetime] = None, include_initial_boot_message: bool = True, @@ -184,7 +185,7 @@ def initialize_message_sequence( memory_edit_timestamp = get_local_time() # full_system_message = construct_system_with_memory( - # system, memory, memory_edit_timestamp, archival_memory=archival_memory, recall_memory=recall_memory + # system, memory, memory_edit_timestamp, passage_manager=passage_manager, recall_memory=recall_memory # ) full_system_message = compile_system_message( agent_id=agent_id, @@ -192,7 +193,7 @@ def initialize_message_sequence( in_context_memory=memory, in_context_memory_last_edit=memory_edit_timestamp, actor=actor, - archival_memory=archival_memory, + passage_manager=passage_manager, message_manager=message_manager, user_defined_variables=None, append_icm_if_missing=True, @@ -294,7 +295,7 @@ def __init__( self.interface = interface # Create the persistence manager object based on the AgentState info - self.archival_memory = EmbeddingArchivalMemory(agent_state) + self.passage_manager = PassageManager() self.message_manager = MessageManager() # State needed for heartbeat pausing @@ -325,7 +326,7 @@ def __init__( agent_id=self.agent_state.id, memory=self.agent_state.memory, actor=self.user, - archival_memory=None, + passage_manager=None, message_manager=None, memory_edit_timestamp=get_utc_time(), include_initial_boot_message=True, @@ -350,7 +351,7 @@ def __init__( memory=self.agent_state.memory, agent_id=self.agent_state.id, actor=self.user, - archival_memory=None, + passage_manager=None, message_manager=None, memory_edit_timestamp=get_utc_time(), include_initial_boot_message=True, @@ -1306,7 +1307,7 @@ def rebuild_system_prompt(self, force=False, update_timestamp=True): in_context_memory=self.agent_state.memory, in_context_memory_last_edit=memory_edit_timestamp, actor=self.user, - archival_memory=self.archival_memory, + passage_manager=self.passage_manager, message_manager=self.message_manager, user_defined_variables=None, append_icm_if_missing=True, @@ -1371,45 +1372,33 @@ def migrate_embedding(self, embedding_config: EmbeddingConfig): # TODO: recall memory raise NotImplementedError() - def attach_source(self, source_id: str, source_connector: StorageConnector, ms: MetadataStore): + def attach_source(self, user: PydanticUser, source_id: str, source_manager: SourceManager, ms: MetadataStore): """Attach data with name `source_name` to the agent from source_connector.""" # TODO: eventually, adding a data source should just give access to the retriever the source table, rather than modifying archival memory - user = UserManager().get_user_by_id(self.agent_state.user_id) - filters = {"user_id": self.agent_state.user_id, "source_id": source_id} - size = source_connector.size(filters) page_size = 100 - generator = source_connector.get_all_paginated(filters=filters, page_size=page_size) # yields List[Passage] - all_passages = [] - for i in tqdm(range(0, size, page_size)): - passages = next(generator) + passages = self.passage_manager.list_passages(actor=user, source_id=source_id, limit=page_size) - # need to associated passage with agent (for filtering) - for passage in passages: - assert isinstance(passage, Passage), f"Generate yielded bad non-Passage type: {type(passage)}" - passage.agent_id = self.agent_state.id + for passage in passages: + assert isinstance(passage, Passage), f"Generate yielded bad non-Passage type: {type(passage)}" + passage.agent_id = self.agent_state.id + self.passage_manager.update_passage_by_id(passage_id=passage.id, passage=passage, actor=user) - # regenerate passage ID (avoid duplicates) - # TODO: need to find another solution to the text duplication issue - # passage.id = create_uuid_from_string(f"{source_id}_{str(passage.agent_id)}_{passage.text}") - - # insert into agent archival memory - self.archival_memory.storage.insert_many(passages) - all_passages += passages - - assert size == len(all_passages), f"Expected {size} passages, but only got {len(all_passages)}" - - # save destination storage - self.archival_memory.storage.save() + agents_passages = self.passage_manager.list_passages(actor=user, agent_id=self.agent_state.id, source_id=source_id, limit=page_size) + passage_size = self.passage_manager.size(actor=user, agent_id=self.agent_state.id, source_id=source_id) + assert all([p.agent_id == self.agent_state.id for p in agents_passages]) + assert len(agents_passages) == passage_size # sanity check + assert passage_size == len(passages), f"Expected {len(passages)} passages, got {passage_size}" # attach to agent - source = SourceManager().get_source_by_id(source_id=source_id, actor=user) + source = source_manager.get_source_by_id(source_id=source_id, actor=user) assert source is not None, f"Source {source_id} not found in metadata store" - ms.attach_source(agent_id=self.agent_state.id, source_id=source_id, user_id=self.agent_state.user_id) - total_agent_passages = self.archival_memory.storage.size() + # NOTE: need this redundant line here because we haven't migrated agent to ORM yet + # TODO: delete @matt and remove + ms.attach_source(agent_id=self.agent_state.id, source_id=source_id, user_id=self.agent_state.user_id) printd( - f"Attached data source {source.name} to agent {self.agent_state.name}, consisting of {len(all_passages)}. Agent now has {total_agent_passages} embeddings in archival memory.", + f"Attached data source {source.name} to agent {self.agent_state.name}, consisting of {len(passages)}. Agent now has {passage_size} embeddings in archival memory.", ) def update_message(self, message_id: str, request: MessageUpdate) -> Message: @@ -1565,13 +1554,13 @@ def get_context_window(self) -> ContextWindowOverview: num_tokens_from_messages(messages=messages_openai_format[1:], model=self.model) if len(messages_openai_format) > 1 else 0 ) - num_archival_memory = self.archival_memory.storage.size() + passage_manager_size = self.passage_manager.size(actor=self.user, agent_id=self.agent_state.id) message_manager_size = self.message_manager.size(actor=self.user, agent_id=self.agent_state.id) external_memory_summary = compile_memory_metadata_block( actor=self.user, agent_id=self.agent_state.id, memory_edit_timestamp=get_utc_time(), # dummy timestamp - archival_memory=self.archival_memory, + passage_manager=self.passage_manager, message_manager=self.message_manager, ) num_tokens_external_memory_summary = count_tokens(external_memory_summary) @@ -1597,7 +1586,7 @@ def get_context_window(self) -> ContextWindowOverview: return ContextWindowOverview( # context window breakdown (in messages) num_messages=len(self._messages), - num_archival_memory=num_archival_memory, + num_archival_memory=passage_manager_size, num_recall_memory=message_manager_size, num_tokens_external_memory_summary=num_tokens_external_memory_summary, # top-level information diff --git a/letta/agent_store/chroma.py b/letta/agent_store/chroma.py deleted file mode 100644 index eace737b3d..0000000000 --- a/letta/agent_store/chroma.py +++ /dev/null @@ -1,297 +0,0 @@ -from typing import Dict, List, Optional, Tuple, cast - -import chromadb -from chromadb.api.types import Include - -from letta.agent_store.storage import StorageConnector, TableType -from letta.config import LettaConfig -from letta.schemas.embedding_config import EmbeddingConfig -from letta.schemas.passage import Passage -from letta.utils import datetime_to_timestamp, printd, timestamp_to_datetime - - -class ChromaStorageConnector(StorageConnector): - """Storage via Chroma""" - - # WARNING: This is not thread safe. Do NOT do concurrent access to the same collection. - # Timestamps are converted to integer timestamps for chroma (datetime not supported) - - def __init__(self, table_type: str, config: LettaConfig, user_id, agent_id=None): - super().__init__(table_type=table_type, config=config, user_id=user_id, agent_id=agent_id) - - assert table_type == TableType.ARCHIVAL_MEMORY or table_type == TableType.PASSAGES, "Chroma only supports archival memory" - - # create chroma client - if config.archival_storage_path: - self.client = chromadb.PersistentClient(config.archival_storage_path) - else: - # assume uri={ip}:{port} - ip = config.archival_storage_uri.split(":")[0] - port = config.archival_storage_uri.split(":")[1] - self.client = chromadb.HttpClient(host=ip, port=port) - - # get a collection or create if it doesn't exist already - self.collection = self.client.get_or_create_collection(self.table_name) - self.include: Include = ["documents", "embeddings", "metadatas"] - - def get_filters(self, filters: Optional[Dict] = {}) -> Tuple[list, dict]: - # get all filters for query - if filters is not None: - filter_conditions = {**self.filters, **filters} - else: - filter_conditions = self.filters - - # convert to chroma format - chroma_filters = [] - ids = [] - for key, value in filter_conditions.items(): - # filter by id - if key == "id": - ids = [str(value)] - continue - - # filter by other keys - chroma_filters.append({key: {"$eq": value}}) - - if len(chroma_filters) > 1: - chroma_filters = {"$and": chroma_filters} - elif len(chroma_filters) == 0: - chroma_filters = {} - else: - chroma_filters = chroma_filters[0] - return ids, chroma_filters - - def get_all_paginated(self, filters: Optional[Dict] = {}, page_size: int = 1000, offset: int = 0): - ids, filters = self.get_filters(filters) - while True: - # Retrieve a chunk of records with the given page_size - results = self.collection.get(ids=ids, offset=offset, limit=page_size, include=self.include, where=filters) - - # If the chunk is empty, we've retrieved all records - assert results["embeddings"] is not None, f"results['embeddings'] was None" - if len(results["embeddings"]) == 0: - break - - # Yield a list of Record objects converted from the chunk - yield self.results_to_records(results) - - # Increment the offset to get the next chunk in the next iteration - offset += page_size - - def results_to_records(self, results): - # convert timestamps to datetime - for metadata in results["metadatas"]: - if "created_at" in metadata: - metadata["created_at"] = timestamp_to_datetime(metadata["created_at"]) - if results["embeddings"]: # may not be returned, depending on table type - passages = [] - for text, record_id, embedding, metadata in zip( - results["documents"], results["ids"], results["embeddings"], results["metadatas"] - ): - args = {} - for field in EmbeddingConfig.__fields__.keys(): - if field in metadata: - args[field] = metadata[field] - del metadata[field] - embedding_config = EmbeddingConfig(**args) - passages.append(Passage(text=text, embedding=embedding, id=record_id, embedding_config=embedding_config, **metadata)) - # return [ - # Passage(text=text, embedding=embedding, id=record_id, embedding_config=EmbeddingConfig(), **metadatas) - # for (text, record_id, embedding, metadatas) in zip( - # results["documents"], results["ids"], results["embeddings"], results["metadatas"] - # ) - # ] - return passages - else: - # no embeddings - passages = [] - for text, id, metadata in zip(results["documents"], results["ids"], results["metadatas"]): - args = {} - for field in EmbeddingConfig.__fields__.keys(): - if field in metadata: - args[field] = metadata[field] - del metadata[field] - embedding_config = EmbeddingConfig(**args) - passages.append(Passage(text=text, embedding=None, id=id, embedding_config=embedding_config, **metadata)) - return passages - - # return [ - # #cast(Passage, self.type(text=text, id=uuid.UUID(id), **metadatas)) # type: ignore - # Passage(text=text, embedding=None, id=id, **metadatas) - # for (text, id, metadatas) in zip(results["documents"], results["ids"], results["metadatas"]) - # ] - - def get_all(self, filters: Optional[Dict] = {}, limit=None): - ids, filters = self.get_filters(filters) - if self.collection.count() == 0: - return [] - if ids == []: - ids = None - if limit: - results = self.collection.get(ids=ids, include=self.include, where=filters, limit=limit) - else: - results = self.collection.get(ids=ids, include=self.include, where=filters) - return self.results_to_records(results) - - def get(self, id: str): - results = self.collection.get(ids=[str(id)]) - if len(results["ids"]) == 0: - return None - return self.results_to_records(results)[0] - - def format_records(self, records): - assert all([isinstance(r, Passage) for r in records]) - - recs = [] - ids = [] - documents = [] - embeddings = [] - - # de-duplication of ids - exist_ids = set() - for i in range(len(records)): - record = records[i] - if record.id in exist_ids: - continue - exist_ids.add(record.id) - recs.append(cast(Passage, record)) - ids.append(str(record.id)) - documents.append(record.text) - embeddings.append(record.embedding) - - # collect/format record metadata - metadatas = [] - for record in recs: - embedding_config = vars(record.embedding_config) - metadata = vars(record) - metadata.pop("id") - metadata.pop("text") - metadata.pop("embedding") - metadata.pop("embedding_config") - metadata.pop("metadata_") - if "created_at" in metadata: - metadata["created_at"] = datetime_to_timestamp(metadata["created_at"]) - if "metadata_" in metadata and metadata["metadata_"] is not None: - record_metadata = dict(metadata["metadata_"]) - metadata.pop("metadata_") - else: - record_metadata = {} - - metadata = {**metadata, **record_metadata} # merge with metadata - metadata = {**metadata, **embedding_config} # merge with embedding config - metadata = {key: value for key, value in metadata.items() if value is not None} # null values not allowed - - # convert uuids to strings - metadatas.append(metadata) - return ids, documents, embeddings, metadatas - - def insert(self, record): - ids, documents, embeddings, metadatas = self.format_records([record]) - if any([e is None for e in embeddings]): - raise ValueError("Embeddings must be provided to chroma") - self.collection.upsert(documents=documents, embeddings=[e for e in embeddings if e is not None], ids=ids, metadatas=metadatas) - - def insert_many(self, records, show_progress=False): - ids, documents, embeddings, metadatas = self.format_records(records) - if any([e is None for e in embeddings]): - raise ValueError("Embeddings must be provided to chroma") - self.collection.upsert(documents=documents, embeddings=[e for e in embeddings if e is not None], ids=ids, metadatas=metadatas) - - def delete(self, filters: Optional[Dict] = {}): - ids, filters = self.get_filters(filters) - self.collection.delete(ids=ids, where=filters) - - def delete_table(self): - # drop collection - self.client.delete_collection(self.collection.name) - - def save(self): - # save to persistence file (nothing needs to be done) - printd("Saving chroma") - - def size(self, filters: Optional[Dict] = {}) -> int: - # unfortuantely, need to use pagination to get filtering - # warning: poor performance for large datasets - return len(self.get_all(filters=filters)) - - def list_data_sources(self): - raise NotImplementedError - - def query(self, query: str, query_vec: List[float], top_k: int = 10, filters: Optional[Dict] = {}): - ids, filters = self.get_filters(filters) - results = self.collection.query(query_embeddings=[query_vec], n_results=top_k, include=self.include, where=filters) - - # flatten, since we only have one query vector - flattened_results = {} - for key, value in results.items(): - if value: - # value is an Optional[List] type according to chromadb.api.types - flattened_results[key] = value[0] # type: ignore - assert len(value) == 1, f"Value is size {len(value)}: {value}" # type: ignore - else: - flattened_results[key] = value - - return self.results_to_records(flattened_results) - - def query_date(self, start_date, end_date, start=None, count=None): - raise ValueError("Cannot run query_date with chroma") - # filters = self.get_filters(filters) - # filters["created_at"] = { - # "$gte": start_date, - # "$lte": end_date, - # } - # results = self.collection.query(where=filters) - # start = 0 if start is None else start - # count = len(results) if count is None else count - # results = results[start : start + count] - # return self.results_to_records(results) - - def query_text(self, query, count=None, start=None, filters: Optional[Dict] = {}): - raise ValueError("Cannot run query_text with chroma") - # filters = self.get_filters(filters) - # results = self.collection.query(where_document={"$contains": {"text": query}}, where=filters) - # start = 0 if start is None else start - # count = len(results) if count is None else count - # results = results[start : start + count] - # return self.results_to_records(results) - - def get_all_cursor( - self, - filters: Optional[Dict] = {}, - after: str = None, - before: str = None, - limit: Optional[int] = 1000, - order_by: str = "created_at", - reverse: bool = False, - ): - records = self.get_all(filters=filters) - - # WARNING: very hacky and slow implementation - def get_index(id, record_list): - for i in range(len(record_list)): - if record_list[i].id == id: - return i - assert False, f"Could not find id {id} in record list" - - # sort by custom field - records = sorted(records, key=lambda x: getattr(x, order_by), reverse=reverse) - if after: - index = get_index(after, records) - if index + 1 >= len(records): - return None, [] - records = records[index + 1 :] - if before: - index = get_index(before, records) - if index == 0: - return None, [] - - # TODO: not sure if this is correct - records = records[:index] - - if len(records) == 0: - return None, [] - - # enforce limit - if limit: - records = records[:limit] - return records[-1].id, records diff --git a/letta/agent_store/db.py b/letta/agent_store/db.py index 56d35edc74..095a0e82c6 100644 --- a/letta/agent_store/db.py +++ b/letta/agent_store/db.py @@ -1,4 +1,5 @@ import base64 +import json import os from datetime import datetime from typing import Dict, List, Optional @@ -32,7 +33,7 @@ from letta.orm.file import FileMetadata as FileMetadataModel # from letta.schemas.message import Message, Passage, Record, RecordType, ToolCall -from letta.schemas.passage import Passage +from letta.orm.passage import Passage as PassageModel from letta.settings import settings config = LettaConfig() @@ -66,56 +67,6 @@ def process_result_value(self, value, dialect): # For PostgreSQL, value is already in bytes return np.frombuffer(value, dtype=np.float32) - -class PassageModel(Base): - """Defines data model for storing Passages (consisting of text, embedding)""" - - __tablename__ = "passages" - __table_args__ = {"extend_existing": True} - - # Assuming passage_id is the primary key - id = Column(String, primary_key=True) - user_id = Column(String, nullable=False) - text = Column(String) - file_id = Column(String) - agent_id = Column(String) - source_id = Column(String) - - # vector storage - if settings.letta_pg_uri_no_default: - from pgvector.sqlalchemy import Vector - - embedding = mapped_column(Vector(MAX_EMBEDDING_DIM)) - elif config.archival_storage_type == "sqlite" or config.archival_storage_type == "chroma": - embedding = Column(CommonVector) - else: - raise ValueError(f"Unsupported archival_storage_type: {config.archival_storage_type}") - embedding_config = Column(EmbeddingConfigColumn) - metadata_ = Column(MutableJson) - - # Add a datetime column, with default value as the current time - created_at = Column(DateTime(timezone=True)) - - Index("passage_idx_user", user_id, agent_id, file_id), - - def __repr__(self): - return f" AgentState: agents = [AgentState(**agent) for agent in response.json()] if len(agents) == 0: return None - assert len(agents) == 1, f"Multiple agents with the same name: {agents}" + agents = [agents[0]] # TODO: @matt monkeypatched + assert len(agents) == 1, f"Multiple agents with the same name: {[(agents.name, agents.id) for agents in agents]}" return agents[0].id # memory @@ -3107,7 +3108,7 @@ def get_archival_memory( passages (List[Passage]): List of passages """ - return self.server.get_agent_archival_cursor(user_id=self.user_id, agent_id=agent_id, before=before, after=after, limit=limit) + return self.server.get_agent_archival_cursor(user_id=self.user_id, agent_id=agent_id, limit=limit) # recall memory diff --git a/letta/config.py b/letta/config.py index cc0c5aa720..70b6bf3819 100644 --- a/letta/config.py +++ b/letta/config.py @@ -62,8 +62,8 @@ class LettaConfig: # @norton120 these are the metdadatastore # database configs: archival - archival_storage_type: str = "chroma" # local, db - archival_storage_path: str = os.path.join(LETTA_DIR, "chroma") + archival_storage_type: str = "sqlite" # local, db + archival_storage_path: str = LETTA_DIR archival_storage_uri: str = None # TODO: eventually allow external vector DB # database configs: recall diff --git a/letta/data_sources/connectors.py b/letta/data_sources/connectors.py index 2b88ac12f7..6316863c01 100644 --- a/letta/data_sources/connectors.py +++ b/letta/data_sources/connectors.py @@ -1,4 +1,4 @@ -from typing import Dict, Iterator, List, Tuple +from typing import Dict, Iterator, List, Tuple, Optional import typer @@ -42,7 +42,7 @@ def generate_passages(self, file: FileMetadata, chunk_size: int = 1024) -> Itera """ -def load_data(connector: DataConnector, source: Source, passage_store: StorageConnector, source_manager: SourceManager, actor: "User"): +def load_data(connector: DataConnector, source: Source, passage_store: StorageConnector, source_manager: SourceManager, actor: "User", agent_id: Optional[str] = None): """Load data from a connector (generates file and passages) into a specified source_id, associated with a user_id.""" embedding_config = source.embedding_config @@ -82,9 +82,10 @@ def load_data(connector: DataConnector, source: Source, passage_store: StorageCo id=create_uuid_from_string(f"{str(source.id)}_{passage_text}"), text=passage_text, file_id=file_metadata.id, + agent_id=agent_id, source_id=source.id, metadata_=passage_metadata, - user_id=source.created_by_id, + organization_id=source.organization_id, embedding_config=source.embedding_config, embedding=embedding, ) diff --git a/letta/functions/function_sets/base.py b/letta/functions/function_sets/base.py index c4a15d9f3e..cdcad3acad 100644 --- a/letta/functions/function_sets/base.py +++ b/letta/functions/function_sets/base.py @@ -164,17 +164,23 @@ def archival_memory_insert(self: "Agent", content: str) -> Optional[str]: Returns: Optional[str]: None is always returned as this function does not produce a response. """ - self.archival_memory.insert(content) + self.passage_manager.insert_passage( + agent_state=self.agent_state, + agent_id=self.agent_state.id, + text=content, + actor=self.user, + ) return None -def archival_memory_search(self: "Agent", query: str, page: Optional[int] = 0) -> Optional[str]: +def archival_memory_search(self: "Agent", query: str, page: Optional[int] = 0, start: Optional[int] = 0) -> Optional[str]: """ Search archival memory using semantic (embedding-based) search. Args: query (str): String to search for. page (Optional[int]): Allows you to page through results. Only use on a follow-up query. Defaults to 0 (first page). + start (Optional[int]): Starting index for the search results. Defaults to 0. Returns: str: Query result string @@ -191,15 +197,34 @@ def archival_memory_search(self: "Agent", query: str, page: Optional[int] = 0) - except: raise ValueError(f"'page' argument must be an integer") count = RETRIEVAL_QUERY_DEFAULT_PAGE_SIZE - results, total = self.archival_memory.search(query, count=count, start=page * count) - num_pages = math.ceil(total / count) - 1 # 0 index - if len(results) == 0: - results_str = f"No results found." - else: - results_pref = f"Showing {len(results)} of {total} results (page {page}/{num_pages}):" - results_formatted = [f"timestamp: {d['timestamp']}, memory: {d['content']}" for d in results] - results_str = f"{results_pref} {json_dumps(results_formatted)}" - return results_str + + try: + # Get results using passage manager + all_results = self.passage_manager.list_passages( + actor=self.user, + query_text=query, + limit=count + start, # Request enough results to handle offset + embedding_config=self.agent_state.embedding_config, + embed_query=True + ) + + # Apply pagination + end = min(count + start, len(all_results)) + paged_results = all_results[start:end] + + # Format results to match previous implementation + formatted_results = [ + { + "timestamp": str(result.created_at), + "content": result.text + } + for result in paged_results + ] + + return formatted_results, len(formatted_results) + + except Exception as e: + raise e def core_memory_append(agent_state: "AgentState", label: str, content: str) -> Optional[str]: # type: ignore diff --git a/letta/metadata.py b/letta/metadata.py index 56d852eaca..017e546e48 100644 --- a/letta/metadata.py +++ b/letta/metadata.py @@ -363,8 +363,19 @@ def attach_source(self, user_id: str, agent_id: str, source_id: str): with self.session_maker() as session: # TODO: remove this (is a hack) mapping_id = f"{user_id}-{agent_id}-{source_id}" - session.add(AgentSourceMappingModel(id=mapping_id, user_id=user_id, agent_id=agent_id, source_id=source_id)) - session.commit() + existing = session.query(AgentSourceMappingModel).filter( + AgentSourceMappingModel.id == mapping_id + ).first() + + if existing is None: + # Only create if it doesn't exist + session.add(AgentSourceMappingModel( + id=mapping_id, + user_id=user_id, + agent_id=agent_id, + source_id=source_id + )) + session.commit() @enforce_types def list_attached_source_ids(self, agent_id: str) -> List[str]: diff --git a/letta/orm/__init__.py b/letta/orm/__init__.py index 85b4b7eb3c..b7f7bb96fb 100644 --- a/letta/orm/__init__.py +++ b/letta/orm/__init__.py @@ -6,6 +6,7 @@ from letta.orm.job import Job from letta.orm.message import Message from letta.orm.organization import Organization +from letta.orm.passage import Passage from letta.orm.sandbox_config import SandboxConfig, SandboxEnvironmentVariable from letta.orm.source import Source from letta.orm.tool import Tool diff --git a/letta/orm/file.py b/letta/orm/file.py index 187ebbd88f..6f7111639a 100644 --- a/letta/orm/file.py +++ b/letta/orm/file.py @@ -27,3 +27,4 @@ class FileMetadata(SqlalchemyBase, OrganizationMixin, SourceMixin): # relationships organization: Mapped["Organization"] = relationship("Organization", back_populates="files", lazy="selectin") source: Mapped["Source"] = relationship("Source", back_populates="files", lazy="selectin") + passages: Mapped[List["Passage"]] = relationship("Passage", back_populates="file", lazy="selectin", cascade="all, delete-orphan") diff --git a/letta/orm/mixins.py b/letta/orm/mixins.py index 355a8b2ce4..60c319d985 100644 --- a/letta/orm/mixins.py +++ b/letta/orm/mixins.py @@ -1,3 +1,4 @@ +from typing import Optional from uuid import UUID from sqlalchemy import ForeignKey, String @@ -30,6 +31,12 @@ class UserMixin(Base): user_id: Mapped[str] = mapped_column(String, ForeignKey("users.id")) +class FileMixin(Base): + """Mixin for models that belong to a file.""" + + __abstract__ = True + + file_id: Mapped[str] = mapped_column(String, ForeignKey("files.id")) class AgentMixin(Base): """Mixin for models that belong to an agent.""" @@ -38,13 +45,16 @@ class AgentMixin(Base): agent_id: Mapped[str] = mapped_column(String, ForeignKey("agents.id")) - class FileMixin(Base): """Mixin for models that belong to a file.""" __abstract__ = True - file_id: Mapped[str] = mapped_column(String, ForeignKey("files.id")) + file_id: Mapped[Optional[str]] = mapped_column( + String, + ForeignKey("files.id", ondelete="CASCADE"), + nullable=True + ) class SourceMixin(Base): diff --git a/letta/orm/organization.py b/letta/orm/organization.py index 4e5b6d12cb..8dc56e1627 100644 --- a/letta/orm/organization.py +++ b/letta/orm/organization.py @@ -33,7 +33,10 @@ class Organization(SqlalchemyBase): sandbox_environment_variables: Mapped[List["SandboxEnvironmentVariable"]] = relationship( "SandboxEnvironmentVariable", back_populates="organization", cascade="all, delete-orphan" ) + + # relationships messages: Mapped[List["Message"]] = relationship("Message", back_populates="organization", cascade="all, delete-orphan") + passages: Mapped[List["Passage"]] = relationship("Passage", back_populates="organization", cascade="all, delete-orphan") # TODO: Map these relationships later when we actually make these models # below is just a suggestion diff --git a/letta/orm/passage.py b/letta/orm/passage.py new file mode 100644 index 0000000000..847c8ddd7c --- /dev/null +++ b/letta/orm/passage.py @@ -0,0 +1,72 @@ +from datetime import datetime +from typing import List, Optional, TYPE_CHECKING +from sqlalchemy import Column, String, DateTime, Index, JSON, UniqueConstraint, ForeignKey +from sqlalchemy.orm import Mapped, mapped_column, relationship +from sqlalchemy.types import TypeDecorator, BINARY + +import numpy as np +import base64 + +from letta.orm.source import EmbeddingConfigColumn +from letta.orm.sqlalchemy_base import SqlalchemyBase +from letta.orm.mixins import AgentMixin, FileMixin, OrganizationMixin +from letta.schemas.passage import Passage as PydanticPassage + +from letta.config import LettaConfig +from letta.constants import MAX_EMBEDDING_DIM +from letta.settings import settings + +config = LettaConfig() + +if TYPE_CHECKING: + from letta.orm.file import File + from letta.orm.organization import Organization + +class CommonVector(TypeDecorator): + """Common type for representing vectors in SQLite""" + impl = BINARY + cache_ok = True + + def load_dialect_impl(self, dialect): + return dialect.type_descriptor(BINARY()) + + def process_bind_param(self, value, dialect): + if value is None: + return value + if isinstance(value, list): + value = np.array(value, dtype=np.float32) + return base64.b64encode(value.tobytes()) + + def process_result_value(self, value, dialect): + if not value: + return value + if dialect.name == "sqlite": + value = base64.b64decode(value) + return np.frombuffer(value, dtype=np.float32) + +# TODO: After migration to Passage, will need to manually delete passages where files +# are deleted on web +class Passage(SqlalchemyBase, OrganizationMixin, FileMixin): + """Defines data model for storing Passages""" + __tablename__ = "passages" + __table_args__ = {"extend_existing": True} + __pydantic_model__ = PydanticPassage + + id: Mapped[str] = mapped_column(primary_key=True, doc="Unique passage identifier") + text: Mapped[str] = mapped_column(doc="Passage text content") + source_id: Mapped[Optional[str]] = mapped_column(nullable=True, doc="Source identifier") + embedding_config: Mapped[dict] = mapped_column(EmbeddingConfigColumn, doc="Embedding configuration") + metadata_: Mapped[dict] = mapped_column(JSON, doc="Additional metadata") + created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=datetime.utcnow) + if settings.letta_pg_uri_no_default: + from pgvector.sqlalchemy import Vector + embedding = mapped_column(Vector(MAX_EMBEDDING_DIM)) + else: + embedding = Column(CommonVector) + + # Foreign keys + agent_id: Mapped[Optional[str]] = mapped_column(String, ForeignKey("agents.id"), nullable=True) + + # Relationships + organization: Mapped["Organization"] = relationship("Organization", back_populates="passages", lazy="selectin") + file: Mapped["FileMetadata"] = relationship("FileMetadata", back_populates="passages", lazy="selectin") diff --git a/letta/orm/sqlalchemy_base.py b/letta/orm/sqlalchemy_base.py index 6f8a764408..74d3f3be41 100644 --- a/letta/orm/sqlalchemy_base.py +++ b/letta/orm/sqlalchemy_base.py @@ -1,6 +1,7 @@ from datetime import datetime from enum import Enum from typing import TYPE_CHECKING, List, Literal, Optional, Type +import sqlite3 from sqlalchemy import String, desc, func, or_, select from sqlalchemy.exc import DBAPIError @@ -8,6 +9,7 @@ from letta.log import get_logger from letta.orm.base import Base, CommonSqlalchemyMetaMixins +from letta.orm.sqlite_functions import adapt_array, convert_array, cosine_distance from letta.orm.errors import ( ForeignKeyConstraintViolationError, NoResultFound, @@ -60,6 +62,7 @@ def list( end_date: Optional[datetime] = None, limit: Optional[int] = 50, query_text: Optional[str] = None, + query_embedding: Optional[List[float]] = None, ascending: bool = True, **kwargs, ) -> List[Type["SqlalchemyBase"]]: @@ -110,17 +113,43 @@ def list( # Apply text search if query_text: + from sqlalchemy import func query = query.filter(func.lower(cls.text).contains(func.lower(query_text))) - # Handle soft deletes + # Apply embedding search (Passages) + is_ordered = False + if query_embedding: + # check if embedding column exists. should only exist for passages + if not hasattr(cls, "embedding"): + raise ValueError(f"Class {cls.__name__} does not have an embedding column") + + from letta.settings import settings + if settings.letta_pg_uri_no_default: + # PostgreSQL with pgvector + from pgvector.sqlalchemy import Vector + query = query.order_by(cls.embedding.cosine_distance(query_embedding).asc()) + else: + # SQLite with custom vector type + from sqlalchemy import func + + query_embedding_binary = adapt_array(query_embedding) + query = query.order_by( + func.cosine_distance(cls.embedding, query_embedding_binary).asc(), + cls.created_at.asc(), + cls.id.asc() + ) + is_ordered = True + + # Handle ordering and soft deletes if hasattr(cls, "is_deleted"): query = query.where(cls.is_deleted == False) - + # Apply ordering by created_at - if ascending: - query = query.order_by(cls.created_at, cls.id) - else: - query = query.order_by(desc(cls.created_at), desc(cls.id)) + if not is_ordered: + if ascending: + query = query.order_by(cls.created_at, cls.id) + else: + query = query.order_by(desc(cls.created_at), desc(cls.id)) query = query.limit(limit) @@ -369,4 +398,4 @@ def to_pydantic(self) -> Type["BaseModel"]: def to_record(self) -> Type["BaseModel"]: """Deprecated accessor for to_pydantic""" logger.warning("to_record is deprecated, use to_pydantic instead.") - return self.to_pydantic() + return self.to_pydantic() \ No newline at end of file diff --git a/letta/orm/sqlite_functions.py b/letta/orm/sqlite_functions.py new file mode 100644 index 0000000000..a5b741aa51 --- /dev/null +++ b/letta/orm/sqlite_functions.py @@ -0,0 +1,140 @@ +from typing import Optional, Union + +import base64 +import numpy as np +from sqlalchemy import event +from sqlalchemy.engine import Engine +import sqlite3 + +from letta.constants import MAX_EMBEDDING_DIM + +def adapt_array(arr): + """ + Converts numpy array to binary for SQLite storage + """ + if arr is None: + return None + + if isinstance(arr, list): + arr = np.array(arr, dtype=np.float32) + elif not isinstance(arr, np.ndarray): + raise ValueError(f"Unsupported type: {type(arr)}") + + # Convert to bytes and then base64 encode + bytes_data = arr.tobytes() + base64_data = base64.b64encode(bytes_data) + return sqlite3.Binary(base64_data) + +def convert_array(text): + """ + Converts binary back to numpy array + """ + if text is None: + return None + if isinstance(text, list): + return np.array(text, dtype=np.float32) + if isinstance(text, np.ndarray): + return text + + # Handle both bytes and sqlite3.Binary + binary_data = bytes(text) if isinstance(text, sqlite3.Binary) else text + + try: + # First decode base64 + decoded_data = base64.b64decode(binary_data) + # Then convert to numpy array + return np.frombuffer(decoded_data, dtype=np.float32) + except Exception as e: + return None + +def verify_embedding_dimension(embedding: np.ndarray, expected_dim: int = MAX_EMBEDDING_DIM) -> bool: + """ + Verifies that an embedding has the expected dimension + + Args: + embedding: Input embedding array + expected_dim: Expected embedding dimension (default: 4096) + + Returns: + bool: True if dimension matches, False otherwise + """ + if embedding is None: + return False + return embedding.shape[0] == expected_dim + +def validate_and_transform_embedding( + embedding: Union[bytes, sqlite3.Binary, list, np.ndarray], + expected_dim: int = MAX_EMBEDDING_DIM, + dtype: np.dtype = np.float32 +) -> Optional[np.ndarray]: + """ + Validates and transforms embeddings to ensure correct dimensionality. + + Args: + embedding: Input embedding in various possible formats + expected_dim: Expected embedding dimension (default 4096) + dtype: NumPy dtype for the embedding (default float32) + + Returns: + np.ndarray: Validated and transformed embedding + + Raises: + ValueError: If embedding dimension doesn't match expected dimension + """ + if embedding is None: + return None + + # Convert to numpy array based on input type + if isinstance(embedding, (bytes, sqlite3.Binary)): + vec = convert_array(embedding) + elif isinstance(embedding, list): + vec = np.array(embedding, dtype=dtype) + elif isinstance(embedding, np.ndarray): + vec = embedding.astype(dtype) + else: + raise ValueError(f"Unsupported embedding type: {type(embedding)}") + + # Validate dimension + if vec.shape[0] != expected_dim: + raise ValueError( + f"Invalid embedding dimension: got {vec.shape[0]}, expected {expected_dim}" + ) + + return vec + +def cosine_distance(embedding1, embedding2, expected_dim=MAX_EMBEDDING_DIM): + """ + Calculate cosine distance between two embeddings + + Args: + embedding1: First embedding + embedding2: Second embedding + expected_dim: Expected embedding dimension (default 4096) + + Returns: + float: Cosine distance + """ + + if embedding1 is None or embedding2 is None: + return 0.0 # Maximum distance if either embedding is None + + try: + vec1 = validate_and_transform_embedding(embedding1, expected_dim) + vec2 = validate_and_transform_embedding(embedding2, expected_dim) + except ValueError as e: + return 0.0 + + similarity = np.dot(vec1, vec2) / (np.linalg.norm(vec1) * np.linalg.norm(vec2)) + distance = float(1.0 - similarity) + + return distance + +@event.listens_for(Engine, "connect") +def register_functions(dbapi_connection, connection_record): + """Register SQLite functions""" + if isinstance(dbapi_connection, sqlite3.Connection): + dbapi_connection.create_function("cosine_distance", 2, cosine_distance) + +# Register adapters and converters for numpy arrays +sqlite3.register_adapter(np.ndarray, adapt_array) +sqlite3.register_converter("ARRAY", convert_array) diff --git a/letta/orm/user.py b/letta/orm/user.py index a44c31ab0e..62a3c0e606 100644 --- a/letta/orm/user.py +++ b/letta/orm/user.py @@ -20,7 +20,7 @@ class User(SqlalchemyBase, OrganizationMixin): # relationships organization: Mapped["Organization"] = relationship("Organization", back_populates="users") - jobs: Mapped[List["Job"]] = relationship("Job", back_populates="user", doc="the jobs associated with this user.") + jobs: Mapped[List["Job"]] = relationship("Job", back_populates="user", doc="the jobs associated with this user.", cascade="all, delete-orphan") # TODO: Add this back later potentially # agents: Mapped[List["Agent"]] = relationship( diff --git a/letta/schemas/passage.py b/letta/schemas/passage.py index 2ecc5e9ac3..faa520c03e 100644 --- a/letta/schemas/passage.py +++ b/letta/schemas/passage.py @@ -5,15 +5,17 @@ from letta.constants import MAX_EMBEDDING_DIM from letta.schemas.embedding_config import EmbeddingConfig -from letta.schemas.letta_base import LettaBase +from letta.schemas.letta_base import OrmMetadataBase from letta.utils import get_utc_time -class PassageBase(LettaBase): - __id_prefix__ = "passage" +class PassageBase(OrmMetadataBase): + __id_prefix__ = "passage_legacy" + + is_deleted: bool = Field(False, description="Whether this passage is deleted or not.") # associated user/agent - user_id: Optional[str] = Field(None, description="The unique identifier of the user associated with the passage.") + organization_id: Optional[str] = Field(None, description="The unique identifier of the user associated with the passage.") agent_id: Optional[str] = Field(None, description="The unique identifier of the agent associated with the passage.") # origin data source diff --git a/letta/server/rest_api/routers/v1/agents.py b/letta/server/rest_api/routers/v1/agents.py index 9dfd7e2bfe..06b0acd60c 100644 --- a/letta/server/rest_api/routers/v1/agents.py +++ b/letta/server/rest_api/routers/v1/agents.py @@ -369,8 +369,7 @@ def get_agent_archival_memory( return server.get_agent_archival_cursor( user_id=actor.id, agent_id=agent_id, - after=after, - before=before, + cursor=after, # TODO: deleting before, after. is this expected? limit=limit, ) diff --git a/letta/server/server.py b/letta/server/server.py index c60abe484c..1a5de01e96 100644 --- a/letta/server/server.py +++ b/letta/server/server.py @@ -16,7 +16,6 @@ import letta.server.utils as server_utils import letta.system as system from letta.agent import Agent, save_agent -from letta.agent_store.db import attach_base from letta.agent_store.storage import StorageConnector, TableType from letta.chat_only_agent import ChatOnlyAgent from letta.credentials import LettaCredentials @@ -70,17 +69,18 @@ ) from letta.schemas.message import Message, MessageCreate, MessageRole, MessageUpdate from letta.schemas.organization import Organization -from letta.schemas.passage import Passage +from letta.schemas.passage import Passage as PydanticPassage from letta.schemas.source import Source from letta.schemas.tool import Tool, ToolCreate from letta.schemas.usage import LettaUsageStatistics -from letta.schemas.user import User +from letta.schemas.user import User as PydanticUser from letta.services.agents_tags_manager import AgentsTagsManager from letta.services.block_manager import BlockManager from letta.services.blocks_agents_manager import BlocksAgentsManager from letta.services.job_manager import JobManager from letta.services.message_manager import MessageManager from letta.services.organization_manager import OrganizationManager +from letta.services.passage_manager import PassageManager from letta.services.per_agent_lock_manager import PerAgentLockManager from letta.services.sandbox_config_manager import SandboxConfigManager from letta.services.source_manager import SourceManager @@ -125,7 +125,7 @@ def update_agent_core_memory(self, user_id: str, agent_id: str, new_memory_conte def create_agent( self, request: CreateAgent, - actor: User, + actor: PydanticUser, # interface interface: Union[AgentInterface, None] = None, ) -> AgentState: @@ -166,8 +166,6 @@ def run_command(self, user_id: str, agent_id: str, command: str) -> Union[str, N config = LettaConfig.load() -attach_base() - if settings.letta_pg_uri_no_default: config.recall_storage_type = "postgres" config.recall_storage_uri = settings.letta_pg_uri_no_default @@ -245,6 +243,7 @@ def __init__( # Managers that interface with data models self.organization_manager = OrganizationManager() + self.passage_manager = PassageManager() self.user_manager = UserManager() self.tool_manager = ToolManager() self.block_manager = BlockManager() @@ -498,7 +497,12 @@ def _command(self, user_id: str, agent_id: str, command: str) -> LettaUsageStati # attach data to agent from source source_connector = StorageConnector.get_storage_connector(TableType.PASSAGES, self.config, user_id=user_id) - letta_agent.attach_source(data_source, source_connector, self.ms) + letta_agent.attach_source( + user=self.user_manager.get_user_by_id(user_id=user_id), + source_id=data_source, + source_manager=letta_agent.source_manager, + ms=self.ms + ) elif command.lower() == "dump" or command.lower().startswith("dump "): # Check if there's an additional argument that's an integer @@ -513,7 +517,7 @@ def _command(self, user_id: str, agent_id: str, command: str) -> LettaUsageStati letta_agent.interface.print_messages_raw(letta_agent.messages) elif command.lower() == "memory": - ret_str = f"\nDumping memory contents:\n" + f"\n{str(letta_agent.agent_state.memory)}" + f"\n{str(letta_agent.archival_memory)}" + ret_str = f"\nDumping memory contents:\n" + f"\n{str(letta_agent.agent_state.memory)}" + f"\n{str(letta_agent.passage_manager)}" return ret_str elif command.lower() == "pop" or command.lower().startswith("pop "): @@ -769,7 +773,7 @@ def run_command(self, user_id: str, agent_id: str, command: str) -> LettaUsageSt def create_agent( self, request: CreateAgent, - actor: User, + actor: PydanticUser, # interface interface: Union[AgentInterface, None] = None, ) -> AgentState: @@ -921,6 +925,7 @@ def get_agent(self, agent_id: str) -> Optional[AgentState]: # get `Tool` objects tools = [self.tool_manager.get_tool_by_name(tool_name=tool_name, actor=user) for tool_name in agent_state.tool_names] + tools = [tool for tool in tools if tool is not None] # get `Source` objects sources = self.list_attached_sources(agent_id=agent_id) @@ -934,7 +939,7 @@ def get_agent(self, agent_id: str) -> Optional[AgentState]: def update_agent( self, request: UpdateAgentState, - actor: User, + actor: PydanticUser, ) -> AgentState: """Update the agents core memory block, return the new state""" try: @@ -1151,7 +1156,7 @@ def get_agent_memory(self, agent_id: str) -> Memory: def get_archival_memory_summary(self, agent_id: str) -> ArchivalMemorySummary: agent = self.load_agent(agent_id=agent_id) - return ArchivalMemorySummary(size=len(agent.archival_memory)) + return ArchivalMemorySummary(size=agent.passage_manager.size(actor=self.default_user)) def get_recall_memory_summary(self, agent_id: str) -> RecallMemorySummary: agent = self.load_agent(agent_id=agent_id) @@ -1176,7 +1181,56 @@ def get_agent_message(self, agent_id: str, message_id: str) -> Message: message = agent.message_manager.get_message_by_id(id=message_id, actor=self.default_user) return message - def get_agent_archival(self, user_id: str, agent_id: str, start: int, count: int) -> List[Passage]: + def get_agent_messages( + self, + agent_id: str, + start: int, + count: int, + ) -> Union[List[Message], List[LettaMessage]]: + """Paginated query of all messages in agent message queue""" + # Get the agent object (loaded in memory) + letta_agent = self.load_agent(agent_id=agent_id) + + if start < 0 or count < 0: + raise ValueError("Start and count values should be non-negative") + + if start + count < len(letta_agent._messages): # messages can be returned from whats in memory + # Reverse the list to make it in reverse chronological order + reversed_messages = letta_agent._messages[::-1] + # Check if start is within the range of the list + if start >= len(reversed_messages): + raise IndexError("Start index is out of range") + + # Calculate the end index, ensuring it does not exceed the list length + end_index = min(start + count, len(reversed_messages)) + + # Slice the list for pagination + messages = reversed_messages[start:end_index] + + else: + # need to access persistence manager for additional messages + + # get messages using message manager + page = letta_agent.message_manager.list_user_messages_for_agent( + agent_id=agent_id, + actor=self.default_user, + cursor=start, + limit=count, + ) + + messages = page + assert all(isinstance(m, Message) for m in messages) + + ## Convert to json + ## Add a tag indicating in-context or not + # json_messages = [record.to_json() for record in messages] + # in_context_message_ids = [str(m.id) for m in letta_agent._messages] + # for d in json_messages: + # d["in_context"] = True if str(d["id"]) in in_context_message_ids else False + + return messages + + def get_agent_archival(self, user_id: str, agent_id: str, cursor: Optional[str] = None, limit: int = 50) -> List[PydanticPassage]: """Paginated query of all messages in agent archival memory""" if self.user_manager.get_user_by_id(user_id=user_id) is None: raise ValueError(f"User user_id={user_id} does not exist") @@ -1187,22 +1241,22 @@ def get_agent_archival(self, user_id: str, agent_id: str, start: int, count: int letta_agent = self.load_agent(agent_id=agent_id) # iterate over records - db_iterator = letta_agent.archival_memory.storage.get_all_paginated(page_size=count, offset=start) + records = letta_agent.passage_manager.list_passages( + actor=self.default_user, + agent_id=agent_id, + cursor=cursor, + limit=limit, + ) - # get a single page of messages - page = next(db_iterator, []) - return page + return records def get_agent_archival_cursor( self, user_id: str, agent_id: str, - after: Optional[str] = None, - before: Optional[str] = None, + cursor: Optional[str] = None, limit: Optional[int] = 100, - order_by: Optional[str] = "created_at", - reverse: Optional[bool] = False, - ) -> List[Passage]: + ) -> List[PydanticPassage]: if self.user_manager.get_user_by_id(user_id=user_id) is None: raise LettaUserNotFoundError(f"User user_id={user_id} does not exist") if self.ms.get_agent(agent_id=agent_id, user_id=user_id) is None: @@ -1211,14 +1265,15 @@ def get_agent_archival_cursor( # Get the agent object (loaded in memory) letta_agent = self.load_agent(agent_id=agent_id) - # iterate over recorde - cursor, records = letta_agent.archival_memory.storage.get_all_cursor( - after=after, before=before, limit=limit, order_by=order_by, reverse=reverse + # iterate over records + records = letta_agent.passage_manager.list_passages( + actor=self.default_user, agent_id=agent_id, cursor=cursor, limit=limit, ) return records - def insert_archival_memory(self, user_id: str, agent_id: str, memory_contents: str) -> List[Passage]: - if self.user_manager.get_user_by_id(user_id=user_id) is None: + def insert_archival_memory(self, user_id: str, agent_id: str, memory_contents: str) -> List[PydanticPassage]: + actor = self.user_manager.get_user_by_id(user_id=user_id) + if actor is None: raise ValueError(f"User user_id={user_id} does not exist") if self.ms.get_agent(agent_id=agent_id, user_id=user_id) is None: raise ValueError(f"Agent agent_id={agent_id} does not exist") @@ -1227,17 +1282,20 @@ def insert_archival_memory(self, user_id: str, agent_id: str, memory_contents: s letta_agent = self.load_agent(agent_id=agent_id) # Insert into archival memory - passage_ids = letta_agent.archival_memory.insert(memory_string=memory_contents, return_ids=True) + passage_ids = self.passage_manager.insert_passage( + agent_state=letta_agent.agent_state, agent_id=agent_id, text=memory_contents, actor=actor, return_ids=True + ) # Update the agent # TODO: should this update the system prompt? save_agent(letta_agent, self.ms) # TODO: this is gross, fix - return [letta_agent.archival_memory.storage.get(id=passage_id) for passage_id in passage_ids] + return [self.passage_manager.get_passage_by_id(passage_id=passage_id, actor=actor) for passage_id in passage_ids] def delete_archival_memory(self, user_id: str, agent_id: str, memory_id: str): - if self.user_manager.get_user_by_id(user_id=user_id) is None: + actor = self.user_manager.get_user_by_id(user_id=user_id) + if actor is None: raise ValueError(f"User user_id={user_id} does not exist") if self.ms.get_agent(agent_id=agent_id, user_id=user_id) is None: raise ValueError(f"Agent agent_id={agent_id} does not exist") @@ -1249,7 +1307,7 @@ def delete_archival_memory(self, user_id: str, agent_id: str, memory_id: str): # Delete by ID # TODO check if it exists first, and throw error if not - letta_agent.archival_memory.storage.delete({"id": memory_id}) + letta_agent.passage_manager.delete_passage_by_id(passage_id=memory_id, actor=actor) # TODO: return archival memory @@ -1395,6 +1453,12 @@ def delete_agent(self, user_id: str, agent_id: str): except NoResultFound: logger.error(f"Agent with id {agent_state.id} has nonexistent user {agent_state.user_id}") + # delete all passages associated with this agent + # TODO: REMOVE THIS ONCE WE MIGRATE AGENTMODEL TO ORM + passages = self.passage_manager.list_passages(actor=actor, agent_id=agent_state.id) + for passage in passages: + self.passage_manager.delete_passage_by_id(passage.id, actor=actor) + # First, if the agent is in the in-memory cache we should remove it # List of {'user_id': user_id, 'agent_id': agent_id, 'agent': agent_obj} dicts try: @@ -1437,7 +1501,7 @@ def delete_api_key(self, api_key: str) -> APIKey: self.ms.delete_api_key(api_key=api_key) return api_key_obj - def delete_source(self, source_id: str, actor: User): + def delete_source(self, source_id: str, actor: PydanticUser): """Delete a data source""" self.source_manager.delete_source(source_id=source_id, actor=actor) @@ -1447,7 +1511,7 @@ def delete_source(self, source_id: str, actor: User): # TODO: delete data from agent passage stores (?) - def load_file_to_source(self, source_id: str, file_path: str, job_id: str, actor: User) -> Job: + def load_file_to_source(self, source_id: str, file_path: str, job_id: str, actor: PydanticUser) -> Job: # update job job = self.job_manager.get_job_by_id(job_id, actor=actor) @@ -1474,6 +1538,7 @@ def load_data( user_id: str, connector: DataConnector, source_name: str, + agent_id: Optional[str] = None, ) -> Tuple[int, int]: """Load data from a DataConnector into a source for a specified user_id""" # TODO: this should be implemented as a batch job or at least async, since it may take a long time @@ -1488,14 +1553,13 @@ def load_data( passage_store = StorageConnector.get_storage_connector(TableType.PASSAGES, self.config, user_id=user_id) # load data into the document store - passage_count, document_count = load_data(connector, source, passage_store, self.source_manager, actor=user) + passage_count, document_count = load_data(connector, source, passage_store, self.source_manager, actor=user, agent_id=agent_id) return passage_count, document_count def attach_source_to_agent( self, user_id: str, agent_id: str, - # source_id: str, source_id: Optional[str] = None, source_name: Optional[str] = None, ) -> Source: @@ -1507,15 +1571,14 @@ def attach_source_to_agent( data_source = self.source_manager.get_source_by_name(source_name=source_name, actor=user) else: raise ValueError(f"Need to provide at least source_id or source_name to find the source.") - # get connection to data source storage - source_connector = StorageConnector.get_storage_connector(TableType.PASSAGES, self.config, user_id=user_id) + assert data_source, f"Data source with id={source_id} or name={source_name} does not exist" # load agent agent = self.load_agent(agent_id=agent_id) # attach source to agent - agent.attach_source(data_source.id, source_connector, self.ms) + agent.attach_source(user=user, source_id=data_source.id, source_manager=self.source_manager, ms=self.ms) return data_source @@ -1538,8 +1601,7 @@ def detach_source_from_agent( # delete all Passage objects with source_id==source_id from agent's archival memory agent = self.load_agent(agent_id=agent_id) - archival_memory = agent.archival_memory - archival_memory.storage.delete({"source_id": source_id}) + agent.passage_manager.delete_passages(actor=user, limit=100, source_id=source_id) # delete agent-source mapping self.ms.detach_source(agent_id=agent_id, source_id=source_id) @@ -1553,11 +1615,11 @@ def list_attached_sources(self, agent_id: str) -> List[Source]: return [self.source_manager.get_source_by_id(source_id=id) for id in source_ids] - def list_data_source_passages(self, user_id: str, source_id: str) -> List[Passage]: + def list_data_source_passages(self, user_id: str, source_id: str) -> List[PydanticPassage]: warnings.warn("list_data_source_passages is not yet implemented, returning empty list.", category=UserWarning) return [] - def list_all_sources(self, actor: User) -> List[Source]: + def list_all_sources(self, actor: PydanticUser) -> List[Source]: """List all sources (w/ extra metadata) belonging to a user""" sources = self.source_manager.list_sources(actor=actor) @@ -1597,7 +1659,7 @@ def list_all_sources(self, actor: User) -> List[Source]: return sources_with_metadata - def add_default_external_tools(self, actor: User) -> bool: + def add_default_external_tools(self, actor: PydanticUser) -> bool: """Add default langchain tools. Return true if successful, false otherwise.""" success = True tool_creates = ToolCreate.load_default_langchain_tools() @@ -1654,7 +1716,7 @@ def retry_agent_message(self, agent_id: str) -> List[Message]: save_agent(letta_agent, self.ms) return response - def get_user_or_default(self, user_id: Optional[str]) -> User: + def get_user_or_default(self, user_id: Optional[str]) -> PydanticUser: """Get the user object for user_id if it exists, otherwise return the default user object""" if user_id is None: user_id = self.user_manager.DEFAULT_USER_ID diff --git a/letta/services/passage_manager.py b/letta/services/passage_manager.py new file mode 100644 index 0000000000..c1933b3943 --- /dev/null +++ b/letta/services/passage_manager.py @@ -0,0 +1,225 @@ +from typing import List, Optional, Dict, Tuple +from letta.constants import MAX_EMBEDDING_DIM +from datetime import datetime +import numpy as np + +from letta.orm.errors import NoResultFound +from letta.utils import enforce_types + +from letta.embeddings import embedding_model, parse_and_chunk_text +from letta.schemas.embedding_config import EmbeddingConfig + +from letta.orm.passage import Passage as PassageModel +from letta.orm.sqlalchemy_base import AccessType +from letta.schemas.agent import AgentState +from letta.schemas.passage import Passage as PydanticPassage +from letta.schemas.user import User as PydanticUser + +class PassageManager: + """Manager class to handle business logic related to Passages.""" + + def __init__(self): + from letta.server.server import db_context + self.session_maker = db_context + + @enforce_types + def get_passage_by_id(self, passage_id: str, actor: PydanticUser) -> Optional[PydanticPassage]: + """Fetch a passage by ID.""" + with self.session_maker() as session: + try: + passage = PassageModel.read(db_session=session, identifier=passage_id, actor=actor) + return passage.to_pydantic() + except NoResultFound: + return None + + @enforce_types + def create_passage(self, pydantic_passage: PydanticPassage, actor: PydanticUser) -> PydanticPassage: + """Create a new passage.""" + with self.session_maker() as session: + passage = PassageModel(**pydantic_passage.model_dump()) + passage.create(session, actor=actor) + return passage.to_pydantic() + + @enforce_types + def create_many_passages(self, passages: List[PydanticPassage], actor: PydanticUser) -> List[PydanticPassage]: + """Create multiple passages.""" + return [self.create_passage(p, actor) for p in passages] + + @enforce_types + def insert_passage(self, + agent_state: AgentState, + agent_id: str, + text: str, + actor: PydanticUser, + return_ids: bool = False + ) -> List[PydanticPassage]: + """ Insert passage(s) into archival memory """ + + embedding_chunk_size = agent_state.embedding_config.embedding_chunk_size + embed_model = embedding_model(agent_state.embedding_config) + + passages = [] + + try: + # breakup string into passages + for text in parse_and_chunk_text(text, embedding_chunk_size): + embedding = embed_model.get_text_embedding(text) + if isinstance(embedding, dict): + try: + embedding = embedding["data"][0]["embedding"] + except (KeyError, IndexError): + # TODO as a fallback, see if we can find any lists in the payload + raise TypeError( + f"Got back an unexpected payload from text embedding function, type={type(embedding)}, value={embedding}" + ) + passage = self.create_passage( + PydanticPassage( + organization_id=actor.organization_id, + agent_id=agent_id, + text=text, + embedding=embedding, + embedding_config=agent_state.embedding_config + ), + actor=actor + ) + passages.append(passage) + + ids = [str(p.id) for p in passages] + + if return_ids: + return ids + + return passages + + except Exception as e: + raise e + + @enforce_types + def update_passage_by_id(self, passage_id: str, passage: PydanticPassage, actor: PydanticUser, **kwargs) -> Optional[PydanticPassage]: + """Update a passage.""" + if not passage_id: + raise ValueError("Passage ID must be provided.") + + with self.session_maker() as session: + try: + # Fetch existing message from database + curr_passage = PassageModel.read( + db_session=session, + identifier=passage_id, + actor=actor, + ) + if not curr_passage: + raise ValueError(f"Passage with id {passage_id} does not exist.") + + # Update the database record with values from the provided record + update_data = passage.model_dump(exclude_unset=True, exclude_none=True) + for key, value in update_data.items(): + setattr(curr_passage, key, value) + + # Commit changes + curr_passage.update(session, actor=actor) + return curr_passage.to_pydantic() + except NoResultFound: + return None + + @enforce_types + def delete_passage_by_id(self, passage_id: str, actor: PydanticUser) -> bool: + """Delete a passage.""" + if not passage_id: + raise ValueError("Passage ID must be provided.") + + with self.session_maker() as session: + try: + passage = PassageModel.read(db_session=session, identifier=passage_id, actor=actor) + passage.hard_delete(session, actor=actor) + except NoResultFound: + raise ValueError(f"Passage with id {passage_id} not found.") + + @enforce_types + def list_passages(self, + actor : PydanticUser, + agent_id : Optional[str] = None, + file_id : Optional[str] = None, + cursor : Optional[str] = None, + limit : Optional[int] = 50, + query_text : Optional[str] = None, + start_date : Optional[datetime] = None, + end_date : Optional[datetime] = None, + source_id : Optional[str] = None, + embed_query : bool = False, + embedding_config: Optional[EmbeddingConfig] = None + ) -> List[PydanticPassage]: + """List passages with pagination.""" + with self.session_maker() as session: + filters = {"organization_id": actor.organization_id} + if agent_id: + filters["agent_id"] = agent_id + if file_id: + filters["file_id"] = file_id + if source_id: + filters["source_id"] = source_id + + embedded_text = None + if embed_query: + assert embedding_config is not None + + # Embed the text + embedded_text = embedding_model(embedding_config).get_text_embedding(query_text) + + # Pad the embedding with zeros + embedded_text = np.array(embedded_text) + embedded_text = np.pad(embedded_text, (0, MAX_EMBEDDING_DIM - embedded_text.shape[0]), mode="constant").tolist() + + results = PassageModel.list( + db_session=session, + cursor=cursor, + start_date=start_date, + end_date=end_date, + limit=limit, + query_text=query_text if not embedded_text else None, + query_embedding=embedded_text, + **filters + ) + return [p.to_pydantic() for p in results] + + @enforce_types + def size( + self, + actor : PydanticUser, + agent_id : Optional[str] = None, + **kwargs + ) -> int: + """Get the total count of messages with optional filters. + + Args: + actor : The user requesting the count + agent_id: The agent ID + """ + with self.session_maker() as session: + return PassageModel.size(db_session=session, actor=actor, agent_id=agent_id, **kwargs) + + def delete_passages(self, + actor: PydanticUser, + agent_id: Optional[str] = None, + file_id: Optional[str] = None, + start_date: Optional[datetime] = None, + end_date: Optional[datetime] = None, + limit: Optional[int] = 50, + cursor: Optional[str] = None, + query_text: Optional[str] = None, + source_id: Optional[str] = None + ) -> bool: + + passages = self.list_passages( + actor=actor, + agent_id=agent_id, + file_id=file_id, + cursor=cursor, + limit=limit, + start_date=start_date, + end_date=end_date, + query_text=query_text, + source_id=source_id) + + for passage in passages: + self.delete_passage_by_id(passage_id=passage.id, actor=actor) diff --git a/letta/services/source_manager.py b/letta/services/source_manager.py index f2b48e9bad..a6745cec94 100644 --- a/letta/services/source_manager.py +++ b/letta/services/source_manager.py @@ -64,7 +64,7 @@ def delete_source(self, source_id: str, actor: PydanticUser) -> PydanticSource: return source.to_pydantic() @enforce_types - def list_sources(self, actor: PydanticUser, cursor: Optional[str] = None, limit: Optional[int] = 50) -> List[PydanticSource]: + def list_sources(self, actor: PydanticUser, cursor: Optional[str] = None, limit: Optional[int] = 50, **kwargs) -> List[PydanticSource]: """List all sources with optional pagination.""" with self.session_maker() as session: sources = SourceModel.list( @@ -72,6 +72,7 @@ def list_sources(self, actor: PydanticUser, cursor: Optional[str] = None, limit: cursor=cursor, limit=limit, organization_id=actor.organization_id, + **kwargs, ) return [source.to_pydantic() for source in sources] diff --git a/letta/settings.py b/letta/settings.py index 7271ff29d6..41aca91d00 100644 --- a/letta/settings.py +++ b/letta/settings.py @@ -17,6 +17,8 @@ class ToolSettings(BaseSettings): class ModelSettings(BaseSettings): + model_config = SettingsConfigDict(env_file='.env') + # env_prefix='my_prefix_' # when we use /completions APIs (instead of /chat/completions), we need to specify a model wrapper diff --git a/pyproject.toml b/pyproject.toml index cf07689a68..9b8ff29318 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -104,4 +104,4 @@ extend-exclude = "examples/*" [build-system] requires = ["poetry-core"] -build-backend = "poetry.core.masonry.api" +build-backend = "poetry.core.masonry.api" \ No newline at end of file diff --git a/tests/test_base_functions.py b/tests/test_base_functions.py index 0668f2fd0f..199800eb0c 100644 --- a/tests/test_base_functions.py +++ b/tests/test_base_functions.py @@ -29,11 +29,63 @@ def agent_obj(): client.delete_agent(agent_obj.agent_state.id) -def test_archival(agent_obj): - base_functions.archival_memory_insert(agent_obj, "banana") - base_functions.archival_memory_search(agent_obj, "banana") - base_functions.archival_memory_search(agent_obj, "banana", page=0) +def query_in_search_results(search_results, query): + for result in search_results: + if query.lower() in result["content"].lower(): + return True + return False +def test_archival(agent_obj): + """Test archival memory functions comprehensively.""" + # Test 1: Basic insertion and retrieval + base_functions.archival_memory_insert(agent_obj, "The cat sleeps on the mat") + base_functions.archival_memory_insert(agent_obj, "The dog plays in the park") + base_functions.archival_memory_insert(agent_obj, "Python is a programming language") + + # Test exact text search + results, _ = base_functions.archival_memory_search(agent_obj, "cat") + assert query_in_search_results(results, "cat") + + # Test semantic search (should return animal-related content) + results, _ = base_functions.archival_memory_search(agent_obj, "animal pets") + assert query_in_search_results(results, "cat") or query_in_search_results(results, "dog") + + # Test unrelated search (should not return animal content) + results, _ = base_functions.archival_memory_search(agent_obj, "programming computers") + assert query_in_search_results(results, "python") + + # Test 2: Test pagination + # Insert more items to test pagination + for i in range(10): + base_functions.archival_memory_insert(agent_obj, f"Test passage number {i}") + + # Get first page + page0_results, next_page = base_functions.archival_memory_search(agent_obj, "Test passage", page=0) + # Get second page + page1_results, _ = base_functions.archival_memory_search(agent_obj, "Test passage", page=1, start=next_page) + + assert page0_results != page1_results + assert query_in_search_results(page0_results, "Test passage") + assert query_in_search_results(page1_results, "Test passage") + + # Test 3: Test complex text patterns + base_functions.archival_memory_insert(agent_obj, "Important meeting on 2024-01-15 with John") + base_functions.archival_memory_insert(agent_obj, "Follow-up meeting scheduled for next week") + base_functions.archival_memory_insert(agent_obj, "Project deadline is approaching") + + # Search for meeting-related content + results, _ = base_functions.archival_memory_search(agent_obj, "meeting schedule") + assert query_in_search_results(results, "meeting") + assert query_in_search_results(results, "2024-01-15") or query_in_search_results(results, "next week") + + # Test 4: Test error handling + # Test invalid page number + try: + base_functions.archival_memory_search(agent_obj, "test", page="invalid") + assert False, "Should have raised ValueError" + except ValueError: + pass + def test_recall(agent_obj): base_functions.conversation_search(agent_obj, "banana") diff --git a/tests/test_client_legacy.py b/tests/test_client_legacy.py index 65bd5f16b2..fff0e466cf 100644 --- a/tests/test_client_legacy.py +++ b/tests/test_client_legacy.py @@ -649,7 +649,6 @@ def test_initial_message_sequence(client: Union[LocalClient, RESTClient], agent: system=agent.system, agent_id=agent.id, memory=agent.memory, - archival_memory=None, memory_edit_timestamp=get_utc_time(), include_initial_boot_message=True, actor=default_user, diff --git a/tests/test_managers.py b/tests/test_managers.py index 74675b4cb5..f6e5436647 100644 --- a/tests/test_managers.py +++ b/tests/test_managers.py @@ -5,9 +5,11 @@ import pytest from sqlalchemy import delete +from letta.embeddings import embedding_model import letta.utils as utils from letta.functions.functions import derive_openai_json_schema, parse_source_code from letta.metadata import AgentModel +from letta.orm.sqlite_functions import verify_embedding_dimension, convert_array from letta.orm import ( Block, BlocksAgents, @@ -15,6 +17,7 @@ Job, Message, Organization, + Passage, SandboxConfig, SandboxEnvironmentVariable, Source, @@ -40,6 +43,7 @@ from letta.schemas.message import Message as PydanticMessage from letta.schemas.message import MessageUpdate from letta.schemas.organization import Organization as PydanticOrganization +from letta.schemas.passage import Passage as PydanticPassage from letta.schemas.sandbox_config import ( E2BSandboxConfig, LocalSandboxConfig, @@ -55,6 +59,7 @@ from letta.schemas.tool import ToolUpdate from letta.services.block_manager import BlockManager from letta.services.organization_manager import OrganizationManager +from letta.services.passage_manager import PassageManager from letta.services.tool_manager import ToolManager from letta.settings import tool_settings @@ -83,6 +88,7 @@ def clear_tables(server: SyncServer): """Fixture to clear the organization table before each test.""" with server.organization_manager.session_maker() as session: session.execute(delete(Message)) + session.execute(delete(Passage)) session.execute(delete(Job)) session.execute(delete(ToolsAgents)) # Clear ToolsAgents first session.execute(delete(BlocksAgents)) @@ -132,6 +138,16 @@ def default_source(server: SyncServer, default_user): yield source +@pytest.fixture +def default_file(server: SyncServer, default_source, default_user, default_organization): + file = server.source_manager.create_file( + PydanticFileMetadata( + file_name="test_file", organization_id=default_organization.id, source_id=default_source.id), + actor=default_user, + ) + yield file + + @pytest.fixture def sarah_agent(server: SyncServer, default_user, default_organization): """Fixture to create and return a sample agent within the default organization.""" @@ -197,6 +213,41 @@ def print_tool(message: str): yield tool +@pytest.fixture +def hello_world_passage_fixture(server: SyncServer, default_user, default_file, sarah_agent): + """Fixture to create a tool with default settings and clean up after the test.""" + # Set up passage + dummy_embedding = [0.0] * 2 + message = PydanticPassage( + organization_id=default_user.organization_id, + agent_id=sarah_agent.id, + file_id=default_file.id, + text="Hello, world!", + embedding=dummy_embedding, + embedding_config=DEFAULT_EMBEDDING_CONFIG + ) + + msg = server.passage_manager.create_passage(message, actor=default_user) + yield msg + + +@pytest.fixture +def create_test_passages(server: SyncServer, default_file, default_user, sarah_agent) -> list[PydanticPassage]: + """Helper function to create test passages for all tests""" + dummy_embedding = [0] * 2 + passages = [ + PydanticPassage( + organization_id=default_user.organization_id, + agent_id=sarah_agent.id, + file_id=default_file.id, + text=f"Test passage {i}", + embedding=dummy_embedding, + embedding_config=DEFAULT_EMBEDDING_CONFIG + ) for i in range(4) + ] + server.passage_manager.create_many_passages(passages, actor=default_user) + return passages + @pytest.fixture def hello_world_message_fixture(server: SyncServer, default_user, sarah_agent): """Fixture to create a tool with default settings and clean up after the test.""" @@ -353,6 +404,288 @@ def test_list_organizations_pagination(server: SyncServer): assert len(orgs) == 0 +# ====================================================================================================================== +# Passage Manager Tests +# ====================================================================================================================== + +def test_passage_create(server: SyncServer, hello_world_passage_fixture, default_user): + """Test creating a passage using hello_world_passage_fixture fixture""" + assert hello_world_passage_fixture.id is not None + assert hello_world_passage_fixture.text == "Hello, world!" + + # Verify we can retrieve it + retrieved = server.passage_manager.get_passage_by_id( + hello_world_passage_fixture.id, + actor=default_user, + ) + assert retrieved is not None + assert retrieved.id == hello_world_passage_fixture.id + assert retrieved.text == hello_world_passage_fixture.text + + +def test_passage_get_by_id(server: SyncServer, hello_world_passage_fixture, default_user): + """Test retrieving a passage by ID""" + retrieved = server.passage_manager.get_passage_by_id(hello_world_passage_fixture.id, actor=default_user) + assert retrieved is not None + assert retrieved.id == hello_world_passage_fixture.id + assert retrieved.text == hello_world_passage_fixture.text + + +def test_passage_update(server: SyncServer, hello_world_passage_fixture, default_user): + """Test updating a passage""" + new_text = "Updated text" + hello_world_passage_fixture.text = new_text + updated = server.passage_manager.update_passage_by_id(hello_world_passage_fixture.id, hello_world_passage_fixture, actor=default_user) + assert updated is not None + assert updated.text == new_text + retrieved = server.passage_manager.get_passage_by_id(hello_world_passage_fixture.id, actor=default_user) + assert retrieved.text == new_text + + +def test_passage_delete(server: SyncServer, hello_world_passage_fixture, default_user): + """Test deleting a passage""" + server.passage_manager.delete_passage_by_id(hello_world_passage_fixture.id, actor=default_user) + retrieved = server.passage_manager.get_passage_by_id(hello_world_passage_fixture.id, actor=default_user) + assert retrieved is None + + +def test_passage_size(server: SyncServer, hello_world_passage_fixture, create_test_passages, default_user): + """Test counting passages with filters""" + base_passage = hello_world_passage_fixture + + # Test total count + total = server.passage_manager.size(actor=default_user) + assert total == 5 # base passage + 4 test passages + # TODO: change login passage to be a system not user passage + + # Test count with agent filter + agent_count = server.passage_manager.size(actor=default_user, agent_id=base_passage.agent_id) + assert agent_count == 5 + + # Test count with role filter + role_count = server.passage_manager.size(actor=default_user) + assert role_count == 5 + + # Test count with non-existent filter + empty_count = server.passage_manager.size(actor=default_user, agent_id="non-existent") + assert empty_count == 0 + + +def test_passage_listing_basic(server: SyncServer, hello_world_passage_fixture, create_test_passages, default_user): + """Test basic passage listing with limit""" + results = server.passage_manager.list_passages(actor=default_user, limit=3) + assert len(results) == 3 + + +def test_passage_listing_cursor(server: SyncServer, hello_world_passage_fixture, create_test_passages, default_user): + """Test cursor-based pagination functionality""" + + # Make sure there are 5 passages + assert server.passage_manager.size(actor=default_user) == 5 + + # Get first page + first_page = server.passage_manager.list_passages(actor=default_user, limit=3) + assert len(first_page) == 3 + + last_id_on_first_page = first_page[-1].id + + # Get second page + second_page = server.passage_manager.list_passages( + actor=default_user, cursor=last_id_on_first_page, limit=3 + ) + assert len(second_page) == 2 # Should have 2 remaining passages + assert all(r1.id != r2.id for r1 in first_page for r2 in second_page) + + +def test_passage_listing_filtering(server: SyncServer, hello_world_passage_fixture, create_test_passages, default_user, sarah_agent): + """Test filtering passages by agent ID""" + agent_results = server.passage_manager.list_passages(agent_id=sarah_agent.id, actor=default_user, limit=10) + assert len(agent_results) == 5 # base passage + 4 test passages + assert all(msg.agent_id == hello_world_passage_fixture.agent_id for msg in agent_results) + + +def test_passage_listing_text_search(server: SyncServer, hello_world_passage_fixture, create_test_passages, default_user, sarah_agent): + """Test searching passages by text content""" + search_results = server.passage_manager.list_passages( + agent_id=sarah_agent.id, actor=default_user, query_text="Test passage", limit=10 + ) + assert len(search_results) == 4 + assert all("Test passage" in msg.text for msg in search_results) + + # Test no results + search_results = server.passage_manager.list_passages( + agent_id=sarah_agent.id, actor=default_user, query_text="Letta", limit=10 + ) + assert len(search_results) == 0 + + +def test_passage_listing_date_range_filtering(server: SyncServer, hello_world_passage_fixture, default_user, default_file, sarah_agent): + """Test filtering passages by date range with various scenarios""" + # Set up test data with known dates + base_time = datetime.utcnow() + + # Create passages at different times + passages = [] + time_offsets = [ + timedelta(days=-2), # 2 days ago + timedelta(days=-1), # Yesterday + timedelta(hours=-2), # 2 hours ago + timedelta(minutes=-30), # 30 minutes ago + timedelta(minutes=-1), # 1 minute ago + timedelta(minutes=0), # Now + ] + + for i, offset in enumerate(time_offsets): + timestamp = base_time + offset + passage = server.passage_manager.create_passage( + PydanticPassage( + organization_id=default_user.organization_id, + agent_id=sarah_agent.id, + file_id=default_file.id, + text=f"Test passage {i}", + embedding=[0.1, 0.2, 0.3], + embedding_config=DEFAULT_EMBEDDING_CONFIG, + created_at=timestamp + ), + actor=default_user + ) + passages.append(passage) + + # Test cases + test_cases = [ + { + "name": "Recent passages (last hour)", + "start_date": base_time - timedelta(hours=1), + "end_date": base_time + timedelta(minutes=1), + "expected_count": 1 + 3, # Should include base + -30min, -1min, and now + }, + { + "name": "Yesterday's passages", + "start_date": base_time - timedelta(days=1, hours=12), + "end_date": base_time - timedelta(hours=12), + "expected_count": 1, # Should only include yesterday's passage + }, + { + "name": "Future time range", + "start_date": base_time + timedelta(days=1), + "end_date": base_time + timedelta(days=2), + "expected_count": 0, # Should find no passages + }, + { + "name": "All time", + "start_date": base_time - timedelta(days=3), + "end_date": base_time + timedelta(days=1), + "expected_count": 1 + len(passages), # Should find all passages + }, + { + "name": "Exact timestamp match", + "start_date": passages[0].created_at - timedelta(microseconds=1), + "end_date": passages[0].created_at + timedelta(microseconds=1), + "expected_count": 1, # Should find exactly one passage + }, + { + "name": "Small time window", + "start_date": base_time - timedelta(seconds=30), + "end_date": base_time + timedelta(seconds=30), + "expected_count": 1 + 1, # date + "now" + } + ] + + # Run test cases + for case in test_cases: + results = server.passage_manager.list_passages( + agent_id=sarah_agent.id, + actor=default_user, + start_date=case["start_date"], + end_date=case["end_date"], + limit=10 + ) + + # Verify count + assert len(results) == case["expected_count"], \ + f"Test case '{case['name']}' failed: expected {case['expected_count']} passages, got {len(results)}" + + # Test edge cases + + # Test with start_date but no end_date + results_start_only = server.passage_manager.list_passages( + agent_id=sarah_agent.id, + actor=default_user, + start_date=base_time - timedelta(minutes=2), + end_date=None, + limit=10 + ) + assert len(results_start_only) >= 2, "Should find passages after start_date" + + # Test with end_date but no start_date + results_end_only = server.passage_manager.list_passages( + agent_id=sarah_agent.id, + actor=default_user, + start_date=None, + end_date=base_time - timedelta(days=1), + limit=10 + ) + assert len(results_end_only) >= 1, "Should find passages before end_date" + + # Test limit enforcement + limited_results = server.passage_manager.list_passages( + agent_id=sarah_agent.id, + actor=default_user, + start_date=base_time - timedelta(days=3), + end_date=base_time + timedelta(days=1), + limit=3 + ) + assert len(limited_results) <= 3, "Should respect the limit parameter" + + +def test_passage_vector_search(server: SyncServer, default_user, default_file, sarah_agent): + """Test vector search functionality for passages.""" + passage_manager = server.passage_manager + embed_model = embedding_model(DEFAULT_EMBEDDING_CONFIG) + + # Create passages with known embeddings + passages = [] + + # Create passages with different embeddings + test_passages = [ + "I like red", + "random text", + "blue shoes", + ] + + for text in test_passages: + embedding = embed_model.get_text_embedding(text) + passage = PydanticPassage( + text=text, + organization_id=default_user.organization_id, + agent_id=sarah_agent.id, + embedding_config=DEFAULT_EMBEDDING_CONFIG, + embedding=embedding + ) + created_passage = passage_manager.create_passage(passage, default_user) + passages.append(created_passage) + assert passage_manager.size(actor=default_user) == len(passages) + + # Query vector similar to "cats" embedding + query_key = "What's my favorite color?" + + # List passages with vector search + results = passage_manager.list_passages( + actor=default_user, + agent_id=sarah_agent.id, + query_text=query_key, + limit=3, + embedding_config=DEFAULT_EMBEDDING_CONFIG, + embed_query=True, + ) + + # Verify results are ordered by similarity + assert len(results) == 3 + assert results[0].text == "I like red" + assert results[1].text == "random text" # For some reason the embedding model doesn't like "blue shoes" + assert results[2].text == "blue shoes" + + # ====================================================================================================================== # User Manager Tests # ====================================================================================================================== @@ -834,8 +1167,6 @@ def test_delete_block(server: SyncServer, default_user): # ====================================================================================================================== # Source Manager Tests - Sources # ====================================================================================================================== - - def test_create_source(server: SyncServer, default_user): """Test creating a new source.""" source_pydantic = PydanticSource( @@ -1049,8 +1380,6 @@ def test_delete_file(server: SyncServer, default_user, default_source): # ====================================================================================================================== # AgentsTagsManager Tests # ====================================================================================================================== - - def test_add_tag_to_agent(server: SyncServer, sarah_agent, default_user): # Add a tag to the agent tag_name = "test_tag" diff --git a/tests/test_server.py b/tests/test_server.py index 32e5da6902..555b7c07ef 100644 --- a/tests/test_server.py +++ b/tests/test_server.py @@ -117,6 +117,9 @@ def test_user_message_memory(server, user_id, agent_id): @pytest.mark.order(3) def test_load_data(server, user_id, agent_id): # create source + passages_before = server.get_agent_archival(user_id=user_id, agent_id=agent_id, cursor=None, limit=10000) + assert len(passages_before) == 0 + source = server.source_manager.create_source( Source(name="test_source", embedding_config=DEFAULT_EMBEDDING_CONFIG), actor=server.default_user ) @@ -130,19 +133,17 @@ def test_load_data(server, user_id, agent_id): "Shishir loves indian food", ] connector = DummyDataConnector(archival_memories) - server.load_data(user_id, connector, source.name) + server.load_data(user_id, connector, source.name, agent_id=agent_id) # @pytest.mark.order(3) # def test_attach_source_to_agent(server, user_id, agent_id): # check archival memory size - passages_before = server.get_agent_archival(user_id=user_id, agent_id=agent_id, start=0, count=10000) - assert len(passages_before) == 0 # attach source server.attach_source_to_agent(user_id=user_id, agent_id=agent_id, source_name="test_source") # check archival memory size - passages_after = server.get_agent_archival(user_id=user_id, agent_id=agent_id, start=0, count=10000) + passages_after = server.get_agent_archival(user_id=user_id, agent_id=agent_id, cursor=None, limit=10000) assert len(passages_after) == 5 @@ -182,41 +183,42 @@ def test_get_recall_memory(server, org_id, user_id, agent_id): assert message_id in message_ids, f"{message_id} not in {message_ids}" -@pytest.mark.order(6) -def test_get_archival_memory(server, user_id, agent_id): - # test archival memory cursor pagination - passages_1 = server.get_agent_archival_cursor(user_id=user_id, agent_id=agent_id, reverse=False, limit=2, order_by="text") - assert len(passages_1) == 2, f"Returned {[p.text for p in passages_1]}, not equal to 2" - cursor1 = passages_1[-1].id - passages_2 = server.get_agent_archival_cursor( - user_id=user_id, - agent_id=agent_id, - reverse=False, - after=cursor1, - order_by="text", - ) - cursor2 = passages_2[-1].id - passages_3 = server.get_agent_archival_cursor( - user_id=user_id, - agent_id=agent_id, - reverse=False, - before=cursor2, - limit=1000, - order_by="text", - ) - passages_3[-1].id - # assert passages_1[0].text == "Cinderella wore a blue dress" - assert len(passages_2) in [3, 4] # NOTE: exact size seems non-deterministic, so loosen test - assert len(passages_3) in [4, 5] # NOTE: exact size seems non-deterministic, so loosen test - - # test archival memory - passage_1 = server.get_agent_archival(user_id=user_id, agent_id=agent_id, start=0, count=1) - assert len(passage_1) == 1 - passage_2 = server.get_agent_archival(user_id=user_id, agent_id=agent_id, start=1, count=1000) - assert len(passage_2) in [4, 5] # NOTE: exact size seems non-deterministic, so loosen test - # test safe empty return - passage_none = server.get_agent_archival(user_id=user_id, agent_id=agent_id, start=1000, count=1000) - assert len(passage_none) == 0 +# TODO: Out-of-date test. pagination commands are off +# @pytest.mark.order(6) +# def test_get_archival_memory(server, user_id, agent_id): +# # test archival memory cursor pagination +# passages_1 = server.get_agent_archival_cursor(user_id=user_id, agent_id=agent_id, reverse=False, limit=2, order_by="text") +# assert len(passages_1) == 2, f"Returned {[p.text for p in passages_1]}, not equal to 2" +# cursor1 = passages_1[-1].id +# passages_2 = server.get_agent_archival_cursor( +# user_id=user_id, +# agent_id=agent_id, +# reverse=False, +# after=cursor1, +# order_by="text", +# ) +# cursor2 = passages_2[-1].id +# passages_3 = server.get_agent_archival_cursor( +# user_id=user_id, +# agent_id=agent_id, +# reverse=False, +# before=cursor2, +# limit=1000, +# order_by="text", +# ) +# passages_3[-1].id +# # assert passages_1[0].text == "Cinderella wore a blue dress" +# assert len(passages_2) in [3, 4] # NOTE: exact size seems non-deterministic, so loosen test +# assert len(passages_3) in [4, 5] # NOTE: exact size seems non-deterministic, so loosen test + +# # test archival memory +# passage_1 = server.get_agent_archival(user_id=user_id, agent_id=agent_id, start=0, count=1) +# assert len(passage_1) == 1 +# passage_2 = server.get_agent_archival(user_id=user_id, agent_id=agent_id, start=1, count=1000) +# assert len(passage_2) in [4, 5] # NOTE: exact size seems non-deterministic, so loosen test +# # test safe empty return +# passage_none = server.get_agent_archival(user_id=user_id, agent_id=agent_id, start=1000, count=1000) +# assert len(passage_none) == 0 def test_agent_rethink_rewrite_retry(server, user_id, agent_id): diff --git a/tests/test_vector_embeddings.py b/tests/test_vector_embeddings.py new file mode 100644 index 0000000000..0ad25071ab --- /dev/null +++ b/tests/test_vector_embeddings.py @@ -0,0 +1,42 @@ +import numpy as np +import sqlite3 +import base64 +from numpy.testing import assert_array_almost_equal + +import pytest + +from letta.orm.sqlalchemy_base import adapt_array, convert_array +from letta.orm.sqlite_functions import verify_embedding_dimension + +def test_vector_conversions(): + """Test the vector conversion functions""" + # Create test data + original = np.random.random(4096).astype(np.float32) + print(f"Original shape: {original.shape}") + + # Test full conversion cycle + encoded = adapt_array(original) + print(f"Encoded type: {type(encoded)}") + print(f"Encoded length: {len(encoded)}") + + decoded = convert_array(encoded) + print(f"Decoded shape: {decoded.shape}") + print(f"Dimension verification: {verify_embedding_dimension(decoded)}") + + # Verify data integrity + np.testing.assert_array_almost_equal(original, decoded) + print("✓ Data integrity verified") + + # Test with a list + list_data = original.tolist() + encoded_list = adapt_array(list_data) + decoded_list = convert_array(encoded_list) + np.testing.assert_array_almost_equal(original, decoded_list) + print("✓ List conversion verified") + + # Test None handling + assert adapt_array(None) is None + assert convert_array(None) is None + print("✓ None handling verified") + +# Run the tests \ No newline at end of file From 470f95a5ee1ae7b3af6d4fc3c9e5305170d92706 Mon Sep 17 00:00:00 2001 From: Sarah Wooders Date: Tue, 10 Dec 2024 18:29:25 -0800 Subject: [PATCH 39/39] fix: cleanup dependencies (#2224) --- poetry.lock | 1058 +------------------------------- pyproject.toml | 3 +- tests/test_websocket_server.py | 55 -- 3 files changed, 7 insertions(+), 1109 deletions(-) delete mode 100644 tests/test_websocket_server.py diff --git a/poetry.lock b/poetry.lock index f0cb082bd8..28ee1fe673 100644 --- a/poetry.lock +++ b/poetry.lock @@ -185,23 +185,6 @@ files = [ {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, ] -[[package]] -name = "asgiref" -version = "3.8.1" -description = "ASGI specs, helper code, and adapters" -optional = false -python-versions = ">=3.8" -files = [ - {file = "asgiref-3.8.1-py3-none-any.whl", hash = "sha256:3e1e3ecc849832fe52ccf2cb6686b7a55f82bb1d6aee72a58826471390335e47"}, - {file = "asgiref-3.8.1.tar.gz", hash = "sha256:c343bd80a0bec947a9860adb4c432ffa7db769836c64238fc34bdc3fec84d590"}, -] - -[package.dependencies] -typing-extensions = {version = ">=4", markers = "python_version < \"3.11\""} - -[package.extras] -tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"] - [[package]] name = "asn1crypto" version = "1.5.1" @@ -273,17 +256,6 @@ files = [ pyflakes = ">=3.0.0" tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} -[[package]] -name = "backoff" -version = "2.2.1" -description = "Function decoration for backoff and retry" -optional = false -python-versions = ">=3.7,<4.0" -files = [ - {file = "backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8"}, - {file = "backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba"}, -] - [[package]] name = "bcrypt" version = "4.2.1" @@ -494,42 +466,6 @@ files = [ {file = "Brotli-1.1.0.tar.gz", hash = "sha256:81de08ac11bcb85841e440c13611c00b67d3bf82698314928d0b676362546724"}, ] -[[package]] -name = "build" -version = "1.2.2.post1" -description = "A simple, correct Python build frontend" -optional = false -python-versions = ">=3.8" -files = [ - {file = "build-1.2.2.post1-py3-none-any.whl", hash = "sha256:1d61c0887fa860c01971625baae8bdd338e517b836a2f70dd1f7aa3a6b2fc5b5"}, - {file = "build-1.2.2.post1.tar.gz", hash = "sha256:b36993e92ca9375a219c99e606a122ff365a760a2d4bba0caa09bd5278b608b7"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "os_name == \"nt\""} -importlib-metadata = {version = ">=4.6", markers = "python_full_version < \"3.10.2\""} -packaging = ">=19.1" -pyproject_hooks = "*" -tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} - -[package.extras] -docs = ["furo (>=2023.08.17)", "sphinx (>=7.0,<8.0)", "sphinx-argparse-cli (>=1.5)", "sphinx-autodoc-typehints (>=1.10)", "sphinx-issues (>=3.0.0)"] -test = ["build[uv,virtualenv]", "filelock (>=3)", "pytest (>=6.2.4)", "pytest-cov (>=2.12)", "pytest-mock (>=2)", "pytest-rerunfailures (>=9.1)", "pytest-xdist (>=1.34)", "setuptools (>=42.0.0)", "setuptools (>=56.0.0)", "setuptools (>=56.0.0)", "setuptools (>=67.8.0)", "wheel (>=0.36.0)"] -typing = ["build[uv]", "importlib-metadata (>=5.1)", "mypy (>=1.9.0,<1.10.0)", "tomli", "typing-extensions (>=3.7.4.3)"] -uv = ["uv (>=0.1.18)"] -virtualenv = ["virtualenv (>=20.0.35)"] - -[[package]] -name = "cachetools" -version = "5.5.0" -description = "Extensible memoizing collections and decorators" -optional = false -python-versions = ">=3.7" -files = [ - {file = "cachetools-5.5.0-py3-none-any.whl", hash = "sha256:02134e8439cdc2ffb62023ce1debca2944c3f289d66bb17ead3ab3dede74b292"}, - {file = "cachetools-5.5.0.tar.gz", hash = "sha256:2cc24fb4cbe39633fb7badd9db9ca6295d766d9c2995f245725a46715d050f2a"}, -] - [[package]] name = "certifi" version = "2024.8.30" @@ -745,84 +681,6 @@ files = [ {file = "charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e"}, ] -[[package]] -name = "chroma-hnswlib" -version = "0.7.3" -description = "Chromas fork of hnswlib" -optional = false -python-versions = "*" -files = [ - {file = "chroma-hnswlib-0.7.3.tar.gz", hash = "sha256:b6137bedde49fffda6af93b0297fe00429fc61e5a072b1ed9377f909ed95a932"}, - {file = "chroma_hnswlib-0.7.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:59d6a7c6f863c67aeb23e79a64001d537060b6995c3eca9a06e349ff7b0998ca"}, - {file = "chroma_hnswlib-0.7.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d71a3f4f232f537b6152947006bd32bc1629a8686df22fd97777b70f416c127a"}, - {file = "chroma_hnswlib-0.7.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c92dc1ebe062188e53970ba13f6b07e0ae32e64c9770eb7f7ffa83f149d4210"}, - {file = "chroma_hnswlib-0.7.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49da700a6656fed8753f68d44b8cc8ae46efc99fc8a22a6d970dc1697f49b403"}, - {file = "chroma_hnswlib-0.7.3-cp310-cp310-win_amd64.whl", hash = "sha256:108bc4c293d819b56476d8f7865803cb03afd6ca128a2a04d678fffc139af029"}, - {file = "chroma_hnswlib-0.7.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:11e7ca93fb8192214ac2b9c0943641ac0daf8f9d4591bb7b73be808a83835667"}, - {file = "chroma_hnswlib-0.7.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6f552e4d23edc06cdeb553cdc757d2fe190cdeb10d43093d6a3319f8d4bf1c6b"}, - {file = "chroma_hnswlib-0.7.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f96f4d5699e486eb1fb95849fe35ab79ab0901265805be7e60f4eaa83ce263ec"}, - {file = "chroma_hnswlib-0.7.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:368e57fe9ebae05ee5844840fa588028a023d1182b0cfdb1d13f607c9ea05756"}, - {file = "chroma_hnswlib-0.7.3-cp311-cp311-win_amd64.whl", hash = "sha256:b7dca27b8896b494456db0fd705b689ac6b73af78e186eb6a42fea2de4f71c6f"}, - {file = "chroma_hnswlib-0.7.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:70f897dc6218afa1d99f43a9ad5eb82f392df31f57ff514ccf4eeadecd62f544"}, - {file = "chroma_hnswlib-0.7.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5aef10b4952708f5a1381c124a29aead0c356f8d7d6e0b520b778aaa62a356f4"}, - {file = "chroma_hnswlib-0.7.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ee2d8d1529fca3898d512079144ec3e28a81d9c17e15e0ea4665697a7923253"}, - {file = "chroma_hnswlib-0.7.3-cp37-cp37m-win_amd64.whl", hash = "sha256:a4021a70e898783cd6f26e00008b494c6249a7babe8774e90ce4766dd288c8ba"}, - {file = "chroma_hnswlib-0.7.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a8f61fa1d417fda848e3ba06c07671f14806a2585272b175ba47501b066fe6b1"}, - {file = "chroma_hnswlib-0.7.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d7563be58bc98e8f0866907368e22ae218d6060601b79c42f59af4eccbbd2e0a"}, - {file = "chroma_hnswlib-0.7.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:51b8d411486ee70d7b66ec08cc8b9b6620116b650df9c19076d2d8b6ce2ae914"}, - {file = "chroma_hnswlib-0.7.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d706782b628e4f43f1b8a81e9120ac486837fbd9bcb8ced70fe0d9b95c72d77"}, - {file = "chroma_hnswlib-0.7.3-cp38-cp38-win_amd64.whl", hash = "sha256:54f053dedc0e3ba657f05fec6e73dd541bc5db5b09aa8bc146466ffb734bdc86"}, - {file = "chroma_hnswlib-0.7.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e607c5a71c610a73167a517062d302c0827ccdd6e259af6e4869a5c1306ffb5d"}, - {file = "chroma_hnswlib-0.7.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c2358a795870156af6761890f9eb5ca8cade57eb10c5f046fe94dae1faa04b9e"}, - {file = "chroma_hnswlib-0.7.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7cea425df2e6b8a5e201fff0d922a1cc1d165b3cfe762b1408075723c8892218"}, - {file = "chroma_hnswlib-0.7.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:454df3dd3e97aa784fba7cf888ad191e0087eef0fd8c70daf28b753b3b591170"}, - {file = "chroma_hnswlib-0.7.3-cp39-cp39-win_amd64.whl", hash = "sha256:df587d15007ca701c6de0ee7d5585dd5e976b7edd2b30ac72bc376b3c3f85882"}, -] - -[package.dependencies] -numpy = "*" - -[[package]] -name = "chromadb" -version = "0.4.24" -description = "Chroma." -optional = false -python-versions = ">=3.8" -files = [ - {file = "chromadb-0.4.24-py3-none-any.whl", hash = "sha256:3a08e237a4ad28b5d176685bd22429a03717fe09d35022fb230d516108da01da"}, - {file = "chromadb-0.4.24.tar.gz", hash = "sha256:a5c80b4e4ad9b236ed2d4899a5b9e8002b489293f2881cb2cadab5b199ee1c72"}, -] - -[package.dependencies] -bcrypt = ">=4.0.1" -build = ">=1.0.3" -chroma-hnswlib = "0.7.3" -fastapi = ">=0.95.2" -grpcio = ">=1.58.0" -importlib-resources = "*" -kubernetes = ">=28.1.0" -mmh3 = ">=4.0.1" -numpy = ">=1.22.5" -onnxruntime = ">=1.14.1" -opentelemetry-api = ">=1.2.0" -opentelemetry-exporter-otlp-proto-grpc = ">=1.2.0" -opentelemetry-instrumentation-fastapi = ">=0.41b0" -opentelemetry-sdk = ">=1.2.0" -orjson = ">=3.9.12" -overrides = ">=7.3.1" -posthog = ">=2.4.0" -pulsar-client = ">=3.1.0" -pydantic = ">=1.9" -pypika = ">=0.48.9" -PyYAML = ">=6.0.0" -requests = ">=2.28" -tenacity = ">=8.2.3" -tokenizers = ">=0.13.2" -tqdm = ">=4.65.0" -typer = ">=0.9.0" -typing-extensions = ">=4.5.0" -uvicorn = {version = ">=0.18.3", extras = ["standard"]} - [[package]] name = "click" version = "8.1.7" @@ -848,23 +706,6 @@ files = [ {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] -[[package]] -name = "coloredlogs" -version = "15.0.1" -description = "Colored terminal output for Python's logging module" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "coloredlogs-15.0.1-py2.py3-none-any.whl", hash = "sha256:612ee75c546f53e92e70049c9dbfcc18c935a2b9a53b66085ce9ef6a6e5c0934"}, - {file = "coloredlogs-15.0.1.tar.gz", hash = "sha256:7c991aa71a4577af2f82600d8f8f3a89f936baeaf9b50a9c197da014e5bf16b0"}, -] - -[package.dependencies] -humanfriendly = ">=9.1" - -[package.extras] -cron = ["capturer (>=2.4)"] - [[package]] name = "comm" version = "0.2.2" @@ -1236,17 +1077,6 @@ files = [ {file = "docx2txt-0.8.tar.gz", hash = "sha256:2c06d98d7cfe2d3947e5760a57d924e3ff07745b379c8737723922e7009236e5"}, ] -[[package]] -name = "durationpy" -version = "0.9" -description = "Module for converting between datetime.timedelta and Go's Duration strings." -optional = false -python-versions = "*" -files = [ - {file = "durationpy-0.9-py3-none-any.whl", hash = "sha256:e65359a7af5cedad07fb77a2dd3f390f8eb0b74cb845589fa6c057086834dd38"}, - {file = "durationpy-0.9.tar.gz", hash = "sha256:fd3feb0a69a0057d582ef643c355c40d2fa1c942191f914d12203b1a01ac722a"}, -] - [[package]] name = "e2b" version = "1.0.5" @@ -1356,7 +1186,7 @@ all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)" name = "filelock" version = "3.16.1" description = "A platform independent file lock." -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0"}, @@ -1467,17 +1297,6 @@ files = [ Flask = ">=1.0.4" Werkzeug = ">=1.0.1" -[[package]] -name = "flatbuffers" -version = "24.3.25" -description = "The FlatBuffers serialization format for Python" -optional = false -python-versions = "*" -files = [ - {file = "flatbuffers-24.3.25-py2.py3-none-any.whl", hash = "sha256:8dbdec58f935f3765e4f7f3cf635ac3a77f83568138d6a2311f524ec96364812"}, - {file = "flatbuffers-24.3.25.tar.gz", hash = "sha256:de2ec5b203f21441716617f38443e0a8ebf3d25bf0d9c0bb0ce68fa00ad546a4"}, -] - [[package]] name = "frozenlist" version = "1.5.0" @@ -1779,46 +1598,6 @@ benchmarks = ["httplib2", "httpx", "requests", "urllib3"] dev = ["dpkt", "pytest", "requests"] examples = ["oauth2"] -[[package]] -name = "google-auth" -version = "2.36.0" -description = "Google Authentication Library" -optional = false -python-versions = ">=3.7" -files = [ - {file = "google_auth-2.36.0-py2.py3-none-any.whl", hash = "sha256:51a15d47028b66fd36e5c64a82d2d57480075bccc7da37cde257fc94177a61fb"}, - {file = "google_auth-2.36.0.tar.gz", hash = "sha256:545e9618f2df0bcbb7dcbc45a546485b1212624716975a1ea5ae8149ce769ab1"}, -] - -[package.dependencies] -cachetools = ">=2.0.0,<6.0" -pyasn1-modules = ">=0.2.1" -rsa = ">=3.1.4,<5" - -[package.extras] -aiohttp = ["aiohttp (>=3.6.2,<4.0.0.dev0)", "requests (>=2.20.0,<3.0.0.dev0)"] -enterprise-cert = ["cryptography", "pyopenssl"] -pyopenssl = ["cryptography (>=38.0.3)", "pyopenssl (>=20.0.0)"] -reauth = ["pyu2f (>=0.1.5)"] -requests = ["requests (>=2.20.0,<3.0.0.dev0)"] - -[[package]] -name = "googleapis-common-protos" -version = "1.66.0" -description = "Common protobufs used in Google APIs" -optional = false -python-versions = ">=3.7" -files = [ - {file = "googleapis_common_protos-1.66.0-py2.py3-none-any.whl", hash = "sha256:d7abcd75fabb2e0ec9f74466401f6c119a0b498e27370e9be4c94cb7e382b8ed"}, - {file = "googleapis_common_protos-1.66.0.tar.gz", hash = "sha256:c3e7b33d15fdca5374cc0a7346dd92ffa847425cc4ea941d970f13680052ec8c"}, -] - -[package.dependencies] -protobuf = ">=3.20.2,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<6.0.0.dev0" - -[package.extras] -grpc = ["grpcio (>=1.44.0,<2.0.0.dev0)"] - [[package]] name = "greenlet" version = "3.1.1" @@ -1909,7 +1688,7 @@ test = ["objgraph", "psutil"] name = "grpcio" version = "1.63.0" description = "HTTP/2-based RPC framework" -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "grpcio-1.63.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:2e93aca840c29d4ab5db93f94ed0a0ca899e241f2e8aec6334ab3575dc46125c"}, @@ -2094,61 +1873,6 @@ http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] trio = ["trio (>=0.22.0,<1.0)"] -[[package]] -name = "httptools" -version = "0.6.4" -description = "A collection of framework independent HTTP protocol utils." -optional = false -python-versions = ">=3.8.0" -files = [ - {file = "httptools-0.6.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3c73ce323711a6ffb0d247dcd5a550b8babf0f757e86a52558fe5b86d6fefcc0"}, - {file = "httptools-0.6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:345c288418f0944a6fe67be8e6afa9262b18c7626c3ef3c28adc5eabc06a68da"}, - {file = "httptools-0.6.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:deee0e3343f98ee8047e9f4c5bc7cedbf69f5734454a94c38ee829fb2d5fa3c1"}, - {file = "httptools-0.6.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca80b7485c76f768a3bc83ea58373f8db7b015551117375e4918e2aa77ea9b50"}, - {file = "httptools-0.6.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:90d96a385fa941283ebd231464045187a31ad932ebfa541be8edf5b3c2328959"}, - {file = "httptools-0.6.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:59e724f8b332319e2875efd360e61ac07f33b492889284a3e05e6d13746876f4"}, - {file = "httptools-0.6.4-cp310-cp310-win_amd64.whl", hash = "sha256:c26f313951f6e26147833fc923f78f95604bbec812a43e5ee37f26dc9e5a686c"}, - {file = "httptools-0.6.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f47f8ed67cc0ff862b84a1189831d1d33c963fb3ce1ee0c65d3b0cbe7b711069"}, - {file = "httptools-0.6.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0614154d5454c21b6410fdf5262b4a3ddb0f53f1e1721cfd59d55f32138c578a"}, - {file = "httptools-0.6.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8787367fbdfccae38e35abf7641dafc5310310a5987b689f4c32cc8cc3ee975"}, - {file = "httptools-0.6.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40b0f7fe4fd38e6a507bdb751db0379df1e99120c65fbdc8ee6c1d044897a636"}, - {file = "httptools-0.6.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:40a5ec98d3f49904b9fe36827dcf1aadfef3b89e2bd05b0e35e94f97c2b14721"}, - {file = "httptools-0.6.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:dacdd3d10ea1b4ca9df97a0a303cbacafc04b5cd375fa98732678151643d4988"}, - {file = "httptools-0.6.4-cp311-cp311-win_amd64.whl", hash = "sha256:288cd628406cc53f9a541cfaf06041b4c71d751856bab45e3702191f931ccd17"}, - {file = "httptools-0.6.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:df017d6c780287d5c80601dafa31f17bddb170232d85c066604d8558683711a2"}, - {file = "httptools-0.6.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:85071a1e8c2d051b507161f6c3e26155b5c790e4e28d7f236422dbacc2a9cc44"}, - {file = "httptools-0.6.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69422b7f458c5af875922cdb5bd586cc1f1033295aa9ff63ee196a87519ac8e1"}, - {file = "httptools-0.6.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16e603a3bff50db08cd578d54f07032ca1631450ceb972c2f834c2b860c28ea2"}, - {file = "httptools-0.6.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ec4f178901fa1834d4a060320d2f3abc5c9e39766953d038f1458cb885f47e81"}, - {file = "httptools-0.6.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f9eb89ecf8b290f2e293325c646a211ff1c2493222798bb80a530c5e7502494f"}, - {file = "httptools-0.6.4-cp312-cp312-win_amd64.whl", hash = "sha256:db78cb9ca56b59b016e64b6031eda5653be0589dba2b1b43453f6e8b405a0970"}, - {file = "httptools-0.6.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ade273d7e767d5fae13fa637f4d53b6e961fb7fd93c7797562663f0171c26660"}, - {file = "httptools-0.6.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:856f4bc0478ae143bad54a4242fccb1f3f86a6e1be5548fecfd4102061b3a083"}, - {file = "httptools-0.6.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:322d20ea9cdd1fa98bd6a74b77e2ec5b818abdc3d36695ab402a0de8ef2865a3"}, - {file = "httptools-0.6.4-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d87b29bd4486c0093fc64dea80231f7c7f7eb4dc70ae394d70a495ab8436071"}, - {file = "httptools-0.6.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:342dd6946aa6bda4b8f18c734576106b8a31f2fe31492881a9a160ec84ff4bd5"}, - {file = "httptools-0.6.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b36913ba52008249223042dca46e69967985fb4051951f94357ea681e1f5dc0"}, - {file = "httptools-0.6.4-cp313-cp313-win_amd64.whl", hash = "sha256:28908df1b9bb8187393d5b5db91435ccc9c8e891657f9cbb42a2541b44c82fc8"}, - {file = "httptools-0.6.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:d3f0d369e7ffbe59c4b6116a44d6a8eb4783aae027f2c0b366cf0aa964185dba"}, - {file = "httptools-0.6.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:94978a49b8f4569ad607cd4946b759d90b285e39c0d4640c6b36ca7a3ddf2efc"}, - {file = "httptools-0.6.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40dc6a8e399e15ea525305a2ddba998b0af5caa2566bcd79dcbe8948181eeaff"}, - {file = "httptools-0.6.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab9ba8dcf59de5181f6be44a77458e45a578fc99c31510b8c65b7d5acc3cf490"}, - {file = "httptools-0.6.4-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:fc411e1c0a7dcd2f902c7c48cf079947a7e65b5485dea9decb82b9105ca71a43"}, - {file = "httptools-0.6.4-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:d54efd20338ac52ba31e7da78e4a72570cf729fac82bc31ff9199bedf1dc7440"}, - {file = "httptools-0.6.4-cp38-cp38-win_amd64.whl", hash = "sha256:df959752a0c2748a65ab5387d08287abf6779ae9165916fe053e68ae1fbdc47f"}, - {file = "httptools-0.6.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:85797e37e8eeaa5439d33e556662cc370e474445d5fab24dcadc65a8ffb04003"}, - {file = "httptools-0.6.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:db353d22843cf1028f43c3651581e4bb49374d85692a85f95f7b9a130e1b2cab"}, - {file = "httptools-0.6.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1ffd262a73d7c28424252381a5b854c19d9de5f56f075445d33919a637e3547"}, - {file = "httptools-0.6.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:703c346571fa50d2e9856a37d7cd9435a25e7fd15e236c397bf224afaa355fe9"}, - {file = "httptools-0.6.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:aafe0f1918ed07b67c1e838f950b1c1fabc683030477e60b335649b8020e1076"}, - {file = "httptools-0.6.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0e563e54979e97b6d13f1bbc05a96109923e76b901f786a5eae36e99c01237bd"}, - {file = "httptools-0.6.4-cp39-cp39-win_amd64.whl", hash = "sha256:b799de31416ecc589ad79dd85a0b2657a8fe39327944998dea368c1d4c9e55e6"}, - {file = "httptools-0.6.4.tar.gz", hash = "sha256:4e93eee4add6493b59a5c514da98c939b244fce4a0d8879cd3f466562f4b7d5c"}, -] - -[package.extras] -test = ["Cython (>=0.29.24)"] - [[package]] name = "httpx" version = "0.27.2" @@ -2190,7 +1914,7 @@ files = [ name = "huggingface-hub" version = "0.26.5" description = "Client library to download and publish models, datasets and other repos on the huggingface.co hub" -optional = false +optional = true python-versions = ">=3.8.0" files = [ {file = "huggingface_hub-0.26.5-py3-none-any.whl", hash = "sha256:fb7386090bbe892072e64b85f7c4479fd2d65eea5f2543327c970d5169e83924"}, @@ -2220,20 +1944,6 @@ testing = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "fastapi", "gr torch = ["safetensors[torch]", "torch"] typing = ["types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)"] -[[package]] -name = "humanfriendly" -version = "10.0" -description = "Human friendly output for text interfaces using Python" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "humanfriendly-10.0-py2.py3-none-any.whl", hash = "sha256:1697e1a8a8f550fd43c2865cd84542fc175a61dcb779b6fee18cf6b6ccba1477"}, - {file = "humanfriendly-10.0.tar.gz", hash = "sha256:6b0b831ce8f15f7300721aa49829fc4e83921a9a301cc7f606be6686a2288ddc"}, -] - -[package.dependencies] -pyreadline3 = {version = "*", markers = "sys_platform == \"win32\" and python_version >= \"3.8\""} - [[package]] name = "hyperframe" version = "6.0.1" @@ -2296,25 +2006,6 @@ perf = ["ipython"] test = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] type = ["pytest-mypy"] -[[package]] -name = "importlib-resources" -version = "6.4.5" -description = "Read resources from Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "importlib_resources-6.4.5-py3-none-any.whl", hash = "sha256:ac29d5f956f01d5e4bb63102a5a19957f1b9175e45649977264a1416783bb717"}, - {file = "importlib_resources-6.4.5.tar.gz", hash = "sha256:980862a1d16c9e147a59603677fa2aa5fd82b87f223b6cb870695bcfce830065"}, -] - -[package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] -cover = ["pytest-cov"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -enabler = ["pytest-enabler (>=2.2)"] -test = ["jaraco.test (>=5.4)", "pytest (>=6,!=8.1.*)", "zipp (>=3.17)"] -type = ["pytest-mypy"] - [[package]] name = "inflection" version = "0.5.1" @@ -2692,33 +2383,6 @@ traitlets = ">=5.3" docs = ["myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"] test = ["ipykernel", "pre-commit", "pytest (<8)", "pytest-cov", "pytest-timeout"] -[[package]] -name = "kubernetes" -version = "31.0.0" -description = "Kubernetes python client" -optional = false -python-versions = ">=3.6" -files = [ - {file = "kubernetes-31.0.0-py2.py3-none-any.whl", hash = "sha256:bf141e2d380c8520eada8b351f4e319ffee9636328c137aa432bc486ca1200e1"}, - {file = "kubernetes-31.0.0.tar.gz", hash = "sha256:28945de906c8c259c1ebe62703b56a03b714049372196f854105afe4e6d014c0"}, -] - -[package.dependencies] -certifi = ">=14.05.14" -durationpy = ">=0.7" -google-auth = ">=1.0.1" -oauthlib = ">=3.2.2" -python-dateutil = ">=2.5.3" -pyyaml = ">=5.4.1" -requests = "*" -requests-oauthlib = "*" -six = ">=1.9.0" -urllib3 = ">=1.24.2" -websocket-client = ">=0.32.0,<0.40.0 || >0.40.0,<0.41.dev0 || >=0.43.dev0" - -[package.extras] -adal = ["adal (>=1.0.2)"] - [[package]] name = "langchain" version = "0.3.10" @@ -3377,147 +3041,6 @@ files = [ [package.dependencies] tqdm = "*" -[[package]] -name = "mmh3" -version = "5.0.1" -description = "Python extension for MurmurHash (MurmurHash3), a set of fast and robust hash functions." -optional = false -python-versions = ">=3.8" -files = [ - {file = "mmh3-5.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f0a4b4bf05778ed77d820d6e7d0e9bd6beb0c01af10e1ce9233f5d2f814fcafa"}, - {file = "mmh3-5.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ac7a391039aeab95810c2d020b69a94eb6b4b37d4e2374831e92db3a0cdf71c6"}, - {file = "mmh3-5.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3a2583b5521ca49756d8d8bceba80627a9cc295f255dcab4e3df7ccc2f09679a"}, - {file = "mmh3-5.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:081a8423fe53c1ac94f87165f3e4c500125d343410c1a0c5f1703e898a3ef038"}, - {file = "mmh3-5.0.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8b4d72713799755dc8954a7d36d5c20a6c8de7b233c82404d122c7c7c1707cc"}, - {file = "mmh3-5.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:389a6fd51efc76d3182d36ec306448559c1244f11227d2bb771bdd0e6cc91321"}, - {file = "mmh3-5.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:39f4128edaa074bff721b1d31a72508cba4d2887ee7867f22082e1fe9d4edea0"}, - {file = "mmh3-5.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d5d23a94d91aabba3386b3769048d5f4210fdfef80393fece2f34ba5a7b466c"}, - {file = "mmh3-5.0.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:16347d038361f8b8f24fd2b7ef378c9b68ddee9f7706e46269b6e0d322814713"}, - {file = "mmh3-5.0.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:6e299408565af7d61f2d20a5ffdd77cf2ed902460fe4e6726839d59ba4b72316"}, - {file = "mmh3-5.0.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:42050af21ddfc5445ee5a66e73a8fc758c71790305e3ee9e4a85a8e69e810f94"}, - {file = "mmh3-5.0.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2ae9b1f5ef27ec54659920f0404b7ceb39966e28867c461bfe83a05e8d18ddb0"}, - {file = "mmh3-5.0.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:50c2495a02045f3047d71d4ae9cdd7a15efc0bcbb7ff17a18346834a8e2d1d19"}, - {file = "mmh3-5.0.1-cp310-cp310-win32.whl", hash = "sha256:c028fa77cddf351ca13b4a56d43c1775652cde0764cadb39120b68f02a23ecf6"}, - {file = "mmh3-5.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:c5e741e421ec14400c4aae30890515c201f518403bdef29ae1e00d375bb4bbb5"}, - {file = "mmh3-5.0.1-cp310-cp310-win_arm64.whl", hash = "sha256:b17156d56fabc73dbf41bca677ceb6faed435cc8544f6566d72ea77d8a17e9d0"}, - {file = "mmh3-5.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9a6d5a9b1b923f1643559ba1fc0bf7a5076c90cbb558878d3bf3641ce458f25d"}, - {file = "mmh3-5.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3349b968be555f7334bbcce839da98f50e1e80b1c615d8e2aa847ea4a964a012"}, - {file = "mmh3-5.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1bd3c94b110e55db02ab9b605029f48a2f7f677c6e58c09d44e42402d438b7e1"}, - {file = "mmh3-5.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d47ba84d48608f79adbb10bb09986b6dc33eeda5c2d1bd75d00820081b73bde9"}, - {file = "mmh3-5.0.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c0217987a8b8525c8d9170f66d036dec4ab45cfbd53d47e8d76125791ceb155e"}, - {file = "mmh3-5.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2797063a34e78d1b61639a98b0edec1c856fa86ab80c7ec859f1796d10ba429"}, - {file = "mmh3-5.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8bba16340adcbd47853a2fbe5afdb397549e8f2e79324ff1dced69a3f8afe7c3"}, - {file = "mmh3-5.0.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:282797957c9f60b51b9d768a602c25f579420cc9af46feb77d457a27823d270a"}, - {file = "mmh3-5.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e4fb670c29e63f954f9e7a2cdcd57b36a854c2538f579ef62681ccbaa1de2b69"}, - {file = "mmh3-5.0.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ee7d85438dc6aff328e19ab052086a3c29e8a9b632998a49e5c4b0034e9e8d6"}, - {file = "mmh3-5.0.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:b7fb5db231f3092444bc13901e6a8d299667126b00636ffbad4a7b45e1051e2f"}, - {file = "mmh3-5.0.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:c100dd441703da5ec136b1d9003ed4a041d8a1136234c9acd887499796df6ad8"}, - {file = "mmh3-5.0.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:71f3b765138260fd7a7a2dba0ea5727dabcd18c1f80323c9cfef97a7e86e01d0"}, - {file = "mmh3-5.0.1-cp311-cp311-win32.whl", hash = "sha256:9a76518336247fd17689ce3ae5b16883fd86a490947d46a0193d47fb913e26e3"}, - {file = "mmh3-5.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:336bc4df2e44271f1c302d289cc3d78bd52d3eed8d306c7e4bff8361a12bf148"}, - {file = "mmh3-5.0.1-cp311-cp311-win_arm64.whl", hash = "sha256:af6522722fbbc5999aa66f7244d0986767a46f1fb05accc5200f75b72428a508"}, - {file = "mmh3-5.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f2730bb263ed9c388e8860438b057a53e3cc701134a6ea140f90443c4c11aa40"}, - {file = "mmh3-5.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6246927bc293f6d56724536400b85fb85f5be26101fa77d5f97dd5e2a4c69bf2"}, - {file = "mmh3-5.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fbca322519a6e6e25b6abf43e940e1667cf8ea12510e07fb4919b48a0cd1c411"}, - {file = "mmh3-5.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eae8c19903ed8a1724ad9e67e86f15d198a7a1271a4f9be83d47e38f312ed672"}, - {file = "mmh3-5.0.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a09fd6cc72c07c0c07c3357714234b646d78052487c4a3bd5f7f6e08408cff60"}, - {file = "mmh3-5.0.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2ff8551fee7ae3b11c5d986b6347ade0dccaadd4670ffdb2b944dee120ffcc84"}, - {file = "mmh3-5.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e39694c73a5a20c8bf36dfd8676ed351e5234d55751ba4f7562d85449b21ef3f"}, - {file = "mmh3-5.0.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eba6001989a92f72a89c7cf382fda831678bd780707a66b4f8ca90239fdf2123"}, - {file = "mmh3-5.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0771f90c9911811cc606a5c7b7b58f33501c9ee896ed68a6ac22c7d55878ecc0"}, - {file = "mmh3-5.0.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:09b31ed0c0c0920363e96641fac4efde65b1ab62b8df86293142f35a254e72b4"}, - {file = "mmh3-5.0.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5cf4a8deda0235312db12075331cb417c4ba163770edfe789bde71d08a24b692"}, - {file = "mmh3-5.0.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:41f7090a95185ef20ac018581a99337f0cbc84a2135171ee3290a9c0d9519585"}, - {file = "mmh3-5.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b97b5b368fb7ff22194ec5854f5b12d8de9ab67a0f304728c7f16e5d12135b76"}, - {file = "mmh3-5.0.1-cp312-cp312-win32.whl", hash = "sha256:842516acf04da546f94fad52db125ee619ccbdcada179da51c326a22c4578cb9"}, - {file = "mmh3-5.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:d963be0dbfd9fca209c17172f6110787ebf78934af25e3694fe2ba40e55c1e2b"}, - {file = "mmh3-5.0.1-cp312-cp312-win_arm64.whl", hash = "sha256:a5da292ceeed8ce8e32b68847261a462d30fd7b478c3f55daae841404f433c15"}, - {file = "mmh3-5.0.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:673e3f1c8d4231d6fb0271484ee34cb7146a6499fc0df80788adb56fd76842da"}, - {file = "mmh3-5.0.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f795a306bd16a52ad578b663462cc8e95500b3925d64118ae63453485d67282b"}, - {file = "mmh3-5.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5ed57a5e28e502a1d60436cc25c76c3a5ba57545f250f2969af231dc1221e0a5"}, - {file = "mmh3-5.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:632c28e7612e909dbb6cbe2fe496201ada4695b7715584005689c5dc038e59ad"}, - {file = "mmh3-5.0.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:53fd6bd525a5985e391c43384672d9d6b317fcb36726447347c7fc75bfed34ec"}, - {file = "mmh3-5.0.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dceacf6b0b961a0e499836af3aa62d60633265607aef551b2a3e3c48cdaa5edd"}, - {file = "mmh3-5.0.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8f0738d478fdfb5d920f6aff5452c78f2c35b0eff72caa2a97dfe38e82f93da2"}, - {file = "mmh3-5.0.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e70285e7391ab88b872e5bef632bad16b9d99a6d3ca0590656a4753d55988af"}, - {file = "mmh3-5.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:27e5fc6360aa6b828546a4318da1a7da6bf6e5474ccb053c3a6aa8ef19ff97bd"}, - {file = "mmh3-5.0.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:7989530c3c1e2c17bf5a0ec2bba09fd19819078ba90beedabb1c3885f5040b0d"}, - {file = "mmh3-5.0.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:cdad7bee649950da7ecd3cbbbd12fb81f1161072ecbdb5acfa0018338c5cb9cf"}, - {file = "mmh3-5.0.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e143b8f184c1bb58cecd85ab4a4fd6dc65a2d71aee74157392c3fddac2a4a331"}, - {file = "mmh3-5.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e5eb12e886f3646dd636f16b76eb23fc0c27e8ff3c1ae73d4391e50ef60b40f6"}, - {file = "mmh3-5.0.1-cp313-cp313-win32.whl", hash = "sha256:16e6dddfa98e1c2d021268e72c78951234186deb4df6630e984ac82df63d0a5d"}, - {file = "mmh3-5.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:d3ffb792d70b8c4a2382af3598dad6ae0c5bd9cee5b7ffcc99aa2f5fd2c1bf70"}, - {file = "mmh3-5.0.1-cp313-cp313-win_arm64.whl", hash = "sha256:122fa9ec148383f9124292962bda745f192b47bfd470b2af5fe7bb3982b17896"}, - {file = "mmh3-5.0.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b12bad8c75e6ff5d67319794fb6a5e8c713826c818d47f850ad08b4aa06960c6"}, - {file = "mmh3-5.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e5bbb066538c1048d542246fc347bb7994bdda29a3aea61c22f9f8b57111ce69"}, - {file = "mmh3-5.0.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:eee6134273f64e2a106827cc8fd77e70cc7239a285006fc6ab4977d59b015af2"}, - {file = "mmh3-5.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d04d9aa19d48e4c7bbec9cabc2c4dccc6ff3b2402f856d5bf0de03e10f167b5b"}, - {file = "mmh3-5.0.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:79f37da1eed034d06567a69a7988456345c7f29e49192831c3975b464493b16e"}, - {file = "mmh3-5.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:242f77666743337aa828a2bf2da71b6ba79623ee7f93edb11e009f69237c8561"}, - {file = "mmh3-5.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffd943fff690463945f6441a2465555b3146deaadf6a5e88f2590d14c655d71b"}, - {file = "mmh3-5.0.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:565b15f8d7df43acb791ff5a360795c20bfa68bca8b352509e0fbabd06cc48cd"}, - {file = "mmh3-5.0.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:fc6aafb867c2030df98ac7760ff76b500359252867985f357bd387739f3d5287"}, - {file = "mmh3-5.0.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:32898170644d45aa27c974ab0d067809c066205110f5c6d09f47d9ece6978bfe"}, - {file = "mmh3-5.0.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:42865567838d2193eb64e0ef571f678bf361a254fcdef0c5c8e73243217829bd"}, - {file = "mmh3-5.0.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:5ff5c1f301c4a8b6916498969c0fcc7e3dbc56b4bfce5cfe3fe31f3f4609e5ae"}, - {file = "mmh3-5.0.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:be74c2dda8a6f44a504450aa2c3507f8067a159201586fc01dd41ab80efc350f"}, - {file = "mmh3-5.0.1-cp38-cp38-win32.whl", hash = "sha256:5610a842621ff76c04b20b29cf5f809b131f241a19d4937971ba77dc99a7f330"}, - {file = "mmh3-5.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:de15739ac50776fe8aa1ef13f1be46a6ee1fbd45f6d0651084097eb2be0a5aa4"}, - {file = "mmh3-5.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:48e84cf3cc7e8c41bc07de72299a73b92d9e3cde51d97851420055b1484995f7"}, - {file = "mmh3-5.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6dd9dc28c2d168c49928195c2e29b96f9582a5d07bd690a28aede4cc07b0e696"}, - {file = "mmh3-5.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2771a1c56a3d4bdad990309cff5d0a8051f29c8ec752d001f97d6392194ae880"}, - {file = "mmh3-5.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5ff2a8322ba40951a84411550352fba1073ce1c1d1213bb7530f09aed7f8caf"}, - {file = "mmh3-5.0.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a16bd3ec90682c9e0a343e6bd4c778c09947c8c5395cdb9e5d9b82b2559efbca"}, - {file = "mmh3-5.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d45733a78d68b5b05ff4a823aea51fa664df1d3bf4929b152ff4fd6dea2dd69b"}, - {file = "mmh3-5.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:904285e83cedebc8873b0838ed54c20f7344120be26e2ca5a907ab007a18a7a0"}, - {file = "mmh3-5.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac4aeb1784e43df728034d0ed72e4b2648db1a69fef48fa58e810e13230ae5ff"}, - {file = "mmh3-5.0.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:cb3d4f751a0b8b4c8d06ef1c085216c8fddcc8b8c8d72445976b5167a40c6d1e"}, - {file = "mmh3-5.0.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:8021851935600e60c42122ed1176399d7692df338d606195cd599d228a04c1c6"}, - {file = "mmh3-5.0.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:6182d5924a5efc451900f864cbb021d7e8ad5d524816ca17304a0f663bc09bb5"}, - {file = "mmh3-5.0.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:5f30b834552a4f79c92e3d266336fb87fd92ce1d36dc6813d3e151035890abbd"}, - {file = "mmh3-5.0.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:cd4383f35e915e06d077df27e04ffd3be7513ec6a9de2d31f430393f67e192a7"}, - {file = "mmh3-5.0.1-cp39-cp39-win32.whl", hash = "sha256:1455fb6b42665a97db8fc66e89a861e52b567bce27ed054c47877183f86ea6e3"}, - {file = "mmh3-5.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:9e26a0f4eb9855a143f5938a53592fa14c2d3b25801c2106886ab6c173982780"}, - {file = "mmh3-5.0.1-cp39-cp39-win_arm64.whl", hash = "sha256:0d0a35a69abdad7549c4030a714bb4ad07902edb3bbe61e1bbc403ded5d678be"}, - {file = "mmh3-5.0.1.tar.gz", hash = "sha256:7dab080061aeb31a6069a181f27c473a1f67933854e36a3464931f2716508896"}, -] - -[package.extras] -benchmark = ["pymmh3 (==0.0.5)", "pyperf (==2.7.0)", "xxhash (==3.5.0)"] -docs = ["myst-parser (==4.0.0)", "shibuya (==2024.8.30)", "sphinx (==8.0.2)", "sphinx-copybutton (==0.5.2)"] -lint = ["black (==24.8.0)", "clang-format (==18.1.8)", "isort (==5.13.2)", "pylint (==3.2.7)"] -plot = ["matplotlib (==3.9.2)", "pandas (==2.2.2)"] -test = ["pytest (==8.3.3)", "pytest-sugar (==1.0.0)"] -type = ["mypy (==1.11.2)"] - -[[package]] -name = "monotonic" -version = "1.6" -description = "An implementation of time.monotonic() for Python 2 & < 3.3" -optional = false -python-versions = "*" -files = [ - {file = "monotonic-1.6-py2.py3-none-any.whl", hash = "sha256:68687e19a14f11f26d140dd5c86f3dba4bf5df58003000ed467e0e2a69bca96c"}, - {file = "monotonic-1.6.tar.gz", hash = "sha256:3a55207bcfed53ddd5c5bae174524062935efed17792e9de2ad0205ce9ad63f7"}, -] - -[[package]] -name = "mpmath" -version = "1.3.0" -description = "Python library for arbitrary-precision floating-point arithmetic" -optional = false -python-versions = "*" -files = [ - {file = "mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c"}, - {file = "mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f"}, -] - -[package.extras] -develop = ["codecov", "pycodestyle", "pytest (>=4.6)", "pytest-cov", "wheel"] -docs = ["sphinx"] -gmpy = ["gmpy2 (>=2.1.0a4)"] -tests = ["pytest (>=4.6)"] - [[package]] name = "msgpack" version = "1.1.0" @@ -3841,22 +3364,6 @@ files = [ {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"}, ] -[[package]] -name = "oauthlib" -version = "3.2.2" -description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic" -optional = false -python-versions = ">=3.6" -files = [ - {file = "oauthlib-3.2.2-py3-none-any.whl", hash = "sha256:8139f29aac13e25d502680e9e19963e83f16838d48a0d71c287fe40e7067fbca"}, - {file = "oauthlib-3.2.2.tar.gz", hash = "sha256:9859c40929662bec5d64f34d01c99e093149682a3f38915dc0655d5a633dd918"}, -] - -[package.extras] -rsa = ["cryptography (>=3.0.0)"] -signals = ["blinker (>=1.4.0)"] -signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"] - [[package]] name = "ollama" version = "0.3.3" @@ -3871,44 +3378,6 @@ files = [ [package.dependencies] httpx = ">=0.27.0,<0.28.0" -[[package]] -name = "onnxruntime" -version = "1.20.1" -description = "ONNX Runtime is a runtime accelerator for Machine Learning models" -optional = false -python-versions = "*" -files = [ - {file = "onnxruntime-1.20.1-cp310-cp310-macosx_13_0_universal2.whl", hash = "sha256:e50ba5ff7fed4f7d9253a6baf801ca2883cc08491f9d32d78a80da57256a5439"}, - {file = "onnxruntime-1.20.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7b2908b50101a19e99c4d4e97ebb9905561daf61829403061c1adc1b588bc0de"}, - {file = "onnxruntime-1.20.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d82daaec24045a2e87598b8ac2b417b1cce623244e80e663882e9fe1aae86410"}, - {file = "onnxruntime-1.20.1-cp310-cp310-win32.whl", hash = "sha256:4c4b251a725a3b8cf2aab284f7d940c26094ecd9d442f07dd81ab5470e99b83f"}, - {file = "onnxruntime-1.20.1-cp310-cp310-win_amd64.whl", hash = "sha256:d3b616bb53a77a9463707bb313637223380fc327f5064c9a782e8ec69c22e6a2"}, - {file = "onnxruntime-1.20.1-cp311-cp311-macosx_13_0_universal2.whl", hash = "sha256:06bfbf02ca9ab5f28946e0f912a562a5f005301d0c419283dc57b3ed7969bb7b"}, - {file = "onnxruntime-1.20.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f6243e34d74423bdd1edf0ae9596dd61023b260f546ee17d701723915f06a9f7"}, - {file = "onnxruntime-1.20.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5eec64c0269dcdb8d9a9a53dc4d64f87b9e0c19801d9321246a53b7eb5a7d1bc"}, - {file = "onnxruntime-1.20.1-cp311-cp311-win32.whl", hash = "sha256:a19bc6e8c70e2485a1725b3d517a2319603acc14c1f1a017dda0afe6d4665b41"}, - {file = "onnxruntime-1.20.1-cp311-cp311-win_amd64.whl", hash = "sha256:8508887eb1c5f9537a4071768723ec7c30c28eb2518a00d0adcd32c89dea3221"}, - {file = "onnxruntime-1.20.1-cp312-cp312-macosx_13_0_universal2.whl", hash = "sha256:22b0655e2bf4f2161d52706e31f517a0e54939dc393e92577df51808a7edc8c9"}, - {file = "onnxruntime-1.20.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f1f56e898815963d6dc4ee1c35fc6c36506466eff6d16f3cb9848cea4e8c8172"}, - {file = "onnxruntime-1.20.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bb71a814f66517a65628c9e4a2bb530a6edd2cd5d87ffa0af0f6f773a027d99e"}, - {file = "onnxruntime-1.20.1-cp312-cp312-win32.whl", hash = "sha256:bd386cc9ee5f686ee8a75ba74037750aca55183085bf1941da8efcfe12d5b120"}, - {file = "onnxruntime-1.20.1-cp312-cp312-win_amd64.whl", hash = "sha256:19c2d843eb074f385e8bbb753a40df780511061a63f9def1b216bf53860223fb"}, - {file = "onnxruntime-1.20.1-cp313-cp313-macosx_13_0_universal2.whl", hash = "sha256:cc01437a32d0042b606f462245c8bbae269e5442797f6213e36ce61d5abdd8cc"}, - {file = "onnxruntime-1.20.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fb44b08e017a648924dbe91b82d89b0c105b1adcfe31e90d1dc06b8677ad37be"}, - {file = "onnxruntime-1.20.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bda6aebdf7917c1d811f21d41633df00c58aff2bef2f598f69289c1f1dabc4b3"}, - {file = "onnxruntime-1.20.1-cp313-cp313-win_amd64.whl", hash = "sha256:d30367df7e70f1d9fc5a6a68106f5961686d39b54d3221f760085524e8d38e16"}, - {file = "onnxruntime-1.20.1-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c9158465745423b2b5d97ed25aa7740c7d38d2993ee2e5c3bfacb0c4145c49d8"}, - {file = "onnxruntime-1.20.1-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0df6f2df83d61f46e842dbcde610ede27218947c33e994545a22333491e72a3b"}, -] - -[package.dependencies] -coloredlogs = "*" -flatbuffers = "*" -numpy = ">=1.21.6" -packaging = "*" -protobuf = "*" -sympy = "*" - [[package]] name = "openai" version = "1.57.1" @@ -3933,158 +3402,6 @@ typing-extensions = ">=4.11,<5" [package.extras] datalib = ["numpy (>=1)", "pandas (>=1.2.3)", "pandas-stubs (>=1.1.0.11)"] -[[package]] -name = "opentelemetry-api" -version = "1.28.2" -description = "OpenTelemetry Python API" -optional = false -python-versions = ">=3.8" -files = [ - {file = "opentelemetry_api-1.28.2-py3-none-any.whl", hash = "sha256:6fcec89e265beb258fe6b1acaaa3c8c705a934bd977b9f534a2b7c0d2d4275a6"}, - {file = "opentelemetry_api-1.28.2.tar.gz", hash = "sha256:ecdc70c7139f17f9b0cf3742d57d7020e3e8315d6cffcdf1a12a905d45b19cc0"}, -] - -[package.dependencies] -deprecated = ">=1.2.6" -importlib-metadata = ">=6.0,<=8.5.0" - -[[package]] -name = "opentelemetry-exporter-otlp-proto-grpc" -version = "1.15.0" -description = "OpenTelemetry Collector Protobuf over gRPC Exporter" -optional = false -python-versions = ">=3.7" -files = [ - {file = "opentelemetry_exporter_otlp_proto_grpc-1.15.0-py3-none-any.whl", hash = "sha256:c2a5492ba7d140109968135d641d06ce3c5bd73c50665f787526065d57d7fd1d"}, - {file = "opentelemetry_exporter_otlp_proto_grpc-1.15.0.tar.gz", hash = "sha256:844f2a4bb9bcda34e4eb6fe36765e5031aacb36dc60ed88c90fc246942ea26e7"}, -] - -[package.dependencies] -backoff = {version = ">=1.10.0,<3.0.0", markers = "python_version >= \"3.7\""} -googleapis-common-protos = ">=1.52,<2.0" -grpcio = ">=1.0.0,<2.0.0" -opentelemetry-api = ">=1.12,<2.0" -opentelemetry-proto = "1.15.0" -opentelemetry-sdk = ">=1.12,<2.0" - -[package.extras] -test = ["pytest-grpc"] - -[[package]] -name = "opentelemetry-instrumentation" -version = "0.49b2" -description = "Instrumentation Tools & Auto Instrumentation for OpenTelemetry Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "opentelemetry_instrumentation-0.49b2-py3-none-any.whl", hash = "sha256:f6d782b0ef9fef4a4c745298651c65f5c532c34cd4c40d230ab5b9f3b3b4d151"}, - {file = "opentelemetry_instrumentation-0.49b2.tar.gz", hash = "sha256:8cf00cc8d9d479e4b72adb9bd267ec544308c602b7188598db5a687e77b298e2"}, -] - -[package.dependencies] -opentelemetry-api = ">=1.4,<2.0" -opentelemetry-semantic-conventions = "0.49b2" -packaging = ">=18.0" -wrapt = ">=1.0.0,<2.0.0" - -[[package]] -name = "opentelemetry-instrumentation-asgi" -version = "0.49b2" -description = "ASGI instrumentation for OpenTelemetry" -optional = false -python-versions = ">=3.8" -files = [ - {file = "opentelemetry_instrumentation_asgi-0.49b2-py3-none-any.whl", hash = "sha256:c8ede13ed781402458a800411cb7ec16a25386dc21de8e5b9a568b386a1dc5f4"}, - {file = "opentelemetry_instrumentation_asgi-0.49b2.tar.gz", hash = "sha256:2af5faf062878330714efe700127b837038c4d9d3b70b451ab2424d5076d6c1c"}, -] - -[package.dependencies] -asgiref = ">=3.0,<4.0" -opentelemetry-api = ">=1.12,<2.0" -opentelemetry-instrumentation = "0.49b2" -opentelemetry-semantic-conventions = "0.49b2" -opentelemetry-util-http = "0.49b2" - -[package.extras] -instruments = ["asgiref (>=3.0,<4.0)"] - -[[package]] -name = "opentelemetry-instrumentation-fastapi" -version = "0.49b2" -description = "OpenTelemetry FastAPI Instrumentation" -optional = false -python-versions = ">=3.8" -files = [ - {file = "opentelemetry_instrumentation_fastapi-0.49b2-py3-none-any.whl", hash = "sha256:c66331d05bf806d7ca4f9579c1db7383aad31a9f6665dbaa2b7c9a4c1e830892"}, - {file = "opentelemetry_instrumentation_fastapi-0.49b2.tar.gz", hash = "sha256:3aa81ed7acf6aa5236d96e90a1218c5e84a9c0dce8fa63bf34ceee6218354b63"}, -] - -[package.dependencies] -opentelemetry-api = ">=1.12,<2.0" -opentelemetry-instrumentation = "0.49b2" -opentelemetry-instrumentation-asgi = "0.49b2" -opentelemetry-semantic-conventions = "0.49b2" -opentelemetry-util-http = "0.49b2" - -[package.extras] -instruments = ["fastapi (>=0.58,<1.0)"] - -[[package]] -name = "opentelemetry-proto" -version = "1.15.0" -description = "OpenTelemetry Python Proto" -optional = false -python-versions = ">=3.7" -files = [ - {file = "opentelemetry_proto-1.15.0-py3-none-any.whl", hash = "sha256:044b6d044b4d10530f250856f933442b8753a17f94ae37c207607f733fb9a844"}, - {file = "opentelemetry_proto-1.15.0.tar.gz", hash = "sha256:9c4008e40ac8cab359daac283fbe7002c5c29c77ea2674ad5626a249e64e0101"}, -] - -[package.dependencies] -protobuf = ">=3.19,<5.0" - -[[package]] -name = "opentelemetry-sdk" -version = "1.28.2" -description = "OpenTelemetry Python SDK" -optional = false -python-versions = ">=3.8" -files = [ - {file = "opentelemetry_sdk-1.28.2-py3-none-any.whl", hash = "sha256:93336c129556f1e3ccd21442b94d3521759541521861b2214c499571b85cb71b"}, - {file = "opentelemetry_sdk-1.28.2.tar.gz", hash = "sha256:5fed24c5497e10df30282456fe2910f83377797511de07d14cec0d3e0a1a3110"}, -] - -[package.dependencies] -opentelemetry-api = "1.28.2" -opentelemetry-semantic-conventions = "0.49b2" -typing-extensions = ">=3.7.4" - -[[package]] -name = "opentelemetry-semantic-conventions" -version = "0.49b2" -description = "OpenTelemetry Semantic Conventions" -optional = false -python-versions = ">=3.8" -files = [ - {file = "opentelemetry_semantic_conventions-0.49b2-py3-none-any.whl", hash = "sha256:51e7e1d0daa958782b6c2a8ed05e5f0e7dd0716fc327ac058777b8659649ee54"}, - {file = "opentelemetry_semantic_conventions-0.49b2.tar.gz", hash = "sha256:44e32ce6a5bb8d7c0c617f84b9dc1c8deda1045a07dc16a688cc7cbeab679997"}, -] - -[package.dependencies] -deprecated = ">=1.2.6" -opentelemetry-api = "1.28.2" - -[[package]] -name = "opentelemetry-util-http" -version = "0.49b2" -description = "Web util for OpenTelemetry" -optional = false -python-versions = ">=3.8" -files = [ - {file = "opentelemetry_util_http-0.49b2-py3-none-any.whl", hash = "sha256:e325d6511c6bee7b43170eb0c93261a210ec57e20ab1d7a99838515ef6d2bf58"}, - {file = "opentelemetry_util_http-0.49b2.tar.gz", hash = "sha256:5958c7009f79146bbe98b0fdb23d9d7bf1ea9cd154a1c199029b1a89e0557199"}, -] - [[package]] name = "orjson" version = "3.10.12" @@ -4169,17 +3486,6 @@ files = [ {file = "orjson-3.10.12.tar.gz", hash = "sha256:0a78bbda3aea0f9f079057ee1ee8a1ecf790d4f1af88dd67493c6b8ee52506ff"}, ] -[[package]] -name = "overrides" -version = "7.7.0" -description = "A decorator to automatically detect mismatch when overriding a method." -optional = false -python-versions = ">=3.6" -files = [ - {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"}, - {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"}, -] - [[package]] name = "packaging" version = "24.2" @@ -4524,29 +3830,6 @@ docs = ["sphinx (>=1.7.1)"] redis = ["redis"] tests = ["pytest (>=5.4.1)", "pytest-cov (>=2.8.1)", "pytest-mypy (>=0.8.0)", "pytest-timeout (>=2.1.0)", "redis", "sphinx (>=6.0.0)", "types-redis"] -[[package]] -name = "posthog" -version = "3.7.4" -description = "Integrate PostHog into any python application." -optional = false -python-versions = "*" -files = [ - {file = "posthog-3.7.4-py2.py3-none-any.whl", hash = "sha256:21c18c6bf43b2de303ea4cd6e95804cc0f24c20cb2a96a8fd09da2ed50b62faa"}, - {file = "posthog-3.7.4.tar.gz", hash = "sha256:19384bd09d330f9787a7e2446aba14c8057ece56144970ea2791072d4e40cd36"}, -] - -[package.dependencies] -backoff = ">=1.10.0" -monotonic = ">=1.5" -python-dateutil = ">2.1" -requests = ">=2.7,<3.0" -six = ">=1.5" - -[package.extras] -dev = ["black", "flake8", "flake8-print", "isort", "pre-commit"] -sentry = ["django", "sentry-sdk"] -test = ["coverage", "django", "flake8", "freezegun (==0.3.15)", "mock (>=2.0.0)", "pylint", "pytest", "pytest-timeout"] - [[package]] name = "pre-commit" version = "3.8.0" @@ -4691,7 +3974,7 @@ files = [ name = "protobuf" version = "4.25.5" description = "" -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "protobuf-4.25.5-cp310-abi3-win32.whl", hash = "sha256:5e61fd921603f58d2f5acb2806a929b4675f8874ff5f330b7d6f7e2e784bbcd8"}, @@ -4842,53 +4125,6 @@ files = [ {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, ] -[[package]] -name = "pulsar-client" -version = "3.5.0" -description = "Apache Pulsar Python client library" -optional = false -python-versions = "*" -files = [ - {file = "pulsar_client-3.5.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:c18552edb2f785de85280fe624bc507467152bff810fc81d7660fa2dfa861f38"}, - {file = "pulsar_client-3.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18d438e456c146f01be41ef146f649dedc8f7bc714d9eaef94cff2e34099812b"}, - {file = "pulsar_client-3.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18a26a0719841103c7a89eb1492c4a8fedf89adaa386375baecbb4fa2707e88f"}, - {file = "pulsar_client-3.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ab0e1605dc5f44a126163fd06cd0a768494ad05123f6e0de89a2c71d6e2d2319"}, - {file = "pulsar_client-3.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cdef720891b97656fdce3bf5913ea7729b2156b84ba64314f432c1e72c6117fa"}, - {file = "pulsar_client-3.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:a42544e38773191fe550644a90e8050579476bb2dcf17ac69a4aed62a6cb70e7"}, - {file = "pulsar_client-3.5.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:fd94432ea5d398ea78f8f2e09a217ec5058d26330c137a22690478c031e116da"}, - {file = "pulsar_client-3.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6252ae462e07ece4071213fdd9c76eab82ca522a749f2dc678037d4cbacd40b"}, - {file = "pulsar_client-3.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03b4d440b2d74323784328b082872ee2f206c440b5d224d7941eb3c083ec06c6"}, - {file = "pulsar_client-3.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f60af840b8d64a2fac5a0c1ce6ae0ddffec5f42267c6ded2c5e74bad8345f2a1"}, - {file = "pulsar_client-3.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2277a447c3b7f6571cb1eb9fc5c25da3fdd43d0b2fb91cf52054adfadc7d6842"}, - {file = "pulsar_client-3.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:f20f3e9dd50db2a37059abccad42078b7a4754b8bc1d3ae6502e71c1ad2209f0"}, - {file = "pulsar_client-3.5.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:d61f663d85308e12f44033ba95af88730f581a7e8da44f7a5c080a3aaea4878d"}, - {file = "pulsar_client-3.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2a1ba0be25b6f747bcb28102b7d906ec1de48dc9f1a2d9eacdcc6f44ab2c9e17"}, - {file = "pulsar_client-3.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a181e3e60ac39df72ccb3c415d7aeac61ad0286497a6e02739a560d5af28393a"}, - {file = "pulsar_client-3.5.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3c72895ff7f51347e4f78b0375b2213fa70dd4790bbb78177b4002846f1fd290"}, - {file = "pulsar_client-3.5.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:547dba1b185a17eba915e51d0a3aca27c80747b6187e5cd7a71a3ca33921decc"}, - {file = "pulsar_client-3.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:443b786eed96bc86d2297a6a42e79f39d1abf217ec603e0bd303f3488c0234af"}, - {file = "pulsar_client-3.5.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:15b58f5d759dd6166db8a2d90ed05a38063b05cda76c36d190d86ef5c9249397"}, - {file = "pulsar_client-3.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:af34bfe813dddf772a8a298117fa0a036ee963595d8bc8f00d969a0329ae6ed9"}, - {file = "pulsar_client-3.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27a0fec1dd74e1367d3742ce16679c1807994df60f5e666f440cf39323938fad"}, - {file = "pulsar_client-3.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:dbcd26ef9c03f96fb9cd91baec3bbd3c4b997834eb3556670d31f41cc25b5f64"}, - {file = "pulsar_client-3.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:afea1d0b6e793fd56e56463145751ff3aa79fdcd5b26e90d0da802a1bbabe07e"}, - {file = "pulsar_client-3.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:da1ab2fb1bef64b966e9403a0a186ebc90368d99e054ce2cae5b1128478f4ef4"}, - {file = "pulsar_client-3.5.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:9ad5dcc0eb8d2a7c0fb8e1fa146a0c6d4bdaf934f1169080b2c64b2f0573e086"}, - {file = "pulsar_client-3.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5870c6805b1a57962ed908d1173e97e13470415998393925c86a43694420389"}, - {file = "pulsar_client-3.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:29cb5fedb969895b78301dc00a979133e69940812b8332e4de948bb0ad3db7cb"}, - {file = "pulsar_client-3.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e53c74bfa59b20c66adea95023169060f5048dd8d843e6ef9cd3b8ee2d23e93b"}, - {file = "pulsar_client-3.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:99dbadb13967f1add57010971ed36b5a77d24afcdaea01960d0e55e56cf4ba6f"}, - {file = "pulsar_client-3.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:058887661d438796f42307dcc8054c84dea88a37683dae36498b95d7e1c39b37"}, -] - -[package.dependencies] -certifi = "*" - -[package.extras] -all = ["apache-bookkeeper-client (>=4.16.1)", "fastavro (>=1.9.2)", "grpcio (>=1.60.0)", "prometheus-client", "protobuf (>=3.6.1,<=3.20.3)", "ratelimit"] -avro = ["fastavro (>=1.9.2)"] -functions = ["apache-bookkeeper-client (>=4.16.1)", "grpcio (>=1.60.0)", "prometheus-client", "protobuf (>=3.6.1,<=3.20.3)", "ratelimit"] - [[package]] name = "pure-eval" version = "0.2.3" @@ -4957,31 +4193,6 @@ files = [ [package.extras] test = ["cffi", "hypothesis", "pandas", "pytest", "pytz"] -[[package]] -name = "pyasn1" -version = "0.6.1" -description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyasn1-0.6.1-py3-none-any.whl", hash = "sha256:0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629"}, - {file = "pyasn1-0.6.1.tar.gz", hash = "sha256:6f580d2bdd84365380830acf45550f2511469f673cb4a5ae3857a3170128b034"}, -] - -[[package]] -name = "pyasn1-modules" -version = "0.4.1" -description = "A collection of ASN.1-based protocols modules" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyasn1_modules-0.4.1-py3-none-any.whl", hash = "sha256:49bfa96b45a292b711e986f222502c1c9a5e1f4e568fc30e2574a6c7d07838fd"}, - {file = "pyasn1_modules-0.4.1.tar.gz", hash = "sha256:c28e2dbf9c06ad61c71a075c7e0f9fd0f1b0bb2d2ad4377f240d33ac2ab60a7c"}, -] - -[package.dependencies] -pyasn1 = ">=0.4.6,<0.7.0" - [[package]] name = "pyautogen" version = "0.2.22" @@ -5290,41 +4501,6 @@ files = [ {file = "pyperclip-1.9.0.tar.gz", hash = "sha256:b7de0142ddc81bfc5c7507eea19da920b92252b548b96186caf94a5e2527d310"}, ] -[[package]] -name = "pypika" -version = "0.48.9" -description = "A SQL query builder API for Python" -optional = false -python-versions = "*" -files = [ - {file = "PyPika-0.48.9.tar.gz", hash = "sha256:838836a61747e7c8380cd1b7ff638694b7a7335345d0f559b04b2cd832ad5378"}, -] - -[[package]] -name = "pyproject-hooks" -version = "1.2.0" -description = "Wrappers to call pyproject.toml-based build backend hooks." -optional = false -python-versions = ">=3.7" -files = [ - {file = "pyproject_hooks-1.2.0-py3-none-any.whl", hash = "sha256:9e5c6bfa8dcc30091c74b0cf803c81fdd29d94f01992a7707bc97babb1141913"}, - {file = "pyproject_hooks-1.2.0.tar.gz", hash = "sha256:1e859bd5c40fae9448642dd871adf459e5e2084186e8d2c2a79a824c970da1f8"}, -] - -[[package]] -name = "pyreadline3" -version = "3.5.4" -description = "A python implementation of GNU readline." -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyreadline3-3.5.4-py3-none-any.whl", hash = "sha256:eaf8e6cc3c49bcccf145fc6067ba8643d1df34d604a1ec0eccbf7a18e6d3fae6"}, - {file = "pyreadline3-3.5.4.tar.gz", hash = "sha256:8d57d53039a1c75adba8e50dd3d992b28143480816187ea5efbd5c78e6c885b7"}, -] - -[package.extras] -dev = ["build", "flake8", "mypy", "pytest", "twine"] - [[package]] name = "pyright" version = "1.1.390" @@ -5891,24 +5067,6 @@ urllib3 = ">=1.21.1,<3" socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] -[[package]] -name = "requests-oauthlib" -version = "2.0.0" -description = "OAuthlib authentication support for Requests." -optional = false -python-versions = ">=3.4" -files = [ - {file = "requests-oauthlib-2.0.0.tar.gz", hash = "sha256:b3dffaebd884d8cd778494369603a9e7b58d29111bf6b41bdc2dcd87203af4e9"}, - {file = "requests_oauthlib-2.0.0-py2.py3-none-any.whl", hash = "sha256:7dd8a5c40426b779b0868c404bdef9768deccf22749cde15852df527e6269b36"}, -] - -[package.dependencies] -oauthlib = ">=3.0.0" -requests = ">=2.0.0" - -[package.extras] -rsa = ["oauthlib[signedtoken] (>=3.0.0)"] - [[package]] name = "requests-toolbelt" version = "1.0.0" @@ -6054,20 +5212,6 @@ files = [ {file = "rpds_py-0.22.3.tar.gz", hash = "sha256:e32fee8ab45d3c2db6da19a5323bc3362237c8b653c70194414b892fd06a080d"}, ] -[[package]] -name = "rsa" -version = "4.9" -description = "Pure-Python RSA implementation" -optional = false -python-versions = ">=3.6,<4" -files = [ - {file = "rsa-4.9-py3-none-any.whl", hash = "sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7"}, - {file = "rsa-4.9.tar.gz", hash = "sha256:e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21"}, -] - -[package.dependencies] -pyasn1 = ">=0.1.3" - [[package]] name = "scramp" version = "1.4.5" @@ -6410,23 +5554,6 @@ files = [ {file = "striprtf-0.0.26.tar.gz", hash = "sha256:fdb2bba7ac440072d1c41eab50d8d74ae88f60a8b6575c6e2c7805dc462093aa"}, ] -[[package]] -name = "sympy" -version = "1.13.3" -description = "Computer algebra system (CAS) in Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "sympy-1.13.3-py3-none-any.whl", hash = "sha256:54612cf55a62755ee71824ce692986f23c88ffa77207b30c1368eda4a7060f73"}, - {file = "sympy-1.13.3.tar.gz", hash = "sha256:b27fd2c6530e0ab39e275fc9b683895367e51d5da91baa8d3d64db2565fec4d9"}, -] - -[package.dependencies] -mpmath = ">=1.1.0,<1.4" - -[package.extras] -dev = ["hypothesis (>=6.70.0)", "pytest (>=7.1.0)"] - [[package]] name = "tenacity" version = "8.5.0" @@ -6519,38 +5646,6 @@ files = [ {file = "tokenize_rt-6.1.0.tar.gz", hash = "sha256:e8ee836616c0877ab7c7b54776d2fefcc3bde714449a206762425ae114b53c86"}, ] -[[package]] -name = "tokenizers" -version = "0.21.0" -description = "" -optional = false -python-versions = ">=3.7" -files = [ - {file = "tokenizers-0.21.0-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:3c4c93eae637e7d2aaae3d376f06085164e1660f89304c0ab2b1d08a406636b2"}, - {file = "tokenizers-0.21.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:f53ea537c925422a2e0e92a24cce96f6bc5046bbef24a1652a5edc8ba975f62e"}, - {file = "tokenizers-0.21.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b177fb54c4702ef611de0c069d9169f0004233890e0c4c5bd5508ae05abf193"}, - {file = "tokenizers-0.21.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6b43779a269f4629bebb114e19c3fca0223296ae9fea8bb9a7a6c6fb0657ff8e"}, - {file = "tokenizers-0.21.0-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9aeb255802be90acfd363626753fda0064a8df06031012fe7d52fd9a905eb00e"}, - {file = "tokenizers-0.21.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d8b09dbeb7a8d73ee204a70f94fc06ea0f17dcf0844f16102b9f414f0b7463ba"}, - {file = "tokenizers-0.21.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:400832c0904f77ce87c40f1a8a27493071282f785724ae62144324f171377273"}, - {file = "tokenizers-0.21.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e84ca973b3a96894d1707e189c14a774b701596d579ffc7e69debfc036a61a04"}, - {file = "tokenizers-0.21.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:eb7202d231b273c34ec67767378cd04c767e967fda12d4a9e36208a34e2f137e"}, - {file = "tokenizers-0.21.0-cp39-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:089d56db6782a73a27fd8abf3ba21779f5b85d4a9f35e3b493c7bbcbbf0d539b"}, - {file = "tokenizers-0.21.0-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:c87ca3dc48b9b1222d984b6b7490355a6fdb411a2d810f6f05977258400ddb74"}, - {file = "tokenizers-0.21.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:4145505a973116f91bc3ac45988a92e618a6f83eb458f49ea0790df94ee243ff"}, - {file = "tokenizers-0.21.0-cp39-abi3-win32.whl", hash = "sha256:eb1702c2f27d25d9dd5b389cc1f2f51813e99f8ca30d9e25348db6585a97e24a"}, - {file = "tokenizers-0.21.0-cp39-abi3-win_amd64.whl", hash = "sha256:87841da5a25a3a5f70c102de371db120f41873b854ba65e52bccd57df5a3780c"}, - {file = "tokenizers-0.21.0.tar.gz", hash = "sha256:ee0894bf311b75b0c03079f33859ae4b2334d675d4e93f5a4132e1eae2834fe4"}, -] - -[package.dependencies] -huggingface-hub = ">=0.16.4,<1.0" - -[package.extras] -dev = ["tokenizers[testing]"] -docs = ["setuptools-rust", "sphinx", "sphinx-rtd-theme"] -testing = ["black (==22.3)", "datasets", "numpy", "pytest", "requests", "ruff"] - [[package]] name = "tomli" version = "2.2.1" @@ -6840,70 +5935,12 @@ files = [ [package.dependencies] click = ">=7.0" -colorama = {version = ">=0.4", optional = true, markers = "sys_platform == \"win32\" and extra == \"standard\""} h11 = ">=0.8" -httptools = {version = ">=0.5.0", optional = true, markers = "extra == \"standard\""} -python-dotenv = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} -pyyaml = {version = ">=5.1", optional = true, markers = "extra == \"standard\""} typing-extensions = {version = ">=4.0", markers = "python_version < \"3.11\""} -uvloop = {version = ">=0.14.0,<0.15.0 || >0.15.0,<0.15.1 || >0.15.1", optional = true, markers = "(sys_platform != \"win32\" and sys_platform != \"cygwin\") and platform_python_implementation != \"PyPy\" and extra == \"standard\""} -watchfiles = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} -websockets = {version = ">=10.4", optional = true, markers = "extra == \"standard\""} [package.extras] standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"] -[[package]] -name = "uvloop" -version = "0.21.0" -description = "Fast implementation of asyncio event loop on top of libuv" -optional = false -python-versions = ">=3.8.0" -files = [ - {file = "uvloop-0.21.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ec7e6b09a6fdded42403182ab6b832b71f4edaf7f37a9a0e371a01db5f0cb45f"}, - {file = "uvloop-0.21.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:196274f2adb9689a289ad7d65700d37df0c0930fd8e4e743fa4834e850d7719d"}, - {file = "uvloop-0.21.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f38b2e090258d051d68a5b14d1da7203a3c3677321cf32a95a6f4db4dd8b6f26"}, - {file = "uvloop-0.21.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87c43e0f13022b998eb9b973b5e97200c8b90823454d4bc06ab33829e09fb9bb"}, - {file = "uvloop-0.21.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:10d66943def5fcb6e7b37310eb6b5639fd2ccbc38df1177262b0640c3ca68c1f"}, - {file = "uvloop-0.21.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:67dd654b8ca23aed0a8e99010b4c34aca62f4b7fce88f39d452ed7622c94845c"}, - {file = "uvloop-0.21.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c0f3fa6200b3108919f8bdabb9a7f87f20e7097ea3c543754cabc7d717d95cf8"}, - {file = "uvloop-0.21.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0878c2640cf341b269b7e128b1a5fed890adc4455513ca710d77d5e93aa6d6a0"}, - {file = "uvloop-0.21.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9fb766bb57b7388745d8bcc53a359b116b8a04c83a2288069809d2b3466c37e"}, - {file = "uvloop-0.21.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a375441696e2eda1c43c44ccb66e04d61ceeffcd76e4929e527b7fa401b90fb"}, - {file = "uvloop-0.21.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:baa0e6291d91649c6ba4ed4b2f982f9fa165b5bbd50a9e203c416a2797bab3c6"}, - {file = "uvloop-0.21.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4509360fcc4c3bd2c70d87573ad472de40c13387f5fda8cb58350a1d7475e58d"}, - {file = "uvloop-0.21.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:359ec2c888397b9e592a889c4d72ba3d6befba8b2bb01743f72fffbde663b59c"}, - {file = "uvloop-0.21.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7089d2dc73179ce5ac255bdf37c236a9f914b264825fdaacaded6990a7fb4c2"}, - {file = "uvloop-0.21.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:baa4dcdbd9ae0a372f2167a207cd98c9f9a1ea1188a8a526431eef2f8116cc8d"}, - {file = "uvloop-0.21.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86975dca1c773a2c9864f4c52c5a55631038e387b47eaf56210f873887b6c8dc"}, - {file = "uvloop-0.21.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:461d9ae6660fbbafedd07559c6a2e57cd553b34b0065b6550685f6653a98c1cb"}, - {file = "uvloop-0.21.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:183aef7c8730e54c9a3ee3227464daed66e37ba13040bb3f350bc2ddc040f22f"}, - {file = "uvloop-0.21.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:bfd55dfcc2a512316e65f16e503e9e450cab148ef11df4e4e679b5e8253a5281"}, - {file = "uvloop-0.21.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:787ae31ad8a2856fc4e7c095341cccc7209bd657d0e71ad0dc2ea83c4a6fa8af"}, - {file = "uvloop-0.21.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ee4d4ef48036ff6e5cfffb09dd192c7a5027153948d85b8da7ff705065bacc6"}, - {file = "uvloop-0.21.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3df876acd7ec037a3d005b3ab85a7e4110422e4d9c1571d4fc89b0fc41b6816"}, - {file = "uvloop-0.21.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd53ecc9a0f3d87ab847503c2e1552b690362e005ab54e8a48ba97da3924c0dc"}, - {file = "uvloop-0.21.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a5c39f217ab3c663dc699c04cbd50c13813e31d917642d459fdcec07555cc553"}, - {file = "uvloop-0.21.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:17df489689befc72c39a08359efac29bbee8eee5209650d4b9f34df73d22e414"}, - {file = "uvloop-0.21.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bc09f0ff191e61c2d592a752423c767b4ebb2986daa9ed62908e2b1b9a9ae206"}, - {file = "uvloop-0.21.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0ce1b49560b1d2d8a2977e3ba4afb2414fb46b86a1b64056bc4ab929efdafbe"}, - {file = "uvloop-0.21.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e678ad6fe52af2c58d2ae3c73dc85524ba8abe637f134bf3564ed07f555c5e79"}, - {file = "uvloop-0.21.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:460def4412e473896ef179a1671b40c039c7012184b627898eea5072ef6f017a"}, - {file = "uvloop-0.21.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:10da8046cc4a8f12c91a1c39d1dd1585c41162a15caaef165c2174db9ef18bdc"}, - {file = "uvloop-0.21.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c097078b8031190c934ed0ebfee8cc5f9ba9642e6eb88322b9958b649750f72b"}, - {file = "uvloop-0.21.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:46923b0b5ee7fc0020bef24afe7836cb068f5050ca04caf6b487c513dc1a20b2"}, - {file = "uvloop-0.21.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:53e420a3afe22cdcf2a0f4846e377d16e718bc70103d7088a4f7623567ba5fb0"}, - {file = "uvloop-0.21.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88cb67cdbc0e483da00af0b2c3cdad4b7c61ceb1ee0f33fe00e09c81e3a6cb75"}, - {file = "uvloop-0.21.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:221f4f2a1f46032b403bf3be628011caf75428ee3cc204a22addf96f586b19fd"}, - {file = "uvloop-0.21.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2d1f581393673ce119355d56da84fe1dd9d2bb8b3d13ce792524e1607139feff"}, - {file = "uvloop-0.21.0.tar.gz", hash = "sha256:3bf12b0fda68447806a7ad847bfa591613177275d35b6724b1ee573faa3704e3"}, -] - -[package.extras] -dev = ["Cython (>=3.0,<4.0)", "setuptools (>=60)"] -docs = ["Sphinx (>=4.1.2,<4.2.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)"] -test = ["aiohttp (>=3.10.5)", "flake8 (>=5.0,<6.0)", "mypy (>=0.800)", "psutil", "pyOpenSSL (>=23.0.0,<23.1.0)", "pycodestyle (>=2.9.0,<2.10.0)"] - [[package]] name = "virtualenv" version = "20.28.0" @@ -6924,89 +5961,6 @@ platformdirs = ">=3.9.1,<5" docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] -[[package]] -name = "watchfiles" -version = "1.0.0" -description = "Simple, modern and high performance file watching and code reload in python." -optional = false -python-versions = ">=3.9" -files = [ - {file = "watchfiles-1.0.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:1d19df28f99d6a81730658fbeb3ade8565ff687f95acb59665f11502b441be5f"}, - {file = "watchfiles-1.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:28babb38cf2da8e170b706c4b84aa7e4528a6fa4f3ee55d7a0866456a1662041"}, - {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12ab123135b2f42517f04e720526d41448667ae8249e651385afb5cda31fedc0"}, - {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:13a4f9ee0cd25682679eea5c14fc629e2eaa79aab74d963bc4e21f43b8ea1877"}, - {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e1d9284cc84de7855fcf83472e51d32daf6f6cecd094160192628bc3fee1b78"}, - {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ee5edc939f53466b329bbf2e58333a5461e6c7b50c980fa6117439e2c18b42d"}, - {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5dccfc70480087567720e4e36ec381bba1ed68d7e5f368fe40c93b3b1eba0105"}, - {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c83a6d33a9eda0af6a7470240d1af487807adc269704fe76a4972dd982d16236"}, - {file = "watchfiles-1.0.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:905f69aad276639eff3893759a07d44ea99560e67a1cf46ff389cd62f88872a2"}, - {file = "watchfiles-1.0.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:09551237645d6bff3972592f2aa5424df9290e7a2e15d63c5f47c48cde585935"}, - {file = "watchfiles-1.0.0-cp310-none-win32.whl", hash = "sha256:d2b39aa8edd9e5f56f99a2a2740a251dc58515398e9ed5a4b3e5ff2827060755"}, - {file = "watchfiles-1.0.0-cp310-none-win_amd64.whl", hash = "sha256:2de52b499e1ab037f1a87cb8ebcb04a819bf087b1015a4cf6dcf8af3c2a2613e"}, - {file = "watchfiles-1.0.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:fbd0ab7a9943bbddb87cbc2bf2f09317e74c77dc55b1f5657f81d04666c25269"}, - {file = "watchfiles-1.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:774ef36b16b7198669ce655d4f75b4c3d370e7f1cbdfb997fb10ee98717e2058"}, - {file = "watchfiles-1.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b4fb98100267e6a5ebaff6aaa5d20aea20240584647470be39fe4823012ac96"}, - {file = "watchfiles-1.0.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0fc3bf0effa2d8075b70badfdd7fb839d7aa9cea650d17886982840d71fdeabf"}, - {file = "watchfiles-1.0.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:648e2b6db53eca6ef31245805cd528a16f56fa4cc15aeec97795eaf713c11435"}, - {file = "watchfiles-1.0.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fa13d604fcb9417ae5f2e3de676e66aa97427d888e83662ad205bed35a313176"}, - {file = "watchfiles-1.0.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:936f362e7ff28311b16f0b97ec51e8f2cc451763a3264640c6ed40fb252d1ee4"}, - {file = "watchfiles-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:245fab124b9faf58430da547512d91734858df13f2ddd48ecfa5e493455ffccb"}, - {file = "watchfiles-1.0.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4ff9c7e84e8b644a8f985c42bcc81457240316f900fc72769aaedec9d088055a"}, - {file = "watchfiles-1.0.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9c9a8d8fd97defe935ef8dd53d562e68942ad65067cd1c54d6ed8a088b1d931d"}, - {file = "watchfiles-1.0.0-cp311-none-win32.whl", hash = "sha256:a0abf173975eb9dd17bb14c191ee79999e650997cc644562f91df06060610e62"}, - {file = "watchfiles-1.0.0-cp311-none-win_amd64.whl", hash = "sha256:2a825ba4b32c214e3855b536eb1a1f7b006511d8e64b8215aac06eb680642d84"}, - {file = "watchfiles-1.0.0-cp311-none-win_arm64.whl", hash = "sha256:a5a7a06cfc65e34fd0a765a7623c5ba14707a0870703888e51d3d67107589817"}, - {file = "watchfiles-1.0.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:28fb64b5843d94e2c2483f7b024a1280662a44409bedee8f2f51439767e2d107"}, - {file = "watchfiles-1.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e3750434c83b61abb3163b49c64b04180b85b4dabb29a294513faec57f2ffdb7"}, - {file = "watchfiles-1.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bedf84835069f51c7b026b3ca04e2e747ea8ed0a77c72006172c72d28c9f69fc"}, - {file = "watchfiles-1.0.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:90004553be36427c3d06ec75b804233f8f816374165d5225b93abd94ba6e7234"}, - {file = "watchfiles-1.0.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b46e15c34d4e401e976d6949ad3a74d244600d5c4b88c827a3fdf18691a46359"}, - {file = "watchfiles-1.0.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:487d15927f1b0bd24e7df921913399bb1ab94424c386bea8b267754d698f8f0e"}, - {file = "watchfiles-1.0.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1ff236d7a3f4b0a42f699a22fc374ba526bc55048a70cbb299661158e1bb5e1f"}, - {file = "watchfiles-1.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c01446626574561756067f00b37e6b09c8622b0fc1e9fdbc7cbcea328d4e514"}, - {file = "watchfiles-1.0.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b551c465a59596f3d08170bd7e1c532c7260dd90ed8135778038e13c5d48aa81"}, - {file = "watchfiles-1.0.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e1ed613ee107269f66c2df631ec0fc8efddacface85314d392a4131abe299f00"}, - {file = "watchfiles-1.0.0-cp312-none-win32.whl", hash = "sha256:5f75cd42e7e2254117cf37ff0e68c5b3f36c14543756b2da621408349bd9ca7c"}, - {file = "watchfiles-1.0.0-cp312-none-win_amd64.whl", hash = "sha256:cf517701a4a872417f4e02a136e929537743461f9ec6cdb8184d9a04f4843545"}, - {file = "watchfiles-1.0.0-cp312-none-win_arm64.whl", hash = "sha256:8a2127cd68950787ee36753e6d401c8ea368f73beaeb8e54df5516a06d1ecd82"}, - {file = "watchfiles-1.0.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:95de85c254f7fe8cbdf104731f7f87f7f73ae229493bebca3722583160e6b152"}, - {file = "watchfiles-1.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:533a7cbfe700e09780bb31c06189e39c65f06c7f447326fee707fd02f9a6e945"}, - {file = "watchfiles-1.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a2218e78e2c6c07b1634a550095ac2a429026b2d5cbcd49a594f893f2bb8c936"}, - {file = "watchfiles-1.0.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9122b8fdadc5b341315d255ab51d04893f417df4e6c1743b0aac8bf34e96e025"}, - {file = "watchfiles-1.0.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9272fdbc0e9870dac3b505bce1466d386b4d8d6d2bacf405e603108d50446940"}, - {file = "watchfiles-1.0.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4a3b33c3aefe9067ebd87846806cd5fc0b017ab70d628aaff077ab9abf4d06b3"}, - {file = "watchfiles-1.0.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bc338ce9f8846543d428260fa0f9a716626963148edc937d71055d01d81e1525"}, - {file = "watchfiles-1.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ac778a460ea22d63c7e6fb0bc0f5b16780ff0b128f7f06e57aaec63bd339285"}, - {file = "watchfiles-1.0.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:53ae447f06f8f29f5ab40140f19abdab822387a7c426a369eb42184b021e97eb"}, - {file = "watchfiles-1.0.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:1f73c2147a453315d672c1ad907abe6d40324e34a185b51e15624bc793f93cc6"}, - {file = "watchfiles-1.0.0-cp313-none-win32.whl", hash = "sha256:eba98901a2eab909dbd79681190b9049acc650f6111fde1845484a4450761e98"}, - {file = "watchfiles-1.0.0-cp313-none-win_amd64.whl", hash = "sha256:d562a6114ddafb09c33246c6ace7effa71ca4b6a2324a47f4b09b6445ea78941"}, - {file = "watchfiles-1.0.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:3d94fd83ed54266d789f287472269c0def9120a2022674990bd24ad989ebd7a0"}, - {file = "watchfiles-1.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48051d1c504448b2fcda71c5e6e3610ae45de6a0b8f5a43b961f250be4bdf5a8"}, - {file = "watchfiles-1.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29cf884ad4285d23453c702ed03d689f9c0e865e3c85d20846d800d4787de00f"}, - {file = "watchfiles-1.0.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d3572d4c34c4e9c33d25b3da47d9570d5122f8433b9ac6519dca49c2740d23cd"}, - {file = "watchfiles-1.0.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2c2696611182c85eb0e755b62b456f48debff484b7306b56f05478b843ca8ece"}, - {file = "watchfiles-1.0.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:550109001920a993a4383b57229c717fa73627d2a4e8fcb7ed33c7f1cddb0c85"}, - {file = "watchfiles-1.0.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b555a93c15bd2c71081922be746291d776d47521a00703163e5fbe6d2a402399"}, - {file = "watchfiles-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:947ccba18a38b85c366dafeac8df2f6176342d5992ca240a9d62588b214d731f"}, - {file = "watchfiles-1.0.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ffd98a299b0a74d1b704ef0ed959efb753e656a4e0425c14e46ae4c3cbdd2919"}, - {file = "watchfiles-1.0.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f8c4f3a1210ed099a99e6a710df4ff2f8069411059ffe30fa5f9467ebed1256b"}, - {file = "watchfiles-1.0.0-cp39-none-win32.whl", hash = "sha256:1e176b6b4119b3f369b2b4e003d53a226295ee862c0962e3afd5a1c15680b4e3"}, - {file = "watchfiles-1.0.0-cp39-none-win_amd64.whl", hash = "sha256:2d9c0518fabf4a3f373b0a94bb9e4ea7a1df18dec45e26a4d182aa8918dee855"}, - {file = "watchfiles-1.0.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f159ac795785cde4899e0afa539f4c723fb5dd336ce5605bc909d34edd00b79b"}, - {file = "watchfiles-1.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:c3d258d78341d5d54c0c804a5b7faa66cd30ba50b2756a7161db07ce15363b8d"}, - {file = "watchfiles-1.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bbd0311588c2de7f9ea5cf3922ccacfd0ec0c1922870a2be503cc7df1ca8be7"}, - {file = "watchfiles-1.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9a13ac46b545a7d0d50f7641eefe47d1597e7d1783a5d89e09d080e6dff44b0"}, - {file = "watchfiles-1.0.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b2bca898c1dc073912d3db7fa6926cc08be9575add9e84872de2c99c688bac4e"}, - {file = "watchfiles-1.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:06d828fe2adc4ac8a64b875ca908b892a3603d596d43e18f7948f3fef5fc671c"}, - {file = "watchfiles-1.0.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:074c7618cd6c807dc4eaa0982b4a9d3f8051cd0b72793511848fd64630174b17"}, - {file = "watchfiles-1.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95dc785bc284552d044e561b8f4fe26d01ab5ca40d35852a6572d542adfeb4bc"}, - {file = "watchfiles-1.0.0.tar.gz", hash = "sha256:37566c844c9ce3b5deb964fe1a23378e575e74b114618d211fbda8f59d7b5dab"}, -] - -[package.dependencies] -anyio = ">=3.0.0" - [[package]] name = "wcwidth" version = "0.2.13" @@ -7038,7 +5992,7 @@ test = ["websockets"] name = "websockets" version = "12.0" description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" -optional = false +optional = true python-versions = ">=3.8" files = [ {file = "websockets-12.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d554236b2a2006e0ce16315c16eaa0d628dab009c33b63ea03f41c6107958374"}, @@ -7555,4 +6509,4 @@ tests = ["wikipedia"] [metadata] lock-version = "2.0" python-versions = "<3.13,>=3.10" -content-hash = "04884f8e0f0dba223d058969636575e96aa0b8d089bbabba6425acc82ac4ea88" +content-hash = "c34d422295ad06d845485aa3697db488c9081ecf774ed9b360ab5e0d33707b19" diff --git a/pyproject.toml b/pyproject.toml index 9b8ff29318..51b404de9b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -34,7 +34,6 @@ numpy = "^1.26.2" demjson3 = "^3.0.6" #tiktoken = ">=0.7.0,<0.8.0" pyyaml = "^6.0.1" -chromadb = ">=0.4.24,<0.5.0" sqlalchemy-json = "^0.7.0" fastapi = {version = "^0.104.1", optional = true} uvicorn = {version = "^0.24.0.post1", optional = true} @@ -104,4 +103,4 @@ extend-exclude = "examples/*" [build-system] requires = ["poetry-core"] -build-backend = "poetry.core.masonry.api" \ No newline at end of file +build-backend = "poetry.core.masonry.api" diff --git a/tests/test_websocket_server.py b/tests/test_websocket_server.py deleted file mode 100644 index 81793b7e91..0000000000 --- a/tests/test_websocket_server.py +++ /dev/null @@ -1,55 +0,0 @@ -import asyncio - -import pytest -import websockets - -from letta.server.constants import WS_DEFAULT_PORT -from letta.server.ws_api.server import WebSocketServer -from letta.utils import json_dumps - - -@pytest.mark.asyncio -async def test_dummy(): - assert True - - -@pytest.mark.skip(reason="websockets is temporarily unsupported in 0.2.12") -@pytest.mark.asyncio -async def test_websocket_server(): - # host = "127.0.0.1" - host = "localhost" - server = WebSocketServer(host=host) - server_task = asyncio.create_task(server.run()) # Create a task for the server - - # the agent config we want to ask the server to instantiate with - # test_config = AgentConfig( - # persona="sam_pov", - # human="cs_phd", - # preset="memgpt_chat", - # model_endpoint= - # ) - test_config = {} - - uri = f"ws://{host}:{WS_DEFAULT_PORT}" - try: - async with websockets.connect(uri) as websocket: - # Initialize the server with a test config - print("Sending config to server...") - await websocket.send(json_dumps({"type": "initialize", "config": test_config})) - # Wait for the response - response = await websocket.recv() - print(f"Response from the agent: {response}") - - await asyncio.sleep(1) # just in case - - # Send a message to the agent - print("Sending message to server...") - await websocket.send(json_dumps({"type": "message", "content": "Hello, Agent!"})) - # Wait for the response - # NOTE: we should be waiting for multiple responses - response = await websocket.recv() - print(f"Response from the agent: {response}") - except (OSError, ConnectionRefusedError) as e: - print(f"Was unable to connect: {e}") - finally: - server_task.cancel() # Cancel the server task after the test